
लाइव ट्रायेज, मेमोरी अधिग्रहण (LiME), डिस्क इमेजिंग, YARA स्कैनिंग, और HTML रिपोर्ट निर्माण के साथ स्वचालित लिनक्स घटना प्रतिक्रिया स्क्रिप्ट।
लिनक्स घटना प्रतिक्रिया

TuxResponse लिनक्स सिस्टम के लिए bash में लिखा गया एक घटना प्रतिक्रिया स्क्रिप्ट है। यह लिनक्स सिस्टम पर घटना प्रतिक्रिया गतिविधियों को स्वचालित कर सकता है और आपको परिणामों से समझौता किए बिना सिस्टम का तेजी से ट्राएज करने में सक्षम बनाता है। आमतौर पर कॉर्पोरेट सिस्टम में किसी न किसी प्रकार की निगरानी और नियंत्रण होता है, लेकिन शैडो आईटी और कॉर्प में तैनात गैर-मानक इमेज के कारण अपवाद होते हैं। परीक्षण और त्रुटि के साथ 10 कमांड टाइप करने में जो लगता है, वह एक बटन दबाने में किया जा सकता है।
परीक्षण किया गया:
प्राथमिक उद्देश्य:
पैकेज में बाहरी उपकरण:
INSTALL LiME
function init_lime(){
if [ -f /usr/bin/yum ]; then
yum -y install make kernel-headers kernel-devel gcc
elif [ -f /usr/bin/apt-get ]; then
apt-add-repository universe
apt-get -y install make linux-headers-$(uname -r) gcc
fi
rm -f /tmp/v1.8.1.zip
wget -P/tmp https://github.com/504ensicsLabs/LiME/archive/v1.8.1.zip
unzip /tmp/v1.8.1.zip
rm -f /tmp/v1.8.1.zip
pushd LiME-1.8.1/src
make
mv lime-*.ko /tmp/lime.ko
popd
rm -rf LiME-1.8.1
}
घटनाओं का जवाब देते समय, यदि आपको मैन्युअल रूप से सभी कमांड टाइप करके LiME स्थापित करना पड़े, तो इससे आपकी गति काफी धीमी हो जाएगी।
1)सिस्टम जानकारी, IP, तिथि, समय, स्थानीय समय क्षेत्र, अंतिम बूट - 'hostnamectl; who -b; uname -a; uptime; ifconfig; date; last reboot'
1)माउंटेड फ़ाइल सिस्टम की जाँच करें -'df -h'
2)निष्पादन योग्य फ़ाइलों का हैश (MD5) - 'find /usr/bin -type f -exec file "{}" \; | grep -i "elf" | cut -f1 -d: | xargs -I "{}" -n 1 md5sum {}'
3)संशोधित फ़ाइलें - 'modified_files_period_select' (tuxresponse.sh में एक फ़ंक्शन कॉल करना)
4)सभी छिपी निर्देशिकाओं की सूची बनाएं - 'find / -type d -name "\.*"'
5)बिना उपयोगकर्ता/समूह नाम वाली फ़ाइलें/निर्देशिकाएँ - 'find / \( -nouser -o -nogroup \) -exec ls -l {} \; 2>/dev/null'
6)पैकेजों से बदली गई फ़ाइलें -'packaged_files_changed' (tuxresponse.sh में एक फ़ंक्शन कॉल करना)
1) रूटकिट की जाँच करें - 'chkrootkit' चलाता है
2) Yara स्कैन - tuxresponse.sh में एक फ़ंक्शन कॉल करना 'yara_select' (मास्टर रिपॉजिटरी में उपलब्ध सभी YARA linux नियमों के साथ सिस्टम को स्कैन करता है)
3) EXIFTool - tuxresponse.sh में एक फ़ंक्शन कॉल करना 'exiftool_select' (EXIFTool स्थापित करता है)
1) चल रही प्रक्रियाओं की सूची बनाएं - 'ps -axu'
2) हटाए गए बाइनरी जो अभी भी चल रहे हैं - 'ls -alR /proc/*/exe 2> /dev/null | grep deleted'
3) सक्रिय नेटवर्क कनेक्शन (TCP, UDP) - 'ss -tunap | sed "s/[ \t]\+/|/g"'
4) PID के आधार पर प्रक्रिया डंप करें - 'dump_process_select' (tuxresponse.sh में एक फ़ंक्शन कॉल करना)
1) डंप करने के लिए PID दर्ज करें: **(यह निष्पादित कमांड है - gcore -a -o "${DUMP_FILE}" ${DUMP_PID} )**
5) /tmp, /dev से चल रही प्रक्रिया - 'ls -alR /proc/*/cwd 2> /dev/null | grep -E "tmp|dev"'
1) सभी सक्रिय नेटवर्क कनेक्शन/रॉ सॉकेट की सूची बनाएं - 'netstat -nalp; netstat -plant'
1) सिस्टम से जुड़े सभी उपयोगकर्ताओं की सूची बनाएं - 'w'
2) पासवर्ड वाले उपयोगकर्ता प्राप्त करें - 'getent passwd'
1) bash इतिहास फ़ाइल की जाँच करें - 'cat ~/.bash_history | nl'
1) सभी क्रॉन जॉब्स की सूची बनाएं - 'list_all_crontab' (tuxresponse.sh में एक फ़ंक्शन कॉल करना)
2) सभी स्टार्टअप/बूट प्रोग्रामों की सूची बनाएं - 'list_all_onstartup' (tuxresponse.sh में एक फ़ंक्शन कॉल करना)
1) उपयोगकर्ताओं का .bash_history डंप करें - 'cat_all_bash_history' (tuxresponse.sh में एक फ़ंक्शन कॉल करना)
2) अंदर बाइनरी वाले लॉग खोजें - 'grep [[:cntrl:]] /var/log/*.log'
यह विकल्प आपको दूरस्थ सिस्टम से कनेक्ट करने, सभी स्क्रिप्ट और उपकरण कॉपी करने और सिस्टम का विश्लेषण करने में सक्षम बनाता है।
यह विकल्प आपको स्रोत से LiME संकलित करने और सिस्टम की RAM मेमोरी डंप करने में सक्षम बनाता है। यह सबसे आसान तरीका है क्योंकि दूसरा तरीका सभी प्रमुख कर्नेल संस्करणों के लिए स्रोत से संकलित करना और LKM सम्मिलित करना होगा।
That option enables you to do a full disk image of the target system using well-known tool - dd. The function is taking source and destination as parameters and inserts them in the following command 'dd if=${IMAGE_IN} | pv | dd of='${IMAGE_OUT}' bs=4K conv=noerror,sync'. If you're investigating remote system, the script is going to copy itself there. Then if the parameter ${TARGET_HOST} is set, then the script is going to download the image to analyst system using this command >> "ssh -p${TARGET_PORT} ${TARGET_USER}@${TARGET_HOST} 'dd if=${IMAGE_IN} bs=4K conv=noerror,sync' | pv | dd of='${IMAGE_OUT}'" (im heavily using pv to make sure progress is tracked)
आप जो कुछ भी करते हैं वह टेक्स्ट फ़ाइलों में दर्ज किया जाता है, इसलिए आउटपुट पर वापस जाना और देखना आसान है। इसकी खूबसूरती यह है कि आप इसे अपने पसंदीदा लॉग विश्लेषण उपकरणों में अपलोड कर सकते हैं और बाद में इसका अर्थ निकाल सकते हैं। इसके अलावा, आप इस फ़ंक्शन का उपयोग HTML रिपोर्ट उत्पन्न करने और कमांड-जनरेटेड आउटपुट को अधिक मानव-पठनीय रूप में देखने के लिए कर सकते हैं।
स्क्रिप्ट के सही ढंग से काम करने के लिए आवश्यक बाइनरी स्थापित करें।
1) निर्भरताएँ
2) Yara और नियम
3) ExifTool
4) आरंभ जाँच
5) chckrootkit
6) LiME
tuxresponse.sh पर सख्ती और फोरेंसिक-साउंडनेस पास:
YYYYMMDDTHHMMSSZ) का उपयोग करते हैं, रक्षात्मक टाइमस्टैम्पिंग के लिए।evidence/manifest.txt में हैश (SHA-256) किया जाता है; डिस्क इमेज को एक सहोदर .sha256 फ़ाइल मिलती है।modified_files_period_select अब लक्ष्य फ़ाइलसिस्टम पर टाइमस्टैम्प फ़ाइल को touch नहीं करता है (जो find चलने से पहले /tmp के atime/mtime को दूषित करता था)। यह अब find / -xdev -newermt "1 $opt ago" का उपयोग करता है।_create_disk_image में eval ${DD_CMD} हटा दिया गया; dd/ssh पाइपलाइन सीधे चलती है, और स्रोत डिवाइस को उपयोग से पहले के विरुद्ध मान्य किया जाता है।नोट: मेनू-संचालित मोड अभी भी
.cmds.sh,.menu_en.sh, औरforensics.shपर निर्भर करता है, जो इस रिपॉजिटरी में मौजूद नहीं हैं। कमांड/मेनू कैटलॉग का पुनर्निर्माण एक अलग प्रयास के रूप में ट्रैक किया गया है।
^/dev/[a-zA-Z0-9]+$dump_process_select मान्य करता है कि PID संख्यात्मक है और gcore को कॉल करने से पहले /proc/<pid> मौजूद है।exec_CMD अब eval का उपयोग नहीं करता है; आंतरिक कैटलॉग से शेल-पाइपलाइन कमांड bash -c के माध्यम से भेजे जाते हैं।set -euo pipefail के तहत चलती है।DISTO → DISTRO टाइपो ठीक किया गया (पहले डिस्ट्रो को चुपचाप गलत नाम देता था)।apt-get install netstat → net-tools।evidence/*.txt को ग्लोब के माध्यम से पुनरावृत्त करता है (अब ls पार्सिंग नहीं) और मेनिफेस्ट को छोड़ देता है; आउटपुट वेरिएबल उद्धृत किए गए हैं।VERSION='1.1' स्थिरांक जोड़ा गया; बैनर संस्करण प्रिंट करता है।shellcheck -S error साफ है।