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
avml — Herramienta portátil de adquisición de RAM de Linux para análisis forense y respuesta a incidentes, que captura imágenes compatibles con LiME con compresión opcional y transmisión remota. | Kitploit
Herramientas/GitHubGitHub/microsoft/avml
Forensia de MemoriaAnálisis ForenseForensia DigitalRespuesta a Incidentes
GitHubmicrosoft/avml

avml

Herramienta portátil de adquisición de RAM de Linux para análisis forense y respuesta a incidentes, que captura imágenes compatibles con LiME con compresión opcional y transmisión remota.

Ver Repositorio
1.1k96hace 4 díasRevisado 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 →
Compartir

AVML (Adquisición de memoria volátil para Linux)

Resumen

Una herramienta portátil de adquisición de memoria volátil para Linux.

AVML es una herramienta de adquisición de memoria volátil en el espacio de usuario (userland) para X86_64, escrita en Rust, pensada para desplegarse como un binario estático. AVML se puede utilizar para adquirir memoria sin conocer de antemano la distribución del sistema operativo objetivo ni el kernel. No se necesita compilación en el objetivo ni identificación del sistema (fingerprinting).

Características

  • Guardar las imágenes capturadas en ubicaciones externas mediante Azure Blob Store o HTTP PUT
  • Las subidas a Azure Blob Storage reintentan fallos transitorios mediante la política de retroceso exponencial predeterminada del SDK de Azure (8 intentos, con un máximo de un minuto transcurrido en total).
  • Compresión opcional a nivel de página usando Snappy.
  • Utiliza el formato de salida de LiME (cuando no se usa compresión).

Fuentes de memoria

  • /dev/crash
  • /proc/kcore
  • /dev/mem

Si no se especifica la fuente de memoria en la línea de comandos, AVML recorrerá las fuentes de memoria para encontrar una fuente funcional.

NOTA: Si la característica del kernel kernel_lockdown está habilitada, AVML no podrá adquirir memoria.

Distribuciones probadas

  • Ubuntu: 12.04, 14.04, 16.04, 18.04, 18.10, 19.04, 19.10, 20.04, 21.04, 22.04
  • Centos: 6.5, 6.6, 6.7, 6.8, 6.9, 6.10, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.9
  • RHEL: 6.7, 6.8, 6.9, 7.0, 7.2, 7.3, 7.4, 7.5, 7.7, 8.5, 9.0
  • Debian: 8, 9, 10, 11, 12
  • Oracle Linux: 6.8, 6.9, 6.10, 7.3, 7.4, 7.5, 7.6, 7.9, 8.5, 9.0
  • CBL-Mariner: 1.0, 2.0

Subcomandos

avml es un único binario con subcomandos. Cada subcomando está controlado por una feature de Cargo, de modo que una compilación mínima solo incluye la funcionalidad que necesitas:

Compila un binario mínimo solo de adquisición con cargo build --release --no-default-features.

Primeros pasos

Captura de una imagen de memoria comprimida

En el host de destino:

root@kitploit:~
avml acquire --compress output.lime.compressed

Captura de una imagen de memoria sin comprimir

En el host de destino:

root@kitploit:~
avml acquire output.lime

Captura de una imagen de memoria y subida a Azure Blob Store

En un host seguro con credenciales de az cli, genera una URL SAS.

root@kitploit:~
EXPIRY=$(date -d '1 day' '+%Y-%m-%dT%H:%MZ')
SAS_URL=$(az storage blob generate-sas --account-name ACCOUNT --container CONTAINER test.lime --full-uri --permissions c --output tsv --expiry ${EXPIRY})

En el host de destino, ejecuta avml con el token SAS generado.

root@kitploit:~
avml acquire --sas-url ${SAS_URL} --delete output.lime

Transmisión de una imagen de memoria sin escribir en el disco local

Para hosts donde escribir primero la captura en un archivo local no es deseable (raíz de solo lectura, disco limitado, problemas de cadena de custodia forense), usa el subcomando stream. Este elige la fuente de memoria una vez al inicio (el mismo orden de preferencia que la ruta /dev/stdout de acquire: primero /proc/kcore, luego /dev/crash, después /dev/mem; pasa --source para anularlo) y escribe los bytes secuencialmente en el destino elegido. La fuente no se puede cambiar a mitad de la transmisión, por lo que no hay respaldo automático de fuente.

Para Azure Block Blob Storage

root@kitploit:~
avml stream blob ${SAS_URL}
  • El tamaño de bloque se deriva automáticamente para que la captura quepa dentro del límite de 50,000 bloques por blob de Azure. --sas-block-size (MiB) actúa como un mínimo; si el mínimo derivado es mayor, gana el valor mayor.
  • --sas-block-concurrency limita el número de llamadas stage_block en curso. El pico de RAM es aproximadamente (concurrency + 1) * block_size.
  • Si la captura falla a mitad de la subida, los bloques preparados se abandonan sin confirmarse; Azure los descarta automáticamente según su política estándar.

