魔改 CS 加载 mimikatz 模块-bypass莫60核晶

admin 2022年7月24日20:36:53评论293 views字数 2180阅读7分16秒阅读模式
魔改 CS 加载 mimikatz 模块-bypass莫60核晶

点击上方“蓝字”,关注更多精彩


魔改 CS 加载 mimikatz 模块-bypass莫60核晶

前言

今天无意看到了这个:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

现在公开了,本来我还想留着hw用来着,之前我在创建吐司账号的时候就在论坛中发过,链接:https://www.t00ls.cc/thread-65597-1-1.html

当时是改cs4.2实现bypass360核晶的功能,现在看到cs官网已经更新,所以我也就把改功能的原理说一下,这里只是讲一个功能点,大多数功能点都能这样改。

    经过实际测试,360 核晶模式下,是没有对 lsass 进程进行保护和检测的,所以我们的 打开 lsass 进程句柄这种操作是不会被检测到了,只要能正常执行的 mimikatz(pe 或者更 改源码达到文件 bypss 能执行起来)是正常能抓到的,也不会爆毒,但是 cs 默认的 logonpasswords 命令是会被拦截的,也就是会弹框,原因是 cs 中默认的 mimikatz 他的执行 是通过反射到 rundll32 这个进程中执行,这种新起进程的,反射行为正对 360 拦截的规则, 在实际的测试中,在 360 物理核晶的模式下,注入自己进程的进程是不会拦截的,所以这里 就想着把 logonpasswords 的执行代码给替换了,rundll32 spawn 反射执行 改成 inject 反 射,起到 bypass 的作用。

源码分析

从 cs 中的源码分析,logonpasswords 命令模块执行流程如下:

执行函数 LogonPasswords:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

然后:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

然后:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

然后:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

然后:

Spawn 方法源码:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

Inject 方法的源码:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

具体实现如上,反射执行 dll,这里他默认是会派生一个 rundll32 进程,这里就有特征,这 里就会被拦截,所以我们不能用 spawn 这个方法,我们改用 inject 这个方法,其实 inject 方 法在实现上是没有太大区别,就是一个默认派生一个,一个直接注入进程,实际上改了之后, 是可以完成相应的功能的。

从实际的测试效果,用 inject 注入到当前进程是不会被拦截的,那么我们是否把 cs 中缩减 版 dll 直接注入到当前进程勒?可以,且实现能正常抓出密码,但是执行完进程就退出了, 进一步排查时 dll 的问题。

把 MImikatzSmall 方法直接改成如下就行了:

public void MimikatzSmall(String var1) {  for(int i = 0; i < this.bids.length; ++i) {    BeaconEntry Session = DataUtils.getBeacon(this.data, this.bids[i]);    int PID = CommonUtils.toNumber(Session.getPid(), 0);    if ("x64".equals(Session.arch())) {      (new MimikatzJobSmall(thisvar1)).inject(PID, "x64");      // (new MimikatzJobSmall(this, var1)).spawn(this.bids[i], "x64");else {      (new MimikatzJobSmall(this, var1)).inject(PID, "x86");      // (new MimikatzJobSmall(this, var1)).spawn(this.bids[i], "x86");    }  }}

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

解密 dll 文件,然后 ida 打开

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

退出函数二进制代码就这一段

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

64 位对应的不一样

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

32 位对应的二进制代码:FF 15 A0 31 02 10

64 位对应的二进制代码: FF 15 52 08 02 00

FF 15 对应着 call 代码 后面跟着退出进程函数的地址

直接 nop 指令换掉 90

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

改了,看似行了,实则不行还是该退出就退出,因为不止这一个函数有退出,不知道具体是哪个函数,只能把所有退出的地方都给他改了,直接看函数调用,找到所有地方,全改了。

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

但是全改进程会崩掉的,这里调试崩掉的地方

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

其实这里已经崩掉了,正常的流程是直接执行 exitprocess 结束当前进程,但是我把他改成 nop,然后直接滑到了异常处理点 int 3。

我现在有两种思路,要么让把 rip 地址改到初始化模块地址去重新上线一次,但是有重定位 的困难,要么跳到就初始化 becaon 模块那里,但是得恢复堆栈状态,且也有重定位的烦恼。之前的堆栈状态:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

执行之后的堆栈状态:

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

有限的地址空间,去恢复堆栈状态不太可能,然后从大哥那里了解到一种方法,winhex 打 开直接去改二件文件的 Exitprocess 字符 直接改成 ExitThread,把 cc cc 我也改成 00 00 了 以防再蹦,这里 ida 再打开,就会发现直接调用 ExitThread 函数了,直接更改了符号表,这 波操作属实牛逼。

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

后续再次尝试

魔改 CS 加载 mimikatz 模块-bypass莫60核晶

成了,那么可以看看 360 核晶状态的效果咋样了

魔改 CS 加载 mimikatz 模块-bypass莫60核晶


魔改 CS 加载 mimikatz 模块-bypass莫60核晶

END

魔改 CS 加载 mimikatz 模块-bypass莫60核晶


魔改 CS 加载 mimikatz 模块-bypass莫60核晶


看完记得点赞,关注哟,爱您!


请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!



关注此公众号,回复"Gamma"关键字免费领取一套网络安全视频以及相关书籍,公众号内还有收集的常用工具!

在看你就赞赞我!
魔改 CS 加载 mimikatz 模块-bypass莫60核晶
魔改 CS 加载 mimikatz 模块-bypass莫60核晶
魔改 CS 加载 mimikatz 模块-bypass莫60核晶
魔改 CS 加载 mimikatz 模块-bypass莫60核晶
扫码关注我们
魔改 CS 加载 mimikatz 模块-bypass莫60核晶


扫码领hacker资料,常用工具,以及各种福利


魔改 CS 加载 mimikatz 模块-bypass莫60核晶

转载是一种动力 分享是一种美德


原文始发于微信公众号(Gamma实验室):魔改 CS 加载 mimikatz 模块-bypass莫60核晶

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月24日20:36:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   魔改 CS 加载 mimikatz 模块-bypass莫60核晶http://cn-sec.com/archives/1196741.html

发表评论

匿名网友 填写信息