Молниеносный брутфорс паролей для Steghide: проверяет 1+ млрд слов в секунду благодаря многопоточности и ранней обрезке неверных путей. Умеет автоматически извлекать данные без указания пароля при успешном взломе. Необходим в CTF, когда файл защищён steghide с неизвестным паролем.
# Скачать .deb-пакет: # https://github.com/RickdeJager/stegseek/releases sudo dpkg -i stegseek_*.deb # Или из исходников: git clone https://github.com/RickdeJager/stegseek cd stegseek && mkdir build && cd build cmake .. && make && sudo make install # Брутфорс с wordlist (синтаксис: stegseek [файл] [wordlist] [вывод]): stegseek cover.jpg /usr/share/wordlists/rockyou.txt stegseek cover.jpg rockyou.txt extracted.txt # Только проверка (без извлечения): stegseek --info cover.jpg
Stegseek — это молниенобыстный взломщик steghide, который используется для извлечения скрытых данных из файлов. Он создан как форк оригинального проекта steghide и, как следствие, работает в тысячи раз быстрее других взломщиков, способен перебрать весь файл rockyou.txt* менее чем за 2 секунды.
Stegseek также можно использовать для извлечения метаданных steghide без пароля, что позволяет проверить, содержит ли файл данные steghide.
*
rockyou.txt— это известный список паролей, содержащий более 14 миллионов паролей.

Перейдите к разделу Производительность для просмотра числовых показателей.
Ниже приведены инструкции по установке. Альтернативно, вы можете запустить Stegseek в контейнере Docker. Перейдите к разделу Docker для получения инструкций.
На современных системах Ubuntu и других, основанных на Debian, можно использовать provided пакет .deb для установки:
.deb с помощью команды sudo apt install ./stegseek_0.6-1.debНа других системах вам придется собрать Stegseek самостоятельно. Дополнительную информацию см. в файле BUILD.md.
Сборка Stegseek как нативного приложения Windows, к сожалению, не поддерживается. Вместо этого вы должны запускать Stegseek, используя WSL. Для оптимальной совместимости рекомендуется дистрибутив Ubuntu WSL. После настройки WSL, Stegseek можно установить, используя приведенные выше инструкции для Linux.
По умолчанию WSL монтирует диск C:\ в /mnt/c/, что позволяет легко получить доступ к вашим файлам.
Основная возможность stegseek — перебор по словарю:
stegseek [stegofile.jpg] [wordlist.txt]
Этот режим просто попробует все пароли из предоставленного словаря против предоставленного stego-файла.
Stegseek также может использоваться для обнаружения и извлечения любых незашифрованных (мета)данных из изображения steghide. Это эксплуатирует тот факт, что генератор случайных чисел, используемый в steghide, имеет всего 2^32 возможных начальных значения (сидов), которые можно перебрать за несколько минут.
stegseek --seed [stegofile.jpg]
Эта команда сообщит вам: * Содержит ли этот файл фактически данные steghide. * Сколько скрытого контента содержит файл. * Каким образом контент был зашифрован.
Если вам очень повезло и файл был закодирован без шифрования, этот режим даже восстановит закодированный файл!
Ниже представлена демонстрация задачи с X-MAS CTF 2020. Флаг был скрыт с использованием безопасного случайного пароля, но без включения шифрования. В течение нескольких минут Stegseek способен восстановить встроенный файл без необходимости угадывать правильный пароль.

