CTF/N0named CTF

[N0Named CTF - Write Up[A]] 길에서 주어온 만두

Ron Weasley 2021. 8. 31. 17:40

이번 시간에는 N0Named CTF 워게임 사이트에 있는 Forensic Season1 A에 있는 문제 중 길에서 주어온 만두를 풀어보겠습니다. 일단 문제를 봅시다.

Question

zip파일이 하나 주어지는데요, 다운 받아봅시다. 다운을 받았으면 압축을 바로 풀어봅시다.

<그림1>

압축 파일안에 png파일과 readme.txt 파일이 들어있네요?? 일단 텍스트 파일인 readme.txt파일을 열어 봅시다.

<그림2>

엥..? 아까 우리가 다운을 받았던 문제와 똑같은 텍스트가 있으니 불필요한 파일인걸 알 수 있습니다. 그럼 사진을 열어보겠습니다.

<그림3>

왠 오뚜기 같이 생긴 사진이 있네요..? 근데 flag값이 존재하지 않으니 바로 hxd에디터로 열어보겠습니다.

확장자가 png파일이였으니까 헤더 시그니처와 푸터 시그니처를 한번 살펴 봅시다.

<header signature>

 

<footer signature>

png파일의 헤더 시그니처와 푸터 시그니처가 같은걸 알 수 있습니다. 그런데...파일의 푸터 시그니처는 파일의 끝을 가르키는데, 왜 이상한 50 41 53 53 3A 31 32 33 34라는 HEX값이 더 추가가 되었는지 의문이듭니다. 근데 우리는 포렌식 분석가가 되려하기 때문에 이론적인 부분에서 그림안에 그림을 숨겨놓는 스테가노그래피라는 기법을 떠올릴수 있을것입니다.

 

스테가노그래피(Steganography)

  전달하려는 기밀 정보를 파일, 메세지, 이미지 또는 비디오를 다른 파일안에 숨기는 암호화 기술입니다.

 

한 마디로 위에 사진은 flag값을 표출하는 메세지를 숨겨놓은 파일이라고 생각할 수 있습니다. 그럼 스테가노그래피 기법을 활용한 파일을 한번 오픈소스도구인 openstego와 openstego를 실행할 수 있게 해주는 JRE(Java Runtime Environment)를 설치해야한다. JRE는 자바 런타임 환경으로 자바 애플리케이션을 개발하고 실행하기 위한 자바 플랫폼의 3대 구성요소 입니다.

 

즉 OpenStego가 자바로 구성되어 있기 때문에 JRE가 필요한것 입니다. 설치환경은 너무 포스팅이 길어져서 제가 설치환경을 구축할 때 참고를 했던 블로그를 남겨두겠습니다.

 

https://hackchang.tistory.com/59

 

[OpenStego] 스테가노그래피 무료 툴 설치, 사용법 v0.7.4

https://www.openstego.com/ OpenStego English | Español Introduction Welcome to the homepage of OpenStego, the free steganography solution. OpenStego provides two main functionalities: Data Hiding:..

hackchang.tistory.com

설치가 완료되면 실행을 시켜보겠습니다.

<그림4>

이것이 OpenStego 프로그램을 실행시켰을 때 화면입니다. 우리는 스테가노그래피 기술이 적용된 파일을 풀어야하는 입장이기 때문에 Extract Data를 클릭하겠습니다. Extract Data는 스테가노그래피 기술이 적용된 파일에서 파일을 추출하는 옵션이기 때문입니다. 위에서 말씀한대로 사용법 또한 다 나와있으니 참고하시길 바랍니다.

<그림5>

Extract Data를 클릭한 모습입니다. 그럼 Input Stego File에 우리가 추출할 파일을 선택해주고, 바로 밑에 OutPut Folder for Message File에 추출한 파일을 어떤 파일에 저장할건지 선택한 다음 우측 하단에 Extract Data를 눌러줍시다.

<그림6>

어라...Error가 발생했네요?? 근데 해석을 해보니 우리가 선택한 파일 데이터가 손상되었거나, 암호를 잘못입력 했다고 하네요?? 그럼 우리는 문제를 풀려고 파일을 가져왔는데 사진이 손상되었다기엔 시그니처가 잘 맞았는데 그럼 패스워드를 입력 안해서 에러가 떴다고 생각할 수 있습니다. 근데 password가 뭔지 모르는데 아까 우리가 hxd에디터로 열었을 때 푸터 시그니처 뒤에 HEX값이 추가 되었다고 했는데 찾아봅시다.

<그림7>

찾아보니 " PASS:1234 "라는 문구가 보이시나요?? 그럼 패스워드는 1234라고 생각을 하고 OpenStego를 통해서 파일을 추출해 봅시다.

<그림8>

오...Success!!!!! 풀렸다고 뜨네요?? 그리고 메세지를 해석해보면 커버된 파일에서 메세지 파일을 추출했고, 추출한 파일은 medium.png라는 이름을 가지고 있다고 되어있습니다. 그럼 추출된 파일을 확인하러 가봅시다.

<그림9>

엥..? 아직도 답이 안나오네요...hxd에디터로 열어봅시다.

열어본 결과 아무런 문제가 없다고 생각할 수 있습니다. 왜냐하면 헤더 시그니처와 푸터 시그니처가 정상적으로 되어있기 때문에 파일이 손상되지 않고 열렸기 때문입니다. 그럼 또 다시 OpenStego를 통해서 추출 해봅시다.

<그림10>

이번에는 small.png라는 파일이 추출 되었네요?? 그럼 다시 hxd에디터로 열어보고 분석해봅시다. 근데 얘네들이 장난을 하나 또 아무런 답을 찾을 수 없네요...그럼 다시 OpenStego를 통해서 추출 해봅시다.

이번에는 flag.txt가 추출된걸 확인할 수 있습니다.

드디어!!!!!!!!!!!!! 장난질이 끝이 났구나!!!!!!!!!!!!!! 이제 flag.txt파일을 열어서 flag값을 확인하시면 됩니다.

 

이렇게 스테가노그래피 기술이 적용된 파일을 푸는 포렌식 CTF를 풀어 보았습니다. 다음에는 infect라는 문제를 풀어보겠습니다. 좋은 하루 되세요~!!