вторник, 30 апреля 2013 г.

PDF-parser.py

Этот инструмент разбирает PDF документе на основные элементы. Это не скажется на PDF документе. Код парсера быстрый и грязный, я не рекомендую код данного парсера для разработки PDF анализаторов, но он работает.

Синтаксический анализатора изображен ниже:

Опция --stats выводит статистику значений объектов обнаруженных в PDF документе. Используйте ее, чтобы определить PDF документы с необычными/неожиданными объектами или чтобы классифицировать PDF документ. Например, я создал 2 Статистика вредоносных PDF-файлов, и хотя они были очень разные по содержанию и размеру, статистика была идентична, доказывая, что они использовали один вектор атаки и одного и тогоже же происхождения.

Опция --search=SEARCH ищет строку в косвенных объектов (не в потоке косвенных объектов). Поиск не чувствителен к регистру, и методам обфускации (так, как я еще не сталкиваться с этими методами обфускации в дикой природе).

Функция --filter применяет фильтр(ы) в поток. На данный момент, поддерживается только FlateDecode (например Zlib декомпрессия).

Опция --raw выводит исходные данные документа (например, не для печати представления Python).

--object выводит данные косвенного объекта, которого был указан ID. Этот ID не зависит от версии. Если несколько объектов имеют одинаковый идентификатор (без учета версии), все эти объекты будут выводиться.

--reference позволяет выбрать все объекты, ссылающийся на указанный косвенный объект. Этот ID не зависит от версии.

Тип Alows выбирает все объекты данного типа. Тип это имя, и является чувствительный к регистру и должно начинаться с символа слеш  (/).


Скачать:pdf-parser_V0_4_1.zip (https)
MD5: A0314C0CD8AAE376C7448E74D4A7472C

SHA256: 633B7400015B2C936103CC64C37435FB333B0F2634B2A6CD3A8949EAB1D18E9B

make-pdf tools

make-pdf-javascript.py позволяет создать простой PDF документ с внедренными JavaScript, который будет выполняться при открытии документа. По существу это клей-код mPDF.py модуль, который содержит класс с методами для создания заголовков, косвенные объекты, объектов потока, trailers и внешних ссылок.

20081109-134003

Если выполнить это без параметров, он будет генерировать PDF документа с JavaScript для отображения окна сообщения (вызов app.alert).

Предоставить собственный JavaScript, используйте опцию –javascript для скрипта в командной строке или –javascriptfile для сценария, находящегося в файле.

make-pdf-embedded.py создает PDF файл со встроенным файлом.




Download:

make-pdf_V0_1_4.zip (https)
MD5: D2630ABDE44DFFDD5640AEF391CE591D
SHA256: 11578A938F9FFCC16456519375AF8817C1F8F0D9C41C68BBF78882BFB36B8058

pdfid.py


Этот инструмент не является PDF парсером , но он будет искать определенные ключевые слова в PDF, что позволяет определить PDF документы, которые содержат (например) JavaScript или выполняет действие при открытии. PDFiD будут обрабатывать и обфускации.

Идея состоит в том, чтобы использовать этот инструмент первым, сортируя PDF документы, а затем анализировать подозрительные PDF.

Важным критерием дизайн для этой программы является простота. Для полного разбора PDF документа требуется очень сложная программа, и, следовательно, она обязана содержать много (уязвимостей) ошибок. Чтобы избежать вероятность, атака, я решил оставить эту программу очень простой (это даже проще, чем PDF-parser.py).

20090330-214223

PDFiD будет сканировать документ PDF для данного списка строк и подсчета вхождений (общая и всем) каждого слова:
  • obj
  • endobj
  • stream
  • endstream
  • xref
  • trailer
  • startxref
  • /Page
  • /Encrypt
  • /ObjStm
  • /JS
  • /JavaScript
  • /AA
  • /OpenAction
  • /JBIG2Decode
  • /RichMedia
  • /Launch
  • /XFA
Почти каждый PDF документы будут содержать первые 7 строк (объект через startxref), и в меньшей степени поток endstream. Я нашел пару PDF документы без xref или trailer, но это исключения (Кстати, это не является показателем вредоносности PDF документа).

