retornar retornar
Descodificação de ameaças cibernéticas  para 2023

POR:
Habib Gramondi
(Cybersecurity Researcher)

COMPARTILHAR

Twitter Facebook Linkedin
REFERÊNCIAS

⦁ Stevan A. Milinkovi, Member, IEEE and Ljubomir R.
Lazi, Member, WSEAS “Industrial PLC security issues”,
Serbia, Belgrade, November 20-22, 2012.

⦁ G. P. H. Sandaruwan, P. S. Ranaweera, Vladimir A.
Oleshchuk “PLC Security and Critical Infrastructure
Protection”, Dept. of Information and Communication
Technology, University of Agder (UiA),
N-4898 Grimstad, Norway

⦁ Abraham Serhane, · Mohamad Raad · Raad Raad
· Willy Susilo “Programmable logic controllers
based systems (PLC‑BS): vulnerabilities and threats”,
International University of Beirut,
146404 Mazraa, Beirut, Lebanon. University
of Wollongong, Northfields Ave,
Wollongong, NSW 2522, Australia.

Compreendendo as redes industriais antes de atacá-las

Introdução:

No final dos anos 60, os Controladores Lógicos Programáveis (PLCs) foram projetados para eliminar o alto custo dos sistemas de controle baseados em relés. Entendemos relé como um pequeno componente elétrico/eletrônico com um comportamento semelhante ao do interruptor que qualquer um de nós tem em casa para acender a luz, mas que é acionado por um sinal externo sem a necessidade de uma pessoa ativá-lo. O grupo Schneider Electric pode ser considerado o protagonista da chamada terceira revolução industrial, juntamente com seu Modicon, reconhecido como o primeiro controlador lógico programável. Sua história começou quando um pequeno grupo de jovens engenheiros que haviam criado uma pequena engenharia chamada Bedford Associates, dirigida por Dick Morley, decidiu se apresentar a um convite lançado pela empresa automobilística General Motors, com o objetivo de buscar processos de produção mais eficientes.

Dick Morley e sua equipe tiveram uma grande ideia: substituir os relés mencionados anteriormente por placas eletrônicas, o que permitiria programar novas funções sem a necessidade de recabear ou alterar o hardware. Obviamente, foi o projeto vencedor e assim nasceu há mais de cinquenta anos o Modicon (MOdular DIgital CONtroler), que eles denominaram 084 porque era precisamente o projeto da Bedford Associates nº 84. Esta empresa vendeu o Modicon em 1977 para a Gould Electronics e posteriormente foi adquirida pela alemã AEG em 1989.

imagen ilustrativa

O Modicon 084, o primeiro PLC do mundo lançado em 1969. Imagem usada e modificada cortesia de Allen-Bradley, Rockwell.


Na década de 80, os Sistemas de Controle Distribuído (DCS) se tornaram populares em ambientes de plantas industriais cada vez mais automatizadas, com teclados e estações de trabalho substituindo os grandes armários de controle individuais. Linhas de produção inteiras e processos poderiam estar conectados por redes de cabo/bus industrial para fornecer monitoramento e controle a partir da mesa de um supervisor.
Os sistemas disponíveis na época eram, em todos os sentidos, proprietários, ou seja, diferentes marcas tentavam capturar uma parcela de mercado ao permanecerem incompatíveis com sistemas concorrentes. No início dos anos 80, surgiu uma estratégia para descentralizar esses sistemas e surgiram padrões de comunicação entre dispositivos como Fieldbus, entre outros. Assim, começou a desconstrução das estratégias de controle central com uma visão de aumentar a inteligência em cada dispositivo de campo e utilizar tecnologia não proprietária.

Presente:

Atualmente, quase todos os controladores de PLC, DCS, Unidades Terminais Remotas (RTU) ou Sistemas Integrados de Segurança (SIS) no mercado possuem um sistema operacional comercial, como podemos ver na tabela a seguir:

imagen ilustrativa

As vulnerabilidades do Windows são abundantes e relatadas em várias fontes na Internet. O mesmo acontece com o Linux e o QNX. Em relação ao Microware OS-9 e ao VxWorks, esses sistemas operacionais não são tão famosos quanto os anteriores e, consequentemente, seus erros e vulnerabilidades são menos conhecidos. No entanto, as vulnerabilidades ainda existem e falaremos delas mais adiante.

