FORUM DARKERS

Segurança & Hacking => Bugs | Exploits | Vulnerabilidades => Topic started by: Fvox on 13 de October , 2010, 11:48:50 AM

Title: Windows DLL Hijacking
Post by: Fvox on 13 de October , 2010, 11:48:50 AM
__________
. Introdução\_______________________________________


Hi.

Faz tempo que não apareço aqui no Darkers, né. =P. Pois é, tinha perdido minha senha, e também, responsabilidades vieram hahah.
A pedidos, trago a vocês este tutorial sobre a tal falada falha que afetou diversos aplicativos famosos, incluindo uma grande parte dos softwares do pacote Office e browsers como Opera e Firefox.


_______
. Hack It!\__________________________________________

A falha conhecida como DLL Hijacking existe graças à um mau funcionamento do Windows, e até que eu saiba, afeta todas as versões. Deve ser utilizada juntamente com SEing, pois precisamos saber qual o software que a possível vítima utiliza. Em breve, veremos o porque.

Ao explorar um aplicativo, como por exemplo, um player de música, conseguimos executar um código desejado apenas inserindo um arquivo .dll no mesmo diretório do arquivo *.mp3. Ou seja, se mandarmos uma pasta zipada com alguns arquivos de áudio e uma DLL "escondida" no meio, ao abrir qualquer arquivo de áudio, o player executará a DLL apenas por estar no mesmo diretório.

O nome da *.dll que deve ficar no mesmo diretório do arquivo a ser aberto varia de acordo com o software a ser explorado. Há algumas tools para explorar como o DLL Hijack Audit Kit (http://"http://blog.metasploit.com/2010/08/better-faster-stronger.html") do projeto Metasploit, o DLL Hijack Auditor (http://"http://securityxploded.com/dllhijackauditor.php") do SecurityXploded ou uma ferramenta qualquer de debugging. Em breve, mostrarei o funcionamento de ambas as tools.

Agora, vou mostrar um exemplo do funcionamento da falha.
Ontem, fui brincar com o conhecido player Nullsoft "Winamp", na sua versão 5.5.8.2975.
O nome das DLLs que encontrei foram "rapi.dll" e "dwmapi.dll".

Agora, criarei um código simples para fazer o PoC:
/*
* Simple DLL Hijacking Exploit
* Tutorial por Júnior Moraes (fvox)
* http://www.forum-invaders.com.br
* Email: synyster@bsdmail.com
*/

#include <windows.h>
#include <stdio.h>

int fvox()
{
    MessageBox(0, "u r owned", "DLL Hijacking", MB_OK);
    FILE *fp;
    fp = fopen("fvox.txt", "w");
    fwrite("it works ;-)", 1, 12, fp);
    fclose(fp);
    exit(1);
    return 0;
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved)
{
    fvox();
    return TRUE;
}
Ainda fazendo os testes no Winamp, vamos compilar a DLL e colocá-la no mesmo diretório de um arquivo *.mp3 com o nome de "dwmapi.dll".
Agora, vamos abrir o arquivo .mp3 com o Winamp. O que será que acontece?

(http://img830.imageshack.us/img830/2715/winampo.png)

Yeah! Apesar do arquivo *.mp3 ser realmente uma música normal, a DLL foi carregada. Como vocês puderam perceber, o MsgBox foi chamado e foi-se criado um arquivo de nome "fvox.txt" contento a frase "it works ;-)".

___________
. Ferramentas\_______________________________________


Como já disse anteriormente, é possível descobrir o nome da DLL a ser bugada via tools ou por um debugger.
O DLL Hijack Audit Kit (http://"http://blog.metasploit.com/2010/08/better-faster-stronger.html") executa um macro e abre diversos aplicativos de diversas extensões. Este macro age junto com um aplicativo externo (Process Monitor), que salva um logfile. Com este logfile, há um segundo script que verifica a falha em todos os aplicativos instalados no computador. :)

Já o DLL Hijack Auditor (http://"http://securityxploded.com/dllhijackauditor.php"), verifica uma aplicação específica com base no diretório dela e nas extensões que a aplicação pode executar.

Mostrarei um exemplo utilizando a segunda tool.

Testarei no aplicativo Media Player Classic 1.3.1748.0, muito utilizado para ver filmes por possuir seu sistema de dual audio, etc.

No campo "Select Application", localizem o executável principal. No caso, localizei o arquivo mpc-hc.exe. No campo "Specify Extension", coloquem todas as extensões utilizadas pelo programa e cliquem em "Start Audit". Quando o programa parar de testar as extensões no programa, o botão "Exploit" vai estar liberado. =)
Como é apenas um exemplo, coloquei poucas extensões só para vocês terem uma noção.

(http://img819.imageshack.us/img819/4346/45294324.jpg)

Opa. Apareceu uma "dll" bugada chamada "vsfilter.lang". Mas a extensão não é uma DLL. Será que funciona?

(http://img689.imageshack.us/img689/4420/mediaey.png)

É, dá para brincar! ;-)


_________
. Conclusão\_______________________________________


DLL Hijacking pode parecer uma falha boba, mas pode ser muito bem utilizada, tanto em rede quanto fora dela.
Na rede, vocês podem usar e abusar de pastas compartilhadas do Windows.
Na internet, vocês podem enviar arquivos zipados com a DLL bugada oculta, ou espalhar via p2p.

Basta utilizar sua imaginação e seu conhecido, e let's code! ;-)

Aqui vai uma lista de aplicativos que possuem a falha e suas respectivas DLLs bugadas:
http://www.exploit-db.com/dll-hijacking-vulnerable-applications/ (http://www.exploit-db.com/dll-hijacking-vulnerable-applications/)

Atenciosamente,
fvox.
Title: Re:Windows DLL Hijacking
Post by: Imoogi on 13 de October , 2010, 12:36:18 PM
vlw aee Fvox!!
vou dá uma brincada ;D
Title: Re:Windows DLL Hijacking
Post by: b4rt on 16 de October , 2010, 05:43:18 PM
Otimo tuto :D ;D
Title: Re:Windows DLL Hijacking
Post by: f0nt_Drk on 11 de November , 2010, 05:59:01 PM
good fucking , guy !

Title: Re:Windows DLL Hijacking
Post by: fuckoff on 01 de December , 2010, 06:50:28 AM
Valeu, Fvox. Vi um vídeo relatando sobre a falha feito pelo Bhior, e foi legal entender o real funcionamento dela. Pra ter prática, tem de ter no mínimo a teoria também.