结论先行:有一类攻击者进入终端之后,先做的是把防护软件处理掉,再开始干活。它不写文件、不落地可执行程序,靠进程注入和内存执行留在机器上,用比对硬盘文件的方式基本查不出来。要发现这类行为,需要换一层去看:进程做了什么、加载了什么、跟外面通信的节奏是什么样的。
“留下一个文件”这一步可以被省掉
常规的恶意程序要落地成文件,才有东西可以被扫描、被比对、被删除。无文件攻击走的是另一条路:把代码直接写进一个合法进程的内存里执行,硬盘上因此没有可查的样本。公开的终端防护方案资料里,把无文件攻击、内存马与脚本后门变种单列为检测项,原因就在这里——按文件找的思路对它们无效。资料同时提到一个现象:攻击者入侵后往往优先卸载终端上的防护软件,这类程序要处理掉的就是“看得见文件的那一层”能力。
应用服务器与中间件是这类手法常见的落脚点。原因不难理解:它们长期对外提供服务、权限不低、配置项多,而很多企业的注意力集中在业务功能上,对它的进程与内存状态缺少基线。
痕迹留在哪几处
不落文件不等于没有痕迹,只是痕迹换了几处:
- 进程层。合法进程出现异常的子进程关系、被注入的迹象,或加载了非常规的模块。
- 内存层。出现同时可读、可写、可执行的内存区域,或运行期动态生成的代码段。
- 网络层。固定周期的外连、固定端口、非常规的域名解析方式,以及“业务已经停了它还在连”这类不一致。
- 配置与日志层。中间件配置被改动,访问日志被清理或出现中断。
三条可行的发现路径
单独看任何一条都容易漏,三条合起来才形成覆盖面。
- 终端侧行为检测。不看文件指纹,看行为:谁启动了谁、谁往谁的内存里写了东西、谁在提权。这条路径需要基线,否则误报会盖住真实线索。
- 网络与流量侧。周期性回连是这类载荷维持控制的方式,周期本身就是特征。把它和正常业务的访问节奏区分开,可以把排查范围缩小到几台机器。
- 服务端与中间件侧专项检测。针对脚本后门与内存马的专项检查,覆盖主流中间件,重点看运行期注入的代码,而不是静态文件。
为什么清干净比重装还难
文件型的恶意程序,删掉文件、重启通常就结束了。内存型的处置要复杂一层:注入的代码可能随宿主进程重启而消失,也可能被某个驻留项在下次启动时重新生成。只删掉表面文件、不做入口封堵,过一段时间还会出现。
因此处置顺序建议固定下来:先隔离并留存证据,再定位入口(哪个应用、哪个账号、利用了哪个漏洞),再决定是清理还是重建。跳过入口这一步,后面还要再来一次。
边界与前提
行为检测会产生误报,没有基线的新环境在上线初期尤其明显,需要预留一段观察期。部分检测能力依赖内核层权限与受支持的系统版本,老旧终端上可能装不上或效果打折,这部分资产要单独列出替代方案。此外,非生产环境与个人设备是否纳入检查范围需要事先明确,否则覆盖率数字会虚高。
落到企业侧的三件事
先有一份“哪些机器在对外提供服务”的清单;再积累一段正常运行时的行为基线;再写清楚发现可疑内存级驻留时的处置边界。三件事都不复杂,但都需要在没有事件的时候做。奇摩在帮客户梳理终端与内网安全时,通常把这三项列为前置动作,再谈具体的检测手段选型。
需要梳理应用资产清单与处置预案,欢迎预约咨询。
