
Kit pseudo-malizioso per la generazione di artefatti di memoria in modalità utente, progettato per imitare facilmente le tracce lasciate da malware reali su un sistema operativo Windows infetto.
__ .__ _____ __ __ .__ __
_____ / |_||/ __ ____/ | | | _||/ |
_ \ __ \ \ \ \ \ _/ _\ \ | |/ / \
/ __ | | /| | | || | / __ \ _| | | <| || |
( /| || |||__| (___ /___ >| ||_ __||__|
/ / / /
Kit Generatore di Artefatti di Memoria Maligni v1.0 | Forrest Orr | 2020
OBBLIGATORIO
--alloc-type {dll-map-hollow|dll-load-hollow|txf-dll-map-hollow|private|mapped}
OPZIONALE
--payload-file --payload-type {PE|shellcode} --exec-method {create-thread|call|ep-jmp-hook} --stealth {wipe-headers|mirror-headers|rw-rx|dotnet|moat|peb-img-base} --moat-size --hollow-dll-file
--payload-file Il file contenente lo shellcode o il PE da utilizzare come impianto. Se non viene fornito dall'utente, il tipo di regione specificato verrà comunque allocato ma non impiantato con alcun codice. --payload-type Il tipo di codice memorizzato nel file payload specificato. Deve essere uno shellcode o un PE MZ. Questo parametro è obbligatorio se viene specificato un file payload. --alloc-type Il modo in cui deve essere creata la memoria dinamica utilizzata per contenere l'impianto payload.
dll-map-hollow Una vista di una sezione immagine generata da una DLL in System32.
dll-load-hollow Una DLL caricata tramite LoadLibrary da System32.
txf-dll-map-hollow Una vista di una sezione immagine generata da una DLL transazionale
da System32 che è già stata impiantata con il payload.
private Una regione di memoria privata allocata tramite NtAllocateVirtualMemory.
mapped Una vista mappata di una sezione derivata dal Page File di Windows.
--exec-method Il metodo con cui chiamare il codice payload dopo che è stato impiantato nella regione di memoria specificata.
create-thread Esegue il payload utilizzando l'API CreateThread.
call Esegue il payload utilizzando una normale istruzione assembly CALL.
ep-jmp-hook Esegue il payload tramite un JMP inline dal punto di ingresso
dell'EXE del processo.
--stealth Offuscamenti opzionali alla regione allocata.
wipe-headers Sovrascrive l'intestazione PE del payload in memoria con 0. Valido
solo per payload PE.
mirror-headers Preserva le intestazioni PE originali di una DLL svuotata dopo che
viene impiantata con un file PE payload. Valido solo per un payload
PE che utilizza un tipo di regione immagine.
rw-rx Invece di allocare direttamente la regione dell'impianto con
permessi +RWX, allocarla come +RW e impostarla a +RX successivamente.
Valido solo per tipi di regione privata e mappata.
dotnet Seleziona solo DLL con intestazione .NET durante le operazioni di
svuotamento. Valido solo per tipi di regione immagine.
moat Pre-riempie la regione allocata che precede lo shellcode con 0.
Per impostazione predefinita viene utilizzato 1 MB di riempimento.
Non valido per impianti shellcode con DLL svuotate. Non può essere
utilizzato con il tipo di allocazione TxF.
peb-img-base Aggiorna il campo base immagine del PEB per puntare alla regione
appena allocata.
--moat-size La dimensione del moat di dati da generare prima dell'impianto payload. Necessario solo se è specificata l'opzione di furtività moat. Dimensione predefinita di 1 MB. --hollow-dll-file Specifica manualmente il percorso di una DLL da utilizzare insieme al tipo di allocazione per svuotamento. Quando non viene specificato, una DLL appropriata verrà selezionata casualmente dalla directory di Windows o da una delle sue sottocartelle.
ESEMPI
Crea un impianto shellcode a 32 bit all'interno della sezione .text di un'immagine DLL mappata a 32 bit ed eseguilo utilizzando l'istruzione CALL:
ArtifactsKit32.exe --payload-type shellcode --payload-file Payloads\MsgboxShellcode32.bin --alloc-type dll-map-hollow
Crea un impianto shellcode a 64 bit all'interno di una regione di memoria del file di paging mappata +RWX a un offset di +1 MB dalla sua base di allocazione ed eseguilo utilizzando l'API KERNEL32.DLL!CreateThread:
ArtifactsKit64.exe --payload-type shellcode --payload-file Payloads\MsgboxShellcode64.bin --alloc-type mapped --stealth moat
Crea un impianto PE a 32 bit sopra la memoria immagine mappata di un'immagine DLL a 32 bit preservando le sue intestazioni originali, bootstrap ed esegui il payload PE IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint con un CALL.
ArtifactsKit32.exe --payload-type pe --payload-file Payloads\TestExe32.exe --alloc-type dll-map-hollow --stealth mirror-headers
Crea un impianto PE a 64 bit all'interno della memoria immagine mappata di una sezione TxF modificata di una DLL a 64 bit, ovvero svuotamento DLL fantasma, ed esegui il suo IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint con un hook JMP dall'IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint del processo padre dell'artefatto:
ArtifactsKit64.exe --payload-type pe --payload-file Payloads\TestExe64.exe --alloc-type txf-dll-map-hollow --exec-method ep-jmp-hook