CPU深夜狂飆,一幫大佬都傻眼了...
圖片來(lái)自 Pexels
安全部長(zhǎng)迅速召集大家商討應(yīng)對(duì)之策。
“諸位,突發(fā)情況,CPU 占用率突然飆升,并且長(zhǎng)時(shí)間沒(méi)有降下來(lái)的趨勢(shì),CPU 工廠的阿 Q 向我們表達(dá)了強(qiáng)烈抗議。”
這時(shí),一旁的 kill 命令說(shuō)到:“部長(zhǎng)莫急,叫 top 老哥看一下誰(shuí)在占用 CPU,拿到進(jìn)程號(hào) pid,我把他干掉就好了。”
此言一出,在座的大伙都點(diǎn)頭贊許,驚恐之色稍解。
top 命令站了起來(lái),面露得意之色,說(shuō)到:“大家請(qǐng)看好了”,說(shuō)完,打印出了當(dāng)前的進(jìn)程列表:
眾人瞪大了眼睛,瞅了半天,也沒(méi)看出哪個(gè)進(jìn)程在瘋狂占用 CPU,top 老哥這下尷尬了。
這時(shí),一旁的 ps 命令湊了上來(lái),“讓我來(lái)試試。”
ps 命令深吸了一口氣,也打印出了進(jìn)程列表。然而,依舊沒(méi)有任何可疑的進(jìn)程。
“你倆怎么回事,為什么沒(méi)有?”,安全部長(zhǎng)有些不悅。
“部長(zhǎng),我倆都是遍歷的 /proc/ 目錄下的內(nèi)容,按理說(shuō),所有的進(jìn)程都會(huì)在這里啊,我也想不通為什么找不到···”,top 老哥委屈的說(shuō)到。
“遍歷,怎么遍歷的?”
“就是通過(guò) opendir/readdir 這些系統(tǒng)調(diào)用函數(shù)來(lái)遍歷的,這都是帝國(guó)提供的標(biāo)準(zhǔn)接口,應(yīng)該不會(huì)出錯(cuò),除非···”,說(shuō)到這,top 打住了。
“除非什么?”
“除非這些系統(tǒng)調(diào)用把那個(gè)進(jìn)程給過(guò)濾掉了,那樣的話(huà)我就看不到了,難道有人潛入帝國(guó)內(nèi)核,篡改了系統(tǒng)調(diào)用?”
安全部長(zhǎng)瞪大了眼睛,真要如此,那可是大事啊!
眼看部長(zhǎng)急的團(tuán)團(tuán)轉(zhuǎn),一旁的 netstat 起身說(shuō)到:“部長(zhǎng),我之前結(jié)識(shí)一好友,名叫 unhide,捉拿隱藏進(jìn)程是他的拿手好戲,要不請(qǐng)他來(lái)試試?”
部長(zhǎng)大喜,“還猶豫什么,趕緊去請(qǐng)啊!”
“已經(jīng)聯(lián)系了,隨后就到。”
部長(zhǎng)看著 netstat,說(shuō)到:“正好,趁著這個(gè)功夫,你先來(lái)看看現(xiàn)在有沒(méi)有對(duì)外可疑的連接。”
netstat 點(diǎn)了點(diǎn)頭,隨后打印出了所有的網(wǎng)絡(luò)連接信息:
“來(lái)來(lái)來(lái),你們挨個(gè)來(lái)認(rèn)領(lǐng),看看都是誰(shuí)的”,部長(zhǎng)說(shuō)到。
“這個(gè) 80 端口的服務(wù)是我的”,nginx 站了出來(lái)。
“這個(gè) 6379 端口服務(wù)是我的”,redis 也站了出來(lái)。
“這個(gè),9200 是我的”,elasticsearch 說(shuō)到。
“3306 那個(gè)是我的”
“8182 是我的”
······
一陣嘈雜后,只剩下一個(gè)連接無(wú)人認(rèn)領(lǐng):
- tcp 0 0 192.168.0.4:51854 88.99.193.240:7777 ESTABLISHED -
“部長(zhǎng),這八成就是躲在暗處那家伙的連接”,netstat 說(shuō)到。
安全部長(zhǎng)思考片刻問(wèn)到:“curl 何在?來(lái)訪問(wèn)下這個(gè) IP 地址,探探對(duì)方虛實(shí)。”
curl 站了出來(lái),“來(lái)了來(lái)了!”
curl 小心翼翼的發(fā)送了一個(gè) HTTP 請(qǐng)求過(guò)去,對(duì)方竟然回信了:
一行醒目的 mining poll 出現(xiàn)在大家面前。
“挖,挖礦病毒!”,top 老哥叫了出來(lái)。
這一下,在場(chǎng)所有的人都倒吸了一口涼氣。
部長(zhǎng)趕緊叫防火墻 firewall 配置了一條規(guī)則,將這條連接掐斷。
就在這時(shí),unhide 走了進(jìn)來(lái)。
簡(jiǎn)單了解了情況后,unhide 拍拍胸脯說(shuō)到:“這事交給我了,一定把這家伙給揪出來(lái)。”
隨后,unhide 一陣操作猛如虎,輸出了幾行信息:
- Found HIDDEN PID 13053
- Executable: "/usr/bin/pamdicks"
- $USER=root
- Found HIDDEN PID 13064
- Executable: "/usr/bin/pamdicks"
- $USER=root
眾人皆湊了過(guò)來(lái),瞪大了眼睛,unhide 老哥果然不是蓋的,果真發(fā)現(xiàn)了幾個(gè)可疑分子。
top 有點(diǎn)表示懷疑,問(wèn)到:“敢問(wèn)兄臺(tái)用的什么路數(shù),為何我等都看不到這幾個(gè)進(jìn)程的存在?”
unhide 笑道:“沒(méi)什么神秘的,其實(shí)我也是遍歷 /proc/ 目錄,和你們不同的是,我不用 readdir,而是從進(jìn)程 id 最小到最大,挨個(gè)訪問(wèn) /proc/$pid 目錄,一旦發(fā)現(xiàn)目錄存在而且不在 ps 老哥的輸出結(jié)果中,那這就是一個(gè)隱藏進(jìn)程。”
一旁的 ps 笑道:“原來(lái)還有我的功勞吶。”
“找到了,就是這家伙!”,netstat 大聲說(shuō)到。
“你怎么這么肯定?”部長(zhǎng)問(wèn)到。
“大家請(qǐng)看,進(jìn)程打開(kāi)的文件都會(huì)在 /proc/pid/fd 目錄下,socket 也是文件,我剛看了一下,這個(gè)進(jìn)程剛好有一個(gè) socket。再結(jié)合 /proc/tcp 信息,可以確定這個(gè) socket 就是目標(biāo)端口號(hào) 7777 的那一條!”
“好家伙!好家伙”,眾人皆嘖嘖稱(chēng)贊。
“還等什么,快讓我來(lái)干掉它吧!”,kill 老哥已經(jīng)按捺不住了。
“讓我來(lái)把它刪掉”,rm 小弟也磨刀霍霍了。
部長(zhǎng)搖頭說(shuō)到:“且慢,cp 何在,把這家伙先備份到隔離目錄去,以待秋后算賬”。
cp 拷貝完成,kill 和 rm 兩位一起上,把背后這家伙就地正法了。
top 趕緊查看了最新的資源使用情況,驚喜的歡呼:“好了好了,CPU 占用率總算降下去了,真是大快人心。”
天色已然不早,沒(méi)多久,眾人先后離開(kāi),帝國(guó)恢復(fù)了往日的平靜。
不過(guò),安全部長(zhǎng)的臉上,仍然是一臉愁容。
“部長(zhǎng),病毒已經(jīng)被清除,為何還是悶悶不樂(lè)呢?”,助理問(wèn)到。
“病毒雖已清除,但卻不知這家伙是如何闖入的,還有背后暗中保護(hù)隱藏它的人又是誰(shuí),這實(shí)讓我在很憂(yōu)心啊!”
不知不覺(jué)夜已深,帝國(guó)安全警報(bào)突然再一次響了起來(lái)。
“這又是怎么回事?”,部長(zhǎng)厲聲問(wèn)到。
“部長(zhǎng),rm 那小子是假冒的,今天他騙了我們,病毒根本沒(méi)刪掉,又卷土重來(lái)了!”
部長(zhǎng)望向遠(yuǎn)處的天空,CPU 工廠門(mén)口的風(fēng)扇又開(kāi)始瘋狂地轉(zhuǎn)了起來(lái)···
作者:軒轅之風(fēng)
編輯:陶家龍
出處:轉(zhuǎn)載自公眾號(hào)編程技術(shù)宇宙(ID:xuanyuancoding)