Skip to content

Navigation Menu

Sign in
Sign up

Inicio Rapido

André Henrique edited this page Jun 30, 2026 · 4 revisions

Início Rápido

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.


Sumário


Passo 1: Iniciar o IXF

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

Iniciar diretamente de um arquivo Python (para instalação do código-fonte)

$ python ixf.py

ou:

$ python -m industrialxpl

Passo 2: Explorar o Sistema de Ajuda

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.

Ajuda global

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

Ajuda de módulo (após carregar um módulo)

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)

Passo 3: Ver Estatísticas e Cobertura

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%

Passo 4: Buscar Módulos

Use search para encontrar módulos por palavra-chave, vendor, ID de CVE ou protocolo.

Busca por 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.

Busca por CVE específico

ixf > search CVE-2021-22681
[+] 1 module(s) found:
 use cve/siemens/cve_2021_22681_s7_1200_hardcoded_key

Busca por vendor

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.

Busca por tipo de ataque

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
 ...

Busca por setor industrial

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
 ...

Passo 5: Carregar um Módulo de Scanner

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.

Notação alternativa (pontos)

ixf > use scanners.ics.modbus_detect
[+] Module loaded: Modbus TCP Device Detect

Carregar via cve-id diretamente

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) >

Passo 6: Inspecionar Opções do Módulo

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 |
+------------+-----------+----------+-------------------------------------------+

Ver informações detalhadas do módulo

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

Ver opções avançadas

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 |
+---------------+-------+--------+----------------------------------------------+

Ver dispositivos 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.

Passo 7: Configurar o Alvo

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

Verificar configuração atual

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 |
+------------+-----------------+----------+-------------------------------------------+

Erros de validação de opção

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

Passo 8: Executar em Modo Simulação (Padrão — Seguro)

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

Passo 9: Verificação de Conectividade com check()

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.


Passo 10: Carregar um Exploit CVE

Voltar ao contexto global

ixf (Modbus TCP Device Detect) > back
[i] Module deselected.
ixf >

Carregar CVE de alta severidade — Siemens S7

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) >

Ver informações do CVE

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

Definir alvo e executar em simulação

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

Passo 11: Usar Opções Globais com setg

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

Limpar uma opção global

ixf > unsetg target
[+] [global] target cleared.

Passo 12: Execução ao Vivo (Apenas Laboratórios Autorizados)

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.

Passo 13: Varredura MITRE ATT&CK for ICS

Listar todas as técnicas mapeadas

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
 ...

Filtrar por tática

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
 ...

Varrer uma tática específica

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

Varrer uma técnica específica

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

Ver módulos para uma técnica

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
 ...

Passo 14: Executar TTP Completo

Execução básica de TTP

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)

TTP com parada no primeiro resultado

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).

TTP com limitação de taxa

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

TTP com saída para arquivo

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

TTP somente check() (somente leitura)

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
...

Passo 15: Descoberta de Rede OT

Descoberta básica de sub-rede

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

Varredura MITRE de descoberta em sub-rede

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)

CVE Scan em sub-rede

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.

Passo 16: Análise SAST com LLM

Configurar chave LLM

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

Executar SAST em código PLC

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

Passo 17: Gerar Relatório de Assessment

Formatos disponíveis

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

Relatório MITRE Navigator Layer

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

Passo 18: Assessment de Conformidade IEC 62443

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

Modo Não-Interativo (CLI Direto)

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 stats

Cenários de Sessão Completa

Cenário 1: Avaliação de segurança de rede SCADA water utility

ixf > 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

Cenário 2: Avaliação focada em Siemens S7 com SAST

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

Cenário 3: Simulação de malware ICS para treinamento SOC

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

Diagnósticos e Verificação de Ambiente

Verificar ambiente completo

python tools/env_doctor.py

Verificar índice de módulos

python -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')
"

Verificar módulos com erros de importação

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

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /