日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
后門技術和LinuxLKMRootkit詳解

在這篇文章里, 我們將看到各種不同的后門技術,特別是 Linux的可裝載內核模塊(LKM)。 我們將會發(fā)現(xiàn)LKM后門比傳統(tǒng)的后門程序更加復雜,更加強大,更不易于被發(fā)現(xiàn)。知道這些之后,我們可以制造我們 自己的基于LKM的Rootkit程序, 主要體現(xiàn)在TCP/IP層, 因為我們相信這是在系統(tǒng)管理員面前最好的隱藏后門的地方。

創(chuàng)新互聯(lián)公司-專業(yè)網站定制、快速模板網站建設、高性價比鼓樓網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式鼓樓網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋鼓樓地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

序言

在一些黑客組織中, Rootkit (或者backdoor) 是一個非常感興趣的話題。 各種不同的Rootkit被開發(fā)并發(fā)布在internet 上。在這些Rootkit之中, LKM尤其被人關注, 因為它是利用現(xiàn)代操作系統(tǒng)的模塊技術。作為內核的一部分運行,這種Rootkit將會越來越比傳 統(tǒng)技術更加強大更加不易被發(fā)覺。一旦被安裝運行到目標機器上, 系統(tǒng)就會完全被控制在hacker手中了。甚至系統(tǒng)管理員根本找不到安全隱患的痕跡, 因 為他們不能再信任它們的操作系統(tǒng)了。

本文章以及我們開發(fā)的一些強大的LKM程序都是基于Linux Kernel 2.2.x版本的。我們的目的是盡可能多的隱藏足跡。

在接下來的一部分, 我們將介紹一下已經存在的后門技術, 然后和LKM技術相比較, 最后討論我么的LKM程序的設計與實現(xiàn)。

后門程序的目的就是甚至系統(tǒng)管理員企圖彌補系統(tǒng)漏洞的時候也可以給hacker系統(tǒng)的訪問權限。后門程序使本地用戶取得root權限可以這樣做: 設置uid程序, 系統(tǒng)木馬程序, cron后門。

1. 設置uid程序。 黑客在一些文件系統(tǒng)理放一些設置uid腳本程序。無論何時它們只要執(zhí)行這個程序它們就會成為root。

2. 系統(tǒng)木馬程序。黑客替換一些系統(tǒng)程序, 如"login"程序。因此, 只要滿足一定的條件,那些程序就會給黑客最高權限。

3. Cron 后門。黑客在cron增加或修改一些任務, 在某個特定的時間程序運行,他們就可以獲得最高權限。
  
后門程序給遠程用戶以最高訪問權限可以這樣做: ".rhost" 文件, ssh認證密鑰, bind shell, 木馬服務程序。

1. ".rhosts" 文件。一旦 "+ +"被加入某個用戶的.rhosts文件里, 任何人在任何地方都可以用這個賬號來登陸進來而不需要密碼。

2. ssh 認證密鑰。黑客把他自己的公共密鑰放到目標機器的ssh配置文件"authorized_keys"里, 他可以用該賬號來訪問機器而不需要密碼。

3. Bind shell。黑客綁定一個shell到一個特定的tcp端口。任何人telnet這個端口都可以獲得交互的shell。更多精巧的這種方式的后門可以基于udp,或者未連接的tcp, 甚至icmp協(xié)議。

4. Trojaned服務程序。任何打開的服務都可以成為木馬來為遠程用戶提供訪問權限。例如, 利用inetd服務在一個特定的端口來創(chuàng)建一個bind shell,或者通過ssh守護進程提供訪問途徑。

在入侵者植入和運行后門程序之后, 他會找一些方法和系統(tǒng)管理員開一些善意的玩笑。這主要涉及到兩個方面問題: 如何來隱藏他的文件且如何來隱藏他的進程。

為了隱藏文件, 入侵者需要做如下事情: 替換一些系統(tǒng)常用命令如"ls", "du", "fsck"。在底層方面, 他們通過把硬盤里的一些區(qū)域標記為壞塊并把它的文件放在那里。或者如果他足夠瘋狂,他會把一些文件放入引導塊里。

為了隱藏進程, 他可以替換 "ps"程序, 或者通過修改argv[]來使程序看起來象一個合法的服務程序。有趣的是把一個程序改成中斷驅動的話,它就不會出現(xiàn)在進程表里了。

LKM - 還有比這個更臭屁的么?

我們已經看到過一些常規(guī)的技術?,F(xiàn)在的問題是: 系統(tǒng)管理員可以找出它們么?實際上, 一個好的系統(tǒng)管理員可以很輕易的找出它們中的%99。 問題是入侵 者必須修改或者創(chuàng)建一些重要文件。 如果系統(tǒng)管理員保存一份"tripwire"數(shù)據(jù)庫, 通過這些可以確定安全隱患的存在。通過瀏覽文件系統(tǒng)可以去掉 suid程序, ".rhosts" 文件, 等。

