– root@injetionsec:~#

Protocolo Modbus – Parte 2

14.02.2014 (11:37 pm) – Filed under: Modbus ::

Vamos falar mais detalhadamente desse protocolo modbus,ele é utilizado no nível da camada de aplicação  e foi inicialmente desenvolvido para ser utilizado na comunicação dos CLPs com os sensores e os atuadores,nos anos 70 e recentemente tornou-se GPL (General Public License). Atualmente, o Modbus é mantido pela Modbus-IDA que é formada por um grupo de usuários e fornecedores independentes.

Comunicação Serial e Formato dos Pacotes

O Modbus foi desenvolvido para dispositivos que utilizavam meios de comunicação serial,sua comunicação pode  ser realizada de duas formas: RTU (Remote Terminal Unit) e ASCII (American Standard Code for Information Interchange) é possuem um formato de pacote específico, que é o mesmo para requisição ou para resposta. As formas RTU e ASCII diferenciam-se na representação dos seus dados.Cada pacote Modbus serial é composto de seis campos que são representados por dados binários, no modo RTU, e por caracteres, no modo ASCII. Estes campos são definidos veja abaixo:

• Início: indica o começo do pacote;
• Endereço: indica qual dispositivo receberá ou enviará o pacote. A faixa de endereços válidos dos dispositivos varia de 0 a 247, sendo o endereço 0 (zero) utilizado para mensagens que são enviadas para todos os dispositivos slaves;
• Função: este campo representa o objetivo do pacote;
• Dados: campo onde os dados serão alocados,este campo tem o seu conteúdo de acordo com o campo Função do pacote;
• Controle: é responsável pela detecção de erros no pacote
• Fim: finaliza os  dispositivos

No modo RTU, o campo Início é representado por um intervalo de silêncio. Os campos, de Endereço e de Função, são representados por 8 bits. O campo Dados depende da função e cada informação é representada por 8 bits também, podendo conter
inúmeras informações  dentro de um mesmo pacote,a verificação de erro neste modo é realizada através do algoritmo de CRC (Cyclic Redundancy Check), sendo representado por 16 bits. O campo Fim é representado pelo mesmo conteúdo do campo Início, um intervalo de silêncio.

77y4t4

 

O campo Início, no modo ASCII, é definido pelo caractere “:”(0x3A em hexadecimal).Os campos, de Endereço e de Função, são representados por dois caracteres. O campo Dados, no modo ASCII, é representado por uma quantidade variável  de caracteres. O
campo Controle é representado por dois caracteres ASCII e utiliza o algoritmo de LRC (Longitudinal Redundancy Check) para detecção de erros. O fim do pacote é representado por um par de caracteres de CR (Carriage Return) e de LF (Line Feed) (0x0D e 0x0A em hexadecimal respectivamente). Os campos dos pacotes RTU e ASCII podem ser visualizados nas figuras acima

Protocolo Modbus – Parte 1

14.02.2014 (4:46 pm) – Filed under: Modbus ::

Para criar seu próprio fuzzer você primeiro deve entender o seu protocolo alvo,o modbus é um protocolo de comunicação industrial projetado pela Modicon,agora Schneider Electric,o modbus normalmente e usado para conectar um sistema SCADA a um dispositivo RTU ou PLC,os primeiros foram projetado para comunicação com base em interfaces seriais.
//
//
Ele inclui Modbus RTU / ASCII, que é usado para comunicação serial e Modbus TCP / IP que usam TCP / IP para comunicação do Modbus.A versão inicial do Modbus tem uma estrutura de pacotes geral que contém, endereço, código da função, dados e verificação de erros.

//
//

> Frame geral do Modbus
Vemos que temos dois elementos, ADU que é cabeçalho do pacote e PDU que é a carga útil do pacote. Temos o ID da transação, ID do protocolo e comprimento contem dois bytes, enquanto comprimento e código de função são apenas um byte.A estrutura de pacotes é simples, os ID protocolo Modbus é sempre 0×0000. O comprimento do pacote real do Modbus TCP tem menos de 6 byte e UnitID de um pacote Modbus é normalmente 0×00 ou 0xFF.

//
//

> Frame do TCP do modbus
Por conta do design muito antigo o Modbus não suporta qualquer criptografia e não têm qualquer proteção contra ataques de response,sua comunicação contem dispositivo slave e dispositivo master,os dispositivo master do Modbus geralmente se referem ao cliente do Modbus que podem ser máquina ou dispositivo de SCADA HMI,e o Modbus slave referem-se a uma RTU ou PLC dispositivos.

//
//

> Rede modbus
E uma das vulnerabilidades deste protocolo é a possibilidade de impressões digitais através de sua porta padrão TCP 502. você pode determinar 43 protocolo,assim identificando os PLCs e obtendo as informações como o tipo de dispositivo, fabricante, versão e outras informações úteis para futuros ataques.

Para facilitar nossa vida temos Modscan que e um scanner que busca vulnerabilidades de todos os dispositivos de rede SCADA e procura identificá-los. ModScan é um scanner MODBUS / TCP você pode ver os dispositivos que utilizam a porta para MODBUS / TCP na rede e encontrar-los.

Referencias: sigint | digitalbond | wikipedia

Demonstração de vulnerabilidades em sistema SCADA

14.02.2014 (4:05 pm) – Filed under: Scada ::

Estava vagando na net e achei interessante essa demonstração “Demonstração de vulnerabilidades em sistemas SCADA” que foi realizado no Black Hat 2013.

Modelo TCP/IP e manipuladores de pacotes

14.02.2014 (1:42 pm) – Filed under: Rede Industrial ::

Em rede industrial não e diferente,esse modelo é composto por quatro camadas: Enlace, Internet ,Transporte e Aplicação,veja abaixo a figura:

Em  redes industriais ou redes de automação também  possuem protocolos de comunicação específicos com os quais os dispositivos trocam informações. Essas redes são compostas por diversos dispositivos como CLPs ,sensores, atuadores.

Os sensores são responsáveis por adquirir informações, como temperatura, pressão ou vazão, e enviar assim para o CLP.

Os atuadores possuem a função de modificar os estados dos dispositivos que atuam diretamente em um processo, como válvulas ou motores.

Os CLPs, esses sim são dispositivos importantes num sistema de controle, uma vez que são responsáveis por controlar todo esse processo,veja abaixo uma planta de como são esses processos em uma rede industrial:

wedefdf

A vários níveis em  redes industriais  e muitos protocolos de comunicação  baseados na pilha TCP/IP,que permitem a interconexão entre os dispositivos da rede, troca de informações e etc. Ataques em redes de automação possuem motivações e implicações semelhantes a qualquer ação maliciosa que ocorre em outros sistemas computacionais. Vemos varias  vulnerabilidades existentes nas redes de automação que podem ocorrer no nível de arquitetura, devido à utilização de sistemas antigos. Muitos dos sistemas antigos foram desenvolvidos sem preocupação com aspectos de segurança e com poucos testes de segurança.

>> Manipulação de Pacotes 

Scripts e programas manipuladores de pacotes têm como principal objetivo construir pacotes modificando o conteúdo de seus campos, de acordo com a necessidade do usuário,em protocolos TCP/IP podemos usar o Scapy,vemos abaixo

t458i4

Esses manipuladores de pacotes podem ser usados para diferentes formas,podemos tomar como exemplo de uso a manipulação de  pacotes para testar dispositivos de segurança como firewalls,IPSs/IDSs e outros,uma outra  utilização de manipuladores de pacotes é na realização de testes de conformidades de dispositivos em relação à implementação de determinado protocolo.