Pdf stego — различия между версиями

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск
м
м (Утилиты)
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
 
Рассмотрим общие моменты сокрытия информации в pdf документе.
 
Рассмотрим общие моменты сокрытия информации в pdf документе.
  
==Архив==
+
==Изучение PDF==
 +
 
 +
===Архив===
  
 
Первое, что я обычно делаю, так это разархивирование.  
 
Первое, что я обычно делаю, так это разархивирование.  
Строка 31: Строка 33:
 
Взято с https://dillonkorman.com/2015-cams-ctf-writeups/
 
Взято с https://dillonkorman.com/2015-cams-ctf-writeups/
  
==Сливание с фоном==
+
===Сливание с фоном===
  
 
Так же иногда встречаются задания, где  достаточно просто выделить весь файл
 
Так же иногда встречаются задания, где  достаточно просто выделить весь файл
Строка 42: Строка 44:
  
  
==Пустые места после заголовка файла==
+
===Пустые места после заголовка файла===
  
 
Чтобы проверить, есть ли пустые места в начале файла, то достаточно открыть его и какой-нибудь другой PDF
 
Чтобы проверить, есть ли пустые места в начале файла, то достаточно открыть его и какой-нибудь другой PDF
Строка 58: Строка 60:
  
  
==Сокрытие текста==
+
===Сокрытие текста===
  
 
Встречаются задания,которых состоит в поиске скрытого в pdf файле тексте.
 
Встречаются задания,которых состоит в поиске скрытого в pdf файле тексте.
Строка 74: Строка 76:
  
  
==Приписывание текста до заголовка %PDF==
+
===Приписывание текста до заголовка %PDF===
  
 
Такое вполне возможно. Определяется с помощью HexEdit.  
 
Такое вполне возможно. Определяется с помощью HexEdit.  
Строка 82: Строка 84:
  
 
Пока отсутствует.
 
Пока отсутствует.
 +
 +
 +
===Скрытые обьекты===
 +
 +
В PDF могут присутствовать обьекты, которые не будут выводиться на экран.
 +
 +
Для этого потребуется pdf-parser.py:
 +
 +
1. Выполним команду
 +
 +
<syntaxhighlight lang="bash" line="1" style="overflow-x:scroll" >
 +
python2 pdf-parser.py  <pdf_path>
 +
</syntaxhighlight>
 +
 +
2. Найдем номер нужного нам обьекта и выполним следующее:
 +
 +
<syntaxhighlight lang="bash" line="1" style="overflow-x:scroll" >
 +
python2 pdf-parser.py  <pdf_path> --object <номер_обьекта>
 +
</syntaxhighlight>
 +
 +
2.1 Если у обьекта есть строка '''Referencing: <число> 0 R''', то вероятнее всего этот обьект является указателем на данные хранящиеся в обьекте под номером <число>.
 +
 +
3. Получим байты нужного обьекта:
 +
 +
<syntaxhighlight lang="bash" line="1" style="overflow-x:scroll" >
 +
python2 pdf-parser.py  <pdf_path> --object <номер_обьекта> --raw --filter
 +
</syntaxhighlight>
  
  
Строка 87: Строка 116:
 
==Утилиты==
 
==Утилиты==
  
====WBSTEGO====
+
===WBSTEGO===
  
 
http://wbstego.wbailer.com/
 
http://wbstego.wbailer.com/
  
====HexEdit====
+
===HexEdit===
  
 
http://www.hexedit.com/
 
http://www.hexedit.com/
  
====pdfid.py====
+
===pdfid.py===
  
 
Показывает, какие данные находятся в PDF файле (скрипты и тд)
 
Показывает, какие данные находятся в PDF файле (скрипты и тд)
Строка 101: Строка 130:
 
https://github.com/hiddenillusion/AnalyzePDF/blob/master/pdfid.py
 
https://github.com/hiddenillusion/AnalyzePDF/blob/master/pdfid.py
  
 +
===peepdf===
 +
 +
Преимущественно для поиска malware кода в PDF
 +
 +
