分享
 
 
 

浅谈smb会话劫持具体实现

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

先从2个工具谈起吧,SMBPROXY和SMBRELAY,一般来说,如果拿到一个远程主机NTLMHash密码信息, 一般都会使用暴力破解来获取密码,SMBPROXY则可以使用proxy方式与远程主机验证登陆,来达到快速进入的目的,一般这种文件的格式如下

username:id:LANMAN hash:NTLM hash:::

admin:1003:CCF9155E3E7DB453AAD3B435B51404EE:3DBDE697D71690A769204BEB12283678:::

实际上,如果我们采用了CAIN,SCOOPLM或者LC4也有可能嗅探到一些SMB会话信息。格式如下

Username\Domain:"":"":Case insensitive password:Case sensitive password:Challenge

Administrator:"":"":89E5E3F54A998398DC36E89DDD37334C801201CA39C9A5D3:8457623684F27A5EFA5FE7B647E87C36D78616F80594123C:E3A96FF4507B9EDF

可以看出来,2者无论在形式还是内容上都是存在很大差距的,不过LC4对于这2种格式的密文都是可以破解的。事实上,SMBPROXY只能利用第一种格式的文件,至于为何无法利用嗅探到的数据格式,就得从SMB会话加密机制谈起。

早期SMB协议在网络上传输明文口令。后来出现"LAN Manager Challenge/Response"验证机制,简称LM,但是很容易被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。现在已经有了更新NTLMv2以及Kerberos验证体系。

假如A机器试图访问B机器某共享资源的时候,A机器会发送当前登陆的用户名和密码,由B机器进行验证,此时B机器会随机产生8字节的挑战(Challenge),送往A机,A用源自明文口令的DESKEY对挑战进行标准DES加密得到响应,并发往B,B从SAM中获取A发送的用户名的LM Hash、NTLM Hash,计算出DESKEY,并对前面发往A的挑战进行标准DES加密,如果双方比较结果一致,那么就算通过验证。如果这次的验证无法成功,才会提醒用户输入用户名和密码,也就是我们常见的验证框。由用户填入用户名和密码后再用同样的方式进行下一轮的加密--验证

(注意:这里的会话机制仅限于NT,2K,如果98,WINME向2K或者NT提出请求的话,你是无法选择用户名的,默认的用户名就是你当前登陆名)

我们先来看看SMBPROXY工作原理,因为PWDUMP截取的文件里后面一排就是NTLM HASH,这里的HASH直接进行DES加密--发送--验证,省去了明文口令加密的那一步,所以,实际上就不需要获取什么明文口令了

下面就是工作图例:

Legend: H:把明文口令加密的算法

E DES 加密算法

D Decryption

P 是明文口令

S=H(P) 明文口令加密后的HASH,贮存在SAM中,

N 挑战

A 客户端

B 服务器

Windows NT/2000 login:

1. A=B: 发出请求

2. B=A: N

3. A=B: E(N,H(P))

服务器检查的是S=D(N,E(N,H(P))) 或者 E(N,S)=E(N,H(P)).

事实上,S我们是可以通过PWDUMP获得的,也就是说,P已经不需要暴力破解了

Windows NT/2000 "passing the hash":

1. A=B: 发出请求.

2. B=A: N

3. A=B: E(N,S)

发送S=D(N,E(N,S)) 则必然可以通过主机验证,我们此时就是你发送S的用户身份,如果你发送的是管理员的

S值,你就是管理员!

在谈SMBRELAY之前我们先看看下面的一段文档

1997年2月6日,Dominique Brezinski 对外

发布了一份关于Windows NT身份验证机制脆弱性的文档

假设有主机B与A

(1) A向B发起连接请求

(2) B向A发送挑战(一组随机数据,8字节)

(3) A用源自明文口令的DESKEY对挑战进行标准DES加密得到响应,并发往B

(4) B从SAM中获取A的LM Hash、NTLM Hash,计算出DESKEY,并对前面发往A的挑战进

行标准DES加密

(5) 如果(4)中计算结果与A送过来的响应匹配,A被允许访问B

现在假设一个攻击者C卷入其中

(1) C向B发起连接请求

(2) B向C发送挑战D(一组随机数据)

(3) C等待A向B发起连接请求

(4) 当A向B发起连接请求时,C伪造成B向A发送挑战D

(5) A用源自明文口令的DESKEY对挑战D进行标准DES加密得到响应E,并发往B

(6) C截获到响应E,将它做为针对(2)中挑战D的响应发往B,并声称自己是A

(7) B从SAM中获取A的LM Hash、NTLM Hash,计算出DESKEY,并对挑战D进行标准DES

加密

(8) 如果(7)中计算结果与C送过来的响应匹配,C被允许以A的身份访问B。

在今天,如果攻击者只是采用一般的旁者嗅探方式,嗅探得到的HASH中,LM CLI-CHALL无法得到(全为0),哪怕自己的地位是SMB SERVER!这里,我给出2种情况让大家比较

第一种情况:我自己做为SMB SERVER ,由其他机器充当客户的角色访问我的共享资源所抓到的一段数据

Administrator:"":"":5FA055E5F1819F2900000000000000000000000000000000:FACEAAE8DD420A0EA8EBB15B6FC499CF38B0C5B3B616FE38:D29F5CC5DC662A91

这是一段嗅探到的不完整的加密数据,由于LM CLI-CHALL没有能够获取到,所以也就无法被我们利用。

第2种情况:如果我们自己充当CLI,向SMB SERVER发出请求

Administrator:"":"":89E5E3F54A998398DC36E89DDD37334C801201CA39C9A5D3:8457623684F27A5EFA5FE7B647E87C36D78616F80594123C:E3A96FF4507B9EDF

这里就比较完整了,如果倒入LC4破解,最终得到的就是我自己的口令。

事实上,为什么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

必须注意的地方:

1:在win2k上,如果系统一直使用139端口,SMBRelay将不能正常的工作---绑定到139端口,因为Microsoft有自己的一套系统自我保护的制度。解决这个问题的最简单的方法就是使用/L+参数来建立一个新的IP地址在我们自己的NIC(网络接口卡),并且你的目标将先连接这个新建的IP,而不是你的真正IP。另外一种方法是在控制版面中手动添加一个IP地址,然后使用/L来指定使用这个IP地址。

2:如果可以的话,SMBRelay将绑定系统的139端口,但是并不是说能够正确绑定就能够正确的接收连接信息。当SMBRelay绑定139端口时,如果系统存在任何的139端口的连接(包括TIME_WAIT状态的),它将很有可能不能够正常工作。win98下则不会接收到任何的连接信息。在Windows NT下,SMBRelay也可能是只能够接收到部分连接信息。就因为这个,我经常执行了几个SMBRelay,用以增加得到信息的可能性。在Windows 2000下,如果系统正在使用将不允许SMBRelay的绑入。

3:在你电脑上建立新的IP地址的时候,你必须特别注意的是在使用/IR或/IL参数时,你应该指定的使用的网卡接口号。使用/E参数来列举网卡接口,和他们的参数。在NT系统中,网卡接口号很简单;在win2k中,他们使用稿字节,所以使用16进制数来表示。如果你不使用/IR参数来设置代理的网络接口(IP地址)时,默认是使用1号网络接口,这将造成只能够使用你的系统来连接的结果。

下面我们就来看看SMBRELAY的某次工作流程

说明::这次攻击过程虽然只需要2台机器,实际上采用了3个IP,构成了中间人攻击的条件

关于IP地址的说明:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有