/Page дает указание количества страниц в PDF документе. Большинство вредоносных PDF документе, имеют только одну страницу.




Download:
pdfid_v0_1_2.zip (https)
MD5: 60FC17757201F014A6ADA0744B74A740
SHA256: 1CF36C50427A2206275C322A8C098CD96A844CAF6077B105ADE9B1974789856

PDFTemplate.bt

Это шаблонов 010 Editor для PDF файлов.
Он особенно полезен для неправильных PDF файлов, как в этом примере с PDFUnknown структуры:


Download:
PDFTemplate.zip (https)
MD5: C124200C3317ACA9C17C2AE2579FCFEB
SHA256: 24C4FEAD2CABAD82EC336DDCFD404915E164D7B48FBA7BA1295E12BBAF8EB15D









Этот пост, чтобы подробно объяснить полиморфизм PDF

Это простой "Hello World"-PDF просматриваемый с помощью текстового редактора:


Он состоит из:
  • заголовка; 
  • Список объектов; 
  • таблица перекресных ссылок; 
  • Концевой словарь (Trailer). 

Описание физической структуру файла PDF.
Заголовок определяет, что это PDF файл (с указанием версии PDF файла), Trailer указывает на перекресную ссылку (начиная с позиции байта 642 в файле), и точки пересечения таблице применительно к каждому объекту (от 1 до 7 ) в файле (байт с 12 по 518). Объекты отсортированы в файле: 1, 2, 3, 4, 5, 6 и 7.


Trailer словарь
Этот словарь, проживающих в дополнении к файлу, а не в основной его части, это одна из первых вещей, которая будет обработана, программой перед чтением PDF документа. Он содержит записи таблицы перекрестных ссылок и таким образом объекты-к файлу для чтения. Его важные записи приведены в таблице 4-1 .


Ключ                Тип значения                             Значение
/Size*                  Integer                                           Общее количество записей в таблице 
                                                                                 перекрестных ссылок файла (обычно равно 
                                                                                 количеству объектов в файле плюс один).
/Root*                 Indirect reference to dictionary       ссылка на Каталога документа.
/Info                     Indirect reference to dictionary      документальная информация словаря./ID                      Array of two Strings                      Однозначно определяет файл в рабочий
                                                                                процесс. Первая строка решает, когда создается
                                                                                первый файл, второй изменены системы
                                                                                 документооборота при модификации файла.


Каталог документа является корневым объектом основного графика объект, от которого все остальные объекты могут быть достигнуты через косвенные ссылки.

Вот пример дополнения словаря:
<< 
        /Size 421 
        /Root 377 0 R 
        /Info 375 0 R 
        /ID [<75ff22189ceac848dfa2afec93deee03> <057928614d9711db835e000d937095a2>] 
>>

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


Логическая структура PDF файл имеет иерархическую структуру, корневой объект идентифицируется в Trailer. Объект 1 является корнем, объекты 2 и 3 детей объекта 1, и т.д. ..., давая эту логическую структуру:


Физическая структура PDF файл может быть преобразована в другую физическую структуру, без изменения логической структуры. Вот тот же файл, но теперь объекты отсортированы от 7 до 1 (я изменил порядок, в котором объекты появляются в файле):




Также необходимо обновить перекрестные ссылки в таблице, потому что каждый объект поменял свое место. Но кроме этого, ничего не изменилось.Еще корень объект 1, и дерево то же самое. Иными словами, логическая структура файла остается неизменной, что подразумевает, что визуализация и PDF файлы идентичны. Объекты могут появляться в случайных позициях в PDF файл без влияния на логическую структуру файла (т.е. рендеринга). По этой простой файл, с 7 объектов, у меня есть 5020 5040 (это 7!) возможных физических структур, просто изменение порядка объектов. Изменение порядка объектов только один из способов мутировать физическую структуру PDF файла.

Вы можете скачать как PDF файлы здесь.

отсюда

воскресенье, 28 апреля 2013 г.

