Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ICS-TestBed-Framework — Implanta ambientes de teste virtuais realistas de SCADA/ICS com nós IEC 60870-5-104 e OPC-UA, permitindo simulações de ataques, geração legítima de pacotes e exercícios de segurança de red-team. | Kitploit
Ferramentas/GitHubGitHub/pmaynard/ics-testbed-framework
Sniffing e Análise de PacotesSegurança SCADA/ICSSegurança de RedeTestes de PenetraçãoRed TeamingLabs e Prática
GitHubpmaynard/ics-testbed-framework

ICS-TestBed-Framework

Implanta ambientes de teste virtuais realistas de SCADA/ICS com nós IEC 60870-5-104 e OPC-UA, permitindo simulações de ataques, geração legítima de pacotes e exercícios de segurança de red-team.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
7026há 7 anosRevisado pelo Kitploit

ICS TestBed Framework

É proposto um framework escalável para implantar automaticamente, localmente (ou remotamente), um número de máquinas virtuais que replicam uma rede SCADA (Supervisory Control And Data Acquisition). Isso inclui múltiplos hosts virtuais que emulam sensores e atuadores, com uma Interface Homem-Máquina (HMI) controlando os hosts. O framework apresentado contém uma coleção de scripts de automação que constroem e implantam um número variável de máquinas virtuais, pré-configuradas para atuar como Unidade Terminal Remota (RTU), HMI ou Historiador de Dados. O trabalho apresentado inclui uma implementação em conformidade com os padrões de IEC 60870-5-104 (IEC104) e OPC Unified Architecture (OPC-UA), com capacidade de suportar outros protocolos como Modbus-TCP (Modbus) e IEC61850.

Isso permite que pesquisadores construam bancadas de teste que podem ser configuradas para replicar implantações reais de redes SCADA. O framework é construído sobre bibliotecas de código aberto e é lançado sob a licença aprovada pela Free Software Foundation, GNU General Public License versão 3.

Exemplo de Operação

asciicast

Casos de Uso Potenciais

  • Geração de Pacotes: O objetivo do primeiro caso de uso é gerar tráfego de rede a partir de um grande número de dispositivos, com um alto nível de fidelidade de domínio, onde idealmente as informações do processo seriam incluídas no tráfego. Como destacado anteriormente, criar conjuntos de dados a partir de um sistema em produção nem sempre é possível: é um trabalho intensivo, é necessário localizar um ponto de captura adequado e obter aprovação dos operadores da planta. Isso pode ser restringido pela operação e pelas políticas da planta, pois a interferência em uma rede em funcionamento pode levar a circunstâncias imprevistas e vazar informações identificáveis. A geração de pacotes pode ser usada para testar alterações propostas na rede SCADA antes de serem implantadas no sistema em produção. Também pode realizar testes de estresse de dispositivos usando pacotes com aparência legítima. Casos de uso de pesquisa interessantes incluem a experimentação com diferentes paradigmas de rede, como ICN ou IPv6, que não foram aplicados a redes ICS.

  • Simulações de Ataque: Este caso considera a simulação de ataques complexos a sistemas SCADA e visa realizar análise de risco de uma rede ICS replicada, sem afetar adversamente o sistema em produção. A bancada de teste pode ser usada por red teams na tentativa de comprometer os nós da bancada, enquanto analisam as consequências e obtêm análise completa de captura de pacotes. Se forem bem-sucedidos, o processo pode ser repetido com contramedidas adicionais em vigor, permitindo testar as novas contramedidas no contexto da segurança e como isso pode afetar os processos do local. As capturas de rede do exercício da red team podem ser publicadas como conjuntos de dados abertos para verificação de IDS, que podem ser reproduzidos e ter os resultados confirmados por outros pesquisadores.

  • Benchmarking de Agentes: O objetivo deste caso de uso é apoiar a avaliação comparativa de sistemas baseados em agentes de host, que normalmente não são executados em sistemas em produção devido a restrições do fornecedor. A menos que o agente seja confiável pelos fornecedores, muitas vezes é proibido implantá-lo, com risco de violação de contrato. Ao usar uma bancada de teste que represente com precisão o local industrial real, é possível monitorar o uso do software baseado em agente sem causar interrupções. Desde que a bancada de teste seja livremente modificável, funcionalmente precisa e possa ser integrada a hardware físico, seria possível realizar uma avaliação comparativa do agente.

  • Extensão de Hardware Limitado: O último caso é estender uma bancada de teste física existente para incluir protocolos e configurações de comunicação que não eram possíveis com o hardware existente. Isso pode exigir o uso de emuladores de rede, para estender o equipamento de rede, e simuladores de processo, para estender o equipamento de controle de processo. Ao acoplar hardware virtual e físico, é possível criar uma bancada de teste complexa e altamente realista, permitindo que grandes implantações que combinam múltiplos protocolos e dispositivos sejam criadas e analisadas. Este caso de uso pode ser usado junto com os outros para aprimorar seus resultados.

Compilar e executar localmente

Clone o repositório e instale as dependências necessárias:

root@kitploit:~
git clone --recurse-submodules [email protected]:PMaynard/ICS-TestBed-Framework.git
sudo apt install openjdk-8-jdk maven

Compilar:

