Por que o Stuxnet foi o vírus mais avançado já criado?

Kauan Manzato
8 min readFeb 15, 2023

--

Centrífugas iranianas para enriquecimento de urânio

O Stuxnet foi um malware (programa de computador malicioso) que, diferente de outros vírus, seu objetivo era único: sabotar o programa nuclear iraniano, a fim de impedir ou atrapalhar os iranianos de obterem armas nucleares.

Seu alvo eram as centrífugas iranianas para enriquecimento de urânio, o combustível das bombas atômicas. O vírus diminuía a produção do urânio enriquecido e até quebrava as centrífugas.

O Stuxnet atuou durante anos sem ser descoberto. Porém, o programa nuclear iraniano acelerou, forçando os criadores do Stuxnet a tornar o vírus mais “agressivo”, o que acabou revelando sua existência. A partir daí, várias pessoas começaram a investigar o vírus e se espantar com ele.

Neste artigo, eu vou explicar porque muitos dos especialistas que trabalharam analisando a nova ameaça ficaram perplexos.

1. Arsenal: o Stuxnet explorou 8 vulnerabilidades (sendo 5 zero-days!)

Amostras de máquinas infectadas pelo Stuxnet. Fonte: Securelist (Kaspersky)

Em segurança da informação, vulnerabilidades são brechas de segurança que permitem a ação de agentes maliciosos.

Por sua vez, vulnerabilidades zero-day são brechas de segurança que não foram descobertas pelos “mocinhos” que corrigem brechas. Elas são muito valorizadas porque são muito difíceis de serem encontradas e permitem que criminosos explorem elas até que sejam identificadas e corrigidas, o que pode nunca acontecer.

Ao longo do seu ciclo de vida, as diversas versões do Stuxnet exploraram oito vulnerabilidades para atingir o seu objetivo, sendo cinco delas vulnerabilidades zero-day! E se um zero-day é difícil de ser encontrado, imagine cinco. [1] [7]

Este fato espantou quem estava analisando o Stuxnet porque descobrir estas cincos brechas de segurança exige um nível de conhecimento muito acima da média, o que indicava que os pesquisadores não estavam lidando com um vírus comum.

As 8 vulnerabilidades

Evolução das vulnerabilidades exploradas pelo Stuxnet. Fonte: Symantec

A primeira versão do Stuxnet (0.500) explorava uma vulnerabilidade (CVE-2012-3015) no software Simatic Step 7 da Siemens que não carregava bibliotecas de forma segura, permitindo a execução remota de código com privilégios elevados. O Stuxnet explorava essa falha trocando arquivos .DLL do Step 7 por versões maliciosas dos mesmos. [2] [3] [4] [5] [6]

A segunda versão do Stuxnet (1.001) explorava 4 novas vulnerabilidades, sendo 3 zero-days. Aqui vai uma descrição de cada uma:

  1. Print Spooler RCE (CVE-2008–2729): zero-day presente em máquinas Windows com o compartilhamento de impressora habilitado que, na época, não validava as permissões de acesso da fila de arquivos para impressão, permitindo ao atacante mandar requisições RPC (Remote Procedure Call) forjadas e executar código malicioso. [8] [33]
  2. Windows Server Service RPC RCE (CVE-2008-4250): esta brecha no serviço RPC do Windows permitia executar código malicioso remotamente e com privilégios elevados por meio de uma requisição RPC forjada para causar um stack buffer overflow. [9] [10] [11] [12] [33]
  3. WinCC Default Password (CVE-2010–2772): este zero-day, na verdade, eram credenciais que estavam embutidas no código-fonte e que davam acesso ao banco de dados e a privilégios elevados. [13] [14] [15] [16] [33]
  4. MS09-025: zero-day pouco conhecido. Consiste em brechas no kernel do Windows que permitem ao atacante elevar seus privilégios e tomar conta do computador. [17] [18] [19] [20]
Parte do código do Stuxnet, relacionado à vulnerabilidade LoadKeyboardLayout EOP, usada nas versões 1.100 e 1.101. Fonte: Securelist (Kaspersky)

Por fim, as versões 1.100 e 1.101 do Stuxnet deixaram de usar a vulnerabilidade MS09-025 e exploravam três novas vulnerabilidades:

  1. Task Scheduler 2.0 XML EOP: esta brecha no Agendador de Tarefas 2.0 permitia aos atacantes criarem um arquivo malicioso e uma colisão no CRC32 para executar código com privilégios elevados. Várias fontes usam diferentes nomes para citá-la, como CVE-2010–3888, CVE-2010–3888 ou MS10-092. [21] [22] [23] [24] [25]
  2. LoadKeyboardLayout EOP (CVE-2010-2743): o quarto zero-day é bem técnico. Em resumo, a falha estava no carregamento das informações do layout do teclado, permitindo aos atacantes ganharem privilégios. [26] [27] [28] [29]
  3. Shortcut .LNK/.PIF RCE (CVE-2010-2568): outro zero-day. Com esta brecha, arquivos de atalho .LNK ou .PIF maliciosos tinham seu código executado quando o ícone do arquivo era carregado pelo Windows, mesmo que a vítima não abrisse o arquivo. [30] [31] [32] [33]

Esta quantidade de vulnerabilidades exploradas ao longo do ciclo de vida do Stuxnet é enorme. Se o artigo terminasse aqui, já seria surpreendente, mas ainda tem muito mais.

2. Roubo de certificados digitais

Certificado digital do arquivo jmidebs.sys, componente do Stuxnet que se instala como driver legítimo

Um computador com processador Intel precisa ter um driver (um tipo especial de software) da Intel associado àquele processador. Para garantir que o driver não é malicioso, a Intel assina um certificado digital usando uma chave secreta, provando que aquele driver é legítimo.

Para esconder suas atividades, o Stuxnet usa dois drivers com certificados digitais válidos, um da JMicron e outro da RealTek, ambas fabricantes taiwanesas. [35] [36] [37]

Todavia, como o Stuxnet obteve esses certificados? Assim como cada vulnerabilidade zero-day, obter certificados digitais válidos é uma tarefa muito complicada, outro motivo que torna o Stuxnet excepcional.

3. Às cegas: desativando proteções e alarmes

Assim como o Neo do Matrix, o Stuxnet desviava dos alarmes, dos supervisores e do sistema de proteção dos CLPs

Depois de infectar os computadores, o Stuxnet reprogramava os CLPs para sabotarem as centrífugas. O malware escondia sua sabotagem interceptando e modificando os dados que passavam pelo CLP para fingir que as centrífugas estavam funcionando normalmente [35] [38]. Assim, nem os supervisores e nem o sistema de proteção eram alertados.

A discrição do vírus teve dois efeitos: o Stuxnet passou despercebido por mais tempo e fez os iranianos gastarem tempo tentando descobrir porque tantas centrífugas estavam quebrando. [39]

4. Replicação: como o Stuxnet se espalhava?

Evolução dos meios de replicação do Stuxnet. Fonte: Symantec

O Stuxnet é um worm, ou seja, funciona de forma autônoma, se autorreplicando e se espalhando pelas redes.

A primeira versão do Stuxnet (0.500) se espalhava apenas por meio de arquivos de projetos do software Step 7 da Siemens via USB. Entretanto, com o programa nuclear iraniano acelerando, o Stuxnet precisava ser mais agressivo. Assim, as versões 1.x do Stuxnet traziam novas formas de replicação:

  • USB: inicialmente, o vírus explorava a funcionalidade de Autorun do Windows. Já as últimas versões usavam o zero-day com atalhos .LNK/.PIF. [40]
  • Compartilhamento de recursos: o Stuxnet podia se espalhar para computadores que estavam na mesma rede por meio de uma tarefa agendada ou pelo WMI (Windows Management Instrumentation) [40]
  • Vulnerabilidades: duas das vulnerabilidades discutidas foram usadas para replicação: o zero-day Print Spooler e a vulnerabilidade no Windows Server Service. [40]
  • Comunicação ponto-a-ponto (P2P): método usado para atualizar o Stuxnet. O vírus comparava as versões de dois computadores em uma rede e atualizava a cópia antiga. [40]

