2021 고등학생 사이버 보안 경진대회(Digital forensic - PartitionMan)
Capture The Flag/CTF 제작

2021 고등학생 사이버 보안 경진대회(Digital forensic - PartitionMan)

문제 소개

 

2021 고등학생 사이버 보안 경진대회에 출제했던 PartitionMan 문제 제작에 대해 포스팅해보겠습니다.

 

문제 이름 : PartitionMan

문제 기술 : 파티션을 복구하고 플래그를 찾으시오. ADCTF{FLAG}

문제 분야 : Digital forensic

문제 의도

  1. BR과 BR 백업본이 모두 없을 때 FAT32 BR을 복구할 수 있는가?
  2. BR과 BR 백업본이 모두 없을 때 NTFS BR을 복구할 수 있는가?
  3. PowerShell Log 가 저장되는 경로를 알고 있는가?

 

BR과 BR 백업본이 모두 없어 파티션이 인식되지 않는 이미지 파일을 제공해주고 파티션을 복구한 뒤 파워쉘 로그를 확인하면 플래그를 얻을 수 있도록 의도한 문제입니다.

단순 파티션 복구는 기존에 많이 다뤄진 유형이라 BoB에서 배웠던 기술을 접목시켜서 제작한 문제입니다.

FAT32 파티션을 인식시키면 압축 파일의 암호가 저장된 파일이 나오고 NTFS 파티션을 인식시키면 암호가 걸린 압축 파일을 획득할 수 있도록 설계했습니다.

해당 압축 파일에는 파워쉘 로그를 확인하도록 유도하는 파일을 넣어두어 최종적으로 파워쉘 히스토리를 확인하면 플래그를 얻을 수 있는 문제입니다.


문제 설계

 

Windows 10

 

PowerShell을 사용하기 위해 Windows 10 환경에서 작업을 했습니다.

 

PowerShell에 플래그 입력

 

위와 같이 파워쉘에서 플래그를 입력해줬습니다. 내용은 어벤저스 엔드게임의 일부 장면 중 나오는 대사입니다ㅋㅋ

 

PowerShell History

 

%User Profile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine

파워쉘의 히스토리는 위 경로에서 확인할 수 있습니다.

 

파티션 추가

 

그리고 C 볼륨을 축소시켜서 FAT32 파일시스템을 사용하는 볼륨 B를 새로 할당해줬습니다.

 

압축 파일의 암호 파일

 

FAT32 파일시스템을 사용하는 볼륨에 압축 파일의 암호가 저장된 파일을 생성했습니다.

 

최종 플래그 힌트 파일

 

NTFS 파일시스템을 사용하는 볼륨에 최종 플래그 힌트 파일을 넣어두고 암호를 설정했습니다.

VM 환경에서 해야 할 작업은 여기까지 입니다.

 

vmdk 파일 FTK Imager에 마운트

 

디스크 정보가 저장되어 있는 vmdk 파일을 FTK Imager에 마운트합니다.

 

Raw 포맷으로 이미징

 

vmdk 파일에는 가상머신의 구조도 함께 포함이 되어 있으므로 깔끔하게 볼 수 있도록 raw 포맷으로 다시 이미징했습니다.

 

NTFS BR 위치

 

MBR에서 BR의 위치를 직접 계산하는 방법도 있지만 FTK Imager에서 파티션을 선택하면 BR 시작 위치를 쉽게 알 수 있습니다.

 

HxD에서 NTFS BR 위치 찾기

 

HxD에서 도구->디스크 이미지 열기를 통해 섹터 네비게이터를 사용할 수 있습니다.

FTK Imager에서 확인한 104,448 섹터를 가보면 BR 데이터가 존재하는 것을 알 수 있습니다.

 

NTFS BR 데이터 삭제

 

NTFS BR 데이터를 0으로 덮어씌워 파티션이 인식되지 못 하도록 해줍니다.

 

NTFS 백업 BR 위치

 

NTFS 파일 시스템은 파티션의 마지막 섹터에 BR 백업 본을 저장하고 있습니다.

MBR에서 마지막 섹터 위치를 계산할 수도 있지만 FTK Imager에서 파티션을 선택하고 스크롤을 제일 밑으로 내리면 파티션의 마지막 섹터를 확인할 수 있습니다.

 

BR 백업 데이터 삭제

 

마찬가지로 HxD에서 NTFS BR 백업 본의 데이터를 덮어씌워 줍니다.

이로써 NTFS의 BR과 백업 BR의 데이터를 모두 지웠습니다.

 

FAT32 BR 위치

 

FAT32 파일 시스템의 BR 위치도 같은 방법으로 확인해주면 됩니다.

 

FAT32 백업 BR 위치

 

FAT32 파일 시스템은 NTFS와 달리 BR 백업 본을 BR 주소 + 6을 한 섹터에 저장하고 있습니다.

35,663,872+6=35,663,878

 

NTFS 작업했던 것처럼 HxD로 FAT32의 BR, 백업 BR의 데이터들을 덮어씌워서 인식되지 못하도록 하면 됩니다.

 

인식되지 않는 파티션

 

NTFS, FAT32 모두 작업이 끝나면 FTK Imager에 해당 이미지 파일을 다시 마운트했을 때 파티션이 인식되지 않는 것을 알 수 있습니다.

마지막으로 Raw 포맷은 파일의 크기가 크기 때문에 E01 포맷으로 다시 이미징해서 참가자에게 제공해주면 됩니다.

 


PartitionMan 문제 제작은 여기까지입니다.

참가자의 입장에서 봤을 때 파티션이 인식되지 않는 이미지 파일이 주어지게 되는 것입니다.

파티션의 BR과 BR 백업본이 없는 상태에서 파티션을 인식시킬 수 있는지가 핵심인 문제였습니다.

이번 문제는 대회 당일 날 풀었던 팀이 한 곳도 없는 no solve 문제였습니다.

해당 상황에서 파티션을 인식시키는 방법은 추후에 파일 시스템 카테고리에서 다뤄보겠습니다.