
Linux और Android उपकरणों से वाष्पशील मेमोरी अधिग्रहण के लिए कर्नेल मॉड्यूल, जो डिस्क पर या नेटवर्क पर फोरेंसिक रूप से सुदृढ़ कैप्चर उत्पन्न करता है।
एक लोडेबल कर्नेल मॉड्यूल (LKM) जो लिनक्स और लिनक्स-आधारित डिवाइसों, जैसे कि एंड्रॉइड, से वाष्पशील मेमोरी अधिग्रहण के लिए है। LiME अधिग्रहण के दौरान उपयोगकर्ता-स्पेस और कर्नेल-स्पेस प्रक्रियाओं के साथ अपनी अंतःक्रिया को न्यूनतम करता है, जिससे लिनक्स मेमोरी अधिग्रहण के लिए डिज़ाइन किए गए अन्य टूल्स की तुलना में अधिक फोरेंसिक रूप से सुदृढ़ मेमोरी कैप्चर उत्पन्न होते हैं।
LiME के उपयोग और आंतरिक विवरण पर विस्तृत दस्तावेज़ प्रोजेक्ट की "docs" निर्देशिका में पाए जा सकते हैं।
LiME मॉड्यूल को लोड करने के लिए insmod कमांड का उपयोग करता है, और इसके निष्पादन के लिए आवश्यक तर्क पास करता है।
insmod ./lime-$(uname -r).ko "path=<outfile | tcp:<port>>
format=<raw|padded|lime>
[digest=<digest>]
[dio=<0|1>]
[compress=<0|1>]
[localhostonly=<0|1>]
[timeout=<ms>]"
path (required):
outfile ~ name of file to write to on local system
tcp:port ~ network port to communicate over
format (required):
padded ~ pads all non-System RAM ranges with 0s,
starting from physical address 0
lime ~ each range prepended with fixed-size header
containing address space info
raw ~ concatenates all System RAM ranges
(warning: original position of dumped memory
is likely to be lost therefore making analysis
in most forensics tools impossible. This format
is not recommended except for advanced users)
digest (optional):
Hash the RAM and provide a sidecar file with the sum.
The sidecar filename is the output path with the
digest algorithm appended (e.g., ram.lime.sha256).
Supports kernel version 2.6.11 and up. See below for
available digest options.
Note: enabling digest increases code complexity during
acquisition and will overwrite additional memory. Only
use when integrity verification is required.
compress (optional):
1 ~ compress output with zlib
0 ~ do not compress (default)
Only available when CONFIG_ZLIB_DEFLATE is enabled
in the kernel.
Note: enabling compression allocates additional kernel
memory (~24 KB) and increases code complexity during
acquisition, disturbing more of the target system's
memory. Only use when the speed or size benefit is
required.
dio (optional):
1 ~ attempt to enable Direct IO
0 ~ do not attempt Direct IO (default)
localhostonly (optional):
1 ~ restricts tcp to only listen on localhost
0 ~ binds on all interfaces (default)
timeout (optional):
1000 ~ max milliseconds tolerated to read/write a
page (default, 1 second). If a page exceeds the timeout,
the rest of that memory range is skipped.
0 ~ disable the timeout so the slow region will
be acquired.
This feature is only available on kernels >= 2.6.35.
फ़ाइल में मेमोरी अधिग्रहण करना:
insmod ./lime-$(uname -r).ko "path=/tmp/ram.lime format=lime"
नेटवर्क पर मेमोरी अधिग्रहण करना:
insmod ./lime-$(uname -r).ko "path=tcp:4444 format=lime"
फिर प्राप्त करने वाली मशीन पर:
nc <target-ip> 4444 > ram.lime
LiME लोड करने और नेटवर्क पर मेमोरी अधिग्रहण करने के लिए adb का उपयोग करें:
adb push lime.ko /sdcard/lime.ko
adb forward tcp:4444 tcp:4444
adb shell
su
insmod /sdcard/lime.ko "path=tcp:4444 format=lime"
होस्ट मशीन पर, netcat का उपयोग करके मेमोरी डंप कैप्चर करें:
nc localhost 4444 > ram.lime
SD कार्ड में अधिग्रहण करना:
insmod /sdcard/lime.ko "path=/sdcard/ram.lime format=lime"
LiME कर्नेल की क्रिप्टो लाइब्रेरी में उपलब्ध किसी भी डाइजेस्ट एल्गोरिथम का समर्थन करता है। TCP पर डंप करते समय डाइजेस्ट फ़ाइल एकत्र करने के लिए 2 अलग-अलग कनेक्शनों की आवश्यकता होती है।
nc localhost 4444 > ram.lime
nc localhost 4444 > ram.sha1
त्वरित संदर्भ के लिए, समर्थित डाइजेस्टों की सूची यहाँ दी गई है।
crc32c
md4, md5
sha1, sha224, sha256, sha384, sha512
wp512, wp384, wp256
rmd128, rmd160, rmd256, rmd320
sha3-224, sha3-256, sha3-384, sha3-512
संपीड़न मेमोरी कैप्चर अधिग्रहण के लिए आवश्यक समय को काफी हद तक कम कर सकता है। यह न्यूनतम मेमोरी ओवरहेड (~24 KB) के साथ असम्पीडित स्थानांतरण की तुलना में 4x की गति-वृद्धि प्राप्त कर सकता है।
RAM फ़ाइल zlib प्रारूप में होगी, जो gzip या zip प्रारूपों से भिन्न है। इसका कारण यह है कि कर्नेल में एम्बेडेड deflate लाइब्रेरी उनका समर्थन नहीं करती है।
इसे डीकंप्रेस करने के लिए आप pigz या किसी भी zlib-संगत लाइब्रेरी का उपयोग कर सकते हैं।
nc localhost 4444 | unpigz > ram.lime
ध्यान दें कि केवल RAM फ़ाइल संपीड़ित होती है। डाइजेस्ट फ़ाइल संपीड़ित नहीं होती है, और हैश मान असम्पीडित डेटा से मेल खाएगा।
LiME को पहली बार Shmoocon 2012 में Joe Sylve द्वारा प्रस्तुत किया गया था।
यूट्यूब~ एंड्रॉइड माइंड रीडिंग: मेमोरी अधिग्रहण और विश्लेषण DMD और Volatility के साथ