Por outro lado, a automação industrial é um dos termos mais populares discutidos na última década, as conexões entre dispositivos não se limitam mais a uma mesma região geográfica. Voltando ao exemplo anterior, agora o supervisor pode monitorar a planta a quilômetros de distância do seu escritório, graças à internet. Esse avanço de arquitetura é conhecido como a quarta revolução industrial ou indústria 4.0, no entanto, com ela foram abertas as portas para novas brechas de segurança que veremos ao longo deste post.

A automação é um aspecto importante quando se trata de industrialização. O objetivo é minimizar a participação humana tanto física como mentalmente. A maioria da infraestrutura crítica no mundo foi automatizada por meio de dispositivos e sistemas eletrônicos. Os exemplos mais comuns são elevadores, escadas rolantes e trens.

A infraestrutura industrial depende em grande parte dos sistemas de controle industrial (ICSs) automatizados que alcançaram os mais altos padrões em termos de eficiência e desempenho. Os ICSs consistem em sistemas de Controle e Aquisição de Dados de Supervisão (SCADA), Sistemas de Controle Distribuído (DCSs) e PLCs. As principais funções desses ICSs são detectar (coletar dados), monitorar, gerenciar e executar ações (tomada de decisões com base nos dados coletados).

No diagrama a seguir, podemos observar o modelo Purdue, que foi adotado da Arquitetura de Referência Empresarial de Purdue da ISA-95 e usado como modelo conceitual para a arquitetura ICS. Isso pode ser resumido da seguinte forma:

  • Empreendimento:
  • Nível 5: rede corporativa
  • Nível 4: Negócios e logística do local
  • Zona industrial desmilitarizada.
  • Zona de fabricação (também chamada de zona industrial):
  • Nível 3: Operações do site
  • Nível 2:Área controle de supervisão
  • Nível 1: controle básico
  • Nível 0: O processo

imagen ilustrativa

Arquitectura de referencia basada en ISA-95

Muitos acreditam que os PLCs são dispositivos seguros devido ao seu isolamento das redes externas do sistema. No entanto, ataques como o Stuxnet (um perigoso worm de computador criado para atacar infraestruturas físicas, onde seu primeiro objetivo foi comprometer a infraestrutura das centrífugas nas instalações de enriquecimento de urânio no Irã) demonstraram a incorreção de tais pensamentos. Os "vírus de computador" são ineficazes contra os PLCs. Mas eventos recentes sugerem que os sistemas SCADA estão em risco significativo, mesmo que estejam isolados da rede principal da planta.


Nos anos 2000, uma usina de gerenciamento de resíduos em Queensland foi atacada por um ex-funcionário, onde 800.000 litros de águas residuais não tratadas foram despejados em áreas públicas da cidade. Isso ocorreu na Austrália apenas usando um laptop e um rádio sem fio (este fato foi usado como exemplo pelo MITRE para desenvolver uma nova metodologia em relação aos ICSs).

imagen ilustrativa

Estação de Tratamento de Esgoto de Maroochydore

Em 2003, ocorreu uma falha em dois sistemas importantes de monitoramento na usina nuclear de Ohio Davis-Besse devido a um ataque que invadiu os computadores. Esse tipo de mau funcionamento também pode resultar em perda de vidas civis. Os incidentes ocorridos em 1999 e 1992 em Bellingham e Brenham, Texas, respectivamente, causaram três mortes e grandes danos à infraestrutura devido a falhas no sistema de distribuição de gás. Houve dois trens metropolitanos que colidiram em 2009, resultando em mortes e lesões aos passageiros. Embora esses incidentes tenham ocorrido, não havia entusiasmo na comunidade científica para explorar as preocupações de segurança em sistemas automatizados relacionados a PLCs até recentemente.

Como mencionado anteriormente, após o malware Stuxnet em 2010, houve um interesse especial entre produtores e usuários de PLCs para determinar as vulnerabilidades de segurança associadas em sistemas baseados em PLC, uma vez que esse malware alcançou um novo nível muito sofisticado de ataque. Foi o primeiro a incluir um rootkit, poderia espionar maliciosamente, comprometer ou até mesmo explorar outras máquinas para iniciar ataques em outros sistemas. Demonstrou um ataque real e sofisticado de cibersegurança que afetou vários sistemas de forma catastrófica, como interfaces de operador, telas de exibição, código-fonte dentro dos PLCs, aproveitando as vulnerabilidades de Zero Days do Windows. Em outras palavras, Stuxnet abriu caminho para redes de PLC seguras. Produtores de PLCs como Hitachi, Mitsubishi, Panasonic, Samsung e Siemens têm trabalhado com produtores de antivírus como Kaspersky e Symantec para determinar soluções para essas vulnerabilidades e ineficiências em sistemas PLC.

