domingo, 22 de maio de 2011

O Stuxnet e as capivaras

Em primeiro lugar, gostaria de dizer que o termo Capivara não foi criado por mim. Essa alcunha genial é fruto das mentes brilhantes dos nossos camaradas do dclabs Grinch, Crash e Alexos, hábeis observadores da natureza e da semelhança com atitudes de certos usuários.

A pergunta que não quer calar é: Habitariam também as capivaras os ambientes high-tech, ou estariam confinadas apenas aos lugares mais comuns, onde o Office é o exemplo máximo de tecnologia ? Infelizmente, habitam.

Vamos falar de alta tecnologia.

O STUXNET

Essa obra de arte da tecnologia não é mais novidade. O assunto já rola há algum tempo e foi alvo de pelo menos 3 comentários nas palestras do WebSecForum, incluindo a minha.
O Stuxnet é um malware especificamente criado com fins de sabotagem. Ele pode ser desmembrado em algumas dlls e códigos que vão infectar máquinas Windows e controladores PLCs, de maneira bem especifica.

Diferentemente dos PCs, cujo hardware é praticamente padronizado e o SO não varia tanto também (win, Linux, etc), a arquitetura que envolve controladores industriais é bem mais complexa e diferenciada.O caso do Stuxnet envolve código específico para centrifugas ligadas a projetos de energia atômica. Algumas pesquisas mostram que a grande maioria dos usuários do modelo vulnerável ao código do Stuxnet esta no IRÃ. Seria isso mera coincidência ?

Em termos de arquitetura, um grupo de centrifugas está ligado por interfaces de controle a um concentrador, que por sua vez liga-se ao PLC (Programmable Logic Controller). Esse equipamento é quem recebe e roda programas em uma linguagem incomum chamada STL e que, através desses programas, controla as centrifugas. Esse controle envolve parametrizações mais simples e algumas mais criticas, como por exemplo, a velocidade de rotação do motor da centrifuga. Essa velocidade é muito especifica para o processo, não pode ser mais nem menos do que o estabelecido, e é exatamente isso que o Stuxnet faz, ora aumentando, ora diminuindo a velocidade de rotação, sabotando o processo.
Para interfacear com o PLC, mandando os programas para ele, por exemplo, existe um PC rodando Windows e fica conectado ao PLC (na verdade, não precisam estar o tempo todo conectados). Em geral , esses computadores ficam apartados das redes TCP/IP, mas também podem estar ligados a uma (o que não parece ser uma boa pratica). No caso específico do PLC alvo do Stuxnet, da marca Siemens, há um software de controle que é executado nesse PC, o WinCC/Step7.

Em termos de preparação e planejamento, o Stuxnet é o estado da arte. Esqueça mensagens com palavras escritas errado e adolescentes programando em uma mesa suja. Stuxnet foi desenvolvido por equipe grande e com skills bem variados. Ele usa complicados esquemas de injeção de código na memória e aplica rootkits para esconder-se tanto na máquina Windows quanto no PLC. O esquema de infecção é engenhoso, apoiando-se em varias vulnerabilidades, sendo que duas delas eram 0-day na época de seu lançamento. Além disso, busca infectar máquinas Windows com Step7 ligadas a rede TCP/IP ou não. Para as desconectadas usa uma estratégia bastante inteligente: a fim de manter as máquinas atualizadas, em geral os administradores baixam patches para pendrives e as atualizam off-line, plugando o pendrive em cada uma das máquinas que acessam PLCs. O Stuxnet tem um sub-sistema específico para explorar máquinas a partir de arquivos .lnk e com isso infectar máquinas onde pendrives contendo tais arquivos forem usados. Muito engenhoso !

Vale a pena tirar um tempo e estudar mais profundamente a estratégia e os detalhes desse malware. Ele foi citado, inclusive, em uma das minhas previsões da minha palestra no WebSecForum e imagino que vá criar uma nova onda de ataques muito mais complexa e elaborada que as atuais.

Onde estão as Capivaras ???

O Stuxnet ataca por todos os lados. Uma das estratégias de infecção é buscar a máquina que está rodando o banco de dados do WinCC. Ele se conecta ao banco e usa algumas queries, acessa o SO, aciona OLE automation, enfim, faz a festa. Como ele faz isso ? Muito simples. A senha do database está hardcoded dentro do código do WinCC ...

Sem comentários, não ? Ou melhor, comentem !!!

Até o próximo post !

8 comentários:

Cid disse...

