
Kit generador de artefactos de memoria en modo usuario pseudo-maliciosos diseñado para imitar fácilmente las huellas que deja el malware real en un sistema Windows infectado.
__ .__ _____ __ __ .__ __
_____ / |_||/ __ ____/ | | | _||/ |
_ \ __ \ \ \ \ \ _/ _\ \ | |/ / \
/ __ | | /| | | || | / __ \ _| | | <| || |
( /| || |||__| (___ /___ >| ||_ __||__|
/ / / /
Kit Generador de Artefactos de Memoria Maliciosa v1.0 | Forrest Orr | 2020
REQUERIDO
--alloc-type {dll-map-hollow|dll-load-hollow|txf-dll-map-hollow|private|mapped}
OPCIONAL
--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 <tamaño> --hollow-dll-file
--payload-file El archivo que contiene el shellcode o PE a utilizar como implante. Si el usuario no lo proporciona, el tipo de región especificado se asignará igualmente, pero no se implantará ningún código. --payload-type El tipo de código almacenado en el archivo de carga útil especificado. Debe ser un shellcode o un PE MZ. Este parámetro es obligatorio si se especifica un archivo de carga útil. --alloc-type La forma en que debe crearse la memoria dinámica utilizada para alojar el implante de carga útil.
dll-map-hollow Una vista de una sección de imagen generada a partir de una DLL
en System32.
dll-load-hollow Una DLL cargada mediante LoadLibrary desde System32.
txf-dll-map-hollow Una vista de una sección de imagen generada a partir de una DLL
transaccional de System32 que ya ha sido implantada con la carga
útil.
private Una región de memoria privada asignada mediante
NtAllocateVirtualMemory.
mapped Una vista asignada de una sección derivada del Archivo de
Paginación de Windows.
--exec-method El método con el que llamar al código de la carga útil después de haber sido implantado en la región de memoria especificada.
create-thread Ejecutar la carga útil utilizando la API CreateThread.
call Ejecutar la carga útil utilizando una instrucción CALL de
ensamblador normal.
ep-jmp-hook Ejecutar la carga útil mediante un JMP en línea desde el punto
de entrada del EXE del proceso.
--stealth Ofuscaciones opcionales a la región asignada.
wipe-headers Sobrescribe el encabezado PE de la carga útil en memoria con
ceros. Solo válido para cargas útiles PE.
mirror-headers Conserva los encabezados PE originales de una DLL vaciada
después de ser implantada con un archivo PE de carga útil. Solo
válido para una carga útil PE que utilice un tipo de región de
imagen.
rw-rx En lugar de asignar directamente la región del implante con
permisos +RWX, asignarla como +RW y luego establecerla como +RX.
Solo válido para tipos de región privada y asignada.
dotnet Seleccionar únicamente DLL con un encabezado .NET durante las
operaciones de vaciado. Solo válido para tipos de región de
imagen.
moat Rellenar previamente la región asignada que precede al
shellcode con ceros. Por defecto se utiliza 1 MB de relleno. No
válido para implantes de shellcode con DLL vaciadas. No puede
usarse con el tipo de asignación TxF.
peb-img-base Actualiza el campo de base de imagen del PEB para que apunte a
la región recién asignada.
--moat-size El tamaño del foso de datos a generar antes del implante de carga útil. Solo necesario si se especifica la opción de sigilo moat. Tamaño predeterminado de 1 MB. --hollow-dll-file Especificar manualmente la ruta de una DLL a utilizar junto con el tipo de asignación por vaciado. Cuando no se especifica, se seleccionará aleatoriamente una DLL adecuada del directorio de Windows o de una de sus subcarpetas.
EJEMPLOS
Crear un implante de shellcode de 32 bits dentro de la sección .text de una imagen DLL de 32 bits asignada y ejecutarlo usando la instrucción CALL:
ArtifactsKit32.exe --payload-type shellcode --payload-file Payloads\MsgboxShellcode32.bin --alloc-type dll-map-hollow
Crear un implante de shellcode de 64 bits dentro de una región de memoria de archivo de paginación asignada +RWX a un desplazamiento de +1MB desde su base de asignación y ejecutarlo usando la API KERNEL32.DLL!CreateThread:
ArtifactsKit64.exe --payload-type shellcode --payload-file Payloads\MsgboxShellcode64.bin --alloc-type mapped --stealth moat
Crear un implante PE de 32 bits sobre la memoria de imagen asignada de una DLL de 32 bits conservando sus encabezados originales, iniciar y ejecutar el punto de entrada IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint de la carga útil PE con una instrucción CALL:
ArtifactsKit32.exe --payload-type pe --payload-file Payloads\TestExe32.exe --alloc-type dll-map-hollow --stealth mirror-headers
Crear un implante PE de 64 bits dentro de la memoria de imagen asignada de una sección TxF modificada de una DLL de 64 bits (es decir, vaciado fantasma de DLL) y ejecutar su punto de entrada IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint con un hook JMP desde el punto de entrada IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint del proceso padre del artefacto:
ArtifactsKit64.exe --payload-type pe --payload-file Payloads\TestExe64.exe --alloc-type txf-dll-map-hollow --exec-method ep-jmp-hook