목 차1. 서 론 < 3p2. 관련 연구 < 4p3. 과제 수행 내용 < 7p4. 실험 및 결과 < 15p5. 연구원들이 맡은 역할 < 19p6. 결론 < 20p7. 참고문헌 < 21p서 론윈도우는 마이크로소프트가 개발한 컴퓨터 운영 체제이다. 애플이 개인용 컴퓨터에 처음으로 도입한 그래픽 사용자 인터페이스(GUI) 운영 체제인 맥 OS에 대항하여, 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다. 현재 전 세계 90%의 개인용 컴퓨터에서 쓰고 있으며, 서버용 운영 체제로도 점차 영역을 넓혀 나가고 있다. 윈도우 운영 체제의 경우 큰 시장 점유율을 차지하고 있는 까닭에 일반 사용자들에게 매우 익숙할뿐 아니라 호환되는 유명한 응용 프로그램이 많다는 장점을 지니고 있지만, 그만큼 보안 문제에서는 취약한 부분이 많은 운영 체제로 인식되기도 한다. 마이크로소프트는 초기에 도스의 확장 소프트웨어로서의 윈도우를 출시하였으며 이는 운영 체제가 아니었다. 1993년 이후로 마이크로소프트는 "윈도우"라는 같은 이름을 사용하는 윈도우 NT를 운영 체제로 출시하기 시작하였다. 초기에 운영 체제로서의 윈도우에서는 일반적으로 두 가지 버전으로 출시되었다. 하나는 가정 사용자, 다른 하나는 기업과 전문 IT 사용자용이다. 이 두 운영 체제는 가정용 버전의 경우 게임이나 시각 효과가 더 많이 지원되고 네트워킹이나 보안 등의 기능을 빼는 한편, 전문가용 버전에서는 시각 효과를 제외하고 네트워킹이나 보안을 강화하였다.초기윈도우 1.0에서 윈도우 3.x , 윈도우 95부터 윈도우 ME까지 ,윈도우 XP부터 윈도우 8까지 , 윈도우 10 출시를 하면서 전세계 운영체제 점유율이 압도적으로 많이 차지하고 있다. 나도 윈도우를 사용하는 한 사람으로 어릴 때부터 커널 위의 사용자 영역의 윈도우만 알고 있었다. 하지만 이번 수업시간으로 인해 커널을 알게되었다. 이 지식을 활용해 이러한 특징을 가지고 있는 윈도우 운영체제를 수업시간에 배운 것들지도 알아볼 것이다. 과제를 통해 오랫동안 사용해온 윈도우 운영체제를 깊이 알 수 있는 계기가 되자.관 련 연 구리버스 엔지니어링 또는 역공학(逆工學)은 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견하는 과정이다. 이것은 종종 대상(기계 장치, 전자 부품, 소프트웨어 프로그램 등)을 조각내서 분석하는 것을 포함한다. 그리고 유지 보수를 위해, 또는 같은 기능을 하는 새 장치를 원본의 일부를 이용하지 않고 만들기 위해 대상의 세부적인 작동을 분석하는 것을 포함한다.리버스 엔지니어링의 기원은 상업적 또는 군사적으로 하드웨어를 분석한 것에서 시작되었다. 목적은 원본 생산의 절차에 관한 지식이 거의 없는 상태에서, 최종 제품을 가지고 디자인 결정과정을 추론하는 것이다. 같은 기술이 레거시 소프트웨어 시스템을 응용하기 위해 현재 연구되고 있는데, 산업이나 국방이 아니고, 오류, 미완성, 접근 불가인 문서를 수정하기 위함이다.최근 악성코드의 급격한 증가로 인해 사용자 데이터 유출 및 개인정보 유출, 분산 서비스 거부 등 다양한 침해 사례가 증가되고 있다. 이와 같은 피해는 과거 개인의 피해에서 기업, 국가적 손실로 확대되고 있다. 또한 악성 코드 제작자들의 악성코드 자동 제작 툴의 공개로 많은 변종 악성코드가 생성이 되고 있다. 악성 코드의 변종 증가, 분석 방해 기술의 지능화로 인해 악성코드를 분석하기 위해서는 많은 시간과 인력이 필요한 실정이지만 시간과 인력 증가에는 많은 제약사항이 존재하기 때문에 악성 코드의 분석을 자동으로 분석할 수 있는 기술의 연구가 필수적으로 이루어 져야 하는 상황이다. 다양한 분석 방해 기술로 기존의 행위 분석만으로는 악성코드를 분석할 수 없을 그뿐만 아니라 악성코드에서 사용된 새로운 기술을 찾을 수 없다. 따라서 단순히 행위만을 분석하는 것이 아닌 악성 코드의 내부코드를 분석하여 악성행위 판단 및 새롭게 적용된 기술의 분석을 자동화 할 수 있는 방법이 필요한 실정이다. 최근 발생한 Windows 기반의 악성코드에 대해서 조사 코드 패턴을 연구하고 정형화된 코드 패턴에 기반한 내부코드 분석 프로토타입을 개발하였으며 이를 통해 최신 악성코드를 분석 실험을 수행하고 있다. 최신 악성 코드 분석 및 역공학 기술을 조사함으로써 악성코드의 자동화 분석을 수행 할 수 있는 도구에 대해 연구하고 있으며 Windows 기반의 최신 악성코드를 분석함에 따라 악성코드의 주요 악성행위를 분석하고 있다. 이를 기반으로 악성행위의 패턴을 분석하며 이를 통해 코드 패턴을 정형화 시키고 있다. 현재 API Indirect Call, DDos 외 9개의 주요 악성행위를 분석하고 이를 통해 정형화된 패턴 탐지 및 분석 방법을 제안하고 있으며 악성코드를 자동화 분석하는 기반 정보로 사용될 수 있다. 정형화된 코드 패턴을 기반으로 한 자동화 분석 도구를 제작하였으며 본 도구는 Windows 기반의 악성코드의 악성행위에 대해서 주요 API를 분류하고 디코딩 모듈에 대하여 새로운 분석 방법을 제시 하고 있다. 기존의 동적분석의 한계와 정적분석의 한계를 개선하기 위해 동적 분석을 통한 정적분석 방법을 추가하여 악성코드의 동적, 정적분석 만으로 분석이 어려운 행위를 분석하였다. 16개의 악성코드에 대해서 분석을 수행하였으며, 해당 악성 행위에 대하여 호출 그래프를 생성하여 해당 악성코드의 흐름을 분석하는 성과를 거두고 있다. 악성코드의 자동화 분석이 가능하며 이를 통해 악성 해위에 대해 빠르게 대처 할 수 있는 정보를 제공하며 악성코드의 흐름 전체를 분석할 수 있기 때문에 기존에 알려진 악성행위 뿐만 아니라 새로운 기술에 대하여 빠르게 분석을 할 수 있고, 새로운 패턴을 찾을 수 있다. 그 뿐만 아니라 분석 등을 통해 악성 코드의 유사도 비교에도 사용 되어 지고 있다. 악성 코드의 빠른 자동분석으로 악성파일을 제공하는 URL 차단 및 사용자의 데이터 유출을 미연에 방지 할 수 있으며 자동화 분석 기능으로 악성코드 분석 인력 및 시간을 감소할 수 있으며 이를 통해 악성코드의 더욱 심도 있는 분석 및 대응을 빠르게 할 수 있명 혹은 API 명을 바로 사용한다. 인코딩 된 텍스트가 있을 경우 디코딩 모듈을 수행하여 디코딩 된 값을 구하고 이를 GetProcAddress라는 API의 인자값으로 사용을 한다. GetProcAddress는 dll에서 특정 API의 주솔를 반환하여 GetProcAddress의 결과는 EAX 레지스터에 저장이 된다. EAX에 저장된 값은 call 명령어에 의해 직접 실행이 될 수도 있지만 메모리나 다른 레지스터에 저장을 하여 이를 실행하기도 한다.API Indirect call은 악성코드의 분석 시간을 더욱 오래 걸리게 하고 분석을 어렵게 한다. 따라서 이와 같은 코드를 자동 분석하기 위해서는 두 가지의 정보가 필요한데 첫 번째로는 GetProcAddress의 인자 값이고 두 번째로는 GetProcAddress의 결과 값의 흐름이다. GetProcAddress의 인자 값을 통해 어떠한 API가 사용되는 지 확인 할 수 있으며 결과 값의 이동을 추적하여 특정 주소 공간에 복사되어 실행되는 경우, 메모리 복사하여 실행되는 경우, 레지스터에 복사하여 실행되는 경우, 직접 EAX에 해당하는 값을 실행하는 경우를 판단하여 실제 API가 실행되는 위치를 찾아낼 수 있고 이를 원하는 값으로 리네이밍을 시켜 분석에 큰 도움을 주게 된다. API Indirect call 행위의 자동 분석을 위해서는 세 가지 방법이 사용되고 있다. 먼저 GetProcAddress의 인자 값을 정적으로 찾는 방법이다. 대부분의 API Indirect call 패턴은 GetProcAddress를 통해 수행되기 때문에 정적으로 GetProcAddress인자 값을 정적으로 찾고 결과 값인 EAX의 위치를 추적하면 분석이 가능하다.첫 번째 방법으로는 디코딩 모듈 등이 존재하면 분석이 불가능하다. 따라서 동적으로 GetProcAddress의 인자 값을 구하고 이를 통해 해당 API가 실행이 되는 위치를 파악할 수 있다. 디코딩 모듈을 사용하여 정적분석 어렵기 때문에 동적 분석을 통해 해당 문제를 해결저장되는 위치를 찾을 필요가 없으며 정적분석을 통해 API주소가 저장되는 위치를 찾기 어려운 악성코드에서도 API 주소가 저장이 되는 위치를 찾을 수 있다. 다음은 GetProcAddress가 실행되는 위치이다.다음은 GetProcAddress 결과 값이 저장되는 위치이다.위의 그림과 같이 GetProcAddress가 실행되는 위치를 정확히 알 수 없고 해당 결과 값이 저장되는 위치를 찾지 못하는 경우가 존재하는데 메모리 access 주소를 리네이밍을 하여 특정 API가 실행되는 지점을 예측할 수 있다.과제 수행 내용개발 환경 : visual studio 2015사용 언어 : cos : 윈도우 10 (64bit)응용프로그램을 소스코드로 변환하기 위해서 OllyDbg, IDA pro, windbg 등 다양한 디버깅 툴이 있지만 사용하기 가볍고 많이 보편화 된 OllyDbg 툴을 사용해서 디버깅을 해보았다.-> 윈도우 환경에서 Ollydbg를 실행한 화면-> 직접 짠 소스를 file open 해서 실행시킨 화면.1번은 code(기본적으로 disassembly code를 표시하고 각종 comment, label을 보여주며 코드를 분석하여 loop, jump 위치 등의 정보를 표시한다.2번은 register(CPU register 값을 실시간으로 표시하며 특정 register 들은 수정도 가능함.3번 dump( 프로세스내의 원하는 memory 주소 위치를 hex 와 ASCII 값으로 표시하고 수정도 가능함.4번 stack (ESP register 가 가리키는 프로세스 stack memory를 실시간으로 표시하고 수정도 가능함.[F7] : 하나의 OP code 실행 (call 명령 만나면, 함수 코드 내부로 따라 들어감.)[F8] : 하나의 OP code 실행 (call 명령 만나면, 따라 들어가지 않고 그냥 함수자체를 실행함.)-> code 화면 / 주소 013713EE 는 Entrypoint 로서 Call 01371783 주소를 호출한다. 그리고 두 번째 라인에서
1) 내가 거주하는 지역사회 부산진구ㅁ 부산진구의 특성1) 유래부산광역시의 중앙에 위치한 구이다. 남으로 서구·동구·남구와, 동으로는 연제구, 서쪽으로는 사상구와 접해있다. 북쪽으로는 북구·동래구가 있다. 북서쪽과 서쪽에는 백양산과 고원견산 등 비교적 높은 산지가 솟아 있으며, 동부·서부는 각각 황령산(428m)과 백양산(642m)이 있어 전체적으로 분지 지형을 이룬다. 백양산에서 발원한 동천은 부전천과 전포천을 합류해 넓은 침식평야를 이루고 부산항에 유입한다. 호안공사가 잘 되어 있으나 홍수시 만조가 되면 침수피해를 입기도 한다. 이들 하천에 의해 형성된 개금동 일대의 침식평지는 서면에서 북구로 통하는 주요 교통로로 이용된다. 과거 부산포와 동래를 잇는 중간 지점에 있어 교통의 요충지가 되었다. 서면 로터리와 범천동 로터리를 중심으로 방사상 가로망이 형성되어 있다. 서면 로터리는 부산의 부도심이다.지명은 조선시대에 설치된 부산진성에서 유래하지만, 정작 부산진성터나 부산진역, 부산진시장은 부산진구가 아닌 동구에 위치하고 있다. 많이 사용되고 있는 '서면' 지명은 과거 동래군 서면에 속하였던 것에서 비롯된 것으로 공시지명은 아니다. 구청소재지는 부암동으로 25개 행정동과 11개 법정동을 관할한다.2) 특성? 금융·상업·정보·유통의 중심지50년대를 기점으로 부산진구에는 신발, 섬유, 목재, 화학, 자동차 등 전국 유수의 대기업과 수많은 중소기업이 몰려들었다. 80년대 전·후반까지 전성기를 이뤘다. 금융·상업·정보·유통시설이 밀집하면서 이것이 바로 부산진구를 상징하는 이미지가 됐다. 그리고 내가 생각하는 부산진구의 특징은 굉장히 병원들이 밀집되어 있는 특화된 곳인거 같다. 산부인과, 내과, 외과 등 가리지 않고 다양한 병원들이 현재 개금동에 밀집되어 있어서 근거리에서 진료를 받을 수 있는 특징이있다.? 교육·문화·예술·관광의 중심지부산진구는 한마디로 부산 교육의 중심지다. 관내 초·중·고교가 70여 개에 이른다. 전문대 2개교, 종합대가 1개교 있다. 부산국제고등학교와 한국과학영재학교는 외국어와 과학영재를 길러내는 산실이 되고 있다. 유치원 45개, 사설학원 562개나 된다. 특히 서면 일대 입시 및 전문 고시 학원이 밀집해 ‘학원거리’를 이루고 있다. 과거 서울의 화신백화점 일대를 연상케 한다. 공교육 시설도 풍부하다. 어린이대공원 내 어린이회관과 학생문화회관, 영어마을인 부산글로벌빌리지, LG사이언스홀, 부산시립시민도서관, 부전도서관 등을 꼽을 수 있다.ㅁ 부산진구의 문제점? 내가 생각하기에 부산진구는 외곽지역이 빈민지역의 형태로 격리됨.내가 생각하는 부산진구의 문제점으로 구의 외곽지역이 빈민지역의 형태로 격리되고 있다는 점이다. 부산진구의 중심이 아닌 구의 외곽 지역인 개금에 살고 있는 나로서는 이 문제점을 몸소 느끼고 있다. 사상구와 부산진구의 경계라 지역개발에 있어서 서로 미루고 있다.개발을 하더라도 구의 외곽은 구의 중심보다 티가 나질 않아 구의 중심으로 거점개발이 되고 있는 실태이다. 통장일을 해보면서 많이 느낄 수 있었다.? 내가 겪은 부산진구의 문제점내가 생각하기에 부산진구의 인구층은 노인인구가 굉장히 많아서 젊은 인구의 유입이 많이 필요하다고 본다. 이유인즉슨, 젊은 세대의 유입이 동네에 생기를 불어넣고 활기찬 동네가 되는데 큰 힘이 되기 때문이다. 그래서, 부산진구의 문제라기보다는 내가 거주하는 개금동에 포커스를 맞춰서 애기해보면 지금 개금동의 현상황이 그러한 것이다.?교통문제 심각그 중에 나는 교통문제를 부산진구의 문제라고 본다. 옆에 표를 보면 알겠지만. 부산진구는 전국에서 8위로 교통이 혼잡한 곳이다.부산의 중심인 서면. 항상 출퇴근을 하면서 느끼는 건데 부산진구는 서면을 중심으로 교통혼잡이 너무 심하고 안전사고도 번번히 일어난다.버스를 타고 서면을 가다보면 보행자들이 생각없이 무단횡단하고 택시나 다른 차량들도 인도랑 차도랑 구분없는 곳에서는 안전운행을 해야는데 사람들이 지나가는대도 속도를 낸다. 특히서면은 교통의 중심지이지만 너무나 혼잡해서출퇴근시간 때는 너무 밀려서 굉장히 복잡하다.ㅁ 문제해결을 위한 방안교통 문제는 로스만의 실천모델 중 사회계획모형에 해당하며 그에 따른 사회복지사의 역할은 분석가, 계획가, 조직가, 행정가가 있다.② 사회계획모형 : 사회복지사의 역할은 분석가, 전문가, 관리자, 협상자, 네크워커 이며, 공식적인 계획과 정책 준거 틀에 대한 설계가 핵심적이며, 계획이나 정책집행의 효과성과 효율성을 강조하기 때문에 과업목적에 초점을 두고 있다 특히, 사회계획과정은 문제 확인, 사정, 목표개발, 실행, 평가라는 구성요소로 이루어지며, 사회복지사들은 문제해결모델로서 이러한 요소를 인식해야 한다. 이 모델 시민참여를 기반으로 한 아래로부터의 접근이라기보다 전문가 역량을 기반으로 하는 위로부터의 접근이다. 주로, 정부와 도시계획과, 재활협회 그 외의 수많은 민간복지기관이 사회계획의 역할을 담당한다. 그러나 요즘과 같은 다원주의 사회에서 사회복지사만으로는 한계가 있어 시민의 참여를 기반으로 한 계획을 필요로 한다. 이 모델의 예는 미국 지역공동모금회 활동을 예로 들 수 있는데, 공동모금회에서 주민들의 시민의식에 대한 문제를 진단하고 주민 참여구조를 만드는 데 자원을 투자하는 계획을 세운다.