CTF-D 문제를 풀다가 어렵기도 하고, 이게 뭔가...하고 막히는 것이 있어서 글을 작성하게 되었어요!
※ 주의 !
문제를 제 스스로 해결하려고 푼거라 글이 길고 뒤죽박죽 또는 오락가락 합니다..ㅎㅎ
해답만을 찾고 싶으시다면 구글에 검색하여 더 나은 풀이를 찾으시는게 좋을 것 같아요!
그럼 '플래그를 찾아라!'라는 문제를 볼게요. : )
버튼을 눌러 dump1.raw.lzma 파일을 다운받아 볼게요.
확장자 .lzma은 압축파일 입니다. 처음에 lzma가 몰라서 해맸습니다ㅠㅠ 파일 확장자는 많이 알아야하는 듯..
(확장자 .lzma에 대한 자세한 설명은 https://ko.wikipedia.org/wiki/LZMA 참고해주세요!)
이 파일을 반디집 or 7zip으로 풀어줍시다.
안에 들어있는 dump1.raw라는 파일을 어서 확인해봅시다.
저는 항상 파일을 분석할 때에 HxD 프로그램 or 디버깅 프로그램을 이용해 파일을 열어 분석합니다.
파일 분석을 할때에 파일 시그니처에 대해 알면 확장자를 찾는데 좀 수월합니다.
forensic-proof 사이트에 포렌식에 대한 유익한 글이 많잖아요? 그 중 파일 시그니처에 대한 내용이 있습니다.
※ 파일 시그니처 : 파일 매직 넘버라고도 불리며, 파일의 처음 부분(Header)과 마지막(Footer) 부분에 Hex 값으로 파일의 시그니처를 표현하여 파일의 확장자를 알 수 있다.
http://forensic-proof.com/archives/300
위 사이트를 참고하여 파일의 시그니처를 확인 후 확장자를 알 수 있었습니다.
맨 처음 부분(Header Signature)를 복사한 뒤 http://forensic-proof.com/archives/300 로 이동하여 Ctrl + F를 눌러 복사한 Hex 값을 검색합니다.
이렇게해서 확장자를 찾았습니다!
Linux 실행 프로그램이네요? 그런데 여기서 제가 간과한 점이 있었습니다....
"root@siftworkstation:/CTF/google/# vol.py -f dump1.raw --profile=Win10x64 memdump -p 4092 -D ./"
위 문구를 자세히 보면 사용된 파일은 .elf가 아니고 .raw의 확장자를 가진 파일입니다...
제가 문제를 자세히 안보고 진행했다는 것을 엿보면서 반성했어요ㅠㅠ
다시 돌아가서 입력 문구를 제대로 살펴봐서 어떠한 문제인지 추측을 해봅시다ㅠㅠ
1. 리눅스 계열의 프롬프트를 사용
2. root는 사용자명 ,siftworkstation는 호스트 명
3. /CTF/google/#(?) 폴더의 vol.py를 이용하여 dump1.raw를 분석
siftworkstation이라는 호스트가 무엇인지, 접속하는 것인지 하고 Putty며 이런저런 방법을 동원하다가 siftworkstation이 바로 우분투를 통해 다양한 포렌식 도구를 사용할 수 있는 소프트웨어라는 것을 알게 되었습니다!!
====> "SIFT Workstation 설치를 진행!" (설치를 도와줄 수 있는 관련 사이트는 블로그에 모아놨고 검색하면 많아요!)
위와 같이 환경을 구축 후 문제와 같이 "vol.py -f dump1.raw --profile=Win10x64 memdump -p 4092 -D ./"를 입력해주면 "vol.py라는 명령어를 찾을 수 없다"는 에러메세지를 확인할 수 있습니다.
vol.py 명령어를 사용하기 위해 vol.py를 설치하도록 합니다. vol.py는 Volatility 메모리 포렌식 도구 입니다.
https://cpuu.postype.com/post/2189640 << 사이트를 참고하여 설치를 진행하였습니다.
저는 CTF폴더에 dump1.raw 파일이 존재하므로 다음과 같이 입력하였습니다.
"vol.py -f /home/seongmin/바탕화면/CTF/dump1.raw --profile=Win10x64 memdump -p 4092 -D ./"
명령문을 실행하고 나면 내 폴더에 4092.dmp 파일이 존재하는 것을 확인할 수 있습니다!
그런데 아직 모르는게 많습니다.
? -> 왜 Pid는 4092인가
? -> 추출된 4092.dmp는 무엇인가
자세히 분석하기 위해 설치한 Volatility로 분석해봅시다. (WIndows도 가능하다고 하네요!)
https://aaasssddd25.tistory.com/52?category=617817
위 사이트를 참고하여 Volatility 사용법을 익혔습니다.
먼저 처음에 memdump 명령어를 사용하면서 왜, 어떤 것이 pid가 4092 인지 몰랐었죠?
그래서 확인하기 위해 pstree 또는 pslist 명령어를 사용하여 Pid를 찾아주면서 사용된 프로그램을 확인해줍니다.
'mspaint.exe'라고 하면은 우리가 흔히 알고있는 그림판이 되겠네요! -> Pid 4092 궁금증 해결
(TMI : 그래서 저는 보통 그림판 열 때 Win + msp 입력합니다ㅋㅋㅋ)
그렇다면 메모리 덤프한 파일이 그림판 프로세스 파일이 될텐데 이걸 어떻게 여느냐가 이제 관건이 되겠네요.
이렇게 저렇게 해매던 도중 'mspaint.exe dump file open' 라고 구글링한 결과 덤프 파일에서 사진을 추출할 수 있다는 글을 발견하였습니다.
(링크 : https://w00tsec.blogspot.com/2015/02/extracting-raw-pictures-from-memory.html)
바로 GIMP를 설치해줍니다. 저는 포터블 버전을 애용하니 포터블로 다운받았습니다ㅎㅎ
(GIMP 포터블 다운 : https://portableapps.com/apps/graphics_pictures/gimp_portable/ )
앞서 내용에서 나왔듯이 4092.dmp 파일을 4092.data로 변경해주어 GIMP에서 열어보도록 하겠습니다.
(운영체제 환경은 Windows 10 입니다.)
화면이 뜬 것만으로도 일단 너무 기쁨니다. GIMP는 이미지 편집 프로그램이므로 한번 조정해봅니다.
Offset을 조정하면서 무언가 나오면 가로, 세로 살짝씩 조정하면 될거같아요ㅋㅋㅋ
약간 글씨같은게 보입니다. 저 옵션을 이리저리 세개 살짝살짝씩 조정해주면 될거같아요.
조정해서 나온 것이 저건데.. 그림이 거꾸로 되어있습니다. 혹시나 제대로 된 그림이 있을까하고 찾아봅니다.
다시 Offset 조정하면서 그림이 튀어나오면 가로, 세로 조정합니다. (가로만 조정해도 될 거 같아요)
여러번 조정 끝에 겨우 찾았습니다..!
그림판으로 좌우대칭했습니다...ㅋㅋ
이렇게해서 Flag = CTF{HeRe_GoEs_thE_FLaG} 가 되겠네요!
이상으로 포스팅 마치겠습니다~
부족한 글 끝까지 봐주신 분들 감사합니다!
댓글로 피드백 주시면 정말 감사합니다~ : )
'Challenge' 카테고리의 다른 글
[Memory Forensic] Wargame Team H4C (0) | 2021.11.07 |
---|---|
[Steganography] ctf-d Challenge - 제 친구의 개가 바다에서… (0) | 2019.09.29 |