은밀하게부트킷하게 순천향대학교 SecurityFirst 김학수
발표자소개 순천향대학교정보보호학과 3 학년 SecurityFirst 소속김학수 (22) 홗동내역 2011.10 제 1회 POC 여성해킹방어대회예선및본선수상 1위 2012.01 해병대사령부해킹시연 2012.08 제 10회청소년정보보호페스티벌문제출제및대회운영 2012.09 KUCIS 충청권역세미나발표 2012.11 순천향대학교공과대학학술제동상수상 2012.11 순천향대학교소프트웨어경짂대회은상수상 2012.11 EBS 다큐프라임 인터넷폭력예방프로젝트 2부자문 2013.06 핚국정보보호학회 2013년도하계학술대회우수논문수상 관심분야 악성코드분석 리버싱기술연구 윈도우포렊식
부트킷이란 부트킷의정의 시스템에설치된 OS 로제어권이넘어오기전에디스크의 MBR 코드를 감염시켜 OS 의부트제어코드를패치시키도록하는악성코드 PC 의부팅영역인마스터부트레코드 (MBR) 을조작하는악성코드
부트킷이란 마스터부트레코드 (MBR) 이란? Hard Disk Master Boot Record (MBR) Boot Sector Ntlddr NTFS.sys Ntoskrnl.exe Operating System Kernel Mode User Mode Application 하드디스크의맨앞에기록되어있는총 512Byte 의시스템기동용영역
부트킷이란 부트킷의종류 스미트닛부트킷 Smitnyl Bootkit 부트섹터를감염시킴으로써백싞업체들이짂단이나치료하기를어렵게함 파괴형부트킷 Destroyer Bootkit MBR 을의미없는문자열로덮어씌우는행동들을통하여부팅을불가능하게함
스미스닛부트킷 정의 부트섹터를감염시켜백신업체들의탐지를어렵게하는형태 hacker User Anti-Virus Company
스미스닛부트킷 정의 부트섹터를감염시켜백신업체들의탐지를어렵게하는형태 hacker User Anti-Virus Company
스미스닛부트킷 대표사례소개 TDL TDL2 하드디스크의디바이스스택에등록하고 IofCallDriver 를후킹 TDL 4 하드드라이브맨끝의잉여영역에부트킷을추가하는형태는 TDL 3 과유사하나 TDL3 는 MBR 정보를활용핚것이라면 TDL 4 는 ZwDeviceIoControlFile() 을사용 2008.07 2009.12 2009.07 2010.07 TDL ZwEnumerateKey,ZwFlushInstructionCache 함수를후킹하여자싞의존재를은폐시키고 \Device\HarddiskVolume 에자싞의디바이스를등록시켜필터링함 TDL 3 물리적디스크의마지막부분인언파티션드영역에자싞의악성코드를저장하고디스크디바이스를패치하여자싞의볼륨을맊들어사용 ( 드라이버는시스템프로세스에쓰레드를인젝션하여 C&C 서버와연결됨 )
스미스닛부트킷 TDL 4 악성코드의형태와특징 분석홖경 : Windows XP SP3 분석도구 : OllDbg110, IDA Pro, WinDbg 파일명 : w.php.exe MD5 : A1B3E59AE17BA6F940AFAF86485E5907 ZwConnectPort() 후킹 시그니처기반의휴리스틱짂단을우회하기위핚 Ntdll.ZwConnectPort() API 를후킹 Spoolsv.exe Memory Injection 메모리를핛당하여자싞의 DLL 이미지를로드하기위해 AddPrintProvider() 를이용하여 Spoolve.exe 에인젝션함 Driver Load Spoolsv.exe 에인젝션된코드는 TDL4 감염기능을수행함 %TEMP% 디렉토리에 TDL4 드라이버를 NtLoadDriver() 를이용하여해당드라이버를로드 Dropper 실행 (w.php.exe) OS 버전확인 ZwConnectPort() 후킹 Spoolsv.exe Memory Injection Driver Load Dropper 진행과정
스미스닛부트킷의특징 TDL 4 악성코드의형태와과정 로드된드라이버복호화 Ntoskrnl.exe 의 Image Address 획득 복호화한드라이버로드 로드된암호화복호화 복호화되어있는드라이버를복호화시킴 Ntoskrnl.exe 의 Image Address 획득 로드역핛을수행하기위하여얻어온주소값으로필요핚 API 주소를얻음 복호화핚드라이버로드 핛당핚메모리영역에 PE 파일형태로 TDL4 드라이버파일을생성하여드라이버로드 디스크넘버얻기 해당 C 드라이버의물리드라이버정보를이용해해당디바이스이름과핸들을얻어옴 디스크넘버얻기 언파티션드영역물리적주소얻기 SRB 를이용한물리적주소로데이터바로쓰기 PnpManager 를이용한디스크 IO 구성 Driver Object 생성및 Major Function 등록 Work Thread 및 LoadImage CallBack Function 등록 Atapi.sys Device Object 후킹 정상 MBR 백업및 SymbolicLink 설정 TDL4 드라이브로드과정
스미스닛부트킷의특징 TDL 4 악성코드의형태와과정 언파티션드영역물리적주소얻기 ZwDeviceIoControlFile() 을통하여언파티션드영역의위치를얻어옴 MBR PARTITION UNPARTITION SECTORS NOT USED 1 SECTORS ZwDeviceIoControlFile() IOCTL_SCSI_PASS_THROUGH_DIRECT 언파티션드영역의위치를얻어온다 디스크의읽기 / 쓰기권한 Typedef struct _SCSI_PASS_THROUGH_DIRECT { USHORT Length; UCHAR ScsiStatus; UCAHR PathId; UCHAR TargetId; UCHAR Lun; UCHAR CdbLength; UCHAR SenseInfoLength; UCHAR DataIn; ULONG DataTransferLength; ULONG TimeOutValue; PVOID DataBuffer; ULONG SenseInfoOffset; UCHAR Cdb[16]; } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
스미스닛부트킷의특징 TDL 4 악성코드의형태와과정 언파티션드영역물리적주소얻기 ZwDeviceIoControlFile() 을통하여언파티션드영역의위치를얻어옴 MBR PARTITION UNPARTITION SECTORS NOT USED 1 SECTORS ZwDeviceIoControlFile() IOCTL_SCSI_PASS_THROUGH_DIRECT 언파티션드영역의위치를얻어온다 디스크의읽기 / 쓰기권한 CDB(Command Descriptor Block) 타깃디바이스의데이터용량의정보를알수있음 Bit Byte 7 6 5 4 3 2 1 0 0 Operation code = 03h 1 LUN Reserved 2 Reserved 3 Reserved 4 Allocation length 5 Control
스미스닛부트킷의원리 TDL 4 악성코드의형태와특징 SRB 를이용핚물리적주소로데이터바로쓰기 읽기는 SCSI Read Commands 를이용하며, 쓰기는 _SCSI_REQUEST_BLOCK 구조체와 CDB 구조체를구성핚후 INTERNAL_DEVICE_CONTROL 을호출 IRP_MJ_DEVICE_CONTROL IRP_MJ_INTERNAL_DEVICE_CONTROL 어플리케이션과디바이스드라이버와인터페이스통싞을핛때 디바이스드라이버간의인터페이스통싞을핛때
스미스닛부트킷원리 TDL 4 악성코드의형태와특징 드라이버생성과 MajorFunction 에등록 IoCreateDriver() 를이용하여 TDL4 악성기능을수행하는 Driver Object 를생성하고 MajorFunction 에등록 Atapi.exe(FileSystem Mini Filiter Driver) Device Object 후킹 DiskIO 의 IRP 를가로채기위해 Atapi.sys 의 Device Object 구조체중하나의 Driver Object 를 TDL4 Driver Object 주소로교체함 Driver Object (Atapi.sys) Driver Object (TDL4 Driver) Atapi.sys Device Object TDL4 Physical Device Object Driver Object (Disk.sys) AttachedDevice
스미스닛부트킷원리 TDL 4 악성코드의형태와특징 디바이스은폐하기 자싞의디바이스를숨기기위하여 PnpManager 드라이버에자싞의디바이스를생성하고또다른디바이스를생성하여링크드리스트를수정하여은폐함 Driver Object (PnpManager) TDL4 Volume (PnpManger) Driver Object TDL4 Physical Device Object 0xCCCCCCCC Volume Parameter Block DeviceObject 0xCCCCCCCC RealDevice 0xBBBBBBBB 0xBBBBBBBB
스미스닛부트킷원리 TDL 4 악성코드의형태와특징 Work Thread 및 LoadImage CallBack Function 등록 ExQueueWorkItem() 을이용하여 Work Thread 를생성하고 Atapi.sys 의 StartIo() Major Function 을후킹하여 MBR 영역에접근하는 IO 에대해백업된 MBR 및 NULL 데이터를채워서보여줌 TDL4 를치료하기위해 StartIo 에대핚후킹을무력화하여도 PsSetLoadImageNotifyRoutine() 함수를이용하여등록된 CallBack 함수를호출하여 System Thread 에의해다시후킹됨 Atapi.sys () StartIo() MBR PARTITION UNPARTITION SECTORS Delete 백업된정상 MBR MBR PARTITION UNPARTITION SECTORS 감염된 MBR
스미스닛부트킷원리 TDL 4 악성코드의형태와특징 Work Thread 및 LoadImage CallBack Function 등록 ExQueueWorkItem() 을이용하여 Work Thread 를생성하고 Atapi.sys 의 StartIo() Major Function 을후킹하여 MBR 영역에접근하는 IO 에대해백업된 MBR 및 NULL 데이터를채워서보여줌 TDL4 를치료하기위해 StartIo 에대핚후킹을무력화하여도 PsSetLoadImageNotifyRoutine() 함수를이용하여등록된 CallBack 함수를호출하여 System Thread 에의해다시후킹됨 Atapi.sys () StartIo() MBR PARTITION UNPARTITION SECTORS Delete 백업된정상 MBR MBR PARTITION UNPARTITION SECTORS 감염된 MBR
스미스닛부트킷원리 TDL 4 악성코드의형태와특징 Work Thread 및 LoadImage CallBack Function 등록 ExQueueWorkItem() 을이용하여 Work Thread 를생성하고 Atapi.sys 의 StartIo() Major Function 을후킹하여 MBR 영역에접근하는 IO 에대해백업된 MBR 및 NULL 데이터를채워서보여줌 TDL4 를치료하기위해 StartIo 에대핚후킹을무력화하여도 PsSetLoadImageNotifyRoutine() 함수를이용하여등록된 CallBack 함수를호출하여 System Thread 에의해다시후킹됨 Atapi.sys () StartIo() MBR PARTITION UNPARTITION SECTORS 백업된정상 MBR MBR PARTITION UNPARTITION SECTORS 감염된 MBR
스미스닛부트킷원리 TDL 4 악성코드의형태와특징 정상 MBR 백업및 SymbolicLink 설정 임의로 MBR 을접근하였을때정상 MBR 을보여주기위해백업을하고 ZwCreateSymblolicLinkObject() 를이용하여 SymbolicLink 를생성하여유저모드에서언파티션드영역으로접근함 Driver Object (Atapi.sys) Driver Object (TDL4 Driver) Driver Object (PnpManager) Atapi.sys Device Object TDL4 Physical Device Object TDL4 Volume (PnpManger) Driver Object Driver Object (Disk.sys) AttachedDevice Volume Parameter Block SymbolicLink 를이용핚언파티션드영역접근 TDL4 드라이버설치및후킹작업을마친뒤다시 Spooler.exe 에서인젝션된코드로돌아온후 ZwOpenSymbolicLinkObject() 를이용하여링크되어있는언파티션드영역에접근함
파괴형부트킷 정의및소개 마스터부트레코드 (MBR) 을의미없는문자열로덮어씌우는형태로 부팅을불가능하게만듬 7.7 DDoS 3.4 DDoS 3.20 전산대란 6.25 사건
파괴형부트킷 대표사례소개 3.20 전산대란 2013 년 3 월 20 일대핚민국의주요언롞과기업의전산망이마비되고, 다수의 컴퓨터가악성코드에감염되어피해를입은사건 싞핚은행 hacker MBC 제주은행 농협생명 YTN KBS 농협은행 User
파괴형부트킷 3.20 전산대란악성코드의형태와과정 분석홖경 : Windows XP SP3 분석도구 : OllDbg110, HxD, API Monitor 파일명 : DarkSeoulDropper MD5 : 9263E40D9823AECF9388B64DE34AE54 드로퍼된파일목록 Dropper 실행 (DarkSeoulDropper.exe) 파일생성 alg.exe conime.exe ~ptr1.tmp AgentBase.exe alg.exe 원격접속을위핚실행파일 conmime.exe 파일젂송을위핚실행파일 ~ptr1.tmp 서버삭제명령파일 AgentBase.exe Windows 계열의 MBR, VBR 파괴 ~v3.log 파일 RunCmd.exe 악성코드에서 C:\Windows\temp\~v3.log 파일이있는지체크 ~v3.log 파일존재확인 악성코드실행 (AgentBase.exe) Dropper 진행과정
파괴형부트킷 3.20 전산대란악성코드의형태와과정 악성코드실행 (AgentBase.exe) 공격시간확인 해커가설정핚시간이될때까지기다림 프로세스종료 TaskKill 명령어를이용하여프로세스강제종료 Pasvc.exe AhnLab Policy Agent (AhnLab) Clisvc.exe Virobot ISMS (HAURI) OS 버전체크 해당 OS 버젂확인 MBR 파괴 VBR 파괴 공격시간확인 프로세스종료 (Pasvc.exe, Clisvc.exe) OS 버전체크 물리디스크체크 드라이브체크 재부팅 악성코드진행과정
파괴형부트킷 3.20 전산대란악성코드의형태와과정 물리디스크체크 / 드라이브체크 MBR 파괴단계 ZwOpenFile() ZwWriteFile() 재부팅 HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI MBR HASTATI 영역 HASTATI HASTATI 512 HASTATI Byte HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI HASTATI Shutdown r t -0 을이용핚재부팅유도 MBR 파괴 VBR 파괴 악성코드실행 (AgentBase.exe) 공격시간확인 프로세스종료 (Pasvc.exe, Clisvc.exe) OS 버전체크 물리디스크체크 드라이브체크 재부팅 악성코드진행과정
파괴형부트킷 3.20 전산대란악성코드감염전후 MBR 상태 [ 감염젂 ] [ 감염후 ]
파괴형부트킷 추가 ) 3.20 전산대란과 6.25 사건 항목 주요항목 세부항목 3.20 젂산대란 6.25 사건 주요특징 MBR 삭제, 데이터영역삭제 MBR 삭제, 데이터영역삭제파일삭제, MBR 에삭제코드를직접삽입 MBR 파괴코드위치악성코드자체에기능으로존재 MBR 코드를수정하여삭제코드를삽입 MBR 삭제 MBR 파괴방법 PRINCPES, HASTATI 등의문자열로덮어씀 랜덤문자열로덮어씀 MBR 파괴시점 특정시간까지대기후삭제 (3 월 20 일오후 2 시 ) 재부팅시삭제 실행파일인경우바로삭제 파일삭제 파일삭제방법 기능없음 그림, 비디오, 웹관렦파일인경우이름변경후삭제 이외의파일은쓰레기값으로덮어씌운후삭제 파일삭제시점기능없음감염즉시삭제 기타백싞제품프로세스강제종료바탕화면을특정그림파일로변경
결롞 부트킷의보안대책 스미스닛부트킷치료방법 Atapi.sys StartIo를원상복귀해주기위해 Work Thread 를찾아서원상복귀해주면됨 Atapi.sys Device Object의링크드리스트의조작을원상복귀시켜주면됨 파괴형부트킷치료방법 쓰레기값으로채워져있는 MBR 을백업해놓은정상 MBR 로덮어씌워주면됨 일반사용자들은감염여부조차확인핛수없을맊큼어려우므로치료또핚불가능함
결롞 부트킷의보안대책 일반 AntiVirus 의악성코드검사방식특성상부트킷을잡는것이어려움 MBR Protector AntiVirus
결롞 부트킷의보안대책 MBR Protector를이용 백싞회사에서는 AntiVirus 제품에옵션으로추가를하거나혹은따로제품으로출시를하였음 /
참조 스미스닛부트킷 forensicinsight(n0fate) Bootkit Threat Evolution in 2011 Contagio Blog TDL4 - Purple Haze (Pihar) Variant - sample and analysis AhnLab 감염된 MBR, TDL4를후킹핚다 파괴형부트킷 네이버뉴스 정부대응속수무책으로맊든 7.7 DDoS 2009.07.09 OhMyNews " 디도스공격, 7.7 대란보다짂화 "... 동일범소행? 2011.03.07 쿠키뉴스 3.20 젂산대란 은행도방송국도뚫렸다 2013.03.20 머니투데이뉴스 6.25 사이버테러 ' 디도스 정보파괴공격 ' 바꿨나 2013.06.27 보앆뉴스 앆랩, 하드디스크파괴악성코드상세분석결과중간발표 2013.06.28
QnA 문의사항 hakbaby92@gmail.com fb.com/hakbaby