ClsHack:Computer Security Blog    

Tools for search DLL Hijacking Vulnerabilities


Maggiori info su questa vulnerabilità, le possiamo trovare qui:

[DLL Hijacking] Windows 7 and more application Remote code Exuction => metasplooit

Vediamo ora come cercare applicazioni vulnerabili :D


Sempre nell’articolo sopra citato, ho mostrato come con metasploit è possibile sfruttare questa vulnerabilità, sfruttando webdav, anche da remoto.

L’exploit creato da HD moore, sviluppatore metaploit è molto semplice.
Il codice che interessa a noi è:

                if (request.uri =~ /\.(dll|dl|drv|cpl)$/i)
                        print_status("#{cli.peerhost}:#{cli.peerport} GET => DLL Payload")
                        return if ((p = regenerate_payload(cli)) == nil)
                        data = Msf::Util::EXE.to_win32pe_dll(framework, p.encoded)
                        send_response(cli, data, { 'Content-Type' => 'application/octet-stream' })
                        return
               end



Quando eseguiamo l’exploit metasploit, diventa un server.
Quando l’utente lancia l’applicazione, con estensione da noi definita, l’applicazione lanciata, se vulnerabile cercherà la dll nella path dove risiede il nostro file, qui entra in gioco metasploit con il codice sopra indicato, individua la chiamata e crea la falsa dll richiamata, in questo modo possiamo eseguire codice remoto sul pc vittima ;)

Ora vediamo tools per cercare le “chiamate vulnerabili di dll” :D

Il primo, naturalmente è quello di HD moore :D

DLLHijackAuditKit v2:
Il suo funzionamento è molto semplice, in più è scritto con un linguaggio di scripting, quindi non è difficile da capire :D
La guida, dal sito ufficiale:

1. Download the DLLHijackAuditKit v2 and extract it into a local directory on the system you would like to test.

2. Browse to this directory and launch 01_StartAudit.bat as an Administrator. The Administrator bit is important, as it will allow the script to kill background services that are spawned by the handlers and prevent UAC popups.

3. After the audit script completes (15-30 minutes), switch to the Process Monitor window, and access File->Save from the menu. Save the resulting log in CSV format to the local directory with the name “Logfile.CSV”.

4. Launch 02_Analyze.bat as an Administrator. This will scan through the CSV log, build test cases for each potential vulnerability, try them, and automatically create a proof-of-concept within the Exploits directory should they succeed.

5. Identify the affected vendor for each generated proof-of-concept and ask them nicely to fix their application. Send them the calc.exe-launching PoC if necessary.

N.B. A me DLLHijackAuditKit non ha scaricato in automatico procmon.exe, se aveste gli stessi problemi, non dovete far altro che scaricarlo manualmente e copiarlo dentro la directory di DLLHijackAuditKit.

Dal mio punto di vista si potrebbe migliorare l’individuazione delle estensioni, magari sfruttando il registro di sistema e prendendo solo quelle usate, evitando l’inutile “Apri con”.
A meno che non facciamo delle modifiche allo script e gli facciamo individuare solo le estensioni da noi definite ;)

DOWNLOAD DLLHijackAuditKit

Un altro tool per individuare queste falle mi è stato segnalato da s3rg3770.

Si chiama DynamicLoadLibraryTest, scritto da Gianni Amato.
Il suo funzionamento è molto semplice e a differenza di quello di hd moore, controlla solo una estensione ;)

Automated Application Discovery for DLL loading vulnerability
Step 1: click on start.bat

Step 2: Copy and execute application from \DynamicLoadLibraryTest\[filename.ext]

Step 3: press any key on shell when application is loaded and waiting for the result :)

Have fun!
Gianni ‘guelfoweb’ Amato

Credit: H.D. Moore

Anche quest tool, sfrutta procmon per risalire alla chiamata della dll,però a differenza di quello di hd moore, individua quando fallisce l’apertura della dll nella stessa directory, ciò significa che il programma è vulnerabile perchè cerca le dll nella stessa directory in cui viene eseguito.
Un output esempio:
———- TMP\MYRESULT

"13:24:29.4679195","firefox.exe","1372","QueryOpen","C:\Documents and Settings\clshack\Desktop\DynamicLoadLibraryTest\dwmapi.dll","NAME NOT FOUND",""

DOWNLOAD DynamicLoadLibraryTest

Infine troviamo ancora in fase beta questo utile programma, molto più veloce rispetto agli altri, purtroppo però testa i file con una estensione generale “.audit” e perciò da qualche errore e non sempre individua i programmi vulnerabili, ma nelle prossime versioni, il creatore, fixerà questo “bug” che gli ho già segnalato.

DOWNLOAD DLL hijackauditor

Buon divertimento :D

Related posts:

  1. [DLL Hijacking] Windows 7 and more application Remote code Exuction => metasplooit
  2. [scanner-web]Websecurify: Ottima alternativa ad acunetix :)
  3. RIPS:source code analyser for vulnerabilities in PHP
  4. Grendel-Scan:web application security testing tool
  5. HTTP session hijacking with Ettercap and Hamster

This entry was posted on Thursday, September 2nd, 2010 at 9:28 am and is filed under Hacking, Software, Windows. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Tagged with:
  • Pingback: news sul mondo della programmazione » Tools for search DLL Hijacking Vulnerabilities

  • Pingback: Tools for search DLL Hijacking Vulnerabilities

  • Shadowy Viper

    Mi sorge un dubbio… ho provato il prog di HD Moore per le prime ext, perchè è davvero lungo, e ho notato che viene creata una cartella per ogni programma in TestCases e nessuna in Exploit (parlo di wireshark.exe e tcpdump.exe)
    Quindi non sono vulnerabili?
    Grazie e complimenti per l’ottimo articolo… essendo giovane anche conoscendo C/C++, Java (NetBeans), VB .NET (Visual Studio 2010), Python, Perl, AutoHotKey, HTML, Batch, Bash e così-così l’Assembly (MASM), l’XML, l’SQL, il PASCAL, c’è molto da imparare :D

    P.S. Sei ancora in attesa di qualche co-scrittore, o ce la fai da solo? Il mio interesse è divulgare ciò che conosco, non prendermi alcun merito :)

  • clshack

    @Shadowy Viper:

    Il programma di HD more, purtroppo non cerca* tute le estensioni, perciò potrebbe averti saltato wireshark, comunque ti consiglio il tool di giovanni amato, molto più veloce e completo sicuro visto che utilizza un tool esterno per individuare la chiamata di sistema al load delle dll :D

    Oppure, testi con metasploit, con l’exploit… che è un altro metodo infallibile:

    if (request.uri =~ /\.(dll|dl|drv|cpl)$/i)
    print_status("#{cli.peerhost}:#{cli.peerport} GET => DLL Payload")
    return if ((p = regenerate_payload(cli)) == nil)
    data = Msf::Util::EXE.to_win32pe_dll(framework, p.encoded)
    send_response(cli, data, { 'Content-Type' => 'application/octet-stream' })
    return
    end

    Comunque grazie e ti ho inviato una mail :D