
🐍 उच्च-प्रदर्शन, मल्टी-थ्रेडेड YARA और IOC स्कैनर

Rust में Loki का पुनर्लेखन। एकल बाइनरी में उच्च-प्रदर्शन, मल्टी-थ्रेडेड YARA और IOC स्कैनर।
स्थिति: बीटा। काम करता है, लेकिन अभी भी सक्रिय विकास के अंतर्गत है।
macOS पर प्रक्रिया मेमोरी स्कैनिंग सर्वोत्तम-प्रयास है और इसमें आमतौर पर डिबगिंग एंटाइटलमेंट या उन्नत विशेषाधिकारों की आवश्यकता होती है। उनके बिना, Loki-RS फ़ाइलों को स्कैन करेगा लेकिन अधिकांश प्रक्रिया मेमोरी पढ़ने में सक्षम नहीं होगा। यदि आवश्यक हो तो प्रक्रिया स्कैनिंग छोड़ने के लिए --no-procs का उपयोग करें।
Linux पर, Loki-RS /proc/<pid>/mem पढ़ने से पहले डिवाइस-समर्थित और कर्नेल-विशेष प्रक्रिया मैपिंग को छोड़ देता है। यह कुछ ड्राइवर-प्रबंधित VMA के साथ ज्ञात अस्थिरता से बचाता है, जबकि सामान्य अनाम, हीप/स्टैक और नियमित फ़ाइल-समर्थित मेमोरी स्कैनिंग को संरक्षित करता है। यदि आप अभी भी पर्यावरण-विशिष्ट समस्याओं का सामना करते हैं, तो प्रक्रिया स्कैनिंग को अक्षम करने के लिए --no-procs का उपयोग करें।
अपने प्लेटफ़ॉर्म के लिए पूर्व-संकलित बाइनरी रिलीज़ पेज से डाउनलोड करें।
# Extract
tar -xzvf loki-linux-*.tar.gz
cd loki-linux-*
# Update signatures (recommended)
./loki-util update
# Run
sudo ./loki --help
हस्ताक्षर रिलीज़ के साथ आते हैं लेकिन जल्दी पुराने हो जाते हैं। नवीनतम YARA-Forge Core नियम प्राप्त करने के लिए loki-util update चलाएँ।
Loki-RS अपने डिफ़ॉल्ट हस्ताक्षर स्रोत के रूप में YARA Forge का उपयोग करता है। Loki-RS Core नियम सेट के साथ आता है और अपडेट होता है (उच्च सटीकता, कम गलत सकारात्मक, प्रदर्शन के लिए अनुकूलित)। यदि आपको व्यापक कवरेज की आवश्यकता है, तो आप YARA Forge से Extended या Full सेट का उपयोग कर सकते हैं।
signatures/iocs/ में IOC फ़ाइलें वैकल्पिक स्थानीय/कस्टम सामग्री के रूप में समर्थित रहती हैं।
# Basic scan (TUI enabled by default)
sudo ./loki
# Scan specific folder
sudo ./loki --folder /tmp
# Disable TUI, use standard command-line output
sudo ./loki --no-tui
# Scan a mounted image (skip process scanning, use all cores)
sudo ./loki --no-procs --folder ~/image1 --threads 0
# Slow and cautious scan (lower CPU limit, single thread)
sudo ./loki --cpu-limit 60 --threads 1
# Scan and send logs to remote syslog
sudo ./loki --remote syslog-host.internal:514 --remote-proto udp


