不久前,我买了一个小型的TP-LINK交换机做测试,具体型号为TP-LINK TL-SG105E ( 版本1),因为它有一个带镜像功能的端口,这可以让我很轻松的嗅探到经过各个接口的数据的具体情况。
本文就是围绕这个端口镜像功能展开的,主要介绍该交换机的管理界面以及我是如何破解这个流量管理入口并且得到一些敏感信息(比如各个设备的凭证信息)。
如下图,只是一个简单的配置页面(Easy Smart Configuration Utility)来让你能配置相关的协议。
流量
我很好奇这点,所以使用交换机的时候,用Wireshark进行了抓包。如下图:
底部两条会话比较重要,这条信息流向是从我的笔记本(192.168.0.2)的29808/udp端口流向交换机(192.168.0.1)
打开后我们可以观察到,所有信息流向都是先把信息传给广播地址255.255.255.255:
这就意味着子网中(即所有和该交换机连接的设备)的所有设备都能收到这些流量包。
这并不理想,所以我们也许可以试试直接偷交换机的凭证信息,先来看一看数据流:
用十六进制查看这些包:
注意,每个包都是以5d 开始的,这表明这里是通过一个简单并且不变的编码模式产生的,可能是直接通过XOR或者移位产生,也有可能是通过一个静态的键值产生。
因此,接下来的解码是要确定程序是如何对数据进行编码的。
解码程序
安装完的程序是一个被编译成可执行的程序(PE文件),用7-zip可以打开该程序,7-zip可以提取到Java编译过得类,可以知道改程序是用Java写的:
打开后class文件被展开成一个目录,然后用工具jd-gui打开,jd-gui是一个java类的反编译工具,可以解析class文件。查找所有反编译的类,最后把目标定位在com.tplink.smb.easySmartUtility.RC4这个类里面,这个类给出了算法已经加密时候用的key:
现在,我们知道了加密算法已经加密密钥,接下来。。。干起来吧
解密内容
我也懒得再写一个程序来解密了,我直接在概念上验证下吧。首先,我把Wireshark中的会话的原始数据包保存下来,把他用十六进制编译,并且把他保存成如下:
5d746a047dbeb0b2971adf7535477e53422ba2f5d78baeed508f463dc202909aa4ec81c6
5d75ae6a62b7dd37971adf7535477e5c422ba2f5d787aeed508f463dc202909a521281c6d8d52b36
5d77ae6a62b7dd37971adf7535477e5f422ba2f5d797aeed508f74b0c202909a591381c0464e465f27d942b5a44608403418222a80b19b77
5d75ae6a62b7dd37971adf7535477e5e422ba2f5d787aeed508f74b0c202909a5b1981c6d8d52b36
5d75ae6a62b7dd37971adf7535477e59422ba2f5d787aeed508f74b0c202909a5b1181c6d8d52b36
5d75ae6a62b7dd37971adf7535477e58422ba2f5d787aeed508f74b0c202909a5b1a81c6d8d52b36
5d75ae6a62b7dd37971adf7535477e5b422ba2f5d787aeed508f74b0c202909a521281c6d8d52b36
5d77ae6a62b7dd37971adf7535477e5a422ba2f5d793aeed508f4e5cc202909a591381c0464e465f27d942b5a44608403418222a7c4e9b77c7eb7608
5d75ae6a62b7dd37971adf7535477e45422ba2f5d787aeed508f4e5cc202909a491381c6d8d52b36
5d75ae6a62b7dd37971adf7535477e44422ba2f5d787aeed508f4e5cc202909a6b1381c6d8d52b36
5d75ae6a62b7dd37971adf7535477e47422ba2f5d787aeed508f4e5cc202909a6b1281c6d8d52b36
5d75ae6a62b7dd37971adf7535477e46422ba2f5d787aeed508f4e5cc202909a7b1381c6d8d52b36
5d75ae6a62b7dd37971adf7535477e41422ba2f5d787aeed508f4e5cc202909a1b1381c6d8d52b36
每一个换行就是一个包的结束,这些行都是以相同的十六进制数为开始。我们知道,每个包都是用相同的加密程序加密的,所以我们只要循环的对每行进行加密就行。
针对通用的RC4方法,我写了个python脚本,放在github上了
https://github.com/pentestpartners/snippets/blob/master/decode-sg-105e.py,为了防止脚本小子滥用这个脚本,我已经把密钥移除了。
下图就是用python脚本解密的数据流:
图中红色部分就是管理员的账号密码,通过这个就可以轻松的控制交换机了。
怎么做才能保证安全?
如果你使用了这款交换机,或者另一个(SG-108e),那么你应该注意到它的通讯并不安全。
理论上你可以通过配置VLAN,只让一个接口可以访问管理页面,这样可以很好的解决问题。
以下是TP-Link厂商的观点:
1.关于设备和交换机之间的广播发送
这点在设备的通讯方面是很常见的,其他的产品,例如Netgear 也是通过这种方式的。
正如你所说,广播式网络的确存在你所说的问题,我们也在思考这些问题,但是这个问题的前提是局域网不安全。
实际上,在大多数场景下局域网是安全的环境。我们通常会在局域网前面架设NAT路由器和防火墙,大部分的黑客行为在这里就会被阻断。防火墙和一些安全软件就可以保护我们的局域网安全。如果局域网已经处在不安全的状态下,就算我们不适用广播通讯,其他的方法,例如ARP欺骗也可以得到同样的东西。
2.加密和解密的问题
Our Easy Smart Switch的定位是给家庭和少部分办公室使用的交换机,因此他的芯片并不足够强大到可以提供一个高度的安全服务。
加密程序是用Java写的,这意味着反编译是无法避免的,只要你知道如何反编译,就能反编译出这些程序。这是Java的普遍存在的问题,同时我们是无法改变这一点的。不过我们正在考虑在这方面加大我们的研发力度,在下个版本的程序中提高加密算法的安全性。
虽然我一直想把这种广播变成单播,不过站在他们的立场想,这样做是有道理的。我也并不会停止使用这款产品。
*参考来源:pentestpartners.com,FB小编东二门陈冠希编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
- 上一篇:如何用蜜罐追踪黑客(第一集)
- 下一篇:内部威胁那些事儿(三):信息窃取
-
翻译大师每天翻译文章辛苦了 原文我就不贴 url 了
-
刘强东那么,问题来了,这么好的交换机,哪里有得卖呢?
-
@ 马云 瞎扯,看我李厂长的人血馒头多么厉害
-
嗯
-
fuckbaidu我没看出来正文和端口镜像有任何关系
其实就是TP-LINK的交换机管理工具发送带有密码的广播包然后被up主爆菊了
不容错过
- 【FreeBuf视频】《安全创业公司巡礼》美国初创公司Shape Security:使用代码变形技术的僵尸防火墙FB视频2015-02-13
- 安洵信息招聘安全人才安洵信息2016-09-05
- 数据清洗、智能网联汽车与企业安全建设:FreeTalk北京站看点回顾(附PPT下载)Elaine2017-05-09
- 黑客是如何“一键”盗取汽车的?(附演示视频)饭团君2016-05-09
0daybank
已有 14 条评论
再看我就把你吃掉!
我没看出来正文和端口镜像有任何关系
其实就是TP-LINK的交换机管理工具发送带有密码的广播包然后被up主爆菊了
那么,问题来了,这么好的交换机,哪里有得卖呢?
@ 刘强东 当然是我大淘宝啦
@ 马云 啊呀 你是来踢场子的嘛
@ 马云 瞎扯,看我李厂长的人血馒头多么厉害
说的就像你不是脚本小子似得!
你确定是交换机还是HUB
嗯
翻译大师每天翻译文章辛苦了 原文我就不贴 url 了
@ global_hacker 感谢您的关注,Freebuf的所有翻译文章末尾都有原文链接哦!
@ global_hacker 想喷你都没找到点,傻
@ global_hacker 应该喷这么弱鸡的文章