
스테가노그래피 도구 모음 - CTF 챌린지에 도움이 됩니다
이 프로젝트는 hackthebox.eu 같은 CTF 플랫폼에서 만날 수 있는 스테가노그래피 문제를 해결하는 데 유용한 Docker 이미지입니다.
이미지에는 많은 인기 도구(아래 목록 참조)와 몇 가지 간단한 검사를 실행할 수 있는 스크리닝 스크립트가 사전 설치되어 있습니다(예: check_jpg.sh image.jpg를 실행하면 JPG 파일에 대한 보고서를 얻을 수 있습니다).
먼저 Docker가 설치되어 있는지 확인하세요 (설치 방법).
그런 다음 이 저장소의 셸 스크립트 bin/build.sh와 bin/run.sh를 사용하여 이미지를 빌드하고 컨테이너를 실행할 수 있습니다.
그러면 컨테이너 내부의 bash 셸로 이동됩니다.
data 폴더가 마운트되어 있으며, 분석할 파일을 넣을 수 있습니다.
스크립트를 사용하지 않는다면 다음 단계를 따르세요:
docker build -t <image_name> .) 또는 Docker hub에서 가져오기 (docker pull dominicbreuker/stego-toolkit)/data 폴더에 파일을 마운트하여 컨테이너 시작 (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)check_jpg.sh image.jpg를 실행하여 빠른 보고서 작성, 또는 brute_jpg.sh image.jpg wordlist.txt를 실행하여 다양한 도구와 비밀번호로 숨겨진 데이터 추출 시도start_ssh.sh를 실행하고 X11 포워딩으로 컨테이너에 연결start_vnc.sh를 실행하고 브라우저를 통해 컨테이너의 데스크탑에 연결자세한 내용은 다음 섹션을 확인하세요:
docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash로 시작합니다.
그러면 작업 디렉토리 /data에 있는 컨테이너 셸로 이동됩니다.
호스트 폴더 $(pwd)/data가 마운트되고 그 안의 이미지에 접근할 수 있습니다.

