Краткое изложение навыков решения различных проблем CTF (1) — стеганография
Краткое изложение навыков решения различных проблем CTF (1) — стеганография

Стеганография

(1) Стеганография потока данных NTFS

(2) стеганография base64

(3) Стеганография изображений

(4) Стеганография символов нулевой ширины

(5) словесная стеганография

(6) Стеганография PYC

(7) Аудиостеганография

(8) Синтез и разделение файлов

(9) Стеганография BMP/PDF

【Вложение】Инструменты обнаружения

(1) Стеганография потока данных NTFS

NTFS — это формат диска, поддерживаемый ядром серии операционных систем Microsoft Windows NT и специально разработанный для функций управления безопасностью, таких как сетевые и дисковые квоты и шифрование файлов. NTFS более стабильна, безопасна и мощна, чем файловая система FAT.

Этот файл потока данных NTFS, также называемый альтернативными потоками данных или сокращенно ADS, является одной из особенностей файловой системы NTFS. Он позволяет существовать отдельным файлам потоков данных, а также позволяет присоединять несколько потоков данных к одному файлу. то есть в дополнение к основному потоку файлов. увидеть с помощью менеджера ресурсов.

(2) стеганография base64

Видно, что строка кодировки 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).

декодирование base64

Удалите знак «=» в конце текста кода.

Отбросьте минимальное количество двоичных битов в конце двоичных данных, чтобы количество двоичных цифр было кратно 8, а затем выполните кодирование ASCII группами по 8 бит.

принцип стеганографии base64

существоватьдекодирование база64,После удаления знака равенства отбросьте некоторые двоичные цифры в конце, чтобы количество двоичных цифр было кратно 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)

(3) Стеганография изображений

Иногда файлов может быть много. Если вы хотите найти определенное поле ключевой информации, вы можете использовать следующую команду.

exiftool *|grep flag#Искать символы флага в информации exif всех файлов в текущей папке

Вы также можете напрямую указать флаг в примечаниях к атрибутам изображения. В этом случае вы можете использовать 010editor или winhex и другие инструменты, чтобы открыть изображение и выполнить поиск по ключевым словам, таким как flag, ctf и т. д., для просмотра.

Изменение ширины и высоты

IHDRстеганография(.png)

Измените ширину и высоту изображений в формате .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'))

.jpg стеганография ширины и высоты

X_image и Y_image сегмента SOF0 записывают ширину и высоту изображения соответственно и могут быть изменены напрямую, не беспокоясь об ошибках проверки.

Стеганография ширины и высоты .bmp
Стеганография IDAT (.png)

Блок данных изображения 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 стеганография

Незашифрованную стеганографию, реализованную с помощью инструмента 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, скрытие файлов в пределах младших значащих битов изображения.)

перехитрить стеганографию (.jpeg)

