Источник: https://github.com/AnaktaCTF/CTF/blob/main — steganography/image_steganography.md
Стеганография — это способ спрятать информацию внутри другой информации или физического объекта так, чтобы ее нельзя было обнаружить.
С помощью стеганографии можно спрятать практически любой цифровой контент, включая тексты, изображения, аудио- и видеофайлы.
А когда эта спрятанная информация поступает к адресату, ее извлекают. (https://www.kaspersky.ru/)
Разница между стеганографией и криптографией
Основные различия между этими методами защиты информации:
| Характеристика | Стеганография | Криптография |
|---|---|---|
| Основной принцип | Скрытие существования информации | Шифрование информации |
| Выявляемость | Трудно обнаружить без специализированных методов анализа | Видно, что данные зашифрованы |
| Безопасность | Основана на незаметности | Основана на математической стойкости алгоритмов |
| Защита от модификации | Уязвима при малейшем изменении контейнера | Алгоритмы обеспечивают целостность данных |
| Применение | Водяные знаки, защита информации, сокрытие данных | Шифрованная переписка, защита файлов, цифровые подписи |
Оба метода можно комбинировать: сначала зашифровать данные, а затем скрыть их с помощью стеганографии, что значительно повышает безопасность передаваемой информации.
Области применения
Стеганография находит применение в различных сферах:
- Защита конфиденциальных данных — скрытая передача информации в условиях цензуры или наблюдения.
- Цифровые водяные знаки — защита авторских прав на изображения, видео и аудиофайлы.
- Кибербезопасность — скрытая коммуникация между агентами, обход контроля трафика.
- Военные и разведывательные операции — скрытая передача секретных сообщений.
- Компьютерные игры и ARG (Alternative Reality Games) — создание скрытых посланий и головоломок.
История стеганографии
Древние методы скрытия информации
Идея скрытия информации появилась задолго до появления цифровых технологий. Несколько известных исторических методов:
- Голая кожа (V век до н.э.) — греческий полководец Гистией в условиях персидского контроля выбрил голову слуги, написал на коже тайное послание и дождался, пока волосы отрастут.
- Невидимые чернила (I век н.э.) — использовались в Древнем Риме и Средневековье. Для письма применяли лимонный сок или молоко, проявлявшиеся при нагревании.
- Микротекст — в XIX веке в письмах использовали мельчайший шрифт, чтобы спрятать информацию в безобидных письмах или книгах.
- Татуировки и узоры — в XVII–XIX веках моряки иногда наносили татуировки с закодированными сообщениями для передачи секретной информации.
Развитие методов в цифровую эпоху
С появлением компьютеров и интернета стеганография получила новый виток развития:
- 1990-е — Разработка первых цифровых методов, таких как изменение наименее значащих битов (LSB) в изображениях.
- 2000-е — Появление алгоритмов, использующих преобразования (DCT, DWT, FFT), что позволило более эффективно скрывать данные.
- 2010-е — Развитие машинного обучения, позволяющего как создавать более сложные методы скрытия, так и выявлять их.
- Настоящее время — Интеграция стеганографии в защиту авторских прав, информационную безопасность и скрытые коммуникации.
Стеганография продолжает развиваться, оставаясь важным инструментом в мире цифровой безопасности.
Основные методы стеганографии в изображениях
Метод наименее значащих битов (LSB)
Принцип работы
Метод LSB (Least Significant Bit) основан на изменении младших битов цветовых компонентов пикселей изображения. Поскольку изменения в младших битах незначительно влияют на визуальное восприятие, скрытая информация остаётся незаметной для человеческого глаза.
Как это работает?
- Берётся исходное изображение (контейнер).
- Бинарное представление скрываемых данных заменяет младшие биты цветовых каналов (обычно RGB).
- Полученное изображение сохраняется, и оно визуально неотличимо от оригинала.
Пример:
- Исходный пиксель:
10110011 01101110 11001001(RGB) - Кодируем символ "A" (ASCII:
01000001) - Заменяем младшие биты:
10110010 01101111 11001000
Преимущества
- Простота реализации.
- Минимальное визуальное искажение.
Недостатки
- Легко обнаруживается при стегоанализе.
- Уязвимость к сжатию и обработке изображений.
Получение exif файлов
EXIF - это информация, записываемая в файл снимка большинством цифровых фотокамер, и содержащая тестовую информацию: дата и время съемки, модель камеры, съёмочные параметры
(выдержка, баланс белого, фокусное расстояние, вспышка, источник света, диафрагма, цифровое увеличение), комментарий к файлу, авторские права и т.д.
(https://help.inbox.lv/category/10085/question/10255?language=ru)
Как пример, можно узнать место, в котором был сделан снимок:


Узнаем, что снимок был сделан по адресу Place des Capucines, Belsunce, Marseille 1er Arrondissement, Марсель, Marseille, Буш-дю-Рон, Прованс — Альпы — Лазурный Берег, Метрополия Франции, 13001, Франция.
(задание с сайта root-me.org EXIF-Metadata)
Методы преобразования (DCT, DWT, FFT)
Методы, основанные на преобразованиях, внедряют данные в частотные компоненты изображения, что делает их более устойчивыми к сжатию и обработке.
DCT (Discrete Cosine Transform, дискретное косинусное преобразование)
Используется в JPEG-сжатии. В скрытом сообщении изменяются частотные коэффициенты после DCT, что позволяет сохранить информацию даже при сжатии JPEG.
DWT (Discrete Wavelet Transform, дискретное вейвлет-преобразование)
Позволяет внедрять данные в многомасштабные представления изображения, что делает метод более устойчивым к атакам стегоанализа.
FFT (Fast Fourier Transform, быстрое преобразование Фурье)
Применяет частотный анализ для встраивания данных в малозаметные компоненты изображения.
Преимущества методов преобразования:
- Высокая устойчивость к сжатию.
- Трудность обнаружения скрытых данных.
Недостатки:
- Сложность реализации.
- Требуется больше вычислительных ресурсов.
Альфа-канал стеганография
Принцип работы
Использует канал прозрачности (альфа-канал) изображений PNG для скрытия информации. Поскольку альфа-канал регулирует степень прозрачности пикселей, его изменение не всегда заметно глазу.
Как работает?
- В альфа-канале внедряется двоичный код скрытых данных.
- Значения прозрачности слегка корректируются, чтобы избежать визуального обнаружения.
- Восстановление информации возможно только при анализе альфа-канала.
Преимущества
- Высокая скрытность.
- Устойчивость к изменению цветовых данных.
Недостатки
- Работает только с изображениями, поддерживающими альфа-канал (PNG, TIFF).
- Некоторые программы могут преобразовывать PNG в формат без альфа-канала, уничтожая скрытые данные.
Работа с изображениями с помощью Stegsolve
Для Windows ОС необходимо установить http://www.caesum.com/handbook/Stegsolve.jar и Java Runtime Environment
Для Linux ОС https://github.com/zardus/ctf-tools/blob/master/stegsolve/install
С помощью Stegsolve можно посмотреть формат файла

Разные планы файла

Открыть несколько изображений и посмотреть из наложения:

Посмотреть режимы файла

Использование шумов и артефактов сжатия
Принцип работы
Метод использует естественные шумы или артефакты сжатия (например, JPEG) для скрытия данных. Данные внедряются в шумовые компоненты, что делает их менее заметными.
Реализация
- Анализируются шумовые характеристики изображения.
- В шумовые области внедряются скрытые данные.
- Изменения распределяются случайным образом, что затрудняет обнаружение.
Преимущества
- Высокая скрытность.
- Устойчивость к обработке изображений.
Недостатки
- Трудность извлечения информации без оригинального изображения.
- Зависимость от характеристик контейнера.
Изображение-архив
Изображение может оказаться архивом. Обычно это заметно, если фото весит больше, чем должно весить при таких размерах.
Обычно алгоритм работы такой:
- Изменить тип файла (например сменить окончание .png на .zip или любой другой тип архива)
- Разорхивировать файл
- Открыть файлы архива, в зависимости от ситуации можно сразу найти флаг или применить другие методы
Обзор инструментов
StegHide
StegHide — это один из популярных инструментов для скрытия данных в изображениях. Он использует метод наименее значащих битов (LSB) для внедрения информации в пиксели изображений. StegHide поддерживает различные форматы файлов, включая BMP, WAV и другие.
Пример использования StegHide:
steghide embed -cf image.png -ef secret.txt
Эта команда скрывает содержимое файла secret.txt в изображении image.png.
OpenStego
OpenStego — это открытый инструмент, который также использует метод LSB для скрытия данных. Он позволяет не только скрывать информацию, но и защищать её с помощью пароля, обеспечивая дополнительную безопасность.
Пример использования OpenStego:
java -jar OpenStego.jar embed -sf image.png -ef secret.txt -p password
Здесь изображение image.png скрывает текстовый файл secret.txt с паролем password.
SilentEye
SilentEye — это еще один инструмент для скрытия информации в изображениях и аудиофайлах. Он предоставляет графический интерфейс и позволяет легко спрятать данные в разных форматах изображений, таких как PNG, JPEG, BMP.
Пример использования SilentEye:
- Откройте SilentEye.
- Выберите изображение, в которое хотите вставить данные.
- Загрузите файл с информацией, которую хотите скрыть.
- Установите пароль для защиты скрытой информации.
- Нажмите "Embed", чтобы сохранить изображение с скрытой информацией.
Пример реализации на Python
В Python можно использовать библиотеки, такие как Pillow или OpenCV, для реализации стеганографии. Рассмотрим пример, как скрыть текст в изображении с использованием библиотеки Pillow:
from PIL import Image
def encode_image(image_path, message):
img = Image.open(image_path)
binary_message = ''.join(format(ord(i), '08b') for i in message)
binary_message += '1111111111111110' # Добавляем окончание сообщения
pixels = img.load()
data_index = 0
for y in range(img.height):
for x in range(img.width):
pixel = list(pixels[x, y])
for color in range(3): # RGB
if data_index < len(binary_message):
pixel[color] = pixel[color] & ~1 | int(binary_message[data_index])
data_index += 1
pixels[x, y] = tuple(pixel)
if data_index >= len(binary_message):
break
img.save('encoded_image.png')
print("Image encoded successfully.")
def decode_image(image_path):
img = Image.open(image_path)
pixels = img.load()
binary_message = ""
for y in range(img.height):
for x in range(img.width):
pixel = pixels[x, y]
for color in range(3): # RGB
binary_message += str(pixel[color] & 1)
message = ''.join(chr(int(binary_message[i:i+8], 2)) for i in range(0, len(binary_message), 8))
return message.split('1111111111111110')[0] # Отделяем скрытое сообщение
# Пример использования:
encode_image('image.png', 'This is a hidden message.')
decoded_message = decode_image('encoded_image.png')
print("Decoded message:", decoded_message)
Этот пример показывает, как можно закодировать текстовое сообщение в изображение, а затем извлечь его обратно.
Обнаружение стеганографии (стегоанализ)
Методы выявления скрытых данных
-
Анализ наименее значащих битов (LSB)
Метод LSB — один из самых простых и распространенных, и он также является самым уязвимым к стегоанализу. Для выявления скрытых данных можно анализировать статистику изменения пикселей и искать паттерны, характерные для использования LSB. -
Частотный анализ
Методы, такие как DCT, DWT или FFT, изменяют частотные компоненты изображения, что делает его менее заметным для человеческого глаза, но позволяет специалистам по стегоанализу обнаружить скрытые данные с помощью анализа изменений частот. -
Анализ сжатия
Данные, внедренные в изображение, могут быть уничтожены при сильном сжатии (например, JPEG), но иногда для анализа достаточно исследовать остаточные артефакты сжатия. -
Использование алгоритмов машинного обучения
Современные методы машинного обучения могут быть использованы для автоматического обнаружения скрытых данных. Например, нейронные сети могут быть обучены на изображениях с и без скрытых данных для выявления скрытых паттернов.
Инструменты для анализа изображений
- StegExpose — это инструмент для анализа изображений на наличие скрытых данных, особенно в методах LSB.
- zsteg — инструмент для выявления скрытых данных в изображениях PNG и BMP, анализирует биты и частотные компоненты.
- ImageMagick — позволяет выполнить анализ и извлечение данных из изображений, а также обработку метаданных и альфа-каналов.
Безопасность и этические аспекты
Опасности скрытия информации
-
Нарушение законов
Использование стеганографии для скрытия информации может быть нарушением законов, особенно в контексте киберпреступности, шпионажа или распространения запрещенного контента. -
Риски безопасности
Хотя стеганография может использоваться для защиты конфиденциальных данных, она также может стать инструментом для скрытых атак, распространения вирусов, троянов и шпионских программ. -
Ошибка в передаче
В некоторых случаях скрытые данные могут быть случайно повреждены или уничтожены, если изображение подвергается изменению (например, сжатию или редактированию).
Использование в кибербезопасности и киберпреступности
- Кибербезопасность: Стеганография может использоваться для защиты данных, обеспечения конфиденциальности в условиях цензуры и мониторинга.
- Киберпреступность: Злоумышленники могут использовать стеганографию для скрытого обмена информацией, например, для управления ботнетами или для скрытого обмена файлами с вредоносным ПО.
Заключение
Будущее стеганографии
Стеганография продолжает развиваться, и с каждым годом она становится более устойчивой к различным методам анализа. В будущем можно ожидать появления новых методов, использующих более сложные математические алгоритмы и машинное обучение.
Выводы и перспективы развития технологии
- Повышение сложности скрытия данных: Включение искусственного интеллекта и сложных алгоритмов шифрования сделает стеганографию ещё более эффективной.
- Рост применения в цифровой безопасности: Стеганография будет продолжать использоваться для защиты конфиденциальности данных и анонимности в интернете.
- Этические и правовые вопросы: Важно будет учитывать этические и правовые аспекты, связанные с использованием стеганографии, особенно в контексте киберпреступности и защиты прав интеллектуальной собственности.