
Kit de génération d'artefacts mémoire en mode utilisateur pseudo-malveillant conçu pour imiter facilement les traces laissées par un véritable malware sur un système Windows infecté.
__ .__ _____ __ __ .__ __
_____ / |_||/ __ ____/ | | | _||/ |
_ \ __ \ \ \ \ \ _/ _\ \ | |/ / \
/ __ | | /| | | || | / __ \ _| | | <| || |
( /| || |||__| (___ /___ >| ||_ __||__|
/ / / /
Kit de génération d'artefacts mémoire malveillants v1.0 | Forrest Orr | 2020
OBLIGATOIRE
--alloc-type {dll-map-hollow|dll-load-hollow|txf-dll-map-hollow|private|mapped}
FACULTATIF
--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 Le fichier contenant soit le shellcode, soit le PE à utiliser comme implant. Si ce paramètre n'est pas fourni par l'utilisateur, le type de région spécifié sera tout de même alloué mais sans qu'aucun code n'y soit implanté. --payload-type Le type de code stocké dans le fichier de payload spécifié. Doit être un shellcode ou un PE MZ. Ce paramètre est requis si un fichier de payload est spécifié. --alloc-type La manière dont la mémoire dynamique utilisée pour contenir l'implant du payload doit être créée.
dll-map-hollow Une vue d'une section d'image générée à partir d'une DLL dans System32.
dll-load-hollow Une DLL chargée via LoadLibrary depuis System32.
txf-dll-map-hollow Une vue d'une section d'image générée à partir d'une DLL transactionnée de
System32 qui a déjà été implantée avec le payload.
private Une région de mémoire privée allouée via NtAllocateVirtualMemory
mapped Une vue mappée d'une section dérivée du fichier de page Windows.
--exec-method La méthode avec laquelle appeler le code du payload après son implantation dans la région mémoire spécifiée.
create-thread Exécute le payload en utilisant l'API CreateThread.
call Exécute le payload en utilisant une instruction CALL standard en assembleur.
ep-jmp-hook Exécute le payload via un JMP inline depuis le point d'entrée de l'EXE
du processus.
--stealth Obfuscations optionnelles pour la région allouée.
wipe-headers Écrase l'en-tête PE du payload en mémoire avec des 0. Valable
uniquement pour les payloads PE.
mirror-headers Conserve les en-têtes PE originaux d'une DLL évidée après qu'elle soit
implantée avec un fichier PE payload. Valable uniquement pour un payload PE
utilisant un type de région image.
rw-rx Au lieu d'allouer directement la région de l'implant avec des permissions
+RWX, l'allouer avec +RW et la passer à +RX ensuite. Valable uniquement
pour les types de régions privée et mappée.
dotnet Ne sélectionner que les DLL avec un en-tête .NET lors des opérations
d'évidement. Valable uniquement pour les types de régions image.
moat Pré-pader la région allouée précédant le shellcode avec des 0.
Par défaut, 1 Mo de padding est utilisé. Non valable pour les implants
shellcode avec DLL évidée. Ne peut pas être utilisé avec le type d'allocation TxF.
peb-img-base Met à jour le champ de base d'image du PEB pour pointer vers la région
nouvellement allouée.
--moat-size La taille du moat de données à générer avant l'implant du payload. Requis uniquement si l'option de stealth moat est spécifiée. Taille par défaut de 1 Mo. --hollow-dll-file Spécifier manuellement le chemin d'une DLL à utiliser en conjonction avec le type d'allocation par évidement. Lorsque ce paramètre n'est pas spécifié, une DLL appropriée sera sélectionnée aléatoirement dans le répertoire Windows ou l'un de ses sous-dossiers.
EXEMPLES
Créer un implant shellcode 32 bits dans la section .text d'une image DLL 32 bits mappée et l'exécuter à l'aide de l'instruction CALL :
ArtifactsKit32.exe --payload-type shellcode --payload-file Payloads\MsgboxShellcode32.bin --alloc-type dll-map-hollow
Créer un implant shellcode 64 bits dans une région de mémoire de fichier de page mappée +RWX à un décalage de +1 Mo de sa base d'allocation et l'exécuter à l'aide de l'API KERNEL32.DLL!CreateThread :
ArtifactsKit64.exe --payload-type shellcode --payload-file Payloads\MsgboxShellcode64.bin --alloc-type mapped --stealth moat
Créer un implant PE 32 bits sur la mémoire d'image mappée d'une DLL 32 bits tout en conservant ses en-têtes originaux, amorcer et exécuter le payload PE IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint avec un CALL.
ArtifactsKit32.exe --payload-type pe --payload-file Payloads\TestExe32.exe --alloc-type dll-map-hollow --stealth mirror-headers
Créer un implant PE 64 bits dans la mémoire d'image mappée d'une section TxF modifiée d'une DLL 64 bits, c'est-à-dire un évidement de DLL fantôme, et exécuter son IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint avec un hook JMP depuis l'IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint du processus parent de l'artefact :
ArtifactsKit64.exe --payload-type pe --payload-file Payloads\TestExe64.exe --alloc-type txf-dll-map-hollow --exec-method ep-jmp-hook