结论先行:告警是提示,证据是判断依据。要回答「他到底从哪进来的」,靠的不是再多一条告警,而是终端上四类基础记录:进程的父子关系、命令行参数、网络连接记录、文件与配置改动。这四样东西在事发时不一定还在——是否留存、留多久、留在哪里,决定了事后能不能还原。
本文只谈出事之后靠哪些记录还原入侵路径,不谈怎么发现攻击、也不谈检测产品怎么选,那些是另一条线。
告警回答不了的那个问题
告警通常说的是「某台机器上有异常行为」。管理者真正关心的是另外三个问题:从哪台机器、哪个应用、哪个账号进来的;进来之后动过什么;还有没有别的机器被同一条路径带进去。
这三个问题都不靠告警回答,靠记录回答。而在国产化替换后的环境里,这件事更容易做不成——终端形态换了、系统版本换了、采集方式也跟着换了,原来那套顺手的排查手段往往在替换后失效,人却没意识到。
四样东西,缺一样就串不起来
| 记录 | 回答什么问题 | 缺了会怎样 |
|---|---|---|
| 进程的父子关系 | 是谁启动了谁——异常进程从哪个父进程分出来的 | 只看到「有个可疑进程」,找不到入口 |
| 命令行参数 | 它被要求做什么——连到哪、执行什么、带什么参数 | 知道有动作,说不出意图与目标 |
| 网络连接记录 | 它跟谁通信——本地地址与外部地址、端口、时段 | 无法判断是否已经外联、外联到哪一层 |
| 文件与配置改动 | 留下了什么——新增的驻留项、被改的配置、被删的记录 | 清不干净,过一段时间又出现 |
这四样合起来才能画出一条线:一个合法进程分出了一个不该有的子进程,参数里带着对外地址,连接记录显示在固定周期回连,同时配置目录里多了一个启动项。单看任何一项都只是「可疑」,四项对齐才成为「已发生」。
三个前提,都是没出事的时候做的
其一,有基线。没有基线,一棵正常的进程树和一棵被污染的进程树看不出区别。基线不必精细,覆盖到「哪类应用通常由谁启动、常连哪些地址、常改哪些目录」这个粒度就够用。
其二,时间对齐。跨主机比对的前提是时钟一致——同一套时间源、同一时区、同一格式。时间错位会让顺序颠倒,排查出相反的结论。
其三,留存位置不在本机。本机日志的读写权限跟着本机管理员走,能改本机的人就能改这段记录。关键终端的记录要往独立通道集中留存,需要动手改的面才从「每台机器」缩小到「留存系统本身」。
还原的时候,先按时间线摆,不先下结论
拿到四类记录之后,省事的顺序是先把时间线摆出来:什么时候出现首个异常、其后每一步发生了什么、影响扩散到哪台机器为止。摆完之后再判断入口与责任。
这一步最容易犯的错是先有结论、再去找支持结论的记录。常见表现是只调出失陷那台机器的日志,其余的都不看。而实际情况往往是:入口在另一台不起眼的机器上,失陷的那台只是被当作跳板。
顺手要把入口堵上,否则还会再来一次
只清理现象、不处理入口,过一段时间同样的事情会重演。所以在还原之后,处置顺序建议固定:先隔离并留存证据,再定位入口(哪个应用、哪个账号、利用了哪一类缺陷),再决定是清理还是重建。
国产化环境里还有一个具体动作容易被漏掉:替换后要重新确认采集与检测能力是否还覆盖得住。某些依赖系统底层能力的采集方式,在部分国产系统版本上装不上或效果打折,这部分资产需要单独列出替代方案,不能默认「换了系统、防护跟着过来了」。
边界与前提
三点说明。其一,本文所述为终端侧事后还原的一般性做法,不针对任何具体产品;文中涉及的能力边界与资源占用口径属参考性指标,须以项目实测为准。其二,留存会涉及员工操作记录的采集范围,范围与告知方式应事先明确并符合内部管理规范,避免与合规要求冲突。其三,记录完整不等于事实完整——只覆盖了部分终端时,完整度再高也说明不了整体情况。
深圳市奇摩计算机有限公司在国产终端与安全交付中,把四类记录的留存位置、保留期与调阅权限作为上线前确认项,替换前后各做一次覆盖核对,避免换完系统才发现采集缺口。预约咨询,可以先盘一遍你现在能还原到哪一步。