| विकल्प | डिफ़ॉल्ट | विवरण |
|---|---|---|
-f, --folder <PATH> | / | स्कैन करने के लिए फ़ोल्डर। स्थान वाले पथों को उद्धृत करें, उदा. -f "J:\SteamLibrary\steamapps\common\SpaceCraft beta" |
Loki-RS स्कैन से फ़ाइलों और फ़ोल्डरों को बाहर करने के लिए कई तंत्र प्रदान करता है।
डिफ़ॉल्ट रूप से, Loki-RS स्वचालित रूप से बाहर करता है:
सिस्टम निर्देशिकाएँ (Linux/macOS):
/proc, /dev, /sys/kernel/debug, /sys/kernel/slab, /sys/kernel/tracing, /sys/devices/run, /var/runक्लाउड स्टोरेज निर्देशिकाएँ (जब तक --scan-all-drives का उपयोग न किया जाए):
नेटवर्क और माउंटेड ड्राइव (जब तक --scan-all-drives का उपयोग न किया जाए):
/media, /volumes के अंतर्गत बाहरी मीडियाप्रोग्राम निर्देशिका:
आप ज्ञात अच्छी फ़ाइलों को उनके हैश द्वारा बाहर कर सकते हैं। यह उन वैध फ़ाइलों को व्हाइटलिस्ट करने के लिए उपयोगी है जो गलत सकारात्मक को ट्रिगर करती हैं।
सेटअप:
signatures/iocs/ में एक फ़ाइल बनाएं जिसमें फ़ाइलनाम में hash और falsepositive दोनों हों
उदाहरण: hash-falsepositive-custom.txt
वैकल्पिक विवरण के साथ हैश (MD5, SHA1, या SHA256) जोड़ें:
# फ़ॉर्मेट: HASH;विवरण
d41d8cd98f00b204e9800998ecf8427e;खाली फ़ाइल - ज्ञात अच्छा
a7f5f35426b927411fc9231b56382173;वैध सिस्टम उपयोगिता
इन हैश से मेल खाने वाली फ़ाइलें स्कैनिंग के दौरान चुपचाप छोड़ दी जाएंगी।
signatures/iocs/filename-iocs.txt में फ़ाइलनाम IOC जोड़ते समय, आप तीसरे कॉलम में एक गलत सकारात्मक बहिष्करण regex निर्दिष्ट कर सकते हैं:
# फ़ॉर्मेट: REGEX;SCORE;FALSE_POSITIVE_REGEX
#
# यह सभी .ps1 फ़ाइलों से मेल खाता है, लेकिन SysInternals निर्देशिकाओं वालों को बाहर करता है
(?i)\\procdump(64)?\.(exe|zip);50;(?i)(SysInternals\\)
यदि कोई फ़ाइल मुख्य पैटर्न और गलत सकारात्मक regex दोनों से मेल खाती है, तो इसकी रिपोर्ट नहीं की जाएगी।
config/excludes.cfg फ़ाइल regex-आधारित पथ बहिष्करण का समर्थन करती है:
# सिस्टम निर्देशिकाओं को बाहर करें
^/proc/.*
^/dev/.*
^/sys/.*
# अस्थायी फ़ाइलों को बाहर करें
.*\.tmp$
.*\.temp$
.*\.swp$
# विशिष्ट निर्देशिकाओं को बाहर करें
.*node_modules.*
.*/\.git/.*
नोट: पथ बहिष्करण पैटर्न नियमित अभिव्यक्तियों का उपयोग करके पूर्ण फ़ाइल पथ से मिलान किए जाते हैं। # से शुरू होने वाली पंक्तियाँ टिप्पणियाँ हैं।
# सभी ड्राइव (नेटवर्क, क्लाउड, माउंटेड) सहित स्कैन करें
sudo ./loki --scan-all-drives
# सभी फ़ाइल प्रकार स्कैन करें, केवल एक्ज़ीक्यूटेबल और स्क्रिप्ट नहीं
sudo ./loki --scan-all-files
# केवल छोटी फ़ाइलें स्कैन करें (10MB से कम)
sudo ./loki --max-file-size 10000000
# प्रक्रिया स्कैनिंग छोड़ें (माउंटेड इमेज के लिए उपयोगी)
sudo ./loki --no-procs --folder /mnt/image
टर्मिनल इंटरफ़ेस डिफ़ॉल्ट रूप से सक्षम है और स्कैन के दौरान रीयल-टाइम मॉनिटरिंग प्रदान करता है।
sudo ./loki --folder /path/to/scan


