UAC
简介
UAC (User Account Control) 是 Windows Vista 和 Windows Server 2008 引入的一个安全机制,当一些敏
感操作发生时,会跳出提示显式要求系统权限。
当用户登陆 Windows 时,每个用户都会被授予一个 access token,这个 token 中有 security identifer (SID)
的信息,决定了用户的权限。
会触发 UAC 的操作
• 以管理员权限启动应用
• 修改系统、UAC 设置
• 修改没有权限的文件或者目录(%SystemRoot% / %ProgramFiles% 等)
• 修改 ACL (access control list)
• 安装驱动
• 增删账户,修改账户类型,激活来宾账户
ByPass
• DLL 相关
• 进程注入
• 注册表
权限提升
权限提升有多重方式,有利用二进制漏洞、逻辑漏洞等技巧。利用二进制漏洞获取权限的方式是利用运行在
内核态中的漏洞来执行代码。比如内核、驱动中的 UAF 或者其他类似的漏洞,以获得较高的权限。
逻辑漏洞主要是利用系统的一些逻辑存在问题的机制,比如有些文件夹用户可以写入,但是会以管理员权限
启动。
任意写文件利用
在 Windows 中用户可以写的敏感位置主要有以下这些
• 用户自身的文件和目录,包括 AppData Temp
• C:\ ,默认情况下用户可以写入
• C:\ProgramData 的子目录,默认情况下用户可以创建文件夹、写入文件
• C:\Windows\Temp 的子目录,默认情况下用户可以创建文件夹、写入文件
具体的 ACL 信息可用 AccessChk, 或者 PowerShell 的 Get-Acl 命令查看。
可以利用对这些文件夹及其子目录的写权限,写入一些可能会被加载的 dll,利用 dll 的加载执行来获取权
限。
MOF
MOF 是 Windows 系统的一个文件(c:/windows/system32/wbem/mof/nullevt.mof )叫做” 托管对象格
式”,其作用是每隔五秒就会去监控进程创建和死亡。
当拥有文件上传的权限但是没有 Shell 时,可以上传定制的 mof 文件至相应的位置,一定时间后这个 mof 就
会被执行。
一般会采用在 mof 中加入一段添加管理员用户的命令的 vbs 脚本,当执行后就拥有了新的管理员账户。
凭证窃取
• Windows 本地密码散列导出工具
– mimikatz
– lsass
– wce
– gsecdump
– copypwd
– Pwdump
– ProcDump
* https://docs.microsoft.com/en-us/sysinternals/downloads/procdump
• Windows 本地密码爆破工具
– L0phtCrack
– SAMInside
– Ophcrack
• 彩虹表爆破
• 本机 hash+ 明文抓取
• win8+win2012 明文抓取
• ntds.dit 的导出 +QuarkPwDump 读取分析
• vssown.vbs + libesedb + NtdsXtract
• ntdsdump
• 利用 powershell(DSInternals) 分析 hash
• 使用 net use \\%computername% /u:%username% 重置密码尝试次数
• 限制读取时,可 crash 操作系统后,在蓝屏的 dump 文件中读取
其他
• 组策略首选项漏洞
• DLL 劫持
• 替换系统工具,实现后门
• 关闭 defender
– Set-MpPreference -disablerealtimeMonitoring $true