
Tragbares Linux-Tool zur RAM-Erfassung für Forensik und Incident Response, das LiME-kompatible Images mit optionaler Komprimierung und Remote-Streaming erfasst.
Ein portables Tool zur Erfassung von flüchtigem Speicher für Linux.
AVML ist ein Tool zur Erfassung von flüchtigem Speicher im X86_64-Userland, geschrieben in Rust, das für die Bereitstellung als statische Binärdatei vorgesehen ist. AVML kann zum Erfassen von Speicher verwendet werden, ohne die Ziel-OS-Distribution oder den Kernel a priori zu kennen. Es ist keine Kompilierung auf dem Zielsystem oder Fingerprinting erforderlich.
Wenn die Speicherquelle nicht in der Befehlszeile angegeben wird, iteriert AVML über die Speicherquellen, um eine funktionierende Quelle zu finden.
HINWEIS: Wenn das Kernel-Feature kernel_lockdown aktiviert ist, kann AVML keinen Speicher erfassen.
avml ist eine einzelne Binärdatei mit Unterbefehlen. Jeder Unterbefehl wird durch ein Cargo-Feature abgesichert, sodass ein minimaler Build nur die benötigte Funktionalität enthält:
Erstellen Sie eine minimale Nur-Acquire-Binärdatei mit cargo build --release --no-default-features.
Auf dem Zielhost:
avml acquire --compress output.lime.compressed
Auf dem Zielhost:
avml acquire output.lime
Generieren Sie auf einem sicheren Host mit az cli-Anmeldedaten eine SAS-URL.
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})
Führen Sie auf dem Zielhost avml mit dem generierten SAS-Token aus.
avml acquire --sas-url ${SAS_URL} --delete output.lime
Für Hosts, bei denen das vorherige Schreiben des Snapshots in eine lokale Datei unerwünscht ist (schreibgeschütztes Root-Dateisystem, begrenzter Speicherplatz, Bedenken bezüglich der forensischen Beweiskette), verwenden Sie den Unterbefehl stream. Dieser wählt die Speicherquelle einmal zu Beginn aus (gleiche Präferenzreihenfolge wie der /dev/stdout-Pfad von acquire — /proc/kcore, dann /dev/crash, dann /dev/mem; --source zum Überschreiben) und schreibt die Bytes sequenziell an das gewählte Ziel. Die Quelle kann mitten im Stream nicht gewechselt werden, daher gibt es keinen automatischen Fallback auf eine andere Quelle.
--sas-block-size (MiB) fungiert als Untergrenze; wenn das abgeleitete Minimum größer ist, gewinnt der größere Wert.--sas-block-concurrency begrenzt die Anzahl der gleichzeitig laufenden stage_block-Aufrufe. Der RAM-Spitzenwert beträgt ungefähr (concurrency + 1) * block_size.Auf dem Collector-Host:
nc -l 9000 > snapshot.lime
Auf dem Zielhost:
avml stream tcp collector.example.com:9000
avml verbindet sich einmalig und schreibt den Snapshot sequenziell. Wenn die Verbindung mitten im Stream abbricht, wird der Snapshot abgebrochen; ein Fortsetzen ist nicht möglich. Kein TLS — kombinieren Sie es bei Bedarf mit einem SSH-Tunnel oder stunnel für Vertraulichkeit und Integrität.
avml upload put ./output.lime ${URL} # HTTP PUT
avml upload blob ./output.lime ${SAS_URL} # Azure Block Blob
Führen Sie auf einem sicheren Host mit az cli-Anmeldedaten Folgendes aus:
config.json mit den folgenden Informationen:{
"commandToExecute": "./avml acquire --compress --sas-url <GENERATED_SAS_URL> --delete",
"fileUris": ["https://FULL.URL.TO.AVML.example.com/avml"]
}
config.json ausaz vm extension set -g RESOURCE_GROUP --vm-name VM_NAME --publisher Microsoft.Azure.Extensions -n customScript --settings config.json
Generieren Sie auf einem sicheren Host eine S3-vorsignierte URL oder eine GCP-vorsignierte URL.
Führen Sie auf dem Zielhost avml mit der generierten vorsignierten URL aus.
avml acquire --url ${URL} --delete output.lime
avml convert ./compressed.lime ./uncompressed.lime
avml convert --source-format lime --format lime_compressed ./uncompressed.lime ./compressed.lime
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)
Führen Sie avml <COMMAND> --help aus, um die Optionen der jeweiligen Befehle anzuzeigen.
# 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
Die Testskripte erstellen, verwenden und bereinigen eine Reihe von Ressourcengruppen, virtuellen Maschinen und ein Speicherkonto.
az login bei Ihrem Azure-Abonnement anDieses Projekt begrüßt Beiträge und Vorschläge. Für die meisten Beiträge müssen Sie einer Contributor License Agreement (CLA) zustimmen, die bestätigt, dass Sie das Recht haben, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren, und dies auch tatsächlich tun. Weitere Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request einreichen, ermittelt ein CLA-Bot automatisch, ob Sie eine CLA bereitstellen müssen, und kennzeichnet den PR entsprechend (z. B. Label, Kommentar). Befolgen Sie einfach die Anweisungen des Bots. Sie müssen dies nur einmal für alle Repositories tun, die unsere CLA verwenden.
Dieses Projekt hat den Microsoft Open Source Code of Conduct übernommen. Weitere Informationen finden Sie in den FAQ zum Code of Conduct oder wenden Sie sich bei weiteren Fragen oder Kommentaren an [email protected].
Sicherheitsprobleme und Fehler sollten vertraulich per E-Mail an das Microsoft Security Response Center (MSRC) unter [email protected] gemeldet werden. Sie sollten innerhalb von 24 Stunden eine Antwort erhalten. Falls Sie aus irgendeinem Grund keine erhalten, setzen Sie sich bitte per E-Mail erneut mit uns in Verbindung, um sicherzustellen, dass wir Ihre ursprüngliche Nachricht erhalten haben. Weitere Informationen, einschließlich des MSRC-PGP-Schlüssels, finden Sie im Security TechCenter.
| Unterbefehl | Feature | Default | Funktion |
|---|
acquire | (immer) | yes | Speicher-Snapshot in einer lokalen Datei sichern (optional anschließender Upload). |
convert | convert | yes | Zwischen AVML-, LiME- und Raw-Formaten konvertieren. |
upload | upload | yes | Eine lokale Datei per HTTP PUT oder an Azure Block Blob hochladen. |
stream | stream | yes | Snapshot direkt zu einem Ziel streamen, ohne lokale Datei. |