LUG 服务器被入侵事件始末

5 月中旬,LUG 举行了白帽子大赛,对校内网站进行白帽子漏洞测试,并按照漏洞来评奖。这次活动举行得还算顺利,几天时间里找到了校园网络系统的上百个漏洞。然而不知是什么原因引来了骇客。

5 月 31 日凌晨,监控系统接连发出的报警打破了深夜的宁静,LUG 的数十台服务器毫无预兆地接连出现故障,震惊中外的 LUG 服务器被黑事件拉开了帷幕。从 6 月 1 日服务器管理员 gyf 向网络信息中心第二次通报的邮件里,能够依稀感受到当年的紧张气氛。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
按照事件第一次发生时间排序:

【blog.ustc.edu.cn、freeshell.ustc.edu.cn】202.141.{160,176}.99(网络信息中心虚拟机)
31日 01:43,具体详情见上一封邮件(服务器失联),至今未修复。

【mirrors.ustc.edu.cn】202.38.95.110/25,202.141.{160,176}.110(网络信息中心实体机)
31日 01:51,黑客登陆后执行了 sudo /bin/sh;(P.S. 黑客登陆IP来自128.199.203.28(DigitalOcean),但该IP已被注销)
31日 01:58,系统崩溃, 由于我们设置了内核崩溃后60秒重启,因此该机器重启
31日 02:01,黑客再次登录
1日 19:42,管理员在排查问题时卸载了tun内核模块,随后,所有vlan配置消失。服务器失联。
1日 20:03,我和崔灏进入网络信息中心机房,物理接触服务器
1日 20:30,该服务器所有网络服务恢复正常

【lug.ustc.edu.cn】202.141.162.123(西区图书馆实体机)
31日11:54,服务器失联,无法ping通
31日13:47,我进入西区图书馆机房,发现服务器花屏,故障原因未知
31日14:07,强制重启服务器后,服务恢复
1日 19:58,服务器再次失联,至今未修复

【gitlab.lug.ustc.edu.cn】202.141.{162,176},93、202.38.93.93(东区图书馆机房虚拟机)
1日中午,接到用户反馈部分git仓库故障。
登录服务器发现btrfs文件系统损坏。
尝试通过vSphere Data Protection恢复失败,正在查找原因。。。

【vpn.lug.ustc.edu.cn】202.141.{160,176}.95(网络信息中心虚拟机)
1日20:35,该服务器失联
随后,我们通过vCenter查看,发现该机器正在循环重启。现象与blog服务器极为类似。
且该服务器故障前半小时的auth.log被删除,我们从硬盘中恢复出了部分入侵前后的日志。
服务至今未恢复。

我们正在全力抢修服务器,但由于事情发生得非常集中,服务全部恢复可能需要较长时间。

事后查明,服务器是用我的账号远程登录进去的。骇客 5 月中旬通过 U 盘传播的病毒入侵了我的笔记本,植入了键盘记录器,并通过未知方式远程控制我的浏览器访问一些与网络入侵有关的网页。由于我的个人账号没有访问记录,比特币钱包也没有被窃取,很有可能这是针对 LUG 而非我个人的一次高级持续性威胁(APT)。此后的半个月里,骇客没有打草惊蛇,估计是在通过各种渠道收集 LUG 服务器的信息。5 月 30 日夜,骇客通过键盘记录器窃取的服务器密码登录了大批服务器,并插入恶意内核模块。骇客还侵入 LDAP 数据库,篡改了一位已经离校的老会员的密码,登录进防守最严密的 mirrors 服务器。骇客还窃取了一位 VPN 用户的私钥,接入服务器内网,进一步入侵不允许从校外接入的服务器。

这个恶意内核模块所做的事情看起来很简单,就是在每次文件操作的时候随机修改硬盘上的一个字节。这个看起来像是恶作剧的内核模块,使得服务器在刚被入侵的时候运行一切正常,但当有关键数据被破坏后,发现系统异常,此时已经有大量用户数据和系统文件被破坏了。当管理员试图扫描和修复这些受损文件的时候,由于产生了大量文件操作,就导致更多的文件受损,总也修不好。甚至当我们 NFS 挂载备份服务器来拷贝备份数据的时候,拷出来的备份也是有错的,这让我们百思不得其解(幸亏备份服务器是 NFS 只读挂载,不然备份本身也可能被破坏)。

日访问量过千万的开源软件镜像(mirrors)服务中断,校内数千名用户依赖的 VPN 中断,freeshell 虚拟机内文件损坏,blog 无法访问,连 LUG 主页都打不开了,询问的邮件像雪片一样飞来,然而邮件服务器也挂了。这次被黑事件甚至惊动了多个 Linux 发行版和开源软件的上游,他们纷纷表示开源软件镜像被入侵是闻所未闻的事。Freeshell 服务由于没有备份而终止,VPN 服务则由于充当了帮凶而不再公开运行。此次事件暴露了 LUG 服务器基础架构的诸多问题,比如公共 VPN 服务和服务器使用同一内网,密码登录没有两步验证,服务器没有对插入内核模块的危险操作作报警和防御,离校管理员的账号没有禁用。当然,我的笔记本被骇客入侵是根本原因。事后,LUG 和 james 老师对我宽大处理,没有追究我的责任。我至今感到非常内疚。