链接到所有部分:第1部分。获得初始访问权限(Initial Access)第2部分。执行第3部分。紧固(持久性)第4部分。特权提升第5部分。逃避防御第6部分。获取凭据(凭据访问)第7部分。发现第8部分。横向运动保护访问的主要任务是确保在受攻击的系统中始终存在,因为访问可能由于受攻击的系统重新启动,凭据丢失或由于检测到攻击而导致的远程访问工具阻塞而丢失。
对于使用本文中阐述的信息可能造成的后果,作者概不负责,对于某些表述和术语可能存在的不准确性,我们深表歉意。 发布的信息是对MITER ATT&CK内容的免费转载。确保系统稳定的方法可以分为3类:
- 未经授权创建帐户或盗窃现有凭证;
- 隐藏安装和启动远程访问工具;
- 借助这些更改,可以运行许多恶意代码,从而更改受攻击系统的配置。 每次系统启动或每个用户登录系统,启动经过修改的或恶意的服务,由用户启动某些程序或启动更新系统或第三方软件的过程时,恶意代码都可以自动启动。
此外,还介绍了ATT&CK提供的访问锁定技术。
系统: Linux,macOS
权限:用户,管理员
描述:攻击者可以在〜/ .bash_profile和〜/ .bashrc文件(
旨在在OS中创建用户环境)中嵌入代码,这些文件将在用户登录或启动新的Shell时执行。 〜/ .bash_profile文件在用户登录时执行,〜/ .bashrc在交互式打开外壳时执行。 当用户使用用户名和密码登录(本地或远程,例如通过SSH)时,在返回用户邀请之前,将执行〜/ .bash_profile。 之后,每次打开新的外壳程序时,都会执行〜/ .bashrc。
在macOS上,Terminal.app稍有不同,因为它每次在打开终端窗口时都会启动默认的登录Shell,从而每次都调用〜/ .bash_profile。
保护建议:仅授予授权管理员修改〜/ .bash_profile和〜/ .bashrc文件的权限。
系统: Windows
权限:管理员
描述:在用户登录系统之前,可以使用组合键启动辅助功能应用程序(屏幕放大镜,屏幕键盘等)。 攻击者可以替换这些程序的启动文件或更改启动方式,并打开命令控制台或获得后门而无需登录。
- C:\ Windows \ System32 \ sethc.exe-按住Shift键5倍启动;
- C:\ Windows \ System32 \ utilman.exe-通过按Win + U组合启动。
在WinXP及更高版本中,可以用例如cmd.exe替换sethc.exe和utilman.exe,然后在按所需的组合键时启动cmd.exe,然后以系统特权进入Windows。
在Vista和更高版本中,您需要更改将cmd.exe或其他程序配置为调试器的注册表项,例如,对于ultiman.exe。 编辑注册表并在登录屏幕上按所需的组合键后,或通过RDP连接到主机时,将执行具有系统权限的cmd.exe。
也可以使用Windows程序来实施此攻击技术:
- C:\ Windows \ System32 \ osk.exe;
- C:\ Windows \ System32 \ Magnify.exe;
- C:\ Windows \ System32 \ Narrator.exe;
- C:\ Windows \ System32 \ DisplaySwitch.exe;
- C:\ Windows \ System32 \ AtBroker.exe。
安全建议:在创建RDP会话并显示登录屏幕之前(
在Windows Vista和更高版本中默认启用),为远程用户配置强制性网络身份验证的开始。 使用远程桌面网关来管理连接并配置RDP安全性。
系统: Windows
权限:系统管理员
说明:在AppCertDLLs密钥值中指定的DLL被加载到每个调用频繁使用的API函数的进程中:
CreateProcess,CreateProcessAsUser,CreateProcessWithLoginW,CreateProcessWithTokenW,WinExec 。 通过导致恶意DLL加载并运行某些进程,可以滥用AppCertDLLs密钥值。 AppCertDLLs存储在以下注册表项中:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager 。
保护建议:使用所有可能的方法来阻止潜在危险的软件并下载未知的DLL,例如AppLocker和DeviceGuard。
系统: Windows
权限:系统管理员
说明: AppInit_DLLs密钥值中指定的DLL被加载到user32.dll加载的每个进程中。 实际上,这几乎是每个程序。
AppInit_DLLs存储在以下注册表项中:
- HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Windows;
- HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows。
通过加载恶意DLL并启动某些进程,可以滥用AppInit_DLLs密钥值来超过特权。 激活安全启动后,Windows 8及更高版本将禁用AppInit_DLLs功能。
保护建议:考虑使用不早于Windows 8的操作系统版本并启用安全启动。 使用各种方式阻止潜在危险的软件并下载未知的DLL,例如AppLocker和DeviceGuard。
系统: Windows
权限:管理员
说明:创建 Microsoft Windows应用程序兼容性基础结构/框架是为了确保程序与Windows更新和OS代码更改的兼容性。 兼容性系统使用所谓的“垫片”(“垫片”)-库,这些库充当程序和OS之间的缓冲区。 系统使用垫片高速缓存来确定是否需要垫片(存储为.sdb数据库)。 各种.sdb文件存储各种过程,这些过程用于拦截应用程序代码,对其进行处理,然后将其重定向到OS。 默认情况下,安装程序(sdbinst.exe)安装的所有填充垫片的列表存储在:
- %WINDIR%\ AppPatch \ sysmain.sdb ;
- HKLM \软件\ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ InstalledSDB 。
自定义填充程序数据库存储在:
- %WINDIR%\ AppPatch [64] \自定义;
- HKLM \软件\ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Custom 。
为了确保在用户模式下提供保护,排除了使用Shim垫片更改OS内核的能力,并且需要管理员权限才能安装它们。 但是,某些填充垫可用于绕过用户帐户控制(UAC),DLL注入,禁用
数据执行保护和
结构异常处理以及拦截内存地址。 使用隔离垫片的攻击者可以增加特权,安装后门,禁用操作系统保护,例如Windows Defender。
保护建议:防止应用程序伪装的方法并不多。 不建议禁用应用程序兼容性,以避免操作系统稳定性的问题。 Microsoft已发布
KB3045645 ,它将删除sdbinst.exe文件中的“ auto-elevate”标志,以防止使用填充程序系统绕过UAC。
系统: Windows
权限:管理员
说明: Windows身份验证包DLL由系统启动时的本地安全机构(LSA)进程加载,并为多个登录过程和多个OS安全协议提供支持。 攻击者可以通过在以下注册表项中放置指向二进制文件的链接来使用LSA自动运行机制:
HKLM \ SYSTEM \ CurrentControlSet \ Control \ Lsa \身份验证程序包:[目标二进制文件] 。
下载
身份验证包时,系统将启动[目标二进制文件]。
保护建议:在Windows 8.1,Windows Server 2012 R2和更高版本的LSA中,您可以使用注册表项使其作为受保护进程(PPL):
HKLM \系统\ CurrentControlSet \控件\ Lsa \ RunAsPPL = DWORD:00000001 ,
这要求LSA加载的所有DLL都必须使用Microsoft数字证书进行签名。
系统: 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 。
系统: Linux,Windows
权限:系统管理员
描述: Bootkit是一种可以更改硬盘驱动器引导扇区的恶意软件,其中包括Master Boot Record(MBR)和Volume Boot Record(VBR)。 攻击者可以使用Bootkit停靠在操作系统以下的系统上。 MBR-铁路的这一部分,在完成硬件初始化Bios后立即加载。 有权重写MBR的攻击者可以用恶意代码替换引导加载程序代码。 VBR是从MBR接收启动过程控制的硬盘分区。 与重写MBR的选项类似,攻击者可以在系统引导阶段运行恶意代码。
保护建议:使用MBR和VBR完整性控制工具。 使用可信平台模块(TPM)和安全启动。
系统: Windows,Linux,macOS
权限:用户
说明:通常,插件具有浏览器可以获得的所有访问权限和权限。 可以通过使用社交工程技术,网络钓鱼或已经破坏系统的攻击者下载伪装成合法程序的恶意应用程序来安装恶意插件。 恶意插件可以在后台打开网站,窃取用户在浏览器中输入的信息(包括凭据),以用作远程管理工具(RAT)的安装程序并修复系统。
保护建议:仅从可靠来源安装插件。 使用组策略控制已安装的插件。 防止普通用户安装插件。 清单和监视已安装的插件。
系统: Windows
权限:用户,管理员,系统
描述:攻击者可以修改文件关联以运行任意命令。 与应用程序的文件关联的选择存储在Windows注册表中,并且可以由有权访问该注册表的用户,管理员和程序编辑。 应用程序可以修改关联以调用任意程序。 系统关联的参数存储在注册表中:
HKEY_CLASSES_ROOT \。[扩展名] ,例如,
HKEY_CLASSES_ROOT \ .txt 。 各个命令列为小节:
HKEY_CLASSES_ROOT \ [handler] \ shell \ [action] \ [command] ,例如:
- HKEY_CLASSES_ROOT \ txtfile \ shell \ open \ [命令];
- HKEY_CLASSES_ROOT \ txtfile \ shell \ print \ [命令];
- HKEY_CLASSES_ROOT \ txtfile \ shell \ printto \ [命令];
其中
[command]是打开具有指定扩展名的文件时将执行的命令。
安全最佳方案
:遵循
Microsoft关于文件关联
的建议 。 使用所有可能的方法来阻止潜在危险的软件,例如AppLocker和DeviceGuard。
系统: Windows
权利:系统
描述:某些网络罪犯可以使用复杂的工具来破坏计算机组件,并在其上安装恶意固件,这些恶意固件将在操作系统乃至主系统固件(Bios)外部运行恶意代码。 该技术包括刷新不具有内置完整性检查系统的计算机组件,例如硬盘驱动器。 即使硬盘发生故障和覆盖,带有恶意固件的设备仍可以提供对受攻击系统的持续访问。 该技术旨在克服软件保护和完整性控制的问题。
系统: Windows
权限:用户
描述: Microsoft组件对象模型(COM)是一种用于基于对象的交互组件创建软件的技术,每个组件可以同时在许多程序中使用。 攻击者可以通过捕获COM链接来使用COM注入可执行的恶意代码,而不是合法的恶意代码。 要拦截COM对象,您需要替换Windows注册表中指向合法系统组件的链接。 对该组件的进一步调用将执行恶意代码。
保护建议:由于COM对象是OS的一部分并安装在系统软件中,因此不建议采取预防措施来防止这种攻击。 阻止对COM对象的更改可能会影响OS和软件的稳定性。 建议使用保护媒介来阻止恶意软件和潜在危险软件。
系统: Windows,Linux,macOS
权限:管理员
描述:具有足够访问权限的攻击者可以创建本地帐户或域帐户,以进一步整合到系统中。 网络用户命令也可以用于创建帐户。
安全建议:使用多因素身份验证。 在重要服务器上配置安全设置,配置访问控制,防火墙。 禁止使用域管理员帐户执行日常操作,在此期间,攻击者可以获得帐户信息。 如果访问级别受到适当的阻止,则在系统中创建帐户的攻击者只能获得对网络的有限访问。 仅可能需要帐户才能保护对单独系统的访问。
系统: 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的建议 。
系统: macOS
权限:用户
描述:该技术基于
macOS和OS X上dylib动态库搜索算法中的漏洞。最重要的是确定受攻击的应用程序加载的dylib,然后将具有相同名称的dylib的恶意版本放置在应用程序的工作目录中。这将导致应用程序加载dylib,该文件位于程序的工作目录中。在这种情况下,将使用受攻击应用程序的访问权限执行恶意的Dylib。安全提示:防止用户将文件写入dylib搜索目录。使用Objective-See 的Dylib劫持扫描程序来审核漏洞。系统: Windows权限:用户说明:攻击者可以使用组织的外部远程服务(例如VPN,Citrix和WinRM)将自己保护在受攻击的网络内。可以使用有效帐户来执行对服务的访问,该帐户使用将用户重定向到虚假站点(域名欺诈)的技术获得,也可以在破坏网络的阶段进行。保护建议:使用VPN通过集中管理的交换机限制对远程服务的访问。禁止通过代理,网关和防火墙直接远程访问内部网络。禁用可远程使用的服务,例如WinRM。使用两因素身份验证。在工作时间以外监视使用远程服务的活动。系统: Windows权限:用户,管理员说明:该技术的本质是替换由各种进程自动启动的可执行文件(例如,在加载操作系统时或在某个时间,如果对可执行文件的权限配置不正确)。欺骗之后,将以进程权限启动恶意文件,因此,如果进程具有更高的访问级别,则攻击者将能够提升特权。使用这种技术,攻击者可以尝试操纵Windows服务二进制文件。攻击的另一个变体与自解压安装程序工作中算法的缺陷有关。在安装过程中,安装程序通常将各种有用的文件(包括.dll和.exe)解压缩到%TEMP%目录中,但是,他们可能未设置适当的权限来限制对解压缩文件的访问,这使攻击者可以执行文件欺骗,并且因此,增加特权或绕过帐户控制,例如一些安装程序以扩展特权运行。保护建议:帐户权限限制,以便只有管理员才能管理服务并与服务使用的二进制文件进行交互。禁用标准用户的UAC特权升级选项。UAC设置存储在以下注册表项中:- [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System]。
要自动拒绝特权升级请求,必须添加一个密钥:- “ ConsentPromptBehaviorUser” = dword:00000000。
要控制安装程序的工作,必须添加一个密钥:- “ EnableInstallerDetection” = dword:00000001,这将需要密码才能安装程序。
系统: Windows,Linux,macOS权限:用户说明:攻击者可以使用隐藏文件和文件夹的功能,以免引起用户的注意。在Windows上,用户可以使用attrib命令隐藏文件。指定属性+ h <文件名>即可隐藏文件,或者指定“ + s”即可将文件标记为系统。通过添加“ / S”参数,attrib实用程序将递归应用更改。在Linux / Mac上,用户只需在文件名的开头指定“。”即可隐藏文件和文件夹。之后,文件和文件夹将从Finder应用程序和“ ls”实用程序中隐藏。在macOS上,可以使用UF_HIDDEN标记文件,这将禁用它们在Finder.app中的可见性,但不会阻止在Terminal.app中看到隐藏的文件。许多应用程序会创建隐藏的文件和文件夹,以免使用户的工作空间混乱。举个例子SSH实用程序创建一个隐藏的.ssh文件夹,该文件夹存储已知主机和用户密钥的列表。保护建议:由于隐藏文件是操作系统的标准功能,因此很难避免使用此技术。系统: Windows权限:管理员,系统说明: Windows API函数通常存储在DLL中。挂钩技术是通过以下方式将调用重定向到API函数:- 挂钩过程-内置于OS中的过程,可在调用各种事件(例如,击键或移动鼠标)时执行代码;
- 对地址表(IAT)的修改,该表存储指向API函数的指针。这将允许您“欺骗”受攻击的应用程序,迫使其启动恶意功能;
- 直接更改功能(拼接),在此期间更改功能的前5个字节,而不是插入到由攻击者确定的向恶意功能或其他功能的转换。
像注入一样,攻击者可以使用钩子执行恶意代码,屏蔽其执行,访问被攻击进程的内存并增加特权。攻击者可以捕获API调用,这些API调用包含包含身份验证数据的参数。Rootkit通常使用挂钩来隐藏系统中的恶意活动。保护建议:操作系统中事件的拦截是系统正常运行的一部分,因此,此功能的任何限制都可能对合法应用程序(例如防病毒软件)的稳定性产生不利影响。防止使用拦截技术的工作需要集中在攻击链的早期阶段。您可以通过监视对SetWindowsHookEx和SetWinEventHook函数的调用,使用rootkit检测器并分析进程的异常行为来检测恶意挂钩活动。系统: Windows权限:管理员,系统说明:系统管理程序可能受到攻击者的攻击,并在来宾系统中隐藏了rootkit。安全建议:防止恶意访问安装和配置虚拟机监控程序所需的特权帐户。系统: Windows权限:管理员,系统说明:图像文件执行选项(IFEO)机制使您可以运行程序调试器,而不是开发人员先前在注册表中指定的程序:- HKLM \软件\微软\ Windows NT \ CurrentVersion \图像文件执行选项/ [可执行文件]
- HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\[executable] ,, [executable] — .
像注入一样,[executable]值可以通过运行任意代码来增加特权或在系统中立足,从而被滥用。恶意程序可以使用IFEO,通过注册重定向并拒绝各种系统和安全应用程序的调试器来绕过保护。保护建议:所描述的技术基于对常规OS开发工具的滥用,因此任何限制都可能导致合法软件(例如安全应用程序)的不稳定。防止使用IFEO注入技术的工作应集中在攻击链的早期阶段。您可以通过使用Debug_process和Debug_only_this_process。系统: Linux,macOS权限:根目录说明:可下载的内核模块(LKM)是可以从内核加载和卸载的特殊程序,而无需完全重新引导系统。例如,LKM包含设备驱动程序。攻击者可以使用各种rootkit加载恶意LKM。通常,此类rootkit会自行破解文件,进程,网络活动,伪造的审核日志并提供后门。就像macOS上的LKM一样,有些所谓的KEXT会通过kextload和kextunload命令进行加载和卸载。保护建议:使用Linux rootkit检测工具:rkhunter,chrootkit。限制对root帐户的访问,这是将模块加载到内核所需的。使用SELinux强制访问控制。系统: macOS权限:用户说明: Mach-O文件包含许多标头,这些标头在下载二进制文件时用于执行某些操作。Mach-O二进制文件中的标头LC_LOAD_DYLIB告诉操作系统要加载哪些dylib库。更改标头将使数字签名无效,但是,攻击者可以从二进制文件中删除LC_CODE_SIGNATURE命令,并且系统不会在下载签名时验证签名是否正确。保护建议:所有二进制文件都必须使用正确的Apple Developer ID签名,并且应用程序白名单将根据已知哈希值进行编译。系统: Windows权限:管理员,系统说明:本地安全机构(LSA)-提供用户身份验证的Windows子系统。LSA包含几个在LSASS.exe进程中运行的动态互连DLL。攻击者可以通过替换或添加非法LSA驱动程序然后执行任意代码来攻击LSASS.exe。该技术在Pasam和Wingbird恶意软件中实现,该恶意软件“抛出”用于加载LSASS的经过修改的DLL。在这种情况下,恶意代码会在非法DLL导致崩溃以及随后的LSASS服务崩溃之前执行。保护建议: 在Windows 8.1和Server 2012 R2中,通过激活指定的密钥来启用LSA保护:- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ RunAsPPL = dword:00000001。
此保护可确保Microsoft进行LSA加载的插件和驱动程序的数字签名。在Windows 10和Server 16上,启用Windows Defender Credential Guard在独立的虚拟环境中运行lsass.exe。为了降低恶意库加载到lsass.exe中的风险,请启用安全DLL搜索模式:- HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \控件\会话管理器\ SafeDllSearchMode。
系统: macOS权限:用户,管理员说明:该技术在于滥用用户创建和启动的功能启动代理-用户级别的自动运行服务。当每个用户登录到系统时,launchd从* .plist文件中加载启动代理的参数。Plist文件具有XML结构,并包含告诉启动了哪些可执行文件以及何时启动的指令。可以在以下目录中找到Plist文件:- /系统/库/ LaunchAgents;
- /图书馆/ LauncAgents;
- $主页/图书馆/ LaunchAgents。
攻击者还可以使用合法程序的名称来掩盖恶意启动代理的名称。例如,Komplex木马创建了一个启动代理:$ HOME / Library / LaunchAgents / com.apple.updates.plist。保护建议:使用组策略,配置对创建启动代理的用户的限制。创建启动代理涉及在磁盘上加载或创建plist文件,因此将防御工作集中在攻击的早期阶段。系统: macOS权限:管理员描述:该技术在于更改攻击者在plist文件中指定的系统启动级别服务的参数-启动守护程序。系统引导时,启动的进程将从位于以下目录中的plist文件加载服务(守护程序)的参数:- /系统/库/ LaunchDeamons;
- /库/ LaunchDeamons。
可以使用管理员权限创建启动守护程序,但可以在root帐户下运行,因此攻击者可以升级权限。plist文件的权限必须是root用户:但是,其中指定的脚本或程序的权限可能不太严格。因此,攻击者可以修改plist中指定的可执行文件,从而修改当前的系统服务以保护系统或升级特权。安全提示:限制用户特权,以便只有授权的管理员才能创建启动守护程序。考虑监视如何使用诸如KnockKnock之类的应用程序在系统上创建plist文件。系统: macOS权限:用户,管理员说明: Launchctl-用于管理启动服务的实用程序。使用Launchctl,您可以管理系统和用户服务(LaunchDeamons和LaunchAgents)以及执行命令和程序。 Launchctl支持交互式或从标准输入重定向的命令行子命令:launchctl Submit -l [labelname]-/路径/到/ something /到/执行''arg“''arg”''arg“。启动和重新启动服务以及守护程序,如果launchctl是经过授权的进程,攻击者可以执行代码,甚至绕过白名单,但是,加载,卸载和重新加载服务和守护程序可能需要提升的特权。保护建议:限制用户权限,以使用组策略创建启动代理和启动启动重传。使用KnockKnock应用程序,您可以发现使用launchctl来管理Launch Agent和Launch Deamons的程序。系统: Linux,macOS权限:用户,管理员,root用户说明:攻击者可以在被攻击的系统上创建任务,以使未授权程序在系统启动或按计划启动时启动。Linux和Apple系统支持几种计划定期后台任务启动的方法:cron at at launchd。与Windows Task Scheduler不同,除了使用SSH之类的远程会话外,Linux系统上的任务调度无法远程完成。保护建议:限制用户创建计划任务的权限,阻止系统实用程序和其他可用于计划任务的软件。系统: macOS权限:用户说明:为了保护自己在系统中的攻击者,他们可以配置其代码以使用登录项自动启动(每次登录时启动应用程序的用户设置)。使用服务管理框架创建的登录项目不会显示在系统设置中,只能通过创建它们的应用程序将其删除。用户只能管理系统设置中显示的那些登录项目。此类登录项的设置存储在用户目录下的plist文件中:〜/ Library / Preferences / com.apple.loginitems.plist。登录项中的应用程序可以显示在启动时用户可见的窗口,但是您可以使用“隐藏”选项将其隐藏。保护建议:限制用户权限以创建登录项。值得注意的是,在登录期间按住Shift键会阻止应用程序自动启动。控制登录项设置(系统设置→用户和组→登录元素)。系统: Windows,macOS描述:为了整合到系统中,攻击者可以使用此功能来创建新的或修改现有的登录脚本-每当特定用户或一组用户登录系统时便会执行的脚本。如果攻击者获得了Windows域控制器上登录脚本的访问权限,则他可以对其进行修改以在域中的所有系统上执行代码,以“侧向移动”网络。根据登录脚本文件的访问权限设置(通常,此类脚本存储在\\ [DC] \ NETLOGON \中),攻击者可能需要本地或管理凭据。在Mac上,登录脚本(“ 登录/注销挂钩”),与在用户上下文中启动的Login Item不同,它可以root身份运行。安全建议:限制管理员特权以创建登录脚本。识别和阻止可用于修改登录方案的潜在危险软件。系统: Windows权限:管理员,系统说明:要反复启动系统中的恶意代码,攻击者可以使用系统实用程序或工具来与Windows API交互来修改现有服务的配置。攻击者可能故意损坏或杀死服务,以供随后调用已修改的程序或服务恢复命令。使用现有服务是一种伪装技术,它使检测恶意活动变得困难。有关Windows服务配置的信息(包括启动和还原服务的程序和命令的路径)存储在注册表中:- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services。
您可以使用控制台实用程序sc.exe和Reg更改服务的配置。保护建议:限制用户和组更改服务配置的特权,仅将权限授予授权的管理员。阻止潜在危险的软件。要研究系统服务中的更改以识别试图保护系统中的攻击者的安全,可以使用Sysinternals Autoruns实用程序。系统: Windows
权限:系统管理员
描述:攻击者可以使用内置的Netsh控制台实用程序执行代码,该实用程序允许加载扩展DLL来扩展功能:
netsh>添加帮助程序[DLL路径]有关netsh使用的注册库的信息存储在注册表中:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NetSh某些公司VPN客户端和网络实用程序可以使用netsh.exe来代表系统启动它,在这种情况下,攻击者可以注册或修改将在VPN客户端使用netsh时执行的辅助DLL。
CobaltStrike (渗透测试框架)中包含用于实施此类攻击的工具。
安全提示:使用诸如AppLocker之类的工具阻止潜在危险的软件。
系统: Windows
权限:系统管理员
描述:命名对系统的访问,攻击者可以创建新服务并将其配置为自动启动。 可以使用特定于操作系统的名称来屏蔽服务名称。 可以使用管理员权限创建服务,但可以代表系统运行。 可以使用与Windows API互操作的远程访问工具,或者使用标准Windows和PowerShell管理工具,从命令行创建服务。
安全建议:限制用户创建新服务的权限,以便只有授权的管理员才能执行此操作。 应用AppLocker和
软件限制策略 。
系统: Windows
权限:用户,管理员
描述:某些MS Office工作机制可用于在运行Office应用程序时执行代码,从而为攻击者提供系统中的稳定性:
•在基本的Office模板中嵌入恶意VBA宏。 Word使用Normal.dotm模板:
C:\ Users \ [用户名] \ AppData \ Roaming \ Microsoft \ Templates \ Normal.dotm 。
Excel中没有默认模板,但是您可以手动添加它,它会自动加载:
C:\ Users \ [用户名] \ AppData \ Roaming \ Microsoft \ Excel \ XLSTART \ Personal.xls 。
仅当在Office Trust Center中启用“
运行所有宏 ”选项时,才可能实施攻击:
HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ [Version] \ [Application] \ Security \ VBA警告:1;•在Windows注册表的Office测试部分中放置DLL链接会导致在每次Office应用程序启动时执行指定的DLL:
HKEY_CURRENT_USER \ Software \ Microsoft \ Office Test \ Special \ Perf \ [默认]:[指定DLL的路径];•使用将在受攻击的应用程序启动时执行的恶意代码向Office应用程序添加附件。
安全最佳实践 : 配置宏安全设置时,请遵循
Microsoft的最佳实践 。 为防止Office测试机制的运行,请在注册表中创建指定的部分,并对其设置只读权限,以防止在没有管理员权限的情况下对其进行访问。 如果可能,请禁用Office加载项(如果需要),然后在组织其工作时遵循
Microsoft的
建议 。
系统: Windows
权限:用户,管理员,系统
说明:拦截路径
的技术是将可执行文件放置在应用程序将从其启动的目录中,而不是目标文件中。 攻击者可以使用以下方法:
- 不存在的路径。 服务可执行文件的路径存储在注册表项中,并且可以具有一个或多个空格,例如C:\ Program Files \ service.exe ,如果攻击者在系统中创建了C:\ Program.exe文件,则Windows将启动它而不是处理路径服务目标文件。
- 环境变量配置不正确。 如果在PATH变量中路径C:\ example在c:\ Windows \ System32之前 ,并且文件C:\ example \ net.exe存在 ,则在调用net命令时,将执行C:\ example \ net.exe ,而不是c:\ Windows \ System32 \ net.exe 。
- 拦截搜索顺序(劫持搜索顺序)。 如果未指定可执行文件的完整路径,则Windows通常会在当前目录中搜索具有指定名称的文件,然后搜索系统目录。 例如,文件“ example.exe”在执行时会启动cmd.exe,并带有执行net use命令的参数。 攻击者可以将net.exe文件放置在example.exe位置目录中,而不是c:\ Windows \ System32 \ net.exe实用程序将被启动。 另外,如果攻击者将net.com文件和net.exe文件放在目录中,则Windows将按照PATHEXT系统变量中定义的执行顺序执行net.com。
文件搜索顺序拦截也可用于使用Search Hijacking DLL技术执行DLL。安全建议:引号表示在配置文件,脚本,PATH变量,服务设置和快捷方式中指定的路径。 记住可执行文件的搜索顺序,并且仅使用完整路径。 清理掉远程软件中遗留下来的旧注册表项,以使注册表中没有指向不存在的文件的注册表项。 禁止系统用户写入根目录C:\和Windows系统目录,将写入权限限制为具有可执行文件的目录。
系统: macOS
权限:用户,管理员
描述:攻击者可以在plist文件中指定自己的代码以在另一个用户的上下文中执行该代码,从而修改plist文件。 位于
/ Library / Preferences中的plist属性文件以提升的特权运行,而
〜/ Library / Preferences中的plist以用户特权运行。
安全提示
:通过将plist文件设置为只读来防止其被修改。
系统: Linux,macOS
权限:用户
描述:攻击者可以使用端口敲门方法来隐藏他们用于连接至系统的开放端口。
安全提示
:使用状态防火墙可以阻止实施某些“端口敲门”选项。
系统: Windows
权限:系统管理员
描述:每次Windows使用滥用打印管理器设置(Spoolsv.exe)引导时,攻击者都可以代表System安排执行任意DLL。 为了与打印设备进行交互,Spoolsv.exe使用了所谓的端口监视器-这些是DLL库,它们使用低级命令通过LAN,USB,LPT或COM接口发送到打印设备。 上面的DLL存储在
C:\ windows \ system32中 ,并在注册表中注册:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Print \ Monitors 。
可以使用AddMonitor API或直接通过编辑上述注册表项来安装端口监视器。
保护建议:组织对潜在危险软件的阻止并使用应用程序启动控制工具。
系统: macOS
权利:根
描述:攻击者可以将代码添加到
/etc/rc.common文件中,该文件将在系统每次以root用户身份启动时执行。 Rc.common是在OC启动期间运行的脚本,并且是Launch Agents和Launh Deamons的先驱。 这是用于自动启动程序的过时技术,但仍在macOS和OS X上受支持。
安全建议:限制用户特权才能编辑rc.common文件。
系统: macOS
权限:用户
描述:在以
OS X 10.7(Lion)开头的系统上,攻击者可以在每次重新启动OS时组织一次恶意文件的执行。 该技术基于滥用重新启动系统后重新启动应用程序的功能。 使用GUI内置的工具,用户可以告诉系统在重新启动OS的情况下需要重新启动哪些应用程序。 这些设置存储在plist文件中:
- 〜/库/首选项/ com.apple.loginwindow.plist;
- 〜/库/首选项/ ByHost / com.apple.loginwindows。*。Plist。
每次重新启动系统时,攻击者都可以修改上述文件以执行恶意代码。
保护建议:可以使用控制台命令禁用应用程序重新启动功能:
默认为write -g ApplePersistence -bool no 。
此外,在引导过程中按住Shift键可防止应用程序自动启动。
系统: Windows,Linux,macOS
权限:用户,管理员,系统
描述:攻击者可以同时使用具有不同控制协议的多个远程访问工具,以分散检测风险。 因此,如果检测到并阻止了一种远程访问工具,但防御方尚未识别出所有攻击者的工具,则仍将保留对受攻击网络的远程访问。 攻击者还可能尝试访问远程企业服务(例如VPN)的有效帐户,以在阻止远程访问基本工具的情况下获得对系统的替代访问。 使用Web Shell也是通过Web服务器远程访问网络的方法之一。
保护建议:监视网络中已知远程访问工具(AmmyAdmin,Radmin,RemotePC,VNC等)的存在和阻止,使用工具控制应用程序的启动并阻止潜在危险的软件。 引入使用签名检测特定恶意软件的IDS和IPS系统将降低成功攻击的可能性,但是随着时间的推移,攻击者将修改其工具以更改签名,从而绕过IDS和IPS系统。
系统: Windows
权限:用户,管理员
描述:攻击者可以在Windows注册表中向Windows注册表中的“启动”文件夹添加“运行密钥”或链接,以在用户登录系统时启动恶意文件。 该程序将以当前用户的权限执行。 攻击者可以屏蔽注册表中的启动密钥,使其看起来像合法程序的一部分。
运行项存储在以下注册表项中:
- HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run;
- HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce;
- HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \运行;
- HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ RunOnce。
保护建议:识别和阻止潜在危险的软件,监视对上面列出的Startup文件夹和注册表分支的更改。
系统: Windows
权限:系统管理员
描述:攻击者可以修改体系结构的组件,以对Windows代码的数字签名进行签名和验证,从而绕过仅允许运行经过签名的代码的程序启动控制方法。 为了在Windows中创建,签名和验证各种格式的文件的签名,使用了所谓的
主题接口程序包(SIP) -每种文件类型唯一的软件规范,这些规范允许API函数之间进行交互,从而启动签名的创建,计算和验证并直接文件。 签名的有效性由所谓的“
信任提供者”确认-这些是OS的软件组件,它们执行与数字签名的计算和验证有关的各种过程。
流行的攻击方法:
- 在CryptSIPDllGetSignedDataMsg部分中的DLL和FuncName密钥的修改 :
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ OID \ EncodingType 0 \ CryptSIPDllGetSignedDataMsg \ [SIP_GUID] 。
它旨在替代提供CryptSIPDllGetSignedDataMSG函数的DLL库,该函数从已签名的文件返回编码的数字证书。 使用修改的SIP时,伪函数始终可以返回以前已知的有效签名值(例如,可执行系统文件的Microsoft签名)。 攻击者可能尝试对所有文件应用一个有效签名,但是最有可能的是,这将导致签名无效,因为该函数返回的哈希值与从文件计算得出的哈希值不匹配。 - 在以下部分中对DLL和FuncName键的修改:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ OID \ EncodingType 0 \ CryptSIPDllVerifyIndirectData / [SIP_GUID] 。
执行该操作是为了替换提供CryptSIPDllVerifyIndirectData函数的DLL库,该函数使用数字签名中指定的哈希来验证从文件计算出的哈希,并返回验证结果(真/假)。 因此,攻击者可以使用修改后的SIP确保成功验证任何文件。 上面的键值可以从现有的库中重定向到合适的函数,从而无需在磁盘上创建新的DLL文件。 - 在以下部分中对DLL和FuncName键的修改:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ Providers \ Trust \ FinalPolicy / [信任提供程序GUID] 。
这样做的目的是替换为特定信任提供程序提供FinalPolicy功能的DLL库,该库将解码,分析签名并做出有关信任的决定。 与CryptSIPDllVerifyIndirectData相似,上述键的值可以重定向到现有DLL。
重要的是要注意,对Windows信任机制的描述攻击可以使用DLL搜索顺序劫持技术来实施。保护建议:确保受保护系统的用户不能修改与SIP和信任提供程序组件相关的注册表项。 考虑删除不必要和过时的SIP。 使用各种方式阻止恶意DLL的下载,例如Windows AppLocker和DeviceGuard中内置的那些DLL。
系统: Windows
权限:用户,管理员,系统
说明:诸如at,schtasks和Windows Task Scheduler之类的实用程序可用于计划程序和脚本以在特定的日期和时间运行。 如果使用RPC进行身份验证并启用打印机和文件共享,则可以在远程系统上安排任务。 在远程系统上计划任务需要管理员权限。 攻击者可能使用远程代码执行来获得系统特权或以特定帐户启动进程。
保护建议:限制用户权限。 使用工具,例如PowerSploit中的PowerUP模块,可用于发现计划任务的解决方案中的弱点。 禁用代表系统启动任务的功能,禁用安全策略中的选项“
允许服务器操作员安排任务 ”,并启用设置“
用户权限分配:增加调度优先级 ”。
系统: Windows
权限:用户
描述:攻击者可以使用屏幕保护程序设置在用户一段时间不活动后启动恶意软件。
Windows屏幕保护程序应用程序(scrnsave.exe)与基本OS组件中包含的其他屏幕保护程序一起位于
C:\ Windows \ System32中 。 攻击者可以操纵注册表
项HKEY_CURRENT_USER \ Control Panel \ Desktop中的启动画面参数:
- SCRNSAVE.EXE-指定恶意可执行文件的路径;
- ScreenSaveActivr-将值设置为“ 1”以激活屏幕保护程序;
- ScreenSaverISSecure-将该值设置为“ 0”,以便在关闭屏幕保护程序后系统不需要密码即可解锁Windows桌面;
- ScreenSaverTimeout-设置启动屏幕保护程序之前的不活动时间。
保护建议:阻止从非标准位置运行* .scr文件的功能。 使用组策略管理您的屏幕保护程序设置,该策略禁止对屏幕保护程序设置进行本地更改。
系统: Windows
权限:管理员
描述:攻击者可以通过在本地安全机构(LSA)配置中添加伪造的安全支持提供程序(SSP),来配置每次引导系统或调用AddSecurityPackage API函数时要执行的恶意代码。 SSP-包含一个或多个身份验证和加密方案的程序模块(DLL),这些模块在系统启动时加载到LSASS进程中。 SPP DLL可以访问Windows中存储的加密和纯文本密码。 SPP配置存储在两个注册表项中:
- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \安全软件包 ;
- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ OSConfig \安全包 。
保护建议:在Windows 8.1,Windows Server R2和更高版本的操作系统中,必须激活LSA(Process Protect Light-PPL)保护模式,在该模式下,所有SPP DLL文件必须由Microsoft数字签名:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ RunAsPPL = dword:00000001系统: Windows
权限:系统管理员
描述:如果用户和组的权限允许更改Windows注册表中存储服务设置的键的值,则攻击者可以直接修改存储用于执行服务的可执行文件路径的键,或使用各种服务管理工具-sc.exe,PowerShell或Reg。 攻击者还可以更改与服务故障相关的参数,例如FailureCommand,该参数指示在服务故障或故意损坏的情况下将执行的命令。 服务参数存储在
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services中 。
保护建议:确保受保护系统的用户不能在注册表中更改存储系统组件参数的注册表项。使用所有可能的方法来阻止潜在危险的软件,例如Windows AppLocker。系统: Windows权限:用户,管理员说明:攻击者可以伪装成合法程序的方式创建新的快捷方式和符号链接,或者修改现有快捷方式中的路径,以便其工具代替原始应用程序运行。安全建议:限制用户和组(例如管理员)使用GPO创建符号链接的权限:“计算机配置”>“ [策略]> Windows设置”>“安全设置”>“本地策略”>“用户权限分配:创建符号链接”。使用工具阻止潜在危险的软件和软件限制策略。系统: macOS权限:管理员描述:攻击者可以使用已过时但仍在运行macOS Sierra的机制来使用StartupItems自动启动应用程序,以在启动时使用root特权配置其代码启动。StartupItems是/ Library / Startupitems中的目录,命令脚本和StartupParameters.plist属性文件。脚本和属性文件必须位于层次结构的顶部:/ Library / Startupitems / [MyStartupItem]。保护建议:由于StartupItems机制已经过时,禁止写入/ Library / Startupitems /目录将使您避免创建启动项。系统: Windows权限:管理员,系统说明:尤其是老练的攻击者可以修改或刷新BIOS,UIFI或UFI,以提供安装恶意固件更新并将其修复在系统中的能力。保护建议:指导保护媒介,以防止攻击者访问实现上述技术所需的特权帐户。考虑受保护系统中可信平台模块(TPM)的需求和适用性。考虑需要使用外部工具来监视和分析系统固件的安全性,例如CHIPSEC Framework。系统: Windows权限:管理员,系统说明:攻击者可以将恶意DLL注册为时间提供者(Time Provider),该DLL将在系统启动或更改Windows时间服务器(W32Time)的配置时执行。时间提供者的参数存储在注册表中:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ W32Time \ TimeProviders。要注册时间提供者,您将需要管理员权限,但是它将在本地服务帐户的上下文中执行。保护建议:考虑使用GPO配置对W32Time设置的阻止更改。使用各种方式阻止恶意DLL的下载,例如Windows AppLocker和DeviceGuard中内置的那些。系统: Linux,macOS权限:用户,管理员说明: trap命令用于保护脚本免受干扰(ctrl + c,ctrl + d,ctrl + z等)。如果脚本接收到trap命令的参数中指定的中断信号,则脚本将自行处理该中断信号,而Shell将不会处理该信号。攻击者可以使用陷阱来注册将在Shell收到某些中断信号时执行的代码。保护建议:由于攻击者使用操作系统的标准机制,因此很难防止使用此技术。该保护媒介应旨在防止在攻击的早期阶段(例如,在系统中传递或创建恶意文件的阶段)执行恶意操作。描述:攻击者可以使用凭据访问技术来窃取特定用户或服务帐户的凭据,并使用社会工程学在情报过程中捕获凭据。受损的凭证可用于绕过访问控制系统并获得对远程系统和外部服务(例如VPN,OWA,远程桌面)的访问,或在特定系统和网络区域上获得提升的特权。如果方案成功,攻击者可以拒绝恶意软件以使其难以检测。此外,在尝试使用其他方式失败的情况下,攻击者可以使用预定义的名称和密码创建帐户以维护备份访问权限。保护建议:应用密码策略,遵循有关设计和管理公司网络的建议,以限制在所有管理级别上使用特权帐户。定期检查域和本地帐户及其权限,以识别可能使攻击者获得广泛访问权限的帐户。使用SIEM系统监视帐户活动。系统: Windows,Linux,macOS描述:攻击者可以将Web Shell用作访问网络或对受攻击系统进行冗余访问的网关,作为一种备份机制,以确保在检测到并阻止对受攻击环境的主要访问通道时进行保护。保护建议:确保您的外部Web服务器得到定期更新,并且没有已知的漏洞允许攻击者将文件或脚本上传到服务器并随后执行。验证具有服务器管理权限的帐户和组的权限与可用于登录到Web服务器,启动Web Shell或固定到Web服务器的内部网络帐户不匹配。Web Shell很难检测,因为 它们不会启动连接,并且它们的服务器端可能很小且无害,例如,China Chopper Web Shell的PHP版本看起来像这样:[?php eval($ _POST ['password']);]系统: Windows权限:管理员,系统说明: WMI事件订阅是一项功能,允许管理员配置事件通知的接收,包括在远程系统上发生的事件通知,然后自动执行任何操作(运行脚本,应用程序)等)。为了在系统中立足,攻击者可以通过为事件(例如系统时钟或计算机的运行时间)设置订阅,然后在发生此事件时执行代码,来滥用上述功能。保护建议:确保只有管理员帐户才有权远程连接到WMI,并且在受保护的系统中,系统管理员帐户与其他特权帐户不能重合。禁用WMI可能会导致系统不稳定,因此需要对可能的负面影响进行初步评估。系统: Windows权限:管理员,系统描述:通过在注册表中修改Winlogon.exe使用的辅助DLL的参数,攻击者可以确保重复执行恶意DLL来修复系统。Winlogon参数存储在以下部分中:- • HKEY_CURRENT_USER \软件\微软\ Windows NT \ CurrentVersion \ Winlogon
- • HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon
几个易受攻击的小节是已知的:- Winlogon \ Notify-指定处理Windows事件的DLL
- Winlogon \ Userinit-指向userinit.exe文件,该文件是用户登录系统时执行的用户初始化程序;
- Winlogon \ Shell-指向explorer.exe文件,该文件是用户登录系统时执行的系统shell。
保护建议:确保只有授权的管理员才能更改Winlogon设置。使用各种方式阻止恶意DLL和潜在危险程序的下载,例如Windows AppLocker和DeviceGuard中内置的那些程序。