Инструмент статического и динамического анализа для обнаружения вредоносного кода, подозрительных бинарных файлов и нарушений конфиденциальности
Установка - Использование - Динамический анализ - YARA-правила - CI/CD
Документация: English | Tiếng Việt
Инструмент статического и динамического анализа для обнаружения вредоносного кода, подозрительных бинарных файлов и нарушений конфиденциальности. Анализирует исходный код, скомпилированные исполняемые файлы (.exe, .dll, .elf), пакеты macOS (.app, .dmg, .pkg), мобильные приложения (.apk, .ipa) и пакеты приложений с помощью YARA-правил, изолированного запуска в Docker, мобильного анализа MobSF, деобфускации полезных нагрузок и формирования отчетов в нескольких форматах (JSON, HTML, SARIF).
| Категория | Примеры обнаружения |
|---|---|
| Обратные оболочки | Python socket+subprocess, bash /dev/tcp, netcat, PowerShell TCPClient, socat |
| Бэкдоры | Веб-шеллы (PHP/JSP/ASP.NET), внедрение команд (Python/JS/Java/Ruby/Go/C), bind-оболочки, скрытые маршруты, удаленная загрузка кода, создание пользователей, SSTI, небезопасная десериализация |
| Обфускация | Цепочки Base64+eval, создание из char-кодов, hex-полезные нагрузки, динамические импорты |
| Криптомайнеры | Подключения к пулам Stratum, API майнинга, адреса кошельков (BTC/ETH/XMR) |
| Программы-вымогатели | Обход файлов для шифрования, сообщения о выкупе, шаблоны шифрования+переименования |
| Кража учетных данных | Жестко заданные секреты, кража буфера обмена, сбор переменных окружения, файлы учетных данных браузера |
| Атаки на цепочки поставок | Подозрительные хуки npm/pip install, путаница зависимостей, пользовательские реестры |
| Сохранение | Создание cron/schtasks, ключи реестра Run, LaunchAgent/Daemon, манипуляции SUID |
| Повышение привилегий | Манипуляции с SUID-битом, setuid(0), chown root |
| Противодействие анализу | Обнаружение отладчика, обнаружение VM, TLS-коллбэки, использование ptrace |
| Кейлоггеры | GetAsyncKeyState, SetWindowsHookEx, pynput, CGEventTapCreate |
| Конфиденциальность | SDK отслеживания (40+), поля PII (SSN, кредитные карты, биометрия, здоровье), инвазивные разрешения, сбор цифровых отпечатков устройств |
| Индикаторы бинарных файлов | Упакованные бинарные файлы (UPX, высокая энтропия), секции RWX, подозрительные импорты, неподписанный/измененный код |
pip install malware-check
pipx install malware-check
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
Эта команда устанавливает основное CLI. Анализ бинарных файлов через pefile/lief, обнаружение файлов с помощью ИИ через magika и сканирование YARA через yara-python являются опциональными дополнениями.
# Ядро + анализ бинарных файлов + ИИ-обнаружение файлов + YARA
pip install malware-check[full]
# Или установите только необходимое
pip install malware-check[binary]
pip install malware-check[detect]
pip install malware-check[yara]
# Или установите дополнения вручную
pip install pefile lief magika yara-python
pip install malware-check[detect]
При установке malware-check использует Magika для улучшения
кроссплатформенной идентификации файлов, обогащения метаданных file_type и направления файлов без расширения или
замаскированных в соответствующий анализатор на основе содержимого, а не имени файла.
# Требуется Docker - https://docs.docker.com/get-docker/
# Сборка образа песочницы (однократная настройка)
malware-check build-sandbox
malware-check info
Команда info покажет, доступно ли обнаружение файлов на основе Magika.
Установите как навык Claude Code, чтобы Claude мог анализировать файлы за вас:
# Установка навыка из GitHub
npx skills install momenbasel/malware-check --skill malware-check
# Или вручную: скопируйте skill/SKILL.md в свой каталог навыков
cp -r skill/ ~/.claude/skills/malware-check/
Затем в Claude Code скажите: "проверь этот файл на вредоносное ПО" или "этот бинарный файл безопасен?" и Claude будет использовать malware-check автоматически.
Также необходим установленный CLI-инструмент:
pip install malware-check pefile lief yara-python
Установите инструмент и добавьте в инструкции агента Codex:
# 1. Установите CLI
pip install malware-check pefile lief yara-python
# 2. Добавьте в инструкции Codex (codex.md или системный промпт)
echo 'Используй `malware-check scan <путь> --verbose` для анализа файлов на вредоносное ПО.' >> AGENTS.md
# 3. Или установите как навык Codex
cp -r skill/ .codex/skills/malware-check/
Для любого ИИ-агента кодирования, поддерживающего использование инструментов или пользовательские инструкции:
# 1. Установка
pip install malware-check
# 2. Добавьте в инструкции агента:
# "Когда попросят проверить код/бинарные файлы на вредоносное ПО, используй: malware-check scan <цель> --verbose"
# "Для отчетов: malware-check scan <цель> --format html -o report.html"
# "Для CI/CD: malware-check scan <цель> --format sarif -o report.sarif --exit-code"
malware-check scan suspicious_file.py
# Наилучшие результаты при установленном malware-check[detect]
malware-check scan suspicious_payload --verbose
malware-check scan /path/to/project --verbose
# Сначала соберите песочницу (однократно)
malware-check build-sandbox
# Сканирование с поведенческим анализом
malware-check scan malware.exe --dynamic
malware-check scan /Applications/SuspiciousApp.app --dynamic --verbose
# Отчет в JSON
malware-check scan target/ --format json -o report.json
# Информационная панель HTML
malware-check scan target/ --format html -o report.html
# SARIF для CI/CD
malware-check scan target/ --format sarif -o results.sarif
# Выход с ненулевым кодом при обнаружении результатов (для ворот CI)
malware-check scan . --format sarif -o results.sarif --exit-code
malware-check info
name: Security Scan
on: [push, pull_request]
jobs:
malware-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install malware-check
run: pip install malware-check
- name: Run scan
run: malware-check scan . --format sarif -o results.sarif --exit-code
- name: Upload SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
malware-check/
├── src/malware_check/
│ ├── cli.py # Точка входа Click CLI
│ ├── scanner.py # Оркестратор + опциональное обнаружение файлов на основе Magika
│ ├── models.py # Модели данных Finding, FileAnalysis, ScanResult
│ ├── analyzers/
│ │ ├── code.py # Сопоставление паттернов исходного кода (40+ правил)
│ │ ├── binary.py # Анализ PE/Mach-O/ELF
│ │ ├── privacy.py # PII, отслеживание, разрешения
│ │ ├── yara_engine.py # Компиляция и сканирование YARA-правил
│ │ └── dynamic.py # Поведенческий анализ в Docker-песочнице
│ └── reporters/
│ ├── console_reporter.py # Богатый терминальный вывод
│ ├── json_reporter.py # Экспорт в JSON
│ ├── html_reporter.py # HTML-панель (Jinja2)
│ └── sarif_reporter.py # SARIF 2.1.0 для CI/CD
├── rules/yara/ # Встроенные YARA-правила
├── tests/ # Набор тестов pytest
└── pyproject.toml # Метаданные проекта
Добавьте пользовательские правила в любой каталог и передайте через --yara-rules:
malware-check scan target/ --yara-rules /path/to/my/rules/
Правила поддерживают поля метаданных для серьезности, категории, уверенности, CWE и сопоставления MITRE ATT&CK:
rule My_Custom_Rule {
meta:
description = "Обнаружить пользовательский вредоносный паттерн"
severity = "critical"
category = "backdoor"
confidence = "0.90"
mitre = "T1059"
cwe = "CWE-94"
recommendation = "Удалить вредоносный код"
strings:
$pattern = "suspicious_string"
condition:
$pattern
}
Docker-песочница обеспечивает поведенческий анализ с полной изоляцией:
| Защита | Реализация |
|---|---|
| Изоляция сети | --network none (по умолчанию) |
| Ограничение памяти | 512 МБ |
| Ограничение ЦП | 1 ядро |
| Ограничение процессов | 100 PID |
| Read-only ФС | --read-only с tmpfs для /tmp и /evidence |
| Возможности | Все сброшены (--cap-drop=ALL) |
| Повышение привилегий | Заблокировано (--security-opt=no-new-privileges) |
| Таймаут | Настраиваемый (по умолчанию 30 с) |
Отслеживаемое поведение:
| Техника | ID | Обнаружение |
|---|---|---|
| Интерпретатор команд и скриптов | T1059 | Обратные оболочки, паттерны eval/exec |
| Компонент серверного ПО: Web Shell | T1505.003 | Веб-шеллы PHP/JSP/ASP |
| Обфусцированные файлы или информация | T1027 | Base64, char-коды, hex-кодирование |
| Перехват ресурсов | T1496 | Пулы и инструменты криптомайнинга |
| Данные, зашифрованные для воздействия | T1486 | Шифрование файлов программами-вымогателями |
| Перехват ввода: Кейлоггинг | T1056.001 | Клавиатурные хуки и логгеры |
| Планируемая задача/задание | T1053 | Cron, schtasks, LaunchAgent |
| Автозагрузка при входе в систему | T1547 | Ключи реестра Run |
| Внедрение процесса | T1055 | VirtualAllocEx + WriteProcessMemory |
| Учетные данные из хранилищ паролей | T1555 | Доступ к файлам учетных данных браузера |
| Злоупотребление контролем повышения привилегий | T1548 | Манипуляции с SUID-битом |
| Уклонение от отладчика | T1622 | Вызовы API антиотладки |
| Компрометация цепочки поставок | T1195 | Вредоносные хуки установки |
# Клонирование и установка зависимостей для разработки
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
# Опционально: включите Magika, YARA и бинарные дополнения во время разработки
pip install -e ".[dev,full]"
# Запуск тестов
pytest
# Линтинг
ruff check src/ tests/
Лицензия MIT — подробнее см. в LICENSE.