이번에 풀어볼 문제는 xcz.kr 사이트의 Mountains beyond mountains http://xcz.kr/START/prob/prob16.php 입니다
문제에는 i_like_keroro_stickers.png라는 파일이 첨부되어 있습니다. 이번 문제는 steganography 문제라서 openstego와 같은 스테가노그래피 툴을 사용해야 되는 것으로 보입니다.
스테가노그래피 개념 및 OpenStego 툴
스테가노그래피란 비밀 메시지를 위협이 없어 보이는 다른 큰 파일 안에 숨기는 기술입니다. 비밀 메시지는 텍스트, 이미지, 오디오 파일 등 다양한 파일에 숨길 수 있습니다. 스테가노그래피에 쓰이는 데이터와 파일들을 보자면
- plaintext: The original secret message that needs to be communicated.
- ciphertext: Secret message is often first encrypted using traditional methods. Encrypted message is known as ciphertext.
- covertext: A larger and harmless looking data which is used as container for the plaintext/ciphertext. This can be a picture, sound, text, etc.
- stegotext: The data generated after embedding the plaintext/ciphertext into the covertext.
등과 같이 원본 평문, 암호문, 암호문을 숨길 covertext, covertext에 암호문을 숨기고 나서 생성된 stegotext로 구분할 수 있습니다.
참고 https://www.openstego.com/concepts
스테가노그래피 알고리즘에는 여러가지가 있는데, 그 중 대표적인 알고리즘은 다음과 같습니다.
- Least significant bit (LSB): In the LSB algorithm, the least significant bit in each byte of a multimedia file (e.g., an image or audio) is modified to convey a hidden message.
- Discrete Fourier transform (DFT): In the DFT algorithm, information is hidden inside a multimedia file using the mathematical technique of discrete Fourier transformation.
LSB 알고리즘은 이미지나 오디오 파일의 최하위 비트를 이용해 원하는 메시지를 숨기는 방법입니다. 최하위 비트를 변조하는 것은 사람 눈이나 귀로 감지하기 힘든 정도의 변화를 만들기 때문에 스테가노그래피가 사용되었다는 것을 숨기기에 좋습니다.
DFT 알고리즘은 이산 푸리에 변환이라는 수학적 기술로 원하는 메시지를 이미지나 오디오 파일에 숨기는 방법입니다.
또한 비디오 일부 프레임에 원하는 사진이나 텍스트를 숨기거나, 역재생한 오디오를 이용한 스테가노그래피, TCP/IP 헤더나 패킷에 숨길 메시지를 같이 전송하는 네트워크 스테가노그래피 등의 기법도 있습니다.
OpenStego는 대표적인 이미지 스테가노그래피 툴로 오픈스테고에는 데이터 숨기기와 디지털 워터마킹 기능이 있습니다. 가장 최신 버전인 0.8.6 버전에서는 LSB를 랜덤화한 RandomLSB 알고리즘과 디지털 워터마킹에 Dugad's algorith을 지원합니다. 또 사용자가 직접 플러그인을 만들어서 새로운 알고리즘을 사용할 수도 있다고 합니다.
다시 문제로 돌아와서 openstego를 이용해 문제 파일에서 숨겨진 파일을 추출해봤습니다.
알고리즘이 잘못되었거나 패스워드가 유효하지 않다고 하네요. HxD 에디터로 문제 파일을 한번 봐야 할 것 같습니다.
지난번에 png 파일 구조를 정리했을때 공부한 내용에서 크게 다른 점은 없었고, 패스워드나 플래그로 보이는 값도 딱히 없었습니다. 에러 메시지를 다시 보니 알고리즘이 문제인 것 같아서 오픈스테고 홈페이지에서 알고리즘을 살펴봤는데 제가 사용한 0.8.6 버전에서는 RandomLSB 알고리즘만 사용할 수 있게 되어 있는 것 같습니다. 이전 버전들에서는 그냥 LSB 알고리즘이 사용이 가능하다는걸 보고 이전 버전에서 LSB 알고리즘으로 문제 파일에서 추출을 했는데 itsmine.png라는 파일이 추출되었습니다.
이후 qr을 스캔해보니 안에 플래그 값이 들어있는 것을 확인할 수 있었습니다.
이번 문제를 풀면서 스테가노그래피 개념에 대해 알아볼 수 있었습니다. OpenStego 툴 사용법도 익힐 수 있었는데, 문제 파일에서 Random LSB 알고리즘으로는 추출이 안되고 단순 LSB 알고리즘으로는 추출이 되는게 이해가 조금 안갔지만 다음에 LSB 알고리즘과 Random LSB 알고리즘의 작동 원리에 대해 좀 더 자세히 알아봐야겠습니다.
'정보보안 > Forensics' 카테고리의 다른 글
[forensicscontest.com] evidence03 (SKS 포렌식 스터디 week2) (0) | 2024.07.24 |
---|---|
[forensicscontest.com] evidence02 (SKS 포렌식 스터디 week2) (1) | 2024.07.24 |
[PlaidCTF] zipper (SKS 포렌식 스터디 week1) (0) | 2024.07.19 |
[Dreamhack] broken-png (SKS 포렌식 스터디 week1) (2) | 2024.07.16 |
[CTFlearn] forensics 101 (SKS 포렌식 스터디 week1) (0) | 2024.07.16 |