Startup 디스크 포렌식 실습
악성코드 감염 PC 복구
사용 툴: FTK Imager, HxD, Python
※ 실제 PeTya 랜섬웨어 감염으로 인한 환경과 유사하다고 함
- 해당 실습은 생각하면 어렵고, 복구 방법에 초점이 되어있기 때문에 실습 그대로 진행해야함
- 해당 구조를 어떻게 만든건지 파악하고자 하면 PeTya 랜섬웨어 디버깅이 필요함...(복구 초점으로 Go)
- 위 그림은 실습파일의 전체 구조가 아닌 VMware 관련 헤더?를 제거한 후 FTK Imager에서 확인할 수 있는 구조
- VMware를 이용하여 부팅 시 위와 같은 화면이 나타남
- 감염 후 MBR 구조를 복구하기 위한 방법
1) XOR 암호화된 MBR을 XOR 복호화하여 MBR 획득
· 0x7000 위치에서 512byte 복사 후 0x37로 XOR 연산 후 정상 MBR 복원
· 정상 MBR을 0x7000으로 덮어씀
2) 악성 데이터가 덮어 쓰인 영역을 모두 0으로 채움
· 0x7200 옵셋에서 ~까지 모두 0으로 채움
1) XOR 암호화된 MBR을 XOR 복호화하여 MBR 획득
FTK Imager로 XOR된 기존 MBR
- FTK Imager에서 0x7000위치에서 512바이트 hex값을 복사하여 HxD를 열어 붙여넣음
악성 MBR
- 실습 과정에서 XOR 연산을 일괄적으로 할 수 있도록 변환 파일을 제공하고 이를 이용하여 정상 MBR 획득
복구된 MBR
- 정상 MBR 획득 후 HxD로 vmdk 파일을 열어 실제 위치로 덮어써야 하는데 여기서 중요한 건 어디다 붙여넣어야 하는지 찾아야 함
- 위치를 찾는 방법은 FTK Imager에서 악성 MBR 위치(0x0) 데이터 일부를 복사하여 HxD로 검색하여 찾음
FTK Imager에서 악성 MBR 일부 문자열 복사
HxD에서 복사된 일부 문자열 검색
검색 후 위치
- 위치(0x790000)에 획득한 정상 MBR 데이터를 붙여넣으면 1단계 끝
- 단순 실습이라 hex값과 친해지기 위해 파이썬 코드를 만들어봄
- 16진수 2자리를 받아서 0x37 값으로 XOR 연산을 일괄적으로 할 수 있도록 짬
(방법: 악성 MBR 512바이트를 hex값으로 복사 후 txt 파일로 저장 후 파이썬 코드 실행하면 result.txt 떨어짐)
2) 악성 데이터가 덮어 쓰인 영역을 모두 0으로 채움
- 모두 0으로 덮어쓰는 이유는 MBR 시작위치에 첫 번째 파티션(BR영역)이 시작되기 전까지의 모든 영역은 예약영역으로 모두 0으로 고정되어 있기 때문
- MBR의 위치는 15488 섹터이고 15489의 시작 옵셋(0x790200) - 15,545 섹터 옵셋(0x797201)까지 모두 0으로 변환
- 마지막 설명이 좀 부족하긴 하지만 단순히 넣는 방법을 실습해보았음
정리
1) 툴 사용에 조금 더 익숙해지고, 여러 사례를 보는 입장이기 때문에 단순 실습이라 해도 도움이 됨
2) 의문점: 복구된 MBR과 BR의 떨어진 섹터는 0x800인데 이를 계산하면 0x890000 = 0x790000 + 0x100000 이어야 함(문제를 만드는 과정에서 발생된 건지... 책에서도 갑자기 단순하게 0으로 넣기만 하라고 나와서 당황)
'Computer > #Go2 포렌식' 카테고리의 다른 글
Disk Forensic 이론 #1 - FAT (0) | 2018.09.26 |
---|---|
Filesystem Recovery (NTFS) - MBR Recovery (0) | 2018.08.18 |
Filesystem Recovery (NTFS) - HASTATI (0) | 2018.07.22 |
Filesystem Recovery (NTFS) (0) | 2018.07.21 |
Filesystem Recovery (FAT32) (0) | 2018.07.21 |