声明:本文所提到的所有问题均为虚构,环境也是自己搭的,使用的措辞轻浮、内容浅显、操作生疏,不足之处欢迎师傅们指点和纠正,感激不尽。
0x00 前情提要
某十一前夕回家,发现家门口的地铁站修整施工一年多了,偷偷溜进去视察一下施工情况,已经进入调试阶段了,发现总控室的桌子上放着一份VPN使用说明,最后竟然附了一张连接的账号密码名单,好玩儿的这不就来了^_^(并没有)。
0x01 内网探测分析
1、进入该地铁站内网后,先简单进行内网探测,直接发现有多个开放102端口的设备(当时没截图,这次探测一个看一下吧),既然是地铁站,猜测该端口通常为运行S7comm/S7comm+协议的PLC所开放的通信端口;
2、既然端口都探测到了,不试一试怎么行,在不知道是否存在防火墙的情况下先浅浅尝试一些低危操作,进一步探测发现,设备都为西门子S7-300 PLC,其所使用的S7comm协议具有严重漏洞,所有的流量都为明文传输;
0x02 PLC流量分析
3、经过追踪,发现其中一个PLC的上级交换机,且该交换机为网管交换机;
4、直接随手一个弱账号密码admin/admin即可登录该网管交换机;
5、登录进入该交换机后,发现连接有多个PLC,并且有流量镜像的功能,于是将PLC的流量都镜像出来;
0x03 分析对应功能
6、经过几周陆陆续续的抓包分析,发现有上位机与PLC通讯,且偶有一些写入PLC内存地址的操作,使用布尔值作为功能的开关变量,猜想可能为控制的某些功能;
7、根据掌握的PLC读写的内存地址与值,构造攻击脚本并实地测试不同内存地址所控制的具体功能点;
0x04 发起总攻
8、设计一套非常可怕的破坏流程,实现站内信号灯变绿、列车发生事故后变成跑马灯,安全门在列车进站时打开、在列车发生事故后关闭禁止救援人员直接进入,列车出站时改变道岔使列车当场脱轨,然后控制按下紧急停止按钮。
0x05 总结
9、该地铁站暂未安装安全防护设备,且由于西门子S7-300
PLC使用的S7comm协议通信为明文传输,因此将其作为控制单元极具安全隐患,考虑到控制单元一般不宜更换,建议该地铁站将生产区使用防火墙进行隔离保护。
10、以上研究分析与渗透均在合法、授权范围内,此次渗透未造成任何事故发生。
攻击结果附图: