精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

各種Shell命令的用法和作用

Linux愛好者 ? 來源:Linux愛好者 ? 作者:小白學黑客 ? 2021-01-11 10:47 ? 次閱讀

【前言】通過排查挖礦病毒的一次“有趣”經歷,本文不僅展示了各種 Shell 命令的用法和作用,也能加深讀者對Linux 進程和文件系統的理解。

同時在本文中,還出現了各種不同的工具類網站,相信對于一些專業人士會很有幫助。

希望能對大家有所幫助。

CPU起飛了

最近有朋友在群里反饋,自己服務器的CPU一直處于高占用狀態,但用top、ps等命令卻一直找不到是哪個進程在占用,懷疑中了挖礦病毒,急的團團轉。

b5e495f4-523c-11eb-8b86-12bb97331649.png

b6008322-523c-11eb-8b86-12bb97331649.png

根據經驗,我趕緊讓他看一下當前服務器的網絡連接,看看有沒有可疑連接,果然發現了有點東西:

b60fb694-523c-11eb-8b86-12bb97331649.png

上Shodan查一下這IP地址:

b66a4956-523c-11eb-8b86-12bb97331649.png

反向查找,發現有諸多域名曾經解析到這個IP地址:

b69b5dac-523c-11eb-8b86-12bb97331649.png

這是一個位于德國的IP地址,開放了4444,5555,7777等數個特殊的服務端口

b6d88786-523c-11eb-8b86-12bb97331649.png

其中這位朋友服務器上發現的連接到的是7777端口,鐘馗之眼顯示,這是一個HTTP服務的端口,直接訪問返回的信息如下:

b7319416-523c-11eb-8b86-12bb97331649.png

mining pool!,服務器正在挖礦實錘了!

但神奇的是,這個進程像是隱身了一般,找不到存在的任何痕跡。

進程如何隱藏

現在說回到本文的正題:Linux操作系統上,進程要隱藏起來,有哪些招數?

要回答這個問題,先來知道ps、top等命令枚舉系統的進程列表的原理。

Linux的設計哲學是:一切皆文件!

進程也不例外, Linux系統中有一個特殊的目錄:/proc/,這個目錄下的內容,不是硬盤上的文件系統,而是操作系統內核暴露出的內核中進程、線程相關的數據接口,也就是procfs,里面記錄了系統上正在運行的進程和線程信息,來查看一下:

b7884bda-523c-11eb-8b86-12bb97331649.png

這些以數字命名的目錄,就是一個進程的PID,里面記錄了該進程的詳細信息。

而ps、top等命令的工作原理,實質上就是遍歷這個目錄。

知道了原理,想實現隱藏就有以下幾個思路:

命令替換

直接替換系統中的ps、top命令工具。可以從GitHub上下載它們的源碼,加入對應的過濾邏輯,在遍歷進程的時候,剔除挖礦進程,實現隱藏的目的。

模塊注入

編寫一個動態鏈接庫so文件,在so中,HOOK遍歷相關的函數(readdir/readdir64),遍歷的時候,過濾挖礦進程。

通過修改LD_PRELOAD環境變量或/etc/ld.so.preload文件,配置動態鏈接庫,實現將其注入到目標進程中。

內核級隱藏

模塊注入的方式是在應用層執行函數HOOK,隱藏挖礦進程,更進一步,可以通過加載驅動程序的方式在內核空間HOOK相應的系統調用來實現隱藏。不過這對攻擊者的技術要求也更高,遇到這樣的病毒清理起來挑戰也更大了。

揪出挖礦進程

通過上面的進程隱藏原理看得住來,都是想盡辦法隱藏/proc目錄下的內容,類似于“障眼法”,所以包含ps、top、ls等等在內的命令,都沒辦法看到挖礦進程的存在。

但蒙上眼不代表不存在,有一個叫unhide的工具,就能用來查看隱藏進程。

我讓這位朋友安裝這個工具來查找隱藏的進程,但奇怪的是,一執行yum install安裝,遠程連接的SSH會話就立刻斷開。

于是退而求其次,選擇通過源碼安裝,又是一直各種報錯···

因為我沒辦法親自操作這臺服務器,溝通起來比較麻煩,于是我決定研究下這個unhide工具的源碼,然后編一個python腳本發給他執行。

源碼地址:https://github.com/YJesus/Unhide-NG/blob/master/unhide-linux.c

在查找隱藏進程模塊,其大致使用了如下的方法:

挨個訪問/proc/pid/目錄,其中,pid從1到到max_pid累加

如果目錄不存在,跳過

如果是unhide自己的進程,跳過

如果在ps命令中能看到,跳過

剩下的,既不是自己,也不在ps命令輸出中,則判定為隱藏進程

按照這個思路,我編寫了一個Python腳本發給這位朋友,執行后果然發現了隱藏的進程:

b7f7daf4-523c-11eb-8b86-12bb97331649.png

別著急,不是真的有這么多進程,這里是把所有的線程ID列舉出來了。隨便挑選了一個看一下:

b83757f6-523c-11eb-8b86-12bb97331649.png

還記得前面通過netstat命令看到挖礦進程建立了一個網絡連接嗎?Linux一切皆文件,在/proc/pid/fd目錄下有進程打開的文件信息:

b874f32c-523c-11eb-8b86-12bb97331649.png

這里發現這個進程打開了一個socket,后面的10212是inode id,再通過下面的命令看一下這個socket到底是什么:

cat /proc/net/tcp | grep 10212

輸出了四元組信息:

b8903a10-523c-11eb-8b86-12bb97331649.png

左邊是源IP地址:源端口,右邊是目的IP地址:目的端口

目的端口1E61就是7777!!!

b8cb041a-523c-11eb-8b86-12bb97331649.png

找到了,就是這貨!

再次查看cat /proc/pid/environ,定位到進程的可執行文件:

b8f21154-523c-11eb-8b86-12bb97331649.png

總算把這家伙找到了:

b90706ea-523c-11eb-8b86-12bb97331649.png

網上一搜這家伙,看來是慣犯了:

挖礦病毒分析

把這個挖礦木馬下載下來,反匯編引擎中查看,發現加殼了。

脫殼后,在IDA中現出了原形,不禁倒吸了一口涼氣,居然悄悄修改/root/.ssh/authorized_keys文件,添加了RSA密鑰登錄方式,留下這么一個后門,隨時都能遠程登錄進來。

b96c91a4-523c-11eb-8b86-12bb97331649.png

b99650fc-523c-11eb-8b86-12bb97331649.png

除此之外,還發現了病毒嘗試連接的大量域名:

b9c824f6-523c-11eb-8b86-12bb97331649.png

看到這里簡直可怕!自己的服務器被病毒按在地上摩擦啊!

清除建議

開啟SELinux

殺掉挖礦進程

刪除病毒程序(注意rm命令是否被替換)

刪除病毒驅動程序(注意rm命令是否被替換)

刪除病毒添加的登錄憑據

防火墻封禁IP、端口

責任編輯:xj

原文標題:急死!CPU被挖礦了,卻找不到哪個進程!

文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10825

    瀏覽量

    211149
  • 挖礦
    +關注

    關注

    6

    文章

    448

    瀏覽量

    16033

