Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
asminject — Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc.. | Kitploit
Herramientas/GitHubGitHub/bishopfox/asminject
ShellcodePost-ExploitationPenetration TestingPayload DevelopmentContainer Escape
GitHubbishopfox/asminject

asminject

Ver Repositorio
14815hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

Acerca de

Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc..

Compartir

asminject.py

asminject.py es un fork muy modificado del proyecto dlinject de David Buchanan. Inyecta cargas útiles (payloads) de código ensamblador arbitrario (o binarios precompilados) directamente en procesos Linux x86-64, x86 y ARM32 mediante el acceso a /proc/<pid>/mem en lugar de adjuntarse a través de ptrace. Resulta útil para manipular procesos de confianza, ciertos escenarios posteriores a la explotación, recuperar contenido de la memoria de los procesos y evadir algunos controles de seguridad. Puede inyectar en procesos contenerizados desde fuera del contenedor, siempre que tengas acceso root en el host.

También puedes leer más sobre asminject.py y sus orígenes en su página de herramientas de Bishop Fox, incluido un análisis detallado del trabajo que inspiró la herramienta.

En este documento:

  • Elevator pitches o TLDR
  • Orígenes
  • Ejemplos
  • ¿Y qué hay de las restricciones ptrace_scope de Yama?
  • Objetivos futuros

Documentación aparte, más detallada:

  • Cómo funciona asminject.py - una discusión arquitectónica de alto nivel con inmersiones profundas en algunos detalles técnicos, especialmente para lectores que no hayan trabajado antes con herramientas de inyección en memoria
  • Primeros pasos
  • Diferencias respecto a dlinject.py
  • Opciones especializadas
  • Solución de problemas
  • Historial de versiones

Elevator pitches o TLDR

  • "asminject.py es como dlinject, excepto que te permite inyectar cualquier carga útil que quieras en lugar de solo cargar una librería, y funciona en múltiples arquitecturas."
  • "asminject.py es vagamente como Frida, excepto que no se adjunta a través de la interfaz ptrace, por lo que los procesos no pueden bloquearlo aplicándose ptrace a sí mismos."

Orígenes

asminject.py fue escrito para dos escenarios principales en pruebas de penetración en entornos Linux:

  • Atacar los controles de seguridad a nivel de proceso y de contenedor desde la perspectiva de un atacante con acceso root al host
  • Evitar la detección después de explotar con éxito otro problema

Por ejemplo, considera una prueba de penetración en la que el evaluador ha obtenido acceso root a un servidor que aloja muchos contenedores. Uno de los contenedores procesa transferencias bancarias y tiene instalado en su interior un producto de seguridad de endpoint muy robusto. Cuando el evaluador intenta modificar los datos de la transferencia bancaria desde dentro del contenedor, el software de seguridad de endpoint detecta y bloquea el intento. asminject.py permite al evaluador inyectar código arbitrario directamente en la memoria del proceso del software bancario o incluso en el producto de seguridad de endpoint desde fuera del contenedor. Como una víctima del "genio maligno" de Descartes, el software de seguridad dentro del contenedor es impotente, porque existe en un entorno totalmente bajo el control del atacante.

El dlinject.py original fue diseñado específicamente para cargar librerías compartidas de Linux en un proceso existente. asminject.py hace todo lo que hacía el original y mucho más. Ejecuta código ensamblador arbitrario e incluye plantillas para una variedad de ataques. También ha sido rediseñado para ayudar a evitar la detección por parte de mecanismos de seguridad que se basan en actividades potencialmente sospechosas, como los eventos de carga de librerías.

Ejemplos

El directorio practice de este repositorio incluye código de bucle básico que muestra una marca de tiempo y la iteración del bucle en la consola, para que puedas practicar la inyección de varios tipos de código en un entorno controlado. Estos bucles de práctica se mencionan en los ejemplos restantes.

La sintaxis básica para invocar asminject.py es:

root@kitploit:~
# python3 ./asminject.py <target_process_id> <payload> \
  --arch [x86-64|x86|arm32] --relative-offsets-from-binaries --stop-method "slow" \
  --var <payload_variable_1_name> <payload_variable_1_value> \
  # ... \
  --var <payload_variable_n_name> <payload_variable_n_value>

En la mayoría de los casos, cualquiera de las cargas útiles utilizadas en los ejemplos se ejecutará en cualquiera de las arquitecturas compatibles.

  • Ejemplos básicos - cargas útiles simples que, por ejemplo, hacen que un proceso existente copie archivos por ti
  • Inyección de código Python
  • Inyección de código PHP
  • Inyección de código Ruby
  • Inyección de shellcode/stager
  • Inyección de librerías compartidas

¿Y qué hay de las restricciones ptrace_scope de Yama?

La mayoría de las distribuciones de Linux incluyen un módulo de seguridad del kernel llamado Yama que controla el acceso al uso de la capacidad ptrace contra otros procesos. Aunque asminject.py no se adjunta a la interfaz del depurador, aun así requiere permiso para usar la capacidad ptrace. Si recibes errores sobre esta capacidad, verifica el contenido de /proc/sys/kernel/yama/ptrace_scope. Si está establecido en 2, ejecuta el siguiente comando como root:

root@kitploit:~
echo 1 > /proc/sys/kernel/yama/ptrace_scope

Los valores de 3 o superiores no pueden desactivarse sin reiniciar. Sin embargo, si eres un administrador autorizado de un sistema Linux en el que alguien ha establecido accidentalmente /proc/sys/kernel/yama/ptrace_scope en 3, o estás realizando una prueba de penetración autorizada de un entorno donde se ha establecido ese valor, consulta el directorio ptrace_scope_kernel_module para ver una posible solución alternativa que no requiere reinicio.

Objetivos futuros

  • Añadir soporte para ARM64 (Aarch64).
  • Permitir que el shellcode se pase a través de stdin además del método actual de lectura desde un archivo.
  • Investigar el uso de Keystone para el ensamblado de shellcode en lugar de invocar el comando gcc a nivel de sistema operativo.
  • Para Python y otros intérpretes de scripts con API para pasar bytecode compilado para su ejecución (en lugar de la ejecución al estilo eval de código de script legible por humanos), proporcionar cargas útiles que aprovechen esta capacidad para lograr un sigilo aún mayor.
  • Si es factible, inyectar código Java en procesos Java mediante JNI.
  • Añadir opciones para hookear un método específico (o dirección, etc.) como alternativa a la técnica actual de "hookear el siguiente syscall" que se heredó de dlinject.py.
  • Proporcionar una forma de usar la herramienta para cuasi-depuración, p. ej., hookear una función y mostrar los argumentos que se le pasan cada vez que se llama.
    • Podría tener más sentido encontrar una forma de inyectar Frida usando asminject.py - se requiere más investigación.
  • Desarrollar cargas útiles interactivas, p. ej., en lugar de inyectar una línea concreta de código de script Python en un proceso Python, asminject.py podría solicitar al operador una línea de código para inyectar, inyectarla, devolver el resultado obtenido y luego solicitar al operador otra línea de código.
    • Esto también podría tener más sentido manejarlo con Frida, si Frida puede inyectarse en un proceso usando asminject.py de una manera que evite la necesidad de Frida de invocar temporalmente la interfaz del depurador.
  • Proporcionar una forma de interactuar con un proceso objetivo que se ejecute en una arquitectura de procesador que no coincida con aquella en la que se ejecuta . P. ej., interactuar con un dispositivo remoto usando hardware como un PCI leech, explotar casos límite extremos como dispositivos con accesible como root a través de un recurso compartido NFS, etc.
Descargar herramienta
asminject.py
/proc/mem
  • Añadir fragmentos de ofuscación más elaborados.