对mimikatz两种免杀方法的实验

gc144188   ·   发表于 2021-08-06 20:19:21   ·   安全工具

前言

最近在公众号上看到了两篇mimikatz的免杀文章,看着操作很简单,就是不知道免杀效果怎么样,本着实践是检验真理的唯一标准的原则,自己动手尝试了一下,然后就有了这篇文章。

基于特征码免杀

先看第一篇文章,文章链接:https://mp.weixin.qq.com/s/Q8AmGAeF2G-YfDd7upgh5g

文章1方法

先概括一下文章给出的方法:
1、下载mimikatz源码,使用visual studio打开。
2、全局查找mimikatzMIMIKATZ关键字,全部替换为其他关键字。
3、修改含有mimikatz的文件名。
4、编辑 mimikatz/mimikatz/mimikatz.rc,将一些名称进行修改,还有种类编辑器注释作者名称。
5、编译生成可执行文件,删除icon等信息,即可免杀。

自己照着上面的方法试了一下,几乎将所有mimikatz的关键字都替换了,包括文件名,并且还改了作者等信息。然后编译出来后:

落地就报毒。
文章给出的方法已经不能用了,去网上看了一下这是去年的方法。只不过一些公众号在炒冷饭,过一段时间就发一遍。

改良方法

既然这个方法不能用了,那就自己改良一下,开始还是按照文章的思路来。
下载mimikatz源码:https://github.com/gentilkiwi/mimikatz

替换关键字

下载好源码后,使用visual studio打开mimikatz.sln文件:

全局替换
mimikatz -> iphonex

MIMIKATZ -> IPHONEX

配置属性

项目 -> xxx属性

编译

在编译的过程中会报一些错误:
(1)报错找不到文件,重新改回mimikatz,或者修改文件名

(2)编码问题
遇到这种错误就把文件用sublime打开,然后使用utf-8编码重新保存一下

还不行的话就把将警告视为错误改为否

编译成功,依然落地报毒。

删除ico

这步的目的是绕过360动态查杀。使用resource_hacker工具打开,然后把图标、信息等全部删掉。

如果不做这一步,可以静态和动态绕过火绒,但是360动态会报毒。

定位关键字

使用VirTest定位特征码,这里发现了5个特征码:

用16进制工具打开文件,将关键字替换,把关键字都换成00

替换后保存,火绒没有报毒。

验证

静态测试

火绒

360杀毒

动态测试

火绒

360杀毒

Invoke-Mimikatz免杀

再看第二篇文章,文章链接:https://mp.weixin.qq.com/s/6meXpm7LWG4_imL1XMPQng

文章2方法

概括一下文章给出的方法:
1、下载Invoke-Mimikatz.ps1文件。
2、对mimikatz的ps脚本执行基础的字符混淆。
3、利用powershell ise自带的功能进行混淆。

照着上面的方法试了一下,免杀效果还可以,有个缺点是生成后的文件较大。因为自己试的过程中踩了些坑,所以下面也记录一下。

使用windows2012搞了半天一直报错,排查了半天发现是powershell版本的问题。换成win10搞直接就好了。

下载工具

工具地址:https://github.com/BC-SECURITY/Empire/blob/master/empire/server/data/module_source/credentials/Invoke-Mimikatz.ps1

更新mimikatz

工具很久没更新了,可以在github上下载最新版的mimikatz进行更新,mimikatz地址:https://github.com/gentilkiwi/mimikatz

py脚本:

  1. import fileinput
  2. import base64
  3. with open("./mimikatz_trunk/Win32/mimikatz.exe", "rb") as f:
  4. win32 = base64.b64encode(f.read()).decode()
  5. with open("./mimikatz_trunk/x64/mimikatz.exe", "rb") as f:
  6. x64 = base64.b64encode(f.read()).decode()
  7. for line in fileinput.FileInput("./Invoke-Mimikatz.ps1", inplace=1):
  8. line = line.rstrip('\r\n')
  9. if "$PEBytes64 = " in line:
  10. print("$PEBytes64 = '" + x64 + "'")
  11. elif "$PEBytes32 = " in line:
  12. print("$PEBytes32 = '" + win32 + "'")
  13. else:
  14. print(line)

将python脚本、Invoke-Mimikatz.ps1mimikatz_trunk放在同一目录

启动mimikatz

  1. powershell Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz

已经是mimikatz_trunk的版本了:

如果觉得名字比较敏感,想要改名,打开文件,将函数名修改成想改的名字:

然后将文件重命名,运行文件:

  1. powershell Import-Module .\helloworld.ps1;helloworld

下面的操作还是用的原始名字进行演示。

PowerShell ISE混淆

打开Windows PowerShell ISE,输入Start-Steroids

打开刚刚需要混淆的文件,工具 -> Obfuscate Code

可以选择模式,这里使用默认的:

生成文件后,保存。

缺点是生成后的文件较大:

验证

静态测试

火绒

360杀毒

动态测试

  1. powershell Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz
  2. privilege::debug
  3. sekurlsa::logonPasswords

火绒

360杀毒

用户名金币积分时间理由
小酒 5.00 0 2021-09-03 15:03:26 一个受益终生的帖子~~
Track-聂风 130.00 0 2021-09-01 15:03:30 一个受益终生的帖子~~

打赏我,让我更有动力~

2 条回复   |  直到 2021-10-21 | 1229 次浏览

domren
发表于 2021-9-2

大佬牛哇啊!

评论列表

  • 加载数据中...

编写评论内容

苟子狗子钩子
发表于 2021-9-29

起飞

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.