内网渗透测试基础——权限提升分析及防御

内网渗透测试基础——权限提升分析及防御

​ 在Windows中,权限大概分为四种,分别是User、Administrator、System、TrustedInstaller。在这四种权限中,我们经常接触的是前三种。第四种权限TrustedInstaller,在常规使用中通常不会涉及。

  • User:普通用户权限,是系统中最安全的权限(因为分配给该组的默认权限不允许成员修改操作系统的设置或用户资料)。
  • Administratror:管理员权限。可以利用Windows的机制将自己提升为System权限,以便操作SAM文件等。
  • System:系统权限。可以对SAM等敏感文件进行读取,往往需要将Administrator权限提升到System权限才可以对散列值进行Dump操作。
  • TrustedInstaller:Windows中最高权限。对系统文件,即使拥有System权限也无法进行修改。只有拥有TrustedInstaller权限的用户才可以修改系统文件。

​ 低权限级别将使渗透测试受到很多限制。在Windows中,如果没有管理员权限,就无法进行获取散列值、安装软件、修改防火墙规则、修改注册表等操作。

​ Windows操作系统中管理员账号的权限,以及Linux操作系统中root账户的权限,是操作系统的最高权限。提升权限(也称提权)的方式分为以下两类。

  • **纵向提权:**低权限角色获得最高权限角色的权限。例如,一个WebShell权限通过提权,拥有了管理员权限,这种提权就是纵向提权,也称作权限升级。
  • 横向提权: 获得同级别角色的权限。例如,在系统A中获取了系统B中的权限,这种提权就属于横向提权。

常用的提权方法有系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首选项提权、Web中间件漏洞提权、DLL劫持提权、滥用最高权限令牌提权、第三方软件/服务提权等。

1. 系统内核溢出漏洞提权分析及防范

溢出漏洞就像往杯子里装水——如果水太多,杯子装不下了,就会溢出来。计算机中有个地方叫缓存区。程序缓存区的大小是事先设置好的,如果用户输入数据的大小超过了缓存区的大小,程序就会溢出。

系统内核溢出漏洞提权是一种通用的提权方法,攻击者通常可以使用该方法绕过系统的所有安全限制。攻击者利用该漏洞的关键是目标系统没有及时安装补丁——即使微软已经针对某个漏洞发布不了补丁,但如果系统没有立即安装补丁,就会让攻击者有机可乘。然而,这种提权方法也存在一定的局限性——如果目标系统的补丁更新工作较为迅速和完整,那么攻击者要想通过这种方法提权,就必须找出目标系统中的0day漏洞。

1.1 通过手动执行命令发现缺失补丁

获取目标机器的Shell后,输入“whoami /groups”命令,查看当前权限,如图所示。

缺失补丁

当前的权限是Mandatory Label\Medium Mandatory Level,说明这是一个标准用户。接下来,将权限从普通用户提升到管理员,也就提升到Mandatory Label\Hight Mandatory Level。执行如下命令,通过查询C:\windows\ 里的补丁号(log文件)来了解目标机器上安装了哪些补丁,如图所示。


systeminfo


查看补丁

可以看到,目标机器上只安装了4个补丁。也可以利用如下命令列出已安装的补丁,如图所示。


wmic qfe get Caption,Description,HotFixID,InstalledOn


列出已安装的补丁

和前面得到相同的结果,目标机器上只安装了4个补丁。**这些输出结果是不能被攻击者直接利用的。**攻击者采取的利用方式通常是:寻找提取的EXP,将已安装的补丁编号与提权的EXP编号进行对比,例如KiTrap0D和KB979682、MS11-011和KB2393802、MS11-080和KB2592799,然后使用没有编号的EXP进行提权。

依托可以提升权限的EXP和它们的补丁编号,执行下列命令,对系统补丁包进行过滤。可以看到, 已经安装了KB976902,但没有安装KB43141,如图所示。


wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:“KB3143141” /C:“KB976902”


查找指定的补丁


知识点

“WMIC”是“Windows Management Instrumentation Command-line”的缩写。WMIC是Windows平台上最有用的命令行工具。使用WMIC,不仅可以管理本地计算机,还可以管理同一域内的所有计算机(需要一定的权限),而且在被 管理的计算机上不必事先安装WMIC。WMIC在信息收集和后渗透测试阶段是非常实用的,可以调取和查看目标机器的进程、服务、用户、用户组、网络连接、硬盘信息、网络共享信息、已安装的补丁、启动项、已安装的软件、操作系统的相关信息和时区等。