Embora os PLCs sejam dispositivos confiáveis, garantindo seu funcionamento correto por longos períodos de tempo e em condições extremas, um malware altamente personalizado direcionado a sistemas SCADA da Siemens, como o Stuxnet, é apenas uma ameaça típica que esses dispositivos podem enfrentar, especialmente se houver ataques de ciberguerra. Stuxnet, embora seja um dos mais reconhecidos, muitos outros ataques foram realizados por outras ameaças, como os malwares Flame, Guass, Duqu, Wiper e BlackEnergy. Mais de 50 novos ataques foram descobertos que ameaçam os sistemas SCADA. Desde o surgimento do Stuxnet, os PLCs atraíram a atenção da comunidade de hackers.

imagen ilustrativa

Divulgação de vulnerabilidades do SCADA por ano Vulnerabilidades do SCADA e de outros componentes

Dispositivos dentro de uma rede industrial:

Nesta seção do post, veremos algumas definições básicas de dispositivos e termos que usaremos para discutir vulnerabilidades nesses sistemas.

imagen ilustrativa

Arquitetura de referência baseada em ISA-99

PLCs

Os PLCs (Controladores Lógicos Programáveis) fornecem um dos principais controles dos sistemas SCADA. Como são dispositivos em tempo real, os PLCs são responsáveis por automatizar a produção ou um processo através do monitoramento e controle da interação em tempo real com os dispositivos de campo por meio de redes industriais. Os PLCs podem lidar com milhares de entradas (status ou feedback de sensores, HMIs, outros PLCs, etc.) e saídas ou comandos por segundo. Os PLCs usam certos programas, que residem dentro deles. Quanto ao software dentro deles, consiste no seguinte:

Firmware

Os PLCs contêm um sistema operacional (SO) em tempo real integrado, chamado firmware, como vimos anteriormente (OS-9 ou VxWorks). Geralmente, é armazenado na memória interna do PLC ou em EEPROM (memória somente de leitura programável e apagável eletricamente). Se um invasor comprometer o SO, todo o dispositivo controlado pelos PLCs pode ser completamente tomado, abrindo a porta para várias ameaças e ataques maliciosos. Devido à sua natureza e ambiente, os PLCs, em geral, carecem de recursos de segurança, como criptografia ou detecção de intrusões por meio dos tempos de resposta esperados em condições normais de operação.

Linguagem PLC:

Este é um conjunto de métodos de linguagem de programação, código, que o programador escreve para comunicar informações ao PLC. O código dos programas PLC pode ser escrito usando cinco linguagens padronizadas pela norma internacional IEC 61131, que é uma norma internacional aberta. RSLogix 5000, por exemplo, é um software usado para escrever, editar e compilar códigos de lógica em escada. O software atende às normas IEC 61131. As linguagens são as seguintes:

Diagrama de Escada (LD): É uma representação de instruções, símbolos, dispostos em degraus que imitam esquemas de cabeamento.

imagen ilustrativa

Diagrama de Blocos de Funções (FBD): É uma representação de blocos gráficos interconectados que representam o fluxo do processo e os parâmetros.

imagen ilustrativa

Gráfico de Função Sequencial (SFC): É uma linguagem gráfica que consiste em estados ou passos (com ações associadas) e transições (com condições associadas) usadas para passar do estado atual para o próximo. Os programas LD, FBD e ST podem ser escritos na estrutura SFC.

Texto Estruturado (ST): É uma linguagem de alto nível semelhante ao "C" ou "Pascal".

Lista de Instruções (IL): É uma linguagem de baixo nível que utiliza instruções mnemônicas e se assemelha ao Assembly.