다양한 Linux 및 Windows 도구가 설치되어 있습니다. Windows 도구는 Wine을 통해 지원됩니다. 일부 도구는 명령줄에서 사용할 수 있고, 다른 도구는 GUI 지원이 필요합니다!
이 도구들은 명령줄에서 사용할 수 있습니다. 컨테이너를 시작하고 확인하려는 스테가노그래피 파일을 마운트하기만 하면 됩니다.
초기에 실행할 도구입니다. 무엇을 다루고 있는지에 대한 대략적인 아이디어를 얻을 수 있습니다.
파일에서 스테가노그래피를 탐지하도록 설계된 도구입니다. 대부분 통계 테스트를 수행합니다. 간단한 경우에만 숨겨진 메시지를 드러냅니다. 그러나 흥미로운 불규칙성을 발견하면 무엇을 찾아야 할지에 대한 힌트를 제공할 수 있습니다.
메시지를 숨기고 나중에 복구하는 데 사용할 수 있는 도구입니다. 일부는 메시지를 숨기기 전에 암호화합니다. 암호화하는 경우 비밀번호가 필요합니다. 어떤 종류의 도구가 사용되었는지 또는 어떤 비밀번호가 맞을지에 대한 힌트가 있다면 이 도구들을 사용해 보세요. 일부 도구는 이 Docker 이미지에서 사용 가능한 무차별 대입 스크립트에 의해 지원됩니다.
아래의 모든 도구는 그래픽 사용자 인터페이스를 가지며 명령줄을 통해 사용할 수 없습니다. 실행하려면 컨테이너 내부에서 X11 서버를 사용할 수 있도록 해야 합니다. 두 가지 방법이 지원됩니다:
start_ssh.sh를 실행하여 SSH 서버를 시작합니다. 그런 다음 X11 포워딩으로 연결합니다. 호스트에 X11 서버가 필요합니다!start_vnc.sh를 실행하여 VNC 서버 + 클라이언트를 시작합니다. 그런 다음 브라우저로 포트 6901에 연결하면 Xfce 데스크탑이 나타납니다. 호스트 종속성이 없습니다!또는 컨테이너 내에서 X11을 사용할 수 있게 하는 다른 방법을 찾으십시오. 다양한 방법이 가능합니다 (예: UNIX 소켓 마운트).
위의 많은 도구는 GUI와의 상호 작용이 필요하지 않습니다. 따라서 잠재적으로 숨겨진 메시지가 포함된 파일을 기본적으로 스크리닝하는 일부 워크플로우를 쉽게 자동화할 수 있습니다. 적용 가능한 도구는 파일 형식에 따라 다르므로 각 파일 형식에 대해 다른 스크립트가 있습니다.
각 파일 형식에는 두 가지 종류의 스크립트가 있습니다:
XXX_check.sh <stego-file>: 기본 스크리닝 도구를 실행하고 보고서를 생성합니다 (+ 파일에 보고서가 있는 디렉토리가 생성될 수 있음)XXX_brute.sh <stego-file> <wordlist>: 다양한 도구를 사용하여 스테고 파일에서 숨겨진 메시지를 추출하려고 시도하며 워드리스트를 사용합니다 (cewl, john 및 crunch가 설치되어 목록을 생성합니다 - 작게 유지하세요).다음 파일 형식이 지원됩니다:
check_jpg.sh 및 brute_jpg.sh (무차별 대입: steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)check_png.sh 및 brute_png.sh (무차별 대입: openstego 및 stegoveritas.py -bruteLSB)위의 무차별 대입 스크립트에는 워드리스트가 필요합니다. 제 생각에는 rockyou와 같은 거대한 표준 워드리스트를 사용하는 것이 도움이 될 가능성이 매우 낮습니다. 스크립트가 너무 느리고 스테고 챌린지가 이를 위해 설계된 것 같지 않습니다. 더 가능성 있는 시나리오는 비밀번호가 무엇인지 짐작은 가지만 정확히 알지 못하는 경우입니다.
이러한 경우 워드리스트를 생성하는 여러 도구가 포함되어 있습니다:
john을 사용하여 다양한 변형을 만듭니다. john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist를 사용하여 광범위한 규칙(~x1000)을 적용하고 john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist를 사용하여 축소된 규칙 세트(~x50)를 적용합니다.crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984를 사용하면 26 * 26 = 676개의 비밀번호 aa1984, ab1984, ..., zz1984가 생성됩니다. 형식은 crunch <min-length> <max-length> <charset> <options>이며 템플릿 옵션을 사용했습니다. less /usr/share/crunch/charset.lst를 확인하여 crunch와 함께 제공되는 문자 세트를 확인하십시오.cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump를 실행하십시오. 이 명령은 사이트를 스크래핑하고 최소 8자 길이의 문자열을 추출합니다.이미지에는 각각 다른 형식의 샘플 이미지 및 오디오 파일이 포함되어 있습니다:
/examples/ORIGINAL.jpg/examples/ORIGINAL.png/examples/ORIGINAL.mp3/examples/ORIGINAL.wav또한 스크립트 /examples/create_examples.sh가 포함되어 있습니다. 이 스크립트를 실행하면 다양한 방법으로 이 파일들에 숨겨진 메시지("This is a very secret message!")를 포함할 수 있습니다.
이 스크립트를 실행하면 /examples/stego-files에서 파일 이름에 메시지를 포함하는 데 사용된 도구가 표시된 파일을 찾을 수 있습니다.
스크리닝 스크립트를 실행하여 파일에 대해 무언가를 찾는지 확인하거나 다른 방법으로 해독해 볼 수 있습니다.
기본적으로 Docker 컨테이너에서는 X11 서버를 사용할 수 없으므로 GUI 도구를 실행할 수 없습니다. 실행하려면 이를 변경해야 합니다. 필요한 것은 호스트 시스템에 따라 다릅니다. 만약:
brew install Xquartz).이 방법을 사용하려면 SSH를 통한 X11 포워딩을 사용하십시오. 컨테이너 내에서 start_ssh를 실행하여 서버를 시작하고, 컨테이너를 시작할 때 포트 22를 노출해야 합니다: docker run -p 127.0.0.1:22:22 ..., 그런 다음 연결할 때 ssh -X ...를 사용하십시오 (스크립트가 비밀번호를 출력합니다).
X11에 의존하지 않도록 이미지에는 TigerVNC 서버와 noVNC 클라이언트가 포함되어 있습니다.
이것을 사용하여 브라우저로 HTML5 VNC 세션을 열고 컨테이너의 Xfce 데스크탑에 연결할 수 있습니다. 이를 위해 컨테이너 내에서 start_vnc.sh를 실행하여 서버와 클라이언트를 시작하고, 컨테이너를 시작할 때 포트 6901을 노출해야 합니다: docker run -p 127.0.0.1:6901:6901 ..., 그런 다음 localhost:6901/?password=<password_from_start_vnc>로 이동하십시오 (스크립트가 비밀번호를 출력합니다).