相反, 利用LKM我們可有效的突破這些限制。首先,我們在重要的系統(tǒng)目錄里不必修改或創(chuàng)建任何文件。我們可以把LKM程序放在/tmp或/var /tmp目錄下, 一般系統(tǒng)管理員是不會監(jiān)視這些目錄的。 其次, 我們可以隱藏我們想要的任何東西, 象文件, 進程, 和網絡連接。 因為要得到這些 信息, 用戶必須依賴系統(tǒng)調用。

因此我們可以修改內核結構, 我們可以用我們自己的函數(shù)來替換原系統(tǒng)調用。最后,我們甚至可以攻擊或修改TCP/IP協(xié)議棧并且去愚弄系統(tǒng)內核!以下部分,我們將介紹如何利用這些機制以及實現(xiàn)方法。

我們的LKM程序主要是基于Linux Kernel 2.2.x及TCP/IP上的實現(xiàn), 因為一個優(yōu)秀的后門程序一定會給遠程用戶訪問該系統(tǒng)的權限。在目標機器上打開一個端口,運行一個服務是非常容易暴露的。我們需要盡可能的隱藏自己。

第一個想法是我們在目標機器上不運行任何進程來等待連接,我們在TCP/IP協(xié)議棧里來創(chuàng)建一個函數(shù)來替代它。 無論何時一個特殊的udp或tcp包被接 受,內核將會檢查這個包來確定是否是指定的特殊包。假如是的話, 內核將派生一個進程來執(zhí)行命令。我們可以使用任何內核可以支持的協(xié)議包。

現(xiàn)在我們來實現(xiàn)它。在內核里, 每個協(xié)議在*inet_protocol_base 和*inet_protos[MAX_INET_PROTOS] hash注冊自己。 當系統(tǒng)初始化時, 所有支持的協(xié)議會再 inet_protocol_base注冊。他們被加到inet_protos的哈希表里。不管什么時候一個IP包達到時, 內核將檢查這個哈希表,找相 應的處理函數(shù)和系統(tǒng)調用。我們就在這個點上進行hack。我們將用我們的處理函數(shù)來替換原始的協(xié)議的處理函數(shù)。因此,我們可以截獲數(shù)據(jù)包并且分析它。假如 它是我們需要的, 我們將執(zhí)行我們的命令。 假如不是,僅僅只需要調用原來的函數(shù)。

我們同時處理TCP和UDP的原因是假如那里有一些防火墻的話,UDP可能不能穿過。因此,我們只需要發(fā)一個源地址被偽造的數(shù)據(jù)包到目的機子。此外,對于TCP的數(shù)據(jù)包,它也不需要使用SYN位。事實上,現(xiàn)在我們的客戶程序使用的是ACK的包。

第二個想法更使人感興趣。 如果一臺目標的機子上有個WEB的服務并且安了一個只允許WEB通信的防火墻,那么我們如何來穿過它呢? 我們能否得到一個交互的shell呢?答案是肯定的。方法如下:

假設我們在web服務器上已經綁定了一個bind shell后門并且監(jiān)聽53333端口(可以利用第一個方法來完成) 現(xiàn)在我們需要把攻擊者到web服務器上的流量從80端口重定向到53333端口, 從53333端口到攻擊者的流量必須被改成80端口。

實現(xiàn)部分。改變接收的包是很容易的, 我們可以借用第一個LKM的思路- 無論何時我們都檢查到來的tcp包如果必要我們修改它的目的端口。為了改變發(fā)出 的包, 這就有點困難了。 因為TCP/IP協(xié)議棧的實現(xiàn)涉及到Linux內核的一些底層的靜態(tài)函數(shù)。它不太容易被置換(但是是可能的, 細節(jié)參見附 錄)。 我們利用的是大部分發(fā)布時就被編譯進內核中的防火墻。每個到來的包,轉發(fā)的包, 或發(fā)出的包必須通過防火墻。并且防火墻函數(shù)是可以被動態(tài)地加載到 內核里的!我們利用系統(tǒng)導出函數(shù)register_firewall() 在系統(tǒng)防火墻規(guī)則之前插入我們自己的規(guī)則。假如我們發(fā)現(xiàn)一些來自于53333端 口的包, 我們可以自動改變它到80。

關于此實現(xiàn)的另外的細節(jié)是無論何時我們改變數(shù)據(jù)包, 我們必須去重新計算校驗和。 更有趣的事情是我們可以在web服務器和其他一些機器上監(jiān)聽網絡流量, 我們可以看到他們的不同之處。 在其他機器上的sniffer看起來象普通的web流量, 但是在web服務器上的sniffer是一些無用的流量紀錄。 具體細節(jié)參見附錄。

