
Corso pratico di sviluppo di malware per Windows: API hashing, DLL sideloading, esecuzione di shellcode, manipolazione di PE, hosting di payload e laboratori di distribuzione.
Desktop development with C++ durante l'installazioneInoltre (facoltativo), per un'esperienza di reversing più completa, configura i simboli:
setx _NT_SYMBOL_PATH c:\Symbols;srv*c:\Symbols*https://msdl.microsoft.com/download/symbols
mkdir \symbols
Apri PMD.sln in Visual Studio.
Seleziona il progetto setup e assicurati di poter:
a. Compilare il progetto
b. Visualizzare l'istruzione di debug print in DebugView++.
Aggiorna i flag del compilatore e del linker del progetto template per manipolare le voci IAT e altre proprietà PE.
a. Prendi familiarità con la risoluzione dinamica delle API e la documentazione MSDN.
b. Ci sono altre proprietà che risaltano? Se esegui Strings.exe sul binario, qualche stringa risalta?
c. Riesci a rimuoverle/aggiornarle?
Usa qualsiasi strumento tu preferisca per completare l'esercizio (ad es. dumpbin/PE Bear). È stato fornito un wrapper per pefile in scripts\props.py (assicurati di installare i requisiti).
Scarica alcuni campioni di malware da VXUG
a. Quali sono le principali differenze tra eseguibili benigni e malevoli?
b. Quali sono le principali differenze tra il nostro binario e gli eseguibili benigni?
L'algoritmo di hashing delle API attualmente utilizzato è fnv1a.
solution e chiama MessageBoxA utilizzando il framework di API hashing.Scarica Cisco Webex (https://www.webex.com/downloads.html)
Trova CiscoCollabHost e osserva quali DLL vengono caricate
Apri CiscoCollabHost in Ghidra e identifica diversi modi per ottenere l'esecuzione di codice tramite sideloading
Modifica il dll_template per effettuare il sideload del tuo binario target. Verifica di poter vedere la stringa di debug in DebugView++.
Aggiorna LastWriteTime e CreationTime di dll_template.dll per farli corrispondere alla DLL target.
Compila ed esegui il progetto utility.
a. Inoltre, valuta la possibilità di eseguirlo sul tuo sistema host.
Copia la DLL identificata nella directory x64/{Debug,Release} e aggiorna il codice del loader.
Aggiorna execute_sc per eseguire il tuo shellcode con una funzione diversa utilizzando il framework di API hashing.
Crea un account presso un provider di cloud storage (ad es. AWS/CloudFlare)
Impacchetta il tuo payload e caricalo
a. Inoltre, indaga su modi per limitare/controllare l'accesso al download
Effettua uno snapshot della tua VM
Ripristina la VM di base ed esegui l'intero scenario di "delivery"
.github\workflows\build.yml per eseguire ulteriori pre/post elaborazioni come preferisci per risparmiare tempo. Ecco alcune idee:
props.py e valida/includi l'outputLastWriteTime e CreationTime per corrispondere a un target