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


IBRARYnetapi32.dllEXPORTSI_NetServerAuthenticate2@ 59I_NetServerReqChallenge@ 65I_NetServerTrustPasswordsGet@ 62此时 , 我们可以使用下列命令在Visual Studio开发者终端中构建netapi32.min.lib文件:
lib/DEF:netapi32.def /OUT:netapi32.min.lib我们将该文件嵌入至lib\x64\目录 , 然后重新编译 。 再次运行DefenderCheck之后 , 将无法检测到任何内容:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
这也就意味着 , 我们已经绕过了Windows Defender的“实时保护”功能 。 但如果我们启用云保护功能 , 然后将该文件拷贝至其他位置 , 它还是会被检测到:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
替换更多的字符串当然了 , 我们还有很多需要替换的东西 。 首先 , 我们还要处理那些比较明显的字符串 。 Mimikatz菜单中包含对每个函数的介绍 。 比如说 , 子函数privilege就有下列描述信息:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
这里 , 我们可以将所有的描述以字符串的形式添加进我们的Bash脚本中来进行替换 。 但并非所有都需要 , 比如说下面这些:
answer- Answer to the Ultimate Question of Life, the Universe, and Everythingcoffee- Please, make me a coffee!
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
很多反病毒厂商会将相关的功能性DLL文件加载行为也进行标记 , Mimikatz需要从.DLL文件中加载很多函数 , 为了在Mimikatz源代码中找到相关的DLL文件 , 我们需要打开Visual Studio , 按下STRG + SHIFT + F 。 此时将能够搜索整个项目 , 搜索.dll就可以查看到项目中所有使用到的DLL文件了 , 然后将它们添加到Bash脚本中进行名称替换即可 。
目录&文件结构整个项目的目录结构似乎也是反病毒产品检测的根据之一 , 这里所有可用的函数名称貌似都是以kuhl或KULL作为前缀来声明的:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图
我们可以直接替换掉这些前缀:
kuhl=$(cat /dev/urandom |tr-dc"a-z"| fold -w4| head -n1)find windows/ -type f -print0| xargs -0sed -i"s/kuhl/$kuhl/g"kull=$(cat /dev/urandom |tr-dc"a-z"| fold -w4| head -n1)find windows/ -type f -print0| xargs -0sed -i"s/kull/$kull/g"find windows/ -type f -name"*kuhl*"|whilereadFILE ;donewfile="$(echo${FILE}|sed -e "s/kuhl/$kuhl/g")";donefind windows/ -type f -name"*kull*"|whilereadFILE ;donewfile="$(echo${FILE}|sed -e "s/kull/$kull/g")";doneunder=$(cat /dev/urandom |tr-dc"a-z"| fold -w4| head -n1)find windows/ -type f -print0| xargs -0sed -i"s/_m_/$under/g"find windows/ -type f -name"*_m_*"|whilereadFILE ;donewfile="$(echo${FILE}|sed -e "s/_m_/$under/g")";Bash脚本:
执行Bash脚本之后 , 编译并上传至Virustotal:
FreeBuf手把手教你构建自定义的Mimikatz二进制文件
本文插图


推荐阅读