hello,在我之前的文章中,我详细的介绍了如何从本地管理员手动获取system权限的shell,假设你已经拥有了目标机器的权限,那么在渗透测试评估的后期将会变得更加有趣。
这篇文章对渗透测试的前期会更有用,因为AMSI(Anti Malware Scan Interface)会对获取shell,或者当以普通用户的权限运行post-exploitation工具时造成一定的麻烦。
什么是 AMSI
AMSI即代表"反恶意软件扫描接口"。
正如它的名字所示,它的工作是扫描,检测和阻止恶意行为。
还是不知道这是什么?看看这张截图:
显然,如果您有在Windows环境中进行渗透测试的经验,那么几乎所有已知的公开脚本都会出现这样的错误,就像Nishang、Empire、PowerSploit和其他强大的PowerShell脚本中使用的一些脚本一样。
AMSI 是怎么工作的?
AMSI 使用"基于字符串"的检测措施来确定PowerShell代码是否为恶意代码。
来看看例子:
是的,"amsiutils"一词是被禁止的。如果你的名字中有这个词,我的朋友,那么你对于AMSI来说就是个恶意的人。
如何绕过字符串检测?
每个人都知道字符串检测是很容易绕过的,只是不使用被禁用的字符串。使用编码或将其分割成块,然后重新拼接来解决这个问题。
这里有三种方法可以执行"banned"的代码而不会被阻止。
仅仅将字符串一分为二就足以欺骗这种检测方法。我们经常在混淆中看到这个,但在大多数情况下,这种方法可能会失败。
在某些情况下,只要将被禁用的字符串进行base64编码就足够绕过它了。
当然,您可以使用XOR来欺骗amsi并在运行时将字符串解码到内存。这将是更有效的方法,因为它需要更高的抽象来检测它。
所有这些技术都是为了"绕过"字符串检测,但我们不希望这样。我们希望以初始状态执行脚本,即它们被AMSI拦截前的状态。
通过memory patching 来bypass AMSI