0x01 基础信息
具体信息 | 详情 |
---|---|
ATT&CK编号 | T1548-002 |
所属战术阶段 | 权限提升 |
操作系统 | windows10 |
创建时间 | 2022年11月14日 |
监测平台 | 火绒安全、sysmon |
编写人员 | 暗魂攻防实验室网空对抗中心-G4br1el |
0x02 技术原理
对手可能会绕过 UAC 机制来提升系统上的进程特权。Windows 用户帐户控制 (UAC) 允许程序提升其权限(跟踪为从低到高的完整性级别)以在管理员级别权限下执行任务,可能是通过提示用户进行确认。对用户的影响范围从在高度执行下拒绝操作到允许用户执行操作(如果他们在本地管理员组中并单击提示或允许他们输入管理员密码以完成操作)。
如果计算机的 UAC 保护级别未设置为最高级别,则某些 Windows 程序可以提升权限或执行某些提升的对象,而无需通过 UAC 通知框提示用户。这方面的一个例子是使用Rundll32加载一个特制的 DLL,它加载一个自动提升的对象并在通常需要提升访问权限的受保护目录中执行文件操作。恶意软件也可能被注入到受信任的进程中,以在不提示用户的情况下获得更高的权限。
已经发现了许多绕过 UAC 的方法。UACME 的 Github 自述页面包含大量已发现和实施的方法,经常发现其他绕过方法,其中一些在野外使用,例如:
-
eventvwr.exe
可以自动提升和执行指定的二进制文件或脚本。
如果知道具有管理员权限的帐户的凭据,则可以通过一些横向移动技术进行另一种绕过,因为 UAC 是一种单一系统安全机制,并且在一个系统上运行的进程的权限或完整性在远程系统上将是未知的,并且默认为高完整性
0x03 复现环境
工具列表 | 相关链接 |
---|---|
sysmon日志记录工具 | https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon |
sysmon默认规则文件 | https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml |
sysmon安装命令 | sysmon64.exe -accepteula -i sysmonconfig-export.xml |
攻击条件 | 通过某种攻击手段拿到admin管理员权限,此时需提升至system权限执行系统指令。 |
UAC设置 | 保持默认用户控制配置(仅在程序试图更改我的计算机时通知我) |
0x04 复现过程
本次实验使用phpstudy搭建web站点,通过web站点漏洞上传冰蝎webshell,连接冰蝎后反弹至msf,使用msf bypassuac模块后获取system权限。
首先通过弱口令方式admin|123456登录后台
通过后台添加资料,存在文件上传点,可尝试直接上传冰蝎马
发现上传成功
查看文件列表可知已上传到http://192.168.44.130/Public/Uploads/1ndex.php,直接冰蝎连接,连接成功
通过实验发现,使用冰蝎的反弹shell功能根据默认的提示反弹命令使用失败, 一直显示 Meterpreter session 8 is not valid and will be closed,只能自己生成一个免杀的exe马去反弹。
使用冰蝎上传exe马,执行命令后反弹shell至msf成功
通过getuid获取当前用户的信息,然后使用getsystem命令可以直接bypassuac(这里有疑问)
第二种方法:使用msf中use exploit/windows/local/bypassuac_dotnet_profiler模块(这里是失败的,我会在后面进行一个说明)
第三种方法:
例如我们在目标主机使用cmd写入内容至system32目录下,是拒绝访问的。
我们可以使用无文件方法绕过用户帐户控制,仅限注册表。成功执行后,sdclt.exe 将生成 cmd.exe 以生成 notepad.exe,后面进行写入到system32目录下
New-Item -Force -Path "HKCU:SoftwareClassesFoldershellopencommand" -Value 'cmd.exe /c notepad.exe'
New-ItemProperty -Force -Path "HKCU:SoftwareClassesFoldershellopencommand" -Name "DelegateExecute"
Start-Process -FilePath $env:windirsystem32sdclt.exe
最后面清理:
Remove-Item -Path "HKCU:SoftwareClassesFolder" -Recurse -Force -ErrorAction Ignore
然后弹出这个框,输入内容并保存就行了
其余bypassuac请移步链接:https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1548.002/T1548.002.md
0x05 日志特征或攻击特征
-
使用第一种getsystem方法:火绒会弹出告警(这个规则全开的情况下会弹出此框,但是火绒默认的设置是没有开启此选项的),但是默认是允许的,如果管理员不在的话还是有危险的。
通过火绒和sysmon日志特征分析,getsystem命令主要是使用了
cmd.exe /c echo yzprgg > \.pipeyzprgg
百度上给出的主要原理是: Meterpreter将创建一个命名管道,并且还创建并运行一个服务,该服务运行生成的cmd.exe连接到Meterpreter的命名管道时,Meterpreter将有机会模拟该服务安全 上下文(模仿客户端是一个命名管道功能),服务的上下文是SYSTEM权限,所以将获得SYSTEM权限。所以我们可以将此特征作为获取system权限的攻击特征。这种方法有绕过了uac的控制?(这个有疑问)
运行exp.exe时候sysmon的日志为:
-
使用第二种bypassuac模块方法:
因为实验环境win10用第一种方法出奇的顺利,因为之前在做另外一个实验(win 7)的时候会用到system权限,用第一种方法getsystem是失败的,当时是使用了这个模块进行了bypassuac。本次实验重点是bypassuac,所以这里顺便讲下上次实验的特征。
使用msf反弹shell后,是admin权限,使用getsystem时是失败的,原因就是触发了UAC机制。
然后我们使用该模块进行绕过,再次getsystem成功
虽然生成的dll文件会被火绒阻断,但是可以比火绒抢先一步建立shell会话成功绕过UAC。如果没有杀毒软件的话可能就可以成功绕过。
之后getsystem时会被火绒弹窗提醒用户是否允许执行服务配置项,用户不懂得情况下会点允许,点击之后就能成功提权至system权限。但是这个动静比较大,管理员在的话就会发现异常。
-
第三种方法是按照国外的大佬的方法,但是我并不理解他的原理,其实在最后一步Start-Process "C:WindowsSystem32eventvwr.msc“,如果把UAC控制开到最大时候还是会弹框点击允许才行,那这样还怎么绕过?另外一种方法使用win10系统的Fodhelper程序进行绕过,但是他的reg注册表方法,根本就没有这个程序且不存在他所说的hkcusoftwareclassesms-settings这个注册表。
0x06 处置方法与规则编写
-
处置方法:
检查 Windows 系统上常见的 UAC 绕过弱点,以了解风险状况并在适当的时候解决问题。
从系统上的本地管理员组中删除用户。
考虑将 Windows 更新到最新版本和补丁级别,以利用最新的保护措施防止 UAC 绕过。
尽管存在 UAC 绕过技术,但尽可能使用 UAC 的最高执行级别并减少DLL 搜索顺序劫持等技术存在的绕过机会仍然是谨慎的做法。
-
规则编写时,按照官方给的检测方法,可以把sdclt.exe,eventvwr.exe 程序列为检测对象,并且国外的大佬提供的这几种方法基本上用到powershell.exe以及reg.exe,可以一并监测。这里就不写规则了,实验做的比较失败。
0x07 总结
因为实验环境的问题,本次实验出了很多差错,实验是失败的。比如第一个方法可以直接getsystem,并且火绒和uac没有异常的反应,其实在冰蝎的shell命令功能,就已经能输出文件到system32目录下,不清楚是不是phpstudy在开启网站服务(打开phpstudy程序时是需要uac点击允许的)的时候是不是给了php函数执行的system权限?还有就是绕过的方法,一些注册表在win10当中是不存在的,因此也就失败。
本次实验遇到了很多奇怪的问题,因此做实验时要考虑到实际环境的影响,把官方提出的战术方法结合实际情况做落地实验,这样的实验才是有意义的,并且要能真正运用到实际攻防当中。
原文始发于微信公众号(暗魂攻防实验室):ATT&CK实验-T1548-002滥用权限控制机制-绕过用户帐户控制
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论