所有操作系統至少由兩個主要組件組成。內核:操作系統的中心,控制着操作系統所做的一切。用戶區域:幾乎包括其他所有元素。
內核被設計成一個受保護或特權的區域,只能由root賬戶或其他特權賬戶訪問。大多數操作系統只向用戶和服務提供對用戶區域內的訪問,用戶可以在不控制操作系統的情況下訪問幾乎任何他們需要的內容。
訪問內核允許用戶更改操作系統的工作方式,外觀和感覺,還允許操作系統崩潰,使其無法工作。必須非常謹慎地訪問內核。
本章中,將研究如何改變內核的工作方式並將新模塊添加到內核中。如果黑客可以改變目標的內核,他們就可以控制系統。此外,攻擊者可能需要改變內核對某些攻擊的作用,例如中間人(MITM)攻擊,黑客將自己置於客戶端和服務器之間,並且可以竊聽或改變通信。
我們先仔細研究內核結構及其模塊。
什么是內核模塊? 你可以簡單理解為:rootkit攻擊等於內核攻擊,內核攻擊等於誘使用戶安裝驅動程序。
內核控制着操作系統所做的一切,包括管理硬件組件之間的交互和啟動必要的服務。內核在你看到的用戶應用程序和運行所有東西的硬件之間運行。
linux是一個單片內核,可以添加內核模塊,可以刪除內核模塊。內核有時需要更新,這可能需要安裝新的設備驅動程序(如視頻卡,藍牙設備或USB設備),文件系統驅動程序,甚至系統擴展。必須將這些驅動程序嵌入到內核中才能完全正常運行。某些系統中,要添加驅動程序必須重建、編譯和重新引導整個內核,但linux能夠在不經過整個過程的情況下向內核添加一些模塊。這些模塊稱為可加載內核模塊或LKM
LKM必須能夠訪問內核的最低級別,這使得它們成為黑客極易攻擊的目標。一種稱為rootkit的特殊類型的惡意軟件通常通過這些LKM嵌入到操作系統的內核中。如果惡意軟件嵌入內核,黑客可以完全控制操作系統。
如果黑客可以讓linux管理員將新模塊加載到內核,那么黑客不僅可以獲取對目標系統的控制權,而且因為他們在操作系統的內核級別運行,可以控制目標系統正在運行的進程,端口,服務,硬盤空間以及能想到的幾乎任何其他內容。
最陰險的rootkit利用方式就是誘使用戶安裝嵌入rootkit的顯卡或其他設備驅動程序,來完全控制系統和內核。
了解LKM絕對是成為一名非常有效和隱蔽的黑客的關鍵,進而發現它的存在,成為一名更優秀的防御者,為安全的事業服務!
檢查內核版本
檢查系統正在運行的內核。至少有兩種方法可以做到這一點。
uname -a
內核通常告訴我們,正在運行的發行版是linux kai,內核版本是4.6.4,構建的架構是x86_64架構。它具有對稱多處理(SMP)功能(意味着它可以在具有多個核心或處理器的機器上運行),並於2016年7月21日在debian 4.6.4上構建。安裝或加載內核驅動程序時可能需要這些信息,了解如何獲取這些信息非常有用。
又吃一塹長一智了。攻防的本質可以變相成是在學,任何是對各種系統,各種功能的增刪改查的技巧。找都找不到,攻擊個毛線。
獲取這些信息以及其他一些有用信息的另一種方法是
cat /proc/version
使用sysctl進行內核優化 警告:使用sysctl時需要小心,沒有相匹配的知識和經驗,非常容易使系統崩潰,在修改前確保自己有足夠的自信和知識。已中間人攻擊(MITM)為例,來體驗一下內核的修改。
使用正確的命令,可以優化自己的內核,意味着可以更改內存分配,開啟網絡功能,甚至加固內核以抵御外部攻擊。
現代linux內核使用sysctl命令來優化內核選項。使用sysctl所做的更改僅在重啟系統之前有效。要任何更改永久化,必須直接在/etc/sysctl.conf編輯sysctl的配置文件。
看一下sysctl的內容
sysctl -a | less
在輸出中,看到數百行參數,可以編輯這些參數來優化內核。這里有些內容對你作為黑客十分有用。作為如何使用sysctl的示例,將介紹如何啟用數據包轉發功能。
在中間人(MITM)攻擊中,黑客將自己置於通信主機之間,以截獲信息。流量會經過黑客系統,因此他們可以查看並可能更改通信。實現這種路由的一種方法是啟用包轉發。
向下滾動查詢輸出中的幾頁或過濾“ipv4”(sysctl -a | less | grep ipv4),應該能看到以下內容
net.ipv4.ip_forward = 0 該行是內核參數,使內核能夠轉發它接收的數據包。它接收的數據包將被發送出去。默認設置為0,是禁用了數據包轉發。
要啟用IP轉發,將0更改為1
sysctl -w net.ipv4.ip_forward=1 記住,要進行永久性更改,需要編輯配置文件/etc/sysctl.conf。
下面讓我們來更改內核處理MITM攻擊的IP轉發的方式,並使此更改永久化。
在文本編輯器中打開/etc/sysctl.conf文件,並取消對IP轉發行的注釋。
從操作系統加固的角度來看,你可以通過給此文件添加行net.ipv4.icmp_echo_ignore_all=1來禁用icmp echo請求,以使黑客更難找到你的系統,但這並非完全沒有可能找到你的系統。添加該行后,需要運行命令sysctl -p
管理內核模塊
至少有兩種方法來管理內核模塊。較舊的方法是使用圍繞insmod suite-insmod構建的一組命令代表插入模塊,用於處理模塊
第二種方法,使用modprobe命令
使用insmod套件中的lsmod命令,列出內核中已安裝的模塊
lsmod
nf netlink模塊(一種用於內核和用戶空間之間通信的基於消息的協議)是16384字節且由nf netlink_日志模塊使用。
從insmod套件中,可使用insmod加載或插入模塊,rmmod刪除模塊。這些命令並不完美,可能沒有考慮模塊依懶性,因此使用它們會使內核不穩定或無法使用。
linux現代版添加了modprobe命令,該命令自動加載依懶項並使加載和刪除內核模塊的風險降低。
使用modinfo查找更多信息
modinfo 模塊名稱
modinfo bluetooth 檢索先前運行lsmod命令時看到的藍牙內核模塊的基本信息
注意,在許多其他事情中,它列出了模塊依懶項,rfkill和crc16。依懶項是必須安裝的模塊才能使藍牙模塊正常運行。
通常,在排除特定硬件設備無法正常工作的原因時,這是有用的信息。除了注意依懶項之外,還可以獲取有關模塊版本和模塊開發內核版本的信息,確保它們與你運行的版本相匹配。
使用modprobe添加和刪除模塊
大多數linux新版本都包含用於LKM管理的modprobe命令。
modprobe -a 【module name】添加模塊到內核
modprobe -r 【module to be removed】刪除模塊
使用新版本中的modprobe添加和刪除內核模塊更容易,更安全。
插入和刪除內核模塊
舉例,你剛剛安裝了一個新的顯卡,且需要為它安裝驅動程序。記住,設備的驅動程序通常直接安裝在內核中,以便為它們提供正確運行所需的訪問權限。這也是惡意黑客安裝rootkit或其他監聽設備的肥沃土壤。
警告:以下命令出於演示,千萬不要實際運行這些命令。刪掉就非常煩人了。
假設我們要添加一個名為newvideo的新視頻驅動程序。
modprobe -a newvideo
要測試新模塊是否正確加載,可通過運行dmesg命令,該命令從內核打印出消息到緩沖區,然后過濾video內容,並查找任何指示問題的警報。
dmesg | grep video
刪除模塊
modprobe -r newvideo
記住:可加載的內核模塊對用戶來說是一種便利,但它們也是一個主要的安全漏洞,也是專業黑客熟悉的漏洞。LKM可以成為讓你的rootkit進入內核並造成嚴重破壞的完美工具。在取證方面,從比特流中雕刻出數據以后,可以用這些命令去搜索,看一看是否有惡意軟件想運行這些命令,植入rootkit。所以說,取證是綜合所有的信息來工作的。進攻的知識面,決定取證的經驗。
初級階段,尤其是入門。不要把方向,書名分的那么清楚,什么喜歡web,不喜歡二進制,這些都是閉國自封的表現。開闊思維,只要是神書,就要去看。根據個人經驗發現,這些書籍才能帶你真正的入門,學到核心技能已養家模糊。不知道為什么,海外以及港澳台出版的書中,出現神作的概率非常大。你需要過幾個月關注一下,這些出處的作品。