Estes são painéis de interface do usuário ou quadros que conectam os operadores aos dispositivos de campo, para monitorar ou controlar. As HMIs costumavam ser painéis simples, isolados e dedicados, consistindo em botões elétricos, luzes, interruptores, etc. As HMIs, por exemplo, permitem que os operadores coloquem o PLC em "Automático" ou "Manual", abram ou fechem válvulas, reconheçam alarmes, parem certos dispositivos, etc. Hoje em dia, as HMIs são mais sofisticadas e complexas. Eles são construídos em sistemas operacionais amplamente conhecidos como Windows e executam programas baseados em Windows. Eles podem ser equipados com telas sensíveis ao toque, ActiveX, bancos de dados e capacidades de acesso remoto; e alguns até mesmo são servidores ou baseados na web. A necessidade de monitorar, visualizar, arquivar ou mesmo acessar remotamente dados relacionados, levou as HMIs a um estado altamente avançado e diferente. Atualmente, as HMIs se desenvolveram mais em soluções baseadas em computador; por exemplo, WinCC e FactoryTalk.
As interfaces homem-máquina (HMIs) facilitam o acesso a qualquer processo ou evento industrial, evitando que os operadores tenham que revisar o código de lógica em escada. Eles podem ser usados como terminais independentes, baseados em PC ou até mesmo como aplicativos para smartphones. As HMIs suportam protocolos líderes de rede industrial como Ethernet, PROFINET, Modbus, ControlNet, etc. Eles podem ser usados para controlar grandes sistemas e a maioria dos dispositivos relacionados a PLCs. Além disso, muitas HMIs baseadas em computador são equipadas com todo o software e ferramentas de PLC necessários, como TIA e RSLogix. Essas HMIs permitem que os usuários acessem, monitorem, modifiquem ou até programem qualquer código de PLC associado; on-line ou off-line.

  • As unidades de terminal de visualização (DTUs) permitem que os operadores controlem e monitorem processos de produção, eventos ou alarmes associados. Eles exibem o estado das informações coletadas graficamente. Eles são semelhantes às HMIs, mas menos sofisticados. Eles funcionam em sistemas operacionais conhecidos como Windows CE. O Windows CE, por exemplo, vem com controles ActiveX, conectividade remota por Ethernet, VNC e FTP.
  • As unidades de terminal do historiador (HTU) são dispositivos de registro baseados em servidores ou unidades de PC. Eles são usados para registrar ou arquivar (eventos, alarmes, atividades, etc.), monitorar dispositivos e atividades relacionados a PLC. Eles são computadores típicos de TI e, portanto, sofrem as mesmas vulnerabilidades.

Periféricos e dispositivos de E/S:

Os dispositivos de entrada e saída (I/O), geralmente estão interconectados através de redes de comunicação industrial ou conexão física ponto a ponto para monitorar ou controlar atividades. Geralmente, eles consistem em:

  • Sensores: fornecem o estado de um dispositivo ou processo (como temperatura, fluxo, posição, etc.) como entradas para o PLC, convertendo informações físicas em sinais elétricos.
  • Atuadores: convertem os sinais elétricos recebidos em ações físicas. Exemplos de atuadores: válvulas, solenoides, motores de passo, relés de potência, etc.
  • Outros dispositivos que possuem operações físicas: robôs industriais (soldagem, manipuladores de materiais, robôs de visão, selagem, etc.), elevadores, etc.

Redes

A comunicação de dados entre PLCs e dispositivos de campo pode ser estabelecida através de redes de comunicação industrial. Essas redes devem ser confiáveis, em tempo real e precisas para lidar com o monitoramento e controle de dados entre vários dispositivos. As redes industriais originalmente começaram como conexões de comunicação ponto a ponto, limitadas e diretas. Um bom exemplo disso é a conexão por porta serial.

imagen ilustrativa

Uma conexão ponto a ponto ou placas terminais é utilizada para transmitir um sinal (levado do PLC a outros dispositivos ou atuadores, ou seja, uma saída) ou receber (enviado ao PLC a partir de um sensor, ou seja, uma entrada). Embora seja limitado, um link de comunicação série ponto a ponto é menos vulnerável a ameaças de segurança. No entanto, com o avanço da tecnologia e as necessidades emergentes, as redes industriais evoluíram para um nível mais complexo. LAN (Rede Local) e WAN (Rede de Área Ampla) são bons exemplos. Algumas redes industriais podem lidar com diagnósticos e acionar dispositivos relacionados interconectados, além de transportar sinais de/para PLC por meio de módulos I/O ou scanners, como o DeviceNet. Dispositivos de campo, como dispositivos ou módulos I/O, tornaram-se mais interconectados e baseados em software (firmware). Os módulos de I/O agora estão conectados local ou remotamente às redes industriais para melhor modularidade, reduzir custos, reduzir a fiação e permitir instalação e manutenção rápidas e fáceis, além de diagnósticos precisos.