Loki-RS प्रत्येक स्कैन के बाद स्वचालित रूप से एक स्टाइलिश HTML रिपोर्ट उत्पन्न करता है। रिपोर्ट JSONL लॉग फ़ाइल के साथ बनाई जाती है और सभी निष्कर्षों का एक दृश्य सारांश प्रदान करती है।
रिपोर्ट में शामिल हैं:

HTML रिपोर्ट JSONL आउटपुट के समान आधार फ़ाइलनाम साझा करती है (उदा. loki_hostname_2025-01-08.html)। रिपोर्ट निर्माण को अक्षम करने के लिए, --no-html का उपयोग करें।
आप loki-util का उपयोग करके मौजूदा JSONL फ़ाइलों से HTML रिपोर्ट उत्पन्न कर सकते हैं:
# एकल JSONL फ़ाइल से HTML रिपोर्ट उत्पन्न करें
./loki-util html --input scan_results.jsonl --output report.html
# एकाधिक JSONL फ़ाइलों से संयुक्त HTML रिपोर्ट उत्पन्न करें
./loki-util html --input "*.jsonl" --combine --output combined_report.html
# एकाधिक फ़ाइलों से मिलान करने के लिए ग्लोब पैटर्न का उपयोग करें
./loki-util html --input "/path/to/scans/*.jsonl" --combine --output combined.html
विकल्प:
--input <file|glob> - इनपुट JSONL फ़ाइल या ग्लोब पैटर्न (आवश्यक)--output <file.html> - आउटपुट HTML फ़ाइल (वैकल्पिक, डिफ़ॉल्ट इनपुट फ़ाइलनाम .html एक्सटेंशन के साथ)--combine - एकाधिक JSONL फ़ाइलों को एक रिपोर्ट में संयोजित करें (होस्टनाम द्वारा निष्कर्षों को समूहित करता है)--title <str> - रिपोर्ट शीर्षक को ओवरराइड करें--host <str> - रिपोर्ट में होस्टनाम को ओवरराइड करेंसंयुक्त रिपोर्ट मोड एकाधिक होस्ट या समय अवधियों से स्कैन परिणामों को एक ही दृश्य में एकत्र करने के लिए उपयोगी है, जिसमें निष्कर्ष स्रोत होस्टनाम द्वारा समूहित होते हैं।
git clone https://github.com/Neo23x0/Loki-RS.git
cd Loki-RS
cargo build --release
./target/release/loki-util update
sudo ./target/release/loki
Rust टूलचेन आवश्यक है। क्रॉस-कम्पाइलेशन के लिए docs/BUILD.md देखें।
Loki RS एक साइड प्रोजेक्ट है। यह व्यावहारिक ट्राइएज और प्रयोग के लिए बनाया गया एक तेज़, एकल-बाइनरी स्कैनर है, और विचारों के आज़माए और हटाए जाने पर यह तेज़ी से बदल सकता है।
समर्थन सामुदायिक-आधारित और सर्वोत्तम-प्रयास है - कोई SLA, कोई गारंटीकृत प्रतिक्रिया समय नहीं, और यह वादा नहीं कि हर एज केस को पूरी तरह से संभाला गया है। यदि आप इसे उत्पादन में चलाते हैं, तो इसे ध्यान में रखते हुए करें।
कॉर्पोरेट वातावरण और पूर्वानुमानित समर्थन तथा व्यापक, अच्छी तरह से परीक्षण की गई सुविधाओं वाले घटना प्रतिक्रिया कार्य के लिए, Nextron Systems THOR (और THOR Lite) बनाए रखता है। THOR व्यापक आर्टिफैक्ट कवरेज, अधिक मॉड्यूल और प्रारूपों और विक्रेता समर्थन वाला पेशेवर स्कैनर है। THOR Lite कम दायरे वाला मुफ्त प्रवेश संस्करण है।
GNU General Public License v3.0. LICENSE देखें।
Copyright (c) 2025 Florian Roth
| विकल्प | डिफ़ॉल्ट | विवरण |
|---|
--no-procs | false | प्रक्रिया मेमोरी स्कैनिंग छोड़ें |
--no-fs | false | फ़ाइलसिस्टम स्कैनिंग छोड़ें |
--no-archive | false | आर्काइव (ZIP) के अंदर स्कैन करना छोड़ें |
--scan-all-drives | false | माउंटेड/नेटवर्क/क्लाउड सहित सभी ड्राइव स्कैन करें |
--scan-all-files | false | एक्सटेंशन/प्रकार की परवाह किए बिना सभी फ़ाइलें स्कैन करें |
| विकल्प | डिफ़ॉल्ट | विवरण |
|---|
-l, --log <FILE> | auto | सादा पाठ लॉग फ़ाइल |
--no-log | false | सादा पाठ लॉग आउटपुट अक्षम करें |
-j, --jsonl <FILE> | auto | JSONL आउटपुट फ़ाइल |
--no-jsonl | false | JSONL आउटपुट अक्षम करें |
--no-html | false | HTML रिपोर्ट निर्माण अक्षम करें |
--no-tui | false | TUI अक्षम करें, मानक कमांड-लाइन आउटपुट का उपयोग करें |
-r, --remote <HOST:PORT> | none | रिमोट syslog गंतव्य |
-p, --remote-proto <PROTO> | udp | रिमोट प्रोटोकॉल (udp/tcp) |
--remote-format <FMT> | syslog | रिमोट प्रारूप (syslog/json) |
| विकल्प | डिफ़ॉल्ट | विवरण |
|---|
--alert-level <SCORE> | 80 | ALERT के लिए स्कोर थ्रेशोल्ड |
--warning-level <SCORE> | 60 | WARNING के लिए स्कोर थ्रेशोल्ड |
--notice-level <SCORE> | 40 | NOTICE के लिए स्कोर थ्रेशोल्ड |
--max-reasons <NUM> | 2 | प्रति खोज प्रदर्शित करने के लिए अधिकतम मिलान कारण |
-m, --max-file-size <BYTES> | 64000000 | स्कैन करने के लिए अधिकतम फ़ाइल आकार (64MB) |
--yara-timeout <SECONDS> | 10 | प्रत्येक फ़ाइल या प्रक्रिया-मेमोरी बफर के लिए अधिकतम YARA स्कैन समय (न्यूनतम: 1 सेकंड) |
-c, --cpu-limit <PERCENT> | 100 | CPU उपयोग सीमा (1-100) |
--threads <NUM> | -2 | थ्रेड्स की संख्या (0=सभी, -1=सभी-1, -2=सभी-2) |
| विकल्प | डिफ़ॉल्ट | विवरण |
|---|
--version | - | संस्करण दिखाएं और बाहर निकलें |
-d, --debug | false | डिबग आउटपुट दिखाएं |
--trace | false | विस्तृत ट्रेस आउटपुट दिखाएं |
--show-access-errors | false | फ़ाइल/प्रक्रिया एक्सेस त्रुटियाँ दिखाएं |
| विकल्प | विवरण |
|---|
--scan-all-drives | माउंटेड ड्राइव, नेटवर्क ड्राइव और क्लाउड स्टोरेज शामिल करें |
--scan-all-files | फ़ाइल प्रकार/एक्सटेंशन की परवाह किए बिना सभी फ़ाइलें स्कैन करें (डिफ़ॉल्ट रूप से, केवल प्रासंगिक फ़ाइल प्रकार स्कैन किए जाते हैं) |
-m, --max-file-size <BYTES> | इस आकार से बड़ी फ़ाइलें छोड़ें (डिफ़ॉल्ट: 64MB) |
--no-procs | प्रक्रिया मेमोरी स्कैनिंग पूरी तरह से छोड़ें |
--no-fs | फ़ाइलसिस्टम स्कैनिंग पूरी तरह से छोड़ें |
--no-archive | आर्काइव फ़ाइलों (ZIP) के अंदर स्कैन करना छोड़ें |
| कुंजी | क्रिया |
|---|
q | बाहर निकलें |
p | रोकें/फिर से शुरू करें |
s | वर्तमान आइटम छोड़ें |
t | थ्रेड ओवरले टॉगल करें |
+ / - | CPU सीमा समायोजित करें |
| तीर कुंजियाँ | लॉग स्क्रॉल करें |