
Комплексный набор инструментов для безголового режима Ghidra.
Этот проект был действительно интересным и моим первым "большим" проектом! Сейчас существуют лучшие, более умные и сильные решения: https://github.com/LaurieWired/GhidraMCP
Увидимся, космический ковбой
Этот набор инструментов Ghidra представляет собой комплексный пакет утилит, предназначенных для оптимизации и автоматизации различных задач, связанных с запуском Ghidra в безголовом режиме. Набор включает в себя широкий спектр скриптов, которые могут выполняться как внутри Ghidra, так и параллельно с ним, позволяя пользователю выполнять такие задачи, как поиск уязвимостей, комментирование псевдокода с помощью ChatGPT и формирование отчетов с визуализацией данных анализируемой кодовой базы. Он позволяет пользователю загружать и сохранять собственные скрипты, а также взаимодействовать со встроенным API скрипта.
Автоматизация безголового режима: Набор инструментов позволяет беспрепятственно запускать Ghidra в безголовом режиме, обеспечивая автоматическую и пакетную обработку задач анализа кода.
Хранилище/управление скриптами: Включает в себя репозиторий готовых скриптов, выполняемых в Ghidra. Эти скрипты охватывают различные функциональные возможности, предоставляя пользователям возможность выполнять разнообразные задачи анализа и манипуляции. Пользователи могут загружать и сохранять собственные скрипты, что обеспечивает гибкость и возможность настройки под конкретные требования анализа. Также можно легко управлять своей коллекцией скриптов и организовывать её.
Гибкие входные параметры: Пользователи могут анализировать как отдельные файлы, так и целые папки, содержащие множество файлов. Это обеспечивает эффективный анализ как небольших, так и крупных кодовых баз.
Перед использованием этого проекта убедитесь, что установлено следующее ПО:
pip install sekiryu.Чтобы использовать скрипт, просто запустите его с бинарным файлом и необходимыми опциями.
sekiryu [-F FILE][OPTIONS]Обратите внимание, что выполнение анализа бинарных файлов с помощью Ghidra (или любого другого продукта) является относительно медленным процессом. Поэтому ожидайте, что анализ займет несколько минут в зависимости от производительности хост-системы. Если вы запускаете Sekiryu для очень большого приложения или большого количества бинарных файлов, будьте готовы ЖДАТЬ
"server.py" создан в первую очередь для того, чтобы скрипты могли взаимодействовать с Ghidra друг с другом и с хост-системой.
Пользователь может легко разработать свой собственный скрипт, загрузить и сохранить его в папке скриптов, а затем использовать известные функции
API для взаимодействия с Ghidra.
Для использования необходимо импортировать xmlrpc в свой скрипт и вызывать функцию, например: proxy.send_data
Скрипты сохраняются в папке /modules/scripts/. Вы можете просто скопировать туда свой скрипт.
В файле ghidra_pilot.py находится следующая функция, которая отвечает за запуск безголового скрипта Ghidra:
def exec_headless(file, script):
"""
Выполнить безголовый анализ Ghidra
"""
path = ghidra_path + 'analyzeHeadless'
# Установка переменных
tmp_folder = "/tmp/out"
os.mkdir(tmp_folder)
cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"
# Запуск Ghidra с указанным файлом и скриптом
try:
p = subprocess.run([str(path + cmd)], shell=True, capture_output=True)
os.rmdir(tmp_folder)
except KeyError as e:
print(e)
os.rmdir(tmp_folder)
Использование довольно прямолинейно: вы можете создать свой собственный скрипт, а затем добавить функцию в ghidra_pilot.py, например:
def yourfunction(file):
try:
# Настройка скрипта
script = "modules/scripts/your_script.py"
# Запуск функции exec_headless в новом потоке
thread = threading.Thread(target=exec_headless, args=(file, script))
thread.start()
thread.join()
except Exception as e:
print(str(e))
Файл cli.py отвечает за интерфейс командной строки и позволяет добавлять аргументы и связанные команды следующим образом:
analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Ваше сообщение справки", action="store_true")
The xmlrpc.server module is not secure against maliciously constructed data. If you need to parse
untrusted or unauthenticated data see XML vulnerabilities.
Для получения дополнительной информации о Bushido Security посетите наш веб-сайт: https://www.bushido-sec.com/.