?? xiazai.txt
字號:
fd=fopen(name,"rb");
if (fd==NULL)
printf("can't open file %s",name);
else
{
size=0;
while(!feof(fd))
{
Data[size++]=fgetc(fd);
}
size--;
fclose(fd);
/* copy encrypted text into keystream */
cracked=size-0x0208;
if(cracked< 0) cracked=0;
if(cracked>1000) cracked=1000;
memcpy(keystream,Data+0x208,cracked);
/* generate 20 bytes of keystream */
for(i=0;i< 20;i++)
{
ch=toupper(name[i]);
if(ch==0) break;
if(ch=='.') break;
keystream[i]^=ch; // xor UserName
}
cracked=20;
RecoverKeyStream();
// recover key stream (54 bytes or more)
if (maxr == -1)
printf("No resource!\n");
else DecryptResources();
}
done = findnext(&ffblk);
}
return 0;
}
第三節 注冊碼破解
下面將有關注冊碼破解的問題。這需要能熟練使用調試軟件及有關計算機程序設計的知識。這里只是一個示范講解。
破解WinZip 6.3 SR-1 (32-bit)
============================
Username: 輸入 Winter Lee
Register code: 輸入 48319840 (隨個人習慣)
2. 使用 Ctrl-D 進入WinICE 設斷點
BPX HMEMCPY
按F5返回到WinZip中
3. 按OK, 立即被Winice中斷
4. 取消斷點
BD *
5. 按F12多次, 按F8跟蹤進CALL 004096EA中
6. 按F10多次, 運行完CALL 004098C3后, 下指令
D AX
顯示一個字符串: 45260FF8
7. 繼續按F10運行完CALL 004099E6后, 下指令
D AX
又顯示一個字符串: 49041381
8. 懷疑上述兩個字符串即是正確的注冊碼, 重新輸入
Username: Winer Lee
Register number: 49041381
注冊成功! 用45260FF8 同樣成功
第九章
特洛伊木馬實例及其簡單實現
這里介紹一個比較陰險的威脅網絡安全的方法:特洛伊木馬(trojan horse,或trojan)。
第一節 什么是特洛伊木馬
特洛伊木馬是一個程序,它駐留在目標計算里。在目標計算機系統啟動的時候,自動啟動。然后在某一端口進行偵聽。如果在該端口受到數據,對這些數據進行識別,然后按識別后的命令,在目標計算機上執行一些操作。比如竊取口令,拷貝或刪除文件,或重新啟動計算機。
攻擊者一般在入侵某個系統后,想辦法將特洛伊拷貝到目標計算機中。并設法運行這個程序,從而留下后門。以后,通過運行該特洛伊的客戶端程序,對遠程計算機進行操作。
特洛伊木馬的一個特點是,它能巧妙地運行在目標計算機系統里,而不容易被發現。
現在有許多這樣的程序。如NetCat,Back Orifice,NetBus等等。
Back Orifice
Back Orifice簡介
Back Orifice是Cult of the Dead Cow (cDc)在1998年8月3日發布的。目前的下載量達到了100,000。許多人都在善意或惡意地使用這個程序。盡管這個程序并不是最優秀的黑客工具,但由于媒體的炒做,使得這個工具給人么一個很壞的印象。
Back Orifice被稱為“遠程管理工具”。它可以附加在別的文件或程序后,也可以單獨運行。它的服務器程序必須在目標計算機上運行之后,才能起到作用。一旦運行后,用戶就不大容易感覺到它的存在。在任務列表里,根本就看不到它。該工具的服務器運行后,就一直在一個端口偵聽從客戶機來的命令,根據不同的命令,在目標機器上執行相應的操作。
Back Orifice的使用
Back Orifice(以下簡稱BO)是一個客戶機/服務器(C/S)應用程序,其客戶機程序(以下簡稱BO客戶機)可以監視、管理和使用其它網絡中運行服務器程序(以下簡稱BO服務器)的目標計算機所在的網絡資源。基于文本和基于圖形的BO客戶機是運行在Microsoft Windows機器上。當前版本的BO服務器只能在Windows 95/98中運行。
Back Orifice軟件包里包括:
bo.txt 軟件包說明文檔。
plugin.txt 插件編程文檔。
boserve.exe Back Orifice服務器自安裝程序。
bogui.exe 圖形界面的Back Orifice客戶機。
boclient.exe 文本界面的Back Orifice客戶機。
boconfig.exe 配置BO服務器程序文件名、端口、密碼和插件的工具。
melt.exe 對由freeze命令壓縮的文檔解壓縮。
freeze.exe 壓縮文檔。壓縮文檔可被metl命令解壓縮。
只要運行BO服務器程序,就可以安裝BO服務器了。當BO服務器程序運行時,它安裝BO服務器,然后刪除自安裝程序。此方法有助于網絡環境下的安裝:只要BO服務器程序被復制到Startup目錄下就行了(譯者注:因為Windows 95/98每次啟動時都會運行該目錄下的程序)。因為BO服務器程序在自安裝BO服務器后就會刪除自已。一旦BO服務器被安裝到一臺機器上,它會在每次機器啟動時運行。
需要遠程更新Back Orifice時,只要上載新版本的BO服務器程序到遠程機上,使用Process spawn命令運行它。一旦運行,BO服務器程序將自動刪除與它將要安裝的文件同名的文件,安裝自已(覆蓋舊版本),然后在安裝目錄中運行自己,最后刪除BO服務器程序。
在安裝前,可以配置BO服務器程序的一些參數。如安裝后的BO文件名、監聽端口、加密密碼,都可以使用boconfig.exe工具配置。如果不進行配置,缺省是監聽31337端口、不使用加密密碼(數據包仍然會加密)和以" .exe"文件名安裝。
BO客戶機通過加密了的UDP包與BO服務器通訊。要實現成功通訊,BO客戶機城建發送數據到BO服務器監聽的端口,而且BO客戶機密碼必須匹配BO服務器已配置好的密碼。
基于圖形和文本的BO客戶機都可以通過使用-p選項來設置BO客戶機數據包的發送端口。如果數據包被過濾或者有防火墻屏蔽,就可能需要從一個特別的、不會被過濾和屏蔽的端口發送。如果UDP連接通訊不能成功,則可能是數據包在發送或回送路徑中被過濾或者屏蔽了。
從BO客戶機向特定的IP地址發送命令即可對BO服務器操作。如果BO服務器無靜態IP地址,則可使用以下方法:
(1) 在基于文本的BO客戶機使用sweep或sweeplist命令;
(2) 在基于圖形的BO客戶機使用"Ping..."對話框;
(3) 設定目標IP如"1.2.3.*"。如果掃描子網列表,當有BO服務器響應時,BO客戶機在子網列表目錄中瀏覽,并顯示所匹配的行和子網地址。(譯者注:雖然我知道如何使用,但卻無法按原文的內容表達出來。我在以后再作詳細說明。)
以下是在現在版本的Back Orifice中已經實現的命令。在基于圖形和基于文本的BO客戶機里有些命令名稱不相同,但幾乎所有命令的語法格式都是一致的。在基于文本的BO客戶機中輸入 "help command"可得到更多關于命令的信息。在基于圖形的BO客戶機中有兩個參數輸入區域,這些參數作為在"Command"列表中所選擇的命令的參數。如果未給出命令所需要的參數,BO服務器將返回"Missing data"(丟失數據)。
Back Orifice命令如下:
(基于圖形的BO客戶機命令/基于文本的BO客戶機命令)
App add/appadd
在TCP端口輸出一個基于文本的應用程序。它允許你通過Telnet對話控制基于文本或DOS的應用程序。
App del/appdel從監聽的連接中關閉一個應用程序。
Apps list/applist列出當前監聽的連接中的應用程序。
Directory create/md創建目錄
Directory list/dir列出文件和目錄。如要顯示多文件/目錄則須使用通配符。
Directory remove/rd刪除目錄
Export add/shareadd在BO服務器上創建一個“出口”(共享)。被輸出(共享)的目錄或驅動器圖標不會出現共享圖標。
Export delete/sharedel刪除一個(共享)“出口”。
Exports list/sharelist列出當前共享名、共享驅動器、共享目錄、共享權限和共享密碼。
File copy/copy拷貝文件。
File delete/del刪除文件。
File find/find在目錄中查找符合條件(支持通配符)的文件。
File freeze/freeze壓縮文件。
File melt/melt解壓縮文件。
File view/view查看文件內容。
HTTP Disable/httpoff使HTTP服務器失效。
HTTP Enable/httpon使HTTP服務器有效。
Keylog begin/keylog將BO服務器上的擊鍵記錄在一個文本文件中,同時還記錄執行輸入的窗口名。
Keylog end停止擊鍵記錄。基于文本的BO客戶機使用"keylog stop"命令。
MM Capture avi/capavi從視頻輸入設備(如果存在)捕捉視頻和音頻信號到avi文件中。
MM Capture frame/capframe從視頻輸入設備捕捉一個視頻幀到一個位圖文件中。
MM Capture screen/capscreen捕捉BO服務器屏幕影像到一們位圖文件中。
MM List capture devices/listcaps列出視頻輸入設備。
MM Play sound/sound在BO服務器上播放一個avi文件。
Net connections/netlist列出當前接入和接出的連接。
Net delete/netdisconnect斷開BO服務器的一個網絡資源連接。
Net use/netconnect把BO服務器連接到一個網絡資源。
Net view/netview查看BO服務器上所有的網絡接口、域名、服務器和可見的共享“出口”。
Ping host/pingPing主機。返回主機名和BO版本。
Plugin execute/pluginexec運行BO插件。運行不符合BO插件接口的函數可能使B)服務器當機。
Plugin kill/pluginkill命令一個插件關閉。
Plugins list/pluginlist列出當前激活的插件和已存在的插件返回值。
Process kill/prockill終止一個進程。
Process list/proclist列出運行中的進程。
Process spawn/procspawn運行一個程序。在基于圖形的BO客戶機程序中,如果需要確定第二個參數,進程可能以一個正常的、可見的方式運行,否則進程的運行將是隱蔽或獨立的。
Redir add/rediradd重定向接入的TCP連接或UDP數據包到另一個IP地址。
Redir del/redirdel停止端口重定向。
Redir list/redirlist列出激活的端口重定向。
Reg create key/regmakekey在注冊表中創建中一個主鍵。
注:對于所有的注冊表命令,不要在注冊表鍵值前加入前導"\\"。
Reg delete key/regdelkey從注冊表中刪除一個主鍵。
Reg delete value/regdelval刪除注冊表中的一個鍵值。
Reg list keys/reglistkeys列出注冊表中一個主鍵下的子鍵。
Reg list values/reglistvals列出注冊表中一個主鍵的鍵值。
Reg set value/regsetval設置注冊表一個主鍵的一個鍵值。鍵值格式為“類型,值”。對于二進制值(類型為B),值是一個兩位的16進制數;對于DWORD(雙字)值(類型為D),值是一個十進制數;對于字符串值(類型為S),值是一個文本串。
Resolve host/resolve解析BO服務器的主機名的IP地址。主機名可能是一個Internet主機名或本地網絡機器名。
System dialogbox/dialog用所給出的文本和一個"OK"按鈕,
在BO服務器上創建一個對話框。可以創建任意多的對話框,對話框的顯示是堆疊式的。
System info/info顯示BO服務器上的系統信息。包括機器名、當前用戶、CPU類型、內存容量及可用內存、Windows版本、驅動器信息(類型(硬盤、CDROM、可拆卸型、遠程驅動器)、硬盤驅動器容量及未使用空間)。
System lockup/lockup鎖住BO服務器機器。
System passwords/passes顯示被緩存的當前用戶密碼和屏幕保護密碼。所顯示的密碼中可能含有一些無用信息。(譯者注:如果密碼未被系統緩存,則不能顯示密碼。)
System reboot/reboot關閉BO服務器主機并重啟動。
TCP file receive/tcprecv將BO服務器主機連接到一個特定的IP地址和端口,并保存所接收到的數據到特定文件中。
TCP file send/tcpsend將BO服務器主機連接到一個特定的IP地址和端口,發送特定文件中的內容,然后斷開此連接。
注:對于TCP文件傳輸,必須監聽特定的IP地址和端口,直到TCP文件命令被發送,否則傳輸將會失敗。
從BO服務器傳輸文件,可使用TCP文件發送命令和如下格式的netcat命令:
netcat -l -p 666 > file
傳輸文件到BO服務器,可使用TCP文件接收命令和如下格式的netcat命令:
netcat -l -p 666 < file
注:Win32版本的netcat命令在到達輸入文件末部時并不斷開連接。因此應在文件內容傳輸完畢后用ctrl-c或ctrl-break終止netcat命令。
BOConfig:
BOConfig.exe允許在BO服務器安裝前配置一些可選項。首先詢問BO服務器在系統目錄中安裝的可執行文件名。它不一定是.exe,但如果你不給出擴展名,它不會自動添加.exe擴展名;接著詢問exe文件的描述,它描述了在注冊表中記錄的、系統啟動時運行的exe文件;接著詢問BO服務器監聽(數據包)端口;接著詢問用于加密的密碼。要實現BO客戶機到BO服務器的通訊,客戶機必須配置有相同的密碼,此密碼可以為空;接著詢問啟動時缺省運行的插件。這個在BO服務器啟動時自動運行的BO插件是以"DLL:_Function"格式定義的DLL和函數。此項可以為空;然后讓你輸入啟動時傳送給插件的參數,此項也可以為空;最后,詢問被附加到BO服務器上的文件的路徑。該文件將在BO服務器啟動時寫入系統目錄。此文件可以是一個自動啟動的BO插件。
BO服務器在沒有進行配置時也能運行。缺省地,安裝BO服務器文件名為" .exe",無密碼,使用端口31337通訊。
已知的Bugs和問題:
多媒體捕捉屏幕——所產生的位圖是按BO服務器端的顯示分辨率和像素深度保存的。因此,它可能是16位或24位顏色的。大多數圖形應用程序只能處理8位或32位位圖,因而不能打開此位圖,或者顯示不正常(此類軟件包括Graphics Workshop for Windows、Photoshop和WANG Imaging distributed with Windows)。但是,Windows本身有一個應用程序Paint.exe可以瀏覽這些位圖,按其提示操作即可。
擊鍵記錄——很顯然,MS-DOS窗口未提供信息循環機制,這就使得BO無法記錄輸入到其中的擊鍵。
基于文本的應用程序的TCP重定向——有幾個Bugs。
當用command.com的重定向名柄輸出command.com時,系統同時輸出REDIR32.EXE,此程序似乎是無法終止的。這可能是由于操作系統接口與一個tsr模塊(該模塊在DOS對話中被裝載以重定向輸入/輸出句柄)通訊所造成的。因此,如果在應用程序被終止(或退出)前終止TCP連接,REDIR32.exe和WINOA386.MOD(用于封裝管理舊16位應用程序)將仍然運行,BO和操作系統均無法終止它們。這會導致系統顯示"Please wait..."(請等待)屏幕且無法關機。
某些控制臺應用程序重定向了輸出時也可能會發生問題,如FTP.exe和boclient.exe。雖然程序的輸出因此而不能傳送出去,但仍然可能傳送輸入,所以你要通過TCP對話使該程序退出。否則使用BO殺死該進程。
Back Orifice的檢查和清除
打開注冊表編輯器,檢查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices主鍵的鍵值。如果你在主鍵看到的如下的一個鍵值:
Name Data
(缺省) " .exe" (一個空格,一個點號和exe后綴)
那么你可能已經感染上了Back Orifice了。然后在C:\WINDOWS\SYSTEM目錄下,如果發現一個" .exe"文件,文件大小為122K左右,那么你肯定感染了這個程序了。
清除的方法很簡單。首先將上述主鍵中的有關" .exe"的項目刪除,然后重新啟動計算機。接著,將C:\WINDOWS\SYSTEM下的" .exe"刪除,最后,找一個叫WINDLL.DLL的文件,也將它刪除。
注意,有可能你的系統里有好幾個Back Orifice的拷貝,要逐一清除。
NetBus
Netbus 是一個類似于著名的 Back Orifice 的黑客軟件,區別在于它的能力要強出太多。Netbus 通過 TCP/IP 協議,可以遠程將應用程序指派到某一套接字端口來運行。這就相當于說可以遠程運行目標機器上的 cmd.exe,想想這是多么危險的事情。
如果不是 the Cult of the Dead Cow 黑客組織在1998年的 DefCon 大會上發布 BackOrifice 工具而引起軒然大波的話,可能大多數人還不會注意到三月份發行的 Netbus。據說 Netbus 是瑞典程序員 Carl-Fredrik Neikter 為了“和朋友們消遣”而編寫的。
粗粗一看,Netbus 似乎沒什么危害,只允許黑客控制鼠標,播放聲音文件,甚或打開 CD-ROM 托架。但如果深入分析,就不難發現其中大量的破壞性功能,特別它是基于 TCP/IP 協議在 Windows 95、Windows 98、和 Windows NT 上運行的(與 BackOrifice 不同),這大大增加了各種入侵用戶系統的可能性。
Netbus 1.6 版能實現一些相當危險的操作:黑客能夠運行遠程程序,進行屏幕抓圖,在所侵入的計算機瀏覽器中打開 URL,顯示位圖,進行服務器管理操作(如更改口令),甚至利用遠端的麥克風錄制一段聲音。更可怕的是:它能在侵入的計算機上顯示信息,向毫無戒心的用戶提示輸入口令,再把該口令返回到入侵者的屏幕上。Netbus 還能關閉 Windows 系統,下載、上載或刪除文件。
11 月 14 日發行 的 Netbus 1.7 新增了更多不正當的功能。如:重定向功能(Redirection)使黑客能夠控制網絡中的第三臺機器,從而偽裝成內部客戶機。這樣,即使路由器拒絕外部地址,只允許內部地址相互通信,黑客也依然可以占領其中一臺客戶機并對其它無數臺機器進行控制。
V1.7 甚至還能指派應用軟件至某個端口。以前只有 Netcat — 黑客的夢幻工具— 用于 Unix 和 NT 時才具有這種功能。例如,黑客可以將 cmd.exe 指派至 Telnet port 23,然后 Telnet 進入該機器,從而接管系統的命令提示符。其危險后果不言自明。
Netbus 的默認狀態是在 port 12345 接收指令,在 port 12346 作應答。Telnet 登錄到接收端口就會看到產品名稱及版本號,還可以修改口令。Netbus 能通過編輯 patch.ini 配置文件,把 1 到 65535 之間的任意數字指定為端口。當需要繞過防火墻或路由過濾器時,端口通常就會設為 53(DNS)或 80(HTTP)。
所有的特洛伊木馬都分成兩個部分:服務器和客戶機。
V1.7版本的NetBus的服務器的默認文件名是patch.exe。運行這個程序后,它將自己拷貝到Windows目錄下,并從中解開一個叫KeyHook.dll的動態連接庫。默認的,它創建一個主鍵HKEY_CURRENT_USER\PATCH。并在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下創建了一個鍵,它的值是patch.exe文件的路徑名。這使得在每次系統啟動時,都能自動運行patch.exe這個程序。除此外,還創建下面兩個鍵:HKEY_CURRENT_USER\NETBUS和HKEY_CURRENT_USER\NETBUS\Settings
按照上面的描述,清除方法就自然出來了。
第二節 特洛伊木馬的一個簡單實現
通過上面的兩個實例介紹,基本上就能看出特洛伊木馬的工作原理。這里我們僅僅介紹用Winsock實現的一個客戶機程序和一個服務端程序。
這個實例中的服務器在接到客戶機的命令后會重新啟動計算機。
可以在這兩個程序的基礎上,加入一些命令,對目標系統進行一些修改。比如拷貝文件等等。
這兩個程序是從微軟的MSDN上拿下來的,略微作了點增加。在VC++6.0中編譯運行的。注意在連接的時候要加入:wsock32.lib庫。
ExitWindowsEx 函數介紹
ExitWindowsEx函數的功能是關閉系統,注銷用戶和重新啟動系統。
它的函數原型是:
BOOL ExitWindowsEx( UINT uFlags, DWORD dwReserved);
第一個參數用來指定操作的類型。
常見的有下面幾個:
EWX_POWEROFF:關閉系統及關閉電源。
EWX_REBOOT:重新啟動計算機。
EWX_SHUTDOWN:關閉系統,但不關閉電源。
第二個參數可以指定任意值,并沒有特定意義。
具體有關在Linux和Windows下進行SOCKET編程的細節,請參見相關章節。
服務器程序:
#include < windows.h>
#include < winsock.h>
#define PORTNUM 5000 // Port number
#define MAX_PENDING_CONNECTS 4 // Maximum length of the queue
// of pending connections
int WINAPI WinMain (
HINSTANCE hInstance, // Handle to the current instance
HINSTANCE hPrevInstance,// Handle to the previous instance
LPTSTR lpCmdLine, // Pointer to the command line
int nCmdShow) // Show state of the window
{
int index = 0, // Integer index
iReturn; // Return value of recv function
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -