Jump to content
Sign in to follow this  
fvox

Windows DLL Hijacking

Recommended Posts

fvox

__________

. Introdução\_______________________________________

Hi.

Venho-lhes trazer uma matéria que escrevi há quase um ano, logo quando saiu o bug de DLL Hijacking. Hoje em dia a falha é pouco comentada e os programadores já tomam mais cuidado com ela, mas deixarei a matéria aqui a nível de conhecimento.

Esta é a tal falada falha que afetou diversos aplicativos famosos, incluindo uma grande parte dos softwares do pacote Office e browsers como Opera e Firefox em 2010.

_______

. 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 do projeto Metasploit, o DLL Hijack Auditor 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)
* 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?

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 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, 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.

45294324.jpg

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

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/

Atenciosamente,

fvox.

[]'s


"Strength of the world, the one true beholder...Ice in my veins, for those who've died."

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.