Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
avml — Strumento portatile per l'acquisizione della RAM su Linux per attività forensi e risposta agli incidenti, in grado di catturare immagini compatibili con LiME con compressione opzionale e streaming remoto. | Kitploit
Strumenti/GitHubGitHub/microsoft/avml
Memory ForensicsInformatica ForenseDigital ForensicsRisposta agli IncidentiTop in Digital Forensics n.10Top in Informatica Forense n.10Top in Risposta agli Incidenti n.11Top in Memory Forensics n.3
1.1k95444 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
microsoft/avml

avml

Strumento portatile per l'acquisizione della RAM su Linux per attività forensi e risposta agli incidenti, in grado di catturare immagini compatibili con LiME con compressione opzionale e streaming remoto.

Vedi Repository

AVML (Acquire Volatile Memory for Linux)

Riepilogo

Uno strumento portabile per l'acquisizione della memoria volatile per Linux.

AVML è uno strumento di acquisizione della memoria volatile in userland per X86_64 scritto in Rust, pensato per essere distribuito come binario statico. AVML può essere utilizzato per acquisire la memoria senza conoscere a priori la distribuzione del sistema operativo target o il kernel. Non è necessaria alcuna compilazione sul target né alcun fingerprinting.

Funzionalità

  • Salva le immagini acquisite in posizioni esterne tramite Azure Blob Store o HTTP PUT
  • I caricamenti su Azure Blob Storage ritentano i guasti transitori tramite la policy di backoff esponenziale predefinita dell'SDK Azure (8 tentativi, con un limite massimo di un minuto complessivo).
  • Compressione opzionale a livello di pagina utilizzando Snappy.
  • Usa il formato di output LiME (quando non si utilizza la compressione).

Sorgenti di Memoria

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

Se la sorgente di memoria non viene specificata dalla riga di comando, AVML scorre le sorgenti di memoria per trovarne una funzionante.

NOTA: se la funzionalità del kernel kernel_lockdown è abilitata, AVML non sarà in grado di acquisire la memoria.

Distribuzioni Testate

  • 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

Sottocomandi

avml è un singolo binario con sottocomandi. Ogni sottocomando è controllato da una feature Cargo, così una build minimale include solo la funzionalità di cui hai bisogno:

SottocomandoFeaturePredefinitoDescrizione
acquire(always)sìCattura un'istantanea della memoria in un file locale (caricamento opzionale successivo).
convertconvertsìConverte tra i formati AVML / LiME / raw.
uploaduploadsìCarica un file locale tramite HTTP PUT o su Azure Block Blob.
streamstreamsìTrasmette un'istantanea direttamente a una destinazione, senza file locale.

Compila un binario minimale di sola acquisizione con cargo build --release --no-default-features.

Primi Passi

Acquisire un'immagine di memoria compressa

Sull'host di destinazione:

avml acquire --compress output.lime.compressed

Acquisire un'immagine di memoria non compressa

Sull'host di destinazione:

avml acquire output.lime

Acquisire un'immagine di memoria e caricarla su Azure Blob Store

Su un host sicuro con le credenziali di az cli, genera un URL SAS.

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})

Sull'host di destinazione, esegui avml con il token SAS generato.

avml acquire --sas-url ${SAS_URL} --delete output.lime

Trasmettere un'immagine di memoria senza scrivere su disco locale

Per gli host in cui scrivere prima l'istantanea in un file locale è indesiderabile (root in sola lettura, disco limitato, preoccupazioni forensi sulla catena di custodia), usa il sottocomando stream. Seleziona la sorgente di memoria una sola volta all'inizio (stesso ordine di preferenza del percorso /dev/stdout di acquire — /proc/kcore, poi /dev/crash, poi /dev/mem; passa --source per sovrascriverlo) e scrive i byte in sequenza verso la destinazione scelta. La sorgente non può essere cambiata a metà trasmissione, quindi non esiste un fallback automatico della sorgente.

Verso Azure Block Blob Storage

avml stream blob ${SAS_URL}
  • La dimensione del blocco viene derivata automaticamente in modo che l'istantanea rientri nel limite di 50.000 blocchi per blob di Azure. --sas-block-size (MiB) funge da limite minimo; se il minimo derivato è maggiore, prevale il valore più grande.
  • --sas-block-concurrency limita il numero di chiamate stage_block in corso. Il picco di RAM è approssimativamente (concurrency + 1) * block_size.
  • Se l'istantanea fallisce a metà caricamento, i blocchi preparati vengono abbandonati senza essere impegnati; Azure li scarta automaticamente secondo la sua policy standard.

Verso un listener TCP remoto

Sull'host di raccolta:

nc -l 9000 > snapshot.lime

Sull'host di destinazione:

avml stream tcp collector.example.com:9000

avml si connette una sola volta e scrive l'istantanea in sequenza. Se la connessione cade a metà trasmissione, l'istantanea viene interrotta; non è possibile riprenderla. Nessun TLS — abbinalo a un tunnel SSH o a stunnel per riservatezza e integrità, se necessario.

Caricare un'istantanea acquisita in precedenza

avml upload put  ./output.lime ${URL}              # HTTP PUT
avml upload blob ./output.lime ${SAS_URL}          # Azure Block Blob

Acquisire un'immagine di memoria di una VM Azure utilizzando le VM Extensions

Su un host sicuro con le credenziali di az cli, procedi come segue:

  1. Genera un URL SAS (vedi sopra)
  2. Crea un file config.json contenente le seguenti informazioni:
{
    "commandToExecute": "./avml acquire --compress --sas-url <GENERATED_SAS_URL> --delete",
    "fileUris": ["https://FULL.URL.TO.AVML.example.com/avml"]
}
  1. Esegui l'estensione customScript con il config.json specificato
az vm extension set -g RESOURCE_GROUP --vm-name VM_NAME --publisher Microsoft.Azure.Extensions -n customScript --settings config.json

Per caricare su AWS S3 o GCP Cloud Storage

Su un host sicuro, genera un URL pre-firmato S3 oppure genera un URL pre-firmato GCP.

Sull'host di destinazione, esegui avml con l'URL pre-firmato generato.

avml acquire --url ${URL} --delete output.lime

Per decomprimere un'immagine compressa da AVML

avml convert ./compressed.lime ./uncompressed.lime

Per comprimere un'immagine LiME non compressa

avml convert --source-format lime --format lime_compressed ./uncompressed.lime ./compressed.lime

Utilizzo

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)

Esegui avml <COMMAND> --help per le opzioni di ciascun comando.

Compilazione su Ubuntu

# 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

Test su Azure

Scarica lo strumento