本故事根據上次的挖礦病毒事件改編nginx
傍晚時分,警報聲乍起,整個Linux帝國都陷入了驚恐之中。
web

安所有長迅速召集你們商討應對之策。redis
「諸位,突發狀況,CPU佔用率忽然飆升,而且長時間沒有降下來的趨勢,CPU工廠的阿Q向咱們表達了強烈抗議」編程
這時,一旁的kill命令說到:「部長莫急,叫top老哥看一下誰在佔用CPU,拿到進程號pid,我把他幹掉就行了」安全
此言一出,在座的大夥都點頭讚許,驚恐之色稍解。微信
top命令站了起來,面露得意之色,說到:「你們請看好了」,說完,打印出了當前的進程列表:網絡

衆人瞪大了眼睛,瞅了半天,也沒看出哪一個進程在瘋狂佔用CPU,top老哥這下尷尬了。app
這時,一旁的ps命令湊了上來,「讓我來試試」curl
ps命令深吸了一口氣,也打印出了進程列表。socket
然而,依舊沒有任何可疑的進程。
「你倆怎麼回事,爲何沒有?」,安所有長有些不悅。
「部長,我倆都是遍歷的 /proc/ 目錄下的內容,按理說,全部的進程都會在這裏啊,我也想不通爲何找不到···」,top老哥委屈的說到。
「遍歷,怎麼遍歷的?」
「就是經過opendir/readdir這些系統調用函數來遍歷的,這都是帝國提供的標準接口,應該不會出錯,除非···」,說到這,top打住了。
「除非什麼?」
「除非這些系統調用把那個進程給過濾掉了,那樣的話我就看不到了,難道有人潛入帝國內核,篡改了系統調用?」
安所有長瞪大了眼睛,真要如此,那但是大事啊!
眼看部長急的團團轉,一旁的netstat起身說到:「部長,我以前結識一好友,名叫unhide,捉拿隱藏進程是他的拿手好戲,要不請他來試試?」
部長大喜,「還猶豫什麼,趕忙去請啊!」
「已經聯繫了,隨後就到」
部長看着netstat,說到:「正好,趁着這個功夫,你先來看看如今有沒有對外可疑的鏈接」
netstat點了點頭,隨後打印出了全部的網絡鏈接信息:

「來來來,大家挨個來認領,看看都是誰的」,部長說到。
「這個80端口的服務是個人」,nginx站了出來。
「這個6379端口服務是個人」,redis也站了出來。
「這個,9200是個人」,elasticsearch說到。
「3306那個是個人」
「8182是個人」
······
一陣嘈雜後,只剩下一個鏈接無人認領:
tcp 0 0 192.168.0.4:51854 88.99.193.240:7777 ESTABLISHED -
「部長,這八成就是躲在暗處那傢伙的鏈接」,netstat說到。
安所有長思考片刻問到:「curl何在?來訪問下這個IP地址,探探對方虛實」
curl站了出來,「來了來了」
curl當心翼翼的發送了一個HTTP請求過去,對方居然回信了:

一行醒目的mining poll出如今你們面前。
「挖,挖礦病毒!」,top老哥叫了出來。
這一下,在場全部的人都倒吸了一口涼氣。
部長趕忙叫防火牆firewall配置了一條規則,將這條鏈接掐斷。
就在這時,unhide走了進來。
簡單瞭解了狀況後,unhide拍拍胸脯說到:「這事交給我了,必定把這傢伙給揪出來」
隨後,unhide一陣操做猛如虎,輸出了幾行信息:
Found HIDDEN PID 13053
Executable: "/usr/bin/pamdicks"
$USER=root
Found HIDDEN PID 13064
Executable: "/usr/bin/pamdicks"
$USER=root
衆人皆湊了過來,瞪大了眼睛,unhide老哥果真不是蓋的,果然發現了幾個可疑分子。
top有點表示懷疑,問到:「敢問兄臺用的什麼路數,爲什麼我等都看不到這幾個進程的存在?」
unhide笑道:「沒什麼神祕的,其實我也是遍歷 /proc/ 目錄,和大家不一樣的是,我不用readdir,而是從進程id最小到最大,挨個訪問 /proc/$pid 目錄,一旦發現目錄存在並且不在ps老哥的輸出結果中,那這就是一個隱藏進程。」
一旁的ps笑道:「原來還有個人功勞吶」
「找到了,就是這傢伙!」,netstat大聲說到。

「你怎麼這麼確定?」部長問到。
「你們請看,進程打開的文件都會在 /proc/pid/fd 目錄下,socket也是文件,我剛看了一下,這個進程恰好有一個socket。再結合/proc/tcp信息,能夠肯定這個socket就是目標端口號7777的那一條!」
「好傢伙!好傢伙」,衆人皆嘖嘖稱讚。
「還等什麼,快讓我來幹掉它吧!」,kill老哥已經按捺不住了。
「讓我來把它刪掉」,rm小弟也磨刀霍霍了。
部長搖頭說到:「且慢,cp何在,把這傢伙先備份到隔離目錄去,以待秋後算帳」
cp拷貝完成,kill和rm兩位一塊兒上,把背後這傢伙就地正法了。
top趕忙查看了最新的資源使用狀況,驚喜的歡呼:「好了好了,CPU佔用率總算降下去了,真是大快人心」
天色已然不早,沒多久,衆人前後離開,帝國恢復了往日的平靜。
不過,安所有長的臉上,仍然是一臉愁容。
「部長,病毒已經被清除,爲什麼仍是悶悶不樂呢?」,助理問到。
「病毒雖已清除,但殊不知這傢伙是如何闖入的,還有背後暗中保護隱藏它的人又是誰,這實讓我在很憂心啊」

不知不覺夜已深,帝國安全警報忽然再一次響了起來。
「這又是怎麼回事?」,部長厲聲問到。
「部長,rm那小子是假冒的,今天他騙了咱們,病毒根本沒刪掉,又捲土重來了!」
部長望向遠處的天空,CPU工廠門口的風扇又開始瘋狂地轉了起來···

今天的文章就完啦,下面說一件大大大事兒···
掘金網的2020年度創做者評選活動開始了,2020這一年,軒轅創做了100+原創文章,超過40W+字,看到這裏的朋友順手幫我投一票,謝謝你們了🙏
投票入口:
不想識別二維碼的朋友,點擊下面的閱讀原文也能一鍵直達哦~
PS:上面的連接能夠投一次,掘金APP裏還能夠投一次,分享連接給文件傳輸助手刷新後還能再投一次

往期TOP5文章

本文分享自微信公衆號 - 編程技術宇宙(xuanyuancoding)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。