IDA Remote Debugging 2007. 01. 이강석 / certlab@gmail.com http://www.asmlove.co.kr - 1 -
Intro IDA Remote debugging에대해알아봅시다. 이런기능이있다는것을잘모르시는분들을위해문서를만들었습니다. IDA 기능중에분석할파일을원격에서디버깅할수있는기능이있는데먼저그림과함께예를들어설명해보도록하겠습니다. Certlab은바이러스와같은위험한파일을분석할때 VMWare 안에서 IDA로분석을합니다. 쓰고있는 Main Computer에서분석을하게되면디버깅을하다가잘못해서 Main Computer에감염이되는불안감과그런경험이있기때문이죠. 디어셈블만한다면감염걱정은없는데 Main Computer 의넓직한모니터에사양좋은컴퓨터에서 IDA 로 디버깅을하고싶다고소원을빌게됩니다.. 그랬더니꿈속에서아이다가나와 Remote Debugging 이라는방법이있다고말해줍니다. 아이다 : Remote Debugging을하면디어셈블과디버깅까지 Main Computer에서할수있고, 만약디버깅과정에서위험한파일이분석도중실행이된다고해도설정해놓은분석컴퓨터에서실행이되요. 또한, 원격에있는 Process를 attach시켜디버깅할수있구요. 그림으로보면이해하기쉬울것입니다. - 2 -
이제 Remote debugging 을위한설정을해봅시다. 설정은의외로간단합니다. 디버깅되어실행이될 ( 분석도구가있는분석전용컴퓨터 ) 가서버가됩니다. Debugger Server 설정을보도록하겠습니다. 우선 IDA 가설치된디렉토리를 Path 에넣어줍니다. win32_remote, linux_server 파일이있는것을볼수있고, 정리를해보았습니다. 여기서제일위에있는 win32_remote.exe 를이용해서버로만들것이고, 나머지는각각의플랫폼에 맞춰구성을하시면됩니다. - 3 -
File name IDA version Operating system Debugged programs win32_remote.exe 32-bit MS Windows 32-bit 32-bit PE files win32_remote64.exe 64-bit MS Windows 32-bit 32-bit PE files win64_remotex64.exe 64-bit MS Windows 64-bit 64 or 32-bit PE files linux_server 32-bit Linux ELF files linux_server64 64-bit Linux ELF files win32_remote argument를보겠습니다. port number는 23946으로 default 설정되어있습니다. password를 certlab으로설정한후에실행을합니다. Client로설정할 Main Computer에서접속을할것이기때문에 IP정보도확인합니다. 192.168.5.128 그러면 default로설정된 23946 port 로 listening 을하게되고, Debugger Server의설정은이것으로끝입니다. 이제디버깅을하게될컴퓨터인 Main Computer 의설정. 즉 Debugger Client의설정을보겠습니다. IDA를실행하고위험한파일. 즉악성코드를 IDA로불러들입니다. 그러면악성코드의디어셈블된화면을보실수있고, 여기까지는단순히파일을디어셈블만하기때문에감염될걱정은없습니다. 불러들일악성코드는다음과같고, Blink Professional 에서검색된결과입니다. - 4 -
Event ID: BLINK-MAL-205 Severity: High Description: Blink has found a malware application Virus found: W32/VBTroj.CUO Item found: H: Analysis ctfmon.exe Action: Repair Alert: Yes Name: W32/VBTroj.CUO Second Action: Quarantine Category: Trojan Debugger -> Process options 를누릅니다. 그러면 Debug application setup 창이열리게되고, 여기서 Hostname에분석컴퓨터의 IP를넣어주고, 설정한패스워드를입력한후에 OK를누릅니다. - 5 -
OK를누르게되면반응이없을것입니다. 지금한것은 Remote Debugging 설정을한것이고, 악성코드를이제디버깅을하게되면말그데로 remote debugging을하게되는것입니다. 디버깅을하기전에각각의컴퓨터에 (Main Computer, Analysis Computer) 악성코드가실행되었을때악성코드가실행되어지는컴퓨터가무엇인지알아보기위해 Process moniter로반응을보도록하겠습니다. Analysis Computer Main Computer - 6 -
- 7 -
이제디버깅을해보도록하겠습니다. 디버깅버튼을누르게되면다음과같은창이뜨게되는데현재 Main Computer의악성코드경로인 H:\Analysis\ctfmon.exe 파일이 remote로설정한컴퓨터의 H:\Analysis\ctfmon.exe 에없다는뜻이고, remote computer에복사를하겠냐고물어보는창입니다. Yes를누릅니다. Yes 를누르게되면 IDA Debugging mode 로전환이되고, Debugging 후에는분석컴퓨터의 c:\ctfmon.exe 악성코드가복사되고, 실행이된것을보실수있습니다. 물론 Main computer 에서는악성코드가실행되지않았고, 악성코드가실행된분석컴퓨터에는악성코드 가실행되어여러가지일들을수행하는것을볼수있습니다. - 8 -
다음은악성코드가휴지통밑에휴지통밑에 ctfmon.exe 라는악성코드를숨기는것과 c:\autorun.inf 파 일을생성하는것을볼수있습니다. 그외에여러가지 dll 파일들을생성하고, 시작 Registry 에추가하는악성코드입니다. 이렇게 remote debugging 을통해분석을하는방법을알았고, remote computer 의 process 를 attach 해서분석하는방법을알아봅시다. win32_remote.exe 로 Debugger Sever 로설정을하고, Debugger Client 에서다음과같이 Remote Windows debugger 를누릅니다. 그럼다음과같이 Debug application setup 창이뜨게되고, OK 를누릅니다. - 9 -
그럼다음과같이 Remote computer 의현재 Process list 를볼수있고, Attach 할 Process 를확인후분석을하시면됩니다. 이렇게 Remote Debugging 에대해알아보았습니다. 이것을응용해분석은여러분의몫입니다. :) 문서내용중에틀린부분이나잘못된내용은메일을보내주시면감사드리겠습니다. http://www.certlab.org mailto:certlab@gmail.com - 10 -