Bobagem ! Sistemas críticos como o comentado, via de regra tem como premissa básica de projeto, o bloqueio ao acesso externo.E se por ventura houver explícita necessidade deste acesso, com eventual risco ao processo, equipamentos, pessoas e/ou meio ambiente, contamos com ferramentas de auxilio a segurança do processo, como o HAZOP (Hazards Operations) Meetings e SIL (Safety integrity level) do sistema, que identificam e avaliam todos os riscos envolvidos e que direcionam escolhas de dispositivos e arquiteturas que se integram ao processo, promovendo sua operação segura. Convém salientar que nesta avaliação estará, sem sombra de dúvidas,a determinação de utilização de dispositivos externos ao PLC em questão (outro PLC, por exemplo), que fará o mesmo monitoramento deste processo e tomará as ações pertinentes independentemente do PLC master. E concluindo,onde operamos sistemas de controle em processos potencialmente criticos, faz-se com alguma frequência, um HAZOP assistido do programa do PLC,rodando linha á linha! E isso !

Cid disse...
Este comentário foi removido pelo autor.
Tony Rodrigues disse...

Cid,

O que vc descreveu não desmente o restante ... Vc mostrou apenas que existem controles de segurança nessa arquitetura, e nem dá para imaginar o contrário ! Porém, esses controles devem estar recebendo menos atenção do que deviam, ou mesmo a ausência de incidentes pré-Stuxnet pode ter causado falsa sensação de segurança, tornando a estrutura toda vulnerável por pequenas negligências. O uso de senhas hardcoded é contra-indicado, mesmo com a aplicação de alguns controles compensatórios, como os que vc descreveu. E o Stuxnet está aí para mostrar exatamente isso. Proteção em camada é necessário sempre ! Isso, inclusive, bate com o que tem aparecido nos principais mapeamentos de incidentes de segurança: A maioria cai por negligência.

Vc chegou a ler o estudo do Stuxnet feito pela Symantec ? Lá há alguns gráficos interessantes, mostrando a quantidade de infecções. Fico curioso em pensar o quanto os HAZOP/SIL e outras letrinhas mitigaram nos ataques (ou seja, se teria sido muito pior sem eles por lá) ou se foram completamente ineficientes. Vc tem alguma informação sobre isso ?

[]s,

Tony

Giancarlo disse...

Olá pessoal.

A discussão está boa!!

Mas eu achei incrível o seguinte: de toda esta "sopa de letrinhas" que o Cid apresentou (HAZOP, SIL, etc) é realmente assustador que nenhuma análise de risco tenha constatado a utilização de computadores com WINDOWS como um potencial vetor para o ataque!!

Caramba!! Eu considero isso um erro muito primário!

Imaginem os engenheiros discutindo a utilização de todas essas siglas, montando uma fortaleza em todo esse processo e, no final, concordando em fazer a integração com o ambiente externo via computadores rodando Windows!!

Cadê aquela história do "elo mais fraco"?

Acho que nesse caso faltou a assistência de uma consultoria especializada em segurança pra demonstrar que não se pode utlizar Windows neste "acesso externo altamente controlado".

Um exemplo clássico disso é o WEP (feito por engenheiros do IEEE, hackeável em 1 minuto e com muita gente usando) versus o WPA (feito por criptógrafos e até agora seguro quando corretamento usado).

t+

Giancarlo disse...
Este comentário foi removido pelo autor.
Tony Rodrigues disse...

Opa, Giancarlo !

Só um complemento: Não foram engenheiros que definiram o uso do Windows. Na verdade, o PLC depende de uma máquina para receber seus programas, depurá-los, etc. A máquina deve rodar um software específico para fazer isso. Esse software, no caso da PLC da Siemens, é Windows. Não sei se há versões Linux para o mesmo modelo de PLC, mas eu chutaria que não há. A turma que fez o Stuxnet foi por demais cuidadosa, tenho certeza que fariam código para infectar a versão Linux, se ela existisse.

Estamos em uma nova época, amigo ... Ataques elaborados e bem projetados. O estudo da Symantec indica que há possibilidades de que o "projeto" tenha se iniciado há pelo menos um ano e meio antes de ser efetivamente posto em ação.

[]s

Tony

Sandro Süffert disse...

Grande Tony, belo post! Concordo com o que foi colocado por todos, mas em se tratando de Stuxnet, o buraco é mais embaixo.. Como pode ser visto neste post: http://migre.me/4DJOi

abraco a todos,

Sandro

Tony Rodrigues disse...

Obrigado, Sandro !

[]s,

Tony