绕过Windows Defender的“繁琐”方法
在我平常渗透测试时,一旦拿到了管理员权限,往往我就不再往内网渗透了。因为如果那样做很可能会碰到一堆防护软件,然后不仅没能深入,本身拥有的管理员权限还有可能受影响。但在某一天,我的渗透之旅较为顺利,很快就获得了目标的高权限,于是我想,是时候深入一下了。所以,我打开了大名鼎鼎的MimiKatz。但是,很明显,操作系统的Windows Defender并不希望我使用这个软件。
于是,我决定简单测试一下如何才能绕过Windows Defender。我搭建了一个本地测试环境,操作系统是Windows 10,Windows Defender已更新到最新版。
我不希望微软检测到我的测试过程,所以我关闭了基于云的保护
和自动样本提交
这两项功能。
第一步,展示MimiKatz会被最新版本的Windows Defender所拦截。我从远程服务器下载MimiKatz脚本并执行。
嗯?反应似乎太过迅速。我检查了存放MimiKatz脚本的服务器,发现没有收到外部连接尝试。看来Defender检查了命令中的敏感字符,直接拦截了下载动作。
我尝试把上述命令中的所有的MimiKatz
改为MimiKat
,看看是否还会拦截。
似乎有效!...嗯...至少文件下载是没问题了。让我们用命令迅速将Mimikatz脚本的所有MimiKatz
改为MimiKat
sed -i -e 's/Mimikatz/Mimikat/g' Invoke-Mimikat.ps1
如上图所示再试一次,好的,还是不成功。在这里我们可以试试将以前研究人员发现的MimiKatz脚本中的敏感字符进行替换,让我们看看在2017年1月5日由@BHinfoSecurity发表的一篇文章https://www.blackhillsinfosec.com/bypass-anti-virus-run-mimikatz/
,里面有很多MimiKatz脚本中敏感字符的替换手段。让我们试试在替换后,命令行运行结果。
OK,正如我所料,过时了......我想Defender在过去一年左右的时间里已经完全免疫了这种混淆方法......现在,我们还是要找出真正敏感的字符。我决定将文件切割,逐个测试,看能不能发现什么。
split -l 50 Invoke-Mimikat.ps1 ./SPLIT/Mimi-
我选择将文件切割为50个,当然,你可以选择你想要的精细程度。现在,让我们通过远程传输的方式,逐一测试这些分割后的文件。
Get-MpThreatDetection | where {$_.InitialDetectionTime -gt '3/09/2019 1:48:00 PM'} | measure | % { $_.Count }
Copy-Item "\\172.16.56.105\SPLIT\" -Destination .\ -Recursive
Get-MpThreatDetection | where {$_.InitialDetectionTime -gt '3/09/2019 1:48:00 PM'} | measure | % { $_.Count }
经过一番测试,Defender貌似标记了其中两个文件。让我们深入研究一下。
从上图我们可以看出,Resources
一栏显示Mimi-aj和Mimi-cb是罪魁祸首。
接下来,我们可以把脚本中看似“恐怖”的变量进行替换,或者再把文件进行切割然后测试,直到我们把敏感字符精确到最小单位。对于第一个文件,我重命名了一些可怕的变量,成功绕过,于是乎,只剩下最后1/50个文件了。
然后重复我们之前的步骤,不断缩小范围,替换敏感字符。
最后,我们已经能够成功绕过Windows Defender!此外,赛门铁克也不在话下。我已经开发了一个简单的脚本来实现整套流程,但更重要的是了解它的原理。在后续帖子中,我将更加深入地探讨自动化混淆。
如果你知道更好的工具,请通过推特和我交流.
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://www.cyberguider.com/bypassing-windows-defender-the-tedious-way/
最新评论