GIF 명령어 (복사 및 붙여넣기용):
# 1번째 호스트 셸
docker run -it --rm -p 127.0.0.1:22:22 dominicbreuker/stego-toolkit /bin/bash
# 컨테이너 셸 내부
start_ssh.sh
# 2번째 호스트 셸 (이후 GUI 앱 실행에 사용)
ssh -X -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost

GIF 명령어 (복사 및 붙여넣기용):
# 1번째 호스트 셸
docker run -it --rm -p 127.0.0.1:6901:6901 dominicbreuker/stego-toolkit /bin/bash
# 컨테이너 셸 내부
start_vnc.sh
# 브라우저에서 http://localhost:6901/?password=<start_vnc의 비밀번호> 로 연결
유용한 스테가노그래피 링크 모음입니다:
다음 예제 미디어 파일이 이 저장소에 포함되어 있습니다:
| 도구 | 설명 | 사용 방법 |
|---|
| file | 파일 종류 확인 | file stego.jpg |
| exiftool | 미디어 파일의 메타데이터 확인 | exiftool stego.jpg |
| binwalk | 다른 파일이 포함/추가되었는지 확인 | binwalk stego.jpg |
| strings | 파일에 흥미로운 읽을 수 있는 문자가 있는지 확인 | strings stego.jpg |
| foremost | 포함/추가된 파일 추출 | foremost stego.jpg |
| pngcheck | PNG 파일에 대한 세부 정보 얻기 (또는 실제로 다른 파일인지 확인) | pngcheck stego.png |
| identify | GraphicMagick 도구로 파일이 어떤 이미지인지 확인. 이미지가 손상되었는지도 확인. | identify -verbose stego.jpg |
| ffmpeg | ffmpeg는 오디오 파일의 무결성을 확인하고 정보와 오류를 보고하는 데 사용할 수 있음 | ffmpeg -v info -i stego.mp3 -f null -로 파일을 다시 인코딩하고 결과를 버림 |
| 도구 | 파일 형식 | 설명 | 사용 방법 |
|---|
| stegoVeritas | 이미지 (JPG, PNG, GIF, TIFF, BMP) | 다양하고 간단한 검사부터 고급 검사까지. stegoveritas.py -h 확인. 메타데이터 확인, 많은 변환된 이미지 생성 후 디렉토리에 저장, LSB 무차별 대입 등 | stegoveritas.py stego.jpg로 모든 검사 실행 |
| zsteg | 이미지 (PNG, BMP) | 다양한 LSB 스테가노그래피, openstego 및 Camouflage 도구 탐지 | zsteg -a stego.jpg로 모든 검사 실행 |
| stegdetect | 이미지 (JPG) | 통계 테스트를 수행하여 스테고 도구가 사용되었는지 확인 (jsteg, outguess, jphide 등). 자세한 내용은 man stegdetect 참조. | stegdetect stego.jpg |
| stegbreak | 이미지 (JPG) | JPG 이미지용 무차별 대입 크래커. outguess, jphide 및 jsteg를 크랙할 수 있다고 주장. | stegbreak -t o -f wordlist.txt stego.jpg, -t o는 outguess, -t p는 jphide, -t j는 jsteg |
| 도구 | 파일 형식 | 설명 | 숨기는 방법 | 복구 방법 |
|---|
| AudioStego | 오디오 (MP3 / WAV) | 작동 방식에 대한 자세한 내용은 이 블로그 게시물 참조 | hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 | hideme stego.mp3 -f && cat output.txt |
| jphide/jpseek | 이미지 (JPG) | 여기에서 가져온 꽤 오래된 도구. 여기서는 여기의 버전이 설치되었으며, 원본이 계속 충돌했기 때문입니다. 대화식으로 암호를 요청합니다! | jphide cover.jpg stego.jpg secret.txt | jpseek stego.jpg output.txt |
| jsteg | 이미지 (JPG) | LSB 스테고 도구. 메시지를 암호화하지 않음. | jsteg hide cover.jpg secret.txt stego.jpg | jsteg reveal cover.jpg output.txt |
| mp3stego | 오디오 (MP3) | 오래된 프로그램. 메시지를 암호화한 후 숨깁니다 (3DES 암호화!). Wine에서 실행되는 Windows 도구. WAV 입력 필요 (일부 WAV 파일에 대해 오류가 발생할 수 있음. 저에게는 예: ffmpeg -i audio.mp3 -flags bitexact audio.wav가 작동합니다). 중요: 절대 경로만 사용하세요! | mp3stego-encode -E secret.txt -P password /path/to/cover.wav /path/to/stego.mp3 | mp3stego-decode -X -P password /path/to/stego.mp3 /path/to/out.pcm /path/to/out.txt |
| openstego | 이미지 (PNG) | 다양한 LSB 스테고 알고리즘 (이 블로그 참조). 여전히 유지 관리 중. | openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png | openstego extract -sf openstego.png -p abcd -xf output.txt (-xf를 생략하면 원래 이름의 파일이 생성됩니다!) |
| outguess | 이미지 (JPG) | "중복 비트"를 사용하여 데이터를 숨깁니다. 두 가지 버전: 이전 버전=outguess-0.13 (여기에서 가져옴) 및 새 버전=outguess (패키지 저장소). 복구하려면 숨기는 데 사용된 버전을 사용해야 합니다. | outguess -k password -d secret.txt cover.jpg stego.jpg | outguess -r -k password stego.jpg output.txt |
| spectrology | 오디오 (WAV) | 오디오 파일의 스펙트로그램에 이미지를 인코딩합니다. | TODO | GUI 도구 sonic-visualiser 사용 |
| stegano | 이미지 (PNG) | 다양한 (LSB 기반) 방법으로 데이터를 숨깁니다. 일부 스크리닝 도구도 제공. | stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png 또는 stegano-red hide --input cover.png -m "secret msg" --output stego.png 또는 stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png (다양한 생성기 사용, stegano-lsb-set list-generators) | stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt 또는 stegano-red reveal -i stego.png 또는 stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt |
| Steghide | 이미지 (JPG, BMP) 및 오디오 (WAV, AU) | 데이터를 암호화하고 숨길 수 있는 다재다능하고 성숙한 도구. | steghide embed -f -ef secret.txt -cf cover.jpg -p password -sf stego.jpg | steghide extract -sf stego.jpg -p password -xf output.txt |
| cloackedpixel | 이미지 (PNG) | 이미지용 LSB 스테고 도구 | cloackedpixel hide cover.jpg secret.txt password는 cover.jpg-stego.png를 생성 | cloackedpixel extract cover.jpg-stego.png output.txt password |
| LSBSteg | 이미지 (PNG, BMP, ...) 압축되지 않은 형식 | 매우 멋지고 읽기 쉬운 Python 코드의 간단한 LSB 도구 | LSBSteg encode -i cover.png -o stego.png -f secret.txt | LSBSteg decode -i stego.png -o output.txt |
| f5 | 이미지 (JPG) | F5 스테가노그래픽 알고리즘, 프로세스에 대한 자세한 정보 | f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' | f5 -t x -i stego.jpg 1> output.txt |
| stegpy | 이미지 (PNG, GIF, BMP, WebP) 및 오디오 (WAV) | LSB 방법 기반의 간단한 스테가노그래피 프로그램 | stegpy secret.jpg cover.png | stegpy _cover.png |
| 도구 | 파일 형식 | 설명 | 시작 방법 |
|---|
| Steg | 이미지 (JPG, TIFF, PNG, BMP) | 다양한 파일 형식을 처리하고 다양한 방법 구현 | steg |
| Steganabara (원본 링크는 깨짐) | 이미지 (???) | 이미지를 대화식으로 변환하여 무언가를 찾을 때까지 | steganabara |
| Stegsolve | 이미지 (???) | 이미지를 대화식으로 변환하고, 색 구성표를 별도로 보는 등 | stegsolve |
| SonicVisualiser | 오디오 (???) | 오디오 파일을 파형으로 시각화하고 스펙트로그램 표시 등 | sonic-visualiser |
| Stegosuite | 이미지 (JPG, GIF, BMP) | 이미지에 데이터를 암호화하고 숨길 수 있음. 활발히 개발 중. | stegosuite |
| OpenPuff | 이미지, 오디오, 비디오 (다양한 형식) | 오랜 역사를 가진 정교한 도구. 여전히 유지 관리 중. wine에서 실행되는 Windows 도구. | openpuff |
| DeepSound | 오디오 (MP3, WAV) | Mr. Robot 자신이 신뢰하는 오디오 스테고 도구. wine에서 실행되는 Windows 도구 (매우 불안정, VNC 필요 및 가상 데스크탑에서 실행, DLL 누락으로 MP3 깨짐!) | VNC 세션에서만 deepsound |
| cloackedpixel-analyse | 이미지 (PNG) | PNG용 LSB 스테고 시각화 - 이미지에서 의심스러울 정도로 무작위적인 LSB 값 감지에 사용 (0.5에 가까운 값은 암호화된 데이터가 포함되어 있음을 나타낼 수 있음) | cloackedpixel-analyse image.png |