https://github.com/jesparza/peepdf
 +
 +
 +
===qpdf pdfextract===
 +
 +
Утилита, встроенная в Ubuntu (тоже много чего может)
 +
 +
https://github.com/qpdf/qpdf
  
 
==Райтапы==
 
==Райтапы==
  
 
Пока пусто.
 
Пока пусто.

Текущая версия на 16:49, 15 июля 2018

Рассмотрим общие моменты сокрытия информации в pdf документе.

Изучение PDF

Архив

Первое, что я обычно делаю, так это разархивирование. Для этого лично я пользовался программой The Unarchiver.

После чего получаем список файлов и уже вручную ищем флаг.

Пример таска №1

    1.Нам дан PDF файл, после открытия которого наблюдаем картинку с некоторыми 
    закрашенными частями
    2.Разархивируем его.
    3.Находим картинку в папке, в которую разархивировали.
    4.Получаем флаг!

Взято с: https://ctf-team.vulnhub.com/picoctf-2014-redacted/

Пример таска №2

В оригинальном райтапе было несколько лишних действий, поэтому я упростил его:

    1.Дан PDF файл, ничего необычного в нем на первый взгляд не находим.
    2.Разархивируем его.
    3.Находим файл flag.jpg
    4.Profit!



Взято с https://dillonkorman.com/2015-cams-ctf-writeups/

Сливание с фоном

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

Пример таска

http://bt3gl.github.io/csaw-ctf-2014-forensics-200-obscurity.html


Пустые места после заголовка файла

Чтобы проверить, есть ли пустые места в начале файла, то достаточно открыть его и какой-нибудь другой PDF файл HEX редактором, например HexEdit.

В данном случае чаще всего происходит встраивание текста в PDF файл используя утилиту wbStego4.3open

Скачать утилиту с сайта: http://wbstego.wbailer.com/

Пример таска

Взято с https://www.youtube.com/watch?v=ZFs58z_OzGw


Сокрытие текста

Встречаются задания,которых состоит в поиске скрытого в pdf файле тексте.

Для этого нам поможет утилита pdf2txt.py, скачать которую вы можете по ссылке http://www.unixuser.org/~euske/python/pdfminer/#pdf2txt


Пример таска

    1. Дан PDF файл.
    2. Либо сразу прогоняем через утилиту pdf2txt, либо прежде посмотрим в его код
    и убедимся что текст там присутствует. В этом поможет pdfid.py и pdf-parser.py
    3. После того, как прогнали через pdf2txt, получаем флаг в текстовом виде.
    4. Profit!


Приписывание текста до заголовка %PDF

Такое вполне возможно. Определяется с помощью HexEdit. Достаточно изучить весь текст который будет идти до заголовка файла %PDF.

Пример таска

Пока отсутствует.


Скрытые обьекты

В PDF могут присутствовать обьекты, которые не будут выводиться на экран.

Для этого потребуется pdf-parser.py:

1. Выполним команду

python2 pdf-parser.py  <pdf_path>

2. Найдем номер нужного нам обьекта и выполним следующее:

python2 pdf-parser.py  <pdf_path> --object <номер_обьекта>

2.1 Если у обьекта есть строка Referencing: <число> 0 R, то вероятнее всего этот обьект является указателем на данные хранящиеся в обьекте под номером <число>.

3. Получим байты нужного обьекта:

python2 pdf-parser.py  <pdf_path> --object <номер_обьекта> --raw --filter


Утилиты

WBSTEGO

http://wbstego.wbailer.com/

HexEdit

http://www.hexedit.com/

pdfid.py

Показывает, какие данные находятся в PDF файле (скрипты и тд)

https://github.com/hiddenillusion/AnalyzePDF/blob/master/pdfid.py

peepdf

Преимущественно для поиска malware кода в PDF

https://github.com/jesparza/peepdf


qpdf pdfextract

Утилита, встроенная в Ubuntu (тоже много чего может)

https://github.com/qpdf/qpdf

Райтапы

Пока пусто.