CTF-D/Disk

[Disk] 파일에서 플래그를 찾아라

Ron Weasley 2022. 2. 5. 13:04
728x90

CTF-D 사이트에 있는 Disk 카테고리에 "파일에서 플래그를 찾아라" 를 풀어보겠습니다.

문제를 먼저 보겠습니다.

주어진 파일에서 플래그를 찾는 문제인거 같습니다. 파일을 다운 받아보겠습니다.

이러한 이름을 가진 파일을 찾아볼 수 있는데요, 확장자를 알 수 없습니다. 그래서 리눅스로 파일을 들고가 file 명령어를 통해서 파일 유형을 한번 봅시당.

$ file [파일명]

XZ파일로 되어 있는것을 확인할 수 있습니다. 그래서 UNXZ을 이용해서 압축을 해제하겠습니다.

$ unxz [파일명]

물론 뒤에 .xz를 추가해주셔야 압축 해제가 됩니다.

압축을 해제 한 뒤 다시 file 명령어를 통해서 파일 유형을 살펴봅시다.

$ file [파일명]

7-zip으로 된 압축 파일인것을 알 수 있습니다. 그래서 Windows 환경에서 7-zip을 열 수 있는 7zip file manager를 설치하여 살펴보겠습니다. 7zip file manager는 그냥 알집처럼 7-zip알집 소프트웨어입니다.

 

다운을 다 하셨으면 칼리에서 추출한 파일로 분석을 시작하겠습니다.

7-zip을 제대로 설치 하셨다면 다음과 같이 파일을 우클릭하면 7-zip으로 나와야합니다.

7-zip을 클릭하면 압축파일 열기가 있으니까 그걸로 파일을 여시면 됩니다. 그럼 이렇게 나옵니다.

7zip file open

여기서 압축풀기를 하지 않아도 안에 파일을 볼 수 있습니다. 바로 저 파일을 더블클릭하면 다음과 같이 7z확장자를 가진 압축파일을 볼 수 있습니다.

압축 파일을 보면 001 ~ 016까지 존재하는데, 한 가지 의문점이 있습니다. 바로 압축 파일의 크기인데요...처음에 다운 받았던 파일의 크기는 12KB밖에 되지 않았는데, 저렇게 만은 4.2GB압축파일이 12KB가 되는것이 이상합니다. 그래서 구글에서 검색을 해본 결과, zip bomb이라는 키워드를 봤습니다.

 

zip-bomb란?

  압축 해제 폭탄으로 불리며, 프로그램이나 시스템이 읽을 때 충돌하거나 시스템을 마비 시키는 악의적인 컴퓨터 압축 파일입니다. 이 파일은 바이러스가 침입하기 편하게 백신 소프트웨어를 꺼버리는 역할을 합니다. 즉, 사용자의 의심을 피하기 위해서 적은 용량으로 압축된 상태의 파일을 압축을 푸는 순간 파일의 용량이 시스템에서 버티지 못할만큼 대량의 데이터가 쏟아져 컴퓨터를 못쓰게 만들어 버리는 것 입니다.

 

본론으로 저기 많은 zip-bomb들 중에서 이상한 부분이 하나 보이는데, 바로 CRC(cyclic redundancy check)라고 데이터를 전송할 때 전송된 데이터에 오류가 있는지 확인하기 위한 고유 번호입니다.

 

013.7z만 CRC가 다른것으로 보아 저 압축파일을 해제하겠습니다.

그냥 더블클릭하면 알아서 해제됩니다. 압축이 해제되었으면, 또 다시 zip-bomb이 나옵니다.

이번에도 16개의 압축 파일 중 1개만 CRC가 다른것을 확인할 수 있었습니다. 그래서 또 다른 CRC를 가진 압축 파일인 0009.7z만 압축을 풀어보겠습니다. 압축을 풀어보니 또 zip-bomb이 나오네요...

 

이렇게 생각해보니 zip_bomb이 어마무시한 대용량을 지니고 있는게 느껴지네요...사실 zip_bomb 논문을 살짝 봤는데, 64bit로 압축파일이 되어 있으면 처음에 봤던 확장자가 없는 파일이 45MB가 되는데, 압축을 풀면 4.5PB가 된다네요...

난중에 기회가 된다면...연구를 좀 해보겠습니다!!

 

뭐 잡다한 얘기는 그만하고 계속해서 CRC가 다른 압축파일을 볼 수 있는데, 계속 압축을 풀어보면 다음과 같은 파일이 나옵니다. 순서는 13 -> 9 -> 7 -> 8 로 4번을 풀면 파일이 나옵니다.

이 부분도 마찬가지로 CRC가 다른 8번을 봐야하는데, 7z확장자가 아니라 하나의 파일입니다. 그래서 7-zip에서 드래그 앤 드롭 기능을 가지고 bomb_08 파일을 추출으로 해도 되고, 뭐 압축을 풀어도되고! 다양하게 저 파일만 풀어봅시다! 

 

파일을 추출했으면, hxd에디터로 열어보겠습니다.

다 NULL값이라 참 황당합니다...그래서 예전에 풀었던 플래그값인 ASIS를 찾기 해봤습니다. 그러니까 플래그값을 구할 수 있었습니다.

이렇게 플래그 값을 유추할 수 있으면 해도 되는데, 사실상 얻어 걸린거기 때문에...리눅스로 파일을 들고가서 strings << 명령어를 이용하여 플래그 값을 추출할 수 있습니다.

$ strings [파일명]

FLAG : ASIS{f974da3203d155826974f4a66735a20b}

 

-Reperence-

디지털 포렌식 with CTF

728x90