тема:[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 для обнаружения

Стеганография F5

Обнаружение: используйте инструмент stegdetect для обнаружения

Извлечение: F5-стеганография.

слепой водяной знак

слепой водяной знак — это метод нанесения водяных знаков, невидимый невооруженным глазом.,Вы можете сохранить красивые фотографии в то же время,Защищайте авторские права ресурсов.

извлекать:

ImageIN: взаимодействие с графическим интерфейсом (рекомендуется использовать, когда получено только одно изображение)

BlindWaterMark: скрипт Python командной строки (вопрос CTF может дать вам две одинаковые картинки, поэтому сейчас лучше использовать этот инструмент)

JPHide(.jpeg)

Сначала распакуйте сжатое изображение JPEG, чтобы получить коэффициент DCT, затем выполните шифрование Blowfish на пароле, указанном пользователем, чтобы скрыть информацию, затем используйте алгоритм Blowfish для генерации псевдослучайной последовательности и, соответственно, найдите коэффициент DCT, который необходимо; значение информации и, наконец, повторно впечатайте коэффициенты DCT обратно в изображение JPEG.

извлекать:JPHS

JPHS имеет встроенные JPHIDE и JPSEEK.

Программа JPHide в основном реализует функцию шифрования и сокрытия информационных файлов в изображения JPEG.

Программа JPSeek в основном реализует обнаружение и извлечение информационных файлов из изображений JPEG, зашифрованных и скрытых с помощью программы JPHide.

SilentEye(.jpeg)

(4) Стеганография символов нулевой ширины

Символы нулевой ширины — это символы, которые не печатаются в браузерах, что примерно эквивалентно отображению: нет и не отображаются во многих текстовых приложениях, таких как электронная почта, QQ, WeChat, текстовые редакторы и т. д.

В HTML существует три типа символов нулевой ширины: пробелы нулевой ширины, лигатуры нулевой ширины и лигатуры нулевой ширины.

escape-символ, соответствующий символу нулевой ширины в браузере.

Пространства нулевой ширины ---

Переносы нулевой ширины ---

Лигатуры нулевой ширины ---

Кодировка символов нулевой ширины в Юникоде

\u200B \u200C \u200D

(5) словесная стеганография

Скрытие полей в Word: выберите поле, которое вы хотите скрыть в Word, щелкните правой кнопкой мыши и выберите параметры шрифта. В столбце эффекта есть опция скрытия. Вы можете скрыть ее после выбора. По умолчанию скрытый текст не печатается.

Crack: Если вы хотите узнать, есть ли скрытый текст, вы можете нажать «Файл» → «Параметры» → «Показать файл» → «Параметры» → «Показать в параметрах файла» и установить флажок «Скрытый текст» под вкладкой «Всегда показывать эти знаки форматирования на вкладке экрана для просмотра». Чтобы выполнить печать, установите флажок «Печатать скрытый текст» на вкладке «Параметры печати». Или после сохранения файла выберите «Файл» → «Проверить» → «Проверить файл», «Файл» → «Проверить» → «Проверить файл», чтобы увидеть, есть ли какой-либо скрытый текст.

**Белый текст на белом фоне не может быть распознан как скрытый**.

Трескаться:

Выбрать все и изменить цвет шрифта на другой цвет

Строка поиска, например флаг и т. д.

Скрытые картинки в word: Картинки, вставленные в word, делятся на встроенные и невстроенные. Разница в том, что встроенные картинки будут перемещаться вместе с положением текста, то есть после возврата каретки картинки сдвинутся вниз. Однако невстроенные не будут следовать за текстом, то есть после возврата каретки изображение останется в исходном положении.

Измените суффикс слова на zip, а затем разархивируйте его.

(6) Стеганография PYC

Принцип заключается в использовании избыточного пространства в файлах байт-кода Python для распределения и сокрытия всего кода полезной нагрузки в этих фрагментированных пространствах.

Например, начиная с Python 3.6 происходит большое изменение, то есть независимо от того, есть ли у опкода параметры или нет, длина каждой инструкции составляет два байта, а опкод занимает один байт. Если опкод имеет параметры, то. другое слово. Этот раздел представляет параметры; если этот код операции не имеет параметров, тогда будет игнорироваться другой байт, обычно 00.

Stegosaurus — это инструмент стеганографии, который позволяет нам встраивать произвольные полезные данные в файлы байт-кода Python (pyc или pyo). Поскольку плотность кодирования низкая, наш процесс внедрения полезных данных не меняет ни поведение исходного кода, ни размер исходного файла. Код полезной нагрузки будет рассредоточен и встроен в байт-код, поэтому инструменты кода, такие как строки, не смогут найти фактическую полезную нагрузку. Модуль dis Python вернет байт-код исходного файла, а затем мы сможем использовать Stegosaurus для внедрения полезных данных.

Совет: Стегозавр поддерживает только Python3.6 и ниже.

Быстрый старт: -p текст, чтобы скрыть, -r, чтобы показать максимальное количество скрытых байт, -x для расшифровки.

(7) Аудиостеганография

Стеганография 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/

(8) Синтез и разделение файлов

binwalk: может быстро определить, состоит ли файл из нескольких файлов, и разделить файлы. Если разделение прошло успешно, он окажется в каталоге целевого файла.

Файл анализа: имя файла binwalk

Отсоединенные файлы: binwalk -e имя файла

Команда formost: formost filename -o имя выходного каталога

dd: используется, когда автоматическое разделение файлов не удается или не может быть автоматически разделено по другим причинам.

(9) Стеганография BMP/PDF

Инструменты для извлечения:wbStego Steganography Tool (bailer.at)

Для стеганографии .bmp/.pdf полученный файл _is открывается с помощью блокнота ++.

【Вложение】Инструменты обнаружения

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose