作者:M.A.L@Duncan SecTeam
0x00:引言
寒假了,我又一次成为了N个培训机构最靓的那个仔,年轻,帅气,潇洒,活力四射,光芒万丈。。。当然,这都是被身边的大爷大妈,大叔大婶给衬托出来的,可以说是典型的绿叶衬红花。其实,培训机构是一个很有意思的存在,没干些啥,完了老贵。你说咋不搞一个面向中小学,幼儿园的网络安全培训机构呢?这样我读小学那会儿就可以在培训机构肆意“学习”,完了放学带着电脑回家可劲儿打游戏。
今天要在各位web渗透大神面前show的就是关于如何测试一个培训机构的case,天上神灵可见,我真的只是出于该死的好奇才去nmap了一下他们的内网。嗯,结果发现有些存活主机非常奇怪,只开了22端口。都说好奇害死猫,我估计上辈子我就是属猫的。这么一扒拉,于是就有了这一篇分享文章,路过的大神和大牛们见笑了。下面还是一张team要求的脑图作业。
0x01:背景简介
这是一家规模不大的培训机构,为了便于等孩子家长(不包括我)和哥哥姐姐(包括我在内)消磨时光,培训机构很贴心的提供了免费Wi-Fi接入服务。整个机构采用了某Link提供的一整套Wi-Fi部署方案,确切的说是一台某Link的无线路由器以及N个无线AP。其中,2.4GHz和5GHz两个频段都是启用了的。至于Wi-Fi密码嘛,一是问前台漂亮小姐姐要;二是,用xx钥匙可以直连,然后密码也就可以查看了。
对于我而言,上网并不是最重要的,我就想知道那小破孩儿在干啥(回家可以给母上大人告状)。他们有好多IP Cam,可能是为了防着老师打小孩儿或者发生意外事故以后备查吧。可惜了了,一直没搞定IP Cam密码,漏洞也试过了,全给补了。感觉这培训机构应该是有找人专门维护网络吧,不然咋整得这么安全呢?
0x02:奇怪的设备
在搜索内网中IP Cam的时候,发现了好些只开了22端口的主机。一开始,还以为是无线AP,也就不在意了。可是后来,发现这个AP也没有Web配置界面啊。于是,出于最原始的好奇欲,连接上了其中一台存活主机。
拿上自己装了Kali Nethunter的手机,直接telnet连上去看看呗。连倒是连上了,可显示的banner信息让我懵逼了。。。
毕竟只是个脚本小子,对于Linux系统并不熟悉,貌似没听说过什么ZLM60这个发行版。Master让我自个儿去distrowatch搜,还是没找着啊。不过,黄天偏爱勤奋的大脑,找了N久,终于找到了一篇三哥的文章【1】(隔着屏幕都能嗅到那股浓重咖喱味儿啊。。。)
虽然有一股子咖喱味儿,但人三哥关于这款ZKTeco ZLM30的入侵分析非常详细,确切的说是可以直接来就用的。文中,三哥给出了适用于一部分ZKTeco考勤机的通用账户、密码:root : solokey。在另外一篇文章中【2】,也有一些可以参考的密码。不过文章【2】中提到的Zksoftware这公司貌似只是个代理商之类的,并没有相关软件。至于文中提到的不同型号存在不同密码,每个一段时间新生产的考勤机会更换默认root密码这事儿也没法验证。IoT安全这事儿最大的特点就是费钱,不然很多东西其实都是可以研究研究的。
于是,等到下一次到培训机构去的时候,就直接尝试了这个密码。Bingo,telnet登录成功了。
通过telnet查看了一些系统信息,包括CPU信息。
查看了一下/etc/passwd和/etc/shadow这两个文件,确认只有一个可登录的root账户,用的是默认的Linux加密算法。
翻了翻/bin目录,发现大部分命令都是busybox导出的,而且没有进行严格的阉割。
既然ftpput,ftpget这些命令都有,那么我们就可以尝试这获取考勤机的数据库。于是,在Kali Nethunter上果断安装了vsftpd,等着翻看他们考勤情况吧。于是,立马更新Kali Nethunter,然后安装了vsftpd,进行了简单配置之后,开始实验 ^_^
可是,应了那句广告词,anything is possible,连不上啊!悲催啊。。。然而,更悲催的是,培训班下课了,下课了,下课了啊。。。
不过,从下面这张保留的截图中可以看出,这个考勤机是可以直接上外网的,虽然没有设置dns服务器地址(估计厂家觉得没有这个必要吧)。作为一个仅在内网中使用的IoT设备,这种玩儿法(配置方法)感觉路子很野啊。不过,话又说回来,这样一个破培训机构咋可能花钱请个有安全头脑的网管呢?顿时觉得,自己将来又少了一条活路。。。
0x03:有备无患
回家后,没打游戏,一直在想为啥会连不上呢?第一反应,vsftpd配置有问题,多半权限没给够。于是,在Kali Nethunter上认认真真的试了N遍,确定无误。
后来,又想起master之前讲过的Wi-Fi接入内网的一些东西,越想越不对劲儿。Kali Nethunter是在192.168.wifi.0/24的子网里面,然而考勤机却是在192.168.inet.0/24这个网段。如果说Kali Nethunter所在的Wi-Fi网络是通过无线路由器搭在出192.168.inet.0/24上面,然后出外网的话,那么在Nethunter的确可以telnet连接上考勤机,但是考勤机却只能看到192.168.wifi.0/24段的路由,也就是说没法穿透到内网的Nethunter上。我那个去,当时咋没想到呢?
Team之前分享过关于通过Wi-Fi渗透内网的文章【3】,这个培训机构的Wi-Fi部署跟图中就跟左边那个“Bad”的模式差不多,这下就全明白了。就等下次去培训班了,嗯,从来都没有这么迫切的想去培训班陪读。。。
0x04:1 + 1 > 2
光阴荏苒,岁月如织,转眼又到了高级伴读小书童上岗的日子了。陪伴我的依旧是那一部某宝淘到的OP 7Pro,大写的穷!
再次验证了一下,192.168.inet.0/24网段直接连接互联网,然后192.168.wifi.0/24则是直接搭在其上的,这也就印证了之前的推测。那么,问题来了,怎么才能够把我的Nethunter映射到192.168.inet.0/24上呢?哈哈哈,托没有网管的福了,感谢那台192.168.wifi.0/24网段的某Link无线网关。
并且,这网关并没有修改默认的账户和密码,登上去就直接管理员权限了。
接下来,咱得干点儿网管的活儿了,加一条规则实施能不能映射成功。实验结果是,失败了,原因很简单,忘了添加20端口。虽然在测试的时候,已经充分考虑了FTP被动模式会被网管干掉,因此专门把vsftpd开启了主动模式。可是,一时着急,忘了把20端口加上了。。。
重新编辑转发规则,把20和21全部映射到192.168.inet.0/24网段,接着测试。
切换到考勤机的/tmp目录下,创建一个名为ftp.txt的测试文件,然后通过ftpput命令将其上传至192.168.inet.2。当然,192.168.inet.2已经映射到了192.168.wifi.175,也就是我的Nethunter上了。
接下来,就在Nethunter上验证一下是否收到了ftp.txt文件。切换到Nethunter上ddd用户主目录,下面确实有一个ftp.txt文件,并且内容一致。
这实验能够成功主要还得归功于两个前置条件:
——考勤机部署在了一个核心网段(192.168.inet.0/24),而Wi-Fi接入则是直接将192.168.wifi.0/24网段直接搭在了核心网段上。
——192.168.wifi.0/24网段的无线路由器存在弱口令漏洞。
——正是因为这样,才会有这种1 + 1 > 2的效果。
0x05:总结
首先,像ZKTeco考勤机这样的IoT设备在我们生活中真的好多,一开始没想过去hacking,就像这次hacking一样,完全出于偶然。我甚至猜测team在文章【3】中提到的,消防部门内部有大量设备开启了22端口,这些设备真的就是网络设备吗?会不会也是考勤机呢?如果真要是这样,那可就危险了啊。。。
再者,对于IoT设备而言,大多数情况下上外网都不是必要的,那么在网络架设的时候咋就没有专门搞一个网段呢?哪怕VLAN也行啊,好歹也算是隔离了一下啊?
还有,对比一下team在文章【4】【5】里面关于电信光猫的分析,ZKTeco对于设备自身的安全性考量确实要做得差一些,就从对busybox的阉割就可以看出来。
最后,MSTE(中小微企业)自身的安全意识或许才是最大的隐患。说不上无知无畏,但是没有被蛇咬过他就不知道疼啊,正是基于这种心理以及MSTE自身运营中的成本考量,对于MSTE而言安全注定只会是一次性投资,而且还是附着在网络基础建设之上的。至于长期的安全运维嘛,那估计得等到A、B、C轮完了,甚至是敲钟那天了。
0x06:参考文章
1、《HACKING ZKTECO K40PRO (ZEM510) IOT DEVICE》. https://www.esecurify.com/hacking-zkteco-zem510-iot-device-smart-device-hacking/
2、《户外物理设备入侵之:入侵并“调教”中控指纹语音考勤系统(打卡机)》 .http://www.hackdig.com/?06/hack-4092.htm
3、《基于智能手机的近源渗透测试案例分享(二)——“点到为止”的测试成都某消防部门》. https://www.anquanke.com/post/id/230001
4、《PT632电信“老猫”分析》 .https://www.anquanke.com/post/id/259503.
5、《ZN600电信光猫分析 —— 初识》 .https://www.anquanke.com/post/id/263859.