Используйте stegseek --help для получения полного списка доступных опций:
=== StegSeek Help ===
To crack a stegofile:
stegseek [stegofile.jpg] [wordlist.txt]
Commands:
--crack Crack a stego file using a wordlist. This is the default mode.
--seed Crack a stego file by attempting all embedding patterns.
This mode can be used to detect a file encoded by steghide.
In case the file was encoded without encryption, this mode will
even recover the embedded file.
Positional arguments:
--crack [stegofile.jpg] [wordlist.txt] [output.txt]
--seed [stegofile.jpg] [output.txt]
Keyword arguments:
-sf, --stegofile select stego file
-wl, --wordlist select the wordlist file
-xf, --extractfile select file name for extracted data
-t, --threads set the number of threads. Defaults to the number of cores.
-f, --force overwrite existing files
-v, --verbose display detailed information
-q, --quiet hide performance metrics (can improve performance)
-s, --skipdefault don't add guesses to the wordlist (empty password, filename, ...)
-n, --nocolor disable colors in output
-c, --continue continue cracking after a result has been found.
(A stego file might contain multiple embedded files)
-a, --accessible simplify the output to be more screen reader friendly
Use "stegseek --help -v" to include steghide's help.
Stegseek включает в себя почти весь функционал steghide, поэтому его также можно использовать для обычного встраивания или извлечения данных. Единственное условие — команды должны использоваться в формате --command.
Например, steghide embed [...] становится stegseek --embed [...] .
stegseek --embed <данные> <файл-обложка> [<stego-файл>]stegseek --extract <stego-файл> [<вывод>]Вы также можете запустить Stegseek в контейнере Docker:
docker run --rm -it -v "$(pwd):/steg" rickdejager/stegseek [stegofile.jpg] [wordlist.txt]
Для этого словарь и stego-файл должны находиться в текущей рабочей каталоге, так как эта папка монтируется в /steg внутри контейнера.
Здесь Stegseek действительно блистает. Как и обещалось, начнем с утверждения о "rockyou.txt всего за 2 секунды".
Все эти измерения выполнены на ноутбуке с процессором Intel i7-7700HQ @ 2.80GHz и 8 ГБ оперативной памяти.
Я взял последний пароль в rockyou.txt без управляющих символов: "␣␣␣␣␣␣␣1" (7 пробелов, за которыми следует '1').
Этот пароль находится на строке 14344383 из 14344391
> StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
[i] Found passphrase: " 1"
[i] Original filename: "secret.txt".
[i] Extracting to "7spaces1.jpg.out".
real 0m1,211s
user 0m9,488s
sys 0m0,084s
И вот оно, более 14 миллионов паролей менее чем за 2 секунды :heart_eyes:.
Для проверки производительности других инструментов я создал несколько stego-файлов с разными паролями, взятыми из rockyou.txt. Я запускал каждый из инструментов с их настройками по умолчанию, за исключением Stegbrute, где я увеличил количество потоков для честного сравнения.
| пароль | Строка | Stegseek v0.6 | Stegcracker 2.0.9 | Stegbrute v0.1.1 (-t 8) |
|---|---|---|---|---|
| "cassandra" | 1 000 | 0.05с | 3.1с | 0.7с |
| "kupal" | 10 000 | 0.05с | 14.4с | 7.1с |
| "sagar" | 100 000 | 0.09с | 2м23.0с | 1м21.9с |
| "budakid1" | 1 000 000 | 0.73с | [p] 23м50.0с | 13м45.7с |
| "␣␣␣␣␣␣␣1" | 14 344 383 | 1.21с | [p] 5ч41м52.5с | [p] 3ч17м38.0с |
[p] = прогнозируемое время на основе предыдущих результатов.
Для сравнения скорости каждого инструмента, давайте посмотрим на последнюю строку таблицы (в противном случае Stegseek завершит работу до того, как все потоки будут запущены).
В этом масштабе Stegseek работает более чем в 12 000 раз быстрее Stegcracker и более чем в 7000 раз быстрее Stegbrute.
2021-04-18
улучшения:
* Исправлен взлом BMP для файлов с большой палитрой.
* Добавлен флаг --continue для поиска нескольких скрытых файлов.
* Добавлен флаг --accessible для удобства работы CLI с программами чтения с экрана.
* CLI стал более единообразным, добавлены цвета.
* --crack и --seed теперь возвращают правильные коды выхода для более простого скриптинга.
* Уменьшены затраты производительности для метрик.
* Исправлены флаги компилятора для сборки по умолчанию.
2020-12-28
улучшения:
* Значительно снижено потребление памяти (использование памяти больше не связано с длиной Словаря).
* Словарь загружается на лету, поэтому можно начать взлом немедленно.
* Исправлен высокий уровень ложных срабатываний для --seed
2020-12-01
улучшения:
* Добавлен взлом по сиду для извлечения данных без пароля.
* Переработан парсер для поддержки позиционных аргументов.
* взламывает rockyou.txt за 2 секунды
2020-12-23 Исправлена ошибка, из-за которой stegseek иногда не мог найти пароль.
2020-11-08
улучшения:
* Потоки сделаны свободными от блокировок, чтобы несколько потоков использовались более эффективно.
* Добавлен аргумент -xf для --crack, используемый для указания расположения извлекаемого файла.
* Пакет .deb стал совместимым с Debian/Kali.
* взламывает rockyou.txt за 4 секунды.
2020-11-05
улучшения:
* Прекращение попыток для пароля, если хотя бы один бит магического числа не декодируется.
* Удалены дорогостоящие аллокации BitString / EmbData.
* Улучшена производительность селектора.
* взламывает rockyou.txt за 5 секунд.
2020-11-04
Начальный релиз, возможности:
* Загружает stego-файл только один раз, в отличие от традиционных взломщиков.
* Многопоточность на основе рабочего пула.
* Сначала пытается взломать первые 3 байта, прежде чем пытаться полную расшифровку.
* Добавлен пакет .deb и контейнер docker.
* взламывает rockyou.txt за 41 секунду.