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

+ Recent posts