Para un listener TCP remoto

En el host recolector:

root@kitploit:~
nc -l 9000 > snapshot.lime

En el host de destino:

root@kitploit:~
avml stream tcp collector.example.com:9000

avml se conecta una vez y escribe la captura secuencialmente. Si la conexión se cae a mitad de la transmisión, la captura se aborta; no hay reanudación. No hay TLS: combínalo con un túnel SSH o stunnel para confidencialidad e integridad si es necesario.

Subida de una captura previamente realizada

root@kitploit:~
avml upload put  ./output.lime ${URL}              # HTTP PUT
avml upload blob ./output.lime ${SAS_URL}          # Azure Block Blob

Captura de una imagen de memoria de una VM de Azure mediante extensiones de VM

En un host seguro con credenciales de az cli, haz lo siguiente:

  1. Genera una URL SAS (ver arriba)
  2. Crea config.json con la siguiente información:
root@kitploit:~
{
    "commandToExecute": "./avml acquire --compress --sas-url <GENERATED_SAS_URL> --delete",
    "fileUris": ["https://FULL.URL.TO.AVML.example.com/avml"]
}
  1. Ejecuta la extensión customScript con el config.json especificado
root@kitploit:~
az vm extension set -g RESOURCE_GROUP --vm-name VM_NAME --publisher Microsoft.Azure.Extensions -n customScript --settings config.json

Para subir a AWS S3 o GCP Cloud Storage

En un host seguro, genera una URL pre-firmada de S3 o una URL pre-firmada de GCP.

En el host de destino, ejecuta avml con la URL pre-firmada generada.

root@kitploit:~
avml acquire --url ${URL} --delete output.lime

Para descomprimir una imagen comprimida con AVML

root@kitploit:~
avml convert ./compressed.lime ./uncompressed.lime

Para comprimir una imagen LiME sin comprimir

root@kitploit:~
avml convert --source-format lime --format lime_compressed ./uncompressed.lime ./compressed.lime

Uso

root@kitploit:~
A portable volatile memory acquisition tool for Linux

Usage: avml <COMMAND>

Commands:
  acquire  Acquire a memory snapshot to a local file (and optionally upload it)
  convert  Convert between AVML and LiME snapshot formats and a raw memory image
  upload   Upload an already-acquired snapshot file to remote storage
  stream   Stream a memory snapshot directly to remote storage, without writing it to a local file
  help     Print this message or the help of the given subcommand(s)

Ejecuta avml <COMMAND> --help para ver las opciones de cada comando.

Compilación en Ubuntu

root@kitploit:~
# Install MUSL
sudo apt-get install musl-dev musl-tools musl

# Install Rust via rustup
curl https://sh.rustup.rs -sSf | sh -s -- -y

# Add the MUSL target for Rust
rustup target add x86_64-unknown-linux-musl

# Build
cargo build --release --target x86_64-unknown-linux-musl

# Build without upload functionality
cargo build --release --target x86_64-unknown-linux-musl --no-default-features

Pruebas en Azure

Los scripts de prueba crearán, usarán y limpiarán varios grupos de recursos, máquinas virtuales y una cuenta de almacenamiento.

  1. Instala az cli
  2. Inicia sesión en tu suscripción de Azure usando: az login
  3. Compila avml (ver arriba)
  4. ./eng/test-on-azure.sh

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que aceptes un Contrato de Licencia de Colaborador (CLA) que declara que tienes el derecho de otorgarnos los derechos para usar tu contribución, y de hecho lo haces. Para más detalles, visita https://cla.microsoft.com.

Cuando envías una solicitud de extracción (pull request), un bot de CLA determinará automáticamente si necesitas proporcionar un CLA y decorará el PR adecuadamente (por ejemplo, con etiquetas o comentarios). Simplemente sigue las instrucciones del bot. Solo tendrás que hacerlo una vez en todos los repositorios que usen nuestro CLA.

Este proyecto ha adoptado el Código de Conducta de Código Abierto de Microsoft. Para obtener más información, consulta las Preguntas frecuentes del Código de Conducta o contacta a [email protected] si tienes preguntas o comentarios adicionales.

Reporte de problemas de seguridad

Los problemas de seguridad y errores deben informarse de forma privada, por correo electrónico, al Microsoft Security Response Center (MSRC) en [email protected]. Deberías recibir una respuesta dentro de 24 horas. Si por alguna razón no la recibes, envía un correo de seguimiento para asegurarte de que hayamos recibido tu mensaje original. Más información, incluida la clave PGP del MSRC, se puede encontrar en el Security TechCenter.

Descargar herramienta
SubcomandoFeaturePredeterminadoQué hace
acquire(siempre)síCaptura la memoria en un archivo local (subida opcional después).
convertconvertsíConvierte entre formatos AVML / LiME / raw.
uploaduploadsíSube un archivo local mediante HTTP PUT o a Azure Block Blob.
streamstreamsíTransmite una captura directamente a un destino, sin archivo local.