原文標題:急死!CPU被挖礦了,卻找不到哪個進程!

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux系統中shell命令解析

    shell是Linux系統的用戶界面,提供了用戶與內核交互的一種接口,它接收用戶輸入的命令并到送到內核去執行,因此也被稱為Linux的命令解釋器。
    的頭像 發表于 11-05 15:40 ?136次閱讀

    TCSH shell 編程入門

    ICer從業人員最先需要掌握的語言,就是linux shell語言。TCSH是ICer使用最多的Shell語言,可以說ICer入門語言從TCSH開始。
    發表于 11-01 10:45 ?0次下載

    Linux lsof命令的基本用法

    在 linux 系統中,一切皆文件。通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以 lsof 命令不僅可以查看進程打開的文件、目錄,還可以查看進程監聽的端口等 socket 相關的信息。本文將介紹 lsof 命令的基本
    的頭像 發表于 10-23 11:52 ?170次閱讀
    Linux lsof<b class='flag-5'>命令</b>的基本<b class='flag-5'>用法</b>

    shell腳本執行的三種方式及區別

    在Linux系統中,Shell腳本是一種非常實用的工具,用于自動化執行一系列命令Shell腳本可以大大提高工作效率,簡化復雜的任務。在這篇文章中,我們將介紹Shell腳本執行的三種方
    的頭像 發表于 08-30 15:24 ?759次閱讀

    執行shell腳本的方式包括什么

    執行Shell腳本的方式有很多種,以下是一些常見的方法: 直接運行腳本文件 在命令行中,可以直接使用腳本文件的路徑來運行腳本。例如: ./script. sh 這種方式需要確保腳本文件具有可執行權限
    的頭像 發表于 08-30 15:17 ?270次閱讀

    shell具有的功能和特點

    是執行命令。用戶可以在 Shell 提示符下輸入命令Shell 會解析命令并將其傳遞給操作系統執行。S
    的頭像 發表于 08-30 14:48 ?368次閱讀

    嵌入式學習-常見的shell命令之其他命令

    1、clear清屏命令命令:clear功能:清除屏幕參數:無 示例:清屏前。執行清屏命令后,終端界面顯示信息被清除。2、man幫助命令命令
    發表于 08-22 09:42

    常見的shell命令之其他命令

    1、clear清屏命令命令:clear功能:清除屏幕參數:無 示例:清屏前。執行清屏命令后,終端界面顯示信息被清除。2、man幫助命令命令
    發表于 08-21 09:49

    嵌入式學習-shell介紹

    一、Shell是什么?我們在剛開始接觸Linux的時候,經常會聽到工程師提到Shell這個詞,剛開始不知道這是個干什么的,簡單的說,它是一個應用,接收用戶命令,調用相應的內核接口函數或應用程序,并
    發表于 08-16 09:13

    shell基本介紹及常用命令shell介紹

    一、Shell是什么?我們在剛開始接觸Linux的時候,經常會聽到工程師提到Shell這個詞,剛開始不知道這是個干什么的,簡單的說,它是一個應用,接收用戶命令,調用相應的內核接口函數或應用程序,并
    發表于 08-15 09:28

    深入剖析Shell命令運行機制與權限管理

    Linux作為一個操作系統,稱為"kernel",一般用戶不能直接使用kernel,而通過"kernel"的外殼程序"Shell"和kernel進行溝通。
    發表于 03-08 12:36 ?587次閱讀
    深入剖析<b class='flag-5'>Shell</b><b class='flag-5'>命令</b>運行機制與權限管理

    plsy指令具體用法

    plsy是一種基于命令行的簡單工具,用于在文本終端上播放音樂。它是一個很小巧、易于使用的命令行播放器,適用于各種Unix系統,如Linux和macOS。plsy支持多種音頻格式,包括MP3、FLAC
    的頭像 發表于 12-08 14:10 ?2185次閱讀

    python shell怎么用

    Python Shell是一種交互式解釋器,可以通過命令行直接運行Python代碼。在Shell中,可以輸入一行代碼并立即得到結果,非常適合于測試、嘗試新代碼或進行簡單的任務。本文將詳細介紹
    的頭像 發表于 11-29 14:36 ?1100次閱讀

    Fish Shell采用Rust重寫會導致性能下降

    fish 是適用于 Linux、macOS 的命令Shell,其名字取于 "the friendly interactive shell" 的簡稱,最大特點就是方便易用、功能強大、智能并且用戶友好。很多其他
    的頭像 發表于 11-28 11:23 ?417次閱讀
    Fish <b class='flag-5'>Shell</b>采用Rust重寫會導致性能下降

    su與sudo命令介紹及主要用法

    大家在自己實驗服務器上可能不會用到su與sudo命令,因為一直用著root用戶進行操作。
    的頭像 發表于 11-27 09:31 ?1082次閱讀