Skip to content

Configuracao Laboratorio

André Henrique edited this page Jun 8, 2026 · 1 revision

Idioma: Português (pt-BR) | English: Lab-Setup

Configuração do Ambiente de Laboratório

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.


Índice


Início Rápido

# 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 down
cd /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:1881

Componentes

Conpot

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

FUXA SCADA

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


Módulo de Configuração do Lab

Caminho: assessment/lab_environment_setup

Opções completas

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 files

Com OpenPLC

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

Docker Compose Manual

Caso 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-stopped
docker compose up -d
docker compose ps     # verificar se todos os containers estão rodando
docker compose down   # parar e remover os containers

Exercícios de Laboratório

Exercício 1 - Descoberta de módulos

# 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 Conpot

Exercício 2 - Enumeração de registradores

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

Exercício 3 - Simulação de ransomware (modo simulate)

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

Exercício 4 - Análise de PCAP

# 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

Exercício 5 - Gerar e validar regras de detecção

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

Conectando o IXF ao Laboratório

Defina 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 global

Detecção do Conpot

Apó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/

Clone this wiki locally