? ? 去年服務器遇到被比特幣勒索的病毒稠诲,可以看下這篇:?
《ElasticSearch安全問題不容忽視捎泻,被黑客勒索0.1個比特幣》
?現在服務器又遇到被挖礦程序植入的病毒飒炎,下面就來簡單說下我遇到的安全問題。
現在的時代笆豁,區(qū)塊鏈技術很火郎汪,也有很大的泡沫赤赊。一直有挖礦的機器時刻在跑著,所以也會有人弄些程序病毒來植入別人的機器煞赢,幫他們挖“寶藏”抛计。
今天,看著自己的網站出現504照筑,應該就是掛了爷辱,然后就服務器上看下日志后重啟程序。但是朦肘,重啟過程異常緩慢饭弓,一直會卡在某個地方,平時一般3分鐘左右就能把服務啟動起來正常訪問媒抠,但是這次卻慢的很弟断,打開日志看,一直卡在某個地方趴生。覺得也是奇怪阀趴,又把進程kill掉,重啟苍匆。但是還是跟之前一樣慢的跟蝸牛一樣刘急。
這時,使用top命令看下有哪些進程存在浸踩,CPU占用叔汁、內存剩余大小等情況夷野,還有系統(tǒng)負載數據逗噩,發(fā)現負載都達到7以上,說明負載很大兽肤。
? ? 此刻折剃,從進程列表里面看到一個進程一直占用著很大的CPU另假,基本一直保持在45%以上,說明這個進程一直在消耗CPU怕犁,然后在top命令的操作下再敲擊c參數边篮,這時看到進程的啟動完整路徑:
root ? ? ?4946 21988 41 16:26 ? ? ? ? ?00:07:00 ./trace -r 2 -R 2 --keepalive --no-color --donate-level 1 --max-cpu-usage 80 --cpu-priority 3 --print-time 25 --threads 4 --url xmr-us-east1.nanopool.org:14444 --user 46sfbbM3XSjBo54d5a8PYUU5yQ31x6Rpv6tBhe22Cd7VYeJUyFUhzBF5rTf1oTB1d8MqgHxX5RbbEEKZd8fBAAmcFfv9Y5c --pass x --keepalive
看著這個路徑,其實也是一臉懵逼奏甫,以前都沒見過這個進程戈轿,所以很疑惑,第一感覺就懷疑是病毒扶檐,所以在網上尋找相似的問題凶杖,但是卻很少有直接相關的資料胁艰,反而關于Redis被植入挖礦程序的資料和例子不少款筑,(如果你發(fā)現你可能中的是Redis的漏洞而被植入挖礦程序的智蝠,可以看下面這兩篇博文)比如:https://www.cnblogs.com/uglyliu/p/6442427.html??和 ?https://blog.csdn.net/u013082989/article/details/51971121
但是我的問題并不太像他們描述的那樣,所以只能作為簡單的參考奈梳。
我也像上面那些博客說的那樣嘗試終止進程杈湾。
1)首先,使用iptables命令來關閉進程對網絡的訪問:
iptables -A INPUT -s?xmr-us-east1.nanopool.org?-j DROP 和 iptables -A OUTPUT -d?xmr-us-east1.nanopool.org?-j DROP
執(zhí)行完命令之后攘须,查看進程占用的CPU大小漆撞,確實有作用,相應的降到0%左右于宙,說明這個是正確的操作浮驳,但是問題還是沒有真正找到根源。
?????2)使用find查找相關的進程名捞魁,這里我的進程名是trace(這家伙還是會偽裝至会,以為是我們的常用的路由命令traceroute)
? ? find / -name trace*?
????命令執(zhí)行之后,出現好幾個與trace相關的文件名谱俭,比如:Redis奉件、Python、Jenkins昆著、logstash县貌、Hadoop等等。于是逐一排查凑懂,有的基本上就可以排除了煤痕,然后嘗試驗證,最后就發(fā)現在Jenkins上有一個trace的文件接谨。
3)找到這個文件杭攻,查看權限,確實是有執(zhí)行權限x疤坝,于是使用命令 chmod -x trace兆解,來限制其權限。
4)再次將進程trace pid進行殺掉跑揉,kill -9 tracePid锅睛。執(zhí)行之后,再次使用top命令或者ps命令查看历谍。進程trace又正常啟動著现拒,而且CPU又飆到45%以上。這是就很疑惑了望侈,可能是有定時任務或者什么機制使程序自動啟動印蔬。
5)這時就覺得應該是什么定時任務運行著,因為Linux默認有cron定時任務脱衙,我查看了下就有自己的一個任務侥猬,沒有其它的任務在cron上例驹,所以可以排除這個定時任務造成的了。
6)這時退唠,我再次查看跟trace相關的文件鹃锈,這時,發(fā)現這個文件是在Jenkins目錄之下瞧预,所以就疑惑是不是前段時間在服務器上搭建了持續(xù)集成Jenkins屎债。
7)找到罪魁禍首!
這個構建任務是什么鬼垢油,不是我建的E杈浴!滩愁!偽造Jenkins更新程序召娜??
8)我們進去看下這個構建的內容吧惊楼。
坑爹啊玖瘸,時時刻刻都在啟動。這就說明我把進程kill掉之后檀咙,他還是能夠重新執(zhí)行啟動雅倒!
9)驚現病毒腳本!;】伞蔑匣!
有編程技能的基本都能猜的出這個腳本做了什么不見得人的事了,終于真相大明了棕诵。
10)總結
此次服務器中毒并不是redis漏洞被別人植入挖礦程序裁良,而是構建軟件Jenkins被別人植入了病毒。
基本上花了一個多小時才解決了這個“坑”校套。由于是自己個人在服務器上做測試价脾,并沒有提防安全問題。如果是公司的線上問題那么問題就很大了笛匙!所以侨把,公司對于安全方面都是要特別重視和關注!
類似于Jenkins這種構建工具妹孙,一般都是內部使用秋柄,所以外部基本上不能訪問,也可以隔絕外部黑客的入侵等蠢正。直接暴露外部是非常不安全的骇笔,特別是沒有什么安全驗證,容易被別人入侵做一些非法的事情!
所以笨触,希望大家對于安全問題不容忽視懦傍,在編程開發(fā)或者架構方面,安全問題都要放在首位旭旭,不容出現一絲遺漏!
附上 Jenkins定時構建病毒程序的日志:
[2018-07-21 16:43:18] new job from xmr-us-east1.nanopool.org:14444 diff 120001
[2018-07-21 16:43:42] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:44:07] speed 2.5s/60s/15m n/a 5.2 5.0 H/s max: n/a H/s
[2018-07-21 16:44:17] new job from xmr-us-east1.nanopool.org:14444 diff 120001
[2018-07-21 16:44:32] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:44:57] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:45:22] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:45:38] no active pools, stop mining
[2018-07-21 16:45:47] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:46:12] speed 2.5s/60s/15m n/a 4.9 5.1 H/s max: n/a H/s
[2018-07-21 16:46:37] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:46:43] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:47:02] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:47:27] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:47:49] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:47:52] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:48:17] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:48:42] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:48:54] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:49:07] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:49:32] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:49:57] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:50:00] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:50:22] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:50:47] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:51:06] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:51:12] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:51:37] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:52:02] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:52:11] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:52:27] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:52:52] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:53:17] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:53:17] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:53:42] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:54:07] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:54:23] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:54:32] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:54:57] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:55:22] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:55:29] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:55:47] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:56:12] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:56:35] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:56:37] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
/tmp/jenkins6277411555610749714.sh: 行 24:? 4946 已殺死? ? ? ? ? ? ? ./trace -r 2 -R 2 --keepalive --no-color --donate-level 1 --max-cpu-usage 80 --cpu-priority 3 --print-time 25 --threads ${threadCount:-4} --url $1 --user 46sfbbM3XSjBo54d5a8PYUU5yQ31x6Rpv6tBhe22Cd7VYeJUyFUhzBF5rTf1oTB1d8MqgHxX5RbbEEKZd8fBAAmcFfv9Y5c --pass x --keepalive
/tmp/jenkins6277411555610749714.sh:行26: ./trace: 權限不夠
/tmp/jenkins6277411555610749714.sh:行26: ./trace: 權限不夠
/tmp/jenkins6277411555610749714.sh:行26: ./trace: 權限不夠
Build step '執(zhí)行 shell' marked build as failure
Finished: FAILURE
? ? ? ? ? ? ????????????????長按二維碼識別葱跋,一鍵關注干貨《搬運工來架構》