
एक मैलवेयर विश्लेषण और वर्गीकरण उपकरण।
Inhale एक मैलवेयर विश्लेषण और वर्गीकरण उपकरण है जो कई स्थैतिक विश्लेषण कार्यों को स्वचालित और स्केल करने में सक्षम है।
यह बीटा रिलीज़ संस्करण है, परीक्षण उद्देश्यों, प्रतिक्रिया और सामुदायिक विकास के लिए।
Inhale की शुरुआत छोटी स्क्रिप्ट्स के एक सेट के रूप में हुई जिनका उपयोग मैं विभिन्न स्रोतों से बड़ी मात्रा में मैलवेयर एकत्र और विश्लेषण करते समय करता था। समान कार्य करने के लिए बहुत सारे फ्रेमवर्क और उपकरण मौजूद हैं, लेकिन उनमें से कोई भी वास्तव में बड़ी संख्या में फाइलों के बारे में जानकारी को तेजी से खोजने, वर्गीकृत करने और संग्रहीत करने के मेरे कार्यप्रवाह से मेल नहीं खाता था। कुछ को महंगे API कुंजी और अन्य सेवाओं की भी आवश्यकता होती है जिनमें पैसे खर्च होते हैं।
अंततः मैंने इन स्क्रिप्ट्स को ऐसी चीज़ में बदल दिया जिसे लोग जल्दी से सेट अप और उपयोग कर सकें, चाहे आप एक शोध सर्वर से चलाएँ, एक लैपटॉप से, या कम लागत वाले कंप्यूटर जैसे Raspberry Pi से।
यह उपकरण Linux पर Python3, ElasticSearch, radare2, yara और binwalk का उपयोग करके चलने के लिए बनाया गया है। डेटाबेस से आउटपुट को सुंदर रूप से प्रिंट करने के लिए jq की भी आवश्यकता है। यहाँ कुछ बुनियादी स्थापना निर्देश दिए गए हैं।
config.yml फ़ाइल में बहुत सी चीज़ें हैं जो वास्तव में अभी तक सेट नहीं हैं, जब तक इस दस्तावेज़ में अन्यथा न कहा जाए, उन्हें वैसे ही छोड़ दें।
आवश्यकताएँ स्थापित करें
python3 -m pip install -r requirements.txt
Inhale का उपयोग करने के लिए डेटाबेस की आवश्यकता नहीं है, लेकिन यदि आप एक सेट करना चाहते हैं, तो बस इन निर्देशों का पालन करें और config.yml विकल्प "enable_database" को True पर सेट करें।
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo service elasticsearch start
आप इस दस्तावेज़ीकरण का पालन करके मैन्युअल रूप से भी स्थापित कर सकते हैं
इसके अतिरिक्त आप विज़ुअलाइज़ेशन और डेटा विश्लेषण उद्देश्यों के लिए पूर्ण ELK स्टैक सेट कर सकते हैं। इस उपकरण का उपयोग करने के लिए यह आवश्यक नहीं है।
radare2 को रिपॉजिटरी से स्थापित करना महत्वपूर्ण है, न कि आपके पैकेज मैनेजर से। पैकेज मैनेजर संस्करणों में inhale के लिए आवश्यक सभी सुविधाएँ नहीं होती हैं।
git clone https://github.com/radare/radare2
cd radare2
sys/install.sh
sudo apt-get install automake libtool make gcc
wget https://github.com/VirusTotal/yara/archive/v3.10.0.tar.gz
tar xvzf v3.10.0.tar.gz
cd yara-3.10.0/
./bootstrap.sh
./configure
make
sudo make install
यदि आपको साझा ऑब्जेक्ट्स के बारे में कोई त्रुटि मिलती है, तो इसे ठीक करने के लिए यह प्रयास करें।
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf'
sudo ldconfig
सबसे अच्छा यह है कि binwalk को रिपॉजिटरी से स्थापित करें।
git clone https://github.com/ReFirmLabs/binwalk
cd binwalk
sudo python3 setup.py install
binwalk के लिए अतिरिक्त सुविधाओं को स्थापित करने पर अधिक जानकारी यहाँ उपलब्ध है।
यह एक लाइब्रेरी है जो मैलवेयर परिवार विश्लेषण के लिए ELF फ़ाइलों के अनुभागों को हैश करती है। telfhash tlsh पर निर्भर करता है, इसलिए दोनों को स्थापित करने के निर्देश इस प्रकार हैं:
tlsh सेट करें
git clone https://github.com/trendmicro/tlsh
cd tlsh
./make.sh
cd py_ext/
python3 ./setup.py build
sudo python3 ./setup.py install
telfhash सेट करें
git clone https://github.com/trendmicro/telfhash
cd telfhash
sudo python3 setup.py install
यदि आप inhale आउटपुट को साझा करने के लिए वेब सर्वर का उपयोग करना चाहते हैं, तो config.yml में चर को उपयुक्त पथों पर सेट करें, और सुनिश्चित करें कि निर्देशिकाएँ मौजूद हैं!
web:
gen_html: False
webdir: "/var/www/html/" # The actual web directory
fqdn: "http://threat.land" # Your website
in_path: "/var/www/html/inhaled/" # The path to inhale output
ex_path: "/var/www/html/exhaled/" # The path for db query cache output
html आउटपुट का उपयोग करने के लिए, inhale को इस प्रकार चलाएँ:
python3 inhale.py [all your args here] --html
आप जिस फ़ाइल को स्क्रैप कर रहे हैं उसे प्रकार के अनुसार निर्दिष्ट करें:
-f INFILE Analyze a single file
-d DIRECTORY Analyze a directory of files
-u URLFILE Analyze a remote file (url)
-r RDIRECTORY Analyze a remote directory (url)
-l URLLIST Analyze a list of URLs in a text file
अन्य विकल्प:
-t TAGS Add additional tags to the output.
-b Turn off binwalk signatures
-y YARARULES Specify custom Yara Rules
-o OUTDIR Store scraped files in specific output dir (default: ./files/<date>/)
-i Just print info, don't add files to database
--html Save output as html to the webdir.
inhale.py चलाने से किसी दी गई फ़ाइल/निर्देशिका/url पर सभी विश्लेषण किए जाएँगे और इसे आपके टर्मिनल पर प्रिंट किया जाएगा।
/bin/ls पर जानकारी देखें, लेकिन डेटाबेस में न जोड़ें
python3 inhale.py -f /bin/ls -i
निर्देशिका 'malwarez' को डेटाबेस में जोड़ें
python3 inhale.py -d malwarez/
इस फ़ाइल को डाउनलोड करें और डेटाबेस में जोड़ें
python3 inhale.py -u https://thugcrowd.com/chal/skull
इस रिमोट निर्देशिका में सब कुछ डाउनलोड करें, सभी को "phishing" के रूप में टैग करें:
python3 inhale.py -r http://someurl.com/opendir/ -t phishing
प्रो टिप: संभावित मैलवेयर वाली रोचक ओपन डायरेक्टरीज़ खोजने के लिए इस Twitter हैशटैग खोज का उपयोग करें। अपने जोखिम पर उपयोग करें।
आप -y के साथ अपने स्वयं के yara नियम पास कर सकते हैं, यह एक बड़ा कार्य प्रगति पर है और "YaraRules" में लगभग सब कुछ https://github.com/kevthehermit/PasteHunter/tree/master/YaraRules से है। @KevTheHermit को धन्यवाद।
क्वेरी करने के लिए db.sh का उपयोग करें (जल्द ही एक अच्छी स्क्रिप्ट होगी)
db.sh *something* | jq .
निम्नलिखित elasticsearch डेटाबेस के लिए उपयोग किया जाने वाला वर्तमान डेटा मॉडल है। इनमें से प्रत्येक का उपयोग प्रत्येक दी गई फ़ाइल के लिए नहीं किया जाएगा। कोई भी r2_* टैग आमतौर पर किसी प्रकार के बाइनरी के लिए आरक्षित होते हैं।