MS DOS VIRUS ANALYSYST ALERT VIRUS KIM DONG HYUN WHATTEAM & LET S CQ & KOREA IT TECHNICAL SCHOOL hackpupu@gmail.com 페이지 0 / 10
목차 ⅰ. Executive Summary 2 ⅱ. Identification 3 ⅲ. Behavioral and code analysis findings 5 ⅳ. Mitigation..10 List of Figures 1. First run screen shot..2 2. Second run screen shot..2 3. Function Call Tree..5 4. Start Function Disassembly..5 5. sub_1001b Function Disassembly..6 6. sub_1001b Sub Routine..6 7. loc_1004d Disassembly..7 8. Draw Screen Virus ALERT..8 9. Sub_1001B Sub Routine Disassembly..8 10. ALERT.COM Virus Flow Chart..9 11. ALERT.COM Vitigation 10 List Of Tables 1. Identification results 3 2. Anti-Virus detection virus for the sample..3~4 페이지 1 / 10
ⅰ. Executive Summary Alert Virus는다른악성행위는하지않고, 실행시킬시보라색의 VIRUS ALERT 창을띄우는 Virus로, MS-DOS 시절유행하던바이러스다. 흔히알려진바이러스들보다는파급력도작았고, 피해상황도작았지만 DoS 시절 Graphic한화면을띄워나의흥미를자극한 Virus 이다. 분석환경은, VM Ware workstation, MS-DoS 환경에서 IMA파일을 Connect해실행시켰다. 참고로, 디스켓드라이브에서두번째실행시, ERROR 를나며, VM Ware 가 Rebooting 된다. 오류내용은간단히, CPU Register 와디스켓의충돌로강제종료한다는내용이다. 처음실행시, VIRUS ALERT 란화면을보여주며, 종료된다. [Picture 1: First Run Screen Shot] 처음실행시에는, 타명령어나강제종료등을시킬수있지만, 두번째실행시에는그 렇지않고, 타행동을막으며 Rebooting 을해야만해결할수있다. 시스템의동작이멈추는걸확인할수있다. [Picture 2: Second Run Screen Shot] 고로여기서잠시 ALERT VIRUS를예측해보면, 처음실행시그림을그리는루틴이있고, 두번째실행시, 그림을그리는루틴과 System 을마비시키는명령이있을것이라예측할수있다. 또한일반적인 Strings이나오는부분이아니라, 특정그림을그리니 X, Y같은좌표값을저장하는 Register가있을것이라예측해본다. 페이지 2 / 10
ⅱ. Identification Alert 바이러스의간단한내용은아래와같다. Table 1: Identification results File name File Size File Type MD5 Hash SHA1 Hash SHA256 Hash PEiD PE Structure information ALERT.COM 707 bytes.com 539b9ee5586e436047d27e1b1c1da185 65d72827ec8a22fff2f5910bd00ac6378706e80f 2dfbf1c3931e327200b1458389f4bee5055051f7e36a74121217a128d5bd4765 N/A(no known compression/obfuscation found) Signatrue : 0x5A4D : IMAGE_DOS_SIGNATURE MZ Bytes on Last Page of File : 0x00C3 Pages in File : 0x0002 Relocations : 0x0000 Size of Header in Paragraphs : 0x0002 Minimum Extra Paragraphs : 0x1000 Maximum Extra Paragraphs : 0xFFFF Initial (relative) SS : 0xFFF0 Initial SP : 0xFFFE Checksum : 0x0000 Initial IP : 0x100 Initial (relative) CS : 0xFFF0 Offset to Relocation Table : 0x001C Overlay Number : 0x0000 Alert Virus는 MS-DoS 시절의 Virus 중에서도, 용량이매우작은 Virus이다. 그래서그런지, PE 구조도별다른내용을확인할수없었다. 또한대부분의백신업체에서 Virus를탐지하고있었으며, 오래된바이러스라그렇다고추측을개인적으로했다. Table 2: Anti-virus detection for the sample AVG Ad-Aware Antiy-AVL Avast Baidu-International BitDefender Bkav CMC Comodo Cyren ESET-NOD32 Emsisoft.EXE.COM Virus/DOS.Alert Alert-675 Virus.DOS.ALERT.AI Dos.Cloud539.Trojan.b9ee Generic.Win32.539b9ee558!MD Virus.DOS32.Alert SillyC Probably unknown COM.EXE Intende.Alert (B) 페이지 3 / 10
F-Prot F-Secure Fortinet Fortinet GData Jiangmin Kaspersky Kingsoft McAfee McAfee-GW-Edition MicroWorld-eScan Microsoft NANO-Antivirus Rising Sophos Symantec Tencent TrendMicro TrendMicro-HouseCall VBA32 Zillya nprotect AVWare AegisLab Agnitum Agnitum AhnLab-V3 Avira ByteHero CAT-QuickHeal ClamAV DrWeb Ikarus K7AntiVirus K7GW Malwarebytes Norman New Intened.Alert PossibleThreat Intended/Alert Virus.Dos.Alert Win32.AutoInfector.a.(kcloud) Univ.ow/a Univ.ow/a Virus:DOS/Alert.675 Virus.Dos.Alert.bymr MZ:Virus.Dos.Alert!116864 Intended Alert Mr. Twister (Gen1) Win32.Virus.Alert.bfrf MR_TWISTER MR_TWISTER Virus.Alert.DOS.1 Intened.Alert 페이지 4 / 10
ⅲ. Behavioral and code analysis findings IDA Pro 를통해, 분석을해보았다. ( 필자는 MS-DoS 환경과 16Bit 환경이썩반갑지않 았다. Dos Execution File 까지 Disassembly 해주는 IDA Pro 가있는데무엇이두려운가 ) 전체적인구조는매우간단하다. Start함수를호출하고, 그뒤 sub_1001b라는함수를통해화면을띄우고, MS-DOS의 Booting후 Alert.COM 을실행한횟수를 Count해확인하는매우간단한구조다. 다만 16Bit Register에익숙하지않아잠시당황스러울수있다. [Picture 3: Function Call Tree] 먼저 Start함수의 Disassembly한결과이다. 별다른내용은없으며, DH, DL은열과행의 Position을의미하며, CX는 Strings Length를의미한다는내용과, int명령을통해화면을제어하고있음을확인할수있다. 또한완벽한 Disassembly 이지원되지않아, sp-analysis failed가나왔지만별문제없이진행할수있다. (ida pro를이용하다보면, 아래의사진과같이주석이달려있는경우가있다. 물론영문이지만전체적인맥락을이해할수있으며주석의신뢰도가많이높은편이다.) [Picture 4: Start Function Disassembly] 페이지 5 / 10
이제, sub_1001b 함수부분이핵심이라고할수있다. 예측해보면, 먼저 MS-DoS 가실 행된후 2 번이상 ALERT.COM 을실행한지확인한후, 분기점이갈릴것으로예상된다. 아래는 sub_1001b 함수의 Disassembly 결과이다. [Pictrue5: sub_1001b Function Disassembly] 위의사진의 Disassembly 결과중 int 21h 명령어는 DOS가실행된후, 2번이상 ALERT.COM 이실행하는가를검사하는명령어이며, 2번이하실행되면즉, 처음실행시에는 loc_1004d 함수로 Jump해실행함을확인할수있다. 고로, 아래와같은 Graph가그려진다고할수있다. [Picture 6: sub_1001b Jump Routine] 페이지 6 / 10
그럼먼저, 처음실행시의과정을확인해보겠다. [Picture 7: loc_1004d Disassembly] 루틴이매우길어보이지만, 간단하게 int 10h 명령과 dx, bp 레지스터의값을변경하며 열과행을바꾸며 Strings 을그리고있음을확인할수있다. 페이지 7 / 10
핵심적으로그림을그리는루틴은아래와비슷한구조이다. [Picture 8: Draw Screen VIRUS ALERT] 여기서 AH는 Mode이며, dx(dh, DL) 은 row와 column을말한다. Bp는현재그릴 Strings을 Pointer하고있다. 여기서예측한내용인데, Disassembly해서나온결과가위와같으면제작자는 Static하게 Assembly로 Virus를제작하지않았나추측한다. 타언어를이용해서 Compile을했으면 Compiler단에서따로반복문 (Jmp 등 ) 을통해간결한 Assembly를출력했을것이다. * 참고로 int 10h는 WRITE STRING 함수이며, Argument는아래와같이구성된다. WRITE STRING(AT, XT286, PG, EGA, VGA) 이제, 남은부분은 sub_1001b 부분이며, 이부분에서 System 을마비시키는부분이있 을것이라예측한다. 다시처음으로점프해 (seg:011f), 분석을시작해보자. [Picture9: sub_1001b Sub Routine Disassembly] 곧바로확인할수있는점으론, int 21h 명령이 4번호출되었으며, int 15h 명령이한번호출되었다. 두함수의구조는아래와같다. *int 21h: MOVE FILE READ/WRITE POINTER(LSEEK) Ps: int 21h 명령의경우 Mode(AL) 에따른행동을한다. Mode 값에따라사용되는mode 값은포인트가다르며 mode 값은 AL레지스터를사용한다. DS:DX 레지스터가 Filename 또는 Buffer를의미하고, BX는 file handle을의미한다. CX는 Write할 Byte 수를의미한다. *int 15h: SYSTEM REQUEST POWER OFF (CONVERTIBLE): to use system profile 페이지 8 / 10
고로시스템을마비시키는코드는 int 15h 라고예측할수있으며, 실제로 seg000:013b 부터, seg000:0142 부분에 Break Point 를걸고실행했을시시스템은마비되지않았다. 고로전체적인동작은아래의그래프로행동한다고할수있다. [Picture10: ALERT.COM VIRUS Flow Chart] 결과적으로, ALERT.COM 은별다른악성행위가추가되지않고, 첫번째실행시에는보라색의 VIRUS ALERT String을 Screen에 Draw하고종료하고, 두분째실행시 VIRUS ALERT String을 Draw 하고, SYSTEM Request Power Off 명령을통해 System을마비시킨다. 페이지 9 / 10
ⅳ. Mitigation 치료법은매우간단하다. ALERT.COM 을 del 하면되며추가적으로삭제할부분은없다. 이번에확인한내용인데, MS-DoS 대부분의 Virus 는추가적인행동을많이하지않는다. 한다면 MBR 또는 VBR 파괴또는손상등을하며, x86_64 Virus 에비해간단하다. [Picture11: ALERT.COM Mitigation] 번외로, 이번 ALERT Virus를 Analysis하며 x86_64 Virus를분석하는내용보다참재미있었던내용이많았다. WINAPI를호출하는내용이대다수인 x86_64보단 int 명령을통해악성행위를하고재미있는그림을그린다던가, 당황스럽게하는내용을출력하는내용등을확인할수있었다. 가상 Machine 인 VMWARE 를통해분석을한내용이라, 흥미롭게느껴졌을진몰라도, 그당시의일반사용자들이감염되어바이러스를실행시켜당혹스럽게했을당시를생 각하면약간의웃음이나온다. 추가적으로 MS-DOS Virus 를받을수있는 Site 가있다. 필자도 ALERT Virus 를아래의 Site 에서다운로드받아분석했다. ( 디스켓이미지를만들어 Connect 시키면된다.) 이런 자료를모은 VX Heaven Site 운영자에게감사를표한다. http://vxheaven.org/vl.php?dir=virus.dos 또한다른 MS DoS Virus 들의재미있는행동을보고싶다면아래의사이트를참고하면 된다. 그당시의그래픽을최대한사용해만든 Virus 들이참재미있다. http://izismile.com/2013/10/28/the_coolest_msdos_viruses_ever_created_15_gifs.html 최근의 Virus 에서느껴보지못한향수를느끼고싶다면 MS DoS Virus 를분석하는걸 추천한다. 페이지 10 / 10