LoadLibrary, un progetto per caricare le DLL in Linux come se fossero codice nativo

Carica-libreria

JT Ormandy un ricercatore di sicurezza di Google, lo ha reso noto pochi giorni fa lo sviluppo del progetto LoadLibraryche è destinato a caricare le librerie DLL di Windows da utilizzare nelle applicazioni Linux. Il progetto prevede una libreria cross-layer con la quale è possibile caricare una DLL in formato PE / COFF e richiamare le funzioni in essa definite.

LoadLibrary assume la funzione di caricare la libreria in memoria e importare caratteri esistenti, fornendo all'applicazione Linux un'API in stile dlopen. È possibile eseguire il debug del codice utilizzando gdb, ASAN e Valgrind. È possibile ottimizzare il codice eseguibile in fase di esecuzione allegando hook e applicando patch (patch di runtime). Sono consentite eccezioni indesiderate per C ++.

Il progetto LoadLibrary non destinato a sostituire i progetti in corso che fanno un lavoro simile, come Wine. LoadLibrary mira a consentire il caricamento e l'accesso alle librerie DLL di Windows poiché saranno codice Linux nativo, non tentando di eseguire Windows su Linux e altri programmi simili, ma semplicemente caricando le librerie.

L'obiettivo del progetto è organizzare test di fuzzing distribuito scalabili ed efficienti file DLL in un ambiente basato su Linux.

Su Windows, il fuzzing e il test di copertura non consentono prestazioni adeguate e spesso richiedono l'avvio di un'istanza virtualizzata separata di Windows, soprattutto quando si tratta di analizzare prodotti sofisticati, come il software antivirus, che coprono il lavoro nel kernel e nello spazio utente.

L'intenzione di continuare lo sviluppo di questo progetto è di consentire la diffusione scalabile ed efficiente di librerie Windows autonome su Linux.

  • Invio e rilascio di eccezioni C ++.
  • Caricamento di simboli IDA aggiuntivi.
  • Debug con gdb (inclusi i simboli), breakpoint, stack trace, ecc.
  • Runtime agganciato e patchato.
  • Supporto per ASAN e Valgrind per rilevare piccoli errori di danneggiamento della memoria.
  • Se è necessario aggiungere il supporto per qualsiasi importazione esterna, la scrittura di stub è generalmente rapida e semplice.

Con l'aiuto di LoadLibrary, Ricercatori di Google sono alla ricerca di vulnerabilità nei codec video, scanner antivirus, librerie di decompressione dati, decoder di immagini, ecc.

“Lo streaming distribuito e scalabile in Windows può essere impegnativo e inefficiente, questo è particolarmente vero per i prodotti per la sicurezza degli endpoint, che utilizzano componenti interconnessi complessi che coprono il core e lo spazio utente.

Ciò richiede generalmente la rotazione di un intero ambiente Windows virtualizzato per la trasmissione. questo è un problema meno grave su Linux, e ho scoperto che spesso è possibile trasferire componenti dai prodotti antivirus di Windows a Linux, permettendomi di eseguire il codice che sto testando in contenitori minimi con un sovraccarico minimo ed espandere facilmente i test.

Ad esempio, utilizzando LoadLibrary, è stato possibile portare l'antivirus di Windows Defender per funzionare su Linux. Lo studio di mpengine.dll, che costituisce la base di Windows Defender, ci ha permesso di analizzare un gran numero di driver complicati di vari formati, emulatori FS e interpreti di linguaggio che potenzialmente forniscono vettori per possibili attacchi.

LoadLibrary è stato utilizzato anche per identificare una vulnerabilità remota nel pacchetto antivirus Avast.

Durante lo studio della DLL di questo antivirus, è emerso che il processo di scansione privilegiata della chiave include un interprete JavaScript completo utilizzato per emulare l'esecuzione di codice JavaScript di terze parti.

Questo processo non è isolato nell'ambiente sandbox, non reimposta i privilegi e analizza i dati FS esterni non verificati e il traffico di rete intercettato.

Poiché qualsiasi vulnerabilità in questo processo complicato e insicuro potrebbe portare alla compromissione remota dell'intero sistema, è stata sviluppata una speciale shell avscript sulla base di LoadLibrary per analizzare le vulnerabilità nello scanner antivirus Avast in un ambiente basato su Linux.

Il caricatore PE / COFF si basa sul codice ndiswrapper. Il codice del progetto è distribuito sotto la licenza GPLv2. Il codice è consultabile nel seguente link 


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   tirolinas suddetto

    Tutti a cagare dll è stato detto, non dimenticare la carta igienica