FreeBuf手把手教你构建自定义的Mimikatz二进制文件( 二 )


基础特征针对Mimikatz的特征 , 我们首先需要替换掉下列字符串:
1、mimikatz, MIMIKATZ和Mimikatz
2、DELPY, Benjamin, benjamin@gentilkiwi.com
3、creativecommons
4、gentilkiwi
5、KIWI, Kiwi和kiwi
从反病毒厂商的角度来看 , 首先需要标记的就是源码文件中的这些字符串 , 如果你打开Mimikatz的菜单 , 你将看到如下图所示的信息:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
菜单中所有的字符串都可以证明Mimikatz正在运行 , 所以我们需要在脚本中添加下列特征字符串来替换掉它们:
Vincent LE TOUXvincent.letoux@gmail.com我们也可以直接打开mimikatz.c文件 , 然后替换掉Banner , 或者直接删掉它们 。
接下来 , 我们还需要替换掉一些功能性的关键词 。 Mimikatz中的主模块如下:
1、crypto, dpapi, kerberos, lsadump, ngc, sekurlsa2、standard, privilege, process, service, ts,event3、misc, token, vault, minesweeper, net, busylight4、sysenv, sid, iis, rpc, sr98, rdm, acr我们还可以输入一个无效的模块名(例如::)来显示所有可用模块:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
在这里 , 我们有两个选择 。 要么把所有的函数名替换成全大写字母 , 或者直接修改函数名称 。 对于第一种方法 , 我们熟悉的那些函数相当于没有变化 。 但对于第二种方法 , 我们就得去记新的函数名了 。 目前 , 我们选择继续使用熟悉得函数名 , 因为我怕一旦不小心 , 就会破坏其原有功能 。 为了为每个新版本构建一个自定义二进制文件 , 我们用随机名称替换与函数名无关的字符串 。
要替换的另一个重要内容是二进制文件的图标 。 因此 , 在gist的修改版本中 , 我们用一些随机下载的图标替换现有的图标 。
主菜单中的每个功能都有子功能 。 例如 , 最著名的函数sekurlsa就包含了以下子函数:
1、msv, wdigest, kerberos, tspkg2、livessp, cloudap, ssp, logonpasswords3、process, minidump, bootkey, pth4、krbtgt, dpapisystem, trust, backupkeys5、tickets, ekeys, dpapi, credman确保大部分熟知的Mimikatz标识符都已经被修改了 , 其中也包括子函数名 。 脚本样例代码:
通过执行Bash脚本 , 编译代码 , 并上传至VirusToal , 我们将查看到下列结果:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
25/67的检测率 , 但肯定还不够 。
netapi32.dll为了找到更多的特征 , 我们可以使用下列命令来将文件分割成多个部分:
head-cbyteLengthmimikatz.exe>split.exe如果结果文件被删除了 , 说明其中就存在特征 。 如果没有被删除 , 那么这部分文件就是安全的 。 你还可以使用DefenderCheck工具来自动化实现该任务 。 简单来说 , 就是将文件分割成多个部分 , 然后把它们拷贝到C:\temp\目录下 , 并用Windows Defender进行扫描:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
netapi32.dll中的下面这三个函数都会被Windows Defender标记:
I_NetServerAuthenticate2I_NetServerReqChallengeI_NetServerTrustPasswordsGet在这里 , 我们可以创建一个包含下列内容的.def文件来构建一个自定义的netapi32.min.lib:


推荐阅读