기술문서 09. 10. 19. 작성 - 1 -
Contents 1. 개요 ------------------------------------------------ p.03 2. 분석도구 가. 가상컴퓨팅환경 VMware, VirtualPC -------------------- p.04 나. 분석도구 --------------------------------------------- p.04 3. 악성코드분석준비 가. 샘플악성코드 ( 키로거 _Backdoor) ----------------------- p.06 4. 악성코드분석가. 샘플악성코드바이너리분석 --------------------------- p.07 나. 샘플악성코드실행분석 ------------------------------- p.09 다. 샘플악성코드임의실행분석 -------------------------- p.16 5. 맺음말 ---------------------------------------------- p.19 부록 A VMware workstaion 스냅샷설정 --------------------- p.20 부록 B 샘플악성코드언패킹 ---------------------------- p.21-2 -
1. 개요악성코드분석에서사용가능한도구를이용한분석환경설정, 효율적인분석방법그리고악성코드분석과정을통해간접분석경험을할수있도록작성했다. 문서열람이전악성코드분석에필요한기본지식들은 [ 기술문서 ] 악성코드분석방법론 _ 태인규, [ 기술문서 ]PE구조분석, 구조 _ 강동현 에서참고할수있다. 또한 Windows 악성코드를분석하기위해서는 Windows 프로그래밍의기본적지식, Windows 시스템, OS Windows 에관한전반적인지식을쌓은후분석을시도하기를바란다. 악성코드분석은가상컴퓨터내에서분석하는것이가장적절하다. 악성코드의내부동작방식을미리알고있으면좋겠지만확인되지않은악성코드들을분석하기에는어떠한상황이발생하는지는예상하기힘들기때문에가상컴퓨터내에서네트워크설정을제외하거나프락시서버를이용하여가상컴퓨터의네트워크를조절할수있어야한다. - 3 -
2. 분석도구악성코드분석에필요한도구가. 가상컴퓨팅환경 VMware, VirtualPC 가상컴퓨팅환경을제공하는도구들로실제사용하는시스템들과동일한환경을제공한다. 하드웨어적인설정들은가상인터페이스를이용하여연동할수있고, 실제사용하는 CD-ROM이나 USB와같은디바이스들도직접연결가능하다. 특히스냅샷 (Snapshot) 기능을통해분석환경에서분석후다시기존스냅샷지점으로되돌릴수있으며, 이스냅샷을이용하여특정환경을재설치없이사용할수있다. 1) VMware Workstation, VMware Player VMware 사에서개발한가상솔루션으로이미지를통해가상컴퓨팅을제공한다. o VMware Workstation 은상용프로그램으로 30일간평가버전으로사용가능하고이후라이선스를구입해야사용할수있다. o VMware Player는무료프로그램으로 VMware Workstation 과비슷한구성이지만몇가지기능을제외한프로그램이다. WMware 솔루션에관한내용은 http://www.vmware.com 에서얻을수있다. 2) Virtual PC Microsoft 사에서개발한가상솔루션으로위의 VMware와유사한컴퓨팅을제공한다. 나. 분석도구악성코드를단계별분석을위해각각의분석도구를상황에맞게사용한다. 1) 시스템분석도구 시스템환경이나악성코드로부터변경사항들을분석할수있다. o Filemon 악성코드가외부파일을오픈, 생성, 제거, 변조하는등의행동을실시간으로분석할수있다. o Regmon 악성코드가시스템의레지스터값을이용하는것을실시간으로분석할수있다. o winalysis - 4 -
시스템의주요파일이나레지스트리, 프로세스등과같은정보를미리저장해두었다가악성코드실행후변경된사항을확인할수있다. o procexp 실행중인프로세스를트리형식으로나열한다. 2) 파일분석도구윈도우즈파일형식의악성코드를분석할수있다. o Strings 파일내부문자열을모두찾아내어특정옵션조합을통해결과를보여준다. o dumpbin 파일의정보를옵션에맞게출력해준다. Header정보,Section정보그리고간략한디스어셈블까지내용들을확인할수있다. o Ollydbg 디버깅도구로직관적인프로그램디버깅이가능하다. 디스어셈블기능으로분석에도움이되기도하고플러그인을통해기능확장이가능하다. o IDA Pro 상용의디스어셈블러이며, 파일로드와동시에상당한디스어셈블기능을확인할수있다. 또한기본적인내용이외에도분석에도움이되는정보들을제공한다. 3) 네트워크분석도구네트워크연결상태확인및패킷분석을할수있다. o TCPView 실행중인프로세스의포트정보와프로토콜정보 (TCP or UDP) 등을출력한다. o TDImon 프로세스로부터발생하는패킷정보를실시간으로출력한다. o Fopen, openports 실행중인프로세스가열어둔포트목록을출력한다. o Wireshark 네트워크인터페이스를통한패킷을분석한다. 각패킷을직접확인가능하다. o Paros 웹어플리케이션을위한프락시도구. 웹패킷의내용을확인할수있고패킷내용을수정할수있다. - 5 -
3. 악성코드분석준비 샘플악성코드 ( 키로거 _Backdoor) 를통해악성코드분석을간접경험을할수있다. 가. 샘플악성코드 ( 키로거 _Backdoor) 1) 샘플악성코드정의 http://www.virustotal.com에서샘플바이러스를백신프로그램들의바이러스정의를확인할수있다. o AhnLab-V3 - Win-Trojan/Prorat.349228.O o Avast - Win32:Prorat-FE o Kaspersky - Backdoor.Win32.Prorat.dz o McAfee - BackDoor-AVW o nprotect - Backdoor/W32.Prorat.349228.W o ViRobot - Backdoor.Win32.Prorat.349228.G 2) 분석환경실제샘플악성코드분석을위해설정한분석환경이다. o VMware workstation 6.0 기본적인윈도우설치한후분석이끝난이후기본설치로되돌리기위해스냅샷 (snapshot) 기능을이용하였다. ( 부록 A VMware workstaion 스냅샷설정참고 ) o 분석도구 - strings : 실행파일내부문자열확인 - PEid v0.95 : Packing, 컴파일정보 - PEview v0.9 : 윈도우파일구조확인 - Stud_PE v2.4 : 종합적파일정보확인 - winalysis v3.0 : 시스템변경사항확인 - Filemon v7.03 : 프로세스로부터파일사용내역확인 - Regmon v7.03 : 프로세스로부터레지스트리사용내역확인 - IceSword v1.20en : Rootkit 탐색기 - BinText v3.00 : strings와유사 - 6 -
4. 악성코드분석 준비된환경에샘플악성코드를옮기고아래분석절차에따라분석한다. 가. 샘플악성코드바이너리분석악성코드바이너리상의아스키코드, PE구조확인, Import & Export, 패킹등과같이악성코드를실행하지않고확인할수있는내용들을분석한다. 1) strings.exe 명령프롬프트상에서 strings.exe 파일을실행한다. strings>strings.exe -a services.exe>string.service.exe.txt 생성된 string.service.exe.txt 파일을분석해보면내부아스키값을확인할수있다. 2) peid v0.95 샘플악성코드를 open하면패킹정보또는컴파일정보를확인할수있다. - 7 -
3) PEview v0.9 샘플악성코드의바이너리전체분석한다. PE구조형태로분류하여핵사코드와아스키코드값으로분석할수있다. 4) Stud_PE v2.4 샘플악성코드의바이너리값을사용자가보기쉽도록정렬되어있다. Import, Export 함수목록을상세히정리되어있으므로자주사용하는것을추천한다. - 8 -
나. 샘플악성코드실행분석악성코드를실행하여어떤행동을하는지를실시간으로확인한다. 1) winalysis v3.0 시스템스냅샷에사용하는도구이다. 악성코드가실행하기전, 후를비교할수있고어떤파일이생성, 수정, 삭제되었는지에시간차를두고분석할수있다. 상단의 Snapshot 버튼을클릭하면시스템을스냅샷을할수있다. 위그림의 Filters 버튼을클릭하면 Files, Groups, Registry, Services를설정하여이후변경되는정보를설정할수있다. ( 디폴트로 C:, C: WINDOWS SYSTEM32 로설정되어있으며사용에맞게 Include 버튼으로추가할수있다.) - 9 -
스냅샷을한이후악성코드를실행하고, 다시 Snapshot 버튼옆의 Test를버튼을클릭하면변경된내용을찾아준다. 위그림을통해 C: 에서 WINDOWS 폴더가변경되었음을확인할수있다. 위그림을통해 C: WINDOWS 에서 Prefetch, system, system32 폴더가변경되었고, WINDOWS 폴더내에 services.exe 파일이새로생성되었음을확인할수있다. 같은방식으로 Prefetch, system, system32 폴더내부파일을확인하면악성코드가어떤파일들을생성했는지알수있다. 파일이외변경된 Groups, Registry, Rights, Scheduler, Services, Shares, System, Users, Volumes를확인할수있다. - 10 -
아래는변경, 생성된파일정보들이다. o WINDOWS - services.exe o WINDOWS Prefetch - CONIME.EXE-13EEEA1A.pf - CMD.EXE-087B4001.pf - FSERVICE.EXE-2E4F6E14.pf - NET.EXE-01A53C2F.pf - NET1.EXE-029B9DB4.pf - RUNDLL32.EXE-2313F110.pf - SERVICES.EXE-14D2412D.pf - SERVICES.EXE-2B0DDD57.pf (Prefetch폴더는 MS Windows에서메모리미리읽기기능을통한빠른실행을위해존재한다. 변경사항들의정보로 Forensic분야에서활용되고있다.) o WINDOWS system - sservice.exe o WINDOWS system32 - fservice.exe - reginv.dll - winkey.dll 아래는변경, 생성된레지스트리정보들이다. - 11 -
2) Filemon v.7.03 실행파일의프로세스들이파일을통해어떤작업을하는지를실시간으로분석할수있다. 실시간으로분석되어지고있는파일목록들을필터링하여필요한정보들로설정가능하다. winalysis 도구로부터얻은파일목록을필터링하여분석하고어떤행동을하는지확인한다. ( 글자가보이지않으면, Options->Font... 에서폰트크기를변경해준다.) (Include : services.exe;fservice.exe;sservice.exe;winkey.dll,reginv.dll) 분석에필요하지않는내용들은 Exclude Process를통해분석에제외시킬수있다.( 필터설정에자동추가된다.) - 12 -
분석확인결과 1초마다 services.exe 프로세스가 fservice.exe, sservice.exe 파일을생성하고있음을알수있다. (Filemon 의해당라인을더블클릭을하면파일탐색기를실행하여자동으로위치를검색한다.) 3) Regmon v.7.03 Filemon과같이실행파일의프로세스들이레지스트리를통해어떤작업을하는지를실시간으로분석할수있다. 실시간으로분석되어지고있는파일목록들을필터링하여필요한정보들로설정가능하다. - 13 -
위그림에서는 fservice.exe;sservice.exe 를필터링한것이다. 악성코드프로세스가 1초간격으로레지스트리를변경하는것을확인할수있다. ( 글자가보이지않으면, Options->Font... 에서폰트크기를변경해준다.) 하지만 WindowsXP 에서제공하는레지스트리편집기로해당레지스트리를확인할수없다. (Regmon의해당라인을더블클릭하면레지스트리편집기를실행하여자동으로위치를검색한다.) 4) IceSword v1.20en 북경과학기술대학교에서개발한루트킷탐색기능이있는안티루트킷도구이다. Functions, Registry, File로구분하여악성코드를탐색할수있다. - 14 -
악성코드실행후 Icesword 로프로세스 (Functions->Process) 를확인해보면일반작업관리자윈도우에서확인하지못한프로세스를찾을수있다. 실제샘플악성코드를실행하여작업관리자로프로세스를찾아보면위그림과같이악성코드의프로세스는찾을수없다. 또한위그림에악성코드가있다고하더라도사용자가강제프로세스중지를할수없도록제약을걸어둘수있다.( 시스템중요프로세스는사용자임의종료를하지못하도록구성되어있다.) - 15 -
Icesword 는숨겨진레지스트리값을모두탐색이가능하다. 이전 Regmon을통해자동으로레지스트리편집기내에서검색된레지스트리값이확인이안됐지만 Icesword 로찾을수있다. ( 그림의주소 : HKLM SOFTWARE Microsoft Windows CurrentVersion policies Explorer Run DirectXForMicrosoft?Windows ) 다. 샘플악성코드임의실행분석악성코드와그파생파일, 레지스트리를임의로수정, 삭제하여그결과를확인한다. 이전샘플악성코드실행분석에서확인된 1초마다파일, 레지스트리생성하는것을확인했다. 생성된파일과레지스트리가어떻게사용되어지는지확인해보아야한다. 생성된파일, 레지스트리는샘플악성코드의프로세스가 1초마다생성하므로해당파일, 레지스트리를수정, 삭제하더라도 1초마다다시생성된다. 샘플악성코드프로세스를 kill하면 1초마다생성하는행동을멈출수있다는것을예측할수있다. - 16 -
Icesword 도구로샘플악성코드프로세스를제거한다. Icesword 도구내에표시된프로세스를선택하여 Terminate Process를클릭한다. 샘플악성코드프로세스를제거하고나면 Explorer 오류창이뜨면서오류관련단추클릭후바탕화면이잠시깜빡거리는것을확인할수있다. 이전레지스트리를생성할때확인했던 explorer 관련레지스트리가관련있음을추측할수있다. Explorer 를새로실행하면서동시에 System32 폴더의 fservice.exe 를실행하고, fservice.exe 는 Windows폴더내부에 services.exe 파일생성할것이다. 악성코드가두개의실행파일을생성시키고레지스트리를통해각각의실행파일을특정패턴에서실행하도록구현되어있다. 어느하나가없으면나머지파일을통해수정되거나삭제된파일을생성하는구성이다. 이연결고리를끊기위해파일생성, 레지스트리등록위치를찾아서, 샘플악성코드프로세스를제거하는즉시삭제해주면그연결고리를끊을수있을것이다. 1) 생성된파일, 레지스트리샘플악성코드프로세스가생성하는파일, 레지스트리를확인하여프로세스재실행을막아준다. o Filemon에서확인된생성파일 - C: WINDOWS system sservice.exe - C: WINDOWS system32 fservice.exe o Regmon에서확인된생성레지스트리 - "C: WINDOWS system32 fservice.exe" HKLM SOFTWARE Microsoft Windows CurrentVersion policies Explorer Run DirectXForMicr osoft?windows - 17 -
- "C: WINDOWS system sservice.exe" HKLM SOFTWARE Microsoft ActiveSetup InstalledComponents {5Y99AE78-58TT-11dW-BE53-Y6 7078979Y} StubPath - "Explorer.exe C: WINDOWS system sservice.exe" HKLM SOFTWARE Microsoft Windows NT CurrentVersion Winlogon Shell 2) 샘플악성코드프로세스제거샘플악성코드프로세스제거후 Iceword 도구를이용하여 1) 생성된파일, 레지스트리를삭제하거나이름을수정한다. 3) 샘플악성코드파생파일및레지스트리제거이전 Winalysis 도구로변경되거나생성된파일, 레지스트리그리고이외변경된속성들을확인하여원래의값으로변경해준다. 삭제된파일이나레지스트리는외부를통해원본파일을복사한다. - 18 -
5. 맺음말 [ 기술문서 ]Windows 악성코드분석가이드내용에서는악성코드내부역어셈블리를통한리버싱기술을서술하지않았다. 이유인즉, 샘플악성코드에대한상세한분석이필요로하지않았기때문이다. 악성코드는하루에수십개에서수백개까지발견되어지고분석되어진다. 물론정확한분석도중요하지만새로운악성코드에따른대처가시급한것이우선이다. 또한한가지악성코드패턴이여러종류의변종악성코드가생겨나면서분석의반복으로인한비효율적분석이될가능성이있기때문이다. 하지만무조건적으로역어셈블리를통한리버싱을제외하는것역시위험한행동이다. 만일샘플악성코드의내부소스를확인하고자한다면언패킹 ( 참고 : 부록 B 샘플악성코드언패킹 ) 을한후소스를확인하길바란다. 상황에맞게효율적인분석을선택하는것은분석가의몫이며, 그에따른정보의책임역시분석가에있음을명심해야할것이다. - 19 -
본가이드에서는 VMware workstaion v6.0.1로가상컴퓨팅환경을구성하였다. 분석환경인 OS와분석도구들을미리구축을한상태에서 VM -> Snapshot 를선택하면아래그림과같이나올것이다. Take Snapshot... 를선택하면가상이미지의현재상태를그대로저장된다. Snapshot Manager를선택하면아래그림과같이관리윈도우가나타나며, 기존스냅샷을순서대로배열되어보여준다. 각각의스냅샷을선택하여 Go To 박스를클릭하면기존의설정으로되돌릴수있다. 많은악성코드들을분석하기위해자신이사용하는운영체제, 분석도구들을가상이미지를통해구성한후, 위기능을통해스냅샷을하기를바란다. - 20 -
샘플악성코드는 UPX패킹이되어있다. UPX는각종파일의용량을줄일수있는패킹기법중하나이다. UPX관련자료들을찾아보면쉽게패킹, 언패킹을할수있는도구들을찾을수있을것이다. 본가이드에서는 Stud_PE를이용하여간단하게언패킹을했으며, 언패킹된샘플악성코드를역어셈블러나디버깅도구를통해샘플악성코드의세부적인행동사항들을분석할수있다.(Download: http://www.cgsoftlabs.ro/) Stud_PE 도구를사용하기전에실행파일과같은폴더상에 ImpREC.dll 파일을복사해주길바란다. Stud_PE -> Tools -> Plugins -> Unpacker for UPX를선택하여샘플악성코드의 UPX 패킹을풀어준다. 그다음패킹된샘플악성코드를선택해주면언패킹후성공메시지창을확인할수있다. 언패킹된파일은 Stud_PE.exe 파일과동일한폴더내에 unpacked.exe 라는파일이름으로저장된다. UPX 패킹을통해약 85% 압축이되었다는것을확인할수있다. - 21 -