• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Расшифровка PDF сплойта

Mr.Di

(L1) cache
Пользователь
Регистрация
29.11.2006
Сообщения
781
Реакции
78
Итак, по просьбам трудящихся решил написать таки мини статью-обзор о том, как расшифровать ПДФ сплойт. В качестве подопытного у нас будет сплойт входящий в поставку связки с оч интересным названием zoPack версии 1.2. Чему созвучно название и как оно звучит это оставим на совести авторов. Для работы нам понадобятся два инструмента, первый это комплекс (не побоюсь этого слова) по исследования малвари Malzilla, второй это мини-приложения для вытаскивания и декрипта из пдф файло ява текста пожатого zlib - PDF_streams_inflater.

:zns5: Скачать|Download - PDF_streams_inflater
:zns5: Скачать|Download - Malzilla
:zns5: Скачать|Download - zoPack v1.2
Начнем.
Итак, открываем папку со связкой и сразу в глаза нам бросается файл pdf.pdf.

Он-то нам и нужен.
Далее распаковываем утилитку PDF_streams_inflater и запускаем её из под консоли с параметрами inflater.exe input_file output_folder, что на более понятный всем великий и могучий переводится как inflater.exe входной_файл папка_куда_будет_сваливаться расшифрованный_бред.

После запуска в папке с нашей связкой появилась еще одна связка с именем pdf. Открываем её и видим три файла: 1.tmp, 2.tmp, 3.tmp. Это все что было в пдф-файле под фильтром FlateDecode.

Открываем по очереди их. В первом какой-то бред.

Во втором, опп, во втором ЯС.

Откроем еще третий для проверки, снова бред какой-то.

Итак нам нужен файл 2.tmp.
Запускаем Malzilla.
Так-как мы имеем готовый ЯС, пусть и обфусцированный, сразу открываем вкладку Decoder, ПКМ на окне редактирования (верхнее которое), Load from file, выбираем 2.tmp и жмем ОТКРЫТЬ.

Итак, раз мы видим в функции gizgn вывод данных через EVAL, то ставим переключатель вывода в положение Replace eval() with evla. Чем ставим заглушки и делаем вывод исполненного кода в окно результата.

Жмем Run script, соглашаемся на замену eval'a и смотрим в окно результата.

Ctrl+A, Ctrl+C, вставляем полученный код в окно редактирования. Окно результат можно очистить.

Теперь главное решить что нам надо, я ставил пред собой цель расшифровать так, что-бы полуить шелл код и увидеть откуда загружается бинарник в итоге. Для этого нам надо что-бы сам скрипт отработал нормально. Бежим глазами и видим что? Видим что скрипт берет данные о версии просмотрщика через браузер
var XrCU20If = app.viewerVersion.toString(); . Чтож, обхитрим, эту строчку мы закоменчиваем, ниже пишем что-нибудь типа var XrCU20If = "700";. Большой разницы это не играет, главное попасть в номер версии, под который работает сплойт. Это проверяется ниже регулярными выражениеми и if'ами. Что это и как этим пользовать, я учить явно не буду. Пытаемся запустить, опять неполучается, чтож такое, спускаемся ниже по скрипту и видим строчку this.collabStore = Collab.collectEmailInfo({subj: "",msg: nabGR_dc});. Вот оно, коментим её, жмем запуск, вуаля, Script compiled. Теперь нам надо что-бы скрипт отдал нам шелл код и дальше мы уже будем смотреть что и как, поэтому ищем строчку var i0a7eJNL = unescape(...);.

Снимаем со строки unescape и ниже пишем document.write(i0a7eJNL);. Жмем запутить и видим в окне результат. Копируем этот текст и переходим на вкладку Misc decoders. Вставляем текст, ищем кнопку UC2 To Hex, жмем её и получаем "многа_букав". Копируем их и переходим на вкладку Hex View. Там ПКМ на окне редактирования, Paste as hex. Получаем разобранный текст, в конце которого видим строчку http://***.cc/sp/exe.php. Отсюда то и грузится наш бинарник)). Для любителей поковыряться дальше, можно еще посмотреть отдизассменный код (жмякнуть по кнопке Disassembel. Вот мы и пришли к логическому концу. Спасибо всем, кто соизволил почитать сие. В дальнейшем планирую написать стотею-обзор о том, как криптовать ПДФ.
Всем спасибо, все свободны.
 
работа без осмысления процеса может привести к отуплению :)
большинство пдф можно распаковать/запаковать php функциями gzcompress/gzuncompress, по расшифровке ява скрипта все сводится обычно к замене eval/document.write на функции типа alert. конечно скрипты бывают разные и иногда приходится его немного править, либо снимать защиты, но это уже совсем другая история
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх