Ciberataques com IA: Como detetar, prevenir e defender-se contra ameaças inteligentes

Ler agora
Utilizamos inteligência artificial para as traduções dos sítios e, embora nos esforcemos por garantir a exatidão, estas podem nem sempre ser 100% precisas. Agradecemos a sua compreensão.

Protegendo os sistemas OT contra ataques remotos: Como MetaDefender OT Security™ protege o controlador Micrologix™ 1400 do CVE-2021-22659

por OPSWAT
Partilhar esta publicação
Participantes do programa de bolsas de estudo OPSWAT

A proteção dos sistemas de controlo industrial e dos ambientes OT contra ataques remotos é mais crítica do que nunca, especialmente com vulnerabilidades como a CVE-2017-14469 e agora a CVE-2021-22659 que visam o controlador Micrologix 1400 da Rockwell Automation, amplamente utilizado. Os estudantes do Programa de Bolsas de Estudo OPSWAT testaram esta vulnerabilidade num ambiente controlado, realçando a necessidade de segurança. 

Neste blogue, exploramos a forma como os alunos demonstraram como os atacantes podem explorar a vulnerabilidade para causar falhas nos sistemas e como a falta de validação de entrada adequada pode ser aproveitada para interromper as operações do PLC. 

O que é um PLC? Explicação sobre o Micrologix 1400 da Rockwell Automation

Um PLC (Programmable Logic Controller - Controlador Lógico Programável) é um computador industrial concebido para automatizar processos através do controlo de máquinas e outras operações industriais. Funciona em ambientes difíceis e está programado para executar tarefas específicas com base na entrada de sensores. O controlador MicroLogix 1400 da Rockwell Automation é um PLC compacto e modular, normalmente utilizado em aplicações de pequena e média dimensão. Conhecido pela sua rentabilidade e flexibilidade, suporta vários protocolos de comunicação e oferece opções de E/S digitais e analógicas para interface com dispositivos.

Imagem de um dispositivo OPSWAT utilizado para a monitorização de sistemas de controlo industrial

A programação é normalmente feita utilizando o software da Rockwell Automation através da lógica ladder, permitindo aos utilizadores criar sequências de controlo. O MicroLogix 1400 é versátil, adequado para tarefas como o controlo de máquinas e a automatização de processos. A sua modularidade permite aos utilizadores expandir e personalizar o sistema com base em requisitos de aplicação específicos.

Introdução ao CVE-2021-22659

Em janeiro de 2021, a Rockwell Automation recebeu um relatório de Parul Sindhwad e Dr. Faruk Kazi do COE-CNDS no Veermata Jijabai Technological Institute (VJTI), Índia, sobre uma vulnerabilidade no controlador MicroLogix™ 1400. Identificaram uma falha de segurança na versão 21.6 e anteriores que permite a um atacante remoto não autenticado enviar um pacote Modbus especialmente criado, permitindo ao atacante recuperar ou modificar valores aleatórios no registo. Se explorado com sucesso, isso pode levar a um estouro de buffer, resultando em uma condição de negação de serviço. O LED de FALHA piscará a VERMELHO e as comunicações podem perder-se. A recuperação da condição de negação de serviço requer que a falha seja eliminada pelo utilizador. 

A NVD avaliou esta vulnerabilidade de segurança como sendo de gravidade elevada

Métricas CVSS 3.x com uma pontuação de gravidade elevada de 8,6 do NIST NVD

Fases de ataque

Diagrama que ilustra as fases de um ciberataque a um PLC MicroLogix

Um atacante remoto, não autenticado, com acesso à rede do vulnerável PLC MicroLogix 1400 pode enviar um pacote especialmente criado para modificar os valores no registo. Isto poderia potencialmente causar uma condição de negação de serviço para o dispositivo, resultando em corrupção do sistema e tempo de inatividade. Um incidente deste tipo pode perturbar significativamente as operações de fabrico e outras actividades comerciais da organização.

Protocolo Modbus

Desenvolvido pela Modicon em 1979, o protocolo Modbus é uma estrutura de mensagens concebida para estabelecer a comunicação cliente-servidor entre dispositivos inteligentes. Originalmente concebido para ser utilizado com os PLCs da Modicon, tornou-se desde então um protocolo de comunicação padrão para a comunicação entre dispositivos electrónicos industriais. 

