成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

后門技術和Linux LKM Rootkit詳解

安全 數據安全
本文探討了各種不同的后門技術,特別是 Linux的可裝載內核模塊(LKM)。并講解了如何制造基于LKM的Rootkit程序(主要體現在TCP/IP層)。

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

序言

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

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

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

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

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

2. 系統木馬程序。黑客替換一些系統程序, 如"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協議。

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

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

為了隱藏文件, 入侵者需要做如下事情: 替換一些系統常用命令如"ls", "du", "fsck"。在底層方面, 他們通過把硬盤里的一些區域標記為壞塊并把它的文件放在那里?;蛘呷绻銐虔偪?,他會把一些文件放入引導塊里。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

例如, 我們將截獲sys_settimeofday()。當一個指定的參數被傳遞, 我們的系統調用將會為我們做一些適當的事情。

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

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

經驗和結論

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

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

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

【編輯推薦】

  1. Rootkit入侵工具Knark分析及防范
  2. 追根溯源就為徹底清除掉rootkit
責任編輯:許鳳麗 來源: TT安全
相關推薦

2010-01-15 10:32:40

2018-12-20 10:55:29

2010-09-13 15:26:34

2018-01-29 11:10:47

LinuxUnix網絡取證工具

2013-04-12 11:07:01

2017-01-03 16:57:58

2011-03-30 10:53:45

2010-08-02 14:36:52

ICMPLinux

2010-09-17 17:24:44

2010-03-10 10:24:16

Linux ssh后門

2013-07-25 14:50:03

2024-03-27 14:11:39

Linux掛載硬盤

2019-03-28 09:42:15

惡意軟件Rootkit攻擊

2010-09-13 14:34:55

2021-10-11 09:21:14

惡意軟件黑客網絡攻擊

2019-01-21 15:57:29

VLANVXLAN局域網

2017-01-12 16:02:18

2019-05-13 16:37:35

Linux網絡虛擬化

2019-07-24 10:06:15

Linux網絡虛擬化

2022-02-12 10:47:58

Rootkit僵尸網絡攻擊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www久久久| 国产亚洲一区二区三区在线 | 欧美一区二区成人 | 一区二区免费 | 二区中文字幕 | 国产精品一区在线观看 | 久久99精品国产麻豆婷婷 | 成人一区二 | 欧美日韩综合精品 | 国产亚洲日本精品 | 国产传媒毛片精品视频第一次 | 在线一区二区三区 | 婷婷99| 黄色一级大片在线免费看产 | 国产一区二区三区日韩 | 欧美a在线| 精品国产一区二区在线 | 噜噜噜色网 | 中文字幕高清 | 在线观看亚洲 | 91精品国产综合久久久久 | 久久久久久国产精品 | 日本大片在线播放 | 欧美老少妇一级特黄一片 | 日韩在线免费视频 | av影音资源 | 成人福利在线 | 91视频大全 | 精品麻豆剧传媒av国产九九九 | 欧美激情一区 | 亚洲一区二区久久 | 夜夜骑首页 | 国产一区二区影院 | 香蕉久久久| 成人h片在线观看 | 国产一区二区三区四区在线观看 | 在线看免费 | 色视频在线观看 | 国产精品日本一区二区在线播放 | 日本精品一区二区 | 国产免费一区二区 |