15.管理linux內核和可加載內核模塊


所有操作系統至少由兩個主要組件組成。內核:操作系統的中心,控制着操作系統所做的一切。用戶區域:幾乎包括其他所有元素。

  內核被設計成一個受保護或特權的區域,只能由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,不喜歡二進制,這些都是閉國自封的表現。開闊思維,只要是神書,就要去看。根據個人經驗發現,這些書籍才能帶你真正的入門,學到核心技能已養家模糊。不知道為什么,海外以及港澳台出版的書中,出現神作的概率非常大。你需要過幾個月關注一下,這些出處的作品。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM