Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
yara-ttd — Используйте правила YARA на трассировках Time Travel Debugging | Kitploit
Инструменты/GitHubGitHub/airbus-cert/yara-ttd
Динамический анализ (песочница)Криминалистика памятиОбратная инженерияШелл-кодАнализ вредоносных программАнализ Бинарных Файлов
GitHubairbus-cert/yara-ttd

yara-ttd

Используйте правила YARA на трассировках Time Travel Debugging

Репозиторий
97133 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

yara-ttd — Абсолютная гроза упаковщиков

Используйте правила YARA для трассировок Time Travel Debugging

  1. Демонстрация
  2. Мотивация
  3. Установка
  4. Использование
  5. Планируемые возможности

Демонстрация

Бинарный файл, упакованный с помощью UPX

Простой бинарный файл, запускающий calc.exe, упакованный с помощью UPX. yara-ttd находит строку calc.exe в памяти модуля при создании потока.

Демонстрация UPX

Простой обфусцированный шеллкод, запускающий calc.exe

Испытуемый бинарный файл расшифровывает шеллкод и запускает его в новом потоке. yara-ttd находит строку calc.exe в куче при перехвате функции ntdll!NtCreateThreadEx.

Демонстрация шеллкода

Мотивация

YARA

YARA — мощный инструмент сопоставления с образцом для бинарных файлов.

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

-- Документация YARA

Благодаря YARA мы можем экономить много времени, автоматически классифицируя образцы вредоносных программ в конвейере перед их анализом.

Упаковщики

К сожалению, большинство образцов вредоносных программ защищены различными видами упаковщиков. Классическая схема runtime-упаковщика, такая как UPX или VMProtect, заключается в самораспаковке и запуске обфусцированного, а иногда и зашифрованного кода. Поэтому YARA не может работать с упакованными бинарными файлами, поскольку не найдёт совпадений в упакованном коде.

Time Travel Debugging

Time Travel Debugging — или TTD — это функция встроенного отладчика Windows WinDbg.

Time Travel Debugging — это инструмент, который позволяет записать трассировку выполнения процесса, а затем воспроизвести её в дальнейшем как в прямом, так и в обратном направлении. Time Travel Debugging (TTD) упрощает отладку, позволяя «перематывать» сеанс отладчика назад, вместо того чтобы воспроизводить проблему до тех пор, пока вы не найдёте ошибку.

-- Документация Microsoft

Для анализа вредоносных программ TTD — мощный инструмент, поскольку он позволяет записывать трассировку вредоносной программы в песочнице. Благодаря этому мы можем безопасно воспроизводить и передавать записанный файл за пределами песочницы для анализа вредоносной программы. Кроме того, TTD не является отладчиком, поэтому его не обнаружат классические антиотладочные приёмы, такие как PEB.BeingDebugged. Для более глубокого анализа TTD с точки зрения безопасности ознакомьтесь с этой статьёй: Deep dive into the TTD ecosystem

Конечно, TTD — это проприетарное программное обеспечение, и эта работа не могла бы появиться без ttd-bindings, разработанных commial.

yara-ttd

Идея yara-ttd заключается в использовании файлов трассировки, записанных TTD, вместе с самим yara для борьбы с упаковщиками.

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

С помощью yara-ttd вы можете выбрать набор позиций в файле трассировки, в которых хотите сканировать память своими правилами yara. Таким образом, вы можете перехватывать упакованный бинарный файл в любом месте с помощью своих правил yara!

yara-ttd предоставляет несколько стратегий сканирования памяти, например при загрузке модулей или при выделении виртуальной памяти, куда часто сохраняется код вредоносной программы после распаковки.

Установка

Пока что yara-ttd поддерживает только Windows, поскольку ему необходимо взаимодействовать с TTD API.

Сначала соберите проект:

root@kitploit:~
mkdir build
cd build
cmake ..
cmake --build .

Затем поместите файлы TTDReplay.dll и TTDReplayCPU.dll в ту же директорию, где находится исполняемый файл. Эти DLL-файлы можно найти в %LocalAppData%\Microsoft\WindowsApps\Microsoft.WinDbg_X\TTD