Existem protocolos Modbus para Ethernet (Modbus TCP) e linhas de série (Modbus RTU e Modbus ASCII). O Modbus RTU (Remote Terminal Unit) transmite diretamente dados em formato binário através de comunicação série, e o Modbus TCP (Transmission Control Protocol) incorpora os dados do protocolo Modbus em pacotes TCP para transmissão através de redes TCP/IP. 

Gráfico de comparação da pilha Modbus e das camadas OSI para protocolos de comunicação

Estrutura da mensagem Modbus

O Modbus é um protocolo de pedido-resposta em que o cliente transmite um pedido a um dispositivo Modbus e o dispositivo fornece subsequentemente uma resposta.

Diagrama que mostra a comunicação da transação Modbus entre o cliente e o servidor

Uma mensagem Modbus enviada de um primário para um secundário contém o endereço do secundário, o "comando" (por exemplo, "ler registo" ou "escrever registo"), os dados e uma soma de verificação (LRC ou CRC).

Estrutura da mensagem Modbus RTU com cabeçalhos e códigos de função

Os endereços de dados são utilizados nas mensagens de consulta Modbus quando se lêem ou modificam dados. O Modbus define quatro tipos de dados: Bobina, Estado de entrada, Registo de entrada e Registo de retenção. Dois deles armazenam valores on-off (1-bit) chamados Bobinas e Entradas Discretas, e dois armazenam valores numéricos como palavras de 16-bit chamadas Registos. Cada um deles é só de leitura ou de leitura/escrita.

Tipo de dadosAcessoDescrição
BobinaLeitura-escritaSaídas de bit único.
Entrada discretaSó de leituraEntradas de bit único.
Registo de entradaSó de leituraRegistos de entrada de 16 bits.
Registo de retençãoLeitura-escritaRegistos de saída de 16 bits.

Existem três categorias de códigos de função Modbus:

  • Códigos de função pública - De 1 a 127, exceto para os códigos definidos pelo utilizador. 
  • Códigos de função definidos pelo utilizador - em duas gamas, de 65 a 72 e de 100 a 110. 
  • Códigos de função reservados - Utilizados por algumas empresas para produtos antigos e não disponíveis para utilização pública.
Tipo de funçãoNome da funçãoCódigo de função
Acesso aos dadosAcesso aos bitsEntradas físicas discretasLer entradas discretas2
Bits internos ou bobinas físicas

Ler bobinas

Escrever uma única bobina

Escrever várias bobinas

1

5

15

Acesso de 16 bitsRegistos de entrada físicaLer registos de entrada4
Registos internos ou registos de saída física

Ler vários registos de retenção

Escrever um único registo de retenção

Escrever vários registos de retenção

Ler/escrever vários registos

Registo de escrita de máscaras

Fila de espera de leitura FIFO

3

6

16

23

22

24

Acesso ao registo de ficheiros

Ler registo de ficheiro

Escrever registo de ficheiro

20

21

Diagnóstico

Ler o estado da exceção

Diagnóstico

Obter contador de eventos Com 

Obter registo de eventos Com 

Comunicar ID do escravo 

Ler a identificação do dispositivo 

7

8

11

12

17

43

