考点:
- AD域渗透
- SMB、WinRM服务攻击
- 流量分析
- 委派机制提权
前言
有一说一关于Windows的域渗透,说实话很抽象,有点摸不清楚,所以打算就写到user权限,提权那部分我觉得实在是有点难 ,虽然看得懂,但是知识覆盖面太广泛了,有点hold不住,有点被干闷了的美,所以后面的内容就先放一放了,我就放到拿到user权限的地方,AD域渗透部分属实蒙圈,然后就是想吐槽一下这一点也不easy
信息搜集
还是老样子直接nmap嗦一口:nmap -sS -sC -sV 10.10.11.174
,过程可能比较慢,结果如下:
1 | Starting Nmap 7.92 ( https://nmap.org ) at 2023-02-15 16:50 CST |
开放了445的smb端口以及基于ldap的active directory服务,在这里就不得不说说什么是ldap了
LDAP(轻量目录访问协议)是一种应用协议,用于查询和修改目录服务提供程序中的项目,例如支持LDAP形式的Active Directory。
Active Directory是一个基于数据库的系统,在Windows环境中提供身份验证,目录,策略和其他服务
也就是说LDAP是一种服务,一种协议,AD是一种数据库系统,他们两者是结合在一起使用的,关于Active Directory,这是微软的服务,因此在微软有详细的介绍:
https://learn.microsoft.com/zh-cn/training/modules/introduction-to-ad-ds/2-define-ad-ds
AD DS 及其相关服务构成了运行 Windows 操作系统的企业网络的基础。 AD DS 数据库是所有域对象(例如用户帐户、计算机帐户和组)的中心存储。 AD DS 提供一个可搜索的分层目录和可用于为企业中的对象应用配置和安全设置的方法。
AD DS 包括逻辑组件和物理组件。 应了解 AD DS 组件如何协同工作,以便能够有效地管理基础结构。 此外,还可以使用 AD DS 选项执行操作,例如:
- 安装、配置和更新应用。
- 管理安全基础结构。
- 启用远程访问服务和 DirectAccess。
- 颁发和管理数字证书。
用人话来说其实就和数据库一样,有增删改查功能,只不过AD储存的是用户信息以及一些证书
公开的Smb服务
说到smb服务大家都不陌生,永恒之蓝就是通过445端口,也就是smb服务进行攻击的,那么什么是smb服务呢?
SMB(全称是Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口
内网渗透中smb服务(139,445端口)的利用方式|
smb服务是一个域中很常见的一个服务,通俗的说,smb提供了一个共享文件夹,可以让内网的所有计算机进行访问
可以用samba中的smbclient
工具进行访问,看看是否公开,smbclient详细指令可以查看https://linuxtect.com/linux-smbclient-command-tutorial/:smbclient -L 10.10.11.174
-L 列出共享文件夹中的文件
提示我们需要输入密码,但由于是公开访问,因此不需要输入密码,可以看到有一个support-tools文件夹,既然是公开的那么就说明可以进行连接访问:smbclient \\\\10.10.11.174\\support-tools
:
可执行文件分析
发现了userinfo.exe文件,通过get指令可以下载get Userinfo.exe.zip
,拿到之后有两条思路,一条是运行,一条是反汇编,我们首先用file指令看看他是什么牛马:
.NET编写的可执行文件,这里可以使用ILSpy
反汇编,这是专门反汇编.NET的工具,在GITHUB是开源的,这里就不用这个方法了,毕竟我们是web狗
这里我们使用Wine
工具在linux中运行exe文件,并且配合wireshark抓包,观察流量内容
Wine
wine工具安装可以直接通过apt-get update&&apt-get install wine
,但是这样安装完后还不行,还会报错(我的kali会报错):
我们还需要下载wife-mono组件,https://dl.winehq.org/wine/wine-mono/,按照上述教程安装即可,安装完毕后可以运行exe文件(root):wine Userinfo.exe
:wine Userinfo.exe -v find test
:
还是需要指定firstname
第一次抓包
wine Userinfo.exe -v find -first test
:
在没有配置hosts文件时,我们进行抓包分析:
选取eth0网卡,发现了一条A记录域名解析,我们需要把ip和域名添加到hosts文件里去
二次抓包
第二次换一张网卡,换为openvpn的那个网卡,也就是靶机内网的:
可以抓取到ldap服务的用户名和密码
1 | Frame 7: 114 bytes on wire (912 bits), 114 bytes captured (912 bits) on interface tun0, id 0 |
Ldap信息搜集
可以使用ldapsearch
进行搜集:ldapsearch -h support.htb -D [email protected] -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -b "dc=support,dc=htb" "*"
有关参数分析参考:https://www.ibm.com/docs/zh/tivoli-monitoring/6.3.0?topic=information-ldapsearch-command-line-options
可以获取有关DN DC CN OU
的有关信息
绝对可分辨名称(DN,Distinguished Name)
DC: Domain Compnent
CN: Common Name
OU : Organizational Unit
下列目录:
DC=redmond,DC=wa,DC=microsoft,DC=com
如果我们类比文件系统的话,可被看作如下文件路径:
Com\Microsoft\Wa\Redmond
例如:CN=test,OU=developer,DC=domainname,DC=com
在上面的代码中 cn=test 可能代表一个用户名,ou=developer 代表一个 active directory 中的组织单位。这句话的含义可能就是说明 test 这个对象处在domainname.com 域的 developer 组织单元中。
Apache Directory Studio
我们可以通过 Apache Directory Studio 工具连接Ldap服务,界面化的查看ldap内容:
https://directory.apache.org/studio/download/download-linux.html
密码就是上述获取的,DN就是[email protected]
,都是流量中分析出来的,输入之后即可连接:
锁定USER信息表,可以看到靶机的用户成员信息:
看了很多用户,只发现support用户有info信息,猜测这可能就是密码了,并且可以看到用户属于Remote Management
成员组:
这个成员组对应windows的WINRM服务:
WinRM 是 Windows Remote Managementd(Windows 远程管理)的简称,是 Web 服务管理标准 WebService-Management 协议的 Microsoft 实现。该协议是基于简单对象访问协议(SOAP)的、防火墙友好的标准协议,允许来自不同供应商的硬件和操作系统能够互操作。
WinRM 作为 Windows 操作系统的一部分,是一项允许管理员在系统上远程执行管理任务的服务。并且,WinRM 默认情况下支持 Kerberos 和 NTLM 身份验证以及基本身份验证,初始身份验证后,WinRM 会话将使用 AES 加密保护。使用 WinRM 服务需要拥有管理员级别的权限。
在现代 Windows 系统中,WinRM HTTP 通过 TCP 端口 5985 进行通信,而 HTTPS(TLS)通过 TCP 端口 5986 进行通信。如果所有的机器都是在域环境下,则可以使用默认的 5985 端口,否则的话则通过 5986 端口使用 HTTPS 传输。
使用 WinRM 我们可以在远程主机设置了防火墙的情况下远程管理这台服务器,因为启动 WinRM 服务后,防火墙默认会自动放行 5985 端口。这样的管理服务当然不会被攻击者错过,在内网渗透中,我们可以使用 WinRM 服务进行横向移动,并且使用这种远程连接进行横向移动不容易被察觉到,也不会占用远程连接数。
WinRM利用
既然属于Remote Management组,那么就说明可能开启了winRM服务,我们用nmap扫描一下5985端口即可,扫描结果在一开始我已经给出,是开启的,既然这样就可以利用evil-winrm
工具进行连接,执行命令,指令详解参考:
https://www.freebuf.com/sectool/210479.htmlevil-winrm -u support -p 'Ironside47pleasure40Watchful' -i support.htb
获取了user的flag
SYSTEM提权(非完全理解)
提权信息搜集
这里用到了一个非常好用的提权辅助工具BloodHound
这是其中一个工具sharphound,这个要与neo4j配合使用
https://github.com/BloodHoundAD/BloodHound/blob/master/Collectors/SharpHound.exe
首先在当前目录wget [https://github.com/BloodHoundAD/BloodHound/blob/master/Collectors/SharpHound.exe](https://github.com/BloodHoundAD/BloodHound/blob/master/Collectors/SharpHound.exe)
下载文件,再在伪终端upload:upload SharpHound.exe
:
到这里就走不下去了,SharpHound好像更新了,已经无法收集信息了:
所以我觉得考点太多有时候就会出现这种复杂的情况,不多评价
About this Post
This post is written by Boogipop, licensed under CC BY-NC 4.0.