-
Notifications
You must be signed in to change notification settings - Fork 1
Configuracao Laboratorio
Idioma: Português (pt-BR) | English: Lab-Setup
O IXF inclui um gerador de laboratório ICS/OT baseado em Docker que implanta alvos honeypot isolados e seguros para testar módulos sem risco a infraestruturas reais.
- Início Rápido
- Componentes
- Módulo de Configuração do Lab
- Docker Compose Manual
- Exercícios de Laboratório
- Conectando o IXF ao Laboratório
# Gerar arquivos do lab e iniciar
ixf > use assessment/lab_environment_setup
ixf (ICSLab) > set INCLUDE_CONPOT true
ixf (ICSLab) > set INCLUDE_FUXA true
ixf (ICSLab) > set OUTPUT_DIR /tmp/ics_lab
ixf (ICSLab) > run
[+] ICS/OT lab files generated in: /tmp/ics_lab
docker-compose.yml Docker services definition
setup.sh Automated setup script
LAB_NOTES.md Lab exercises guide
[*] Start: cd /tmp/ics_lab && bash setup.sh
[*] Stop: docker compose downcd /tmp/ics_lab && bash setup.sh
[*] Pulling Docker images...
[*] Starting Conpot (172.20.0.10)...
[*] Starting FUXA SCADA (172.20.0.20)...
[+] Lab ready.
Conpot Modbus: 172.20.0.10:502
Conpot S7comm: 172.20.0.10:102
Conpot HTTP: http://172.20.0.10
FUXA HMI: http://localhost:1881O Conpot é um honeypot ICS de baixa interação que simula dispositivos industriais.
- Modbus TCP: porta 502 - aceita requisições de leitura/escrita, simula holding registers e coils
- S7comm: porta 102 - simula um CLP Siemens S7-200
- HTTP: porta 80 - serve uma interface web no estilo Siemens
- SNMP: porta 161 - responde com valores OID de dispositivos industriais
- BACnet: porta 47808 - simula um controlador BACnet
Alvo seguro para: módulos de ransomware, exploits de escrita, módulos de scanner, proxy MiTM, captura PCAP.
Limitações: O Conpot retorna respostas estáticas - ele não simula efeitos reais de processo. Os valores dos registradores não mudam com base em estado físico.
O FUXA é uma aplicação web SCADA/HMI de código aberto.
- Web HMI: http://localhost:1881
- Suporta fontes de dados Modbus TCP, S7 e OPC UA
- Renderiza telas de processo e tendências
- Pode se conectar ao Conpot como fonte de dados Modbus
Útil para: testar ataques na camada de HMI, vulnerabilidades web SCADA, CVE-2026-25895 (RCE no FUXA).
Caminho: assessment/lab_environment_setup
ixf > use assessment/lab_environment_setup
ixf (ICSLab) > show options
Name Value Description
INCLUDE_CONPOT true Deploy Conpot ICS honeypot
INCLUDE_FUXA true Deploy FUXA SCADA/HMI
INCLUDE_OPENPLC false Deploy OpenPLC Runtime (optional)
NETWORK_SUBNET 172.20.0.0/24 Lab network subnet
CONPOT_IP 172.20.0.10 Conpot container IP
FUXA_IP 172.20.0.20 FUXA container IP
OUTPUT_DIR /tmp/ics_lab Output directory for generated filesixf (ICSLab) > set INCLUDE_OPENPLC true
ixf (ICSLab) > run
[+] Additional component: OpenPLC Runtime
OpenPLC Modbus: 172.20.0.30:502
OpenPLC WebIDE: http://localhost:8080
Default login: openplc / openplc
[*] OpenPLC executes real PLC ladder logic (IEC 61131-3)
[*] Registers change based on the loaded programCaso prefira montar o laboratório manualmente:
# docker-compose.yml
version: '3.8'
networks:
ics_lab:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24
services:
conpot:
image: mushorg/conpot:latest
networks:
ics_lab:
ipv4_address: 172.20.0.10
ports:
- "80:80"
- "502:502"
- "102:102"
restart: unless-stopped
fuxa:
image: frangoteam/fuxa:latest
networks:
ics_lab:
ipv4_address: 172.20.0.20
ports:
- "1881:1881"
restart: unless-stoppeddocker compose up -d
docker compose ps # verificar se todos os containers estão rodando
docker compose down # parar e remover os containers# Escanear o honeypot Conpot
ixf > use scanners/ics/modbus_detect
ixf (ModbusDetect) > set TARGET 172.20.0.10
ixf (ModbusDetect) > check
# Esperado: identificação de dispositivo Siemens S7-200 a partir do Conpotixf > use assessment/protocols/modbus_read_holding
ixf (ModbusRead) > set TARGET 172.20.0.10
ixf (ModbusRead) > set COUNT 50
ixf (ModbusRead) > run
# Ler 50 registradores e compreender o mapa de registradoresixf > use exploits/ransomware/plc_project_locker
ixf (PLCProjectLocker) > set TARGET 172.20.0.10
ixf (PLCProjectLocker) > run
# Revisar o que um ataque real faria - somente em modo simulate# Iniciar captura em segundo plano
Start-Process -NoNewWindow tcpdump -ArgumentList "-i", "any", "-w", "/tmp/lab_session.pcap", "'tcp port 502'"
# Executar vários módulos contra o Conpot (modo simulate)
ixf > use scanners/ics/modbus_unit_scan
ixf (ModbusUnitScan) > set TARGET 172.20.0.10
ixf (ModbusUnitScan) > run
# Analisar resultados
ixf > use assessment/detection/modbus_pcap_analyzer
ixf (ModbusPCAP) > set PCAP_FILE /tmp/lab_session.pcap
ixf (ModbusPCAP) > run# Gerar regras Suricata
ixf > use assessment/detection/suricata_ot_rules_generator
ixf (SuricataOT) > set OUTPUT_FILE /tmp/ics_rules.rules
ixf (SuricataOT) > run
# Testar as regras contra a sessão capturada
suricata -r /tmp/lab_session.pcap -S /tmp/ics_rules.rules -l /tmp/suricata_out/
cat /tmp/suricata_out/fast.logDefina o alvo padrão do laboratório antes de iniciar uma sessão:
# Todos os módulos usarão o Conpot como padrão
ixf > setg TARGET 172.20.0.10
ixf > setg PORT 502
# Agora use qualquer módulo Modbus sem reinserir o alvo
ixf > use scanners/ics/modbus_detect
ixf (ModbusDetect) > check # usa 172.20.0.10:502 da variável globalApós trabalhar com o laboratório, use o módulo de detecção do Conpot para verificar a impressão digital do honeypot:
ixf > use assessment/detection/conpot_integration
ixf (ConpotDetect) > set TARGET 172.20.0.10
ixf (ConpotDetect) > run
[*] Scanning 172.20.0.10 for Conpot honeypot indicators
[*] Modbus FC43: vendor=Siemens, model=S7-200 [GENERIC - SUSPECT]
[*] HTTP /index.html: default Conpot template detected [CONFIRMED]
[!] VERDICT: High confidence Conpot honeypot (2/3 indicators)Este módulo é útil em avaliações reais para identificar se um alvo é um honeypot antes de executar exploits ao vivo.
Aviso Legal: O uso desta ferramenta é restrito a ambientes autorizados, laboratórios isolados e atividades legítimas de pesquisa e avaliação de segurança. A utilização não autorizada contra sistemas reais constitui crime federal. Os autores e a União Geek não assumem qualquer responsabilidade por uso indevido.
Autor: André Henrique (@mrhenrike) | União Geek | https://uniaogeek.com.br/