Linux Rootkit 學習資源筆記

「只要你懂 Rootkit,Rootkit就會幫你」

什麼是 Rootkit

Rootkit來自於兩個字的結合,Root是類Unix作業系統上特權帳號的名稱,而Kit是工具套件的意思。所以Rootkit也就是具有特權權限的工具套件,一般來說指的是惡意軟體,是攻擊者在入侵的主機上為了維持對主機的控制以及保持隱蔽性所使用的惡意工具。

Rootkit根據層級可以分成不同的類型,比較常被提及的是「User Mode Rootkit」和「Kernel Mode Rootkit」,但也有像是Bootkits、Hypervisor level、Firmware and hardware等不同類型的Rootkit。我主要研究的是Kernel Mode Rootkit。

本篇文章其實目的也不是要介紹與教學關於Rootkit知識,就不說太多了。只是做為分享與紀錄幾篇介紹Rootkit的文章。應該說原本的確是打算自己寫文章,後來發現好像自己寫的,不會比別人好。花時間投入鑽研的報酬率也太低,就放棄了XD。畢竟對我的工作職務來說,這個不是主要的重點。

前陣子在架設一些資安防禦偵測系統的時候,開始在思考以及測試如何檢測Rootkit,當然也是有安裝了一些Rootkit sample來試試看。結果沒想到,越是測試更多Rootkit,心中的疑惑就越來越多。發現好像還是不得已去了解Rootkit。有找到了一些很不錯的資源來紀錄一下,順便分享給大家。

TheXcellerator Linux Rootkits

這邊首先強力推薦 TheXcellerator 一系列對於Rootkit的介紹文章,其實說"介紹"有點太低估它了,它這系列文章真的是非常詳細解析與教學的,不管你只是想了解運作原理,還是你想要撰寫自己的Rootkit程式,這系列文章都涵蓋了。我自己覺得一般資安人對Rootkit研究,其實看完這系列也差不多足夠了,除非真的是在該領域有更專業或進階的需求吧。

根據文章的介紹,Rootkit的本質是hook function,包含對於syscalls或是一般function的hook。

而Rootkit一般可以做到的:

  • 顯示/隱藏LKM(Loadable kernel module)
  • 隱藏檔案或目錄
  • 隱藏Process
  • 隱藏Open Ports
  • 隱藏登入的使用者
  • 提權

文章有仔細解說每一個項目達成的原理,例如隱藏LKM是通過將module從linked list當中移除,讓lsmod顯示當中不顯示載入的rootkit module。

※提醒事項※

測試Rootkit的過程,要隨時注意自己的Kernel vesion,隨時。有時候你更新了甚麼或是重新開機之後可能跟你想像的版本不同,建議做許多操作之前要保持確認目前的Kernel version。

然後很重要的事!不管是照文章自己寫程式來測試,還是從找網路上的Rootkit樣本來測試,千萬不要在實體機上的Linux安裝Rootkit來練習!即時你覺得看文章看原理好像都看得懂,也千萬不要這麼做。除非真的已經對這個很熟悉也可以承擔風險,不過如果是這樣,你應該也不需要看這文章了XD

要測試請用虛擬機測試,然後可以照文章裡面的用vagrant來幫助你練習。我自己是只有用VMware workstation的snapshot啦,不過過程有出了一些問題,我也不確定問題在哪裡就是了,畢竟一開始練習的時候對Rootkit不熟悉,也不知道VM底層snapshot原理,我以為有備份很穩了,但練習過程還是有遇到沒辦法開機,導致我重新安裝一台VM。

其他Rootkit文章補充

Linux Rootkit 中文系列

另外一個也是Rootkit系列的文章,但有個地方很有趣,第一篇文章跟後面幾篇的作者不同,第二篇的作者開頭有提到第一篇文章作者跑路(?),所以他決定繼續接著寫下去。總之我是沒有很了解整個系列文章的來龍去脈以及原始出處,網路上到處都有轉載跟備份的文章,但沒有很齊全的,所以我這邊的六篇文章也是來自於不同網站。

Linux Rootkit for Fun and Profit – 0x00 – Design

https://jm33.me/linux-rootkit-for-fun-and-profit-0x00-design.html

這個部落格裡面也很多篇文章是講Rootkit的

分析过程:服务器被黑安装Linux RootKit木马

https://www.freebuf.com/articles/endpoint/344453.html

這篇文章跟原本預期想找到的不太一樣,原本是想知道如何檢測發現伺服器上有Rootkit

不過這個比較偏向於發現之後去逆向分析。

裡面有提到一套工具可以檢測記憶體發現木馬

python2 [vol.py](<http://vol.py/>) --info --profile=LinuxUbunt4_15_0-118-generic_profilex64 -f lubunut_reptile_infected.mem linux_check_modulesCode language: HTML, XML (xml)

不過查了一下這套工具volatility

https://github.com/volatilityfoundation/volatility

看起來很強大,但使用上可能沒那麼簡單。像是他載入profile需要指定linux版本,要確認一下它怎麼生成的。然後這個也有陣子沒更新,所以看起來沒有支援到最新的Linux Kernel版本。

Rootkit Samples

如果有需要可以練習的Rootkits樣本,awesome-linux-rootkits算是有提供一些不錯的參考。

awesome-linux-rootkits
https://github.com/milabs/awesome-linux-rootkits

Rootkit 檢測工具

  • Chkrootkit
  • Rkhunter
  • unhide

Chkrootkit

官網

http://www.chkrootkit.org/

sudo apt update
sudo apt install wget apt-transport-https gnupg2 software-properties-common
sudo apt install chkrootkit
sudo chkrootkit

rkhunter

鳥哥的詳細介紹

https://linux.vbird.org/linux_server/others/0420rkhunter.php

sudo apt update
sudo apt -y install rkhunter
rkhunter --check

unhide

https://www.systutorials.com/docs/linux/man/8-unhide/

This Post Has 2 Comments

  1. nelsonoob

    阿怎麼斷了我還沒很懂海ㄟ

    1. hackercat

      甚麼斷了XD
      沒關係, 你可以去找海龍王彼得

發佈留言