对Mimikatz两种免杀方法的实验
掌控安全学院
2021年09月09日 10:19

作者:掌控安全-蹦擦擦

前言

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

基于特征码免杀

先看第一篇文章,文章链接:http://adkx.net/w5fe6

文章1方法

先概括一下文章给出的方法: 1、下载mimikatz源码,使用打开。

2、全局查找关键字,全部替换为其他关键字。

3、修改含有的文件名。

4、编辑 ,将一些名称进行修改,还有种类编辑器注释作者名称。

5、编译生成可执行文件,删除等信息,即可免杀。

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

落地就报毒。

文章给出的方法已经不能用了,去网上看了一下这是去年的方法。

只不过一些公众号在炒冷饭,过一段时间就发一遍。

改良方法

既然这个方法不能用了,那就自己改良一下,开始还是按照文章的思路来。

下载mimikatz源码:https://github.com/gentilkiwi/mimikatz

替换关键字

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

全局替换

MIMIKATZ -> IPHONEX

配置属性

项目 -> xxx属性

编译

在编译的过程中会报一些错误:

(1)报错找不到文件,重新改回mimikatz,或者修改文件名

(2)编码问题

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

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

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

删除ico

这步的目的是绕过360动态查杀。

使用工具打开,然后把图标、信息等全部删掉。

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

定位关键字

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

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

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

验证

静态测试

火绒

360杀毒

动态测试

火绒

360杀毒

Invoke-Mimikatz免杀

再看第二篇文章,文章链接:http://adkx.net/w56fr

文章2方法

概括一下文章给出的方法:

1、下载文件。

2、对mimikatz的ps脚本执行基础的字符混淆。

3、利用powershell ise自带的功能进行混淆。

照着上面的方法试了一下,免杀效果还可以,有个缺点是生成后的文件较大。

因为自己试的过程中踩了些坑,所以下面也记录一下。

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

更新mimikatz

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

py脚本:

  1. import fileinput

  2. import base64

  3. with open("./mimikatz_trunk/Win32/mimikatz.exe", &#​34;rb") as f:

  4.    win32 = base64.b64encode(f.read()).decode()

  5. with open("./mimikatz_trunk/x64/mimikatz.exe", &#​34;rb") as f:

  6.    x64 = base64.b64encode(f.read()).decode()

  7. for line in fileinput.FileInput("./Invoke-Mimikatz.ps1&#​34;, inplace=1):

  8.    line = line.rstrip('\r\n&#​39;)

  9.    if "$PEBytes64 = &#​34; in line:

  10.        print("$PEBytes64 = &#​39;" + x64 + &#​34;'&#​34;)

  11.    elif "$PEBytes32 = &#​34; in line:

  12.        print("$PEBytes32 = &#​39;" + win32 + &#​34;'&#​34;)

  13.    else:

  14.        print(line)

将python脚本、放在同一目录

启动mimikatz

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

已经是的版本了:

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

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

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

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

PowerShell ISE混淆

打开,输入

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

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

生成文件后,保存。

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

静态测试

火绒

360杀毒

动态测试

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

  2. privilege::debug

  3. sekurlsa::logonPasswords

火绒

360杀毒