
मल्टीप्लेटफ़ॉर्म लिनक्स सैंडबॉक्स
Detux एक सैंडबॉक्स है जिसे लिनक्स मैलवेयर के ट्रैफ़िक विश्लेषण और इस प्रकार IOC को कैप्चर करने के लिए विकसित किया गया है। QEMU हाइपरवाइज़र का उपयोग विभिन्न CPU आर्किटेक्चर के लिए लिनक्स (Debian) को एमुलेट करने के लिए किया जाता है।
निम्नलिखित CPUs वर्तमान में समर्थित हैं:
लाइव संस्करण का अभी उपयोग करें: http://detux.org
Detux की इस रिलीज़ में एक निर्दिष्ट CPU आर्किटेक्चर में लिनक्स बाइनरी/स्क्रिप्ट को निष्पादित करने के लिए स्क्रिप्ट शामिल है। यदि आप नहीं जानते कि प्लेटफ़ॉर्म क्या है, तो चिंता न करें, यह स्क्रिप्ट में है, Magic पैकेज स्वचालित तरीके से CPU आर्किटेक्चर चुनने में मदद करता है। x86 डिफ़ॉल्ट CPU संस्करण है, इसे कॉन्फ़िग फ़ाइल में किसी अन्य में बदला जा सकता है।
यह रिलीज़ विश्लेषण रिपोर्ट को DICT प्रारूप में देती है, जिसे आसानी से NOSQL डेटाबेस में डालने के लिए अनुकूलित किया जा सकता है।
एक उदाहरण स्क्रिप्ट प्रदान की गई है जो सैंडबॉक्स लाइब्रेरी के उपयोग को प्रदर्शित करती है।
- स्थैतिक विश्लेषण
-- बाइनरी से निकाले गए मूल स्ट्रिंग्स
-- readelf कमांड द्वारा उत्पन्न ELF जानकारी
-- बाइनरी का विश्लेषण करने और परिणाम को DICT में जोड़ने के लिए और अधिक तृतीय-पक्ष कमांड जोड़ने हेतु report.py को संशोधित किया जा सकता है।
- गतिशील विश्लेषण
-- कैप्चर किए गए pcap को DPKT के साथ पार्स करके IOC और पैकेट से पढ़ने योग्य जानकारी निकाली जाती है।
सिस्टम पैकेज
Python लाइब्रेरीज़ (वर्चुअल एन्वायरनमेंट का उपयोग करना बेहतर है)
कृपया Detux का उपयोग करने से पहले सुनिश्चित करें कि उपरोक्त आवश्यकताएँ पूरी हों। कुछ निर्भरताएँ OS से OS में भिन्न हो सकती हैं।
- NIC1: यह इंटरफ़ेस होस्ट तक पहुँचने के लिए है
- NIC2: QEMU सैंडबॉक्स VMs के साथ ब्रिज किया गया इंटरफ़ेस। सैंडबॉक्स किए गए VMs के लिए इंटरनेट एक्सेस को फ़िल्टर/अनुमति देने हेतु ट्रैफ़िक को WHONIX या REMNUX या कस्टम गेटवे पर रीडायरेक्ट किया जा सकता है।
aurel को विशेष धन्यवाद जिन्होंने सभी संभावित CPU आर्किटेक्चर के लिए पूर्व-निर्मित QEMU Debian VM इमेज अपलोड की हैं। VM इमेज यहाँ स्थित हैं: https://people.debian.org/~aurel32/qemu/, उसी लिंक में VM इमेज को आमंत्रित करने के लिए कमांड उदाहरण शामिल हैं।
आप निम्नलिखित स्क्रिप्ट का उपयोग करके VM इमेज को स्वचालित रूप से Detux के "qemu" फ़ोल्डर में डाउनलोड कर सकते हैं।
#x86
wget https://people.debian.org/~aurel32/qemu/i386/debian_wheezy_i386_standard.qcow2 -P qemu/x86/1/
#x86-64
wget https://people.debian.org/~aurel32/qemu/amd64/debian_wheezy_amd64_standard.qcow2 -P qemu/x86-64/1/
#arm
wget https://people.debian.org/~aurel32/qemu/armel/debian_wheezy_armel_standard.qcow2 -P qemu/arm/1/
wget https://people.debian.org/~aurel32/qemu/armel/initrd.img-3.2.0-4-versatile -P qemu/arm/1/
wget https://people.debian.org/~aurel32/qemu/armel/vmlinuz-3.2.0-4-versatile -P qemu/arm/1/
#mips
wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-3.2.0-4-4kc-malta -P qemu/mips/1/
wget https://people.debian.org/~aurel32/qemu/mips/debian_wheezy_mips_standard.qcow2 -P qemu/mips/1/
#mipsel
wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc-malta -P qemu/mipsel/1/
wget https://people.debian.org/~aurel32/qemu/mipsel/debian_wheezy_mipsel_standard.qcow2 -P qemu/mipsel/1/
Detux VMs के साथ संचार करने के लिए SSH का उपयोग करता है, इसलिए VMs में नेटवर्किंग क्षमता होने के लिए वर्तमान में इसकी आवश्यकता है। यह मानते हुए कि सूचीबद्ध बाइनरी एक ही पथ में हैं, आप /etc/sudoers में निम्नलिखित पंक्तियाँ जोड़ सकते हैं (केवल तभी जब आप एक गैर-रूट उपयोगकर्ता हों):
Cmnd_Alias QEMU_CMD = /usr/bin/qemu-*, /sbin/ip, /sbin/ifconfig, /sbin/brctl
<आपका detux उपयोगकर्ता नाम यहाँ> ALL = (ALL) NOPASSWD: QEMU_CMD
यदि बाइनरी आपके लिए भिन्न हैं तो पथ बदलें।
/etc/qemu-ifup में निम्नलिखित कॉन्फ़िग जोड़ें, यदि पहले से कोई है तो मूल का बैकअप लें:
#! /bin/sh
# Script to bring a network (tap) device for qemu up.
# The idea is to add the tap device to the same bridge
# as we have default routing to.
# in order to be able to find brctl
PATH=$PATH:/sbin:/usr/sbin
ip=$(which ip)
ifconfig=$(which ifconfig)
echo "Starting" $1
if [ -n "$ip" ]; then
ip link set "$1" up
else
brctl=$(which brctl)
if [ ! "$ip" -o ! "$brctl" ]; then
echo "W: $0: not doing any bridge processing: neither ip nor brctl utility not found" >&2
exit 0
fi
ifconfig "$1" 0.0.0.0 up
fi
switch=$(ip route ls | \
awk '/^default / {
for(i=0;i<NF;i++) { if ($i == "dev") { print $(i+1); next; } }
}'
)
if [ -d /sys/class/net/br0/bridge/. ]; then
if [ -n "$ip" ]; then
ip link set "$1" master br0
else
brctl addif br0 "$1"
fi
exit # exit with status of the previous command
fi
echo "W: $0: no bridge for guest interface found" >&2
यह मानते हुए कि eth0 वह इंटरफ़ेस है जिसके साथ आप अपने VMs को ब्रिज करना चाहते हैं, आप eth0 के लिए कॉन्फ़िग हटा सकते हैं और /etc/network/interfaces में निम्नलिखित कॉन्फ़िग का उपयोग कर सकते हैं:
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_maxwait 0
आप eth0 के लिए उपयोग किया गया एक स्थिर पता भी निर्दिष्ट कर सकते हैं।
प्रत्येक QEMU इमेज के लिए जिस फ़ोल्डर में आपकी VM इमेज स्थित हैं, वहाँ जाएँ, उदाहरण के लिए ARM के लिए:
<आपका detux फ़ोल्डर>/qemu/arm/1/
प्रत्येक इमेज के लिए, VM शुरू करने के लिए "https://people.debian.org/~aurel32/" पर दिए गए VM बूट निर्देशों का पालन करें। हालाँकि, यदि आप एक गैर-रूट उपयोगकर्ता हैं, तो आपको sudo का उपयोग करना होगा।
VMs को बूट करने के कमांड (अपनी इच्छित MAC से बदलें):
#x86
sudo qemu-system-i386 -hda qemu/x86/1/debian_wheezy_i386_standard.qcow2 -vnc 127.0.0.1:5901 -net nic,macaddr=<MACADDR> -net tap -monitor stdio
#x86-64
sudo qemu-system-x86_64 -hda qemu/x86-64/1/debian_wheezy_amd64_standard.qcow2 -vnc 127.0.0.1:5901 -net nic,macaddr=<MACADDR> -net tap -monitor stdio
#arm
sudo qemu-system-arm -M versatilepb -kernel qemu/arm/1/vmlinuz-3.2.0-4-versatile -initrd qemu/arm/1/initrd.img-3.2.0-4-versatile -hda qemu/arm/1/debian_wheezy_armel_standard.qcow2 -append "root=/dev/sda1" -vnc 127.0.0.1:5901 -net nic,macaddr=<MACADDR> -net tap -monitor stdio
#mips
sudo qemu-system-mips -M malta -kernel qemu/mips/1/vmlinux-3.2.0-4-4kc-malta -hda qemu/mips/1/debian_wheezy_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -vnc 127.0.0.1:5901 -net nic,macaddr=<MACADDR> -net tap -monitor stdio
#mipsel
sudo qemu-system-mipsel -M malta -kernel qemu/mipsel/1/vmlinux-3.2.0-4-4kc-malta -hda qemu/mipsel/1/debian_wheezy_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -vnc 127.0.0.1:5901 -net nic,macaddr=<MACADDR> -net tap -monitor stdio
Detux को IP पतों और ssh सेटअप के साथ एक पूर्व-कॉन्फ़िगर्ड VM स्नैपशॉट की आवश्यकता होती है।
(qemu)
(qemu) savevm init
(qemu) q
-- सभी VMs के लिए चरण 1 से दोहराएं
एक गैर-रूट उपयोगकर्ता के पैकेट कैप्चर करने में सक्षम होने के लिए, Dumpcap को कैप्चर विशेषाधिकारों की आवश्यकता होती है। (https://wiki.wireshark.org/CaptureSetup/CapturePrivileges)।
निम्नलिखित कमांड आपके लिए इसे सक्षम कर सकता है:
sudo groupadd -g wireshark
sudo usermod -a -G wireshark <आपका उपयोगकर्ता नाम>
sudo chmod 750 /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
ध्यान रखें कि अनुमतियाँ लागू करने के लिए आपको लॉगआउट करके फिर से लॉगिन करना होगा या होस्ट को रीबूट करना पड़ सकता है। यदि आप पैकेट कैप्चर करने में असमर्थ हैं या dumpcap से संबंधित त्रुटियाँ मिलती हैं, तो आपको जाँचना होगा कि आपके उपयोगकर्ताओं के लिए अनुमतियाँ सही ढंग से सेट हैं और dumpcap पथ सही है।
मुख्य निर्देशिका में detux.cfg फ़ाइल को कॉन्फ़िगर करने की आवश्यकता है। प्रत्येक VM सेक्शन को सही नेटवर्क पैरामीटर और SSH क्रेडेंशियल्स के साथ कॉन्फ़िगर किया जाना चाहिए। आप अपनी आवश्यकता के अनुसार रूट/गैर-रूट उपयोगकर्ता चुन सकते हैं।
"core" निर्देशिका में स्थित Detux लाइब्रेरी का उपयोग आपकी विश्लेषण आवश्यकता के अनुसार किया जा सकता है। रिपॉजिटरी में "detux.py" शामिल है जो दिए गए बाइनरी का विश्लेषण करता है और pcap को pcap फ़ोल्डर में सहेजता है और JSON आउटपुट को एक निर्दिष्ट फ़ाइल पथ पर लिखता है।
usage: detux.py [-h] --sample SAMPLE [--cpu {x86,x86-64,arm,mips,mipsel}]
[--int {python,perl,sh,bash}] --report REPORT
optional arguments:
-h, --help show this help message and exit
--sample SAMPLE Sample path (default: None)
--cpu {x86,x86-64,arm,mips,mipsel}
CPU type (default: auto)
--int {python,perl,sh,bash}
Architecture type (default: None)
--report REPORT JSON report output path (default: None)
उदाहरण:
python detux.py --sample test_script/example_binary1 --report reports/example_report1.json
Aurélien Jarno (@aurel32) (https://www.aurel32.net/) को पूर्व-निर्मित VM इमेज के लिए धन्यवाद।