
IOC और YARA-आधारित स्कैनर जो फ़ाइल नाम regex, YARA सिग्नेचर, हैश मैचिंग और एंडपॉइंट पर C2 बैक-कनेक्ट जाँच के माध्यम से संक्रमण के संकेतकों का पता लगाने के लिए है।
मैंने एक नया ओपन सोर्स YARA स्कैनर लिखा है जिसे LOKI RS (Rust) कहा जाता है। LOKI (Python) अब आधिकारिक रूप से अप्रचलित (deprecated) हो गया है।
यह परियोजना अब निष्क्रिय रखरखाव मोड में है। इसका मतलब है कि जब मैं बग फिक्स और सीधी समस्याओं के लिए पुल रिक्वेस्ट मर्ज करता हूँ, तो वर्तमान में मेरे पास नई सुविधाएँ जोड़ने या मौजूदा सुविधाओं का विस्तार करने का समय नहीं है। वर्षों से, मेरा ध्यान एक अधिक उन्नत स्कैनर, THOR, विकसित करने पर रहा है, जो इस परियोजना पर कई सुधार प्रदान करता है। एक मुफ्त संस्करण, THOR Lite, उपलब्ध है; यह तेज़, अधिक स्थिर, और हमारे CI वातावरणों में कठोरता से परीक्षण किया गया है—बस एक बेहतर समाधान। आप ओपन-सोर्स, मुफ्त और वाणिज्यिक स्कैनर की तुलना यहाँ पा सकते हैं।
मैंने LOKI का एक Rust-आधारित संस्करण भी शुरू किया है जिसे LOKI 2 कहा जाता है। हालाँकि, मुझे यकीन नहीं है कि यह वर्तमान LOKI रिलीज़ के साथ फीचर समानता (feature parity) तक कब पहुँचेगा। इसके अलावा, मैंने एक फ्लो चार्ट बनाया है ताकि आप यह तय कर सकें कि कौन सा स्कैनर आपकी आवश्यकताओं को सबसे अच्छी तरह पूरा करता है।

