Escolar Documentos
Profissional Documentos
Cultura Documentos
-= SWaNk =-
Roteiro
✓ !whoami AND whoami
✓ Motivação
✓ DLL?
✓ PE Format
✓ Search Order
✓ DLL Proxy
✓ Modus operandi
✓ PoC||GTFO
✓ Mitigação
Roteiro
✓ !whoami AND whoami
✓ Motivação
✓ DLL?
✓ PE Format
✓ Search Order
✓ DLL Proxy
✓ Modus operandi
✓ PoC||GTFO
✓ Mitigação
!(whoami)
✓ Purista (O melhor SO/linguagem é a que vai resolver o seu problema)
✓ Deus do código (Me viro mas tô longe de ser elegante)
✓ Oráculo de conhecimento (Tenho várias lacunas!)
✓ Segurança por obscuridade
✓ Banker (Malandro que é malandro anda na linha)
✓ White hat e muito menos Black hat
whoami
✓ Rafael Salema Marques (SWaNk)
✓ Malware coder
✓ Mabouia Ransomware OSX PoC
✓ Publicação na 29a issue 7 (New way to startup files - ShellExecute
InstallScreenSaver)
✓ Pesquisador (PhD) Detecção de rootkits
✓ Engenharia reversa e análise de malware
✓ Red Team – Inteligência cibernética
✓ Membro ativo VXUG (https://vx-underground.org/)
whoami
whoami
whoami
✓ Mabouia Ransomware: Acabar com o mito e alertar usuários
Roteiro
✓ !whoami AND whoami
✓ Motivação
✓ DLL?
✓ PE Format
✓ Search Order
✓ DLL Proxy
✓ Modus operandi
✓ PoC||GTFO
✓ Mitigação
Motivação
✓ Por que DLL Hijack é relevante?
▪ Persistência (Malware)
▪ Elevação de privilégios (Bounty)
▪ Pode ser usada em uma aplicação
assinada e que esteja dentro de uma
whitelist, que no ponto de vista do
atacante é muito bom para bypass de
soluções de defesa
▪ Apesar de ser considerada uma
técnica não muito elegante, vem sendo
utilizada há anos com efetividade
Motivação
✓ Por que DLL Proxy é relevante?
✓ https://support.microsoft.com/en-us/help/815065/what-is-a-dll
DLL?
Caso eu queira criar uma caixa de
mensagem padrão do Windows, eu
tenho que carregar a DLL do
sistema user32.dll e chamar a
função MessageBoxA.
User32.dll
MessageBoxA()
A interação do usuário com o
sistema de Arquivos, Registro e
outras funcionalidades do SO são
viabilizadas por funções de DLLs
nativas do sistema (Windows API)
▪ User32.dll
▪ MessageBoxA
PE Format
✓ EXPORT TABLE
▪ Tabela que guarda as
funções que podem ser
utilizadas por outros
programas
PE Format
✓ IMPORT TABLE
▪ Tabela que guarda
informações sobre as
funções que o
programa vai utilizar
durante sua execução
✓ Uma DLL também pode
importar funções de outras
DLLs
✓ DLLs podem ter Entry Point
SPOILER ALERT
(São opcionais, utilizados O Entry Point de um binário PE é uma referência para o
nesse caso para a própria SO de onde está localizada a primeira instrução a ser
inicialização da DLL) executada. Ele será utilizado em nosso ataque
Roteiro
✓ !whoami AND whoami
✓ Motivação
✓ DLL?
✓ PE Format
✓ Search Order
✓ DLL Proxy
✓ Modus operandi
✓ PoC||GTFO
✓ Mitigação
Search Order
Mas como o SO sabe onde está a DLL se geralmente no PE não tem nenhuma
referência de localização da DLL no sistema de arquivos?
Search Order
✓ O Windows busca a DLL em diversos locais
predefinidos no Sistema (DLL Search Order) caso
o desenvolvedor não tenha definido um caminho
completo ou um manifesto.
✓ 2 Tipos de Busca:
▪ Safe DLL Search
▪ Unsafe DLL Search
✓ A partir do Windows XP SP2 Safe DLL Search é
padrão para aplicações Desktop.
✓ Qualquer DLL presente na chave de registro
KnownDLLs não entra na busca, está no system
https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
Search Order
✓ IMPORTANTE:
▪ Se uma DLL com mesmo nome já está carregada
na memória, o SO vai usar a carregada.
▪ Se a DLL carregada está na lista de KnownDLLs
e tem dependência em outra DLL, o SO vai
executar busca (possibilidades…)
▪ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Control\Session Manager\KnownDLLs
Search Order
✓ Safe DLL Search (default)
▪ Diretório onde a aplicação foi carregada
▪ Diretório do sistema (%WINDOWS%\System32)
▪ Diretório do sistema 16-bits (%WINDOWS%\System)
▪ Diretório do Windows (%WINDOWS%)
▪ Diretório atual
▪ Diretórios presents nas variáveis de ambiente (%PATH%)
https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
Search Order
✓ Unsafe DLL Search
▪ Diretório atual
▪ Diretório onde a aplicação foi carregada
▪ Diretório do sistema (%WINDOWS%\System32)
▪ Diretório do sistema 16-bits (%WINDOWS%\System)
▪ Diretório do Windows (%WINDOWS%)
▪ Diretórios presents nas variáveis de ambiente (%PATH%)
https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
Roteiro
✓ !whoami AND whoami
✓ Motivação
✓ DLL?
✓ PE Format
✓ Search Order
✓ DLL Proxy
✓ Modus operandi
✓ PoC||GTFO
✓ Mitigação
DLL Proxy
✓ Também conhecido como DLL Forwarding
✓ Funcionalidade utilizada para encaminhar as
chamadas de funções para outra DLL
✓ Utilizado para dar nova funcionalidade a programas
legados… Mas na prática a galera usa pra modificar o
comportamento das funções de interesse (API Hook)
ORIGINAL
APP EVIL DLL
DLL
Roteiro
✓ !whoami AND whoami
✓ Motivação
✓ DLL?
✓ PE Format
✓ Search Order
✓ DLL Proxy
✓ Modus operandi
✓ PoC||GTFO
✓ Mitigação
Modus Operandi
O que precisamos para executar o ataque de DLL Hijack na vida real?
✓ Achar diretório que:
▪ A aplicação busque uma DLL e não ache
▪ Usuário tenha permissão de escrita
▪ Colocar a DLL maliciosa no diretório
Como achar?
✓ Procmon
✓ icacls
Modus Operandi
O que precisamos para executar o ataque de DLL Proxy na vida real?
✓ Carregar a DLL maliciosa na memória do processo alvo
▪ DLL Hijack é seu amigo para fazer isso (Vantagens e devantagens)
✓ Modificar as funções de interesse
✓ Encaminhar as que não temos interesse
Modus Operandi
Saber como as coisas funcionam no
detalhe é fundamental para evoluir
técnicas e achar falhas… Se você
pensa em seguir carreira na área da
segurança, precisa ir fundo nos
protocolos, arquiteturas e conceitos
pra poder achar vulnerabilidades.
DLL Proxying
✓ https://www.pelock.com/articles/intercepting-dll-libraries-calls-api-hooking-in-practice
✓ https://kevinalmansa.github.io/application%20security/DLL-Proxying/
✓ https://itm4n.github.io/dll-proxying/
DLL Hijack
✓ https://itm4n.github.io/windows-dll-hijacking-clarified/
✓ https://pentestlab.blog/2017/03/27/dll-hijacking/
✓ https://medium.com/@sghosh2402/ikeext-dll-hijacking-3aefe4dde7f5
✓ https://medium.com/@AndrewRollins/discord-dll-hijack-cb77a6a288cf
✓ https://posts.specterops.io/automating-dll-hijack-discovery-81c4295904b0
✓ https://hacknpentest.com/windows-privilege-escalation-dll-hijacking/
✓ https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1493862085.pdf
✓ https://news.sophos.com/en-us/2017/03/10/qa-wikileaks-the-cia-fine-dining-and-dll-hijacks/
Fine Dining
✓ https://wikileaks.org/ciav7p1/cms/page_20251107.html
✓ https://www.bleepingcomputer.com/news/security/vault-7-cia-developed-24-decoy-applications-to-
spy-on-targets/
That’s all folks!
Telegram: @SWaNk
Twitter: @pegaBizu