Стеганография
(1) Стеганография потока данных NTFS
(2) стеганография base64
(3) Стеганография изображений
(4) Стеганография символов нулевой ширины
(5) словесная стеганография
(6) Стеганография PYC
(7) Аудиостеганография
(8) Синтез и разделение файлов
(9) Стеганография BMP/PDF
【Вложение】Инструменты обнаружения
NTFS — это формат диска, поддерживаемый ядром серии операционных систем Microsoft Windows NT и специально разработанный для функций управления безопасностью, таких как сетевые и дисковые квоты и шифрование файлов. NTFS более стабильна, безопасна и мощна, чем файловая система FAT.
Этот файл потока данных NTFS, также называемый альтернативными потоками данных или сокращенно ADS, является одной из особенностей файловой системы NTFS. Он позволяет существовать отдельным файлам потоков данных, а также позволяет присоединять несколько потоков данных к одному файлу. то есть в дополнение к основному потоку файлов. увидеть с помощью менеджера ресурсов.
Видно, что строка кодировки base64 имеет максимум 4 бита стеганографического пространства, поэтому для достижения стеганографии часто требуется большое количество строк кодирования. , При стеганографии каждый символ открытого текста представлен 8-битным двоичным числом, тем самым преобразуя всю строку открытого текста в битовую строку и заполняя стеганографические биты строки, закодированной в Base64, для достижения стеганографии. )
тема:
[GXYCTF2019]SXMgdGhpcyBiYXNlPw==
Формат Base64:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
Base64 — это метод представления двоичных данных с использованием 64 печатных символов.
кодировка base64
1 байт соответствует 8 битам, а один печатный символ соответствует 6 битам, то есть одной единице. Целевая строка преобразуется в поток двоичных данных, а затем 6 единиц делятся на соответствующие индексы кодовой таблицы с использованием базы 64. кодовая таблица замены символов.
Связь между кодовым текстом c и открытым текстом m равна len(c)×6==len(m)×8len(c)×6==len(m)×8, то есть len(c)×3==len( m) ×4len(c)×3==len(m)×4, то длина строки кодового текста должна быть кратна 4, а длина строки открытого текста должна быть кратна 3.
В случае, когда длина строки открытого текста меньше кратной 3, каждый двоичный бит дополняется битом 0 bit0 до тех пор, пока длина строки открытого текста не станет кратной 3.
Нетрудно видеть, что кодовый текст base64 может иметь до 2 символов «=» и, по крайней мере, не иметь знака равенства (в этом случае длина открытого текста точно кратна 3).
Удалите знак «=» в конце текста кода.
Отбросьте минимальное количество двоичных битов в конце двоичных данных, чтобы количество двоичных цифр было кратно 8, а затем выполните кодирование ASCII группами по 8 бит.
существоватьдекодирование base64середина,После удаления знака равенства отбросьте некоторые двоичные цифры в конце, чтобы количество двоичных цифр было кратно 8из.,Таким образом, некоторые скрытые данные могут быть записаны в разделе «Можно удалить».,Эту часть можно записать как любое значение, не беспокоясь о том, что это повлияет на результаты декодирования.,Это также объясняет, что разные кодовые тексты base64 могут генерировать один и тот же открытый текст.
Ниже приведен скрипт извлечения
importre
path ='flag.txt'#your path
b64char ='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
withopen(path,'r')asf:
cipher = [i.strip()foriinf.readlines()]
plaintext =''
foriincipher:
ifi[-2] =='=':# There are 4-bit hidden info while end with two '='
bin_message =bin(b64char.index(i[-3]))[2:].zfill(4)
plaintext += bin_message[-4:]
elifi[-1] =='=':# There are 2-bit hidden info while end with one '='
bin_message =bin(b64char.index(i[-2]))[2:].zfill(2)
plaintext += bin_message[-2:]
plaintext = re.findall('.{8}', plaintext)# 8bits/group
plaintext =''.join([chr(int(i,2))foriinplaintext])
print(plaintext)
Ниже приведен стеганографический скрипт
#!/usr/bin/env python
importbase64
withopen('./gitanjali.txt','r')asf:
data = [i.strip()foriinf.readlines()]
base64Data = [base64.b64encode(i)foriindata]
b64char ='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
msg ='Gitanjali'# Стеганографический контент. Обратите внимание, что стеганографический контент не должен превышать максимальное количество стеганографических битов.
msg_bit =''.join([bin(ord(i))[2:].zfill(8)foriinmsg])
offset =0
new_data = []
foriinbase64Data:
ifi[-2]=='=':# There are 4-bit hidden info while end with two '='
offset =int(msg_bit[:4],2)
i = i.replace(i[-3], b64char[b64char.index(i[-3])+offset])
msg_bit = msg_bit[4:]
elifi[-1]=='=':# There are 2-bit hidden info while end with one '='
offset =int(msg_bit[:2],2)
i = i.replace(i[-2], b64char[b64char.index(i[-2])+offset])
msg_bit = msg_bit[2:]
new_data.append(i+"\n")
withopen('./encodeFile.txt','w')asf:
f.writelines(new_data)
Иногда файлов может быть много. Если вы хотите найти определенное поле ключевой информации, вы можете использовать следующую команду.
exiftool *|grep flag#Искать символы флага в информации exif всех файлов в текущей папке
Существует также флаг, который можно указать непосредственно в примечаниях к атрибутам изображения. В этом случае вы можете использовать такие инструменты, как 010editor или winhex, чтобы открыть изображение и выполнить поиск по ключевым словам, таким как flag, ctf и т. д. для просмотра.
Изменение ширины и высоты
Измените ширину и высоту изображений в формате .png, чтобы скрыть ключевую информацию об изображении.
Принцип: информация о ширине и высоте изображения PNG находится в блоке данных IHDR изображения png. При изменении данных ширины и высоты изображения отображается только часть изображения, а другая часть не отображается.
Функция: после открытия в редакторе 010 появится сообщение об ошибке, указывающее, что значение проверки CRC неверно.
Crack: вы можете преодолеть значение CRC, чтобы получить правильное значение ширины или высоты.
importzlib
importstruct
имя_файла =#путь к изображению
crc_str=#Значение CRC изображения
# Одновременное разнесение ширины и высоты
withopen(filename,'rb')asf:
all_b = f.read()
data =bytearray(all_b[12:29])
n =4095
forwinrange(n):
width =bytearray(struct.pack('>i', w))
forhinrange(n):
height =bytearray(struct.pack('>i', h))
forxinrange(4):
data[x+4] = width[x]
data[x+8] = height[x]
crc32result = zlib.crc32(data)
#Заменить crc изображения
ifcrc32result == crc_str:
print("Ширина: ", end ='')
print(width, end =' ')
print(int.from_bytes(width, byteorder='big'))
print("Высота:", end ='')
print(height, end =' ')
print(int.from_bytes(height, byteorder='big'))
X_image и Y_image сегмента SOF0 записывают ширину и высоту изображения соответственно и могут быть изменены напрямую, не беспокоясь об ошибках проверки.
Блок данных изображения IDAT (блок данных изображения): он хранит фактические данные и может содержать несколько последовательных последовательных блоков данных изображения в потоке данных.
Сохранение данных пикселей изображения
Поток данных может содержать множество последовательных последовательных блоков данных изображения.
Сжатие с использованием производной алгоритма LZ77.
Можно распаковать с помощью zlib
Стоит отметить, что блоки IDAT будут продолжать работу с новым блоком только тогда, когда предыдущий блок будет заполнен. Если возникает ситуация, не соответствующая этому правилу (есть незаполненный блок IDAT, но за ним следует новый блок), то блок данных добавляется искусственно.
Редактор Crack: 010 напрямую извлекает данные, а затем передает их в скрипт распаковки zlib (ниже) для распаковки и получения исходных данных.
#! /usr/bin/env python
importzlib
importbinascii
IDAT = "......".decode('hex')#Заполните выгруженные данные IDAT
result = binascii.hexlify(zlib.decompress(IDAT))
print(result.decode('hex'))
print(len(result.decode('hex')))
Незашифрованную стеганографию, реализованную с помощью инструмента LSB-Steganography, можно просмотреть с помощью Stegsolve. Особенностью этого алгоритма является то, что перед битом LSB стоит много нулей.
[cloacked-pixel](https://github.com/livz/cloacked-pixel#:~:text=cloacked-pixel. Независимый от платформы инструмент Python для реализации LSB, скрытия файлов в младших битах изображений.) Реализация инструмента Зашифровано Стеганографию (с ключом) можно просмотреть с помощью Stegsolve. Особенностью этого алгоритма является то, что в начале указывается число. Согласно наблюдениям, это число должно соответствовать длине полезных данных, за которыми следует множество нулей, за которыми следуют данные. соответствующая длина.
Как использовать клоак-пиксель:
lsb.py скрыть #Стеганография
lsb.py экстракт #Извлечение
lsb.py анализ #Анализ и обнаружение
Инструменты для извлечения:
Для не шифрованияизLSB-стеганографии: экстракт Stegsolve
Для пароляизLSB-стеганография:[cloacked-pixel](https://github.com/livz/cloacked-pixel#:~:text=cloacked-pixel. Независимый от платформы инструмент Python для реализации LSB, скрытие файлов в пределах младших значащих битов изображений.)
тема:[WUSTCTF2020]alison_likes_jojo
Используйте outguess для реализации стеганографического шифрования и дешифрования.
шифрование:
outguess -k"my secret key"-d hidden.txt in.jpg out.jpg
После шифрования in.jpg перезапишет out.jpg, а содержимое скрытого.txt — это то, что необходимо скрыть.
Расшифровка:
outguess -k"my secret key"-r out.jpg hidden.txt
После расшифровки расшифрованный контент помещается в скрытый.txt.
Обнаружение: используйте инструмент stegdetect для обнаружения
Обнаружение: используйте инструмент stegdetect для обнаружения
Извлечение: F5-стеганография.
слепой водяной знак — это метод нанесения водяных знаков, невидимый невооруженным глазом.,Вы можете сохранить красивые фотографии в то же время,Защищайте авторские права ресурсов.
извлекать:
ImageIN: взаимодействие с графическим интерфейсом (рекомендуется использовать, когда получено только одно изображение)
BlindWaterMark: скрипт Python командной строки (вопрос CTF может дать вам две одинаковые картинки, поэтому сейчас лучше использовать этот инструмент)
Сначала распакуйте сжатое изображение JPEG, чтобы получить коэффициент DCT, затем выполните шифрование Blowfish для пароля, предоставленного пользователем скрытой информации, затем используйте алгоритм Blowfish для генерации псевдослучайной последовательности и, соответственно, найдите коэффициент DCT, который необходимо изменить; и измените его последний бит на тот, который необходимо скрыть Значение информации, и, наконец, повторно впечатайте коэффициенты DCT обратно в изображение JPEG.
извлекать:JPHS
JPHS имеет встроенные JPHIDE и JPSEEK.
Программа JPHide в основном реализует функцию шифрования и сокрытия информационных файлов в изображения JPEG.
Программа JPSeek в основном реализует обнаружение и извлечение информационных файлов из изображений JPEG, зашифрованных и скрытых с помощью программы JPHide.
SilentEye(.jpeg)
Символы нулевой ширины — это символы, которые не печатаются в браузерах, что примерно эквивалентно отображению: нет и не отображаются во многих текстовых приложениях, таких как электронная почта, QQ, WeChat, текстовые редакторы и т. д.
В HTML существует три типа символов нулевой ширины: пробелы нулевой ширины, лигатуры нулевой ширины и лигатуры нулевой ширины.
Соответствующий escape-символ символа нулевой ширины в браузере.
Пространства нулевой ширины ---
Переносы нулевой ширины ---
Лигатуры нулевой ширины ---
Кодировка символов нулевой ширины в Юникоде
\u200B \u200C \u200D
Скрытие полей в Word: выберите поле, которое вы хотите скрыть в Word, щелкните правой кнопкой мыши и выберите параметры шрифта. В столбце эффекта есть опция скрытия. Вы можете скрыть ее после выбора. Скрытый текст по умолчанию не печатается.
Crack: Если вы хотите узнать, есть ли скрытый текст, вы можете нажать «Файл» → «Параметры» → «Показать файл» → «Параметры» → «Показать в параметрах файла» и установить флажок «Скрытый текст» под вкладкой «Всегда показывать эти знаки форматирования на экране для просмотра». Чтобы выполнить печать, установите флажок «Печатать скрытый текст» на вкладке «Параметры печати». Или после сохранения файла выберите «Файл» → «Проверить» → «Проверить файл», «Файл» → «Проверить» → «Проверить файл», чтобы увидеть, есть ли какой-либо скрытый текст.
**Белый текст на белом фоне не может быть распознан как скрытый**.
Трескаться:
Выбрать все и изменить цвет шрифта на другой цвет
Строка поиска, например флаг и т. д.
Скрытые картинки в word: Картинки, вставленные в word, делятся на встроенные и невстроенные. Разница в том, что встроенные картинки будут перемещаться вместе с положением текста, то есть после возврата каретки картинки сдвинутся вниз. Однако невстроенные не будут следовать за текстом, то есть после возврата каретки изображение останется в исходном положении.
Измените суффикс слова на zip, а затем разархивируйте его.
Принцип заключается в использовании избыточного пространства в файлах байт-кода Python для распределения и сокрытия всего кода полезной нагрузки в этих фрагментированных пространствах.
Например, начиная с Python 3.6 происходит большое изменение, то есть независимо от того, есть ли у опкода параметры или нет, длина каждой инструкции составляет два байта, а опкод занимает один байт. Если опкод имеет параметры, то. другое слово. Этот раздел представляет параметры; если этот код операции не имеет параметров, тогда будет игнорироваться другой байт, обычно 00.
Stegosaurus — это инструмент стеганографии, который позволяет нам встраивать произвольные полезные данные в файлы байт-кода Python (pyc или pyo). Из-за низкой плотности кодирования наш процесс внедрения полезных данных не меняет ни поведение выполнения исходного кода, ни размер исходного файла. Код полезной нагрузки будет рассредоточен и встроен в байт-код, поэтому инструменты кода, такие как строки, не смогут найти фактическую полезную нагрузку. Модуль dis Python вернет байт-код исходного файла, а затем мы сможем использовать Stegosaurus для внедрения полезных данных.
Совет: Стегозавр поддерживает только Python3.6 и ниже.
Быстрый старт: -p текст, чтобы скрыть, -r, чтобы показать максимальное количество скрытых байт, -x для расшифровки.
Стеганография DeepSound
DeepSound — это инструмент стеганографии и аудиоконвертер, который скрывает секретные данные в аудиофайлы. Приложение также позволяет извлекать секретные файлы непосредственно из аудиофайлов или дорожек аудио компакт-диска. DeepSound можно использовать в качестве программного обеспечения для маркировки авторских прав на wave, flac, wma, ape и аудио компакт-дисках. DeepSound также поддерживает шифрование конфиденциальных файлов с использованием AES-256 (расширенный стандарт шифрования) для повышения защиты данных. Приложение также содержит простой в использовании модуль аудиоконвертера, который может кодировать несколько аудиоформатов (FLAC, MP3, WMA, WAV, APE) в другие форматы (FLAC, MP3, WAV, APE).
DeepSound 2.0 Free Download (soft112.com)
MP3стего стеганография
MP3stego — это инструмент командной строки (также имеет графический интерфейс).
decode -X -P
Стеганография SilentEye
https://sourceforge.net/projects/silenteye/
binwalk: может быстро определить, состоит ли файл из нескольких файлов, и разделить файлы. Если разделение прошло успешно, он окажется в каталоге целевого файла.
Файл анализа: имя файла binwalk
Отсоединенные файлы: binwalk -e имя файла
Команда formost: formost filename -o имя выходного каталога
dd: используется, когда автоматическое разделение файлов не удается или не может быть автоматически разделено по другим причинам.
Инструменты для извлечения:wbStego Steganography Tool (bailer.at)
Для стеганографии .bmp/.pdf полученный файл _is открывается с помощью Notepad++.
stegdetect
stegdetect используется для определения того, скрыты ли другие файлы или контент в изображениях типа jpg. Он может обнаруживать информацию, скрытую с помощью инструментов стеганографии, таких как JSteg, JPHide, OutGuess, Invisible Secrets, F5, AppendX и Camouflage.
Установить:
В среде Linux рекомендуется загрузить пакет исходного кода stegdetect, войти в его каталог и выполнить следующие инструкции.
linux32 ./configure
linux32 make
При использовании stegdetect есть некоторые параметры, которые кратко перечислены ниже:
q — показывать только изображения, которые могут содержать скрытый контент
n — Включите проверку заголовков файлов JPEG, чтобы снизить уровень ложных срабатываний. Если этот параметр включен, все файлы с областями комментариев будут обрабатываться так, как будто они не содержат встроенной информации. Обнаружение OutGuess отключено, если номер версии в идентификаторе JFIF файла JPEG не равен 1.1.
s — изменить чувствительность алгоритма обнаружения. Значение этого значения по умолчанию — 1. Степень совпадения результатов обнаружения прямо пропорциональна чувствительности алгоритма обнаружения. Чем больше значение чувствительности алгоритма, тем больше вероятность того, что обнаруженные подозрительные файлы содержат конфиденциальную информацию.
d — Печать отладочной информации с номерами строк.
t ——Укажите, какие инструменты стеганографии обнаруживать (по умолчанию обнаруживается jopi). Можно установить следующие параметры:
j — определить, внедрена ли информация в изображение, с помощью jsteg.
o — Определите, внедрена ли информация в изображение, с помощью outguess.
p — проверьте, внедрена ли информация в изображение с помощью jphide.
i — определить, внедрена ли информация в изображение с использованием невидимых секретов.
Общие команды
stegdetect.exe -tjopi -s 10.0 hide.jpg