Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 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 Incidenti
GitHubmicrosoft/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
1.1k964 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

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:

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:

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

Acquisire un'immagine di memoria non compressa

Sull'host di destinazione:

root@kitploit:~
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.

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

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

root@kitploit:~
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

root@kitploit:~
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:

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

Sull'host di destinazione:

root@kitploit:~
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

root@kitploit:~
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:
root@kitploit:~
{
    "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
root@kitploit:~
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.

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

Per decomprimere un'immagine compressa da AVML

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

Per comprimere un'immagine LiME non compressa

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

Utilizzo

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)

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

Compilazione su 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

Test su Azure

Gli script di test creeranno, utilizzeranno e ripuliranno un certo numero di gruppi di risorse, macchine virtuali e un account di archiviazione.

  1. Installa az cli
  2. Accedi alla tua sottoscrizione Azure usando: az login
  3. Compila avml (vedi sopra)
  4. ./eng/test-on-azure.sh

Contributi

Questo progetto accoglie contributi e suggerimenti. La maggior parte dei contributi richiede di accettare un Contributor License Agreement (CLA) che dichiara che hai il diritto di concederci, e di fatto ci concedi, i diritti di utilizzo del tuo contributo. Per i dettagli, visita https://cla.microsoft.com.

Quando invii una pull request, un CLA-bot determinerà automaticamente se devi fornire un CLA e decorerà la PR di conseguenza (ad es. etichetta, commento). Segui semplicemente le istruzioni fornite dal bot. Dovrai farlo solo una volta in tutti i repository che utilizzano il nostro CLA.

Questo progetto ha adottato il Microsoft Open Source Code of Conduct. Per maggiori informazioni, consulta le FAQ del Code of Conduct oppure contatta [email protected] per qualsiasi domanda o commento aggiuntivo.

Segnalazione di Problemi di Sicurezza

I problemi di sicurezza e i bug devono essere segnalati privatamente, via email, al Microsoft Security Response Center (MSRC) all'indirizzo [email protected]. Dovresti ricevere una risposta entro 24 ore. Se per qualche motivo non la ricevi, contattaci via email per assicurarti che abbiamo ricevuto il tuo messaggio originale. Ulteriori informazioni, inclusa la chiave PGP del MSRC, sono disponibili nel Security TechCenter.

Scarica lo strumento
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.