如何判斷Linux系統(tǒng)是否被黑客入侵?可以用這種方法
惡意軟件有時會使用Linux內(nèi)核進程偽裝來隱藏其運行時,讓我們研究一下如何使用這種策略來揭露Linux惡意軟件。
Linux內(nèi)核進程偽裝了什么?
在Linux上,內(nèi)核創(chuàng)建了許多線程來幫助完成系統(tǒng)任務,這些線程可以用于調(diào)度,磁盤I / O等。
當您使用標準進程列表命令(例如ps)時,這些線程將顯示為帶有 [brackets] ,以表示它們是某種線程。 在ps 列表中, 普通進程通常不會顯示 [brackets]。方brackets表示該進程沒有命令行參數(shù),這通常意味著該進程是作為線程產(chǎn)生的。
例如,以下清單顯示了內(nèi)核線程與正常進程的比較:
- ps –auxww
圖1:Linux內(nèi)核線程與正常進程
它是什么樣子的?
Linux惡意軟件使用多種技術來隱藏檢測程序。
據(jù)全球公認的白帽黑客、網(wǎng)絡安全專家郭盛華透露:“黑客將使用的一種方法是通過使進程,在ps列表中的名稱周圍顯示[brackets]來模擬內(nèi)核線程 ,管理員可以輕松地以這種方式忽略惡意進程。”
如果您查看下面的清單,我們已經(jīng)開始嘗試通過看起來像內(nèi)核線程來隱藏自身。你能看見它嗎?
圖2:偽裝隱藏的Linux內(nèi)核線程的示例
如何模擬Linux內(nèi)核線程
現(xiàn)在您知道了偽裝的Linux內(nèi)核線程是什么樣子,讓我們設置一個測試,以便您可以嘗試使用命令行取證來查找它。
我們將使用sleep命令進行仿真,因為您可以在任何系統(tǒng)上執(zhí)行該命令,而不必擔心會引起麻煩:
- export PATH=.:$PATH
- cp /bin/sleep /tmp/[kworkerd]
- cd /tmp
- "[kworkerd]" 3600 &
該出口路集的東西,所以我們可以在不需要把一個運行在本地目錄中的文件“./”在它的前面。這使它看起來更合法。
接下來,我們將sleep命令復制到/ tmp,然后以假名[kworkerd]運行它。我們?yōu)閟leep命令設置了3600秒的值,因此一旦測試結束,它將在一個小時后自動退出。
讓我們看一下我們的手工,當執(zhí)行ps命令時,我們應該看到[kworkerd]正在運行。
- ps -auxww
圖3:真正與冒名頂替的Linux內(nèi)核線程
偽裝與進程圖偽裝的Linux內(nèi)核線程
我們用來掩蓋偽裝過程的第一種方法是查看它是否在/ proc /
該位置通常是進程顯示它們鏈接到的庫以及映射到內(nèi)存中的位置的位置。對于真正的內(nèi)核線程,它應該為空。如果您在此位置查找[brackets]中命名的進程, 但該進程 顯示任何數(shù)據(jù),則它不是真正的內(nèi)核線程。
我們將使用的基本命令是cat / proc /
- cat/ proc / 2121 / maps
圖4:使用Linux / proc映射檢測內(nèi)核偽裝
如果您在此區(qū)域下看到任何內(nèi)容,并且該過程 周圍有 [brackets],則可能是惡意的并試圖隱藏。
如果需要,可以運行此命令以快速遍歷所有系統(tǒng)PID,并查看哪些帶有方括號的名稱,但具有映射文件。通常,您在這里什么也看不到。任何顯示數(shù)據(jù)的信息都應進一步調(diào)查。
- ps auxww | grep \\[ | awk '{print $2}' | xargs -I % sh -c 'echo PID: %; cat /proc/%/maps' 2> /dev/null
如果發(fā)現(xiàn)了什么,此命令將輸出以下圖像。
圖5:查找偽裝成腳本的Linux內(nèi)核
在/ proc /
偽裝加密的偽裝Linux內(nèi)核線程
揭露偽裝的Linux內(nèi)核線程的另一種方法是查看它是否顯示與正在運行的進程關聯(lián)的二進制文件?;旧希鷥H使用我們討論的關于恢復已刪除的惡意二進制文件的技術 ,但是請查看是否可以獲得SHA1。如果您返回了,那么這是試圖隱藏的正常過程,而不是內(nèi)核線程。真正的內(nèi)核線程不會鏈接到啟動它們的二進制文件。
如果僅查看/ proc /
在我們的案例中,我們將使用此知識來調(diào)查可疑的PID 2121,如下所示:
- sha1sum / proc / 2121 / exe
圖6:獲得Linux內(nèi)核偽裝攻擊的SHA1
讓我們恢復二進制并將其復制到某個地方,以便可以離線分析它。使用下面的命令,我們將復制到/ tmp / suspicious_bin?,F(xiàn)在,我們擁有自己的副本,以防惡意軟件試圖自衛(wèi)地刪除自身:
- cp / proc / 2121 / exe / tmp / suspicious_bin
圖7:恢復可疑的Linux惡意軟件二進制文件
如果要自動搜尋PID并獲取冒名頂替者的SHA1 attack,可以運行以下命令:
- ps auxww | grep \\[ | awk '{print $2}' | xargs -I % sh -c 'echo PID: %; sha1sum /proc/%/exe' 2> /dev/null
上面的命令將嘗試獲取所有帶有[花括號]的進程的SHA1 ,任何返回值的可能都是騙子:
圖8:偽裝Linux內(nèi)核線程的SHA1的腳本輸出
現(xiàn)在,您有兩種使用Linux命令行的可靠方法來調(diào)查試圖偽裝成內(nèi)核線程的可疑進程??赐赀@篇文章后,你應該知道如何判斷Linux系統(tǒng)是否被黑客入侵了吧?