Come fa il malware a caricare una DLL dalla memoria

2

Sto cercando di capire come il malware carica una dll dalla memoria, come da una sezione di risorse. Sto vedendo i codici su google ma non riesco a trovare una sorta di pseudocodice come in inglese semplice che possa spiegare il processo. Comprendo il formato di file c ++ e pe per la maggior parte, posso solo dare un senso a come una DLL può essere caricata in memoria.

    
posta jammy47 30.11.2016 - 20:59
fonte

2 risposte

1

Prima di tutto, il malware normalmente non carica le proprie DLL in memoria. Penso che tu confondi questo con il malware che inserisce il codice eseguibile in un altro processo (OpenProcess (), WriteProcessMemory ()) e che avvia un nuovo thread in quel processo (CreateRemoteThread ()) che esegue quel codice. Questo non ha nulla a che fare con il caricamento di una DLL in memoria, che è molto più difficile del semplice esecuzione del codice. Perché il malware dovrebbe contenere più DLL caricate in memoria? È molto più facile scrivere UN eseguibile malware invece di più DLL.

Torna alla tua domanda: se vuoi ingannare Windows per caricare una DLL dalla memoria, questo è qualcosa tra programmazione e cracking molto avanzati.

Uno svantaggio è che non puoi usare i debugger se qualcosa va storto nella tua DLL.

È possibile utilizzare ad esempio questo codice: link per caricare una DLL in memoria. Non l'ho testato perché lo svantaggio è che è necessario utilizzare funzioni speciali per accedere a quella DLL in memoria in seguito. Ad esempio, per leggere una risorsa stringa da quella DLL non è possibile utilizzare la normale API di Windows. È necessario utilizzare una funzione dalla stessa libreria.

Alcuni problemi che si verificano sono elencati in maggiore dettaglio qui: link L'autore dice che con il suo codice la sua DLL non ha un handle di HINSTANCE. Questo è un grosso svantaggio.

    
risposta data 23.02.2018 - 04:03
fonte
0

Non sono troppo sicuro di quello che chiedi, per quanto ne so io, l'unico modo per lavorare con il sistema operativo è che le sue API siano documentate e non documentate.

Ecco quello che considero il modo più semplice per capire i diversi attacchi di iniezione e copre i metodi che stavi chiedendo

Dieci tecniche di iniezione del processo

I numeri 2 e 3 dell'elenco descrivono i processi che consentono l'inserimento del codice senza che la DLL sul disco funzionasse entrambi con la struttura PE.

L'iniezione riflessiva crea in memoria la struttura PE e quindi esegue il mapping del codice binario. Con la struttura PE e il binario mappato correttamente questo è ora essenzialmente in memoria e non sono state chiamate API di libreria per caricarlo dal disco.

Process hollowing rimuoverà le sezioni di un thread sospeso in DLL dll, quindi eseguirà il mapping del codice dannoso e reindicherà il punto di esecuzione prima che il thread sia impostato per l'esecuzione. Ho provato a far funzionare questo progetto come un progetto C # ma non ho mai funzionato correttamente con il rebase: (

    
risposta data 27.02.2018 - 02:47
fonte

Leggi altre domande sui tag