imagen ilustrativa

Algumas das redes industriais atuais amplamente utilizadas são: Modbus, PROFINET, PROFIBUS, DeviceNET, ControlNet e EtherNet/IP. Em geral, as redes industriais consistem em dispositivos de E/S, módulos de scanner e cabos de rede. Um PLC se comunica com outros sensores, atuadores ou dispositivos através de uma das redes mencionadas anteriormente. DeviceNet, que é amplamente utilizado, seria um bom exemplo desses avanços. O DeviceNet é composto principalmente pelos seguintes módulos: DNET Scanner, Armor-Block/ArmorPoint e Flex I/O, como vimos nos gráficos anteriores. Cada módulo tem seu próprio firmware que pode ser vulnerável a ameaças de segurança.

imagen ilustrativa

Ameaças e vulnerabilidades

Nesta seção do post veremos conceitos básicos sobre vulnerabilidades dos dispositivos citados acima.

Vulnerabilidades do código PLC

A atenção às vulnerabilidades do código PLC não tem sido uma grande preocupação como a relacionada com a rede. Isso ocorre porque empresas, desenvolvedores e programadores assumem que os códigos que são executados dentro dos PLCs são seguros e estão protegidos, desde que não haja invasores na rede. Mas isso não é verdade. Os códigos dos PLCs podem conter suas próprias ameaças destrutivas e vulnerabilidades que podem ser exploradas por hackers ou usuários descontentes. As vulnerabilidades surgem da forma como o código é escrito ou projetado. A seguir estão alguns exemplos típicos:

  • Manuseio incompleto de falhas ou alarmes: um código malicioso pode desativar ou silenciar certos alarmes. Basicamente, o código lógico manipulado não gerencia ou escaneia todas as falhas críticas, alarmes, código lógico relacionado ou parâmetros. Por isso, os operadores não perceberão o problema, já que um código malicioso age de forma sorrateira e passa despercebido; ou seja, as ameaças são reconhecidas depois que o dano ocorre.

  • Resultados falsos: ocorre quando o código do PLC salta certos degraus ou parâmetros; por exemplo, o uso inadequado do MCR (reset de controle mestre) que normalmente costumava ignorar instruções não retentivas depois de habilitadas.

  • Código de espionagem: um usuário pode utilizar certas instruções, como a instrução "ADD ON", que pode ser explorada para registrar ou monitorar alguns dados ou parâmetros confidenciais. Essas instruções podem ser adicionadas a qualquer código lógico e passar despercebidas.

  • Overflow: ocorre quando uma instrução ou um operando com comprimento de parâmetro de entrada ou saída não corresponde ao que o PLC espera. Isso geralmente ocorre devido a programadores inexperientes ou quando um ataque malicioso manipula parâmetros.

  • Instruções duplicadas: para algumas instruções, como a mostrada no gráfico a seguir, se duplicadas em mais de um degrau, seus valores serão imprevisíveis, afetando o código lógico e o processo controlado por ele. Além disso, isso tornará mais difícil depurar o código e encontrar ou identificar o problema.

  • imagen ilustrativa

  • Tags não utilizadas: A definição de tags no banco de dados do controlador que não são utilizadas na lógica pode aumentar o nível de ameaças; especialmente se as tags não são impulsionadas por uma lógica de escada bem definida.

  • Falta de certas bobinas ou instruções: Estas podem resultar em um comportamento indesejado. Um usuário pode explorar essa situação para adicionar uma saída incorreta que pode afetar severamente o código lógico e o hardware controlado associado. Por exemplo, se as saídas, definidas como Y1, Y11 e Y2 no banco de dados do controlador - são usadas no código, mas o valor de Y2 nunca foi impulsionado pela lógica, um usuário pode explorar essa instrução definida para ataques maliciosos dentro do código lógico.
  • imagen ilustrativa

    O gráfico a seguir mostra uma maneira de corrigir esse cenário; certificando-se de que o valor de Y2 seja conduzido por uma lógica clara e bem definida

    imagen ilustrativa

  • Instruções anuladas (Bypass): Quando uma instrução é anulada por um ramo paralelo vazio, isso afeta a condição de saída da linha. Quando hackers ou desenvolvedores usam tais técnicas, elas podem passar despercebidas, o que torna difícil depurá-las e detectá-las, a menos que haja um aviso claro do compilador, que muitas vezes é ignorado. Além disso, as anulações podem ser feitas por pontes mal colocadas (JMP) ou saltando para sub-rotinas (JSR).

  • imagen ilustrativa

  • Valores codificados: Em certas situações, o uso de parâmetros codificados em instruções como comparação pode aumentar as vulnerabilidades. Os parâmetros usados na instrução de comparação podem ser manipulados por usuários, invasores ou código malicioso sem serem notados ou sobrescritos constantemente pelo valor legítimo apropriado.

  • imagen ilustrativa

    O gráfico a seguir mostra uma solução para proteger o valor "SourceB" movendo constantemente o valor em tempo real do contador.
    imagen ilustrativa

  • Execuções: Ramificações, chamadas ou instruções extraviadas podem levar a resultados inconsistentes. A lógica se comportará de maneira indesejada com base no resultado imprevisto das execuções. No gráfico a seguir, "tmr1.DN", que é um estado do temporizador "tmr1", é colocado logo antes de ramificações paralelas, criando um cenário de execução entre o temporizador ou energizando "Válvula 01". Para evitar isso, as instruções ou ramificações devem ser colocadas corretamente.

  • imagen ilustrativa

    O gráfico a seguir mostra o posicionamento adequado da instrução para evitar qualquerexecução.

    imagen ilustrativa

  • Advertências do compilador: Programadores de PLC prestam muita atenção aos erros do compilador, mas frequentemente ignoram as advertências. Advertências do compilador podem ter um grande valor que pode revelar códigos ou instruções inadequados que poderiam ser explorados por ataques maliciosos.

  • imagen ilustrativa

  • Negação de Serviço (DoS): Um PLC pode ser comprometido usando código malicioso dentro de sua própria implementação ou programação incorreta. Os seguintes são alguns cenários: loops infinitos, usando instruções JSR (Jump to Subroutines), instruções JMP, temporizadores aninhados, etc. E falhas fatais, que desencadeiam certas falhas que podem fazer com que o programa do PLC não responda corretamente.


