Está en la página 1de 59

UNIVERSIDADE DO RIO GRANDE DO NORTE FEDERAL

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE


CENTRO DE TECNOLOGIA
PROGRAMA DE PS-GRADUAO EM ENGENHARIA ELTRICA E
DE COMPUTAO
Uma Ferramenta de Manipulao de Pacotes
para Anlise de Protocolos de Redes Industriais
Baseados em TCP/IP
Tiago Hiroshi Kobayashi
Orientador: Prof. Dr. Paulo Srgio da Motta Pires
Dissertao de Mestrado apresentada ao
Programa de Ps-Graduao em Engenharia
Eltrica e de Computao da UFRN (rea de
concentrao: Engenharia de Computao)
como parte dos requisitos para obteno do
ttulo de Mestre em Cincias.
Nmero de ordem PPgEE: M236
Natal, RN, julho de 2009
Uma Ferramenta de Manipulao de Pacotes
para Anlise de Protocolos de Redes Industriais
Baseados em TCP/IP
Tiago Hiroshi Kobayashi
Dissertao de Mestrado aprovada em 07 de julho de 2009 pela banca examinadora com-
posta pelos seguintes membros:
Prof. Dr. Paulo Srgio da Motta Pires (orientador) . . . . . . . . . . . . . . DCA/UFRN
Prof. Dr. Jos Srgio da Rocha Neto (examinador externo) . . . . . . . DEE/UFCG
Prof. Dr. Agostinho de Medeiros Brito Jnior . . . . . . . . . . . . . . . . . . DCA/UFRN
Prof. Dr. Jorge Dantas de Melo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DCA/UFRN
Diviso de Servios Tcnicos
Catalogao da publicao na fonte. UFRN / Biblioteca Central Zila Mamede
Kobayashi, Tiago Hiroshi.
Uma ferramenta de manipulao de pacotes para anlise de protocolos de
redes industriais baseados em TCP/IP / Tiago Hiroshi Kobayashi - Natal, RN,
2009
59 f. : il.
Orientador: Paulo Srgio da Motta Pires
Dissertao (Mestrado) - Universidade Federal do Rio Grande do Norte. Cen-
tro de Tecnologia. Programa de Ps-Graduao em Engenharia Eltrica e de
Computao.
1. Protocolos industriais - Dissertao. 2. Redes industriais - segurana -
Dissertao. 3. Modbus/TCP (Protocolo) - Dissertao. I. Pires, Paulo Srgio da
Motta. II. Universidade Federal do Rio Grande do Norte. III. Ttulo.
RN/UF/BCZM CDU 004.057.4:65(043.3)
Aos meus pais, Eliana e Osamu,
pela educao e apoio prestados
durante minha vida.
Agradecimentos
A minha namorada, agradeo o auxlio prestado no decorrer da dissertao e dos anos que
convivemos.
Aos amigos, que contriburam, direta ou indiretamente, para minha formao como pes-
soa e como prossional gostaria de ressaltar um agradecimento.
Ao Prof. Agostinho, que fez consideraes relevantes para o desenvolvimento dessa dis-
sertao.
Ao meu orientador, Prof. Paulo Motta, sou grato por contribuir e engrandecer essa disser-
tao.
Ao LabSIN(Laboratrio de Segurana da Informao), atravs do projeto Petrobrs-SERI
(Segurana de Redes Industriais), agradeo por fornecerem recursos essenciais ao desen-
volvimento desta dissertao.
Resumo
Neste trabalho apresentada uma ferramenta de manipulao de pacotes destinada
realizao de testes em dispositivos que implementam protocolos de comunicao basea-
dos em TCP/IP utilizados em redes industriais. A ferramenta foi desenvolvida em lingua-
gem de programao Python, como uma extenso ao Scapy. Esta ferramenta, denominada
IndPM - Industrial Packet Manipulator, permite testar os dispositivos presentes em re-
des industriais em relao a possveis vulnerabilidades, realizar testes de conformidade
de protocolos, coletar respostas de servidores existentes nas redes e utilizar os recursos
do interpretador Python para compor testes. Como prova de conceito, foi implementado
o protocolo Modbus/TCP. O protocolo DNP3 sobre TCP tambm foi implementado, mas
no foi testado por indisponibilidade de recursos. Os resultados dos testes obtidos com a
manipulao de pacotes Modbus/TCP mostram falhas de implementao em um mdulo
de comunicao para um Controlador Lgico Programvel bastante utilizado na indstria.
Palavras-chave: Segurana em Redes Industriais, Segurana em Infraestrutura Cr-
tica, Testes de Conformidade de Protocolos Industriais, Modbus/TCP, DNP3 sobre TCP.
Abstract
This work presents a packet manipulation tool developed to realize tests in industrial
devices that implements TCP/IP-based communication protocols. The tool was developed
in Python programming language, as a Scapy extension. This tool, named IndPM- Indus-
trial Packet Manipulator, can realize vulnerability tests in devices of industrial networks,
industrial protocol compliance tests, receive server replies and utilize the Python interpre-
ter to build tests. The Modbus/TCP protocol was implemented as proof-of-concept. The
DNP3 over TCP protocol was also implemented but tests could not be realized because of
the lack of resources. The IndPM results with Modbus/TCP protocol show some imple-
mentation faults in a Programmable Logic Controller communication module frequently
utilized in automation companies.
Keywords: Industrial Network Security, Critical Infrastructure Security, Industrial
Protocols Compliance Tests, Modbus/TCP, DNP3 over TCP.
Sumrio
Sumrio i
Lista de Figuras iii
Lista de Tabelas v
Lista de Smbolos e Abreviaturas vii
1 Introduo 1
1.1 Manipulao de Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Organizao da Dissertao . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 O Protocolo Modbus 5
2.1 Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Modos de Comunicao Serial e Formato dos Pacotes . . . . . . 5
2.1.2 Funes do Modbus . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 Modbus/TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Implementao 11
3.1 Descrio do Scapy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Arquitetura do IndPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 Mdulo Modbus/TCP . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.2 Interface Grca . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Testes Realizados 17
4.1 Ambientes de Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Metodologia e Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.1 Testes de Conformidades . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2 Teste de Segurana . . . . . . . . . . . . . . . . . . . . . . . . . 28
5 Concluses 31
Referncias Bibliogrcas 32
A DNP3 sobre TCP 35
A.1 DNP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
A.2 Mdulo DNP3 sobre TCP do IndPM . . . . . . . . . . . . . . . . . . . . 36
i
B Publicaes 39
Lista de Figuras
1.1 Modelo de quatro camadas TCP/IP. . . . . . . . . . . . . . . . . . . . . . 1
1.2 Exemplo de uma rede de automao. . . . . . . . . . . . . . . . . . . . . 2
1.3 Exemplo de manipulao de pacotes utilizando o Scapy. . . . . . . . . . 4
2.1 Formato do Pacote RTU. . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Formato do pacote ASCII. . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Fluxograma para pacotes Modbus com cdigo de funo igual a 1. . . . . 8
2.4 Pacote Modbus/TCP e encapsulamento dentro de um segmento TCP. . . . 9
2.5 Contedo de um pacote Modbus/TCP. . . . . . . . . . . . . . . . . . . . 9
3.1 Arquitetura do IndPM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Exemplo de utilizao do Mdulo Modbus/TCP do IndPM. . . . . . . . 14
3.3 Tela da interface da manipulao de pacotes do protocolo Modbus/TCP. . 15
4.1 Ambientes de testes utilizados. . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Teste realizado com pacote contendo o cdigo de funo igual a 1 e quan-
tidade de registradores igual a 0. . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Teste realizado com pacote contendo o cdigo de funo igual a 1 e quan-
tidade de registradores maior que 2000. . . . . . . . . . . . . . . . . . . 19
4.4 Teste realizado com pacote contendo o cdigo de funo igual a 2 e quan-
tidade de registradores igual a 0. . . . . . . . . . . . . . . . . . . . . . . 20
4.5 Teste realizado com pacote contendo o cdigo de funo igual a 3 e quan-
tidade de registradores igual a 0. . . . . . . . . . . . . . . . . . . . . . . 20
4.6 Teste realizado com pacote contendo o cdigo de funo igual a 4 e quan-
tidade de registradores igual a 0. . . . . . . . . . . . . . . . . . . . . . . 21
4.7 Teste realizado com pacote contendo o cdigo de funo igual a 15 e
quantidade de registradores igual a 0. . . . . . . . . . . . . . . . . . . . . 21
4.8 Teste realizado com pacote contendo o cdigo de funo igual a 16 e
quantidade de registradores maior que 120. . . . . . . . . . . . . . . . . 22
4.9 Teste realizado com pacote contendo o cdigo de funo igual a 23 e
quantidade de registradores leitura igual a 0. . . . . . . . . . . . . . . . . 22
4.10 Teste realizado com pacote contendo o cdigo de funo igual a 23 e
quantidade de registradores de escrita igual a 0. . . . . . . . . . . . . . . 22
4.11 Teste realizado com pacote contendo o cdigo de funo igual a 2 e quan-
tidade de registradores maior que 2000. . . . . . . . . . . . . . . . . . . 23
4.12 Teste realizado com pacote contendo o cdigo de funo igual a 3 e quan-
tidade de registradores maior que 125. . . . . . . . . . . . . . . . . . . . 23
iii
4.13 Teste realizado com pacote contendo o cdigo de funo igual a 4 e quan-
tidade de registradores maior que 125. . . . . . . . . . . . . . . . . . . . 24
4.14 Teste realizado com pacote contendo o cdigo de funo igual a 3 e a
soma do endereo inicial e a quantidade de registradores maior que 10.000. 24
4.15 Teste realizado com pacote contendo o cdigo de funo igual a 4 e a
soma do endereo inicial e a quantidade de registradores maior que 10.000. 24
4.16 Teste realizado com pacote contendo o cdigo de funo igual a 6 e o
endereo inicial maior que 10.000. . . . . . . . . . . . . . . . . . . . . . 25
4.17 Teste realizado com pacote contendo o cdigo de funo igual a 15 e a
quantidade de sadas maior que 800. . . . . . . . . . . . . . . . . . . . . 25
4.18 Teste realizado com pacote contendo o cdigo de funo igual a 16 e a
soma do endereo inicial e a quantidade de registradores maior que 10.000. 26
4.19 Teste realizado com pacote contendo o cdigo de funo igual a 22 e o
endereo inicial maior que 10.000. . . . . . . . . . . . . . . . . . . . . . 27
4.20 Teste realizado com pacote contendo o cdigo de funo igual a 23 e a
soma do endereo inicial e a quantidade de registradores de leitura maior
que 10.000. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.21 Teste realizado com pacote contendo o cdigo de funo igual a 23 e a
soma do endereo inicial e a quantidade de registradores de escrita maior
que 10.000. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.22 Teste realizado com pacote contendo o cdigo de funo igual a 7. . . . . 28
4.23 Teste realizado com pacote contendo o cdigo de funo igual a 8 e sub-
funo igual a 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.24 Teste realizado com pacote contendo o cdigo de funo igual a 8 e sub-
funo igual a 65.5353. . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.25 Trfego entre o mdulo do CLP e o IndPM. . . . . . . . . . . . . . . . . 29
4.26 Monitoramento do mdulo Modbus/TCP. . . . . . . . . . . . . . . . . . 30
A.1 Encapsulamento do DNP3 sobre TCP. . . . . . . . . . . . . . . . . . . . 36
A.2 Tela da interface da manipulao de pacotes do protocolo DNP3 sobre TCP. 37
Lista de Tabelas
2.1 Principais funes especicadas no protocolo Modbus. . . . . . . . . . . 7
v
Lista de Smbolos e Abreviaturas
APCI: Application Control Protocol Information
ASCII: American Standard Code for Information Interchange
CLP: Controlador Lgico Programvel
CR: Carriage Return
CRC: Cyclic Redundancy Check
DoS: Denial of Service
GPL: General Public License
GTK: GIMP ToolKit
IP: Internet Protocol
LF: Line Feed
LRC: Longitudinal Redundancy Check
RTU: Remote Terminal Unit
SCADA: Supervisory Control And Data Acquisition
TA: Tecnologia de Automao
TCP/IP: Transmission Control Protocol/Internet Protocol
TCP: Transmission Control Protocol
XML: eXtensible Markup Language
vii
Captulo 1
Introduo
A comunicao entre dispositivos interligados em rede, geralmente, feita utilizando-
se protocolos enquadrados em modelos multinveis. Um desses modelos, apresentado na
Figura 1.1, chamado de pilha TCP/IP (Transmission Control Protocol/Internet Proto-
col)[Stevens 2001]. O modelo composto por quatro camadas: Enlace, Internet (Rede),
Transporte e Aplicao. Este modelo de comunicao entre dispositivos ser utilizado no
decorrer dessa dissertao.
Figura 1.1: Modelo de quatro camadas TCP/IP.
As redes industriais ou redes de automao possuem protocolos de comunicao es-
peccos com os quais os dispositivos trocam informaes. Essas redes so compostas
por diversos dispositivos, sendo comum encontrar os Controladores Lgicos Program-
veis (CLPs) e os dispositivos sensores e/ou atuadores. Os sensores so responsveis por
adquirir informaes, como temperatura, presso ou vazo, e envi-las ao CLP. Os atua-
dores possuem a funo de modicar os estados dos dispositivos que atuam diretamente
em um processo, como vlvulas ou motores. Os CLPs, por sua vez, so dispositivos im-
portantes num sistema de controle, uma vez que so responsveis por controlar o processo
2 CAPTULO 1. INTRODUO
atravs do recebimento de informaes dos sensores e do envio de comandos/aes para
os atuadores. Estes dispositivos constituem os nveis mais baixos das redes de automa-
o [Sauter 2005, Lobashov & Sauter 2006], sendo ilustrados na Figura 1.2.
Figura 1.2: Exemplo de uma rede de automao.
Os vrios nveis das redes industriais utilizam protocolos de comunicao diversi-
cados, sendo alguns destes baseados na pilha TCP/IP. Esses protocolos so utilizados
para permitir a interconexo entre os dispositivos da rede, que facilita a troca de infor-
maes entre esses dispositivos. Esta interconexo pode trazer desvantagem tambm,
sendo necessrio analisar mecanismos de segurana dessas informaes, que podem ser
transmitidas atravs de meios no conveis [Bailey & Wright 2003].
Os ataques s redes de automao possuem motivaes e implicaes semelhantes
a qualquer ao maliciosa que ocorre em outros sistemas computacionais. Os aspectos
chaves utilizados para garantir a segurana da informao, como integridade, disponibi-
lidade, condencialidade e autenticidade, tambm so considerados em estudos na rea
de segurana das redes industriais. Um destes trabalhos [Shifet 2004] apresenta uma ta-
xonomia para os sistemas de controle levando em considerao as peculiaridades desses
aspectos chaves de segurana existentes nos ambientes de tecnologia de automao (TA).
Um exemplo destas particularidades seria o aspecto da disponibilidade da informao.
No caso de sistemas de controle, a disponibilidade pode ser de extrema importncia para
o funcionamento normal de um sistema.
As vulnerabilidades existentes nas redes de automao tambm podem ocorrer no n-
vel de arquitetura, devido utilizao de sistemas antigos (legados). Muitos dos sistemas
antigos foram desenvolvidos sem preocupao com aspectos de segurana e com poucos
testes de segurana comprovados [Shifet 2004].
As possibilidades de insero de vulnerabilidades podem ser expandidas com a inter-
conexo das redes corporativas e redes industriais [Pires & Oliveira 2006]. Esta interco-
1.1. MANIPULAO DE PACOTES 3
nexo modica a arquitetura dos sistemas de controle, interligando diferentes sistemas e
dispositivos computacionais s redes de automao. Assim, importante denir alguns
aspectos relativos segurana, para que se possam obter as vantagens da interconexo
entre as redes.
Os protocolos de comunicao das redes industriais que so baseados na pilha TCP/IP
so comumente utilizados na comunicao entre CLPs e sistemas SCADA (Supervisory
Control And Data Acquisition) (Nvel de controle, na Figura 1.2). Como os protocolos
podem apresentar vulnerabilidades [Byres et al. 2006, Mander et al. 2007, Grzelak 2008],
importante analis-los com o objetivo de identicar essas vulnerabilidades, evitando que
problemas de segurana possam ocorrer quando de suas utilizaes.
Na Seo 1.1, apresenta-se a utilizao de manipuladores de pacotes, expondo as uti-
lidades deste tipo de ferramenta no teste de dispositivo e na anlise de protocolos. Finali-
zando este captulo, tem-se a organizao desta dissertao na Seo 1.2.
1.1 Manipulao de Pacotes
Os programas manipuladores de pacotes tm como principal objetivo construir paco-
tes modicando o contedo de seus campos, de acordo com a necessidade do usurio. Um
exemplo de uma ferramenta que tem essa funcionalidade em redes TCP/IP o Scapy
1
. Na
Figura 1.3, mostra-se um exemplo de manipulao utilizando o protocolo IP com o Scapy.
Neste exemplo, um datagrama IP manipulado, pela denio do campo de verso, do
endereo de origem e do endereo de destino.
Os manipuladores de pacotes podem ser utilizados com diferentes objetivos. Um
exemplo de uso de um manipulador de pacotes seria testar dispositivos de segurana,
como rewalls. As rewalls so mecanismos de defesa que impedem o acesso indevido
a uma rede ou a um sistema computacional, analisando o trfego destinado rede ou ao
sistema computacional [Tanenbaum 2003]. Outra utilizao de manipuladores de pacotes
na realizao de testes de conformidades de dispositivos em relao implementao
de determinado protocolo.
O objetivo neste trabalho apresentar uma ferramenta de manipulao de pacotes,
chamada IndPM (Industrial Packet Manipulator), mostrando os testes e resultados que
podem ser obtidos com este tipo de ferramenta. O IndPM permite testar os dispositivos
que implementam os protocolos industriais que tm como base a pilha TCP/IP. Como
prova de conceito, foi implementado o protocolo Modbus/TCP e foram realizados testes
em um CLP real, comumente utilizado em redes de automao que utiliza esse protocolo,
e em um emulador do protocolo Modbus/TCP.
A ferramenta tambm pode ser utilizada para coletar respostas dos dispositivos testa-
dos, criar e utilizar pacotes especcos para realizar testes de vulnerabilidades, bem como
realizar a composio de testes usando o ambiente de programao Python.
1
Scapy. http://www.secdev.org/projects/scapy/
4 CAPTULO 1. INTRODUO
Figura 1.3: Exemplo de manipulao de pacotes utilizando o Scapy.
1.2 Organizao da Dissertao
Este trabalho contm mais quatro captulos. No Captulo 2, apresenta-se o Mod-
bus/TCP, que foi implementado como prova de conceito. Sero apresentados os detalhes
necessrios para o entendimento do protocolo Modbus/TCP e sua utilizao.
No Captulo 3, so apresentados os aspectos relativos s implementaes do IndPM.
So descritos como o mdulo referente ao protocolo industrial foi implementado, bem
como a interface grca desenvolvida.
No Captulo 4, os resultados obtidos com a manipulao de pacotes realizados com
o IndPM sero apresentados. A manipulao de pacotes foi testada em dois dispositivos
diferentes, mostrando as falhas existentes nesses dispositivos.
No ltimo Captulo, apresentam-se as concluses referentes aos resultados obtidos
com a ferramenta desenvolvida e perspectivas para trabalhos futuros.
No Apndice A, apresentado o protocolo DNP3 sobre TCP e sua implementao.
Apesar de totalmente implementado na ferramenta, seu funcionamento no pode ser vali-
dado por indisponibilidade de dispositivos.
Por m, as publicaes realizadas com este trabalho esto no Apndice B.
Captulo 2
O Protocolo Modbus
Nas sees a seguir, apresentam-se alguns detalhes do protocolo industrial que foi
implementado, o Modbus/TCP. A implementao desse protocolo foi baseada na especi-
cao ([Modbus-IDA 2006a], [Modbus-IDA 2006b]).
2.1 Modbus
O protocolo Modbus baseado no paradigma de comunicao mestre-escravo, onde
o mestre o responsvel por coordenar diversos escravos. O Modbus utilizado no nvel
da camada de aplicao [Modbus-IDA 2006a] e foi inicialmente desenvolvido para ser
utilizado na comunicao dos CLPs com os sensores e os atuadores. O protocolo Mod-
bus foi desenvolvido pela Modicon Industrial Automation Systems (atualmente Schneider
Electric) nos anos 70 e recentemente tornou-se GPL (General Public License). Atual-
mente, o Modbus mantido pela Modbus-IDA que formada por um grupo de usurios
e fornecedores independentes.
2.1.1 Modos de Comunicao Serial e Formato dos Pacotes
Inicialmente, o Modbus foi desenvolvido para dispositivos que utilizavam meios de
comunicao serial. A comunicao Modbus que utiliza linhas seriais pode ser realizada
de duas formas: RTU (Remote Terminal Unit) e ASCII (American Standard Code for
Information Interchange). Esses dois modos de comunicao do Modbus possuem um
formato de pacote especco, que o mesmo para requisio ou para resposta. As formas
RTU e ASCII diferenciam-se na representao dos seus dados.
Cada pacote Modbus serial composto de seis campos que so representados por da-
dos binrios, no modo RTU, e por caracteres, no modo ASCII. Estes campos so denidos
como:
Incio: indica o comeo do pacote;
Endereo: indica qual dispositivo receber ou enviar o pacote. A faixa de ende-
reos vlidos dos dispositivos varia de 0 a 247, sendo o endereo 0 (zero) utilizado
para mensagens que so enviadas para todos os escravos;
Funo: este campo representa o objetivo do pacote;
6 CAPTULO 2. O PROTOCOLO MODBUS
Dados: campo onde os dados sero alocados. Este campo tem o seu contedo de
acordo com o campo Funo do pacote;
Controle: responsvel pela deteco de erros no pacote. Para verses que pos-
suam camadas de protocolos subjacentes que contenham mecanismos de deteco
de erros prprios, este campo dispensado;
Fim: sinaliza que a comunicao entre os dispositivos foi terminada.
No modo RTU, o campo Incio representado por um intervalo de silncio. Os cam-
pos, de Endereo e de Funo, so representados por 8 bits. O campo Dados depende
da funo utilizada e cada informao representada por 8 bits tambm, podendo conter
inmeras informaes (n) dentro de um mesmo pacote. A vericao de erro neste modo
realizada atravs do algoritmo de CRC (Cyclic Redundancy Check), sendo representado
por 16 bits. O campo Fim representado pelo mesmo contedo do campo Incio, um
intervalo de silncio.
Ocampo Incio, no modo ASCII, denido pelo caractere ":"(0x3Aemhexadecimal).
Os campos, de Endereo e de Funo, so representados por dois caracteres. O campo
Dados, no modo ASCII, representado por uma quantidade varivel (n) de caracteres. O
campo Controle representado por dois caracteres ASCII e utiliza o algoritmo de LRC
(Longitudinal Redundancy Check) para deteco de erros. O m 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 RTUe ASCII podemser visualizados na Figura 2.1 e na Figura
2.2, respectivamente.
Figura 2.1: Formato do Pacote RTU.
Figura 2.2: Formato do pacote ASCII.
2.1.2 Funes do Modbus
O protocolo Modbus possui algumas funes que dependem do dispositivo que im-
plementa o protocolo. As funes possuem diferentes objetivos, como a vericao da
comunicao, a visualizao da quantidade de eventos, dentre outras, sendo as mais utili-
zadas as funes de escrita e de leitura. Os dispositivos comunicam-se atravs de pacotes
2.1. MODBUS 7
de requisies e de respostas, onde os cdigos de funes para estes dois tipos de pacotes
podem ser iguais numa mesma transao.
As principais funes especicadas no protocolo Modbus, e suas descries, so mos-
tradas na Tabela 2.1. Mais detalhes das implementaes das funes podem ser obtidos
na especicao do protocolo [Modbus-IDA 2006a].
Cdigo de funo Descrio
01 Ler o estado dos registradores booleanos de sada
02 Ler o estado de entradas discretas
03 Ler o contedo de um bloco de registradores de espera
04 Ler registradores de entrada
05 Escrever em um registrador booleano de sada
06 Escrever em um registrador de espera
07 Ler o contedo de oito estados de exceo
08 Prover uma srie de testes para vericao da comunicao e
erros internos
11 Obter o contador de eventos
12 Obter um relatrio de eventos
15 Escrever em uma sequncia de sadas
16 Escrever em um bloco de registradores
17 Ler algumas informaes do dispositivo
20 Ler informaes de um arquivo
21 Escrever informaes em um arquivo
22 Modicar o contedo dos registradores de espera atravs de
operaes lgicas
23 Combina ler e escrever em registradores numa nica transao
24 Ler o contedo da la FIFO de registradores
Tabela 2.1: Principais funes especicadas no protocolo Modbus.
A especicao do protocolo dene uxogramas para cada funo, detalhando o com-
portamento de cada uma delas. Esses uxogramas apresentam como os pacotes devem
ser respondidos em cada situao. Na Figura 2.3, apresenta-se um exemplo destes uxo-
gramas, mostrando o comportamento que um dispositivo deve apresentar quando recebe
um pacote Modbus com o campo Funo igual a 1.
Algumas funes do Modbus (7, 8, 11, 12 e 17) so denidas pelo protocolo como
especcas para comunicaes realizadas em canais de comunicao seriais, no sendo
indicadas para uso em outros meios de comunicao.
2.1.3 Modbus/TCP
Com a grande utilizao e facilidade modicaes do protocolo Modbus, foram
incorporados novos meios de comunicaes como o Ethernet que utilizado pela varia-
o do protocolo, denominada Modbus/TCP. Esta variao utiliza a pilha de protocolos
TCP/IP para realizar as transaes entre os dispositivos, que contribui para uma maior
8 CAPTULO 2. O PROTOCOLO MODBUS
Figura 2.3: Fluxograma para pacotes Modbus com cdigo de funo igual a 1.
conectividade visto que permite interligar diferentes tipos de redes, compartilhando uma
mesma infra-estrutura.
Os pacotes do Modbus/TCP consistem de uma modicao do pacote Modbus tradici-
onal e do encapsulamento desse pacote em segmentos TCP, como se mostra na Figura 2.4.
O Modbus/TCP contm somente dois campos do pacote Modbus tradicional (Funo e
Dados), sendo eliminados os campos de Incio, de Endereo e de Fim que so desneces-
srios em comunicaes sobre Ethernet, realizados por protocolos especcos. O campo
de Controle tambm no est presente no Modbus/TCP porque a vericao de erros de
transmisso realizada atravs das camadas inferiores ao Modbus/TCP.
A camada do Modbus/TCP composta por um cabealho para indicar parmetros
da transmisso, um campo para indicar o cdigo de funo utilizado e um campo con-
tendo os dados que esto sendo transmitidos. Na Figura 2.5, apresentam-se esses campos
existentes em pacotes Modbus/TCP, sendo o cabealho composto pelos quatro primeiros
campos.
2.1. MODBUS 9
Figura 2.4: Pacote Modbus/TCP e encapsulamento dentro de um segmento TCP.
Figura 2.5: Contedo de um pacote Modbus/TCP.
Os quatro campos do cabealho Modbus/TCP podem ser denidos como:
Identicador de Transao: este campo, com dois bytes, identica a comunicao
entre o servidor e o cliente Modbus. Cada requisio Modbus tem sua resposta com
o mesmo identicador de transao. Para o Modbus/TCP, o nmero de requisies
que os dispositivos respondem ou requisitam depende da capacidade dos mesmos.
Este fato representa uma melhoria em relao ao Modbus tradicional que permite
apenas uma nica transao por vez.
Identicador de Protocolo: este campo, comdois bytes, utilizado para identicar
o protocolo. O Modbus especicado com valor 0 (zero).
Tamanho: este campo, com dois bytes, contm a quantidade de bytes dos campos
seguintes a ele (Identicador de Unidade, Funo e Dados).
Identicador de Unidade: este campo, com um byte, utilizado para identicar os
dispositivos Modbus que estejam interconectados na rede atravs de um gateway.
Em geral, esses gateways so utilizados para interligar dispositivos que utilizam o
barramento serial com os dispositivos da rede Ethernet.
Os outros dois campos do pacote Modbus/TCP, Funo e Dados, so semelhantes
aos campos existentes no Modbus tradicional. Eles contm o cdigo de funo e os dados
transmitidos, sendo o campo de dados determinado pelo cdigo de funo.
No prximo Captulo, ser apresentada a ferramenta desenvolvida, mostrando deta-
lhes de implementao desse protocolo e da interface grca construda.
10 CAPTULO 2. O PROTOCOLO MODBUS
Captulo 3
Implementao
Neste Captulo, sero apresentados alguns detalhes da implementao da ferramenta
desenvolvida. Inicialmente, ser apresentado o software que foi utilizado como base do
trabalho. Em seguida, ser apresentada a arquitetura do software desenvolvido e detalhes
da implementao do protocolo Modbus/TCP e da interface grca.
3.1 Descrio do Scapy
A base do nosso trabalho um manipulador de pacotes. Algumas ferramentas com
esta funcionalidade foram analisadas (Hping
1
, Nemesis
2
, PacGen
3
e Scapy
4
) e dentre
essas, optamos pela utilizao do Scapy. Os motivos da escolha do Scapy como base de
nossa implementao foram a disponibilidade do cdigo-fonte do software, a variedade
de protocolos implementados pela ferramenta bem como a facilidade para incluso de
novos protocolos e funcionalidades.
O Scapy um framework desenvolvido em Python com muitas funcionalidades, den-
tre as quais a principal a manipulao de pacotes. A ferramenta permite uma maior
interatividade em relao a outras ferramentas existentes, permitindo a manipulao de
pacotes de maneira exvel. Os pacotes podem ser construdos independentes da pilha de
protocolos, no sendo necessrio seguir a ordem existente na pilha.
O Scapy possui, ainda, outras funcionalidades como sniffer de rede, vericao de
rotas, realizao de ao maliciosa, dentre outras. A diferena do Scapy para outras
ferramentas existentes que ele no interpreta os dados recebidos, deixando essa respon-
sabilidade para o usurio do framework.
A execuo do Scapy possibilita a utilizao do interpretador Python, permitindo o
uso dos recursos dessa linguagem de programao. Desta forma, possvel combinar as
funcionalidades da ferramenta como a manipulao e a captura de pacotes com o objetivo
de realizar testes especcos.
1
Hping - Active Network Security Tool. http://www.hping.org/
2
Nemesis packet injection tool suite. http://nemesis.sourceforge.net/
3
Pacgen: Where do you want to send packets today. http://pacgen.sourceforge.net/
4
Scapy. http://www.secdev.org/projects/scapy/
12 CAPTULO 3. IMPLEMENTAO
3.2 Arquitetura do IndPM
O IndPM foi desenvolvido com o objetivo de ser um manipulador de pacotes para
protocolos industriais baseados emTCP/IP. A falta desse tipo de ferramenta foi a principal
motivao para o desenvolvimento do trabalho. Um prottipo do IndPM foi a primeira
extenso do Scapy desenvolvida para protocolos industriais [Kobayashi et al. 2007].
A ferramenta possui, atualmente, os seguintes mdulos: Scapy, Mdulo Modbus/TCP,
Mdulo DNP3 sobre TCP e a Interface Grca. Os demais mdulos de protocolos indus-
triais podem ser desenvolvidos de maneira semelhante ao Mdulo Modbus/TCP, podendo
ser incorporados ao IndPM. Um mdulo para o protocolo DNP3 sobre TCP foi desen-
volvido e est descrito no Apndice A.
Na Figura 3.1, ilustra-se a arquitetura do IndPM, apresentando a interligao entre os
mdulos e a Interface Grca, bem como a dependncia com o Scapy.
Figura 3.1: Arquitetura do IndPM.
As implementaes dos protocolos foram desenvolvidas em Python para que pudes-
sem ser utilizadas em conjunto com o Scapy. Os mdulos dos protocolos foram desenvol-
vidos de forma independente e podem ser executados sem uso da Interface Grca, que
foi desenvolvida em GTK (GIMP ToolKit)
5
. A interface grca desenvolvida serve para
visualizar e executar a manipulao de pacotes utilizando os mdulos dos protocolos.
Nas subsees a seguir, alguns detalhes da implementao desta arquitetura so apre-
sentados.
5
GTK+ project. http://www.gtk.org/
3.2. ARQUITETURA DO INDPM 13
3.2.1 Mdulo Modbus/TCP
O protocolo Modbus/TCP foi implementado com base na especicao apresentada
na Seo 2.1. Foi desenvolvido um mdulo que executado em conjunto com o Scapy,
capaz de manipular pacotes do protocolo Modbus/TCP de acordo com os parmetros que
o usurio especica. Com este mdulo, foi possvel fazer anlises de dispositivos que
implementam o Modbus/TCP [Kobayashi et al. 2007].
Este mdulo foi desenvolvido em Python com os conceitos de orientao a objetos,
onde algumas classes criadas herdam de classes existentes no Scapy. As principais classes
que o IndPM herda do Scapy so: StrField e Packet. A primeira foi usada para criao
de classes que denem alguns campos do Modbus/TCP, j a segunda foi utilizada para
construir os pacotes do protocolo.
Para cada cdigo de funo do Modbus foi denido uma classe que corresponde a um
pacote Modbus/TCP, visto que os campos existentes na rea de dados do pacote depen-
dem do cdigo de funo utilizado. Todas as classes que denem um cdigo de funo do
Modbus herdam de uma classe, denominada ModbusPDU. Esta classe determina os cam-
pos existentes em qualquer pacote do protocolo Modbus/TCP, so eles: Identicador de
Transao, Identicador de Protocolo, Tamanho, Identicador de Unidade e Fun-
o. O campo Dados o campo que varia de acordo com o cdigo de funo desejado,
no sendo includo na classe ModbusPDU.
Um exemplo da utilizao do Mdulo Modbus/TCP apresentado na Figura 3.2, onde
so manipulados pacotes com cdigo de exceo igual a 1. Para este cdigo de funo,
foi denida uma classe denominada ReadCoilRequest que quando instanciada, cria um
objeto representando um pacote Modbus/TCP contendo o respectivo cdigo de funo.
Desta maneira possvel manipular o contedo do campo Dados, denindo dentro do
atributo data, os valores para os dois campos existentes nesse cdigo de funo (address
e count).
Neste exemplo, na Figura 3.2, apresentado tambm a vantagem do Scapy em utilizar
a linguagem de programao Python para criao dos testes. Neste exemplo foi criado,
dentro de um lao, nove pacotes com cdigo de funo igual a 1 e enviados ao dispositivo
alvo. Como o Mdulo Modbus/TCP desenvolvido utilizado em conjunto com o Scapy,
ele tambm permite essa utilizao dos recursos do Python para a criao de testes.
3.2.2 Interface Grca
A Interface Grca foi desenvolvida para facilitar a manipulao de pacotes atravs
da utilizao dos mdulos que implementam os protocolos. Com a Interface Grca, o
usurio pode modicar os valores para cada campo existente nos pacotes do Modbus/TCP
presentes como botes na interface. Este procedimento elimina a necessidade do usurio
conhecer alguns detalhes das especicaes dos protocolos e dos mdulos desenvolvidos.
A interface foi desenvolvida atravs do Glade
6
, que um software usado para auxiliar
o desenvolvimento de interfaces grcas utilizando GTK. O Glade possui vrios objetos
prontos como botes, janelas, elementos de agrupamento dentre outros que facilitam o
6
Glade - a User Interface Designer for GTK+ and GNOME. http://glade.gnome.org/
14 CAPTULO 3. IMPLEMENTAO
Figura 3.2: Exemplo de utilizao do Mdulo Modbus/TCP do IndPM.
desenvolvimento de interfaces grcas. Alm disso, gera o cdigo fonte da interface
num arquivo XML (eXtensible Markup Language) que pode ser interpretado por vrias
linguagens de programao, dentre elas o Python que utilizamos para implementao dos
outros mdulos.
O mdulo da Interface Grca composto de dois arquivos: o arquivo em XML
gerado pelo Glade e o arquivo em Python contendo toda a programao da interface. O
arquivo XML contm as denies e os eventos de botes, de textos, de janelas, dentre
outros componentes presentes na interface. J o arquivo em Python responsvel por
interligar os mdulos dos protocolos com a interface, possuindo todas as denies de
eventos dos componentes existentes na mesma.
A interface grca do IndPM possui, atualmente, duas interfaces para o usurio, uma
para o protocolo Modbus/TCP e outra para o protocolo DNP3 sobre TCP (ver Apndice
A). A interface para o Modbus/TCP mostrada na Figura 3.3. Ela contm botes do tipo
SpinButton representando os possveis valores de cada campo do protocolo de acordo
com a especicao do Modbus/TCP.
Alguns botes esto agrupados com o objetivo de aumentar a facilidade de uso da
ferramenta. Como pode ser visto na Figura 3.3, existem alguns botes representando o
cabealho de um pacote Modbus/TCP. Alm do cabealho, existe outro grupo para denir
o contedo do pacote Modbus/TCP. Este grupo composto pelo campo que contm o
cdigo de funo e os dados do pacote. Dependendo do valor do campo de cdigo de
funo, o campo de dados modicado sendo visualizados os campos existentes para o
cdigo de funo selecionado.
Existe ainda na interface do Modbus/TCP do IndPM, uma rea de texto para indicar
3.2. ARQUITETURA DO INDPM 15
Figura 3.3: Tela da interface da manipulao de pacotes do protocolo Modbus/TCP.
o pacote Modbus/TCP que est sendo criado. Esta rea mostra o pacote no formato he-
xadecimal. H tambm outra rea de texto para indicar o estado da conexo, mostrando
a sada gerada pelo Scapy. Caso ocorra erros de conexo possvel identic-los nesta
rea.
A Interface Grca proporciona maior facilidade de uso para o usurio do IndPM,
sendo necessrio apenas a manipulao dos campos apresentados pela interface. Isto
abstrai o conhecimento prvio dos protocolos industriais e da implementao deles.
No Captulo seguinte, detalhes de testes realizados com o IndPM so apresentados.
16 CAPTULO 3. IMPLEMENTAO
Captulo 4
Testes Realizados
Neste Captulo, sero apresentados resultados de testes realizados com a utilizao
da ferramenta IndPM. Inicialmente, sero apresentados os ambientes utilizados para a
realizao desses testes. Em seguida, ser apresentada a metodologia utilizada nos testes
e os resultados obtidos. Todos os testes apresentados neste Captulo foram realizados no
Laboratrio de Segurana da Informao, LabSIN, do Departamento de Engenharia de
Computao e Automao da Universidade Federal do Rio Grande do Norte.
4.1 Ambientes de Testes
Em nossos testes, foram utilizados dois dispositivos diferentes como servidor Mod-
bus/TCP: um simulador e um mdulo de comunicao Modbus/TCP conectado a um CLP.
Nestas duas situaes, foram montados ambientes de testes semelhantes, interligando o
manipulador de pacotes e os servidores Modbus/TCP atravs de um switch. A Figura
4.1 mostra os dois ambientes de testes. O IndPM foi utilizado para manipular e enviar
pacotes para o mdulo de comunicao Modbus/TCP do CLP e para o simulador.
Figura 4.1: Ambientes de testes utilizados.
18 CAPTULO 4. TESTES REALIZADOS
O servidor Modbus/TCP utilizado como simulador foi o TCPSlaveTest, uma das fer-
ramentas do jamod
1
. O jamod uma biblioteca desenvolvida em Java para o protocolo
Modbus, que permite o desenvolvimento de aplicaes utilizando o protocolo. Nos testes
realizados, o TCPSlaveTest foi utilizado em sua congurao padro.
O CLP utilizado comumente encontrado em ambientes de automao, com m-
dulo de comunicao Modbus/TCP especco para este modelo de CLP. O mdulo de
comunicao Modbus/TCP atua como servidor, recebendo e respondendo s requisies
realizadas pelo IndPM.
4.2 Metodologia e Resultados
Os testes foram realizados manipulando pacotes com todas as funes do Modbus im-
plementadas pelo IndPM. Estes pacotes foram enviados para os dois dispositivos e suas
respectivas respostas foram analisadas. Essas anlises foram separadas em duas catego-
rias, testes de conformidades e teste de segurana, que so apresentadas nas subsees
seguintes.
4.2.1 Testes de Conformidades
Cada funo possui uma resposta padro descrita na especicao do protocolo Mod-
bus [Modbus-IDA 2006a]. Para os dois casos, o mdulo e o simulador, algumas respostas
so diferentes entre si, e em outros casos, as respostas so diferentes da especicao do
protocolo. Os resultados que so apresentados referem-se s respostas em discordncia
com a especicao do protocolo.
Um dos testes foi realizado usando pacotes com cdigo de funo igual a 1. Esta
funo utilizada para leitura dos estados das sadas booleanas do dispositivo. Um pacote
Modbus com este cdigo de funo possui duas informaes no campo de dados: uma
para representar o endereo inicial a ser lido e outra informando a quantidade de sadas
booleanas que devero ser lidas. Cada uma destas informaes tem uma escala de valores
e tratamento de exceo indicados pela especicao [Modbus-IDA 2006a].
Os pacotes contendo o cdigo de funo igual a 1 foram respondidos pelo mdulo de
comunicao do CLP, em discordncia com a especicao do Modbus, em dois casos.
Um dos casos, foi o envio de um pacote contendo a quantidade de sadas booleanas a
serem lidas igual a 0 e no outro caso quando esta quantidade foi um valor maior que
2000. De acordo com a especicao, estes pacotes deveriam ser respondidos com uma
exceo (pacote contendo cdigo de funo igual a 129 e cdigo de exceo igual a 3).
Para o caso do pacote contendo a quantidade de sadas booleanas igual a 0, o mdulo
Modbus/TCP respondeu normalmente a este tipo de requisio. No outro caso, o mdulo
Modbus/TCP retornou uma exceo com o campo de cdigo de exceo errado, com o
valor 2 ao invs de 3.
No teste com o simulador de Modbus/TCP, estes mesmos pacotes foram enviados
e as respostas recebidas tambm foram diferentes da especicao do protocolo. Nos
1
Java Modbus Library. http://sourceforge.net/projects/jamod
4.2. METODOLOGIA E RESULTADOS 19
dois casos, o simulador retornou excees com o campo do cdigo de exceo igual a
2, quando deveria ser igual a 3. Nas Figuras 4.2 e 4.3, so apresentados diagramas que
resumem estes testes.
Figura 4.2: Teste realizado compacote contendo o cdigo de funo igual a 1 e quantidade
de registradores igual a 0.
Figura 4.3: Teste realizado compacote contendo o cdigo de funo igual a 1 e quantidade
de registradores maior que 2000.
Alm de pacotes com cdigo de funo igual a 1, existem outros casos em que o
mdulo Modbus/TCP deveria responder determinadas requisies com uma exceo mas
responde normalmente. O simulador de Modbus/TCP, em alguns desses casos, respondeu
com cdigo de exceo errado ou no implementava a funo solicitada.
Os pacotes contendo cdigos de funo iguais a 2, a 3 e a 4, com a quantidade de re-
gistradores a serem lidos iguais a 0, deveriam ser respondidos com um pacote de exceo
e com cdigo de exceo igual a 3. Para estes casos, o mdulo Modbus/TCP respondeu
normalmente com um pacote contendo os estados dos registradores vazio. Nesses casos,
o simulador de Modbus/TCP respondeu com cdigo de exceo errado, 2 ao invs de 3.
Os diagramas que ilustram esses testes esto apresentados nas Figuras 4.4, 4.5 e 4.6.
Os testes mostram que, alm dos pacotes com cdigos de funo de leitura, alguns pa-
cotes contendo cdigos de funo de escrita, 15 e 16, tambm apresentaram discordncia
com a especicao. Os pacotes, contendo cdigo de funo igual a 15 e a quantidade de
20 CAPTULO 4. TESTES REALIZADOS
Figura 4.4: Teste realizado compacote contendo o cdigo de funo igual a 2 e quantidade
de registradores igual a 0.
Figura 4.5: Teste realizado compacote contendo o cdigo de funo igual a 3 e quantidade
de registradores igual a 0.
sadas que se deseja modicar o estado iguais a 0, foram respondidos normalmente pelo
mdulo Modbus/TCP quando deveriam ser respondidos com uma exceo com cdigo
igual a 3. Nesse caso, o simulador de Modbus/TCP respondeu com cdigo de exceo
errado, da mesma maneira que os cdigos de funo de leitura. Na Figura 4.7, est repre-
sentado este teste.
Para os pacotes com cdigo de funo igual a 16, o mdulo do Modbus/TCP respon-
deu normalmente aos pacotes contendo a quantidade de registradores, no qual se especi-
ca a modicao dos seus estados, superior ao limite denido pelo protocolo. Os testes
foram realizados com quantidade de registradores igual a 121. Nestes casos, a especi-
cao dene o limite de registradores a serem modicados, com cdigo de funo 16,
entre 0 e 120. Pacotes com valores fora desse limite deveriam ser respondidos com uma
exceo e cdigo de exceo igual a 3. Os pacotes com cdigo de funo igual a 16 no
foram respondidos pelo simulador de Modbus/TCP. O diagrama que ilustra esse teste est
4.2. METODOLOGIA E RESULTADOS 21
Figura 4.6: Teste realizado compacote contendo o cdigo de funo igual a 4 e quantidade
de registradores igual a 0.
Figura 4.7: Teste realizado com pacote contendo o cdigo de funo igual a 15 e quanti-
dade de registradores igual a 0.
representado na Figura 4.8.
Outros pacotes que foram respondidos incorretamente pelo mdulo Modbus/TCP fo-
ram os pacotes contendo cdigos de funo iguais a 23. Estes pacotes so utilizados para
ler e modicar os valores dos registradores numa nica transao. Este tipo de pacote no
foi respondido pelo simulador de Modbus/TCP. Para pacotes contendo o cdigo de fun-
o 23, o mdulo do CLP respondeu normalmente a requisies contendo a quantidade
de registradores a serem lidos ou modicados iguais a 0, quando deveria responder estas
requisies com exceo contendo o cdigo de exceo igual a 3. Nas Figuras 4.9 e 4.10,
so apresentados esses testes.
Os dispositivos testados, mdulo Modbus/TCP e simulador de Modbus/TCP, apre-
sentaram outras situaes alm das apresentadas nas Figuras 4.2 e 4.3, em que esses
dispositivos responderam com cdigo de exceo diferente do esperado. Essas situaes
ocorreram para os pacotes contendo cdigos de funo iguais a 2, a 3 e a 4, contendo a
22 CAPTULO 4. TESTES REALIZADOS
Figura 4.8: Teste realizado com pacote contendo o cdigo de funo igual a 16 e quanti-
dade de registradores maior que 120.
Figura 4.9: Teste realizado com pacote contendo o cdigo de funo igual a 23 e quanti-
dade de registradores leitura igual a 0.
Figura 4.10: Teste realizado com pacote contendo o cdigo de funo igual a 23 e quan-
tidade de registradores de escrita igual a 0.
quantidade de registradores a serem lidos fora do limite denido pela especicao.
No caso dos pacotes com cdigo de funo igual a 2, o limite especicado pelo proto-
colo para a quantidade mxima de registradores a serem lidos de 2000 registradores. Os
testes realizados com IndPM solicitando a leitura de 2001 registradores foram respondi-
4.2. METODOLOGIA E RESULTADOS 23
dos incorretamente pelos dispositivos que, ao invs de responderem com um pacote de
exceo contendo cdigo de exceo igual a 3, responderam com um pacote de exceo
com cdigo de exceo igual a 2. Esse teste est representado na Figura 4.11.
Figura 4.11: Teste realizado com pacote contendo o cdigo de funo igual a 2 e quanti-
dade de registradores maior que 2000.
Esta mesma situao ocorreu com pacotes contendo os cdigos de funo iguais a 3
e a 4, s que nesses casos o limite denido para a quantidade de registradores a serem
lidos de 125. Os testes foram realizados denindo pacotes com essa quantidade igual a
126. Esses testes de manipulao incorreta das excees por parte dos dispositivos esto
ilustrados nas Figuras 4.12 e 4.13.
Figura 4.12: Teste realizado com pacote contendo o cdigo de funo igual a 3 e quanti-
dade de registradores maior que 125.
Os testes realizados mostram, ainda, que os dispositivos testados responderam com
exceo a requisies que deveriam ser respondidas normalmente de acordo com o proto-
colo. Nas Figuras 4.14 e 4.15, so apresentados diagramas que mostram os pacotes com
cdigos de funo de leitura (3 e 4) que foram respondidos com exceo, quando deve-
riam ser respondidos normalmente. Esses pacotes foram manipulados para que a soma
do endereo inicial dos registradores a serem lidos mais a quantidade desses registradores
fosse um valor maior que 10.000. Nesses casos, o mdulo Modbus/TCP e o simulador
de Modbus/TCP responderam com uma exceo com cdigo de exceo igual a 2. Estes
tipos de pacotes deveriam ser respondidos com os valores dos registradores que foram
requisitados.
24 CAPTULO 4. TESTES REALIZADOS
Figura 4.13: Teste realizado com pacote contendo o cdigo de funo igual a 4 e quanti-
dade de registradores maior que 125.
Figura 4.14: Teste realizado com pacote contendo o cdigo de funo igual a 3 e a soma
do endereo inicial e a quantidade de registradores maior que 10.000.
Figura 4.15: Teste realizado com pacote contendo o cdigo de funo igual a 4 e a soma
do endereo inicial e a quantidade de registradores maior que 10.000.
4.2. METODOLOGIA E RESULTADOS 25
Alguns pacotes com cdigos de funo de escrita tambm apresentaram discordncia
com a especicao. Nas Figuras 4.16, 4.17 e 4.18, so apresentados os pacotes com
cdigos de funo iguais a 6, a 15 e a 16, respectivamente, que apresentaram essas dis-
cordncias. O pacote contendo cdigo de funo igual a 6 e com o endereo inicial dos
registradores a serem modicados igual a 10.001, foi respondido com um pacote de ex-
ceo contendo cdigo de exceo igual a 2 tanto pelo mdulo Modbus/TCP quanto pelo
simulador de Modbus/TCP. Estes pacotes deveriam ser respondidos com uma resposta
contendo o mesmo contedo da requisio.
Figura 4.16: Teste realizado com pacote contendo o cdigo de funo igual a 6 e o ende-
reo inicial maior que 10.000.
Figura 4.17: Teste realizado com pacote contendo o cdigo de funo igual a 15 e a
quantidade de sadas maior que 800.
Para os pacotes com cdigo de funo igual a 15, as respostas foram obtidas incorre-
tamente quando a quantidade de sadas a serem modicados tinha valor maior que 800.
Esses pacotes deveriam ser respondidos normalmente. Nesses casos, as requisies foram
26 CAPTULO 4. TESTES REALIZADOS
Figura 4.18: Teste realizado com pacote contendo o cdigo de funo igual a 16 e a soma
do endereo inicial e a quantidade de registradores maior que 10.000.
respondidas, pelo mdulo Modbus/TCP e pelo simulador de Modbus/TCP, com excees
contendo cdigo de exceo igual a 2.
Os pacotes, com cdigo de funo igual a 16, foram manipulados para que a soma,
do endereo inicial dos registradores a serem modicados juntamente com a quantidade
desses registradores, tivessem um valor maior que 10.000. Esses pacotes so respondi-
dos com uma exceo pelo mdulo Modbus/TCP, j o simulador de Modbus/TCP no
responde a essas requisies. Nesses casos, esses pacotes deveriam ser respondidos nor-
malmente com o mesmo contedo dessas requisies.
Os testes realizados com pacotes contendo cdigo de funo igual a 22 mostram que o
mdulo Modbus/TCP tambm responde incorretamente a essas requisies. Este cdigo
de funo utilizado para modicar os valores dos registradores atravs da combina-
o de operaes lgicas. Os testes que apresentam discordncias do protocolo so os
pacotes que possuem endereos a serem modicados maiores que 10.000. As requisi-
es enviadas nos testes possuam valores iguais a 10.001 nesse campo e deveriam ser
respondidas normalmente com um pacote de mesmo contedo. Nesse caso, o mdulo
Modbus/TCP responde com uma exceo com cdigo de exceo igual a 2 e o simulador
de Modbus/TCP no responde a pacotes contendo este cdigo de funo. Na Figura 4.19,
apresenta-se o diagrama correspondente desse teste.
Na Figuras 4.20 e 4.21, apresentam-se, ainda, os testes realizados com pacotes con-
tendo cdigos de funo iguais a 23. Para esses pacotes, o mdulo Modbus/TCP respon-
deu com excees a pacotes onde foram manipulados os campos que denem a leitura e
a escrita. Quando a soma dos campos, que denem a leitura ou a escrita, tem um valor
maior que 10.000, o mdulo Modbus/TCP responde a essas requisies com uma exceo
que tem cdigo de exceo igual a 2. O simulador de Modbus/TCP no responde a es-
tas requisies. Estas requisies deveriam ser respondidas normalmente com os valores
solicitados.
Os testes de conformidades mostraram tambm que pacotes com cdigos de funo,
que deveriam ser respondidos somente em dispositivos que utilizam canais de comunica-
o serial, foram respondidos normalmente pelo mdulo Modbus/TCP. O simulador de
Modbus/TCP testado no respondeu a esses tipos de pacotes.
4.2. METODOLOGIA E RESULTADOS 27
Figura 4.19: Teste realizado com pacote contendo o cdigo de funo igual a 22 e o
endereo inicial maior que 10.000.
Figura 4.20: Teste realizado com pacote contendo o cdigo de funo igual a 23 e a soma
do endereo inicial e a quantidade de registradores de leitura maior que 10.000.
Figura 4.21: Teste realizado com pacote contendo o cdigo de funo igual a 23 e a soma
do endereo inicial e a quantidade de registradores de escrita maior que 10.000.
Os testes apresentam que dois cdigos de funo, 7 e 8, reservados para comunicao
serial foram respondidos normalmente. Os pacotes contendo cdigo de funo igual a 7
deveriamser respondidos, por dispositivos que utilizamo Modbus/TCP, comuma exceo
contendo o cdigo de exceo igual a 1. Este cdigo de exceo utilizado para indicar
28 CAPTULO 4. TESTES REALIZADOS
que o cdigo de funo utilizado no permitido. Na Figura 4.22, apresentado esse
teste.
Figura 4.22: Teste realizado com pacote contendo o cdigo de funo igual a 7.
Os pacotes, contendo cdigo de funo igual a 8, possuem um campo que dene uma
sub-funo. Este campo possui valores especicados pelo protocolo, que denem a fun-
cionalidade do pacote. Nos testes realizados, os pacotes contendo nesse campo valores
denidos, e tambm os no-denidos, deveriam ser respondidos com uma exceo. No
caso dos valores denidos pela especicao, os pacotes deveriam ser respondidos com
cdigo de exceo igual a 1 pois um cdigo de funo desenvolvido para comunicaes
seriais. Alm do mais, quando se tem um valor do campo de sub-funo fora da faixa de
valores denidos pelo protocolo, o dispositivo tambm deveria responder com uma exce-
o com cdigo de exceo igual a 1. O mdulo Modbus/TCP respondeu normalmente
a estas requisies, nos dois casos, com pacotes de mesmo contedo. Esses testes so
apresentados nos diagramas das Figuras 4.23 e 4.24.
Figura 4.23: Teste realizado com pacote contendo o cdigo de funo igual a 8 e sub-
funo igual a 1.
As discordncias entre a especicao e a implementao do protocolo nos dispositi-
vos podem ocasionar problemas na interpretao dos dados. Este fato pode levar a tomada
de decises errneas.
4.2.2 Teste de Segurana
Atravs do software de manipulao de pacotes Modbus tambm foi possvel encon-
trar um grave problema no mdulo Modbus/TCP do CLP testado. Os pacotes contendo
4.2. METODOLOGIA E RESULTADOS 29
Figura 4.24: Teste realizado com pacote contendo o cdigo de funo igual a 8 e sub-
funo igual a 65.5353.
valores especcos, dentro do campo Tamanho no cabealho, fazem com que o mdulo
Modbus/TCP no responda mais a requisies posteriores. A execuo desta ao pode
ser considerada um ataque de negao de servio (DoS - Denial of Service). O mdulo de
comunicao do CLP deixa de fornecer o servio Modbus/TCP quando submetido a esta
situao, voltando a operar normalmente somente aps a sua reinicializao.
Nas Figuras 4.25 e 4.26, os resultados dos testes que ocasionam o DoS no mdulo
Modbus/TCP so apresentados. Na Figura 4.25, apresentado o trfego entre o mdulo
Modbus/TCP e o IndPM, capturado utilizando o Wireshark
2
. O valor que ocasiona o
problema, em destaque na gura, no apresentado por questes de segurana. Na Figura
4.26, mostra-se o momento em que ocorre a perda de comunicao do CLP, quando no
responde mais a requisies de ping atravs do mdulo Modbus/TCP.
Figura 4.25: Trfego entre o mdulo do CLP e o IndPM capturado com Wireshark. O
valor em destaque no mostrado por motivos de segurana.
2
Wireshark: Go deep. http://www.wireshark.org/
30 CAPTULO 4. TESTES REALIZADOS
Figura 4.26: Monitoramento do mdulo Modbus/TCP utilizando ping. Observar que o
mdulo deixa de responder ao comando no quadrado em destaque na gura.
No prximo Captulo, so apresentadas as concluses deste trabalho e so feitas algu-
mas propostas de trabalhos futuros.
Captulo 5
Concluses
Os protocolos de comunicao baseados em TCP/IP utilizados nas redes de auto-
mao, em geral, so simples e desenvolvidos com pouca preocupao em relao aos
aspectos de segurana. A anlise dos protocolos utilizados pelos dispositivos pode mos-
trar falhas existentes, como foi apresentado. Esta anlise pode auxiliar na denio dos
mecanismos de segurana que se deve utilizar para cada dispositivo.
O IndPM uma ferramenta que possibilita a anlise de protocolos baseados em
TCP/IP, utilizados pelos dispositivos em redes industriais. Essa ferramenta realiza tes-
tes de segurana e de conformidade de protocolos, de forma intrusiva na rede, atravs da
manipulao e envio de pacotes.
Com a manipulao de pacotes utilizando o IndPM, foram obtidos resultados referen-
tes discordncia entre a especicao do protocolo e o que foi efetivamente implemen-
tado pelos dispositivos. Essas respostas emdiscordncia coma especicao do protocolo
podem provocar uma ao errada no controle dos outros dispositivos da rede.
O IndPM permitiu tambm encontrar uma condio de negao de servio. Este tipo
de ataque necessita de ateno em dispositivos industriais, visto que so dispositivos im-
portantes na comunicao dos sistemas de controle. Para o CLP testado faz-se necessrio
a utilizao de ferramentas de segurana para detectar e impedir o recebimento indevido
de pacotes que possam ocasionar a negao de servio.
O trabalho desenvolvido mostra que a ferramenta IndPM pode ser utilizada num pro-
cesso de certicao de segurana e de conformidades de protocolos industriais baseados
em TCP/IP.
A validao do mdulo de manipulao para pacotes DNP3 sobre TCP uma pro-
posta para trabalho futuro, alm de testes em diferentes dispositivos tanto para o mdulo
DNP3 sobre TCP quanto o mdulo Modbus/TCP. A implementao de outros protocolos
baseados em TCP/IP, como o IEC 60870-5-104, tambm proposta de continuidade deste
trabalho.
32 CAPTULO 5. CONCLUSES
Referncias Bibliogrcas
Bailey, David & Edwin Wright (2003), Pratical SCADA for Industry, 1
a
edio, Newnes.
Byres, Eric J., Dan Hoffman & Nate Kube (2006), On Shaky Ground - A Study of Se-
curity Vulnerabilities in Control Protocols, 5th American Nuclear Society Inter-
national Topical Meeting on Nuclear Plant Instrumentation, Controls, and Human
Machine Interface Technology. .
Clarke, Gordon, Deon Reynders & Edwin Wright (2004), Pratical Modern SCADA Pro-
tocols: DNP3, 60870.5 and Related Systems, 1
a
edio, Newnes.
Grzelak, Daniel (2008), SCADA Penetration Testing - Hacking Modbus Enabled Devi-
ces, RUXCON .
Kobayashi, Tiago Hiroshi, Aguinaldo Batista Bezerra Junior, Agostinho Medeiros Brito
Junior & Paulo Srgio Motta Pires (2007), Using a Packet Manipulation Tool for
Security Analysis of Industrial Network Protocols, IEEE Conference on Emerging
Technologies and Factory Automation, 2007. ETFA. pp. 744747.
Lobashov, Maxim & Thilo Sauter (2006), Vertical Communication from the Enterprise
Level to the Factory Floor - Integrating Fieldbus and IP-based Networks, IEEE
Conference on Emerging Technologies and Factory Automation, 2006. ETFA 06.
pp. 12141221.
Mander, Todd, Farhad Nabhami, Lin Wang & Richard Cheung (2007), Data Object Ba-
sed Security for DNP3 Over TCP/IP for Increased Utility Commercial Aspects Se-
curity, IEEE Power Engineering Society General Meeting 2007. pp. 18.
Modbus-IDA (2006a), Modbus Application Protocol Specication V1.1b.
URL: http://www.Modbus-IDA.org, acessado em julho de 2009
Modbus-IDA (2006b), MODBUS Messaging on TCP/IP Implementation Guide V1.0b.
URL: http://www.Modbus-IDA.org, acessado em julho de 2009
Pires, Paulo Srgio Motta & Luiz Affonso H Guedes Oliveira (2006), Security Aspects
of SCADA and Corporate Network Interconnection: An Overview, International
Conference on Dependability of Computer Systems, 2006. DepCos-RELCOMEX
06. pp. 127134.
33
34 REFERNCIAS BIBLIOGRFICAS
Sauter, Thilo (2005), Integration Aspects in Automation - a Technology Survey, 10th
IEEE Conference on Emerging Technologies and Factory Automation, 2005. ETFA
2005. 2, 255263.
Shifet, Nancy Gill (2004), A Control System Specic Threat and Vulnerability Taxo-
nomy, ISA Automation West. AUTOWEST 2004. .
Stevens, W. Richard (2001), TCP/IP Illustrated, Volume 1: The Protocols, 1
a
edio,
Addison-Wesley.
Tanenbaum, Andrew S. (2003), Redes de Computadores, 4
a
edio, Editora Campus.
Apndice A
DNP3 sobre TCP
A.1 DNP3
O protocolo DNP3 utilizado com o mesmo objetivo do Modbus: fazer a comunica-
o entre os dispositivos de redes industriais. Cita-se na literatura, um uso maior desse
protocolo em companhias eltricas [Clarke et al. 2004]. O DNP3 um protocolo pro-
prietrio e foi desenvolvido para operar somente em canais de comunicao serial mas,
atualmente, tambm pode ser utilizado sobre Ethernet. Para utilizar o DNP3 num canal
de comunicao Ethernet, no necessrio fazer qualquer modicao do pacote que
utilizado em meios de comunicao serial. O pacote, com todas as suas camadas, encap-
sulado dentro de um segmento TCP. Devido a este encapsulamento, comum se utilizar
a denominao de DNP3 sobre TCP (DNP3 over TCP).
Um pacote DNP3 composto de 3 camadas: enlace, transporte e aplicao (Data
Link Layer, Transport Functions e Application Layer). Os pacotes do DNP3 over TCP
contm o mesmo contedo de um pacote DNP3 serial, sendo o pacote encapsulado em
um segmento TCP. Na Figura A.1, mostra-se como este encapsulamento realizado.
A camada de enlace do protocolo DNP3 responsvel pela ligao com a camada
fsica, pelo controle e endereamento dos pacotes e pela ligao com a camada superior de
transporte. O quadro do DNP3 (pacote da camada de enlace) formado por dois campos:
um cabealho e os dados. O cabealho possui campos para indicar as responsabilidades
do quadro. Um campo informa o incio do quadro, outro campo indica o tamanho do
quadro, um campo para informar algumas opes de controle, outros dois campos para
indicar os endereos de origem e destino do quadro e por m um campo para checar a
integridade do frame, atravs do CRC. O CRC tambm calculado para cada 16 bytes do
campo de dados de um pacote DNP3 [Clarke et al. 2004].
A camada de transporte do protocolo DNP3 considerada como uma pseudo-camada
de transporte e possui a funo de interligar as camadas de enlace e de aplicao do
protocolo, bem como prover alguns servios de controle de conexo. As mensagens da
pseudo-camada de transporte contm apenas um cabealho e os dados transmitidos. O
cabealho simples, contendo apenas um byte, que tem um bit para representar se existe
fragmentao, um bit para representar se o primeiro fragmento e os outros 6 bits para
representar o nmero de sequncia da mensagem [Clarke et al. 2004].
A camada de aplicao do protocolo DNP3 foi desenvolvida com o intuito de satisfa-
zer necessidades dos sistemas de automao distribudos e sistemas SCADA. A camada
36 APNDICE A. DNP3 SOBRE TCP
Figura A.1: Encapsulamento do DNP3 sobre TCP.
de aplicao responsvel pela comunicao com a camada do usurio, abstraindo todas
as outras camadas inferiores camada de aplicao. Portanto, o usurio necessita ape-
nas do conhecimento da camada de aplicao para o desenvolvimento dos sistemas de
controle que se utilizam deste protocolo. A camada dos usurios faz uso da camada de
aplicao para enviar e receber mensagens entre os dispositivos que utilizam DNP3.
Os pacotes da camada de aplicao so constitudos por trs campos: cabealho do
pacote, cabealho dos dados e dados. O cabealho contm o propsito de mensagem e as
informaes de controle da camada de aplicao (APCI - Application Control Protocol
Information). O cabealho de dados identica os dados enviados pelo dispositivo no
campo de dados. E por m, o campo de dados contm a mensagem enviada para os
dispositivos que utiliza o DNP3 [Clarke et al. 2004].
A.2 Mdulo DNP3 sobre TCP do IndPM
O mdulo que implementa o protocolo DNP3 sobre TCP, assim como o Mdulo Mod-
bus/TCP do IndPM, fornece interatividade para o usurio, possibilitando a modicao
do contedo dos campos existentes num pacote DNP3. Como mostrado na Seo A.1, o
DNP3 sobre TCP implementa trs camadas, as quais foram implementadas em diferentes
classes neste mdulo.
Diferente do Modbus/TCP, os pacotes do protocolo DNP3 no sofrem variao do
contedo, apenas dos valores dos campos existentes nas trs camadas do protocolo. Estas
camadas esto representadas por classes que herdam da classe Packet do Scapy. Assim
A.2. MDULO DNP3 SOBRE TCP DO INDPM 37
como no mdulo do Modbus/TCP, desenvolvemos algumas classes que herdam os atribu-
tos da classe StrField, denindo alguns campos necessrios para o DNP3.
A interface do IndPM referente ao DNP3 sobre TCP pode ser observada na Figura
A.2. Esta interface contmos campos existentes numpacote DNP3 sobre TCP. Os campos
so representados por botes do tipo SpinButton possuindo somente os valores especi-
cados pelo protocolo DNP3. Os botes esto agrupados de acordo com as camadas do
protocolo DNP3: enlace, transporte e aplicao. Existe outro grupo de botes para indicar
a congurao TCP/IP, tendo botes para denir o IP e a porta TCP de destino.
Figura A.2: Tela da interface da manipulao de pacotes do protocolo DNP3 sobre TCP.
Esta interface j est incorporada ao IndPM faltando apenas valid-la com testes em
dispositivos que se comunicam com o protocolo DNP3 sobre TCP.
38 APNDICE A. DNP3 SOBRE TCP
Apndice B
Publicaes
Com este trabalho, foram obtidas duas publicaes em congressos internacionais na
rea. So elas:
Using a Packet Manipulation Tool for Security Analysis of Industrial Network Pro-
tocols, publicado em Setembro de 2007, no ETFA2007 - 12th IEEE Conference on
Emerging Technology and Factory Automation, pp. 744-747, Patras - Grcia;
Analysis of Malicious Trafc in Modbus/TCP Communications, publicado em Ou-
tubro de 2008, no CRITIS08 -3rd Internacional Workshop on Critical Information
Infrastructure Security, Frascati - Itlia.

También podría gustarte