OutrosInterface de transporte encapsulada43
Tipo de função: Acesso aos dados
Sub-tipo: Acesso a bits
Categoria: Entradas Discretas Físicas
Nome da função: Ler Entradas Discretas
Código da função: 2
Tipo de função: Acesso aos dados
Sub-tipo: Acesso a bits
Categoria: Bits internos ou bobinas físicas
Nome da função: Ler bobinas
Código da função: 1
Tipo de função: Acesso aos dados
Sub-tipo: Acesso a bits
Categoria: Bits internos ou bobinas físicas
Nome da função: Escrever bobina simples
Código da função: 5
Tipo de função: Acesso aos dados
Sub-tipo: Acesso a bits
Categoria: Bits internos ou bobinas físicas
Nome da função: Escrever bobinas múltiplas
Código da função: 15
Tipo de função: Acesso aos dados
Sub-tipo: Acesso de 16 bits
Categoria: Registos de entrada física
Nome da função: Ler registos de entrada
Código da função: 4
Tipo de função: Acesso aos dados
Sub-tipo: Acesso de 16 bits
Categoria: Registos Internos ou Registos de Saída Física
Nome da função: Ler Registos de Retenção Múltiplos
Código da função: 3
Tipo de função: Acesso aos dados
Sub-tipo: Acesso de 16 bits
Categoria: Registos Internos ou Registos de Saída Física
Nome da função: Write Single Holding Register
Código da função: 6
Tipo de função: Acesso aos dados
Sub-tipo: Acesso de 16 bits
Categoria: Registos Internos ou Registos de Saída Física
Nome da função: Escrever Registos de Retenção Múltiplos
Código da função: 16
Tipo de função: Acesso aos dados
Sub-tipo: Acesso de 16 bits
Categoria: Registos Internos ou Registos de Saída Física
Nome da função: Ler/Escrever Registos Múltiplos
Código da função: 23
Tipo de função: Acesso aos dados
Sub-tipo: Acesso de 16 bits
Categoria: Registos Internos ou Registos de Saída Física
Nome da função: Mask Write Register
Código da função: 22
Tipo de função: Acesso aos dados
Sub-tipo: Acesso de 16 bits
Categoria: Registos Internos ou Registos de Saída Física
Nome da função: Ler fila FIFO
Código da função: 24
Tipo de função: Acesso aos dados
Sub-tipo: Acesso ao Registo de Ficheiros
Nome da função: Ler registo de ficheiro
Código da função: 20
Tipo de função: Acesso aos dados
Sub-tipo: Acesso ao registo de ficheiro
Nome da função: Escrever registo de ficheiro
Código da função: 21
Tipo de função: Diagnóstico
Nome da função: Ler estado de exceção
Código da função: 7
Tipo de função: Diagnóstico
Nome da função: Diagnóstico
Código da função: 8
Tipo de função: Diagnóstico
Nome da função: Obter contador de eventos Com
Código da função: 11
Tipo de função: Diagnóstico
Nome da função: Obter registo de eventos Com
Código da função: 12
Tipo de função: Diagnóstico
Nome da função: Report Slave ID
Código da função: 17
Tipo de função: Diagnóstico
Nome da função: Ler a identificação do dispositivo
Código da função: 43
Tipo de função: Outra
Nome da função: Encapsulated Interface Transport
Código da função: 43

Exploração

Análise de vulnerabilidade

Através da análise, os nossos bolseiros de pós-graduação OPSWAT descobriram que, durante a comunicação Modbus TCP, o protocolo não possui autenticação e encriptação para os pacotes transmitidos. Além disso, a validação de entrada no PLC MicroLogix 1400 não é implementada corretamente. Consequentemente, um atacante remoto pode analisar o pacote Modbus TCP através de packet sniffing e enviar qualquer pedido ao PLC sem autenticação através do protocolo Modbus TCP. Devido à falta de validação de entrada do dispositivo PLC MicroLogix 1400, um atacante remoto autenticado pode enviar um grande número de pacotes com valores aleatórios, causando potencialmente a falha do PLC.

Sobreposição de registos

Inicialmente, tentámos capturar os pacotes Modbus TCP utilizados para ler ou escrever registos no PLC. Para tal, examinámos os pacotes gerados por uma aplicação denominada Modbus Poll, que facilita a leitura e a escrita de registos no PLC MicroLogix 1400.

Captura de ecrã que mostra a interface da ferramenta Modbus Poll para escrever registos individuais

Utilizando o Wireshark para capturar todos os pacotes da interface de rede, foi possível identificar o pacote Modbus TCP para escrever um único registo:

Captura de pacotes que mostra uma transação Modbus com código de função para escrever um único registo
Repartição detalhada da carga útil do Modbus TCP, incluindo identificadores de transação e de protocolo

Com base na estrutura dos pacotes detectados, desenvolvemos um script Python simples para enviar pacotes TCP solicitando a escrita de um registo no PLC alvo. Neste cenário, o endereço IP do PLC é 192.168.93.89.

Exemplo de código Python para iniciar uma ligação Modbus TCP e enviar uma carga útil

O registo do PLC foi alterado depois de receber o nosso pacote malicioso não autenticado. 

Captura de pacotes mostrando o protocolo Modbus/TCP com um código de função de escrita de registos múltiplos
Captura de ecrã de um diagrama lógico ladder com um bloco de funções ADD para adicionar valores de origem

No Micro Logix 1400, a maioria das instruções matemáticas utiliza três parâmetros: Fonte A, Fonte B e Destino

