
Este artigo faz parte da série Fileless Malware. Todas as outras partes da série:
Neste artigo, eu mergulharia em um cenário de vários estágios ainda mais complicado, de um ataque sem arquivos com correção no sistema. Mas então me deparei com um ataque incrivelmente simples sem código - nenhuma macro do Word ou Excel é necessária! E isso prova com muito mais eficiência minha hipótese inicial subjacente a esta série de artigos: superar o perímetro externo de qualquer organização é uma tarefa muito simples.
O primeiro ataque que descreverei explora a vulnerabilidade do Microsoft Word, que é baseada no
DDE ( Dynamic Data Exchange Protocol ) herdado . Já foi
corrigido . O segundo explora uma vulnerabilidade mais geral no Microsoft COM e nos recursos de transferência de objetos.
De volta ao futuro com DDE
Alguém mais se lembra do DDE? Provavelmente poucos. Este foi um dos primeiros
protocolos de comunicação entre processos que permitiu que aplicativos e dispositivos transferissem dados .
Eu próprio estou um pouco familiarizado com isso, porque costumava verificar e testar equipamentos de telecomunicações. Naquele momento, o DDE permitia, por exemplo, transferir o identificador de chamadas para o aplicativo CRM para operadores de call center, que finalmente abriram o cartão do cliente. Para fazer isso, era necessário conectar um cabo RS-232 entre o telefone e o computador. Aqui estavam os dias!
Como se viu, o Microsoft Word ainda
suporta DDE.
O que torna esse ataque eficaz sem código é que você pode acessar o protocolo DDE
diretamente dos campos automáticos de um documento do Word (tiro o chapéu para o SensePost para
pesquisar e publicar sobre ele).
Os códigos de campo são outro recurso antigo do MS Word que permite adicionar texto dinâmico e um pouco de programação a um documento. O exemplo mais óbvio é o campo Número da página, que pode ser inserido no rodapé usando o valor {PAGE \ * MERGEFORMAT}. Isso permite gerar automaticamente números de página.
Dica: Você pode encontrar o item de menu Campo na seção Inserir.Lembro que, quando descobri esse recurso no Word, fiquei impressionado. E enquanto o patch não o desativasse, o Word suportaria o parâmetro de campo DDE. A ideia era que o DDE permitisse que o Word se comunicasse diretamente com o aplicativo, com a possibilidade de transferir a saída do programa para um documento. Era uma tecnologia muito nova na época - suporte para troca de dados com aplicativos externos. Mais tarde, foi desenvolvido em tecnologia COM, que também consideraremos abaixo.
Como resultado, os hackers perceberam que esse aplicativo DDE poderia ser um shell de comando que, é claro, lança o PowerShell e, a partir daí, os hackers podem fazer o que quiserem.
A captura de tela abaixo mostra como eu usei essa técnica secreta: um pequeno script do PowerShell (doravante denominado PS) do campo DDE carrega outro script PS que inicia a segunda fase do ataque.
Graças ao Windows pelo aviso pop-up de que o campo interno do DDEAUTO está tentando secretamente iniciar o shellO método preferido de explorar a vulnerabilidade é usar a opção com o campo DDEAUTO, que executa automaticamente um script
quando um documento do Word é
aberto .
Vamos pensar no que podemos fazer sobre isso.
Como um hacker iniciante, você pode, por exemplo, enviar um e-mail de phishing, fingindo ser do Serviço Fiscal Federal, e incorporar o campo DDEAUTO com um script PS para o primeiro estágio (de fato, um conta-gotas). E você nem precisa fazer codificação real de macros, etc., como fiz no
artigo anterior.A vítima abre seu documento, o script embutido é ativado e o hacker está dentro do computador. No meu caso, o script PS remoto apenas imprime a mensagem, mas também pode iniciar facilmente o cliente PS Empire, que fornecerá acesso remoto ao shell.
E antes que a vítima tenha tempo de dizer alguma coisa, os hackers serão os adolescentes mais ricos da vila.
O shell foi iniciado sem a menor codificação. Até uma criança consegue!DDE e campos
Mais tarde, a Microsoft ainda desativou o DDE no Word, mas antes disso, a empresa disse que esse recurso era simplesmente mal utilizado. Sua relutância em mudar alguma coisa é compreensível. Por experiência própria, observei um exemplo de que a atualização de campos ao abrir um documento estava habilitada, mas as macros do Word foram desabilitadas pelo serviço de TI (mas com uma notificação). A propósito, você pode encontrar os parâmetros correspondentes na seção Configurações do Word.
No entanto, mesmo se a atualização de campo estiver ativada, o Microsoft Word notificará adicionalmente o usuário quando o campo solicitar acesso aos dados excluídos, como é o caso do DDE acima. A Microsoft está realmente avisando você.
Mas o mais provável é que os usuários ainda ignorem esse aviso e ativem a atualização do campo no Word. Essa é uma das raras oportunidades de agradecer à Microsoft por desativar o perigoso recurso DDE.
Quão difícil é encontrar hoje um sistema Windows sem patch?
Para esse teste, usei o AWS Workspaces para acessar a área de trabalho virtual. Assim, recebi uma máquina virtual sem patch com o MS Office, que me permitiu inserir o campo DDEAUTO. Não tenho dúvidas de que, de maneira semelhante, você pode encontrar outras empresas que ainda não instalaram os patches de segurança necessários.
Mistério de objetos
Mesmo se você instalou esse patch, existem outras falhas de segurança no MS Office que permitem que os hackers façam algo muito semelhante ao que fizemos com o Word. No cenário a seguir, aprenderemos como
usar o Excel como isca para um ataque de phishing sem escrever código.Para entender esse cenário, lembre-se do Microsoft
Component Object Model , ou
COM (Component Object Model) abreviado.
O COM existe desde os anos 90 e é definido como um "modelo de componente orientado a objetos neutro à linguagem de programação" com base em chamadas de procedimento RPC remoto. Para um entendimento geral da terminologia COM, leia
esta postagem no StackOverflow.
Em geral, você pode imaginar um aplicativo COM como um executável do Excel ou Word ou algum outro arquivo binário que possa ser iniciado.
Acontece que um aplicativo COM também pode executar um
script - JavaScript ou VBScript. Tecnicamente, isso é chamado de
scriptlet . Talvez você tenha encontrado a extensão sct para arquivos no Windows - esta é a extensão oficial para scriptlets. Na verdade, eles são o código para um script agrupado em um wrapper XML:
<?XML version="1.0"?> <scriptlet> <registration description="test" progid="test" version="1.00" classid="{BBBB4444-0000-0000-0000-0000FAADACDC}" remotable="true"> </registration> <script language="JScript"> <![CDATA[ var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!"); ]]> </script> </scriptlet>
Os hackers e os criminosos descobriram que existem utilitários e aplicativos separados no Windows que aceitam objetos COM e, portanto, também scriptlets.
Posso passar o scriptlet para um utilitário do Windows escrito em VBS, conhecido como pubprn. Ele está localizado nas entranhas de C: \ Windows \ system32 \ Printing_Admin_Scripts. A propósito, existem outros utilitários do Windows que aceitam objetos como parâmetros. Para começar, considere este exemplo.
É natural que o shell possa ser iniciado mesmo a partir de um script de impressão. Vá para a Microsoft!Como teste, criei um scriptlet remoto simples que inicia o shell e imprime a mensagem engraçada "Você acabou de fazer o script!". Essencialmente, o pubprn instancia o objeto scriptlet, permitindo que o VBScript execute o shell. Este método fornece benefícios claros para os hackers que desejam entrar e se esconder no seu sistema.
No próximo post, explicarei como os scriptlets COM podem ser usados por hackers usando planilhas do Excel.
Sua tarefa é assistir a
este vídeo do Derbycon de 2016, explicando como os hackers usavam scriptlets. E também leia
este artigo sobre scriptlets e algum tipo de apelido.