
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