
Извлекает структурированную информацию о киберугрозах (CTI) из PDF, DOCX и TXT документов с помощью LLMs. Генерирует цепочки атак MITRE ATT&CK, возможности обнаружения и комплексные графы связей сущностей.
Мощный автономный инструмент командной строки для извлечения данных киберразведки (CTI) из документов с использованием больших языковых моделей и расширенных возможностей структурированного вывода.
# Скопируйте или загрузите папку standalone-tdo
cd standalone-tdo
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # В Windows: .venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txt
Инструмент использует переменные окружения, загружаемые из файла .env:
# Скопируйте пример конфигурации
cp env.example .env
# Отредактируйте .env, указав свои настройки
# Обязательные переменные:
GEMINI_API_KEY=ваш-ключ-api-google-ai-здесь
GEMINI_MODEL=gemini-2.5-flash
Получение ключа API Gemini:
.envДоступные модели:
gemini-2.5-flash-preview-05-20 (рекомендуется — быстрая и экономичная)gemini-2.5-pro-preview-06-05 (более мощная, медленнее)# Обработка одного файла со всеми функциями
python tdo_bulk.py report.pdf --flow --opps
# Обработка нескольких файлов
python tdo_bulk.py file1.pdf file2.docx file3.txt
# Обработка всех файлов в каталоге с параллельными рабочими потоками
python tdo_bulk.py reports/ -j 4
# Генерация комплексного анализа с оценкой
python tdo_bulk.py report.pdf --flow --opps --eval-opps
usage: tdo_bulk.py [options] FILE [FILE ...]
Позиционные аргументы:
FILE Один или несколько файлов или каталогов для обработки
Основные опции:
-o, --output DIR Выходной каталог (по умолчанию: ./extracted_data)
--csv FILE Экспорт сводки в CSV-файл
-j, --jobs N Количество параллельных рабочих потоков (по умолчанию: 1)
--retries N Количество повторных попыток LLM (по умолчанию: 2)
--backoff SEC База экспоненциальной задержки (по умолчанию: 1.5)
Функции анализа:
--flow Генерация JSON цепочки атак
--opps Генерация возможностей обнаружения угроз
--eval-opps Оценка качества возможностей обнаружения
--debug-opps Показать отладочную информацию для генерации возможностей
Управление выводом:
-q, --quiet Минимальный вывод на консоль
-v, --verbose Логирование отладочного уровня
-h, --help Показать справку и выйти
# Базовое извлечение CTI
python tdo_bulk.py threat_report.pdf
# Полный анализ со всеми функциями
python tdo_bulk.py apt_report.pdf --flow --opps --eval-opps
# Пакетная обработка с параллельными рабочими потоками
python tdo_bulk.py reports_folder/ -j 8 --flow --opps
# Экспорт результатов в CSV
python tdo_bulk.py *.pdf --csv results.csv
# Тихий режим для автоматизации
python tdo_bulk.py reports/ -q -o /var/soc/cti --opps
Для каждого обработанного файла инструмент генерирует:
{filename}_extracted.json: Структурированные данные CTI с комплексной схемой{filename}_{timestamp}.md: Отчёт в формате Markdown, удобный для чтения, со всем анализом--flow)--opps)Отношения атрибуции и субъектов:
USES_TOOL, USES_TECHNIQUE, CONDUCTS, ATTRIBUTED_TO, TARGETSТехнические отношения:
TOOL_IMPLEMENTS_TECHNIQUE, HOSTS_ON, COMMUNICATES_WITH, VARIANT_OFDROPS, DOWNLOADS, INDICATES, OBSERVED_ON, EXPLOITSПродвинутые отношения:
MITIGATES, DETECTS, IS_SUBTECHNIQUE_OF, FLOW_CONTAINS_STEPFLOW_USED_BY_ACTOR, OBSERVES, SOURCED_FROMВсе отношения поддерживают свойства, такие как confidence, source, first_seen, last_seen.
Инструмент генерирует основанные на доказательствах возможности обнаружения со следующими характеристиками:
{
"id": "opp-001",
"name": "Detect PowerShell Process Injection",
"technique_id": "T1055",
"artefacts": ["powershell.exe with WriteProcessMemory calls"],
"behaviours": ["Process injection into legitimate processes"],
"rationale": "APT groups commonly use PowerShell for process injection",
"confidence": 0.8,
"source": "PowerShell used for process injection (T1055)",
"evidence": [
"• PowerShell executes WriteProcessMemory calls (line 45)",
"• Relationship: ThreatActor USES_TECHNIQUE T1055"
]
}
Расширенные цепочки атак предоставляют:
{
"flow": {
"label": "AttackFlow",
"pk": "attack-flow--uuid",
"properties": {
"name": "APT29 Multi-stage Attack",
"description": "Sophisticated spear-phishing to data exfiltration flow"
}
},
"steps": [
{
"order": 1,
"entity": {"label": "Technique", "pk": "T1566.001"},
"description": "Spear-phishing attachment delivery",
"reason": "Initial access method cited in report section 2.1"
}
]
}
tdo_bulk.py).env с помощью python-dotenvtdo_bulk_runner.py)tdo_core/extractors/report_processor.py)tdo_core/detection/opportunity_generator.py)tdo_core/flows/attack_flow_synthesizer.py)tdo_core/report/md_export.py)tdo_core/llm/prompts.py)Входной документ → Извлечение текста → Обработка LLM → Структурированный вывод
↓ ↓ ↓ ↓
PDF/DOCX Чистый текст API Gemini JSON + резерв
↓ ↓ ↓ ↓
Мультиформатная Предобработка Схема Pydantic Валидация
↓ ↓ ↓ ↓
Поддержка файлов Очистка текста Структурированные Граф CTI
данные
↓
Постобработка
↓ ↓
Цепочки атак Возможности обнаруж.
↓ ↓
Отчёт Markdown Экспорт
| Переменная | Обязательна | Описание | Пример |
|---|---|---|---|
GEMINI_API_KEY | ✅ | Ключ API Google AI |
Error: Required environment variables missing: GEMINI_API_KEY, GEMINI_MODEL
Решение: Создайте файл .env с обеими обязательными переменными
Skipping unsupported file: document.rtf
Решение: Конвертируйте в формат PDF, DOCX, TXT или MD
Structured Gemini API error: ...
Решения:
--verbose для подробных логов ошибокИнструмент автоматически обрабатывает проблемы разбора JSON с помощью:
-j для нескольких файлов-q в скриптах автоматизации# Включение подробного логирования
python tdo_bulk.py report.pdf -v
# Отладка возможностей обнаружения
python tdo_bulk.py report.pdf --opps --debug-opps
# Экспорт подробных логов
python tdo_bulk.py report.pdf -v > processing.log 2>&1
Инструмент требует Python 3.9+ и следующие ключевые пакеты:
google-generativeai: Клиент API Google AI (Gemini) со структурированным выводомPyMuPDF: Высокопроизводительное извлечение текста из PDFpython-docx: Обработка документов Microsoft Wordpandas: Манипуляции с данными и экспорт в CSVpydantic: Валидация схем и структурированный выводpython-dotenv: Управление переменными окруженияcleantext: Утилиты предобработки текстаЭта автономная версия:
Однако она включает все основные возможности извлечения и анализа CTI, необходимые для большинства случаев использования.
.env с помощью dotenv.env — он исключён с помощью .gitignoreGEMINI_API_KEY безопасно, используя переменные окруженияИзвлечённые файлы JSON и Markdown могут содержать:
Всегда проверяйте выходные данные перед публичным распространением.
Пожалуйста, ответственно сообщайте о проблемах безопасности. Подробности см. в SECURITY.md.
Этот проект лицензирован по лицензии MIT — подробности см. в LICENSE.
Приветствуются любые вклады! Пожалуйста, прочитайте CONTRIBUTING.md для получения рекомендаций.
Нужна помощь? Выполните python tdo_bulk.py --help для быстрой справки или обратитесь к разделу устранения неполадок выше.
| Тип сущности | Описание | Ключевые свойства |
|---|
| ThreatActor | Киберугрозные группы | aliases, primary_motivation, first_seen |
| Tool | Легитимное программное обеспечение | family, capabilities, kill_chain_phases |
| Malware | Вредоносное программное обеспечение | family, capabilities, first_seen, last_seen |
| Technique | Техники MITRE ATT&CK | id (T1234), description, kill_chain_phases |
| Tactic | Тактики MITRE ATT&CK | id (TA0001), description |
| Infrastructure | IP-адреса, домены, URL | type, tags, first_seen, last_seen |
| Indicator | Хеши файлов, шаблоны | value, pattern, valid_from, valid_until |
| Vulnerability | Записи CVE | id, cvss_score, affected_software |
| Campaign | Именованные кампании атак | objective, status, first_seen |
| Identity | Целевые организации | type, description |
| CourseOfAction | Меры реагирования, патчи | type, description |
| Source | Происхождение документа | filename, document_title, file_size_mb |
AIza... |
GEMINI_MODEL | ✅ | Модель Gemini для использования | gemini-2.5-flash-preview-05-20 |
| Модель | Скорость | Качество | Стоимость | Сценарий использования |
|---|
gemini-2.5-flash-preview-05-20 | ⚡ Быстрая | 🎯 Хорошее | 💰 Низкая | Производство, пакетная обработка |
gemini-2.5-pro-preview-06-05 | 🐌 Медленная | 🏆 Отличное | 💸 Высокая | Сложный анализ, исследования |