链接到所有部分:第1部分。获得初始访问权限(Initial Access)第2部分。执行第3部分。紧固(持久性)第4部分。特权提升第5部分。逃避防御第6部分。获取凭据(凭据访问)第7部分。发现第8部分。横向运动特权升级是允许攻击者或恶意程序在被攻击系统或网络中获得更高级别权限的操作的结果。 特权升级技术描述了一种方法,使对手获得对被攻击系统的特权后,使用系统的各种“弱点”可以获取本地管理员,系统或root权限。 攻击者使用具有对特定系统的访问权限或执行某些操作的权限的用户帐户也可以视为特权的升级。
对于使用本文中阐述的信息可能造成的后果,作者概不负责,对于某些表述和术语可能存在的不准确性,我们深表歉意。 发布的信息是对MITER ATT&CK内容的免费转载。取消
ATT @ CK矩阵中描述的某些技术必须同时包含在攻击链的多个阶段中,这一点很重要,例如,DLL搜索拦截可用于通过未经授权执行恶意DLL来保护访问并通过在过程中启动DLL来增加特权,在特权用户的上下文中工作。
系统: Windows
权限:用户,管理员
描述:攻击者可以使用访问令牌在各种用户或系统安全上下文中执行操作,从而避免检测到恶意活动。 对手可以使用Windows API函数从现有进程复制访问令牌(窃取令牌),为此,他必须处于特权用户(例如,管理员)的上下文中。 访问令牌的失窃通常用于将特权从管理员级别提升到系统级别。 如果该帐户在远程系统上具有必要的权限,则它也可以使用帐户访问令牌在远程系统上进行身份验证。
考虑几种滥用访问令牌的方法:
- 代币的盗窃和假冒。 模拟令牌是操作系统在安全上下文中启动线程的能力,而不是该线程所属进程的上下文。 换句话说,令牌的拟人化使您可以代表另一个用户执行任何操作。 对手可以使用DuplicateTokenEX函数复制访问令牌,并使用ImpersonateLoggedOnUser在已登录用户的上下文中调用线程,或者使用SetThreadToken将访问令牌分配给流。
- 使用访问令牌创建进程。 攻击者可以使用DuplicateTokenEX函数创建访问令牌,然后将其与CreateProcessWithTokenW一起使用,以创建一个在模拟用户的上下文中运行的新进程。
- 获取和模拟访问令牌。 具有用户名和密码的对手可以使用LogonUser API函数创建登录会话,该函数将返回新会话的会话访问令牌的副本,然后使用SetThreadToken函数将令牌分配给线程。 Metasploit Meterpreter和CobaltStrike具有可操纵访问令牌以提升特权的工具。
保护建议:为了充分利用上述策略,攻击者必须具有系统管理员权限,因此请不要忘记限制普通用户的特权。 任何拥有合法凭据的用户都可以欺骗访问令牌。 限制用户和组创建访问令牌的能力:
GPO:计算机配置> [策略]> Windows设置>安全设置>本地策略>用户权限分配:创建令牌对象还要确定谁可以替换本地或网络服务的过程令牌:
GPO:计算机配置> [策略]> Windows设置>安全设置>本地策略>用户权限分配:替换进程级别令牌系统: 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
权限:用户,管理员
描述:有许多方法可以绕过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设置中启用最高级别的保护。
系统: 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,Linux,macOS
权限:用户
描述:对手可以使用软件中的漏洞来增加被攻击系统的特权。
保护建议:在所有受保护的工作站,服务器,网络设备和连接到受保护网络的其他设备上进行定期软件更新。 分析威胁,漏洞的类型,并利用可用于受保护组织的程序。 还建议使用诸如Windows 10的
Windows Defender Exploit Guard(WDEG)或Windows早期版本的
增强型缓解体验工具包(EMET)之类的漏洞利用系统。
h3
EWM注入(额外的窗口内存注入)系统: Windows
权限:系统管理员
说明:该技术是滥用额外的Windows窗口内存,即所谓的额外窗口内存(EWM)。 EWM大小为40字节,适合存储32位指针,通常用于指示对过程的引用。 攻击链中的恶意程序可以在EWM中放置一个指向恶意代码的指针,该代码随后将由受感染的应用程序进程启动。
保护建议:鉴于EWM注入技术是基于滥用OS开发功能的,因此保护工作应针对防止启动恶意程序和恶意工具。 优良作法是使用AppLocker,白名单应用程序或应用软件限制策略来识别和阻止潜在危险的软件。
系统: Windows
权限:用户,管理员
Description(说明):该技术的本质是替换由各种进程自动启动的可执行文件(例如,在OS启动时或在某个时间,如果对可执行文件的权限配置不正确)。 欺骗之后,恶意文件将以进程权限启动,因此,如果进程具有更高的访问级别,则攻击者将能够提升特权。 使用这种技术,攻击者可以尝试操纵Windows服务二进制文件。
攻击的另一个变体与自解压安装程序工作中算法的缺陷有关。 在安装过程中,安装程序通常将各种有用的文件(包括.dll和.exe)解压缩到%TEMP%目录中,但是,他们可能未设置适当的权限来限制对解压缩文件的访问,这使攻击者可以执行文件欺骗,并且因此,增加特权或绕过帐户控制,例如 一些安装程序以扩展特权运行。
保护建议:限制帐户特权,以便只有管理员可以管理服务并与服务使用的二进制文件进行交互。 禁用标准用户的UAC特权升级选项。 UAC设置存储在以下注册表项中:
- [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System] 。
要自动拒绝特权升级请求,必须添加一个密钥:
- “ ConsentPromptBehaviorUser” = dword:00000000。
要控制安装程序的工作,您需要添加一个密钥:
- “ EnableInstallerDetection” = dword:00000001 ,这将需要密码才能安装程序。
系统: Windows
权限:系统管理员
说明: Windows API函数通常存储在DLL中。 挂钩技术是通过以下方式将调用重定向到API函数:
- 挂钩过程-内置于OS中的过程,可在调用各种事件(例如,击键或移动鼠标)时执行代码;
- 对地址表(IAT)的修改,该表存储指向API函数的指针。 这将允许您“欺骗”受攻击的应用程序,迫使其启动恶意功能;
- 直接更改功能(拼接),在此期间更改功能的前5个字节,而不是插入到由攻击者确定的向恶意功能或其他功能的转换。
像注入一样,攻击者可以使用钩子执行恶意代码,屏蔽其执行,访问受攻击进程的内存并增加特权。 攻击者可以捕获API调用,这些API调用包含包含身份验证数据的参数。 Rootkit通常使用挂钩来隐藏系统中的恶意活动。
保护建议:拦截操作系统中的事件是系统正常运行的一部分,因此,此功能的任何限制都可能对合法应用程序(例如防病毒软件)的稳定性产生不利影响。防止使用拦截技术的工作需要集中在攻击链的早期阶段。您可以通过监视对SetWindowsHookEx和SetWinEventHook函数的调用,使用rootkit检测器并分析进程的异常行为来检测恶意挂钩活动。系统: Windows权限:管理员,系统说明:映像文件执行选项(IFEO)机制使您可以运行程序调试器,而不是开发人员先前在注册表中指定的程序:- HKLM \软件\微软\ Windows NT \ CurrentVersion \图像文件执行选项/ [可执行文件]
- HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \图像文件执行选项\ [executable],其中[executable]是调试器可执行二进制文件。
像注入一样,[executable]值可以通过运行任意代码来增加特权或在系统中立足,从而被滥用。恶意程序可以使用IFEO,通过注册重定向并拒绝各种系统和安全应用程序的调试器来绕过保护。保护建议:所描述的技术基于对常规OS开发工具的滥用,因此任何限制都可能导致合法软件(例如安全应用程序)的不稳定。防止使用IFEO注入技术的工作应集中在攻击链的早期阶段。您可以通过使用Debug_process和Debug_only_this_process。系统: macOS权限:管理员描述:该技术在于更改攻击者在plist文件中指定的系统启动级别服务的参数-启动守护程序。系统引导时,启动的进程将从位于以下目录中的plist文件加载服务(守护程序)的参数:- /系统/库/ LaunchDeamons;
- /库/ LaunchDeamons。
可以使用管理员权限创建启动守护程序,但可以在root帐户下运行,因此攻击者可以升级权限。plist文件的权限必须是root用户:但是,其中指定的脚本或程序的权限可能不太严格。因此,攻击者可以修改plist中指定的可执行文件,从而修改当前的系统服务以保护系统或升级特权。安全提示:限制用户特权,以便只有授权的管理员才能创建启动守护程序。考虑监视如何使用诸如KnockKnock之类的应用程序在系统上创建plist文件。系统: Windows权限:管理员,系统说明:对该系统的名称访问,攻击者可以创建新服务并将其配置为自动启动。可以使用特定于操作系统的名称来屏蔽服务名称。可以使用管理员权限创建服务,但可以代表系统运行。可以使用与Windows API互操作的远程访问工具,或者使用标准Windows和PowerShell管理工具,从命令行创建服务。安全建议:限制用户创建新服务的权限,以便只有授权的管理员才能执行此操作。应用AppLocker和软件限制策略 。系统: 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 .
- (Search order hijacking). , Windows, , , . , «example.exe» cmd.exe net use. example.exe net.exe c:\Windows\System32\net.exe . , net.com net.exe, Windows net.com , PATHEXT.
文件搜索顺序拦截还用于使用Search Hijacking DLL技术执行DLL 。安全建议:引号表示在配置文件,脚本,PATH变量,服务设置和快捷方式中指定的路径。记住可执行文件的搜索顺序,并且仅使用完整路径。清理掉远程软件中遗留下来的旧注册表项,以使注册表中没有指向不存在的文件的注册表项。禁止系统用户写入根目录C:\和Windows系统目录,将写入权限限制为具有可执行文件的目录。系统: macOS权限:用户,管理员说明:攻击者可以修改plist文件,在其中指示他们自己的代码,以便在另一个用户的上下文中执行该文件。位于/ Library / Preferences中的plist属性文件以提升的特权运行,而〜/ Library / Preferences中的plist文件以用户特权运行。安全提示:通过将plist文件设置为只读来防止其被修改。系统: 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或直接通过编辑上述注册表项来安装端口监视器。保护建议:组织对潜在危险软件的阻止并使用应用程序启动控制工具。系统: 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权限:管理员,系统说明:每当将对象从一个域移动到另一个域时,都会创建一个新的SID,它将成为主要的objectSID。以前的SID继续存储在sIDHistory属性中,从而确保保留对象在跨域迁移之前所拥有的权利。具有管理员权限的攻击者可以将以前收集的SID插入SID历史记录中,以代表更多特权的访问组或帐户(例如域管理员)执行操作。保护建议:在Windows Server OS 2003和更高版本上,默认情况下启用SID筛选,这涉及删除或筛选除受信任域之外的所有SID,但是可以故意禁用此选项以允许跨域访问。筛选SID的主要方法:•使用以下命令在域林之间的信任设置(信任)中禁用SIDHistory:netdom trust / domain:/ EnableSIDHistory:no;• SID过滤器隔离的应用。这样可以确保包含受信任域之外的SID的对象无法通过信任域进行身份验证。通过执行以下命令,将SID筛选器隔离应用于外部信任:netdom信任/域:/隔离:是。不建议在同一林中的域之间使用SID筛选。如果目录林中的域不可靠,则它不应成为目录林的成员,在这种情况下,必须首先将受信任和不可靠的域划分为单独的目录林,然后对目录林之间的信任度应用SID筛选。系统: Windows权限:用户,管理员,系统说明:诸如at,schtasks和Windows Task Scheduler之类的实用程序可用于计划程序和脚本以在特定的日期和时间运行。如果使用RPC进行身份验证并启用打印机和文件共享,则可以在远程系统上安排任务。在远程系统上计划任务需要管理员权限。攻击者可能使用远程代码执行来获取系统特权或使用特定帐户启动进程。保护建议:限制用户权限。使用工具,例如PowerSploit中的PowerUP模块,可用于发现计划任务的解决方案中的弱点。禁用代表系统启动任务的功能,禁用安全策略中的选项“ 允许服务器操作员安排任务 ”,并启用设置“ 用户权限分配:增加调度优先级 ”。系统: Windows权限:管理员,系统描述:如果用户和组的权限允许更改Windows注册表中存储服务参数的密钥的值,则攻击者可以直接修改其中存储了用于启动服务的可执行文件的路径的密钥,或使用各种管理工具服务-sc.exe,PowerShell或Reg。攻击者还可以更改与服务失败相关的参数,例如FailureCommand,该参数指示在服务失败或故意损坏的情况下将执行的命令。服务参数存储在HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services中。保护建议:确保受保护系统的用户不能在注册表中更改存储系统组件参数的注册表项。使用所有可能的方法来阻止潜在危险的软件,例如Windows AppLocker。系统: Linux,macOS权限:用户说明:Setuid和Setgid是Unix系统上的权限标志,允许用户使用可执行文件的所有者或组的权限运行可执行文件。如果应用程序必须以root用户身份运行,则用户可以指定Setuid或Setgid标志,而不是在sudo文件中创建条目。对手可以滥用Setuid和Setgid标志来执行外壳转义(当控制台应用程序使用在另一个应用程序中打开的文件时),或者利用具有Setuid和Setgid标志的应用程序漏洞来在各种用户的上下文中执行代码。当使用ls -l命令查看文件属性时,以上标志由符号“ s”而不是“ x”表示。 chmod实用程序可以使用chmod 4777命令[file]来设置Setuid和Setgid标志。或chmod u + s [file]。保护建议:将Setuid和Setgid标志设置为最小的程序数量保持最小。系统: macOS权限:管理员描述:攻击者可以使用已过时但仍在运行macOS Sierra的机制来使用StartupItems自动启动应用程序,以在启动时使用root特权配置其代码启动。StartupItems是/ Library / Startupitems中的目录,命令脚本和StartupParameters.plist属性文件。脚本和属性文件必须位于层次结构的顶部:/ Library / Startupitems / [MyStartupItem]。保护建议:由于StartupItems机制已经过时,禁止写入/ Library / Startupitems /目录将使您避免创建启动项。系统: Linux,macOS权限:用户说明:对手可能会利用Sudo配置漏洞来代表其他用户执行命令或以更高的特权生成进程。 Sudo选项存储在/ etc / sudoers文件中,需要较高的特权才能编辑此文件。 sudoers文件描述了用户可以代表其他用户或组运行的命令,这使用户可以在大多数时间以最小的特权工作,并且仅在必要时增加特权。但是,您可以在sudoers文件中指定将不要求输入密码的用户:username ALL =(ALL)NOPASSWD:ALL。安全提示:应该编辑sudoers文件,以便用户在执行sudo时始终输入密码。只要实际和有效的用户ID不匹配(在用户使用sudo时就会发生这种情况),在Linux上经过审核的审计都会生成警告。系统: Linux,macOS
权限:用户
描述:各种恶意软件,例如
OCX Proton Malware ,可以滥用sudo设置以root用户身份执行代码,而无需输入密码。 由于sudo工具箱是为系统管理而创建的,因此它具有一些有用的功能,例如
timestamp_timeout-此参数存储sudo启动之间的时间(以分钟为单位),在此期间命令将不会提示输入root密码。 Sudo能够缓存凭据已有一段时间了。 Sudo的最后一次启动的时间戳存储在
/ var / db / sudo中 ,用于确定指定的超时。 此外,还有一个
tty_tickets变量可独立处理每个新的终端会话,因此控制台一个实例中的超时不会影响另一实例中的超时。
保护建议:设置
timestamp_timeout = 0参数,以便每次运行sudo时系统都需要root密码。 启用
tty_tickets参数以防止通过命令行会话实施攻击。
描述:攻击者可以使用凭据访问技术来窃取特定用户或服务帐户的凭据,并使用社会工程学在情报过程中捕获凭据。 受损的凭证可用于绕过访问控制系统并获得对远程系统和外部服务(例如VPN,OWA,远程桌面)的访问,或在特定系统和网络区域上获得提升的特权。 如果方案成功,攻击者可以拒绝恶意软件以使其难以检测。 此外,在尝试使用其他方式失败的情况下,攻击者可以使用预定义的名称和密码创建帐户以维护备份访问权限。
保护建议:应用密码策略,遵循有关设计和管理公司网络的建议,以限制在所有管理级别上使用特权帐户。 定期检查域和本地帐户及其权限,以识别可能使攻击者获得广泛访问权限的帐户。 使用SIEM系统监视帐户活动。
系统: Windows,Linux,macOS
描述:攻击者可以将Web Shell用作访问您的网络或对受攻击系统进行冗余访问的网关,作为一种备用机制,以确保在检测到并阻止对受攻击环境的主要访问通道时进行保护。
保护建议:确保定期更新外部Web服务器,并且没有已知的漏洞允许攻击者将文件或脚本上传到服务器并随后执行。 验证具有服务器管理权限的帐户和组的权限与可用于登录到Web服务器,启动Web Shell或固定到Web服务器的内部网络帐户不匹配。 Web Shell很难检测,因为 它们不会启动连接,并且它们的服务器端可能很小且无害,例如,China Chopper Web shell的PHP版本看起来像一行:
[?php eval ($ _POST ['password']);]