現(xiàn)在我們談一下如何來截獲系統(tǒng)調用。為了隱藏入侵者的足跡, 文件, 進程,網絡連接必須隱藏起來。 因為這些信息都是可以從特殊的系統(tǒng)調用里面獲得的, 我們可以接獲一些感興趣的系統(tǒng)調用。

1. 隱藏文件。象這些命令如"ls", "du" 使用sys_getdents() 來獲得目錄信息。 所以LKM程序必須過濾這些輸出來達到隱藏文件的目的。

2. 隱藏進程。在Linux的實現(xiàn)中,進程的信息被映射到/proc文件系統(tǒng)去了。我們的工作仍舊是捕獲sys_getdents()調用在進程鏈表中標記為不可見。通常的手法是設置任務的信號標志位為一些未用的信號量,比如31就是一個例子。

3. 隱藏網絡連接。 和隱藏進程相似, 在這個例子中我們是這去隱藏一些包括/proc/net/tcp和/proc/net/udp的文件。所以我們改變sys_read()。 無論何時讀包含匹配字符串的這兩個文件的時候, 系統(tǒng)調用將不會聲明在使用它。

4. 重定向可執(zhí)行文件。 有時候, 入侵者可能會需要替換系統(tǒng)的二進制文件, 象"login", 但不想改變原文件。他可以截獲sys_execve()。因此, 無論何時系統(tǒng)嘗試去執(zhí)行"login"程序的時候, 它都會被重定向到入侵者給定的其他程序。

5. 隱藏sniffer。這兒我們指隱藏網絡接口的雜撥模式。在這里我們要替換的是sys_ioctl()。

6. 和LKM通信。 黑客已經很好的安裝了他的LKM?,F(xiàn)在他需要告訴內核來隱藏其他文件。他該怎么做呢?我們知道從用戶態(tài)切換到和心態(tài)通常是通過系統(tǒng)調用來進行的, 所以我們必須修改一些系統(tǒng)調用。

例如, 我們將截獲sys_settimeofday()。當一個指定的參數(shù)被傳遞, 我們的系統(tǒng)調用將會為我們做一些適當?shù)氖虑椤?/p>

7. 隱藏LKM本身。一個優(yōu)秀的LKM程序必須很好地隱藏它自己。系統(tǒng)里的LKM是用單向鏈表連接起來的, 為了隱藏LKM本身我們必須把它從鏈表中移走以至于lsmod這樣的命令不能把它顯示出來。

8. 隱藏符號表。通常的LKM中的函數(shù)將會被導出以至于其他模塊可以使用它。因為我們是入侵者, 所以隱藏這些符號是必須的。幸運的是, 有一個宏可以供我們使用:"EXPORT_NO_SYMBOLS"。 把這個宏放在LKM的最后可以防止任何符號的輸出。

經驗和結論

做個LKM程序是一個非常有趣而又非常危險的事情。有趣的是你可以在系統(tǒng)內核中作你想做的事情。 但這也是非常危險的, 它可以使你的服務陷入混亂, 破 壞你的數(shù)據(jù), 并且可以在你的系統(tǒng)里做任何怪異的事情。 我們的經驗有: 在安裝了LKM程序幾天后我們的網絡層不工作了, 只工作五分鐘就要重起一 次; 無論何時發(fā)送數(shù)據(jù)包, 象這些應用程序 telnet, netscape, pine都將會產生core dump; 在安裝LKM程序后立馬重 起。所以, 就象標題所說的那樣,后果自負!

值得一提的是寫一個LKM程序你可以更好地了解到系統(tǒng)是如何工作的。例如, /proc文件系統(tǒng)有很好的特性。因為LKM程序工作在內核空間, 調試 LKM程序就變得比一般程序要困難。 使用"printk"函數(shù)可以解決一些問題。但這不是最好的解決方法。通過注冊在/proc文件系統(tǒng)里的我們的文件 和目錄的數(shù)據(jù)結構, 我們可以訪問到任何時間的內核空間的信息。我們甚至可以通過寫這個文件來修改內存, 盡管一般不建議這樣做。

從經驗來看, 很明顯的LKM程序可以在Linux上安裝,一旦系統(tǒng)被攻破并且被安裝了LKM的Rootkit程序, 這就變的很難被發(fā)現(xiàn)了。因為甚至操 作系統(tǒng)都不能信任了。如果機器不允許關機,唯一的發(fā)現(xiàn)入侵者的方法是通過分析在網絡其他機器上的sniffer結果。 或者, 利用其他的操作系統(tǒng)來監(jiān)測 硬盤。所有這兩個方法都很難去做, 因為你不知道你要找什么。 所以,所以最好的安全措施就是防止被攻擊者入侵系統(tǒng)。


網站題目:后門技術和LinuxLKMRootkit詳解
瀏覽路徑:http://www.5511xx.com/article/djceppg.html