MBR과 FAT 구조를 알면 쉽다
MBR 구조 - http://galid1.tistory.com/56
FAT 32 구조 - http://galid1.tistory.com/159
시나리오
1. 가상의 디스크 파일을 하나 준비한다
2. 해당 디스크파일에서 삭제된 파일들을 복원한다.
가상 디스크파일 만들기
하드디스크 및 파티션 -> 동작탭 -> VHD 만들기 -> VHD 분리
과정
1. 가상 디스크 파일 만들기
하드디스크 및 파티션만들기로 들어가 VHD 만들기를 선택한다.
Test.vhd를 만든다
1GB 크기로 지정
생성된 디스크2를 MBR로 초기화 한다.
디스크 파티션이 완료되었다.
생성된 파티션에 각각 파일들을 넣고 조금 기다린 후 지운다 (생성후 바로 지운다면 포렌식이 남지 않을 수도 있다.)
작업이 완료된 가상 디스크 파일을 분리한다
만들어진 가상 디스크 파일이다.
2. MBR 정보 파악
1) Hexedit에 디스크 이미지 넣기
Hexedit 을 실행하여 기타설정탭의 디스크 이미지 열기를 누른다
준비한 가상 디스크파일을 추가한다.
2) MBR 파악
*MBR 데이터구조
범위 (Byte Range) | 설명 (Decription) | 크기 (Size) | |
10 진수 | 16 진수 | ||
0 – 445 | 0x0000 – 0x01BD | Boot code | 446 bytes |
446 – 461 | 0x01BE – 0x01CD | Partition table entry #1 | 16 bytes |
462 – 477 | 0x01CE – 0x01DD | Partition table entry #2 | 16 bytes |
478 – 493 | 0x01DE – 0x01ED | Partition table entry #3 | 16 bytes |
494 – 509 | 0x01EE – 0x01FD | Partition table entry #4 | 16 bytes |
510 – 511 | 0x01FE – 0x01FF | Signature (0x55AA) | 2 bytes |
445 Byte까지 Boot Code 영역이다
3) 파티션 테이블 파악
*파티션 데이터 구조
446 Byte 부터 16Byte 씩 하나의 파티션에 해당한다
우리는 2개의 파티션만을 했으므로 446Byte 부터 16Byte씩 2개의 영역만을 파악하면 된다
LBA Address는 해당 파티션의 파일시스템 BR이 시작하는 Sector 주소를 의미한다
첫번째 파티션의 LBA : 0x 00 00 00 80 => 128 Sector
두번째 파티션의 LBA : 0x 00 10 00 80 => 1,048,704 Sector
계산된 LBA 주소를 10진수로 바꾸면 Sector의 위치가 나온다
(Sector : 128)
계산된 LBA 주소를 10진수로 바꾸면 Sector의 위치가 나온다
(Sector : 1048704 Sector)
3. FAT32 파일시스템 구조 파악
1) BR 분석
128 Sector로 이동하면 해당 파티션의 시스템파일의 BR이 나온다
11 12 번째 바이트는 섹터당 바이트수를 의미한다
(0x 200 = 512 Byte)
13번째 바이트는 클러스터당 Sector를 의미한다
(0x08 = 8Sector)
14 15 번째 바이트는 예약된 영역(Sector 단위)을 의미한다
(0x18 0E = 6158 Sector)
37번째 바이트부터 4바이트는 FAT 32의 사이즈를 의미한다.
(0x3F9 = 1017 Sector)
2) Root Directory 위치 구하기
RootDirectory Addr = BR + Reserved + FAT1 + FAT2
(128 + 6158 + 1017 + 1017 = 8320 Sector)
8320 Sector로 이동하면 해당 파티션의 RootDirectory Entry가 보인다
3) Root Directory 분석
2줄씩 하나의 파일에 대한 Root Directory 데이터 이다.
*1번째 파일
1) 파일의 위치
다음의 2바이트는 다음 파일이 위치한 오프셋이다
클러스터 단위이며 시스템에서 2개의 클러스터는 사용한다
(Cluster = 0x0006 - 2(10진수) => 4(10진수)
오프셋 = (6-2) * 8
(클러스터당 8개의 섹터로 이루어져 있으므로)
파일의 위치 = 8320 + 32 = 8352
2) 파일의 사이즈
다음의 4바이트는 파일의 사이즈를 의미 한다
(0x101 = 257Byte)
4) 파일 뽑아내기
우선 파일의 위치로 이동한다(8352 Sector)
우측 마우스 클릭하여 블록선택을 누른다
오프셋 종료를 -> 길이로 바꾸고
10진수를 체크한다
그다음 파일의 사이즈를 입력한다
블록 선택된 파일을 복사한뒤 (Ctrl + c)
파일탭의 새로 만들기를 클릭
새로 만든 파일에 복사한 파일블록을 붙혀넣는다
원본 파일의 형식으로 저장한다(Root Directory 정보에 보면 파일의 형식을 찾을 수 있다.)
기존 파일이 그대로 복원 되었다.
'Security' 카테고리의 다른 글
보안 - 리버스 텔넷 nc (0) | 2018.11.29 |
---|---|
보안 - 연결유지, 권한상승 (0) | 2018.11.28 |
보안 - 관련 자료 (0) | 2018.11.28 |
보안 - Client Side 공격 - 수정필요 (0) | 2018.11.26 |
보안 - 디스크 포렌식 임의의 파일 생성(FAT 32) - 수정중 (0) | 2018.11.05 |