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

后門技術(shù)和Linux LKM Rootkit詳解

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

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

序言

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

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

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

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

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

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

3. Cron 后門。黑客在cron增加或修改一些任務(wù), 在某個特定的時間程序運行,他們就可以獲得最高權(quán)限。

后門程序給遠程用戶以最高訪問權(quán)限可以這樣做: ".rhost" 文件, ssh認證密鑰, bind shell, 木馬服務(wù)程序。

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

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

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

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

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

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

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

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

我們已經(jīng)看到過一些常規(guī)的技術(shù)。現(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)視這些目錄的。 其次, 我們可以隱藏我們想要的任何東西, 象文件, 進程, 和網(wǎng)絡(luò)連接。 因為要得到這些 信息, 用戶必須依賴系統(tǒng)調(diào)用。

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

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

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

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

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

第二個想法更使人感興趣。 如果一臺目標的機子上有個WEB的服務(wù)并且安了一個只允許WEB通信的防火墻,那么我們?nèi)绾蝸泶┻^它呢? 我們能否得到一個交互的shell呢?答案是肯定的。方法如下:

____________ _________________________

| 攻擊者   | | web server         |

|       | | 80 <=======> 53333 |

|__________| |_______________________|

|                         |

|                         |

|____________________________________|

1025 ==> 80 or 1025 <== 80

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

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

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

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

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

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

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

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

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

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

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

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

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

經(jīng)驗和結(jié)論

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

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

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

【編輯推薦】

  1. Linux下的Memcache安裝
  2. linux大掃盲:linux之Tar命令常用參數(shù)
  3. linux定時器的使用
責任編輯:趙寧寧 來源: chinaitlab
相關(guān)推薦

2010-01-14 20:57:59

2018-12-20 10:55:29

2010-09-13 15:26:34

2018-01-29 11:10:47

LinuxUnix網(wǎng)絡(luò)取證工具

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

2019-01-21 15:57:29

VLANVXLAN局域網(wǎng)

2021-10-11 09:21:14

惡意軟件黑客網(wǎng)絡(luò)攻擊

2017-01-12 16:02:18

2022-02-12 10:47:58

Rootkit僵尸網(wǎng)絡(luò)攻擊

2019-07-24 10:06:15

Linux網(wǎng)絡(luò)虛擬化

2019-05-13 16:37:35

Linux網(wǎng)絡(luò)虛擬化
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: www亚洲免费国内精品 | 国产成人午夜精品影院游乐网 | avav在线看 | 午夜精品久久久 | 成人免费网站在线 | hsck成人网| 日韩一区二区福利视频 | 久久国产一区二区 | 国产区免费视频 | 国产91丝袜在线播放 | 天天色影视综合 | 密乳av | 日批免费在线观看 | 久久久新视频 | 亚洲国产精品一区二区第一页 | 91精品国产高清久久久久久久久 | 欧美精品综合在线 | 国产精品区一区二区三区 | 中文天堂网 | 日本不卡高清视频 | 国产精品1区2区 | 91久久精品一区二区二区 | 欧美精品91 | 91麻豆精品国产91久久久久久久久 | 日本在线综合 | 国产国语精品 | 久久69精品久久久久久久电影好 | 热久久999| 国产日韩免费观看 | av中文字幕网站 | 综合一区 | 久久精品小视频 | 久久久久久久久久久久久9999 | 成人网av | 国产专区在线 | 午夜国产一级 | 国产三级精品三级在线观看四季网 | 91精品国产91久久久久久吃药 | 四虎av电影 | 日日摸日日碰夜夜爽2015电影 | 免费天天干 |