virse program messge Dos to Win 차민석책임연구원 안철수연구소시큐리티대응센터분석 1 팀 ASEC (AhnLab Security Emergency response Center) Anti-Virus Researcher 2011.7.2
시작하기전에 소개 3 가지특징 반응없음 째려봄 질문없음 오탈자, 실수, 틀린내용은조용히찾아오거나메일로 virse program messge Dos to Win 는오타아님 LBC 바이러스에서가져온문자열 ( 이후설명 ) 목적 디스크입출력악성코드소개 감사 안철수연구소시큐리티대응센터분석 1 팀팀원 2
목 차 1. 디스크입출력이용악성코드 2. 윈도우에서디스크입출력 3. 추억의 8090 부트바이러스 4. 윈도우부트레코드감염 5. 주요악성코드 6. 분석방법 7. 전망과과제
1. 디스크입출력이용악성코드
디스크입출력악성코드 디스크입출력악성코드? 디스크입출력으로디스크내용을직접변조하는악성코드 주로주부트레코드, 파일시스템, 특정파일에접근 악성코드제작자입장에서이점 기술적으로어렵지않음 행동감시프로그램우회가능성높음 자기보호 ( 백신등 ) 프로그램우회변조가능 MBR 변조할경우 MAOS (Malware OS) 현황 폭발적인증가세는아직없지만조금씩증가하고있음 MBR 감염형태의악성코드도지속등장 5
디스크입출력이용악성코드 디스크입출력악성코드주요사건 2005 년 : 블랙햇에서 eeye 의 Bootroot 프로젝트발표 ( 윈도우 2000/XP 전용 ) 2007 년 : NV labs 의 Vbootkit ( 윈도우비스타동작 ) 2007 년 9 월 : 윈도우비스타탑재판매시스템에서 Angelina 바이러스발견 2007 년 11 월 : MBR 루트킷 Mebroot(Sinowal) 확산확인 2008 년 7 월 : TDL1 발견 2008 년 10 월 : 디버깅중이면 MBR 데이터손상시키는 Win- Trojan/Killmbr.14848 발견 2010 년 2 월 : TDL3 와 MS10-015 충돌 (3.25 버전이상에서해결 ) 2010 년 5 월 : MBR 변조 Win-Trojan/Torr (Yonsole) 2010 년 6 월 : 부트레코드를변경하고애드웨어설치하는 Win- Trojan/Trup 2010 년 7 월 : x64 윈도우감염징조보이는 TDL3 3.27.3 버전발견 2010 년 8 월 : MBR 변조및 userinit.exe 변조 Win-Trojan/Smitnyl 6
디스크입출력이용악성코드 디스크입출력악성코드주요사건 2010 년 8 월 : x64 윈도우감염 TDL3 발견 2010 년 10 월 : MBR 변조를통해돈을요구하는 Win-Trojan/Saftad 2010 년 11 월 : 64 비트윈도우 7 감염 TDL4 7
디스크내용변경및파괴 디스크입출력으로데이터직접변경및파괴 주로마스터부트레코드내용변경해부팅불가 종류 Win-Trojan/Killmbr.14848 (2008 년 10 월발견 ) Win-Trojan/Torr.111104 (2010 년 5 월발견 ) Win-Trojan/Fakeav.103176 (2010 년 6 월 ) 7.7 & 3.4 DDoS 공격 (2009 년 7 월 & 2011 년 3 월 ) 결과 분석방해 -> 가상환경이아니라면윈도우재설치! 손쉬운시스템부팅불가 확실한데이트파괴 8
특정파일접근혹은변조 FAT, NTFS 등파일시스템구조를해석해디스크입출력으로대상파일접근 드라이버파일을포함한시스템파일 백신을포함한보안프로그램 일반프로그램 결과 레지스트리변경없이자동실행가능 주요시스템파일변조 보안프로그램방해 패치된백신프로그램은검사하는듯해도실제악성코드진단못함 방화벽우회 9
부트레코드변조 ( 감염 ) 부트레코드변조 + 파일변조 도스부트바이러스와유사한형태 다른디스크로직접전파되지않음 ( 바이러스는아님 ) Win-Trojan/Trup : 부트레코드감염및 ntoskrnl.exe 변조 부트레코드와파일혹은시스템을감염시키는부트 / 파일바이러스재등장가능성존재 부트킷 (Bootkit) 부트킷 = 부트레코드감염 + ( 루트킷 ) OS 시작전에악성코드가먼저실행 MAOS (Malware Operationg System) = Malware Platform Mebroot, TDL(Alureon, TDSS, Tidserv) 등 10
2. 윈도우에서디스크입출력
디스크입출력 CreateFile 간단한디스크입출력 파일이름 : \\.\PHYSICALDRIVE0, \\.\C: http://support.microsoft.com/kb/q100027 12
디스크입출력 Win-Trojan/Saftad.49664 물리디스크입출력 13
디스크입출력 Win-Trojan/Saftad.49664 물리디스크입출력 14
윈도우 Vista & 7 윈도우 Vista 와 7 에서는관리자권한으로실행권장 15
3. 추억의 8090 부트바이러스
1988 년 사회 88 서울올림픽 필자는컴퓨터학원에서애플 2 복제컴퓨터접함 브레인바이러스국내유입 안철수박사백신 (Vaccine) 발표 17
1989 년 사회 아시아나항공취항, 5 공청문회 동유럽혁명일어나고냉전이끝남 베를린장벽무너짐 중국텐안먼 ( 천안문 ) 사건발생 안철수박사 LBC 바이러스로백신 II 와예루살렘바이러스로백신 II 플러스발표 LBC 바이러스등장및하드디스크부팅불가로피해속출 새로운컴퓨터바이러스가속속국내유입 필자는 Brain 바이러스와 LBC 바이러스에감염된디스크를사용못하는줄알고컴퓨터학원친구에게줌 -.-;; 당시 5.25 인치플로피디스크약 2,000 원 당시초등학생버스비 60 원 -> 버스 33 회! 18
도스부트바이러스 : Brain 바이러스 1986 년파키스탄 Amjad Farooq Alvi, Basit Farooq Alvi 형제가제작 360 KB 플로피디스크만감염 감염된디스크의볼륨이름 (c) Brain 으로변경 원형 제작자이름과주소포함 19
도스부트바이러스 : Brain 바이러스 국내유입브레인바이러스 20
도스부트바이러스 : Brain 바이러스 브레인바이러스제작자와 F-Secure 연구원만남 (2011 년 2 월 ) http://campaigns.f-secure.com/brain/index.html 21
도스부트바이러스 : Stoned 바이러스 1987 년뉴질랜드고등학생이제작 ( 미국아님 ) 원래플로피디스크만감염시킬수있으나누군가하드디스크도감염시키도록변형 대마초합법화주장메시지포함 Stoned 는돌이아닌대마초에몽롱한상태를의미하는속어 전세계적으로가장널리퍼지고변형이많은부트바이러스중하나 미켈란젤로바이러스도 Stoned 바이러스변형 22
도스부트바이러스 : LBC 바이러스 1989 년제작된국산두번째컴퓨터바이러스 Honey 바이러스가최초 감염되면하드디스크로부팅되지않고인식되지않아포맷으로인한자료손실로많은피해일으킴 ( 제작자실수 ) 발표문서제목은 virse program messge Njh to Lbc 에서가져옴 23
PC 부팅과정 MS-DOS, Windows 를포함한 PC 부팅과정 자기검사 (Power-On Self-Test : POST) 디스크가장처음에위치한코드 ( 부트레코드 ) 를 0000:7C00 에로드및실행 운영체제와상관없는 PC 계열의기본설정 기본적으로 1981 년 IBM PC 발표당시방식 16 비트리얼모드로시작 -> 보호모드로진입 24
주부트레코드 주부트레코드 (Master Boot Record) 실행명령 ( 부트코드 ) 과디스크상에주파티션위치를지정하는 4 개의항목을가진파티션테이블이있는고정된공간 25
주부트레코드 파티션테이블정보 1BEh 부터시작 (80h 는부팅가능한영역 ) 4 개의주파티션포함될수있음 마지막 (1FE 와 1FF) 은 55h AAh 로종료 파티션정보가없거나잘못될경우디스크부팅이되지않거나인식이되지않음 26
MS-DOS 메모리구조 MS-DOS 메모리구조 기본메모리는최대 640 킬로바이트 (KB) 당시 640 KB 이하메모리용량도많아 000:0413h 에메모리용량정보보관 0000:0413h-0000:0414h memory size: normally accessed via interrupt 12h 참조 http://www.osdata.com/system/physical/lowmem.htm 27
부트바이러스원리 보통최상위영역의메모리에자기복사하고기억장소줄임 기본메모리용량을보관하는 0000:0413h 번지값줄임 도스가사용하지않아바이러스코드보호 인터럽트벡터주소가로챔 보통디스크입출력담당하는인터럽트 13h 가로챔 인터럽트 13h 주소는 000:004Ch 에존재 보관한정상부트레코드나자체기능으로재부팅 다른부트바이러스에감염된경우 2 가지부트바이러스가동시활동 사용되는플로피디스크혹은하드디스크감염 보통정상부트레코드로재부팅전하드디스크감염 DIR 등명령때다수의인터럽트 13h 수행 -> 디크스입출력속도저하 기타의도된증상 디스크볼륨이름변경, 메시지출력, 디스크데이터파괴등 28
윈도우 95 등장과부트바이러스 32 비트디스크입출력으로인터럽트 13h 가더이상이용하지않음 인터럽트 13h 를가로채는부트바이러스는다른디스크를감염시킬수없음 루마니아 RP 가제작한 Dodgy 바이러스는 system\iosubsys\hsflop.pdr 파일삭제하는우회기법이용 다수의부트바이러스는윈도우 95 이상시스템에서오동작일으킴 플로피디스크사용이급격히줄어둠 더이상부트바이러스확산이어려움 윈도우 NT 기반의윈도우 2000 과윈도우 XP 이후부트바이러스는거의멸종됨 2011 년현재도부트바이러스는종종보고! V3 에서부트바이러스치료기능제외 치료요청올경우전용백신제공 -> 종종접수 29
4. 윈도우부트레코드감염
윈도우부팅과정 윈도우부팅과정 초반부는 MS-DOS 와동일 부팅과정 리얼모드로실행하는동안존재 바이오스 (BIOS) 마스터부트레코드 (MBR) 부트섹터 (Boot Sector) Bootmgr / Ntldr Winload.ex e Ntoskrnl.exe 등 31
보호모드로전환시키는 Bootmgr Windows 7 bootmgr 과 Windows XP ntldr 32
도스부트바이러스원리응용 디스크입출력인터럽트 (Int 13h) 후킹후윈도우부팅과정에서코드변조 33
5 주요악성코드
Win-Trojan/Killmbr.14848 World of Warcraft 게임사용자계정과암호유출악성코드 2008 년 10 월발견 디버깅중이면 MBR 내용을변경해부팅되지않게함 35
Win-Trojan/Torr (Yonsole) 2010 년 5 월발견 http://blogs.technet.com/b/mmpc/archive/2010/06/18/your-pchas-been-stoned-again.aspx 원격명령중 MBR 변조해부팅불가기능존재 MBR 변경 36
Win-Trojan/Torr (Yonsole) 변경되는코드는메시지출력후중지 ( 무한루프 ) 37
Win-Trojan/Saftad.49664 변조된부트레코드 38
Win-Trojan/Trup 부트레코드변형및애드웨어다운로드 2010 년 6 월발견 Ntoskrnl.exe 의 IoGetCurrentProcess() 함수패치 개념도 (by 안철수연구소시큐리티대응센터분석 1 팀이도한연구원 ) 39
Win-Trojan/Smitnyl MBR 감염및 userinit.exe 변조 2010 년 8 월발견 원본 MBR 은섹터 5 에백업 파일시스템확인해 FAT 과 NTFS 에따라파일위치계산해 userinit.exe 변조 Smitnyl 개념도 (by ASEC 분석 1 팀 ) 40
Win-Trojan/Saftad.49664 마스터부트레코드변조후돈요구 2010 년 10 월발견된랜섬웨어 하드디스크데이터가암호화되었다고알림 ( 실제로는 MBR 만변조 ) www.safe-data.ru 로접속유도 -> 50 유로요구 aaaaadabia 를입력하면정상부팅됨 ( 자체치료 ) 41
Win-Trojan/Saftad.49664 우크라이나소재홈페이지 50 유로요구 42
Win-Trojan/Saftad.49664 변조된 MBR 내용 악성코드뒷부분읽기 메시지출력및키값입력 옳은키이면정상 MBR 복구 -> 정상부팅 43
Demo 44
6. 분석방법
디스크섹터뷰어 / 편집기 HxD http://mh-nexus.de/en/hxd/ 다운로드 : http://mh-nexus.de/en/downloads.php?product=hxd 46
부트레코드디버깅 디버깅방법 Debug, 소프트아이스 2.8, Windbg (?) Bochs Bochs http://bochs.sourceforge.net/ bochsdbg.exe 로디버깅가능 47
Demo 48
7. 전망및과제
간단한디스크입출력 간단한방식이라쉽게악성코드에적용가능 윈도우버전별차이 윈도우 XP 까지는큰어려움없음 윈도우비스타및 7 이상에서우회방안필요 보안프로그램에서디스크입출력차단기능 윈도우 7 서비스팩 1, 단편화제거프로그램등의정상프로그램에서도디스크입출력이용 윈도우 7 에서파티션변경지원 해결방안 화이트리스트? 사용자선택? 50
안철수연구소의디스크입출력차단기능 V3 Lite 디스크입출력차단기능 조각모음등에서도뜰수있음 출처 : 네이버바이러스제로카페 (http://cafe.naver.com/malzero/72209) 51
새로운부팅방식 EFI, UEFI (EFI 2.0) http://www.uefi.org/home/ 현재 BIOS 시스템이사용하는레거시 16 비트코드를대체하는최신표준안 사전부트프로그램 (preboot program) 로딩과운영체제로딩과정을지원하는드라이버허용 부팅시간 10-20 초내외 EFI 는 OS 환경과비슷 맥등에서사용 52
새로운부팅방식 EFI 스크립트 (NSH) EFI shell 로부팅가능 EFI shell starup video http://www.youtube.com/watch?v=wrybdw9ul5e EFI shell startup video and HEXEDIT.EFI demo http://www.youtube.com/watch?v=kirsaas1mbm 가능한시나리오 EFI 내에악성코드보관 다른이미지로부팅 악성코드가제어권을가진후부팅 진정한 MAOS! 53
향후과제 부트루트킷 ( 부트킷 ) 분석과진단 / 치료 Mebroot, TDL 64 비트 TDL 분석 새로운부팅방식을이용한악성코드등장가능성연구 EFI, UEFI 백신필요?! 54
퀴즈 발표자료제목인 virse program messge Dos to Win 는 LBC 바이러스에서가져왔다. 이바이러스의원래메시지는? 0 번헤드, 0 번트랙, 1 번섹터에서 0 번헤드, 0 번트랙, 7 번섹터의내용을파일로저장하려면몇바이트가필요한가? LBC 바이러스에감염된하드디스크로는부팅되지않고인식도되지않는다. 그이유는각각무엇인가? 55
퀴즈정답 발표자료제목인 virse program messge Dos to Win 는 LBC 바이러스에서가져왔다. 이바이러스의원래메시지는? virse program messge Njh to Lbc 0 번헤드, 0 번트랙, 1 번섹터에서 0 번헤드, 0 번트랙, 7 번섹터의내용을파일로저장하려면몇바이트가필요한가? 3,584 바이트 7 개섹터 * 512 = 3,584 바이트 LBC 바이러스에감염된하드디스크로는부팅되지않고인식도되지않는다. 그이유는각각무엇인가? 부팅시 A 드라이브라고가정해서하드디스크부팅되지않음 감염된부트레코드에는파티션정보가존재하지않음 56
질문 메일주소 : jackycha@ahnlab.com 57
참고자료 Windows Internals 제 5 판 Ralf Brown s Interrupt list (http://www.cs.cmu.edu/~ralf/files.html) Your computer is now stoned ( again) (F-Secure) ASEC Report Vol. 16 중 MBR infection : Smitnyl 분석정보 ( 안철수연구소 ) TDL3 : The Rootkit of All Evil? (Eset) The Case of Trojan Downloader TDL3 (F-Secure) 안철수연구소 ASEC 분석 1 팀내부분석자료 58
감사합니다 세상에서가장안전한이름 ASEC Threat Research http://blog.ahnlab.com/asec/ http://core.ahnlab.com Copyright (c) AhnLab, Inc. 1998-2011 All rights reserved. http://www.ahnlab.com http://blog.ahnlab.com http://twitter.com/ahnlab_man