移动安全 安全管理 应用案例网络威胁 系统安全 应用安全 数据安全 云安全
当前位置: 主页 > 信息安全 > 网络威胁 >

基于R D P的SSL中间人报复打击

时间:2014-03-24 11:06来源:TuZhiJiaMi企业信息安全专家 点击:
本文经由过程演示在RDP会话期间劫持的按键发送信息,向读者演示了为甚么用户忽视那些基于SSL的RDP连接的证书警告可能导致中间人(MiTM)报复打击,并总结了一些关于若何避免成为这类报复打
Tags网络威胁(394)SSL(42)中间人攻击(4)RDP(1)  

  本文经由过程演示在RDP会话期间劫持的按键发送信息,向读者演示了为甚么用户忽视那些基于SSL的RDP连接的证书警告可能导致中间人(MiTM)报复打击,并总结了一些关于若何避免成为这类报复打击的受害者的建议。

  RDP连接的类型

  在开端之前,起首明白本文会商了三种类型的RDP连接,包含:

  - RDP安然层(RDPSecurity Layer)

  - SSL(TLS 1.0)

  - CredSSP (SSL with NLA)

  本文要演示的是中间的阿谁类型,即SSL(TLS 1.0)。在终端办事器上,SSL一般会以下建设(不选中肆意NLA复选框):

基于RDP的SSL中间人报复打击

  RDP利用的建设

  假定办事器被设置“Negotiate”,某些连接可能包含比较等闲遭到报复打击,因为其安然层可能利用SSL。

  SSL证书警告

  假定有效户在每次连接经常常不正视类型以下的警告提示,本文刚好就是针对这些用户的:

基于RDP的SSL中间人报复打击

  常常被习惯性忽视的SSL警告

  报复打击简介

  在较高的层面,报复打击与其它的SSL中间人报复打击近似:

  1. 想编制使受害者连接到我们系统上的PoC东西(rdp-ssl-mitm.py),而不是其要连接的RDP办事器。

  2. 该东西利用RDP和谈,经由过程协商使其在交互过程中利用SSL。

  3. 一旦连接被协商利用SSL,我们的东西就会用其本身(不成信的)SSL证书与RDP客户端协商一次SSL连接。如许就使棍骗东西有机缘拜候RDP客户端发送的信息明文。

  4. 该东西也需要与正常的RDP办事器成立SSL连接,将RDP客户端的数据发送到该办事器。

  这类报复打击的独一错误谬误是在成立所需的SSL连接之前,我们的棍骗东西必需经由过程RDP和谈与客户端有一个简短的交互。

  1、使受害者连接到我们这里

  在真实的报复打击过程中,我们需要使RDP客户端连接到我们的系统,而不是其方针办事器。是以会用到ARP棍骗、DNS棍骗或一些其它编制,为精练起见,本文不再演示这些细节,假定已成功棍骗受害者的RDP客户端使其连接报复打击者的系统。

  在我们的报复打击系统上(192.168.190.170),启动PoC东西,奉告它与正常的RDP办事器192.168.2.96连接:

  $ ./rdp-ssl-mitm.py -r192.168.2.96:3389

  [+] Listening forconnections on 0.0.0.0:3389

  这里我们只需要简单地将报复打击系统的IP地址输进到RDP客户端(客户端从192.168.190.1连接):

基于RDP的SSL中间人报复打击

  直接输进报复打击者的IP,略过ARP棍骗步调

  2、与RDP客户端交互协商利用SSL

  SSL的协商在RDP和谈内很是短:

  Message #1: Client >MiTM >Server

  03 00 00 13 0e e0 00 00 00 00 00 01 00 0800 *03*

  00 00 00

  这段动静是静态不变的,我们的棍骗东西直接将其传递给办事器,不做点窜。*03*暗示客户端撑持RDP安然层、SSL与CredSSP。

  Message #2: Server >MiTM >Client

  03 00 00 13 0e d0 00 00 12 34 00 02 00 0800 *01*

  00 00 00

  接下来的动静暗示办事器选择利用的和谈,*01*暗示办事器已选择利用SSL(*02*暗示CredSSP)。我们也将这条动静不加点窜地传递给客户端。

  寄望假定办事器假定选择了CredSSP(*02*),本次演示会掉败,因为这里只是报复打击SSL,不是CredSSP。

  3、与RDP客户端成立SSL连接

  Message #3: Client >MiTM

  第三条动静用来开端成立一条SSL连接。这里SSL客户端的动静从*16 0301*开端(03 01暗示SSL利用的版本:SSL 3.1AKA TLS 1.0)

  *16 03 01* 00 5a 01 00 00 56 03 01 52 21 acbe 63

  20 ce de 4b a5 90 18 f0 66 97 ee 9d 54 14e3 1c

  ... snip ...

  棍骗东西不会将这些数据直接发给办事器,而是直接向办事器发送成立连接的要求,同时与客户端完成SSL连接的成立。

  这里我们利用的SSL证书会被RDP客户端觉得不法,并在mstsc中向用户显示SSL警告:

基于RDP的SSL中间人报复打击

  因PoC东西利用的证书产生的安然警告

  假定用户细心查抄就会发现,这里利用的SSL证书与正常证书是存在辨别的。要改进报复打击的质量,我们需要不断改进证书使其无限接近真实的证书,但我们永久没法获得与正常证书不异的签名,是以总会有些不合。

  4、与RDP办事器成立SSL连接

  同时,我们的东西也向RDP办事器倡议成立连接的动静,并与其成立第二条SSL连接。

  显示按键信息

  至些,我们的棍骗东西便可以明文显示RDP客户端发给办事器所有按键把持了。很等闲肯定发送的是哪一种类型的动静,以下两个4字节的动静就是按‘p’键时发送的。

  44 04 00 19

  44 04 01 19

  第三个字节暗示按键的标的目标(00暗示键被按下,01暗示键弹起)。第四个字节是键的扫描码(scancode),经由过程查询可以发现0×19刚好对应字母“p”键。

  凡是环境下,与字符对应的扫描码取决于所利用的键盘。我所利用的PoC东西中,已实现了对QWERTY键盘的映照,所以假定读者利用的是UK/US键盘,该东西可以直接将大年夜部门扫描码转换成对应的字符。寄望我们没法知道字符是大年夜写的仍是小写的,需要按照CAPSLock键和SHIFT键的状况的状况肯定。

  话不多说,直接上例子。以下是PoC东西的一些输出,显示了记实的按键,同时也记实下了登录的用户名为Administrator,暗码为Password:

  $ ./rdp-ssl-mitm.py -r 192.168.2.96:3389

  [+] Listening for connections on0.0.0.0:3389

  [+] Incoming connection from192.168.190.1:60370

  [+] New outgoing request to192.168.2.96:3389 (SSL: 0)

  [+] Connected

  [+] Detected incoming SSL connection.Turning self into SSL socket

  [+] Incoming connection from192.168.190.1:60374

  [+] New outgoing request to192.168.2.96:3389 (SSL: 0)

  [+] Connected

  [+] Detected incoming SSL connection.Turning self into SSL socket

  ADMINISTRATORPASSWORD

  总结

  习惯性忽视RDP连接中的SSL认证警告提示可能造成与忽视HTTPS网站的证书一样的后果:用户可以垂手可得遭到中间人报复打击。这类报复打击可以截获到用户的用户名、暗码、按键信息及其它敏感信息。

  利用RDP客户端可托的、由认证授权机构签名的SSL证书,正常环境下是没有警告提示的,是以本文也强烈保举用户寄望这一点。

  假定办事器授权了NLA,这类报复打击也会掉效,所以我们也强烈保举利用NLA。

  不外需要知道的是,这其实不是RDP客户端或办事器软件的缝隙,这类操纵编制也不是新发现。这只是RDP利用过程中的一些脆弱特点,在用户忽视安然警告时可能产生,在手艺层面只是一个通俗的SSL中间人报复打击。

  这类报复打击中一个比较有趣的扩大就是可以记实屏幕画面,也有机缘报复打击肆意RDP客户端映照的驱动器,更多细节可以参考《Attacking the RDP Clients》,不外这类报复打击需要报复打击有必然的编码根本。

------分隔线----------------------------

推荐内容