
안녕하십니까 코딩 파인애플입니다
이번에는 STEGANOGRAPHY에 관해 알아보겠습니다.
스테가노그래피는 넓게 잡아서 "비밀 메시지를 다른 일반적인 파일이나 데이터 안에 감쪽같이 숨기는 기술" 을 의미합니다
'감추어져 있다'는 뜻의 steganos와 '글을 쓰다'라는 뜻의 graphein이 합쳐진 말인데, 무언가를 암호화해서 알아보기 힘들게 만드는 걸 넘어 "여기에 비밀 정보가 있다는 사실 자체를 숨기는 것"이 핵심입니다.
일반 암호학과 달리 주로 오디오나 이미지 등에 끼워넣어 암호문임을 알아채지 못하는 것이 차이입니다.
꼬운 놈 몇 개 골라보자면 공백(' ')와 탭('\t')을 이용해 이진코드를 만드는 화이트 스페이스 스테가노그래피나 혹은 이미지 스테가노그래피, 오디오 스테가노그래피 등이 존재하지만 그 중 이미지 스테가노그래피를 다뤄보겠습니다. (나머지는 언젠가?)

여러분 이 이미지의 등장인물이 누군지 아십니까?
예...제 여친입니다.
하지만 제 여친 사진에 비밀이 하나 있습니다
비밀을 이미지 스테가노그래피를 통해 숨겼는데
이미지 스테가노그래피는 이미지의 확장자에 소스삼아 정보를 숨기는 기법입니다
그 전에 시그니처 코드를 알아봅시다
시그니처 코드는 파일마다 가지고 있는 고유한 식별 데이터입니다.
MaG1c라고도 부르며, 확장자가 다르게 조작되었거나 손상된 파일의 원본 포맷을 확인할 때 사용됩니다
이런 식인데 사용한 툴은 링크타고 가셔서 알아서 해보시길 바랍니다
워게임 할 때 정말 요긴하게 사용될 겁니다.
아무톤톤간에.
위 이미지는 제가 가지고 있는 아무개씨 파일을 Hxd라는 툴을 사용해 열어봤습니다
여기서는 파일의 시그니처 코드가 다 보이는데, 시그니처 코드는 각각 헤더 시그니처와 푸터 시그니처로 구분됩니다
OS는 이를 보고 확장자를 판단합니다
헤더 시그니처는 확장자의 시작을 알리는 시1발점입니다 반대로
푸터 시그니처는 확장자의 끝을 알리는 종착점입니다.
| 헤더 시그니처 | 푸터 시그니처 | |
|---|---|---|
| .jpeg / jpg (이미지) | FF D8 FF | FF D9 |
| .png (이미지) | 89 50 4E 47 0D 0A 1A 0A | 49 45 4E 44 AE 42 60 82 |
| .gif (이미지) | 47 49 46 38 37 61 (37 혹은 39) | 00 3B |
| .pdf (문서) | 25 50 44 46 (텍스트로 %PDF) | 25 25 45 4F 46 (텍스트로 %%EOF) |
| .zip (압축 파일) | 50 4B 03 04 (텍스트로 PK..) | 50 4B 05 06 (텍스트로 PK..) |
위 이미지에서의 첫 시그니처 코드인 헤더 시그니처가 47 49 46 38 39 61임을 보아 확장자가 GIF 파일임을 알 수 있습니다.
다시 돌아와서 이미지 스테가노그래피는 이미지에 특정 시그니처 코드를 반복적으로 넣어 숨기는 게 대표적입니다
특히 숨겨진 이미지는 다른 이미지에 비해 좀 더 용량이 무거운 특징이 있습니다.

(숨겨진 게 많으면 많을수록 용량은 위 이미지처럼 무거워집니다.)
이를 찾기 위해서는 이미지의 시그니처를 잘 살펴봐야하는데 특히 푸터 시그니처 끝에 뭔가 더 있으며 특정 헤드 시그니처가 보이면 146.47%확률로 스테가노그래피입니다.
예를 들어
이미지의 경우 png의 푸터 시그니처 파일이 있음에도 그 밑에 50 4B 03 04와 PK...이 있음을 보아 png 이미지에 숨겨진 .zip파일임을 알 수 있습니다.
이만 글을 마치겠습니다 감사합니다.