Vulnerabilidades PLC

Como mencionamos no início do post, quando mostramos a tabela dos sistemas operacionais (SO) mais utilizados, falamos sobre o Microware OS-9 e aqui estão alguns exemplos:

Este é um sistema operacional tipo UNIX, multiusuário e multitarefa. Ele foi demonstrado que é suscetível a ataques que usam redirecionamentos ICMP. Um invasor pode falsificar pacotes de redirecionamento ICMP e possivelmente alterar as tabelas de roteamento do host e subverter a segurança causando que o tráfego flua em um caminho que o administrador da rede não pretendia.

O VxWorks (produto da Wind River Systems, adquirido pela Intel em 2009) é o sistema operacional em tempo real incorporado mais famoso. Ele foi usado para alimentar desde pontos de acesso Apple Airport Extreme e BMW iDrive até rovers em Marte e o avião C-130 Hercules. Infelizmente, ele tem duas falhas graves:

A primeira falha se refere a um serviço de depuração do VxWorks exposto (WDB Agent). Esse serviço é executado na porta UDP 17185 e permite acesso completo ao dispositivo, incluindo a capacidade de manipular a memória, roubar dados e, por fim, sequestrar todo o sistema operacional. Este serviço foi acidentalmente deixado exposto por mais de 100 vendedores diferentes e afeta pelo menos 250.000 dispositivos conectados à Internet hoje.

A segunda falha está relacionada a uma implementação fraca de hash de senhas no sistema operacional VxWorks. Qualquer dispositivo que use a biblioteca de autenticação incorporada para lidar com a autenticação do Telnet e FTP pode ser comprometido. A falha ocorre porque há apenas 210.000 possíveis saídas de hash para todas as senhas possíveis. Um invasor pode simplesmente percorrer os ranges mais comuns de saídas de hash de cerca de 8.000 senhas semelhantes para obter acesso a um dispositivo VxWorks. Usando o protocolo FTP, esse ataque levaria apenas cerca de 30 minutos para testar todas as permutações comuns de senhas.

Os dispositivos Schneider Modicon são histórias à parte. É fácil ver diretamente do firmware da Schneider que há uma grande quantidade de contas codificadas nos dispositivos. Essas contas permitem que um usuário faça qualquer coisa com o dispositivo, ou seja, todas têm os mesmos privilégios. Por exemplo, é possível carregar um novo firmware no dispositivo e usar o módulo Ethernet em um Modicon como um computador de propósito geral. Até mesmo é possível executar o Linux nele. A Schneider deixou símbolos de depuração no firmware, que são bastante fáceis de reverter.

