
Estrae Intelligenza sulle Minacce Informatiche (CTI) strutturata da documenti PDF, DOCX e TXT utilizzando LLM. Genera flussi di attacco MITRE ATT&CK, opportunità di rilevamento e grafici completi di relazioni tra entità.
Un potente strumento da riga di comando autonomo per estrarre Cyber Threat Intelligence (CTI) da documenti utilizzando Large Language Models con capacità di output strutturato avanzate.
# Clona o scarica la cartella standalone-tdo
cd standalone-tdo
# Crea un ambiente virtuale (consigliato)
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Installa le dipendenze
pip install -r requirements.txt
Lo strumento utilizza variabili d'ambiente caricate da un file .env per la configurazione:
# Copia la configurazione di esempio
cp env.example .env
# Modifica .env con le tue impostazioni
# Variabili richieste:
GEMINI_API_KEY=your-google-ai-api-key-here
GEMINI_MODEL=gemini-2.5-flash
Ottenere una Chiave API Gemini:
.envModelli Disponibili:
gemini-2.5-flash-preview-05-20 (consigliato - veloce ed economico)gemini-2.5-pro-preview-06-05 (più potente, più lento)# Elabora un singolo file con tutte le funzionalità
python tdo_bulk.py report.pdf --flow --opps
# Elabora più file
python tdo_bulk.py file1.pdf file2.docx file3.txt
# Elabora tutti i file in una directory con lavoratori paralleli
python tdo_bulk.py reports/ -j 4
# Genera analisi completa con valutazione
python tdo_bulk.py report.pdf --flow --opps --eval-opps
usage: tdo_bulk.py [options] FILE [FILE ...]
Positional Arguments:
FILE One or more files or directories to process
Core Options:
-o, --output DIR Output directory (default: ./extracted_data)
--csv FILE Export summary to CSV file
-j, --jobs N Number of parallel workers (default: 1)
--retries N LLM retry count (default: 2)
--backoff SEC Exponential back-off base (default: 1.5)
Analysis Features:
--flow Generate Attack-Flow JSON
--opps Generate Threat Detection Opportunities
--eval-opps Evaluate detection opportunities quality
--debug-opps Show debug information for opportunity generation
Output Control:
-q, --quiet Minimal console output
-v, --verbose Debug-level logging
-h, --help Show help message and exit
# Estrazione CTI di base
python tdo_bulk.py threat_report.pdf
# Analisi completa con tutte le funzionalità
python tdo_bulk.py apt_report.pdf --flow --opps --eval-opps
# Elaborazione batch con lavoratori paralleli
python tdo_bulk.py reports_folder/ -j 8 --flow --opps
# Esporta risultati in CSV
python tdo_bulk.py *.pdf --csv results.csv
# Modalità silenziosa per automazione
python tdo_bulk.py reports/ -q -o /var/soc/cti --opps
Per ogni file elaborato, lo strumento genera:
{filename}_extracted.json: Dati CTI strutturati con schema completo{filename}_{timestamp}.md: Report Markdown leggibile con tutta l'analisi--flow)--opps)| Tipo di Entità | Descrizione | Proprietà Chiave |
|---|---|---|
| ThreatActor | Gruppi di minacce informatiche | aliases, primary_motivation, first_seen |
| Tool | Software legittimo | family, capabilities, kill_chain_phases |
| Malware | Software maligno | family, capabilities, first_seen, last_seen |
| Technique | Tecniche MITRE ATT&CK | id (T1234), description, kill_chain_phases |
| Tactic | Tattiche MITRE ATT&CK | id (TA0001), description |
| Infrastructure | IP, domini, URL | type, tags, first_seen, last_seen |
| Indicator | Hash di file, pattern | value, pattern, valid_from, valid_until |
| Vulnerability | Voci CVE | id, cvss_score, affected_software |
| Campaign | Campagne di attacco nominate | objective, status, first_seen |
| Identity | Organizzazioni bersaglio | type, description |
| CourseOfAction | Mitigazioni, patch | type, description |
| Source | Provenienza del documento | filename, , |
Relazioni di Attribuzione e Attore:
USES_TOOL, USES_TECHNIQUE, CONDUCTS, ATTRIBUTED_TO, TARGETSRelazioni Tecniche:
TOOL_IMPLEMENTS_TECHNIQUE, HOSTS_ON, COMMUNICATES_WITH, VARIANT_OFDROPS, DOWNLOADS, INDICATES, OBSERVED_ON, EXPLOITSRelazioni Avanzate:
MITIGATES, DETECTS, IS_SUBTECHNIQUE_OF, FLOW_CONTAINS_STEPFLOW_USED_BY_ACTOR, OBSERVES, SOURCED_FROMTutte le relazioni supportano proprietà come confidence, source, first_seen, last_seen.
Lo strumento genera opportunità di rilevamento basate su prove con:
{
"id": "opp-001",
"name": "Rileva Iniezione di Processo PowerShell",
"technique_id": "T1055",
"artefacts": ["powershell.exe con chiamate WriteProcessMemory"],
"behaviours": ["Iniezione di processo in processi legittimi"],
"rationale": "I gruppi APT usano comunemente PowerShell per l'iniezione di processo",
"confidence": 0.8,
"source": "PowerShell usato per l'iniezione di processo (T1055)",
"evidence": [
"• PowerShell esegue chiamate WriteProcessMemory (riga 45)",
"• Relazione: ThreatActor USES_TECHNIQUE T1055"
]
}
I flussi di attacco migliorati forniscono:
{
"flow": {
"label": "AttackFlow",
"pk": "attack-flow--uuid",
"properties": {
"name": "Attacco Multistadio APT29",
"description": "Flusso sofisticato di spear-phishing fino all'esfiltrazione dei dati"
}
},
"steps": [
{
"order": 1,
"entity": {"label": "Technique", "pk": "T1566.001"},
"description": "Consegna dell'allegato di spear-phishing",
"reason": "Metodo di accesso iniziale citato nella sezione 2.1 del report"
}
]
}
tdo_bulk.py).env utilizzando 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)Document Input → Text Extraction → LLM Processing → Structured Output
↓ ↓ ↓ ↓
PDF/DOCX Clean Text Gemini API JSON + Fallback
↓ ↓ ↓ ↓
Multi-format Preprocessing Pydantic Schema Validation
↓ ↓ ↓ ↓
File Support Text Cleaning Structured Data CTI Graph
↓
Post-Processing
↓ ↓
Attack Flows Detection Opps
↓ ↓
Markdown Report Export
| Variabile | Obbligatoria | Descrizione | Esempio |
|---|---|---|---|
GEMINI_API_KEY | ✅ | Chiave API Google AI | AIza... |
GEMINI_MODEL | ✅ | Modello Gemini da utilizzare | gemini-2.5-flash-preview-05-20 |
| Modello | Velocità | Qualità | Costo | Caso d'Uso |
|---|---|---|---|---|
gemini-2.5-flash-preview-05-20 | ⚡ Veloce | 🎯 Buona | 💰 Basso | Produzione, elaborazione batch |
gemini-2.5-pro-preview-06-05 | 🐌 Lento | 🏆 Eccellente | 💸 Alto | Analisi complessa, ricerca |
Error: Required environment variables missing: GEMINI_API_KEY, GEMINI_MODEL
Soluzione: Crea un file .env con entrambe le variabili richieste
Skipping unsupported file: document.rtf
Soluzione: Converti in formato PDF, DOCX, TXT o MD
Structured Gemini API error: ...
Soluzioni:
--verbose per log di errore dettagliatiLo strumento gestisce automaticamente i problemi di parsing JSON con:
-j per più file-q per script di automazione# Abilita logging verboso
python tdo_bulk.py report.pdf -v
# Debug delle opportunità di rilevamento
python tdo_bulk.py report.pdf --opps --debug-opps
# Esporta log dettagliati
python tdo_bulk.py report.pdf -v > processing.log 2>&1
Lo strumento richiede Python 3.9+ e questi pacchetti chiave:
google-generativeai: Client API Google AI (Gemini) con output strutturatoPyMuPDF: Estrazione testo PDF ad alte prestazionipython-docx: Elaborazione documenti Microsoft Wordpandas: Manipolazione dati ed esportazione CSVpydantic: Validazione degli schemi e output strutturatopython-dotenv: Gestione variabili d'ambientecleantext: Utility di pre-elaborazione del testoQuesta versione standalone:
Tuttavia, include tutte le capacità principali di estrazione e analisi CTI necessarie per la maggior parte dei casi d'uso.
.env con dotenv.env - è escluso da .gitignoreGEMINI_API_KEY in modo sicuro utilizzando variabili d'ambienteI file JSON e Markdown estratti possono contenere:
Rivedi sempre gli output prima della condivisione pubblica.
Segnala le vulnerabilità di sicurezza in modo responsabile. Vedi SECURITY.md per i dettagli.
Questo progetto è concesso in licenza con la Licenza MIT - vedi LICENSE per i dettagli.
I contributi sono benvenuti! Leggi CONTRIBUTING.md per le linee guida.
Hai bisogno di aiuto? Esegui python tdo_bulk.py --help per un riferimento rapido o consulta la sezione di risoluzione dei problemi sopra.
document_titlefile_size_mb