摘要:揭露僞裝的Linux內核線程的另一種方法是查看它是否顯示與正在運行的進程關聯的二進制文件。現在,您有兩種使用Linux命令行的可靠方法來調查試圖僞裝成內核線程的可疑進程。

        <div> 
惡意軟件有時會使用Linux內核進程僞裝來隱藏其運行時,讓我們研究一下如何使用這種策略來揭露Linux惡意軟件。

Linux內核進程僞裝了什麼?

在Linux上,內核創建了許多線程來幫助完成系統任務,這些線程可以用於調度,磁盤I / O等。 當您使用標準進程列表命令(例如ps)時,這些線程將顯示爲帶有 [brackets] ,以表示它們是某種線程。 在ps 列表中, 普通進程通常不會顯示 [brackets]。方brackets表示該進程沒有命令行參數,這通常意味着該進程是作爲線程產生的。 例如,以下清單顯示了內核線程與正常進程的比較:
ps –auxww 
圖1-Linux內核線程與正常進程

它是什麼樣子的?

Linux惡意軟件使用多種技術來隱藏檢測程序。 據全球公認的白帽黑客、網絡安全專家郭盛華透露:“黑客將使用的一種方法是通過使進程,在ps列表中的名稱周圍顯示[brackets]來模擬內核線程 ,管理員可以輕鬆地以這種方式忽略惡意進程。” 如果您查看下面的清單,我們已經開始嘗試通過看起來像內核線程來隱藏自身。你能看見它嗎? 圖2 —僞裝隱藏的Linux內核線程的示例

如何模擬Linux內核線程

現在您知道了僞裝的Linux內核線程是什麼樣子,讓我們設置一個測試,以便您可以嘗試使用命令行取證來查找它。 我們將使用sleep命令進行仿真,因爲您可以在任何系統上執行該命令,而不必擔心會引起麻煩:
export PATH=.:$PATH  
cp /bin/sleep /tmp/[kworkerd]  
cd /tmp  
"[kworkerd]" 3600 & 
該出口路集的東西,所以我們可以在不需要把一個運行在本地目錄中的文件“./”在它的前面。這使它看起來更合法。 接下來,我們將sleep命令複製到/ tmp,然後以假名[kworkerd]運行它。我們爲sleep命令設置了3600秒的值,因此一旦測試結束,它將在一個小時後自動退出。 讓我們看一下我們的手工,當執行ps命令時,我們應該看到[kworkerd]正在運行。
ps -auxww 
圖3-真正與冒名頂替的Linux內核線程

僞裝與進程圖僞裝的Linux內核線程

我們用來掩蓋僞裝過程的第一種方法是查看它是否在/ proc / / maps下具有任何內容。 該位置通常是進程顯示它們鏈接到的庫以及映射到內存中的位置的位置。對於真正的內核線程,它應該爲空。如果您在此位置查找[brackets]中命名的進程, 但該進程 顯示任何數據,則它不是真正的內核線程。 我們將使用的基本命令是cat / proc / / maps,其中 是我們正在研究的進程ID。在上面的示例中,我們認爲[kworkerd]對於PID 2121似乎可疑,因此我們將對其進行檢查:
cat/ proc / 2121 / maps 
圖4 —使用Linux / proc映射檢測內核僞裝 如果您在此區域下看到任何內容,並且該過程 周圍有 [brackets],則可能是惡意的並試圖隱藏。 如果需要,可以運行此命令以快速遍歷所有系統PID,並查看哪些帶有方括號的名稱,但具有映射文件。通常,您在這裏什麼也看不到。任何顯示數據的信息都應進一步調查。
ps auxww | grep \\[ | awk '{print $2}' | xargs -I % sh -c 'echo PID: %; cat /proc/%/maps' 2> /dev/null 
如果發現了什麼,此命令將輸出以下圖像。 圖5 —查找僞裝成腳本的Linux內核 在/ proc / / maps列表中,您將看到一些路徑來研究二進制文件在哪裏鏈接到其自身或所使用的庫。在上面,我們看到了/ tmp / [kworkerd]路徑,這是要調查的高優先級位置。您還可能會看到可疑的庫,對隱藏目錄的引用等。仔細看看,確保您不會錯過任何東西!

僞裝加密的僞裝Linux內核線程

揭露僞裝的Linux內核線程的另一種方法是查看它是否顯示與正在運行的進程關聯的二進制文件。基本上,您僅使用我們討論的關於恢復已刪除的惡意二進制文件的技術 ,但是請查看是否可以獲得SHA1。如果您返回了,那麼這是試圖隱藏的正常過程,而不是內核線程。真正的內核線程不會鏈接到啓動它們的二進制文件。 如果僅查看/ proc / / exe,則可以快速複製Linux上的進程二進制文件。您可以將此文件複製到新位置,並具有啓動該過程的二進制文件的即時快照。您還可以使用此鏈接獲取即時值,以檢查已知惡意軟件的數據庫。真正的內核線程將無法獲得此數據,只有冒名頂替者會提供。 在我們的案例中,我們將使用此知識來調查可疑的PID 2121,如下所示:
sha1sum / proc / 2121 / exe 
圖6 —獲得Linux內核僞裝攻擊的SHA1 讓我們恢復二進制並將其複製到某個地方,以便可以離線分析它。使用下面的命令,我們將複製到/ tmp / suspicious_bin。現在,我們擁有自己的副本,以防惡意軟件試圖自衛地刪除自身:
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內核線程的SHA1的腳本輸出 現在,您有兩種使用Linux命令行的可靠方法來調查試圖僞裝成內核線程的可疑進程。看完這篇文章後,你應該知道如何判斷Linux系統是否被黑客入侵了吧?
相關文章