संपादित करें 2 :
एक अच्छा कारण है कि यह पोस्ट इतना ध्यान आकर्षित कर रही है: आप अपने पीसी पर एक घुसपैठिए के पूरे, लाइव सत्र को रिकॉर्ड करने में कामयाब रहे। यह हमारे रोजमर्रा के अनुभव से बहुत अलग है, जहां हम उसके कार्यों के परिणामों की खोज से निपटते हैं और उनका निवारण करने का प्रयास करते हैं। यहां हम उसे काम पर देखते हैं, उसे पिछले दरवाजे की स्थापना के साथ कुछ समस्याएँ देखते हैं, उसके कदमों को दोहराते हैं, बुखार से काम करते हैं (शायद इसलिए कि वह आपकी मेज पर बैठा था, जैसा कि ऊपर बताया गया है, या शायद, और मेरी राय में अधिक संभावना है, क्योंकि वह था) सिस्टम पर उसके मैलवेयर चलाने में असमर्थ, नीचे पढ़ें), और नियंत्रण के पूरी तरह से स्व-निहित उपकरणों को तैनात करने का प्रयास करें। यह वही है जो सुरक्षा शोधकर्ताओं ने अपने शहद के जाल के साथ प्रतिदिन देखा । मेरे लिए, यह एक बहुत ही दुर्लभ मौका है, और कुछ मनोरंजन का स्रोत है।
आप निश्चित रूप से हैक कर लिए गए हैं। इसके लिए सबूत आपके द्वारा प्रदर्शित फ़ाइल के स्निपेट से नहीं आते हैं auth.log
, क्योंकि यह एक असफल लॉगिन प्रयास की रिपोर्ट करता है, जो थोड़े समय के अंतराल (दो सेकंड) में होता है। आप देखेंगे कि दूसरी पंक्ति बताती है Failed password
, जबकि तीसरा एक pre-auth
डिस्कनेक्ट की रिपोर्ट करता है : आदमी ने कोशिश की और असफल रहा।
इसके बजाय दो फ़ाइलों की सामग्री http://222.186.30.209:65534/yjz
और http://222.186.30.209:65534/yjz1
हमलावर आपके सिस्टम पर डाउनलोड किए गए सबूत से आता है।
साइट वर्तमान में किसी को भी उन्हें डाउनलोड करने के लिए खुली है, जो मैंने किया था। मैं पहली बार file
उन पर भागा , जिससे पता चला:
$ file y*
yjz: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
yjz1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
फिर मैं उन्हें 64-बिट डेबियन वीएम पर लाया; strings
कमांड के माध्यम से उनकी सामग्री की एक परीक्षा से पता चला कि यह संदिग्ध था (विभिन्न प्रसिद्ध हमलों के संदर्भ में, आदेश के लिए प्रतिस्थापित किया जा सकता है, एक स्क्रिप्ट जिसे स्पष्ट रूप से एक नई सेवा स्थापित करने के लिए उपयोग किया गया था, और इसी तरह)।
मैंने तब दोनों फाइलों के एमडी 5-हैश का उत्पादन किया, और उन्हें Cymru के हैश डेटाबेस में यह देखने के लिए खिलाया कि क्या वे मैलवेयर के ज्ञात एजेंट हैं। जबकि yjz
, नहीं yjz1
है, और Cymru 58% के एंटी-वायरस सॉफ़्टवेयर द्वारा पता लगाने की संभावना की रिपोर्ट करता है। इसमें यह भी कहा गया है कि इस फाइल को आखिरी बार तीन दिन पहले देखा गया था, इसलिए यह यथोचित है।
मेरे द्वारा प्राप्त दो फाइलों पर क्लैमस्कैन ( clamav
पैकेज का हिस्सा ) चल रहा है:
$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND
इसलिए अब हम निश्चित हैं कि मानक लिनक्स सॉफ्टवेयर इसे पहचान सकते हैं।
आपको क्या करना चाहिये?
हालाँकि नया नहीं है, न ही सिस्टम बहुत नया है, उदाहरण के लिए XorDdos पर जनवरी 2015 का यह लेख देखें । इसलिए अधिकांश मुफ्त पैकेज इसे हटाने में सक्षम होना चाहिए। आप की कोशिश करनी चाहिए: clamav
, rkhunter
, chkrootkit
। मैं चारों ओर गुगली कर चुका हूं, और देखा कि वे इसे हाजिर करने का दावा करते हैं। पूर्ववर्ती के काम पर जांच करने के लिए उनका उपयोग करें, लेकिन इन तीन कार्यक्रमों को चलाने के बाद आपको जाने के लिए तैयार होना चाहिए।
बड़े सवाल के रूप में what should you do to prevent future infections
, जर्नीमैन का जवाब एक अच्छा पहला कदम है। बस यह ध्यान रखें कि यह एक निरंतर संघर्ष है, एक यह कि हम सब (मेरे सहित!) बहुत अच्छी तरह से जानते हुए भी बिना खोए रह सकते हैं।
संपादित करें :
विक्टर टोथ (अप्रत्यक्ष) संकेत पर, मैं कुछ टिप्पणियां जोड़ना चाहूंगा। यह निश्चित रूप से सच है कि घुसपैठिये को कुछ कठिनाइयों का सामना करना पड़ा: वह दो अलग हैकिंग टूल डाउनलोड करता है, कई बार अपनी अनुमतियों को बदलता है, कई बार उन्हें पुनरारंभ करता है, और फ़ायरवॉल को अक्षम करने के लिए कई बार कोशिश करता है। यह अनुमान लगाना आसान है कि क्या हो रहा है: वह अपने हैकिंग टूल की उम्मीद करता है कि उसके संक्रमित पीसी (बाद में देखें) में से एक की ओर एक संचार चैनल खोलने के लिए, और, जब वह इस नए चैनल वसंत को अपने नियंत्रण GUI पर नहीं देखता है, तो उसकी हैकिंग का डर है उपकरण को फ़ायरवॉल द्वारा अवरुद्ध किया जा रहा है, इसलिए वह स्थापना प्रक्रिया को दोहराता है। मैं विक्टर टोथ से सहमत हूं कि उनके ऑपरेशन का यह विशेष चरण अपेक्षित फल नहीं लाता है, लेकिन मैं आपको बहुत दृढ़ता से प्रोत्साहित करना चाहता हूं अपने पीसी पर नुकसान पहुंचाने की सीमा को कम न समझें।
मैं यहां आंशिक उत्पादन प्रदान करता हूं strings yjz1
:
etc/init.d/%s
/etc/rc%d.d/S90%s
--del
chkconfig
remove
update-rc.d
/etc/cron.hourly/gcc4.sh
/etc/rc.d/rc%d.d/S90%s
--add
defaults
/proc/%d/exe
/proc/self/exe
HOME=/
MYSQL_HISTFILE=/dev/null
#!/bin/sh
# chkconfig: 12345 90 90
# description: %s
### BEGIN INIT INFO
# Provides: %s
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop:
# Short-Description: %s
### END INIT INFO
case $1 in
start)
stop)
esac
sed -i '/\/etc\/cron.hourly\/gcc4.sh/d' /etc/crontab && echo '*/3 * * * * root /etc/cron.hourly/gcc4.sh' >> /etc/crontab
etc/init.d/%s
GET %s HTTP/1.1
%sHost: %s
POST %s HTTP/1.1
%sHost: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %d
%s%s
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; TencentTraveler ; .NET CLR 1.1.4322)
Connection: Keep-Alive
यह (में सेवाओं के साथ छेड़छाड़ के सबूत प्रदान करता है /etc/init.d
और में /etc/rc.d
,) के साथ crontab
, के इतिहास फ़ाइल के साथ mysql
, और फ़ाइलों के एक जोड़े में proc
जो करने के लिए लिंक कर रहे हैं bash
(जो एक विशेष रूप से निर्मित अपने खोल की धोखाधड़ी संस्करण का सुझाव लगाया गया है)। तब कार्यक्रम एक HTTP अनुरोध (एक चीनी भाषी साइट के लिए, उत्पन्न करता है)
Accept-Language: zh-cn
जो डेविड श्वार्ट्ज की टिप्पणी के ऊपर पदार्थ देता है), जो और भी कहर पैदा कर सकता है। अनुरोध में, बायनेरिज़ ( Content-Type: application/x-www-form-urlencoded
) को अटैक किए गए पीसी (GET) पर डाउनलोड किया जाना चाहिए और कंट्रोलिंग मशीन (POST) पर अपलोड किया जाना चाहिए। मैं यह स्थापित नहीं कर सका कि अटैक किए गए पीसी पर क्या डाउनलोड किया जाएगा, लेकिन, दोनों के छोटे आकार yjz
और yjz1
(1.1MB और 600kB, पूरी तरह से) को देखते हुए, मैं यह सुनिश्चित करने के लिए उद्यम कर सकता हूं कि रूटकिट को क्लॉक करने के लिए अधिकांश फ़ाइलों की आवश्यकता होती है, अर्थात परिवर्तित। के संस्करणों ls
, netstat
, ps
, ifconfig
, ..., इस तरह से डाउनलोड किया जा जाएगा। और यह हमलावर के बुखार को इस डाउनलोड को प्राप्त करने के प्रयासों की व्याख्या करेगा।
इस बात की कोई निश्चितता नहीं है कि उपरोक्त सभी संभावनाएँ समाप्त हो गई हैं: हम निश्चित रूप से प्रतिलेख (४५ and और ४ 48१ के बीच) के हिस्से का अभाव रखते हैं और हम एक लॉगआउट नहीं देखते हैं; इसके अलावा, विशेष रूप से चिंताजनक लाइनें 495-497 हैं,
cd /tmp; ./yd_cd/make
जो एक फ़ाइल का संदर्भ देता है जिसे हमने डाउनलोड नहीं किया था, और जो एक संकलन हो सकता है: यदि ऐसा है, तो इसका मतलब है कि हमलावर के पास (अंत में?) समझ में आया कि उसके निष्पादकों के साथ समस्या क्या थी, और इसे ठीक करने की कोशिश कर रहा है, किस स्थिति में? हमला पीसी अच्छे के लिए चला गया है। [वास्तव में, मैलवेयर के दो संस्करण जो हमलावर ने हैक की गई मशीन पर डाउनलोड किए (और मैं अपने 64 बिट डेबियन वीएम पर) एक अनुपयुक्त वास्तुकला, x86 के लिए हैं, जबकि हैक किए गए पीसी में अकेले नाम इस तथ्य को दूर करता है कि वह एक हाथ वास्तुकला के साथ काम कर रहा था]।
मेरे द्वारा संपादित किए जाने का कारण यह है कि आप अपने सिस्टम को एक पेशेवर उपकरण के साथ कंघी करने के लिए, या खरोंच से फिर से स्थापित करने के लिए दृढ़ता से आग्रह करें।
और, वैसे, क्या यह किसी के लिए उपयोगी साबित होना चाहिए, यह 331 आईपी पते की सूची है जो yjz
कनेक्ट करने की कोशिश करता है। यह सूची इतनी बड़ी है (और शायद अब भी बड़ी हो गई है) कि मेरा मानना है कि यह छेड़छाड़ का कारण है mysql
। अन्य पिछले दरवाजे द्वारा प्रदान की गई सूची समान है, जो, मुझे लगता है, इस तरह के एक महत्वपूर्ण जानकारी को खुले में छोड़ने का कारण है (मुझे लगता है कि हमलावर उन्हें कर्नेल प्रारूप में संग्रहीत करने के प्रयास नहीं करना चाहते थे, इसलिए उन्होंने पूरी सूची को एक स्पष्ट-पाठ फ़ाइल में रखा, जो संभवतया उनके बैकसाइड द्वारा, जो भी ओएस के लिए पढ़ी जाती है):
61.132.163.68
202.102.192.68
202.102.213.68
202.102.200.101
58.242.2.2
202.38.64.1
211.91.88.129
211.138.180.2
218.104.78.2
202.102.199.68
202.175.3.3
202.175.3.8
202.112.144.30
61.233.9.9
61.233.9.61
124.207.160.110
202.97.7.6
202.97.7.17
202.106.0.20
202.106.46.151
202.106.195.68
202.106.196.115
202.106.196.212
202.106.196.228
202.106.196.230
202.106.196.232
202.106.196.237
202.112.112.10
211.136.17.107
211.136.28.231
211.136.28.234
211.136.28.237
211.147.6.3
219.141.136.10
219.141.140.10
219.141.148.37
219.141.148.39
219.239.26.42
221.130.32.100
221.130.32.103
221.130.32.106
221.130.32.109
221.130.33.52
221.130.33.60
221.176.3.70
221.176.3.73
221.176.3.76
221.176.3.79
221.176.3.83
221.176.3.85
221.176.4.6
221.176.4.9
221.176.4.12
221.176.4.15
221.176.4.18
221.176.4.21
58.22.96.66
218.104.128.106
202.101.98.55
211.138.145.194
211.138.151.161
211.138.156.66
218.85.152.99
218.85.157.99
222.47.29.93
202.101.107.85
119.233.255.228
222.47.62.142
122.72.33.240
211.98.121.27
218.203.160.194
221.7.34.10
61.235.70.98
113.111.211.22
202.96.128.68
202.96.128.86
202.96.128.166
210.21.3.140
210.21.4.130
211.95.193.97
211.98.2.4
211.98.4.1
211.162.61.225
211.162.61.235
211.162.61.255
211.162.62.1
211.162.62.60
221.4.66.66
202.103.176.22
202.96.144.47
210.38.192.33
202.96.134.33
202.96.134.133
202.96.154.15
210.21.196.6
221.5.88.88
202.103.243.112
202.193.64.33
61.235.164.13
61.235.164.18
202.103.225.68
221.7.136.68
202.103.224.68
211.97.64.129
211.138.240.100
211.138.242.18
211.138.245.180
221.7.128.68
222.52.118.162
202.98.192.67
202.98.198.167
211.92.136.81
211.139.1.3
211.139.2.18
202.100.192.68
211.97.96.65
211.138.164.6
221.11.132.2
202.100.199.8
202.99.160.68
202.99.166.4
202.99.168.8
222.222.222.222
202.102.224.68
202.102.227.68
222.85.85.85
222.88.88.88
210.42.241.1
202.196.64.1
112.100.100.100
202.97.224.68
219.235.127.1
61.236.93.33
211.93.24.129
211.137.241.34
219.147.198.230
202.103.0.68
202.103.0.117
202.103.24.68
202.103.44.150
202.114.0.242
202.114.240.6
211.161.158.11
211.161.159.3
218.104.111.114
218.104.111.122
218.106.127.114
218.106.127.122
221.232.129.30
59.51.78.210
61.234.254.5
202.103.96.112
219.72.225.253
222.243.129.81
222.246.129.80
211.142.210.98
211.142.210.100
220.168.208.3
220.168.208.6
220.170.64.68
218.76.192.100
61.187.98.3
61.187.98.6
202.98.0.68
211.93.64.129
211.141.16.99
202.98.5.68
219.149.194.55
211.138.200.69
202.102.3.141
202.102.3.144
58.240.57.33
112.4.0.55
114.114.114.114
114.114.115.115
202.102.24.34
218.2.135.1
221.6.4.66
221.131.143.69
202.102.8.141
222.45.0.110
61.177.7.1
218.104.32.106
211.103.13.101
221.228.255.1
61.147.37.1
222.45.1.40
58.241.208.46
202.102.9.141
202.102.7.90
202.101.224.68
202.101.226.68
211.141.90.68
211.137.32.178
202.96.69.38
211.140.197.58
219.149.6.99
202.96.86.18
101.47.189.10
101.47.189.18
118.29.249.50
118.29.249.54
202.96.64.68
202.96.75.68
202.118.1.29
202.118.1.53
219.148.204.66
202.99.224.8
202.99.224.67
211.90.72.65
211.138.91.1
218.203.101.3
202.100.96.68
211.93.0.81
222.75.152.129
211.138.75.123
202.102.154.3
202.102.152.3
219.146.1.66
219.147.1.66
202.102.128.68
202.102.134.68
211.138.106.19
211.90.80.65
202.99.192.66
202.99.192.68
61.134.1.4
202.117.96.5
202.117.96.10
218.30.19.40
218.30.19.50
116.228.111.118
180.168.255.18
202.96.209.5
202.96.209.133
202.101.6.2
211.95.1.97
211.95.72.1
211.136.112.50
211.136.150.66
119.6.6.6
124.161.97.234
124.161.97.238
124.161.97.242
61.139.2.69
202.98.96.68
202.115.32.36
202.115.32.39
218.6.200.139
218.89.0.124
61.139.54.66
61.139.39.73
139.175.10.20
139.175.55.244
139.175.150.20
139.175.252.16
168.95.1.1
210.200.211.193
210.200.211.225
211.78.130.1
61.31.1.1
61.31.233.1
168.95.192.1
168.95.192.174
61.60.224.3
61.60.224.5
202.113.16.10
202.113.16.11
202.99.96.68
202.99.104.68
211.137.160.5
211.137.160.185
219.150.32.132
202.98.224.68
211.139.73.34
61.10.0.130
61.10.1.130
202.14.67.4
202.14.67.14
202.45.84.58
202.45.84.67
202.60.252.8
202.85.128.32
203.80.96.9
203.142.100.18
203.142.100.21
203.186.94.20
203.186.94.241
221.7.1.20
61.128.114.133
61.128.114.166
218.202.152.130
61.166.150.123
202.203.128.33
211.98.72.7
211.139.29.68
211.139.29.150
211.139.29.170
221.3.131.11
222.172.200.68
61.166.150.101
61.166.150.139
202.203.144.33
202.203.160.33
202.203.192.33
202.203.208.33
202.203.224.33
211.92.144.161
222.221.5.240
61.166.25.129
202.96.103.36
221.12.1.227
221.130.252.200
222.46.120.5
202.96.96.68
218.108.248.219
218.108.248.245
61.130.254.34
60.191.244.5
202.96.104.15
202.96.104.26
221.12.33.227
202.96.107.27
61.128.128.68
61.128.192.68
218.201.17.2
221.5.203.86
221.5.203.90
221.5.203.98
221.7.92.86
221.7.92.98
निम्नलिखित कोड
#!/bin/bash
echo 0 > out
while read i; do
whois $i | grep -m 1 -i country >> out
done < filename
cat out | grep -i cn | wc -l
उपरोक्त सूची से पता चलता है कि कुल 331 पतों में से 302 मुख्य भूमि चीन में हैं, शेष हांगकांग, मंगोलिया, ताइवान में हैं। यह डेविड श्वार्ट्ज के विवाद के आगे समर्थन को जोड़ता है कि यह ज्यादातर चीनी बॉट रिंग है।
EDIT 3
@ वैद के अनुरोध पर (ओपी के लेखक, उनकी टिप्पणी नीचे पढ़ें), मैं एक टिप्पणी जोड़ूंगा कि एक बुनियादी लिनक्स सिस्टम की सुरक्षा को कैसे मजबूत किया जाए (कई सेवाओं को प्रदान करने वाली प्रणाली के लिए, यह कहीं अधिक जटिल विषय है)। vaid
उन्होंने कहा कि राज्यों ने किया:
सिस्टम को पुनर्स्थापित करें
रूट कम पासवर्ड को 16 कैरेक्टर लॉन्ग पासवर्ड को मिक्स्ड लोअर और अपरकेस अक्षरों और अक्षरों और अंकों के साथ बदल दिया।
उपयोगकर्ता नाम को 6 मिश्रित वर्ण लंबे उपयोगकर्ता नाम में बदल दिया और रूट के लिए उपयोग किए गए समान पासवर्ड को लागू किया
5000 से ऊपर कुछ करने के लिए SSH पोर्ट बदल दिया
SSH रूट लॉगिन को बंद कर दिया।
यह ठीक है (इसके अलावा मैं 10,000 से ऊपर के पोर्ट का उपयोग करता हूं क्योंकि कई उपयोगी प्रोग्राम 10,000 से नीचे के पोर्ट का उपयोग करते हैं)। लेकिन मैं पासवर्ड के बजाय ssh लॉगिन के लिए क्रिप्टोग्राफिक कुंजियों का उपयोग करने की आवश्यकता पर जोर नहीं दे सकता । मैं आपको एक व्यक्तिगत उदाहरण दूंगा। मेरे एक VPSes पर, मैं अनिश्चित था कि ssh पोर्ट को बदलना है या नहीं; मैंने इसे 22 पर छोड़ दिया, लेकिन प्रमाणीकरण के लिए क्रिप्टो कुंजी का इस्तेमाल किया। मेरे पास प्रति दिन सैकड़ों ब्रेक-इन के प्रयास थे , कोई भी सफल नहीं हुआ। जब, दैनिक जांच करने के लिए थक गया कि कोई भी सफल नहीं हुआ था, तो मैंने अंततः पोर्ट को 10,000 से ऊपर की चीज पर स्विच कर दिया, ब्रेक-इन प्रयास शून्य हो गया। आप पर ध्यान दें, ऐसा नहीं है कि हैकर्स बेवकूफ हैं (वे नहीं हैं!), वे बस आसान शिकार का शिकार करते हैं।
RSA के साथ हस्ताक्षर एल्गोरिथ्म के रूप में एक क्रिप्टो कुंजी को सक्रिय करना आसान है, नीचे जनवरी हडेक (धन्यवाद!) द्वारा टिप्पणी देखें:
cd; mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -t rsa (then hit <kbd>ENTER>/kbd> three times); cat id_rsa.pub >> authorized_keys; chmod 600 *
अब आपको बस इतना करना है कि फाइल id_rsa
को उस मशीन पर कॉपी करना है जिससे आप कनेक्ट करना चाहते हैं (एक डायरेक्टरी में .ssh
, chmod
'एड टू 700'), फिर कमांड जारी करें
ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine
जब आप सुनिश्चित हों कि यह काम करता है, फ़ाइल पर सर्वर (= मशीन जिसे आप कनेक्ट करना चाहते हैं) को संपादित करें /etc/ssh/sshd_config
और लाइन बदलें
#PasswordAuthentication yes
सेवा
PasswordAuthentication no
और ssh
सेवा को पुनः आरंभ करें ( service ssh restart
या systemctl restart ssh
डिस्ट्रो के आधार पर ऐसा कुछ, या)।
इससे बहुत कुछ झेलना पड़ेगा। वास्तव में, वर्तमान में openssh v2
और के रूप में RSA के मौजूदा संस्करणों के खिलाफ कोई ज्ञात कारनामे नहीं हैं openssh v2
।
अंत में, वास्तव में अपनी मशीन को नीचे झुकाने के लिए, आपको फ़ायरवॉल (नेटफिल्टर / आईपी-टेबल्स) को निम्नानुसार कॉन्फ़िगर करना होगा:
iptables -A INPUT -p tcp --dport YourChosenNonStandardPort -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
यह, 1) LAN और WAN दोनों से ssh कनेक्शन की अनुमति देता है, 2) आपके अनुरोध से उत्पन्न सभी इनपुट की अनुमति देता है (उदाहरण के लिए, जब आप एक वेब पेज लोड करते हैं), 3) इनपुट पर बाकी सब कुछ छोड़ देता है, 4) सब कुछ पर अनुमति देता है आउटपुट, और 5-6) लूपबैक इंटरफेस पर सब कुछ की अनुमति देता है।
जैसे-जैसे आपकी ज़रूरतें बढ़ती हैं, और अधिक पोर्ट खोलने की आवश्यकता होती है, आप ऐसा कर सकते हैं, सूची के शीर्ष पर, नियम जैसे:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
उदाहरण के लिए लोगों को अपने वेब ब्राउज़र का उपयोग करने की अनुमति देना।