
linux सुरक्षा जांच
लिनक्स सर्वर के लिए क्रिप्टो-माइनर डिटेक्शन, रिमूवल और हार्डनिंग टूलकिट।
वास्तविक घटना प्रतिक्रिया से निर्मित — उन माइनर्स का पता लगाता है जो रूटकिट तकनीकों का उपयोग करके
ps,top,htopऔरbtopसे छिपते हैं।
git clone https://gitlab.com/abdom.seada/security-checks.git
cd security-checks
sudo bash setup.sh
🔀 शाखा:
master— यह टूलकिटmasterशाखा पर रहता है। अन्य सुरक्षा स्क्रिप्ट भविष्य में अलग-अलग शाखाओं पर जोड़ी जा सकती हैं।
⚠️ क्लोन करने के तुरंत बाद एक बार
setup.shचलाएँ — इसे छोड़ना त्रुटियों का #1 कारण है।
sudo bash setup.sh
setup.sh स्वचालित रूप से सब कुछ संभालता है:
सेटअप सफल होने पर अपेक्षित आउटपुट:
✅ Setup complete — all checks passed!
Next steps:
sudo ./miner-hunter scan # Safe read-only scan
sudo ./miner-hunter full # Scan → Kill → Harden
💡 यह क्यों आवश्यक है? लिनक्स किसी फ़ाइल को तब तक निष्पादित नहीं करेगा जब तक उसके पास
+xफ़्लैग न हो। Git और SCP ट्रांसफ़र इसे हटा देते हैं।setup.shसभी फ़ाइलों को एक बार में ठीक करता है — जिसमेंlib/मॉड्यूल भी शामिल हैं जिन पर मुख्य स्क्रिप्ट निर्भर करती है।
sudo ./miner-hunter scan # ✅ Safe — read-only, zero changes
sudo ./miner-hunter full # ⚠️ Full pipeline: Scan → Kill → Harden
sudo ./miner-hunter scan --dry-run # 👁️ Preview mode — shows what would happen
| विकल्प | विवरण |
|---|---|
-d, --dry-run |
वास्तविक दुनिया की स्थितियाँ और प्रत्येक में वास्तव में क्या चलाना है।
top कुछ नहीं दिखाता"यह क्लासिक रूटकिट लक्षण है। माइनर उपयोगकर्ता स्थान के उपकरणों से छिप रहा है लेकिन हार्डवेयर प्रदर्शन काउंटरों से नहीं छिप सकता।
# चरण 1: पहले एक सुरक्षित स्कैन चलाएँ — कुछ भी छूने से पहले पुष्टि करें कि वहाँ क्या है
sudo ./miner-hunter scan
यदि माइनर मौजूद है तो आप क्या देखेंगे:
🚨 [CRITICAL] CPU anomaly: 97% user CPU but top shows max 2% per process
🚨 [CRITICAL] perf detected 4 hidden threads consuming ~94% total CPU
🚨 [CRITICAL] Active connection to 185.x.x.x:9200 (known mining port)
🚨 [CRITICAL] Fake kernel thread PID=3421 NAME=[kworker/0:1] EXE=/tmp/.x/miner
# चरण 2: माइनर को मारें और उसके पूल को ब्लॉक करें
sudo ./miner-hunter kill
# चरण 3: सर्वर को इस तरह सख्त करें कि वह वापस न आ सके
sudo ./miner-hunter harden
आपने कुछ संदिग्ध देखा — असामान्य आउटगोइंग ट्रैफ़िक, एक क्रॉन जॉब जो आपने नहीं बनाया, एक अजीब नाम वाली प्रक्रिया — लेकिन आप निश्चित नहीं हैं।
# एक पूर्ण स्कैन चलाएँ — पूरी तरह से सुरक्षित, केवल-पढ़ने के लिए, शून्य परिवर्तन
sudo ./miner-hunter scan
# फिर संरचित रिपोर्ट पढ़ें
sudo ./miner-hunter report
/root/miner_evidence_*/report.txt पर रिपोर्ट प्रत्येक निष्कर्ष को गंभीरता के अनुसार वर्गीकृत करती है:
[CRITICAL] प्रविष्टियाँ → तुरंत kill पर जाएँ[WARNING] प्रविष्टियाँ → कार्रवाई करने से पहले मैन्युअल रूप से समीक्षा करेंमाइनर के पास एक स्थायित्व तंत्र है — एक क्रॉन जॉब, systemd सेवा, PM2 प्रविष्टि, या शेल प्रोफ़ाइल बैकडोर जो इसे मारने के बाद फिर से जीवित कर देता है।
sudo ./miner-hunter scan
आउटपुट में इन्हें देखें:
⚠️ [WARN] Suspicious cron entry: * * * * * /tmp/.x/update
🚨 [CRITICAL] Malicious systemd service: /etc/systemd/system/update-check.service
🚨 [CRITICAL] PM2 process 'app-worker' has 8432 restarts — likely miner respawn loop
🚨 [CRITICAL] Shell profile backdoor detected in /root/.bashrc
# kill सभी स्थायित्व आर्टिफैक्ट को हटा देता है — सिर्फ चल रही प्रक्रिया को नहीं
sudo ./miner-hunter kill
# फिर वॉचडॉग स्थापित करने के लिए harden चलाएँ ताकि कुछ भी पुनर्जीवित होने पर आपको सचेत किया जाए
sudo ./miner-hunter harden
💡
killके बाद, वॉचडॉग क्रॉन हर 5 मिनट में चलता है और/var/log/miner_hunter/watchdog_alerts.logमें लॉग करता है — आपको तुरंत पता चल जाएगा कि कुछ वापस आया है।
तैनाती से पहले सक्रिय हार्डनिंग — कोई माइनर नहीं, कोई घटना नहीं, बस चीजों को बंद करना।
# अकेले harden चलाएँ — scan या kill की आवश्यकता नहीं
sudo ./miner-hunter harden
यह करेगा:
sshd जेल के साथ सक्रिय है/usr/bin अखंडता बेसलाइन बनाएँ (MD5 चेकसम — ताकि आप बाद में छेड़छाड़ किए गए बाइनरी का पता लगा सकें)kill के बाद, सत्यापन चरण रिपोर्ट करता है कि माइनर अभी भी चल रहा हो सकता है:
⚠️ MINER MAY HAVE RESPAWNED
CPU: 89% | Mining conns: 1
Firewall blocks are in place — miner can't reach pool
Consider a REBOOT or OS REINSTALL
# 1. फ़ायरवॉल ब्लॉक पहले से मौजूद हैं — माइनर अपने पूल तक नहीं पहुँच सकता
# पुष्टि करें कि ब्लॉक सक्रिय हैं:
iptables -L OUTPUT -n | grep DROP
# 2. यह देखने के लिए दूसरा स्कैन चलाएँ कि क्या बच गया
sudo ./miner-hunter scan
# 3. प्रक्रिया को छिपाने वाले कर्नेल मॉड्यूल रूटकिट की जाँच करें
lsmod | grep -iE 'diamorphine|reptile|kovid|rootkit'
# 4. गैर-शून्य taint = आउट-ऑफ-ट्री कर्नेल मॉड्यूल लोड (रूटकिट संकेतक)
cat /proc/sys/kernel/tainted
यदि कर्नेल taint मान गैर-शून्य है या कोई ज्ञात रूटकिट मॉड्यूल दिखाई देता है — माइनर के पास कर्नेल-स्तरीय नियंत्रण है। इस बिंदु पर सबसे सुरक्षित मार्ग एक ज्ञात-स्वच्छ स्नैपशॉट से पूर्ण OS पुनर्स्थापना है।
harden के बाद, वॉचडॉग क्रॉन पहले से स्थापित है। इसके साथ काम करने का तरीका यहाँ है:
# अलर्ट लॉग को रीयल टाइम में देखें
tail -f /var/log/miner_hunter/watchdog_alerts.log
# पुष्टि करें कि वॉचडॉग क्रॉन जॉब पंजीकृत है
cat /etc/cron.d/miner-watchdog
# अपना बेसलाइन लेने के बाद से /usr/bin बाइनरी में बदलाव की जाँच करें
md5sum --check /var/lib/miner_hunter/usrbin_baseline.md5 --quiet
अंतिम कमांड से कोई भी आउटपुट का अर्थ है कि आपके बेसलाइन के बाद एक सिस्टम बाइनरी को संशोधित किया गया था — तुरंत जाँच करें।
| तकनीक | यह क्या पकड़ता है |
|---|---|
perf हार्डवेयर PMC प्रोफाइलिंग | छिपे हुए CPU उपभोक्ता — रूटकिट हार्डवेयर काउंटरों को नकली नहीं बना सकते |
जब आप sudo ./miner-hunter kill चलाते हैं, तो यह सटीक क्रम है:
DROP नियम लागू किए जाते हैं, ताकि माइनर पुनर्जीवित होने पर भी पुनः कनेक्ट न हो सकेSIGKILL के साथ TGID (थ्रेड ग्रुप लीडर PID) को लक्षित करता हैperf और /proc/net/tcp को फिर से चलाता हैsecurity-checks/ ← रिपोज़िटरी रूट (master शाखा)
├── miner-hunter # प्रवेश बिंदु — यह वह है जिसे आप चलाते हैं
├── setup.sh # ⚙️ पहली बार सेटअप — क्लोन करने के बाद एक बार चलाएँ
├── lib/
│ ├── common.sh # साझा उपयोगिताएँ: लॉगिंग, रंग, सहायक
│ ├── detect_hidden.sh # छिपी प्रक्रिया और रूटकिट का पता लगाना
│ ├── detect_cpu.sh # CPU प्रोफाइलिंग perf और /proc के माध्यम से
│ ├── detect_network.sh # माइनिंग पूल कनेक्शन का पता लगाना
│ ├── detect_persistence.sh # स्थायित्व तंत्र का पता लगाना
│ ├── kill_miner.sh # प्रक्रिया को मारना और आर्टिफैक्ट हटाना
│ └── harden.sh # घटना के बाद हार्डनिंग
├── README.md
└── LICENSE
प्रत्येक रन उत्पन्न करता है:
यह उपकरण एक क्रिप्टो माइनर के खिलाफ सक्रिय घटना प्रतिक्रिया के दौरान बनाया गया था जो:
next रख लेता थाkthreadd था — एक वास्तविक कर्नेल थ्रेड नाम/proc/PID/exe → (deleted))ps, top, htop और btop के लिए पूरी तरह से अदृश्य थाperf हार्डवेयर CPU काउंटर प्रोफाइलिंग के माध्यम से ही पता लगाया जा सकता थाMIT
| चरण | यह क्या करता है |
|---|
| ✅ अनुमतियाँ | miner-hunter और सभी lib/*.sh स्क्रिप्ट पर chmod +x |
| ✅ निर्देशिकाएँ | /var/log/miner_hunter/ और /var/lib/miner_hunter/ बनाता है (केवल रूट, 700) |
| ✅ निर्भरताएँ | perf, mpstat, iptables, fail2ban, bc, strings की जाँच करता है — गायब को स्वचालित रूप से इंस्टॉल करता है |
| ✅ स्व-परीक्षण | सब कुछ सही ढंग से जुड़ा है यह पुष्टि करने के लिए ./miner-hunter --version चलाता है |
| कमांड | विवरण | सिस्टम में बदलाव करता है? |
|---|
scan | पूर्ण डिटेक्शन स्कैन — छिपी प्रक्रियाएँ, CPU, नेटवर्क, स्थायित्व | ✅ नहीं |
kill | पहचाने गए माइनर्स को मारें, पूल IP को ब्लॉक करें, आर्टिफैक्ट हटाएँ | ⚠️ हाँ |
harden | घटना के बाद हार्डनिंग — SSH, फ़ायरवॉल, वॉचडॉग, इंटीग्रिटी बेसलाइन | ⚠️ हाँ |
full | चरणों के बीच पुष्टि संकेतों के साथ scan → kill → harden चलाता है | ⚠️ हाँ |
report | सबसे हालिया स्कैन रिपोर्ट प्रदर्शित करें | ✅ नहीं |
| कोई बदलाव किए बिना सभी क्रियाओं का पूर्वावलोकन करें |
-e, --evidence DIR | /root/miner_evidence_* के बजाय कस्टम निर्देशिका में साक्ष्य सहेजें |
-h, --help | सहायता दिखाएँ |
-v, --version | संस्करण दिखाएँ |
| तकनीक | यह क्या पकड़ता है |
|---|
/proc बनाम ps तुलना | उपयोगकर्ता स्थान के उपकरणों के लिए अदृश्य प्रक्रियाएँ |
| LD_PRELOAD अपहरण | प्रक्रियाओं को छिपाने के लिए libc को हुक करने वाली दुर्भावनापूर्ण साझा लाइब्रेरी |
| कर्नेल मॉड्यूल रूटकिट | Diamorphine, Reptile, Kovid, और अन्य ज्ञात रूटकिट |
| नकली कर्नेल थ्रेड | [kworker], [kthreadd], [kswapd] के रूप में प्रच्छन्न माइनर |
| संशोधित सिस्टम बाइनरी | बदले गए ps, top, ls, ss, netstat |
/proc डेल्टा सैंपलिंग |
| प्रति PID प्रत्यक्ष कर्नेल-स्तरीय CPU लेखांकन |
| CPU विसंगति का पता लगाना | उच्च %user CPU जिसमें कोई दृश्य प्रक्रिया नहीं जो इसे समझा सके |
| तकनीक | यह क्या पकड़ता है |
|---|
/proc/net/tcp प्रत्यक्ष पढ़ना | सक्रिय कनेक्शन — हुक किए गए ss/netstat को दरकिनार करता है |
| माइनिंग पोर्ट डिटेक्शन | पोर्ट 3333, 4444, 5555, 7777, 9200, 14433, 14444, 45560 |
| माइनिंग डोमेन रिज़ॉल्यूशन | ज्ञात पूल डोमेन को हल करता है और सक्रिय कनेक्शनों की क्रॉस-चेक करता है |
| सॉकेट-टू-PID मैपिंग | पता लगाता है कि कौन सी प्रक्रिया प्रत्येक माइनिंग कनेक्शन की मालिक है |
| स्थान | यह क्या जाँचता है |
|---|
| क्रॉन | /etc/cron*, /var/spool/cron/, सभी उपयोगकर्ता क्रॉनटैब |
| Systemd | सभी यूनिट फ़ाइलें और टाइमर संदिग्ध प्रविष्टियों के लिए |
| Udev नियम | डिवाइस ईवेंट पर हार्डवेयर-ट्रिगर्ड निष्पादन |
| PM2 | अत्यधिक पुनरारंभ गणना वाली Node.js प्रक्रिया प्रबंधक प्रविष्टियाँ |
| शेल प्रोफ़ाइल | .bashrc, .bash_profile, /etc/profile, /etc/profile.d/* |
| SSH | सभी उपयोगकर्ताओं में सभी authorized_keys फ़ाइलें |
| वेबशेल | Node.js प्रोजेक्ट निर्देशिकाओं के अंदर PHP फ़ाइलें |
| XMRig कॉन्फ़िग | सामान्य माइनर ड्रॉप स्थानों में config.json |
| कार्रवाई | विवरण |
|---|
| फ़ायरवॉल स्थायित्व | हर रीबूट पर iptables माइनिंग ब्लॉक को पुनर्स्थापित करने के लिए systemd सेवा |
| SSH ऑडिट | PermitRootLogin, PasswordAuthentication, MaxAuthTries की जाँच करता है — अनुशंसित मान प्रिंट करता है |
| Fail2ban जाँच | सत्यापित करता है कि sshd जेल सक्रिय है और वर्तमान में प्रतिबंधित IP की रिपोर्ट करता है |
| माइनर वॉचडॉग | हर 5 मिनट में क्रॉन जॉब — CPU विसंगति, LD_PRELOAD, माइनिंग पोर्ट, PHP वेबशेल की जाँच करता है |
/usr/bin बेसलाइन | भविष्य में छेड़छाड़ का पता लगाने के लिए /usr/bin में सभी बाइनरी के MD5 चेकसम |
| आवश्यकता | विवरण |
|---|
| OS | लिनक्स — Ubuntu 24.04 LTS, Debian 13 पर परीक्षण किया गया |
| विशेषाधिकार | root (sudo) के रूप में चलना चाहिए |
| setup.sh द्वारा स्वचालित रूप से स्थापित | perf, mpstat (sysstat), bc, strings (binutils) |
| अनुशंसित | fail2ban — गायब होने पर ध्वजांकित किया जाता है, स्वचालित रूप से स्थापित नहीं किया जाता |
| आवश्यक (स्वचालित रूप से स्थापित नहीं) | iptables — kill/harden चरणों के लिए मौजूद होना चाहिए |
| आउटपुट | स्थान | सामग्री |
|---|
| साक्ष्य निर्देशिका | /root/miner_evidence_YYYYMMDD_HHMMSS/ | कैप्चर की गई बाइनरी, perf रिपोर्ट, माइनर कॉन्फ़िग |
| लॉग फ़ाइल | /var/log/miner_hunter/run_YYYYMMDD_HHMMSS.log | पूर्ण टाइमस्टैम्प वाला रन लॉग |
| रिपोर्ट | evidence_dir/report.txt | गंभीरता के साथ संरचित निष्कर्ष सारांश |
| वॉचडॉग अलर्ट | /var/log/miner_hunter/watchdog_alerts.log | harden के बाद चल रहे अलर्ट |
| अखंडता बेसलाइन | /var/lib/miner_hunter/usrbin_baseline.md5 | harden के बाद /usr/bin चेकसम |