如果目标机器中存在MS16-032(KB3139914)漏洞,那么攻击者不仅能够利用Metasploit进行提权,还能够利用PowerShell下的Invoke-MS16-032.ps1脚本(进行提权。通过Invoke-MS16-032.ps1脚本可以执行任意程序,且可以带参数执行(全程无弹窗)。下面针对此问题进行测试。

把Invoke-MS16-032.ps1脚本上传到目标机器中(也可以远程下载并运行),然后执行如下命令,添加一个用户名为“1”、密码“1”的用户。


Invoke-MS16-032 -Application cmd.exe -Commandline “/c net user 1 1 /add”


查看当前用户,已经成功添加了用户“1”。此外,通过该脚本,可以添加和执行任意程序。执行如下命令,相当于启动“记事本”程序。


Invoke-MS6-032 -Application notepad.exe


1.2 Windows Exploit Suggester

Gotham Digital Security发布了一个名为“Windows Exploit Suggester"的工具,下载地址【https://github.com/GDSSecurity/Windows-Exploit-Suggester】。该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而其需要的只有目标系统的信息。

使用systeminfo命令获取当前系统的补丁安装情况,并将补丁信息导入patches.txt文件,如图所示。

exploit suggester获取补丁patches

执行如下命令,从微软官方网站自动下载安全公告数据库,下载的文件会自动在当前目录下以Excel电子表格的形式保存 ,如图所示。


#python2 ./windows-exploit-suggester.py --update


下载安全公告数据库

输入如下命令,安装xlrd模块,如图所示。


pip install xlrd -upgrade


xlrd-upgrade

使用Windows-Exploit-Suggester工具进行预处理。执行如下命令,检查系统中是否存在未修复的漏洞。


#python2 ./windows-exploit-suggester.py -d 2019-02-02-mssb.xls -i patches.txt


在实际的网络环境中,如果系统中存在漏洞,就有可能被攻击这利用。目标系统中存在未修复的MS16-075、MS16-135等漏洞,攻击者只要利用这些漏洞,就能获取目标系统的System权限。因此,在发现漏洞后一定要及时进行修复。Metasploit还内置了local_exploit_suggester模块。这个模块用于快速识别系统中可能被利用的漏洞,使用方法如下,如图所示。

metasploit漏洞

1.3 PowerShell中的Sherlock脚本

通过PowerShell中的Sherlock脚本(https://github.com/rasta-mouse/Sherlock),可以快速查找可能用于本地权限提升的漏洞,如图所示。


Import-Module .\Sherlock.ps1


powershell-sherlock脚本

调用脚本后,可以搜索单个漏洞,也可以搜索所有未安装的补丁。在这里,输入如下命令,搜索所有未安装补丁,


Find-AllVulns


find-allvulns
302397585)]

调用脚本后,可以搜索单个漏洞,也可以搜索所有未安装的补丁。在这里,输入如下命令,搜索所有未安装补丁,


Find-AllVulns


[外链图片转存中…(img-DEigmnKG-1703302397586)]

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-23 14:02:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-23 14:02:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-23 14:02:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-23 14:02:03       18 阅读

热门阅读

  1. apply&lambda函数用法

    2023-12-23 14:02:03       40 阅读
  2. 2023年终杂谈

    2023-12-23 14:02:03       43 阅读
  3. 视频姿态估计:DeciWatch

    2023-12-23 14:02:03       42 阅读
  4. Pytorch:torch.sum()函数用法

    2023-12-23 14:02:03       45 阅读
  5. Python实现逐行读取文本文件的几种方法

    2023-12-23 14:02:03       41 阅读
  6. centos 安装 Miniconda

    2023-12-23 14:02:03       45 阅读
  7. Python:Scrapy+Selenium相关依赖包记录

    2023-12-23 14:02:03       36 阅读
  8. 面向LLM的App架构——技术维度

    2023-12-23 14:02:03       32 阅读
  9. k8s中Chart的命名模板

    2023-12-23 14:02:03       37 阅读