Комплекс Buster Sandbox Analyzer + SandboxIE


SandboxIE — пожалуй, одна из самых перспективных программ-песочниц из имеющихся в открытом доступе. Связано это с рядом факторов, не последними в которых является постоянная поддержка и обновление программы автором, а также доступность бесплатного варианта использования с практически полным функционалом (во всяком случае для наших целей его вполне хватит). Самое главное — это поддержка в SandboxIE подключаемых плагинов, которые расширяют функционал.

Одним из таких плагинов является Buster Sandbox Analyzer или BSA. Этот плагин работает во многом подобно уже обсуждённой CWSandbox — внедряет динамическую библиотеку в адресное пространство исследуемого процесса, позволяя отслеживать API-вызовы в ходе выполнения. Кроме того, программа позволяет отслеживать сетевую активность, производить анализ изменённых файлов и другие полезные вещи.

Чтобы оценить работу этой системы, вначале построим её. Дополнительно нужно будет скачать такие два аддона на SandboxIE: Block Process Access и Antidel. Эти плагины позволяют с одной стороны скрыть от анализируемого процесса наличие других процессов вне песочницы, а с другой — воспрепятствовать удалению файлов в ходе работы (полезно при анализе некоторых дропперов).

Далее:

1. Устанавливаем SandboxIE.

2. Создаём дополнительную песочницу через Песочница — Создать новую песочницу. Я её назвал BSA — пусть и у вас будет так же для простоты.

3. Правой кнопкой мыши щёлкаем на песочницу BSA в списке окна программы и выбираем Настройки песочницы.

4. Критично: 
   Поведение — Отображать границу вокруг окна — выбрать красный
   Recovery. — Немедленное восстановление — убрать галку И вообще убедиться, что ни одной папки нет в восстановлении.
   Delete — поснимать все галки про удаление.
   Restrictions — Доступ в Internet — поудалять все программы, пока не появится надпись «Ни одна программа не сможет получить доступ в Internet». Запомните эту опцию — для некоторых зловредов доступ нужно будет открывать, но учтите, что в этом случае все пароли и информация с хостовой машины уйдут злоумышленнику.
    Restrictions — Доступ на запуск и выполнение — разрешить всем.
   Доступ низкого уровня и аппаратные средства — все галки поснимать. Это важно, иначе низкоуровневые вирусы типа TDSS, Mebratix, Mebroot пролезут из песочницы в систему.

     Остальные опции оставить по умолчанию. В дальнейшем можно их настроить на свой вкус — там всё достаточно понятно.

5. В папке, куда установили SandboxIE, создаём папку Buster Sandbox Analyzer, куда распаковываем всё, что скачано выше.

6. В главном окне SandboxIE выбираем Настроить — Редактировать конфигурацию. В открывшемся текстовом документе находим раздел BSA сразу под этими буквами добавляем строки:

InjectDll=C:\Program Files\SandboxIE\BSA\sbiextra.dll
InjectDll=C:\Program Files\SandboxIE\BSA\antidel.dll
InjectDll=C:\Program Files\SandboxIE\BSA\LOG_API\LOG_API32.DLL
OpenWinClass=TFormBSA
NotifyDirectDiskAccess=y

Путь у вас, конечно, может отличаться. Но порядок инжектируемых библиотек обязательно должен быть такой!

Теперь обратите внимание на раздел GlobalSettings, а конкретно на параметр FileRootPath:

FileRootPath=C:\Sandbox\Admin\%SANDBOX%
(у вас может отличаться).

Запомните его значение.

8. Сохраняем текстовый файл по оригинальному пути. В главном окне SandboxIE выбираем Настроить — Перезагрузить конфигурацию.

9. В главном окне SandboxIE выбираем: Настроить — Интеграция в проводник Windows — Запустить управление SandboxIE — когда запускается программа в песочнице и Действия «запускать в песочнице» — добавить пункт контекстного меню «Запустить в песочнице» для файлов и папок.