root@kitploit:~
mvn clean package
mvn package -DskipTests # Skip tests.

Iniciar uma RTU:

root@kitploit:~
java -jar node/target/node-1.0.jar
shell> rtu
shell> rtu-iec104port 2404
shell> rtu-listen 127.0.0.1
shell> run

Iniciar uma HMI:

root@kitploit:~
java -jar node/target/node-1.0.jar
shell> hmi
shell> hmi-interval 1000
shell> remote-hosts 127.0.0.1
shell> run

Implantação Automática em VMs

O perfil de configuração padrão implantará 1 HMI e 4 RTUs. A HMI integrará as RTUs usando IEC104 e OPC-UA. As RTUs são configuradas para retornar dados de processo aleatórios.

Pré-requisitos (Vagrant+VirtualBox)

Use a versão mais recente do Vagrant em vez dos pacotes pré-construídos/de distribuição, pois esses scripts usam recursos das versões mais recentes do Vagrant. Não deve haver problemas se estiver usando Ubuntu 18.04.1 LTS.

root@kitploit:~
git clone https://github.com/mitchellh/vagrant.git /opt/vagrant
cd /opt/vagrant
bundle install
bundle --binstubs exec
ln -sf /opt/vagrant/exec/vagrant /usr/local/bin/vagrant 

[OPCIONAL] Criar Imagem de VM

Este é um passo opcional de desenvolvimento. Ele cria uma imagem de máquina virtual, pré-configurada para executar os nós da bancada de teste. Se você não quiser criar a versão mais recente, a opção padrão é obter uma imagem estável do repositório de imagens do Vagrant, que permanece em sincronia com o branch master.

Packer é usado para criar uma imagem de máquina virtual adequada para VirtualBox e Vagrant:

root@kitploit:~
cd vagrant_image
packer build vagrant-node.json
vagrant box add testbed-node vagrant.box

Implantar

AVISO Você precisará de pelo menos 4GB de RAM livre.

Atualize o Vagrantfile com qualquer informação adicional, como endereço IP estático e uso de RAM.

As configurações de IP padrão são 10.50.50.*. .200 é usado para HMI e 101-105 para RTUs. A RAM padrão alocada por VM é 512MB.

root@kitploit:~
vagrant up
vagrant ssh hmi
vagrant ssh rtu-1 # 1-5
vagrant halt
vagrant destroy 

Conjunto de Dados de Exemplo

Um conjunto de dados de exemplo foi criado usando a configuração de implantação padrão. Os PCAPs podem ser baixados aqui. O MITM IEC104 foi realizado usando o plugin do ettercap localizado aqui

  • [Host-SCAN 13:45]: Reconhecimento básico de rede usando uma varredura ampla da rede com Nmap. CMD: 'nmap -sn 10.50.50.*'

  • [Host-SCAN 13:47]: Reconhecimento básico de rede à procura de servidores [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} acessíveis. CMD: 'nmap 10.50.50.* -p 2404'

  • [Host-SCAN 13:47]: Varredura completa de portas dos nós [RTUs]{acronym-label="RTU" acronym-form="plural+short"} identificados. CMD: 'nmap 10.50.50.101-105 -A'

  • [Host-SCAN 13:49]: Uma varredura ativa [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} que sonda os nós usando o protocolo [IEC104]{acronym-label="IEC104" acronym-form="singular+short"}[^1]. CMD: 'nmap -Pn -n -d --script iec-identify.nse --script-args='iec-identify.timeout=500' -p 2404 10.50.50.101-105'

  • [Host-MITM 14:19]: Executa um [MITM]{acronym-label="MITM" acronym-form="singular+short"} na RTU-1 e na HMI. CMD: 'ettercap -i enp0s8 -T -M arp -P spoof_104 /10.50.50.101/ /10.50.50.150/'

Uma discriminação numérica do conjunto de dados é mostrada abaixo:

Projetos Relacionados

  • https://github.com/flesueur/mi-lxc
  • https://github.com/nsec/the-internet
  • https://minicps.readthedocs.io/en/latest/

Citação

Por favor, cite este framework usando o seguinte formato:

root@kitploit:~
@conference{
 author   = "Peter Maynard and Kieran McLaughlin and Sakir Sezer",
 title 	  = "An Open Framework for Deploying Experimental SCADA Testbed Networks",
 journal  = "5th International Symposium for ICS & SCADA Cyber Security Research",
 year 	  = "2018"
}

O conjunto de dados pode ser citado usando o DOI: 10.6084/m9.figshare.6133457.v1

O artigo completo pode ser encontrado em: https://petermaynard.co.uk/publication/an-open-framework-for-deploying-experimental-scada-testbed-networks/

Baixar ferramenta
HostIPIEC104OPC-UAOutrosTotal
HMI10.50.50.15026,158017,68843,846
Historian10.50.50.151014,69514,92729,622
RTU-110.50.50.1013,5922,9405,54312,075
RTU-210.50.50.1023,6652,9415,87612,482
RTU-310.50.50.1033,6682,9405,79312,404
RTU-410.50.50.1043,6902,9405,77112,404
RTU-510.50.50.1053,5769307,93312,442
MITM10.50.50.992,39003,4495,839
SCAN10.50.50.315028,35128,366