
Инструмент для анализа и классификации вредоносного ПО.
Inhale — это инструмент для анализа и классификации вредоносного ПО, способный автоматизировать и масштабировать многие операции статического анализа.
Это бета-версия, предназначенная для тестирования, сбора отзывов и разработки сообществом.
Inhale начинался как серия небольших скриптов, которые я использовал при сборе и анализе большого количества вредоносного ПО из различных источников. Существует множество фреймворков и инструментов для выполнения подобной работы, но ни один из них не соответствовал моему рабочему процессу — быстрому поиску, классификации и хранению информации о большом количестве файлов. Некоторые также требуют дорогих ключей API и других платных сервисов.
В итоге я превратил эти скрипты в то, что люди могут быстро установить и использовать, будь то исследовательский сервер, ноутбук или недорогой компьютер вроде Raspberry Pi.
Этот инструмент создан для работы на Linux с использованием Python3, ElasticSearch, radare2, yara и binwalk. jq также требуется для красивого вывода данных из базы. Ниже приведены основные инструкции по установке.
В файле config.yml есть множество вещей, которые на самом деле ещё не настроены, просто оставьте их как есть, если в данной документации не указано иное.
Установка зависимостей
python3 -m pip install -r requirements.txt
База данных не требуется для использования Inhale, но если вы хотите её настроить, просто следуйте этим инструкциям и установите параметр "enable_database" в True в config.yml.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo service elasticsearch start
Вы также можете установить вручную, следуя этой документации
Кроме того, вы можете настроить полный стек ELK для визуализации и анализа данных. Это не обязательно для использования данного инструмента.
Важно установить radare2 из репозитория, а не из вашего менеджера пакетов. Версии из менеджера пакетов не имеют всех необходимых функций для inhale.
git clone https://github.com/radare/radare2
cd radare2
sys/install.sh
sudo apt-get install automake libtool make gcc
wget https://github.com/VirusTotal/yara/archive/v3.10.0.tar.gz
tar xvzf v3.10.0.tar.gz
cd yara-3.10.0/
./bootstrap.sh
./configure
make
sudo make install
Если вы получите ошибки о разделяемых объектах, попробуйте это исправить.
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf'
sudo ldconfig
Скорее всего, лучше всего установить binwalk из репозитория.
git clone https://github.com/ReFirmLabs/binwalk
cd binwalk
sudo python3 setup.py install
Дополнительная информация по установке дополнительных функций binwalk находится здесь.
Это библиотека, которая хэширует секции ELF-файлов для анализа семейств вредоносного ПО. telfhash зависит от tlsh, поэтому инструкции по установке обоих следующие:
Установка tlsh
git clone https://github.com/trendmicro/tlsh
cd tlsh
./make.sh
cd py_ext/
python3 ./setup.py build
sudo python3 ./setup.py install
Установка telfhash
git clone https://github.com/trendmicro/telfhash
cd telfhash
sudo python3 setup.py install
Если вы хотите использовать веб-сервер для размещения вывода inhale для общего доступа, установите переменные в config.yml на соответствующие пути и убедитесь, что каталоги существуют!
web:
gen_html: False
webdir: "/var/www/html/" # The actual web directory
fqdn: "http://threat.land" # Your website
in_path: "/var/www/html/inhaled/" # The path to inhale output
ex_path: "/var/www/html/exhaled/" # The path for db query cache output
Чтобы использовать HTML-вывод, запустите inhale следующим образом:
python3 inhale.py [all your args here] --html
Укажите файл для анализа по типу:
-f INFILE Анализировать один файл
-d DIRECTORY Анализировать каталог файлов
-u URLFILE Анализировать удалённый файл (url)
-r RDIRECTORY Анализировать удалённый каталог (url)
-l URLLIST Анализировать список URL-адресов в текстовом файле
Другие параметры:
-t TAGS Добавить дополнительные теги в вывод.
-b Отключить сигнатуры binwalk
-y YARARULES Указать пользовательские правила Yara
-o OUTDIR Сохранить анализируемые файлы в указанный каталог (по умолчанию: ./files/<date>/)
-i Только вывести информацию, не добавлять файлы в базу данных
--html Сохранить вывод в формате HTML в webdir.
Запуск inhale.py выполнит весь анализ указанного файла/каталога/URL и выведет результат в терминал.
Просмотреть информацию о /bin/ls, но не добавлять в базу данных
python3 inhale.py -f /bin/ls -i
Добавить каталог 'malwarez' в базу данных
python3 inhale.py -d malwarez/
Загрузить этот файл и добавить в базу данных
python3 inhale.py -u https://thugcrowd.com/chal/skull
Загрузить всё из этого удалённого каталога, пометить всё как "phishing":
python3 inhale.py -r http://someurl.com/opendir/ -t phishing
СОВЕТ: Используйте этот поиск по хэштегам Twitter для поиска интересных открытых каталогов, которые могут содержать вредоносное ПО. Используйте на свой страх и риск.
Вы можете передавать свои собственные правила yara с помощью -y, это огромная работа в процессе, и почти всё в "YaraRules" взято из https://github.com/kevthehermit/PasteHunter/tree/master/YaraRules. Спасибо @KevTheHermit
Используйте db.sh для запросов (скоро появится хороший скрипт)
db.sh *something* | jq .
Ниже представлена текущая модель данных, используемая для базы данных elasticsearch. Не каждое из этих полей будет использоваться для каждого файла. Все теги r2_* обычно зарезервированы для бинарных файлов.