É possível que a evolução das formas de replicação do Stuxnet tenha sido um ato de desespero por parte dos seus criadores porque, apesar de garantir que o alvo seria atingido, fez com que o vírus se espalhasse para milhares de computadores e fosse descoberto. Apesar de tudo, algumas dessas formas são incríveis, como a vulnerabilidade com atalhos .LNK e .PIF.

5. O objetivo e o alvo

Antes de apresentar o alvo do Stuxnet, é interessante saber como o alvo se organizava. As centrífugas iranianas eram controladas por CLPs, e os CLPs eram configurados e programados por meio de computadores.

Os computadores servem para configurar e programar os CLPs, que por sua vez controlam as centrífugas.

Quando o Stuxnet infectava um computador, ele buscava configurações específicas para poder atacar o CLP da centrífuga e sabotá-la. [34]

A sabotagem, inicialmente, diminuía a produção de urânio enriquecido, mas passou a quebrar centrífugas também.

Conforme os pesquisadores entendiam mais sobre o vírus, surgia uma dúvida: por que criaram um vírus tão incrível para atacar alvos tão específicos, sendo que este arsenal poderia trazer ganhos financeiros e até reconhecimento? Este alvo deveria ser muito importante.

Alguns meses depois, foi descoberto que o alvo era o programa nuclear iraniano e o objetivo era sabotá-lo. E isto nos leva a outro fato que torna o Stuxnet ainda mais especial: os criadores do Stuxnet e seus motivos.

6. O criador: quem desenvolveu o Stuxnet?

Sede da CIA, agência central de inteligência dos EUA

Como dito anteriormente, um vírus tão complexo e avançado e com um alvo tão específico fez surgir algumas suspeitas porque, para construir um malware deste porte, é necessário um financiamento e uma equipe de desenvolvedores que empresas e grupos criminosos não são capazes de prover. Algum país tinha que ter estar por trás desta história. [41] [42]

Apesar de não ter sido divulgado oficialmente, é amplamente reconhecido que os países envolvidos na criação do Stuxnet foram os EUA e Israel, sob a liderança da NSA, a agência nacional de segurança dos EUA. [43] [44]

O envolvimento destas duas potências militares com o Stuxnet responde muitas dúvidas, desde o financiamento do projeto até a escolha do alvo, porque, historicamente, EUA e Israel são aliados e se opõem à obtenção de armas nucleares por parte dos iranianos.

7. As consequências

Será que, ao invés de guerras físicas, as guerras futuras serão travadas no ciberespaço?

O Stuxnet levantou muitos alertas, principalmente quando ficou evidente seu objetivo, seu alvo e sua origem. A sabotagem pode ser vista como um ato de guerra. Porém, as regras que regem as relações entre países não são claras sobre operações cibernéticas.

A destruição de equipamentos de importância nacional só era considerada possível com ataques cinéticos, ou seja, com o uso de mísseis, armas de fogo etc. Porém, o Stuxnet provou que é possível fazer o mesmo sem dar um único tiro ou sacrificar um soldado.

Assim foi inaugurada a guerra cibernética, sendo o Stuxnet a primeira arma cibernética a ser disparada contra um país.

Outras questões levantadas foram:

  • Se os EUA pode atacar outro país com um malware, então outros países também podem atacar os EUA.
  • Em caso de sabotagem cibernética, o país atacado pode escalar para um conflito físico?

O Stuxnet também abriu discussões sobre segurança em sistemas industriais. Em 2007, o teste do gerador Aurora já havia demonstrado como um ciberataque poderia destruir componentes físicos [45]. Anos depois, foi descoberto o Stuxnet atacando CLPs. Já em setembro de 2022, a Kaspersky publicou uma grande lista com incidentes semelhantes no primeiro semestre do mesmo ano.

8. Conclusão

Usina de energia nuclear

Além de ser um vírus único, e talvez o mais avançado de todos, o Stuxnet também significa duas coisas: o começo da guerra cibernética e o início de ataques a indústrias. Provavelmente, no futuro, haverá mais conflitos cibernéticos entre países e mais ataques a sistemas industriais. E o que poderemos fazer para nos proteger?

--

--