10. Запускаем Buster Sandbox Analyzer (вручную, из одноимённой папки путём запуска bsa.exe.

11. Выбираем Options — Analysis mode — Manual и Options — Program Options — Windows Shell Intagration — Add right-click action «Run BSA».

Всё готово для работы.

Как это использовать?

1. Отключаем резидентный антивирус (если имеется).

2. Наводим мышкой на изучаемый процесс и жмём правой кнопкой Run BSA. Откроется окно BSA.

3. Убедитесь, что в строке Sandbox folder to check указана папка, которая совпадает со значением параметра FileRootPath SandboxIE (см. выше), только вместо %SANDBOX% в ней указано BSA. В моём случае при параметре

FileRootPath=C:\Sandbox\Admin\%SANDBOX%

в BSA должно стоять
C:\Sandbox\Admin\BSA

4. Нажмите Start Analysis.

5. Наводим мышкой на изучаемый процесс и жмём правой кнопкой Запустить в песочнице. В предлагаемом списке песочниц выбираем BSA.

Всё. Процесс пойдёт. Вы будете видеть лог API-вызовов в BSA и активные процессы в главном окне SandboxIE. Иногда процесс завершится, тогда в BSA жмите Finish Analysis, иногда — его нужно прибить в SandboxIE (например, для файловых инфекторов), выбрав на правой мышкой на активной песочнице BSA Завершить программы.

По окончании BSA выдаст детальный отчёт об изменениях в системе, можно также через Viewer ознакомиться с другими отчётами. Если поставите в систему WinPcap — сможете даже перехватывать пакеты из песочницы, хотя там это не очень здорово организовано, нет, например, персонализации UDP-пакетов. Но если очень хочется — то можно, но при этом на хостовой системе следует заглушить все сетевые приложения, особенно торренты.

После работы, кликнув на песочнице BSA правой мышкой можно выбрать Просмотреть содержимое и изучить все файлы, созданные или изменённые процессом в ходе работы.

Логи BSA и файлы песочницы хранятся до следующего запуска нового процесса на исследование.

Следует заметить, что возможен прямой анализ изменений, вносимых в систему изучаемым файлом. Учитывая то, что виртуализованный реестр хранится C:\Sandbox\Admin\%SANDBOX%\RegHive, то перевести его в «понятный» вид крайне просто вот таким командным скриптом:

REG LOAD HKLM\uuusandboxuuu C:\Sandbox\DefaultBox\RegHive
REG EXPORT HKLM\uuusandboxuuu C:\Sandbox\sandbox.reg
REG UNLOAD HKLM\uuusandboxuuu

Только учтите, что «DefaultBox» у каждого будет индивидуален — но об этом уже мы говорили выше.

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

Возможность SandboxIE инжектировать динамические библиотеки в процесс может быть эффективно использована зловредного кода, выполняемого не в виде PE-исполняемого файла, а виде библиотеки, инжектируемой в адресное пространство процессов или регистрируемой в качестве сервиса. Но об этом — совершенно другой и непростой разговор.

отсюда

суббота, 27 апреля 2013 г.

Платформы для атак


Ниже перечислены некоторые из наиболее распространенных платформ мишенью для вредоносных программ.

  • AM
Макро вредоносные программы для VBA в Access 97 или более поздней версии

  • AndroidOS
Вредоносные, который работает на Android OS

  • ACAD
Эксплойты, которые используют AutoCAD

  • BAT
Вредоносные программы, которые требуется DOS, Windows NT или командный интерпретатор или клон (4DOS, 4NT)

  • Boot
вредоносные программы, которые находятся в главной загрузочной записи или загрузочного сектора DOS

  • ChromeOS
вредоносные программы, которые работает на Chrome OS

  • CM
VBA макросы вредоносных программ для Corel Draw! V 9.0 или более поздней

  • CS
Вредоносные программы для переводчика CorelScript во многих продуктах Corel

  • DOS
DOS заражает COM, EXE (MZ) или SYS файлы и требует некоторой версии MS-DOS или клона

  • HLP
Вредоносные программы для WinHelp. Отметим, JS и VBS скриптовые вредоносные программы встроенные в HTML и CHM файлов должны использовать JS или VBS платформы

  • HTML
Для файлов, которые содержат только вредоносный С даты и не могут быть классифицированы как JS, PHP или других сценариев

  • МАР
Вредоносные программы для IDA Pro

  • INF
вредоносных программ, которые использует Windows, файлы INF

  • INI
Вредоносные программы для MiRC файлы INI

  • iPhoneOS
вредоносных, который работает на платформе iPhone

  • MSIL
Вредоносные программы для. NET платформы

  • Java
Вредоносные программы для Java Runtime окружающей среды (автономные или браузер встраиваемый)

  • JS
Вредоносные программы для Jscript JavaScript или переводчиком. HTML и CHM встроенного вредоносного JS попадает в эту платформу типа

  • Linux
вредоносных которие работают на любом дистрибутиве

  • MacOS
вредоносных программ, которые работает на MacOS до OSX

  • MMS
вредоносных программ, которые распространяется через мультимедийных сообщений (MMS) сообщений

  • OM
на наличие вредоносных программ, который заражает по крайней мере, два приложения в Office 97 или более поздней версии Люкс. Также включает в себя связанные с ними продукты (Visio, проекты)

  • OS2
вредоносных программ, которые работает на OS / 2

  • OSX
вредоносных, которая работает на Mac OSX

  • PM
Вредоносные программы для проектов VBA в 98 или более поздней

  • PalmOS
Вредоносные программы для PalmOS

  • Perl
вредоносных программ, которые требуется Perl включая переводчика тех под WSH и HTML Embedded Perl вредоносных

  • PHP
Вредоносные программы для PHP скрипт

  • PPM
вредоносных Макрос для VBS в PowerPoint 97 или более поздней

  • PUM
Макро вредоносных программ для VBS Издатель в 97 или более поздней

  • REG
вредоносных В Windows формат файла реестра

  • SH
вредоносных программ, которые требуется Unix (-как) скрипт переводчика. Хостинг не влияет на имя платформы. Shell вредоносных специфичные для Linux, Solaris, HP-UX или других Unix-или специфичных для КШ, КШ, Bash, Tcsh или другие переводчики все подпадают под эту платформу имя.

  • SMS
вредоносные программы, которые распространяется через Система коротких сообщений (SMS).

  • Solaris
Вредоносные программы для Solaris

  • SymbOS
Вредоносные программы для Symbian OS

  • SVL
Вредоносные программы для Microsoft Silverlight

  • SWF
Вредоносные программы для Macromedia Flash

  • Unix
вредоносных программ, которые работает на Unix, Infectors ELF файлов и т.д.

  • VBS
Вредоносные программы для Visual Basic интерпретатор сценариев. Хостинг не влияет на обозначение платформы. Автономный Infectors VBS, которые требуют под WSH VBS, HTML встраиваемый VBS вредоносных программ и вредоносных встроенных в Windows Compiled HTML Help файлов (CHM), все подпадают под эту платформу типа.

  • W16
Вредоносные программы для 16-разрядных версий Windows (родной исполняемые)

  • W32
Вредоносные программы для 32-разрядных версий Windows (родной исполняемые)

  • W64
Вредоносные программы для 64-разрядных версий Windows (родной исполняемые)

  • W128
Вредоносные программы для 128-разрядных версий Windows (родной исполняемые)

  • WM
Макро вредоносных программ для VBA в Word 97 или более поздней версии

  • WinCE
Вредоносные программы для PocketPC (Windows CE)

  • WinHEX
Вредоносные программы для WinHex

  • WMA
Windows Media Audio (WMA), как правило, под видом mp3, что при загрузке или воспроизведении, будет перенаправлен на сайт, который сообщает пользователю, чтобы загрузить и установить кодек вредоносных Для прослушивания аудио

  • WMV
Windows Media Video (WMV), как правило, под видом AVI, что при загрузке или воспроизведении, будет перенаправлен на сайт, который сообщает пользователю, чтобы загрузить и установить вредоносный кодек для просмотра видео

  • XM
Макро вредоносных программ для VBA в Excel 97 или более поздней

отсюда