सरल समझौता संकेतकों (Indicators of Compromise) के लिए स्कैनर
पता लगाना चार विधियों पर आधारित है:
1. फ़ाइल नाम IOC
पूर्ण फ़ाइल पथ/नाम पर Regex मिलान
2. Yara नियम जाँच
फ़ाइल डेटा और प्रक्रिया मेमोरी पर Yara सिग्नेचर मिलान
3. हैश जाँच
ज्ञात दुर्भावनापूर्ण हैश (MD5, SHA1, SHA256) की स्कैन की गई फ़ाइलों से तुलना करता है
4. C2 बैक कनेक्ट जाँच
प्रक्रिया कनेक्शन एंडपॉइंट्स की C2 IOC से तुलना करता है (संस्करण v.10 से नया)
अतिरिक्त जाँच:
1. Regin फाइलसिस्टम जाँच (--reginfs के माध्यम से)
2. प्रक्रिया विसंगति जाँच ([Sysforensics](http://goo.gl/P99QZQ) पर आधारित)
3. SWF डीकंप्रेस्ड स्कैन (संस्करण v0.8 से नया)
4. SAM डंप जाँच
Windows बाइनरी PyInstaller के साथ संकलित की गई है और इसे x86 और x64 दोनों प्रणालियों पर x86 एप्लिकेशन के रूप में चलना चाहिए।
यदि आप संकलित EXE का उपयोग करते हैं तो कोई आवश्यकता नहीं है।
यदि आप इसे स्वयं बनाना चाहते हैं:
usage: loki.py [-h] [-p path] [-s kilobyte] [-l log-file] [-r remote-loghost]
[-t remote-syslog-port] [-a alert-level] [-w warning-level]
[-n notice-level] [--allhds] [--alldrives] [--printall]
[--allreasons] [--noprocscan] [--nofilescan] [--vulnchecks]
[--nolevcheck] [--scriptanalysis] [--rootkit] [--noindicator]
[--dontwait] [--intense] [--csv] [--onlyrelevant] [--nolog]
[--update] [--debug] [--maxworkingset MAXWORKINGSET]
[--syslogtcp] [--logfolder log-folder] [--nopesieve]
[--pesieveshellc] [--nolisten]
[--excludeprocess EXCLUDEPROCESS] [--force]
Loki - Simple IOC Scanner
optional arguments:
-h, --help show this help message and exit
-p path Path to scan
-s kilobyte Maximum file size to check in KB (default 5000 KB)
-l log-file Log file
-r remote-loghost Remote syslog system
-t remote-syslog-port
Remote syslog port
-a alert-level Alert score
-w warning-level Warning score
-n notice-level Notice score
--allhds Scan all local hard drives (Windows only)
--alldrives Scan all drives (including network drives and
removable media)
--printall Print all files that are scanned
--allreasons Print all reasons that caused the score
--noprocscan Skip the process scan
--nofilescan Skip the file scan
--vulnchecks Run the vulnerability checks
--nolevcheck Skip the Levenshtein distance check
--scriptanalysis Statistical analysis for scripts to detect obfuscated
code (beta)
--rootkit Skip the rootkit check
--noindicator Do not show a progress indicator
--dontwait Do not wait on exit
--intense Intense scan mode (also scan unknown file types and
all extensions)
--csv Write CSV log format to STDOUT (machine processing)
--onlyrelevant Only print warnings or alerts
--nolog Don't write a local log file
--update Update the signatures from the "signature-base" sub
repository
--debug Debug output
--maxworkingset MAXWORKINGSET
Maximum working set size of processes to scan (in MB,
default 100 MB)
--syslogtcp Use TCP instead of UDP for syslog logging
--logfolder log-folder
Folder to use for logging when log file is not
specified
--nopesieve Do not perform pe-sieve scans
--pesieveshellc Perform pe-sieve shellcode scan
--nolisten Dot not show listening connections
--excludeprocess EXCLUDEPROCESS
Specify an executable name to exclude from scans, can
be used multiple times
--force Force the scan on a certain folder (even if excluded
with hard exclude in LOKI's code
संस्करण 0.15 से Yara सिग्नेचर उप-रिपॉजिटरी signature-base में रहते हैं। LOKI को ZIP फ़ाइल के रूप में डाउनलोड करने पर आपको उप-रिपॉजिटरी नहीं मिलेगी। जब आप रिपॉजिटरी को क्लोन करेंगे तो यह शामिल होगा।
हैश और फ़ाइल नामों के लिए IOC फ़ाइलें './signature-base/iocs' फ़ोल्डर में संग्रहीत हैं। './signature-base/yara' फ़ोल्डर में रखी गई सभी '.yar' फ़ाइलें पहले से शामिल नियम सेट के साथ प्रारंभ की जाएंगी। सिग्नेचर मिलान पर संदेश के स्तर को परिभाषित करने के लिए 'score' मान का उपयोग करें।
आप './signature-base/iocs' उप-फ़ोल्डर में फ़ाइलें जोड़कर हैश, c2 और फ़ाइल नाम IOC जोड़ सकते हैं। सभी हैश IOC और फ़ाइल नाम IOC फ़ाइलें LOKI द्वारा उपयोग किए जाने वाले प्रारूप में होनी चाहिए (डिफ़ॉल्ट फ़ाइलें देखें)। फ़ाइलों के नाम में प्रारंभिकीकरण के दौरान खींचे जाने के लिए "hash", "filename" या "c2" स्ट्रिंग होनी चाहिए।
हैश IOC के लिए (न्यूलाइन द्वारा विभाजित; हैश प्रकार स्वचालित रूप से पता चलता है)
Hash;Description [Reference]
फ़ाइल नाम IOC के लिए (न्यूलाइन द्वारा विभाजित)
# (optional) Description [Reference]
Filename as Regex[;Score as integer[;False-positive as Regex]]
संस्करण v0.16.2 से LOKI नए "./config" फ़ोल्डर में "excludes.cfg" के माध्यम से उपयोगकर्ता-परिभाषित बहिष्करण की परिभाषा का समर्थन करता है। प्रत्येक पंक्ति एक नियमित अभिव्यक्ति का प्रतिनिधित्व करती है जो निर्देशिका चलने के दौरान पूर्ण फ़ाइल पथ पर लागू होती है। इस तरह आप उनके ड्राइव नाम, कुछ फ़ोल्डरों में फ़ाइल एक्सटेंशन और उन सभी फ़ाइलों और निर्देशिकाओं की परवाह किए बिना कुछ निर्देशिकाओं को बाहर कर सकते हैं जो किसी ऐसे उत्पाद से संबंधित हैं जो एंटीवायरस स्कैनिंग के प्रति संवेदनशील है।
'''exclude.cfg''' इस प्रकार दिखता है:
# Excluded directories
#
# - add directories you want to exclude from the scan
# - double escape back slashes
# - values are case-insensitive
# - remember to use back slashes on Windows and slashes on Linux / Unix / OSX
# - each line contains a regex that matches somewhere in the full path (case insensitive)
# e.g.:
# Regex: \\System32\\
# Matches C:\Windows\System32\cmd.exe
#
# Regex: /var/log/[^/]+\.log
# Matches: /var/log/test.log
# Not Matches: /var/log/test.gz
#
# Useful examples
\\Ntfrs\\
\\Ntds\\
\\EDB[^\.]+\.log
Sysvol\\Staging\\Nntfrs_cmp
\\System Volume Information\\DFSR
Loki स्कैन

Regin मिलान

Regin झूठी सकारात्मकता

हैश-आधारित IOC

फ़ाइल नाम-आधारित IOC

उत्पन्न लॉग फ़ाइल

हमारी कंपनी के होमपेज पर LOKI स्कैनर https://www.nextron-systems.com/loki/
Twitter @cyb3rOps @thor_scanner
यदि आप APT स्कैनिंग के लिए कॉर्पोरेट समाधान में रुचि रखते हैं, तो Loki के बड़े भाई THOR को देखें।
PyInstaller डाउनलोड करें, pyinstaller प्रोग्राम निर्देशिका पर जाएं और निष्पादित करें:
python ./pyinstaller.py -F C:\path\to\loki.py
यह उप-फ़ोल्डर ./loki/dist में एक loki.exe बनाएगा।
लक्ष्य OS संगतता में सुधार करने के लिए msvcr100.dll शामिल करने के लिए फ़ाइल ./loki/loki.spec में a.binaries, वाली पंक्ति को निम्न में बदलें:
a.binaries + [('msvcr100.dll', 'C:\Windows\System32\msvcr100.dll', 'BINARY')],
venv है, फिर python -m venv path/to/venv चलाएं जहाँ path/to/venv आपके आभासी वातावरण का पथ है। path/to/venv/bin/python --version चलाकर अपने आभासी वातावरण का परीक्षण करें।
path/to/venv/bin/python -m pip install --upgrade pip setuptools wheel चलाकर pip, setuptools, और wheel के लिए अपने आभासी वातावरण मॉड्यूल को अपग्रेड करें।path/to/venv/bin/python -m pip install colorama yara-python psutil rfc5424-logging-handler netaddrpath/to/venv/bin/python path/to/loki/loki-upgrader.py जहाँ path/to/loki Loki रिपॉजिटरी का पथ है।Yara स्रोत यहाँ से डाउनलोड करें
संकलित स्कैनर एंटीवायरस इंजनों द्वारा पता लगाया जा सकता है। यह इस तथ्य के कारण होता है कि स्कैनर एक संकलित पायथन स्क्रिप्ट है जो कुछ फाइल सिस्टम और प्रक्रिया स्कैनिंग सुविधाओं को लागू करता है जो संकलित मैलवेयर कोड में भी उपयोग की जाती हैं।
यदि आप संकलित निष्पादन योग्य पर भरोसा नहीं करते हैं, तो कृपया इसे स्वयं संकलित करें।
Loki - सरल IOC स्कैनर कॉपीराइट (c) 2015 फ्लोरियन रोथ
यह प्रोग्राम मुफ्त सॉफ्टवेयर है: आप इसे पुनर्वितरित कर सकते हैं और/या इसे GNU जनरल पब्लिक लाइसेंस की शर्तों के तहत संशोधित कर सकते हैं जैसा कि फ्री सॉफ्टवेयर फाउंडेशन द्वारा प्रकाशित किया गया है, लाइसेंस का संस्करण 3, या (आपकी पसंद पर) कोई बाद का संस्करण।
यह प्रोग्राम इस उम्मीद में वितरित किया जाता है कि यह उपयोगी होगा, लेकिन बिना किसी वारंटी के; यहां तक कि व्यापारिकता या किसी विशेष उद्देश्य के लिए उपयुक्तता की निहित वारंटी के बिना। अधिक विवरण के लिए GNU जनरल पब्लिक लाइसेंस देखें।
आपको इस प्रोग्राम के साथ GNU जनरल पब्लिक लाइसेंस की एक प्रति प्राप्त होनी चाहिए थी। यदि नहीं, तो http://www.gnu.org/licenses/ देखें।
sudo path/to/venv/bin/python loki.py