암호학이 살짝 가미된 포렌식 문제
대회에서는 stego 로 분류되어 있었다.
Tenable CTF 가 참신하고 재밌는 문제들이 많이 나오는것 같다.
문제에서 주어지는 것은 turtles128.zip 파일이다.
압축을 풀려고 보면
비밀번호가 걸려있다.
ZIP 파일 비밀번호를 crack 하는데는 John the Ripper 라는 도구를 이용했다.
여러가지 비밀번호를 crack 해주는 기능을 가지고 있다.
zip2john <파일명> > hash 명령어로
hash 파일을 생성해준 다음
john hash 명령어로 비밀번호를 crack 해주면 된다.
해당 파일의 비밀번호는 0 이었다.
압축을 풀면 turtles127.zip 파일이 나오는데
이 역시도 암호가 걸려있다.
역시나 똑같은 방법으로 해보면
비밀번호는 0 으로 되어있는걸 알 수 있다.
그다음에 나오는 turtles126.zip 파일은
비밀번호가 1로 설정되어 있다.
여기까지 해보고
비밀번호가 0 아니면 1로 되어있다는 것이라고 추측했다.
이 비밀번호들을 모두 모으면 뭔가 의미있는 값이 나올것같은 느낌이었다.
while true; do unzip -P 0 $(ls *.zip) -d $(ls *.zip). > 0 || unzip -P 1 $(ls *.zip) -d $(ls *.zip). > 1 && cd $(ls *.zip).; done
쉘 스크립트를 이용해 모두 압축을 풀어줬다.
while 문을 사용했고,
만약 비밀번호가 0이라면 || 앞부분이 실행된 뒤,
&& 뒷부분으로 넘어가고,
비밀번호가 1이라면 모든 명령어가 실행된다.
스크립트를 실행하면 이런 화면이 나온다.
해당 zip 파일의 비밀번호가 0 이라면 이렇게
0 이라는 이름의 파일과 함께있고,
해당 zip 파일의 비밀번호가 1 이라면 이렇게
0, 1 이라는 이름의 파일과 함께있게 된다.
맨 마지막 turtles1.zip 파일의 압축을 풀면
key.png 파일이 나오는데
이런 내용이 들어있다.
파일의 이름과 문제 제목의 AES 를 고려하면
이 내용은 AES KEY 값을 의미하는듯 하다.
while true; do ls && cd $(ls *.zip).; done
다시 스크립트를 사용해서
이번엔 0, 1 파일 생성한 목록을 모두 가져왔다.
0101.txt 라는 이름으로 저장해줬다.
이제 이 파일의 내용을 보고,
0 이 있으면 0을,
0, 1 이 있으면 1을 추가해서 이어붙혀주면 된다.
순서대로 합치면 이런 값이 나온다.
CyberChef(https://gchq.github.io/CyberChef) 에서
해당 값을 From Binary, To Hex 를 이용해 Hex 값으로 바꿔주고,
AES Decrypt 를 이용해
key.png 파일의 내용을 key 값으로 넣어주면
플래그를 찾을 수 있다.
'CTF > 포렌식' 카테고리의 다른 글
[Tenable CTF] Funny Sound - 포렌식 / Oscilloscope (54) | 2023.04.14 |
---|---|
[Tenable CTF] Look at all the pixels, where do they all come from - 포렌식 / PIL (66) | 2023.04.10 |
[Tenable CTF] Numerological - 포렌식 / HxD (56) | 2023.03.29 |
[Tenable CTF] Secret Images - 포렌식 / PIL (74) | 2023.03.27 |
[Tenable CTF] Hackerman - 포렌식 / 개발자도구 (51) | 2023.03.25 |