기술문서 13. 10. 31. 작성 320 사이버대란복구 2013-04-30 fatapple
목차 1. 개요...3 2. 복구...4 2.1 MBR... 4 2.2 VBR... 9 2.3 복구 Tool...13 3. 결론... 16 4. 참고문헌... 17 2
1. 개요 이번 320 사이버대란에서주관심사는손실된저장매체의 Data였다. 피해를입은여러기업의 PC들의 Data가손실되고부팅이되지않은것때문에더욱더관심을가진것같다. 그래서이번기회에 Data 복구에대한보고서를쓰고자한다. Data 복구를근본적인복구방법으로접근하는것이아닌 320 사이버대란에중점을두어기술하였다. MBR 과 VBR 을파괴하는악성코드였으므로 MBR 과 VBR 에대한설명과어떤식으로파괴되었 는지에대해알아보았다. 3
2. 복구 2.1 MBR MBR 은 Master Boot Record 의약자로저장매체의가장첫번째섹터에있는영역이다. [ 그림 2.1. MBR 구성 ] 위의그림과같이이 MBR 영역은 512 Byte 의크기를갖고있으며부트코드, 파티션테이블, 시그니처정보로구성되어있다. 4
[ 그림 2.2. 실제 MBR 영역 ] 위의그림은실제시스템의 MBR 영역이다. Offset 0 부터 0x1BD 까지가부트코드이고 Offset 0x1BE 부터 0x1FD 까지가파티션테이블이다. 그리고 Offset 0x1FE 부터 0x1FF 까지가시그니처이 다. MBR 영역의부트코드는파티션테이블을처리하는명령어와운영체제위치를확인하는명 령어들로구성되어있다. 컴퓨터가초기에부팅되는과정에서 Power On Self Test 과정을거쳐 MBR 영역의부트코드를실행하게된다. 이때부트코드는부팅가능한파티션의첫번째섹 5
터를찾고, 특정운영체제코드를실행한다. [ 표 2.1. MBR 구성 ] 부트코드다음에있는항목은파티션테이블이다. 파티션테이블은총 4개의파티션테이블엔트리로이루어져있으며한엔트리당 16 Byte로구성되어있다. 각테이블엔트리는 CHS와 LBA 주소로파티션의크기를나타낸다. CHS 주소는 8GB 이하의디스크에서사용하고 LBA 주소는 TB 크기의디스크까지사용가능하다. 요즘은대다수의저장매체가 8GB 이상이므로 CHS 주소는사용하지않는다. 6
[ 표 2.2. 파티션테이블엔트리 ] 부팅플래그의경우 0x00 값이나 0x80 의값을갖는데, 0x00 은부팅에사용되지않는파티션을 나타내는플래그값이고 0x80 은시스템파티션을나타내며부팅이가능한파티션이라는것을 나타내는값이다. Offset 0x01~0x03 과 0x05~0x07 은파티션의시작과끝을 CHS 주소로표현하고있는필드이다. 이필드들은윈도우 2000 이후부터는사용되지않는필드들이다. 하지만일부파티션분할도 구들에서호환성을위해 CHS 주소필드와 LBA 주소필드를모두설정하는경우가있다. Offset 0x04 의값은해당파티션의타입을나타낸다. 파티션타입별값은참고문헌을참고하 면된다. 마지막으로 Offset 0x08~0x0B와 0x0C~0x0F는파티션의시작을주소와해당파티션의섹터크기를나타낸다. 위의 MBR 그림을보면활성파티션의테이블엔트리에서파티션의섹터크기는 0x01DF9650이다. 1섹터는 512Byte이므로해당파티션의크기는 16,092,274,688 Byte 약 15GB 라는것을계산할수있다. 그리고파티션의시작주소를나타내는필드는사실섹터의위치이다. 위의예에서는이크기가 0x38인데이는 0x38번째의섹터라는뜻이다. 즉, 0x38번째섹터부터가첫번째파티션의시작이란뜻이다. 그래서 0x38 * 512를하면 0x7000이란 Offset 이나온다. 이는첫번째파티션의시작 Offset이 0x7000이라는뜻이다. 7
MBR 영역의부트코드는활성파티션 (0x80) 을찾아해당파티션의첫번째섹터 ( 부트섹터 ) 를 호출한다. 8
2.2 VBR VBR은 Volume Boot Record의약자로보통부트레코드라한다. 이부트레코드영역은 Windows 운영체제를부팅시키기위한코드와여러설정값들이존재한다. 이영역은 Windows 운영체제가 NTFS 파일시스템을인식하기위한영역이기때문에이영역이망가지면해당볼륨을인식할수없다. 부트섹터에는현재파티션에서찾아야될부트매니저를명시해놓는다. 부트섹터의코드에 서는해당부트매니저를찾아실행시키는역할을한다. [ 그림 2.3. VBR 구성 ] 위의그림은설치되어있는윈도우운영체제가 XP 인경우의부트레코드의항목별값이다. VBR의크기는클러스터크기와동일하다. VBR의첫번째섹터에는위와같은정보들이있고나머지섹터에는 NTLDR을빠르게로드하기위한 NTLDR에대한정보와추가부트코드들이기록되어있다. 9
[ 그림 2.4. 실제 VBR 영역 ] 위의그림은 VBR 의첫번째섹터를캡쳐한것이다. 첫번째블록은점프코드이다. 해당점프 코드명령 (2 Byte) + 0x52 Byte 인 Offset 0x7054 로점프하라는뜻이다. MBR 영역의부트코드에 의해 VBR 의첫주소부터실행이되는데첫코드가점프하라는코드인것이다. 두번째블록은 OEM ID 라는것으로 NTFS 라는문자열과공백 4 개를뜻한다. 그다음빨강색블록이바로 BPB(Bios Parameter Block) 이다. 해당볼륨을운영체제가인식하도 록하기위해서는이 BPB 블록을제대로맞춰줘야한다. 10
Offset 설명 0x00 0x01 섹터의크기 0x02 0x02 클러스터당섹터수 0x03 0x03 부팅디스크의 ID 0x04 0x05 세그먼트증가값 0x06 0x09 섹터지정인덱스값 0x0A 0x0A Media Descriptor 0x0B 0x0C 1섹터를몇번읽을건지를나타냄 0x0D 0x0E 트랙당섹터수 0x0F 0x10 헤드의개수 0x11 0x14 예약된섹터개수 0x15 0x18 Reserved 0x19 0x1C 항상같은값이어야함 ( 고정값 ) 0x1D 0x24 총섹터수 0x25 0x2C MFT의시작클러스터값 0x2D 0x34 MFT의복사본위치 0x35 0x35 MFT Record 크기 0x1 ~ 0x7F : MFT Record당클러스터수 0x80 ~ 0xFF : MFT Record의크기 0x36 0x38 Reserved 0x39 0x39 인덱스버퍼당클러스터개수 0x3A 0x3C Reserved 0x3D 0x44 NTFS Volume Serial Number 0x45 0x48 무조건 00 00 00 00 [ 표 2.3. VBR 영역구성 ] 11
VBR 의부트섹터 (VBR 의첫섹터 ) 의경우에는각볼륨의마지막섹터에백업되어있는경우가 있다. [ 그림 2.5. 백업되어있는부트섹터 ] 위의그림과같이볼륨의마지막섹터에 VBR 의부트섹터가백업되어있는경우가있을수 있다. 12
2.3. 복구 Tool 이번에분석한 3.20 샘플악성코드는 XP에서 MBR을덮고 VBR로부터 200개의섹터를특정문자열로덮는다. 이경우에는 MFT 레코드의일부가손상된다. 이렇게 MFT 레코드가손상된경우에는수동으로복구하는것은시간이오래걸리기때문에복구 Tool을이용해복구하는것이편하다. Forensic-Proof 사이트에서소개한 Power Data Recovery 라는도구를사용해복구해봤다. [ 그림 2.6. 데이터복구 Tool ] 실행을시키면위와같이여러개의복구메뉴가보인다. 악성코드에감염된컴퓨터에서 Damaged Partition Recovery 메뉴를선택하면아무것도보이지않는다. 13
[ 그림 2.7. Damaged Partition Recovery 메뉴 - 파티션정보 X ] 위의그림처럼손상된파티션을선택하고싶어도목록에나타나지않는다. 이는파티션과관련된정보가사라졌기때문이다. 이프로그램은 MBR 영역의파티션테이블엔트리정보를참고하는것같다. 원본 MBR 영역과동일하게복구를시켜주면 Damaged Partition Recovery 메뉴에서파티션을찾을수있다. [ 그림 2.8. Damaged Partition Recovery 메뉴 파티션정보 O ] 14
리스트에서보이는파티션을선택하고 Full Scan 을하면아래와같이손상된파일과모든파일 들을불러온다. [ 그림 2.9. Full Scan 결과 ] 그런데이 Tool의 Damaged Partition Recovery 와 Lost Partition Recovery 메뉴의차이는파티션을자동으로찾아주느냐안찾아주느냐의차이밖에는없는것같다. Damaged Partition Recovery 는파티션정보가없으면보이지않지만 Lost Partition Recovery 메뉴는 MBR 영역의파티션테이블정보가없어도파티션목록이보인다. 위의 Tool 을가지고데이터를복구할수있고, MBR 과 VBR 을모두복구해주면부팅도가능하 게된다. MBR 과 VBR 의복구는동일한환경의시스템 ( 파티션정보, 윈도우운영체제 ) 에있는 MBR 과 VBR 을가져오면운영체제가파티션을인식할수있다. 15
3. 결론 이번 3.20 사이버테러악성코드에피해입은 PC 의수는상당하다. 악성코드를분석할때는피해입은 PC 를전혀복구할수없을것같았다. 특히, Windows 7 의경우에는사용자의파일들의내용을다른내용으로덮었다가삭제하였기때문에복구할수없을것같았다. 하지만 MFT 레코드를통해파일이복구가능한것을알았고이를이용해자동복구해주는 Tool 에대해알게되었다. 이번사이버테러에사용된악성코드의주된특징은 MBR 과 VBR 영역을덮어버리는것이다. 이로인해부팅이되지않는현상이나타나일반인들이더많은관심을가졌던것같다. 그래서이와관련된 MBR 과 VBR 에대해공부하고정리할수있는기회가되었다. 16
4. 참고문헌 MBR, VBR, 복구관련내용 - http://forensic-proof.com/ 17