Outro problema é que as ameaças não são abordadas adequadamente e não são amplamente informadas. Isso se deve a redes isoladas, problemas não documentados ou ameaças não rastreáveis. É difícil, por exemplo, atualizar uma vulnerabilidade do firmware ou informá-la aos fornecedores se os PLCs não estão conectados diretamente à rede ou à Internet dos fornecedores. Os fornecedores não vão rastrear os problemas ocorridos e obter detalhes suficientes. Isso torna o patching e até mesmo o feedback de validação difícil, especialmente quando os PLCs têm variedades

Subida sem restrições: Ter um ponto de acesso a um PLC permite ao usuário carregar qualquer código malicioso no PLC, manipular o que está sendo executado atualmente ou até mesmo carregar um novo firmware. Os PLCs normalmente não verificam se o código carregado vem de uma fonte verificada e confiável ou não. Além disso, os PLCs não têm capacidade para saber se o código carregado é malicioso ou não; contanto que seja compilado sem erros, pode ser carregado e sobrescrever o que está sendo executado atualmente.

Modo desbloqueado: Os PLCs estão, na maioria dos casos, desbloqueados e não estão protegidos por nenhuma senha. Isso permitiria que outras pessoas acessassem o código de lógica em execução, monitorassem tags, manipulassem o código ou até mesmo baixassem uma lógica totalmente incorreta ou não relacionada. Alguns fornecedores oferecem uma chave de segurança física para bloquear o PLC, como girar a chave para "Executar". Um PLC bloqueado impede qualquer modificação, atualização ou download de código.

O código dos PLCs pode ser explorado por malware para lançar ataques a outros PLCs que estão na mesma rede.

Vulnerabilidades de IHMs e DTUs

As IHMs, os DTUs e os HTUs estão cada vez mais acessíveis de forma remota e são interconectados com outras redes e dispositivos. Como qualquer outro computador, eles são vulneráveis a qualquer ameaça dentro da rede e herdam todas as vulnerabilidades do sistema operacional em que estão baseados. Por exemplo, as IHMs se tornaram produtos de software genéricos ou "prateleira" que se baseiam em sistemas de computação comuns ou de TI (tecnologia da informação) como Windows OS, ActiveX, Java, etc. Por isso, estão se tornando dispositivos mais vulneráveis; pois os invasores os consideram PCs regulares ou simplesmente outro sistema operacional vulnerável na rede infectada acessível.

Atacar qualquer IHM, incluindo seu banco de dados relacionado, pode ter consequências graves no software (excluir ou manipular códigos, alarmes ou registros de banco de dados), bem como no hardware; especialmente porque os CLPs são sistemas imediatos em tempo real. Os ataques de software geralmente aproveitam redes não seguras ou dispositivos infectados para criar manipulações de software ou roubar informações confidenciais. As vulnerabilidades de software podem ser exploradas por ataques sofisticados de cibersegurança que afetam dispositivos CLP, como IHMs, codificadores, inversores de frequência, motores, etc. Os ataques de software são resumidos da seguinte forma:

Malware externo: Pode ser implantado por meio da internet, da rede da empresa ou localmente pelos usuários - por exemplo, inserindo um USB infectado em uma IHM, servidor ou PC que está na rede PLC-BS. O malware pode espionar e danificar sistemas industriais, atrasar ou bloquear redes e até incluir rootkits de CLP.

Ataques de engenharia social: Incluem uma identidade não autorizada e incorreta de um dispositivo emissor de comandos que pode permitir acesso remoto e causar danos fatais no software e hardware.

