– 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