Использование

Сначала вам нужно записать трассировку (файл .run) вашей программы. Подробную справку о том, как записать трассировку TTD, смотрите в этом руководстве.

Затем просто выполните:

root@kitploit:~
.\yara-ttd path\to\rule path\to\trace\file

Режимы памяти

Существует три режима сканирования памяти:

  • Режим 0 (по умолчанию): память загруженных модулей
  • Режим 1: виртуально выделенная память + память загруженных модулей
  • Режим 2: полная память (может выполняться очень долго)

Режим можно выбрать с помощью -m:

root@kitploit:~
.\yara-ttd -m 1 path\to\rule path\to\trace\file

Как и в официальном CLI yara, вы можете использовать флаг -s для вывода подробностей о совпадениях, например адреса памяти и точного подправила, которое совпало.

Примечания о режиме виртуально выделенной памяти:

Поскольку TTD не сохраняет структуру памяти, yara-ttd перед сканированием вычисляет структуру адресов кучи для каждой временной позиции. Он создаст файл кэша с расширением .tmp в том же каталоге, где находится файл трассировки, для хранения структуры кучи. Если вы хотите повторно запустить yara-ttd на трассировке и загрузить структуру кучи из созданного файла кэша, просто выполните:

root@kitploit:~
.\yara-ttd -m 1 --cache=path\to\cache\file path\to\rule path\to\trace\file
Примечание о режиме полной памяти:

С помощью TTD мы можем получить доступ ко всему диапазону памяти процесса, который соответствует минимальному и максимальному адресу, возвращаемому GetSystemInfo. Тем не менее, в большинстве случаев этот диапазон слишком велик, чтобы сканировать его без какой-либо оптимизации.

Временные режимы

По умолчанию сканируются следующие временные позиции:

  • События исключений
  • События загрузки модулей
  • События создания потоков

С помощью флагов -t и -f вы можете выбрать другие позиции или вызовы функций для сканирования:

root@kitploit:~
.\yara-ttd -m 1 -t 3C1:A -t 5FF:22 -f ntdll!FreeVirtualMemory -f ntdll!NtCreateThreadEx path\to\rule path\to\trace\file

Флаг -t ожидает позиции TTD в формате major:minor (обе части в шестнадцатеричном виде, без 0x). Флаг -f ожидает строку в формате module_name!function_name.

Вы также можете добавить все функции, которые хотите перехватывать, в файл:

root@kitploit:~
> cat .\functions.txt
ntdll!FreeVirtualMemory
ntdll!NtCreateThreadEx

> .\yara-ttd -m 1 -F functions.txt path\to\rule path\to\trace\file

Сканирование нескольких файлов трассировки

Если у вас есть несколько файлов для сканирования с помощью yara-ttd, вы также можете сканировать целую директорию. yara-ttd проигнорирует все следующие расширения в папке:

  • .tmp (файлы кэша, созданные yara-ttd)
  • .idx (индексные файлы, созданные ttd)
  • .err (файлы ошибок, созданные ttd)
  • .out (файлы журналов, созданные ttd)

В следующем примере yara-ttd просканирует только файлы trace01.run и trace02.run.

root@kitploit:~
> dir .\traces
trace01.run
trace01.out
trace01.idx
trace02.run
trace01.run.err
trace01.tmp

> .\yara-ttd path\to\rule .\traces

В качестве альтернативы вы можете указать все трассировки, которые хотите сканировать, в файле и использовать флаг --scan-list или -l. При этом будут сканироваться файлы из списка, по одному на строку:

root@kitploit:~
> cat .\scan_me.txt
.\traces\trace01.run
.\traces\trace02.run

> .\yara-ttd -l path\to\rule .\scan_me.txt

При сканировании нескольких файлов yara-ttd выполняет сканирование последовательно, а не одновременно с многопоточностью, как исходный CLI yara.

Планируемые возможности

  • libyarattd с Python-биндингами
  • Интеграция с ttddbg и IDA: функция, загружающая IDA в конце сканирования в позиции совпадения по времени и памяти
  • TTD: следовать за дочерним процессом при его создании
Скачать инструмент