Os valores da Fonte A e da Fonte B podem vir de dois registos de 16 bits denominados N13:3 e N13:4. Além disso, os valores nestes registos de 16 bits, tais como N13:3 e N13:4, estão limitados ao intervalo de -32,768 a +32,767. Se os valores de N13:3 e N13:4 forem grandes, o resultado da instrução de correspondência pode exceder o intervalo máximo do tipo de dados, causando potencialmente uma falha no PLC. Consequentemente, para induzir uma falha no PLC, é necessário escrever grandes valores aleatórios em todos os registos, incluindo N13:3 e N13:4. Para o conseguir, modificámos o nosso script Python da seguinte forma: 

Script Python que mostra a criação de um payload Modbus TCP para escrever vários registos

Simular o ataque

Para simular um ataque real, os nossos bolseiros de pós-graduação OPSWAT tentaram induzir uma avaria no PLC MicroLogix 1400 localizado nos laboratórios CIP OPSWAT , partindo do princípio de que tanto o atacante como o PLC estão na mesma rede e são capazes de comunicar entre si. 

No estado operacional normal do PLC MicroLogix 1400 da OPSWAT Labs, com o PLC no modo REMOTE RUN, todos os valores dos registos são válidos e estão dentro do intervalo designado para os seus tipos de dados, indicando que o programa do utilizador está a funcionar corretamente. 

Captura de ecrã do ficheiro de dados RSLogix 500 que mostra os valores de dados N13 em formato decimal

Após a execução do nosso script Python, vários pacotes Modbus TCP serão enviados para o PLC, solicitando a escrita de grandes valores aleatórios em todos os registos sem autenticação:

Captura de pacotes mostrando pedidos repetidos de escrita de múltiplos registos Modbus TCP

Depois de receber estes pedidos de pacotes maliciosos, os valores de todos os registos, incluindo N13:3 e N13:4, são definidos para 16.990. O resultado da operação ADD nos registos N13:3 e N13:4 excede o intervalo válido de um registo de 16 bits. Este problema provoca um excesso de número inteiro, conduzindo a uma falha e interrompendo o funcionamento do PLC, como indicado pelo estado FAULTED.

RSLogix 500 mostrando uma condição de falha e valores de dados para endereços N13

Os nossos bolseiros graduados OPSWAT conseguiram fazer cair o PLC MicroLogix 1400 explorando o CVE-2021-22659.

Remediação

Captura de ecrã de um painel de vulnerabilidades de um PLC que mostra detalhes de CVE e vulnerabilidades críticas para o MicroLogix da Rockwell Automation

Face a vulnerabilidades como a CVE-2021-22659, a correção abrangente é crucial para proteger os sistemas OT e ciber-físicos. De seguida, apresentam-se algumas das principais estratégias que podem ser utilizadas para evitar a propagação de ataques:

  1. Deteção de CVEs conhecidos: Verificar regularmente as redes em busca de vulnerabilidades como a CVE-2021-22659.
  2. Monitoramento de comportamentos anômalos: Identificação de aumentos incomuns na frequência de comunicação com o PLC Micrologix 1400, o que pode sugerir um ataque em andamento de transferência de dados não autorizada.
  3. Identificação de novas ligações de dispositivos: O sistema deve detetar quando um novo dispositivo se liga ao PLC. 
  4. Segmentação da rede: O isolamento dos dispositivos afectados pode ajudar a evitar a propagação lateral dos ataques, minimizando assim o impacto.

MetaDefender OT Security da OPSWATatende a essas necessidades detectando CVEs, monitorando continuamente a rede em busca de comportamentos incomuns e identificando conexões não autorizadas. Utilizando IA, aprende padrões de tráfego normais, estabelece um comportamento de base e implementa políticas para alertar anomalias. Isto permite respostas instantâneas e informadas a potenciais ameaças. 

No caso de um ataque que explora o CVE-2021-22659, MetaDefender OT Security integra-se com o MetaDefender Industrial Firewall para bloquear comunicações suspeitas com base em regras definidas. O firewall usa IA para aprender padrões de tráfego regulares e aplicar políticas para evitar conexões não autorizadas. 

Ao combinar estas capacidades de deteção, alerta e segmentação de rede, MetaDefender OT Security torna-se o mecanismo de defesa ideal para ambientes industriais, reduzindo significativamente o risco e o impacto das ameaças cibernéticas em ambientes de tecnologia operacional.

Explore como a plataforma de segurança cibernética de defesa em profundidade da OPSWATpode melhorar e amadurecer a sua postura. Fale com um especialista hoje para uma demonstração gratuita.

Mantenha-se atualizado com OPSWAT!

Inscreva-se hoje para receber as últimas actualizações da empresa, histórias, informações sobre eventos e muito mais.