Injeção SQL: Afeta IHMs baseados na web e servidores com aplicativos de banco de dados (algumas IHMs ou servidores

Vulnerabilidades de dispositivos de campo

Uma das principais vulnerabilidades que podem ser exploradas para manipular e ameaçar a integridade e confiabilidade do PLC é aquela que vem de um estado de hardware incorreto ou falso, seja de entradas ou de comandos de saída. A ameaça ocorre quando os valores físicos de um dispositivo de hardware são manipulados enviando ou recebendo valores ou sinais falsos. Alterar qualquer valor, mesmo um bit, de uma entrada ou saída enganaria o CLP e levaria a resultados indesejados no programa de lógica ladder, colocando em risco equipamentos, produtividade, meio ambiente e a vida humana. Isso é feito comprometendo a rede associada, o que ocorre inadvertidamente e sem modificar nenhum código ou firmware da lógica ladder do PLC. Além de falsificar suas entradas/saídas, os dispositivos de hardware podem ficar vulneráveis se os programas de PLC relacionados forem comprometidos; sejam eles relacionados à HMI ou ao PLC, como o código da lógica ladder ou o banco de dados. Aqui está um resumo das vulnerabilidades de hardware:

Entradas falsas: Status, parâmetros ou valores de sensores ou dispositivos de entrada comprometidos (por exemplo, fotocélulas, sensores de presença de peças, paradas de emergência de segurança, VFD - inversores de frequência, interruptores regulares e de segurança, etc.). Além disso, essas vulnerabilidades podem levar a entradas falsas feitas da HMI para o PLC, por exemplo, seleção manual do operador, dados de entrada do operador, etc.

Inícios falsos: Status, parâmetros ou valores de atuadores ou dispositivos de campo comprometidos (por exemplo, válvulas, VFDs, codificadores, motores de passo, etc.). As saídas PLC ou HMI também podem ser falsificadas, afetando outros dispositivos relacionados.

Como em todos os casos anteriores, os dispositivos de campo herdam ovulnerabilidades delecompanheiros.

vulnerabilidades de rede

Atualmente, a maioria das arquiteturas de redes PLC distribuem suas funcionalidades por meio de protocolos comuns ou abertos, como WAN e LAN; Ethernet/IP, DeviceNet, ControlNet, Profibus, PROFINET e Modbus. A falta de mecanismos de segurança nos protocolos torna a rede vulnerável a:

  • Manipulação de pacotes (latência, falsificação, espionagem, exclusão, etc.).
  • Ataques na pilha de comunicação: camada de rede, camada de transporte, camada de aplicação e implementação de protocolos (TCP/IP, OPC, ICCP, etc.).
  • Ataques a dispositivos de campo remotos ou locais; Dispositivos Eletrônicos Inteligentes (IEDs).
  • Suplantação de endereço de Protocolo de Resolução de Endereços (ARP), ataque de senha e negação de serviço (DoS).
  • Backdoors e buracos nos limites da rede.
  • Ataques ao banco de dados.
  • Interferências, bloqueios ou sequestros das comunicações; ataque de homem no meio (MITM).
Vulnerabilidades de segmentação de rede

Muitas empresas ainda assumem que estão seguras se suas redes industriais estão desconectadas da internet ou isoladas. Ainda há aqueles que acreditam que segmentar uma rede mantém seus PLCs seguros e protegidos. Eles supõem que a rede de controle industrial (ICS), que é uma forma de segmentação, assegura todos os PLCs e os dispositivos de campo associados a eles, incluindo os HMI. No entanto, segmentar a rede de ICS dessa maneira não é suficiente pelas seguintes razões:

  • Ameaças USB: um ataque malicioso pode ser implantado por um USB infectado.

  • Herança: um ataque malicioso pode ser realizado por outro computador ou HMI infectado que esteja conectado à mesma rede PLC-BS. Além disso, alguns worms podem passar de um PLC para outro se estiverem nas mesmas redes/

  • Funcionários insatisfeitos: um funcionário insatisfeito pode causar danos significativos. Ele ou ela pode sabotar o código, infectar HMIs ou PCs, escrever código malicioso latente dentro da lógica de escada ou até mesmo abrir certas portas para os atacantes.

  • Má prática de código: um programador pode inadvertidamente escrever partes de código que podem danificar certas máquinas ou criar DoS; por exemplo, loops infinitos.

  • Acesso furtivo: algumas vulnerabilidades podem levar anos para serem detectadas. Seu trabalho não é causar danos diretos. Eles estão lá apenas para espionar, coletar e roubar informações e dados confidenciais.

Próximos passos

Nesta postagem, fornecemos uma visão geral dos PLCs (linguagem e hardware), bem como uma visão geral das redes industriais associadas, dispositivos de campo, HMI e DTU. Também resumimos as principais vulnerabilidades dos dispositivos baseados em PLC.
Agora que assimilamos esses conceitos sobre redes industriais e seus elementos associados, convidamos você a seguir-nos nas próximas publicações, onde faremos referência a casos reais em que essa teoria é aplicada.
Outros links e leituras de interesse: