
पोर्टेबल Linux RAM अधिग्रहण उपकरण जो फोरेंसिक और घटना प्रतिक्रिया के लिए है, वैकल्पिक संपीड़न और रिमोट स्ट्रीमिंग के साथ LiME-संगत इमेज कैप्चर करता है।
लिनक्स के लिए एक पोर्टेबल अस्थिर मेमोरी अधिग्रहण उपकरण।
AVML एक X86_64 यूज़रलैंड अस्थिर मेमोरी अधिग्रहण उपकरण है जो Rust में लिखा गया है, और इसे एक स्टैटिक बाइनरी के रूप में तैनात करने का इरादा है। AVML का उपयोग लक्ष्य OS वितरण या कर्नेल को पहले से जाने बिना मेमोरी अधिग्रहण करने के लिए किया जा सकता है। लक्ष्य पर संकलन या फ़िंगरप्रिंटिंग की कोई आवश्यकता नहीं है।
यदि मेमोरी स्रोत कमांडलाइन पर निर्दिष्ट नहीं है, तो AVML एक कार्यशील स्रोत खोजने के लिए मेमोरी स्रोतों पर पुनरावृति करेगा।
नोट: यदि कर्नेल सुविधा kernel_lockdown सक्षम है, तो AVML मेमोरी अधिग्रहण करने में सक्षम नहीं होगा।
avml एक एकल बाइनरी है जिसमें उप-कमांड होते हैं। प्रत्येक उप-कमांड एक Cargo फीचर द्वारा नियंत्रित होता है, ताकि एक न्यूनतम बिल्ड में केवल वही क्षमता शामिल हो जिसकी आपको आवश्यकता है:
cargo build --release --no-default-features के साथ केवल acquire वाला न्यूनतम बाइनरी बनाएं।
लक्ष्य होस्ट पर:
avml acquire --compress output.lime.compressed
लक्ष्य होस्ट पर:
avml acquire output.lime
az cli क्रेडेंशियल वाले एक सुरक्षित होस्ट पर, एक 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})
लक्ष्य होस्ट पर, उत्पन्न SAS टोकन के साथ avml निष्पादित करें।
avml acquire --sas-url ${SAS_URL} --delete output.lime
उन होस्टों के लिए जहाँ स्नैपशॉट को पहले स्थानीय फ़ाइल में लिखना अवांछनीय है (रीड-ओनली रूट, सीमित डिस्क, फोरेंसिक अभिरक्षा-श्रृंखला संबंधी चिंताएँ), stream उप-कमांड का उपयोग करें। यह मेमोरी स्रोत को शुरुआत में ही एक बार चुनता है (acquire के /dev/stdout पथ के समान प्राथमिकता क्रम — /proc/kcore, फिर /dev/crash, फिर /dev/mem; ओवरराइड करने के लिए --source पास करें) और चुने गए गंतव्य पर बाइट्स को क्रमिक रूप से लिखता है। स्रोत को स्ट्रीम के बीच में बदला नहीं जा सकता, इसलिए कोई स्वचालित स्रोत फ़ॉलबैक नहीं है।
avml stream blob ${SAS_URL}
--sas-block-size (MiB) एक न्यूनतम सीमा के रूप में कार्य करता है; यदि प्राप्त न्यूनतम मान बड़ा है, तो बड़ा मान प्रभावी होता है।--sas-block-concurrency प्रगतिरत stage_block कॉल की संख्या को सीमित करता है। अधिकतम RAM लगभग (concurrency + 1) * block_size होती है।कलेक्टर होस्ट पर:
nc -l 9000 > snapshot.lime
लक्ष्य होस्ट पर:
avml stream tcp collector.example.com:9000
avml एक बार कनेक्ट होता है और स्नैपशॉट को क्रमिक रूप से लिखता है। यदि कनेक्शन स्ट्रीम के बीच में टूट जाता है, तो स्नैपशॉट निरस्त हो जाता है; कोई रिज़्यूम नहीं है। कोई TLS नहीं — आवश्यकता होने पर गोपनीयता और अखंडता के लिए SSH टनल या stunnel के साथ जोड़ें।
avml upload put ./output.lime ${URL} # HTTP PUT
avml upload blob ./output.lime ${SAS_URL} # Azure Block Blob
az cli क्रेडेंशियल वाले एक सुरक्षित होस्ट पर, निम्न कार्य करें:
config.json बनाएं:{
"commandToExecute": "./avml acquire --compress --sas-url <GENERATED_SAS_URL> --delete",
"fileUris": ["https://FULL.URL.TO.AVML.example.com/avml"]
}
config.json के साथ customScript एक्सटेंशन निष्पादित करेंaz vm extension set -g RESOURCE_GROUP --vm-name VM_NAME --publisher Microsoft.Azure.Extensions -n customScript --settings config.json
एक सुरक्षित होस्ट पर, एक S3 पूर्व-हस्ताक्षरित URL या एक GCP पूर्व-हस्ताक्षरित URL उत्पन्न करें।
लक्ष्य होस्ट पर, उत्पन्न पूर्व-हस्ताक्षरित URL के साथ avml निष्पादित करें।
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)
प्रति-कमांड विकल्पों के लिए avml <COMMAND> --help चलाएँ।
# 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
परीक्षण स्क्रिप्ट कई संसाधन समूहों, वर्चुअल मशीनों और एक स्टोरेज अकाउंट का निर्माण, उपयोग और सफ़ाई करेंगी।
az login का उपयोग करेंयह परियोजना योगदान और सुझावों का स्वागत करती है। अधिकांश योगदानों के लिए आपको एक कंट्रीब्यूटर लाइसेंस समझौते (CLA) से सहमत होना आवश्यक है, जिसमें यह घोषित किया जाता है कि आपके पास अपने योगदान का उपयोग करने के लिए हमें अधिकार देने का अधिकार है, और आप वास्तव में ऐसा करते हैं। विवरण के लिए, https://cla.microsoft.com देखें।
जब आप एक पुल रिक्वेस्ट सबमिट करते हैं, तो एक CLA-बॉट स्वचालित रूप से निर्धारित करेगा कि आपको CLA प्रदान करने की आवश्यकता है या नहीं और PR को उचित रूप से सजाएगा (जैसे, लेबल, टिप्पणी)। बस बॉट द्वारा दिए गए निर्देशों का पालन करें। हमारे CLA का उपयोग करने वाले सभी रिपॉजिटरी में आपको यह केवल एक बार करना होगा।
इस परियोजना ने Microsoft Open Source Code of Conduct को अपनाया है। अधिक जानकारी के लिए Code of Conduct FAQ देखें या किसी अतिरिक्त प्रश्न या टिप्पणी के लिए [email protected] से संपर्क करें।
सुरक्षा समस्याओं और बगों की रिपोर्ट निजी रूप से, ईमेल के माध्यम से, Microsoft Security Response Center (MSRC) को [email protected] पर की जानी चाहिए। आपको 24 घंटों के भीतर प्रतिक्रिया मिलनी चाहिए। यदि किसी कारण से आपको प्रतिक्रिया नहीं मिलती है, तो कृपया ईमेल के माध्यम से अनुवर्ती करें ताकि यह सुनिश्चित हो सके कि हमें आपका मूल संदेश प्राप्त हुआ है। MSRC PGP कुंजी सहित अधिक जानकारी, Security TechCenter में पाई जा सकती है।
| उप-कमांड | फीचर | डिफ़ॉल्ट | यह क्या करता है |
|---|
acquire | (हमेशा) | हाँ | मेमोरी का स्नैपशॉट किसी स्थानीय फ़ाइल में लें (बाद में वैकल्पिक अपलोड)। |
convert | convert | हाँ | AVML / LiME / raw प्रारूपों के बीच रूपांतरण करें। |
upload | upload | हाँ | HTTP PUT के माध्यम से या Azure Block Blob में स्थानीय फ़ाइल अपलोड करें। |
stream | stream | हाँ | स्नैपशॉट को सीधे गंतव्य पर स्ट्रीम करें, कोई स्थानीय फ़ाइल नहीं। |