暗流初涌:一次真实入侵事件的前夜
2023年9月11日下午两点二十七分,星选电商SOC(安全运营中心)的告警大屏突然炸出一片红光,值班工程师李默手里的冰美式还没送到嘴边,就被刺耳的蜂鸣声震得顿了一下。他工作刚满三年,处理过上百次安全告警,大部分是员工点了破解软件带毒,或是误点了钓鱼邮件,常规操作就是远程连过去杀毒、打补丁,最多上报个工单。但这次不一样——EDR(终端检测与响应系统)的告警详情里写着「异常批量文件加密行为」,源IP是运营部办公网的172.16.12.47,告警等级直接标了P0。
李默第一反应是哪个运营又下了什么奇怪的工具,顺手拨通了运营部小张的工位电话。电话那头的小张声音都带了哭腔:「李哥,我刚才点了个快递的邮件附件,是个叫invoice_20230911.exe的发票,点完电脑就卡了,现在屏幕全黑了,弹出来个红窗口,说什么文件被加密了,要付5个比特币,不然72小时就全删了,还有个倒计时……」
「先别动电脑,我让运维给你断网。」李默心里一紧,立刻在工作群里@了运维组的同事,同时点开EDR的告警详情,看到了小张电脑的进程树:一个伪装成svchost.exe的进程正在遍历所有本地磁盘,批量修改文件后缀为.lockbit,这是典型的勒索病毒行为。但让他觉得不对劲的是,这个病毒的落地时间刚好是下午两点二十五分,而小张点附件的时间是两点二十三分,从点击到加密只用了两
2023年9月11日下午两点二十七分,星选电商SOC(安全运营中心)的告警大屏突然炸出一片红光,值班工程师李默手里的冰美式还没送到嘴边,就被刺耳的蜂鸣声震得顿了一下。他工作刚满三年,处理过上百次安全告警,大部分是员工点了破解软件带毒,或是误点了钓鱼邮件,常规操作就是远程连过去杀毒、打补丁,最多上报个工单。但这次不一样——EDR(终端检测与响应系统)的告警详情里写着「异常批量文件加密行为」,源IP是运营部办公网的172.16.12.47,告警等级直接标了P0。他顺手拨通了运营部小张的工位电话,电话那头的声音都带了哭腔:「李哥,我刚才点了个快递的邮件附件,是个叫invoice_20230911.exe的发票,点完电脑就卡了,现在屏幕全黑了,弹出来个红窗口,说什么文件被加密了,要付5个比特币,不然72小时就全删了,还有个倒计时……」
「先别动电脑,我让运维给你断网。」李默心里一紧,立刻在工作群里@了运维组的同事,同时点开EDR的告警详情,看到了小张电脑的进程树:一个伪装成svchost.exe的进程正在遍历所有本地磁盘,批量修改文件后缀为.lockbit,这是典型的勒索病毒行为。但让他觉得不对劲的是,这个病毒的落地时间刚好是下午两点二十五分,而小张点附件的时间是两点二十三分,从点击到加密只用了两分钟,比普通勒索病毒的落地速度快了三倍。更让他冒冷汗的是,在这短短四分钟里,这个伪装进程已经尝试向公司文件服务器的445端口发起了12次连接请求,还扫描了OA服务器、测试服务器的3389远程桌面端口,要不是OA服务器的防火墙策略默认禁止办公网直连远程桌面,现在整个公司的核心系统可能已经被拖进去了。
运维老周是公司干了五年的老员工,上周刚看过安全厂商发的勒索病毒预警,收到李默的@之后第一反应还是「是不是小张又乱下破解软件了」,直到李默把进程树的截图发过来,看到那个伪装的svchost.exe的路径是`C:\Users\zhangxx\AppData\Local\Temp\svchost.exe`,而不是系统正常的`C:\Windows\System32\svchost.exe`,他才意识到出了问题——正常系统的svchost.exe都是系统目录下的,数字签名是微软的,父进程是services.exe,而这个伪进程的父进程是explorer.exe,没有数字签名,路径在用户临时目录,明显是恶意程序。他手比脑子快,直接在核心交换机上把运营部整个172.16.12.0/24网段划到了隔离VLAN,不仅断了所有终端的互联网访问,还切断了和业务网、文件服务器的所有连通性。办公室瞬间炸了锅,运营部的打印机突然停止打印,几个正在传合同的运营拍桌子喊「怎么回事?网断了我们怎么做业务?」,老周在工作群里吼了一句:「都给我消停点,谁碰自己电脑直接开除,现在全公司断网,安全部说什么时候恢复什么时候恢复。」
安全总监王磊是前某头部互联网公司的安全负责人,经历过三次大规模勒索病毒攻击,听到告警后五分钟就赶到了SOC,看到李默拉出来的攻击时间线,直接拍
王磊指尖敲了敲SOC大屏上跳红的攻击时间线,目光扫过李默刚拉出来的进程树截图,又瞥了瞥运维老周刚发过来的网络拓扑图,声音压得很沉但每个字都像砸在实处:「先别慌着杀毒,先做小张那台机器的内存镜像,所有操作留痕,这是证据。老周,你刚才断的网先别急着恢复,先全公司扫一遍EDR,看看还有没有其他中招的机器,另外把运营部所有机器的外网访问权限先关了,只留必要的业务端口。」
李默愣了一下,他刚才第一反应就是远程连过去杀毒,毕竟之前处理类似告警都是这么干的,王磊这句话直接把他刚伸出去准备敲键盘的手拽了回来:「王总,我们之前不都是直接杀毒吗?留证据干嘛?现在业务部门都闹翻天了,说断网损失多大。」
「你忘了去年WannaCry爆发的时候,某公司直接杀了毒,结果没留攻击者的样本,过了俩月又被同一伙人攻击,这次要了五百万美元赎金?」王磊指了指大屏上还在跳的告警,「这次是LockBit 3.0的变种,加密算法是AES-256混合RSA-2048,没有攻击者的私钥,文件根本解不开。而且我刚才看了告警日志,这个进程在加密之前,已经尝试连接了文件服务器的445端口12次,OA的3389端口8次,要是我们再晚两分钟断网,现在文件服务器上的所有订单数据、用户信息早就被加密了,到时候别说大促,公司直接关门都说不定。」
李默后背瞬间冒了一层冷汗,他刚才光顾着看终端上的加密行为,根本没注意网络侧的连接日志。他赶紧点开EDR的取证模块,选了小张的终端,开始做内存镜像,同时按照王磊的指示,在全公司终端里批量搜索有没有和`C:\Users\zhangxx\AppData\Local\Temp\svchost.exe`路径匹配的进程,有没有访问过`172.16.12.47`这个IP的机器。
老周那边也没闲着,他先在核心交换机上把运营部的隔离VLAN做了ACL限制,只允许访问必要的业务端口,禁止所有对外网的SMB、RDP连接,然后调出了过去24小时的所有防火墙日志,开始逐条筛查有没有异常的外发流量。不到十分钟,EDR的全网扫描结果就出来了,除了小张的机器,运营部还有两台行政的电脑也中了招,都是同一个exe文件,父进程都是explorer.exe,而且都已经开始加密本地文件,只是还没完成就被断网拦住了。
「奇怪,这三台机器的共同点是什么?」李默盯着扫描结果皱眉头,三台机器都是Windows 10系统,都是办公网终端,没有对外暴露的服务,攻击者是怎么同时拿到这三台机器的初始访问权限的?
王磊指了指邮件网关的日志界面:「查邮件,这三个人今天都收过同一封发件人是`service@sf-express-notify.com`的邮件,主题是「您的快递已送达,请查收附件发票」。你去看看这封邮件有没有进公司的垃圾邮件过滤规则。」
李默赶紧调出邮件网关的日志,搜了发件人地址,结果跳出来的记录让他愣了一下:这封邮件的信誉评分是98分,属于低风险邮件,直接放进了收件箱,没有进垃圾箱。他点开邮件的原始头,看了发件人的SPF记录,发现这个仿冒的顺丰域名的SPF记录是`v=spf1 include:spf.sf-express-notify.com ~all`,而攻击者自己搭的邮件服务器的IP被加进了这个SPF记录里,所以邮件网关校验的时候认为发件人是合法的。
「这封邮件的附件是invoice_20230911.pdf.exe,用了双后缀,系统默认隐藏已知文件后缀,所以小张他们看到的文件名是invoice_20230911.pdf,以为是发票就点了。」王磊把邮件的附件样本调出来,「附件本身是一个加密的压缩包,解压密码写在邮件正文里,所以邮件网关的静态扫描根本没扫出来内容,一查就放行了。」
李默赶紧点开邮件的正文,看到里面写着「您好,您的快递单号SF1234567890已送达,附件是本次的发票明细,解压密码是sf123456,如有问题请联系客服」。他瞬间反应过来,这个密码就是快递单号后六位,攻击者根本没花什么功夫就构造了这封钓鱼邮件,而公司的邮件网关对加密压缩包的扫描规则之前被业务部门投诉过,说经常把正常的加密压缩包当成恶意文件拦掉,所以安全部上个月就把这个规则关了,这才让这封带毒的邮件进了公司内网。
「那攻击者拿到这三台机器的权限之后,有没有横向移动?」李默现在有点进入状态了,他开始顺着攻击链往下查。
王磊指了指防火墙的日志:「查172.16.12.47过去24小时的出站连接,看看有没有连过什么奇怪的IP。」
李默调出日志,筛选之后发现,172.16.12.47在过去24小时里,一共连过三个外部IP,分别是`192.168.3.12`(公司测试环境的GitLab服务器)、`192.168.5.78`(公司的测试文件服务器)、还有一个境外的IP`45.155.205.12`,端口是443,连接时间都是凌晨两点到四点之间,流量很小,都是加密的HTTPS流量。
「攻击者应该是先攻破了测试环境的GitLab服务器,拿到了里面的代码和配置文件,然后从配置文件里拿到了测试文件服务器的账号密码,还有办公网的域账号信息。」王磊点了点GitLab的登录日志,「你看,这个IP在凌晨1点47分的时候,用了一个弱口令登录了GitLab,账号是test_admin,密码是123456,这个账号的权限很高,能访问所有项目的代码和配置文件,里面存了测试环境的所有密码,包括域账号的密码。」
李默顺着查了下去,发现攻击者登录GitLab之后,下载了所有项目的配置文件,里面果然有办公域的域管账号的密码哈希,还有测试文件服务器的管理员账号密码。然后攻击者用测试文件服务器的权限,横向移动到了办公网,拿到了运营部几台机器的权限,然后构造了这封钓鱼邮件,给小张他们发了过去,等他们点了附件之后,就部署了勒索病毒。
「等等,那攻击者为什么不在拿到GitLab权限之后直接拿域管权限,还要发钓鱼邮件?」李默有点不明白,「直接拿域管权限不是能加密更多东西?」
王磊摇了摇头:「因为GitLab是测试环境的,测试环境的域账号权限很低,只能访问测试服务器,拿不到生产环境的权限。而且攻击者应该是知道公司有大促,要是直接搞生产环境,很快就会被发现,所以先发钓鱼邮件,拿到办公网的终端权限,然后再慢慢横向移动到生产环境,等大促结束之后再加密,到时候公司就算想恢复业务也来不及,只能付赎金。没想到我们反应太快,两个小时就断网溯源了,打乱了他们的计划。」
这时候运维老周突然喊了一声:「王总,李默,你们过来看这个!」他调出了域控制器的登录日志,发现昨天凌晨三点的时候,有一个域管账号`admin@xingxuan.com`从运营部的一台测试机器登录过域控制器,执行了一次组策略更新,而这个账号的持有人是半年前离职的运维工程师张磊,账号一直没回收,密码还是初始密码`Admin@123`。
「这个就是攻击者的入口。」王磊脸色有点沉,「离职员工的账号不回收,密码还是弱口令,攻击者拿到GitLab的配置文件之后,直接就拿到了这个域管账号的密码,本来他们应该是想用这个账号登录域控制器,部署勒索病毒到所有域成员机器上,但是还没等他们动手,我们就断网了。」
李默这时候才反应过来,这次攻击根本不是偶然的,攻击者提前侦察了星选电商的公网资产,找到了测试环境的GitLab弱口令,拿到了配置文件里的各种密码,然后精心构造了钓鱼邮件,选在在大促前一天动手,就是想一举拿下整个公司的系统,勒索一大笔赎金。要不是EDR及时告警,老周断网果断,王磊处置经验丰富,现在星选电商早就已经瘫痪了。
这时候业务部门的负责人刘峰冲进了SOC,脸都涨红了:「王磊,你们搞什么鬼?断我们运营部的网干嘛?今天是大促前的最后一天,我们要上传商品、调价格、做推广,断网一天损失至少两百万,你们安全部担得起这个责吗?」
王磊没急着反驳,他指了指大屏上的攻击时间线:「刘总,我刚才查了,攻击者已经拿到了域管账号的权限,要不是我们及时断网,再过五分钟他们就会加密域控制器,到时候全公司的系统、服务器、终端全部瘫痪,数据全部被加密,损失的不是两百万,是两千两百万,甚至公司直接破产。你要是不信,我可以把日志给你看,还有攻击者的样本,你可以拿去给任何安全厂商鉴定。」
刘峰愣了一下,他没想到事情这么严重,刚才听运营部的人说只是点了个钓鱼邮件,以为就是普通的病毒,没想到已经涉及到域控制器了。他接过王磊递过来的U盘,上面存了所有的日志和样本,脸色有点尴尬:「那……那现在什么时候能恢复网?运营部的人都在等着呢。」
「再等二十分钟,我们排查完所有感染机器,把后门都清了就恢复。」王磊转头对李默说,「你带两个人去运营部,把那三台感染的机器硬盘拆下来,做镜像备份,然后重装系统,所有感染的机器都要重装,不能只杀毒,你不知道攻击者留了多少后门。」
李默点点头,带了两个安全专员去了运营部,这时候他才发现,办公室里的气氛已经紧张到了极点,运营部的人都在问什么时候恢复网,还有人在抱怨安全部没事找事,小张坐在工位上,脸色苍白,手里还攥着那个点过的邮件附件,看到李默过来,赶紧站起来:「李哥,对不起啊,我不该乱点邮件的。」
「没事,不是你的错,是攻击者太狡猾了。」李默拍了拍他的肩膀,「你先把电脑关了,等我们会来拆硬盘。」
等李默他们拆完硬盘回来,EDR的全网扫描已经结束了,整个公司除了之前那三台运营部的机器,没有其他感染的终端,文件服务器也没有被加密的痕迹,攻击者还没来得及横向移动到文件服务器就被断网拦住了。王磊又让老周查了所有的对外出口流量,发现没有异常的大流量外发,说明攻击者还没来得及窃取数据就被拦住了,这是不幸中的万幸。
晚上七点,所有处置工作都完成了,网也恢复了,业务部门的人终于消停了,但是SOC的灯还亮着。王磊把李默、老周还有安全部的其他几个人叫到会议室,开始做复盘。
「今天这次攻击,本质上是一次定向的供应链式钓鱼攻击,攻击者的目标很明确,就是我们的核心数据,选在大促前一天动手,就是想让我们在业务压力和安全压力之间做选择,如果我们当时为了保业务不马上断网,现在损失会大得多。」王磊在白板上写了今天的攻击链: ```mermaid graph LR A[攻击者侦察公网资产] --> B[攻破测试GitLab弱口令] B --> C[获取配置文件/域账号密码] C --> D[构造仿冒顺丰钓鱼邮件] D --> E[员工点击附件执行恶意程序] E --> F[尝试横向移动连接文件服务器/OA] F --> G[部署勒索病毒加密文件] G --> H[弹出勒索通知索要比特币] ``` 「但是这次攻击也暴露了我们很多问题,」王磊在白板上写了几个点:「第一,邮件网关的规则太松,对仿冒域名、加密压缩包的检测都没有,员工安全意识培训走形式,没人真的会识别钓鱼邮件;第二,账号管理混乱,离职员工账号不回收,弱口令问题严重,没有多因素认证;第三,测试环境和生产环境的权限没有隔离,测试环境的密码能拿到生产环境的权限;第四,我们的EDR规则太粗,只拦已知的恶意进程,对伪装的系统进程没有检测,也没有及时告警横向移动的行为。」
李默听着,手里拿着笔记本记,他之前一直觉得安全就是装个杀毒软件,扫扫漏洞,遇到告警杀个毒就完事了,今天才知道真实的安全事件根本不是这么简单,从告警到处置,每一步都要考虑业务影响、证据保留、溯源分析,还要顶住业务部门的压力,不是会用工具就行的。
王磊这时候转头看向李默:「李默,你进公司三年了,之前处理过上百次告警,你觉得你今天和之前最大的区别是什么?」
李默愣了一下,想了想说:「之前我都是按流程来,告警了就杀毒,上报工单,今天才知道要先留证据,要先看攻击链,不能只看终端上的现象。」
「对,这就是中级安全从业者和初级的区别。」王磊把一张纸贴在白板上,上面写着「中级网络安全从业者核心能力模型」: ``` 📊 中级安全从业者核心能力模型 ├── 1. 技术能力层(基础) │ ├── 网络:掌握TCP/IP协议、常见端口服务、防火墙/IDS/IPS原理、能分析NetFlow日志、抓包分析流量 │ ├── 系统:掌握Windows/Linux系统原理、常见系统漏洞、日志分析(事件日志、系统日志、安全日志)、进程/服务/注册表分析 │ ├── Web:掌握常见Web漏洞(SQL注入、XSS、CSRF、文件上传等)、能使用BurpSuite等工具做渗透测试 │ └── 逆向:掌握常见恶意样本的分析方法,能看汇编、脱壳、分析病毒行为 ├── 2. 分析能力层(核心) │ ├── 日志分析:能从EDR、防火墙、邮件网关、服务器日志里还原攻击链,找到攻击入口和影响范围 │ ├── 威胁情报:能利用威胁情报平台(如微步在线、Virustotal)分析恶意IP、域名、文件的属性 │ ├── 溯源分析:能通过攻击者留下的痕迹(如C2地址、工具特征、社工信息)溯源到攻击者的来源 │ └── 风险评估:能判断攻击的影响范围、业务影响,给出合理的处置方案 ├── 3. 实战能力层(落地) │ ├── 应急响应:能独立完成勒索病毒、数据泄露、网页篡改等常见安全事件的处置,做到先取证、再遏制、再根除、再恢复 │ ├── 攻防演练:能参与红蓝对抗,掌握常见的攻击手法和防御手段,能发现业务系统的真实漏洞 │ ├── 漏洞挖掘:能独立挖掘Web、系统、中间件的漏洞,给出修复方案 │ └── 安全建设:能根据公司的业务情况,给出合理的安全设备、安全策略的优化方案 └── 4. 思维层(进阶) ├── 攻击者思维:能站在攻击者的角度思考,预判攻击者的下一步动作,而不是只站在防御者的角度堵漏洞 ├── 风险意识:能平衡安全和业务的关系,不能为了安全完全不顾业务,也不能为了业务完全放弃安全 └── 复盘思维:每次安全事件之后都能复盘,找到问题,优化流程,避免下次再发生同样的错误 ``` 「你现在处于从技术能力层向分析能力层过渡的阶段,会用工具,但是不会分析,遇到真实事件就慌,不知道从哪下手。」王磊把模型图拍在桌上,「这本书后面的章节,就是按照这个能力模型来写的,从攻击者的视角讲常见的攻击手法,从防御者的视角讲怎么处置和防护,帮你从「工具使用者」变成真正的「攻防实战者」。」
李默看着那张能力模型图,心里突然亮堂了很多,之前他一直觉得自己做了三年安全,什么都会,今天才知道自己连入门都没到,只会按流程走,遇到突发情况根本不知道怎么处理。
这时候老周突然想起一件事:「对了,刚才我们查攻击者的C2地址`45.155.205.12`,用微步在线查了一下,这个IP是LockBit勒索软件团伙的常用C2地址,之前已经有好几起针对电商行业的勒索攻击都是从这个IP发起的,攻击者应该是专门盯着电商行业的,尤其是临近大促的时候,成功