
DLL sideloading/proxying con Nim!
Questa repo ti consente di generare facilmente DLL in Nim da usare per sideloading/proxy loading. Se non hai familiarità con il DLL sideloading, dai un'occhiata a questo articolo del blog.
Metti la DLL legittima (o più DLL) che vuoi usare come proxy nella directory build di questa repo, poi esegui make.
Verranno generate due .dll nella directory out:
Se il sideloading ha successo, dovresti vedere un messaggio popup e/o un file scritto sul desktop.
Per "armare" realmente il payload, puoi dare un'occhiata alla repo OffensiveNim per idee e snippet di codice pronti all'uso :).
dllproxy.nim è la DLL proxy che eseguirà il tuo payload e inoltrerà le chiamate di funzione legittime alla/e DLL originale/igen_def.py analizza la tabella degli export della DLL originale e genera un file di definizione del modulo (.def).Il file .def viene poi passato al linker in fase di compilazione per inoltrare le chiamate di funzione legittime.
NimMain dalla tabella degli export di una DLL NimVedi questo articolo Microsoft
Nota l'ultima riga di questo file .def:
EXPORTS
GetFileVersionInfoA=ZCnerzNI.GetFileVersionInfoA @1
GetFileVersionInfoByHandle=ZCnerzNI.GetFileVersionInfoByHandle @2
GetFileVersionInfoExA=ZCnerzNI.GetFileVersionInfoExA @3
GetFileVersionInfoExW=ZCnerzNI.GetFileVersionInfoExW @4
GetFileVersionInfoSizeA=ZCnerzNI.GetFileVersionInfoSizeA @5
GetFileVersionInfoSizeExA=ZCnerzNI.GetFileVersionInfoSizeExA @6
GetFileVersionInfoSizeExW=ZCnerzNI.GetFileVersionInfoSizeExW @7
GetFileVersionInfoSizeW=ZCnerzNI.GetFileVersionInfoSizeW @8
GetFileVersionInfoW=ZCnerzNI.GetFileVersionInfoW @9
VerFindFileA=ZCnerzNI.VerFindFileA @10
VerFindFileW=ZCnerzNI.VerFindFileW @11
VerInstallFileA=ZCnerzNI.VerInstallFileA @12
VerInstallFileW=ZCnerzNI.VerInstallFileW @13
VerLanguageNameA=ZCnerzNI.VerLanguageNameA @14
VerLanguageNameW=ZCnerzNI.VerLanguageNameW @15
VerQueryValueA=ZCnerzNI.VerQueryValueA @16
VerQueryValueW=ZCnerzNI.VerQueryValueW @17
NimMain @19 NONAME PRIVATE
Questa ultima riga sostanzialmente dice al linker di rimuovere il nome della funzione NimMain. Compilando la DLL e passando il file .def sopra al linker, si ottiene la seguente voce osservando la tabella degli export della .dll:
