Linux应急响应思路和技巧:进程分析篇
日期:2024年07月03日 阅:61
目录
应急响应( Incident Response/ Emergency Response )是指一个组织为了应对各种突发事件发生所做的准备工作以及在事件发生后所采取的措施。本文总结自网宿演武安全实验室安全应急响应团队日常工作实践,主要介绍在Linux服务器环境出现明确或疑似的被入侵表现之后,安全人员如何在服务器系统中确认入侵结果,执行入侵后的溯源取证、入口定位、行为还原、后门定位等工作,以便及时清理病毒后门、加固系统,降低入侵影响。
在实际安全事件处理中,应急响应流程从处置过程可总结为调查、评估、抑制、分析、恢复、报告这6个阶段:
基于Linux系统一切皆文件的特性和网宿应急团队历史应急实践,Linux系统服务器入侵事件排查可从4个方面入手分析:
这4个分析维度相互依赖、相互补充,通过综合分析这些维度,可以更全面地理解和响应安全事件,构建起对整个安全事件脉络的完整理解。
下图为Linux应急排查思维导图,本篇先从进程方面进行介绍。
进程是木马、病毒或后门程序运行的体现,如果能够定位到某恶意进程,则可以该进程作为突破,定位出一系列的恶意行为。
入侵事件可分为两种场景:无rootkit行为和有rootkit行为。rootkit攻击技术是指恶意软件隐藏自身或指定目标进程、网络、文件等信息从而避免入侵被发现的行为。rootkit攻击技术又分为用户态的rootkit和内核态的rootkit,用户态的rootkit主要手法有系统命令替换、进程注入、动态库劫持等;内核态的rootkit比较复杂,主要利用内核模块LKM实现,这里先不做展开。一种粗略判断系统命令是否被替换的方法是利用软件包校验,如centos上,利用rpm -Vf [系统命令所在路径],若对应的系统命令出现S.5….T.,则表明系统命令已被修改。一种粗略判断是否存在LKM rootkit的方法是查看/sys/module目录下是否有加载可疑内核模块,当然LKM rootkit可隐藏自身加载行为。可借助其它rootkit查杀工具判断服务器是否存在rootkit,如chkrootkit、rkhunter等。
两种场景所需排查工具不同,无rootkit行为的攻击事件,用系统自带的命令或工具基本就能定位清楚,有rootkit行为的攻击需要借助一些专业化的工具,比如busybox、LiME+Volatility内存取证。无rootkit情况下,常用排查工具有系统自带的top、ps、lsof、pstree、strace、ltrace等,还可查看/proc/[pid]目录下各项进程相关信息进行排查。有rootkit情况下,常用的系统命令可能被替换,影响排查结果,需要借助一些专业化的工具,如使用busybox自带的ps、top、lsof等工具。busybox是一个集成了三百多个常用Linux命令和工具的软件,从简单的,如ls、cat、echo等,到复杂的,如grep、find、mount、telnet等,有Linux工具里的瑞士军刀之称。安装后在busybox后直接带上对应命令即可执行,如busybox ls。下载地址:https://www.busybox.net/downloads/busybox-x.x.x.tar.bz2
关注高mem内存占用和cpu占用高的进程。如果mem占用高,则可能为内存型DoS病毒。如果cpu占用高,且进程为多线程,并伴有外连行为,则大概率为挖矿木马;如果外连行为数量多,且连接端口为常见远程服务端口,则大概率为横向扫描工具;如果外连行为数量多,连接类型和端口各异,则大概率为僵尸网络DDoS病毒
关注父进程pid非2的带“[]”的进程,一般为恶意进程伪装成内核进程。[kthreadd]进程(pid = 2)由idle通过kernel_thread创建,是所有内核进程的父进程。内核进程的命名规则都是[xxx],用中括号括起来的,带中括号的进程的父进程正常情况下应该是2(也就是[kthreadd]),而用户态的进程正常情况下不会这样命名。
关注进程路径带deleted标识的进程,特别是打开文件中也有大量伴有deleted标识的情况,恶意进程通常启动后即刻删除自身程序,这类进程较为可疑。
可开启audit审计来追踪异常进程行为,再根据日志进行进一步的深入分析。可监控setuid/setreuid/setresuid/setgid/setregid/setresgid系统调用提权行为,异常shell提权行为,异常更新密码行为,系统命令异常修改行为,系统关键配置文件异常修改行为(如selinux配置、环境变量脚本、sudo特权配置、系统服务启动脚本),关键密码文件异常修改行为,定时任务异常修改行为,内核模块异常操作行为,异常编译行为,敏感目录下的程序执行行为,关键日志文件异常修改行为(特别是非正常回滚的清空行为),异常ptrace进程注入行为,异常登录行为,异常服务启动或停止行为(如停止防火墙服务、停止系统日志管理服务),还可设置蜜罐文件监控其异常清除或修改行为,具体规则和分析方法将在日志分析篇列出。如果存在怀疑的进程,可加入-F pid=[可疑进程pid]来过滤出关心进程。auditctl使用参考链接:https://linux.die.net/man/8/auditctl
基于容器轻量级、灵活性、快速部署与可扩展性、环境一致性与隔离性、持续集成与持续部署(CI/CD)、可降低基础设施成本等优势的展现,越来越多的企业选择容器技术来帮助自身提升竞争力,攻击者也逐渐将攻击视线移向容器。当入侵事件产生时,如果服务器上有搭建容器环境,那么可以关注下是否存在配置了恶意进程启动命令的容器,如下为攻击者设置了恶意容器启动进程命令的示例,容器创建时将宿主机/目录挂载至容器/host目录,然后拷贝ssh后门公钥至宿主机,通过访问127.0.0.1从而进行容器逃逸,之后下载TeamTNT黑产团队挖矿木马并执行。
可追踪恶意进程启动用户,定位入侵入口。如下,恶意进程启动用户为postgres,由此追踪至postgresql组件,根据日志定位出postgres有弱口令爆破痕迹,以及服务器PostgreSQL使用版本存在任意代码执行漏洞(CVE-2019-9193,影响9.3-11.2版本)。
恶意程序通常存在守护进程,多个进程间互相守护,kill掉后会自动重启,可利用audit审计,层层向上定位守护进程,最终定位到启动初始恶意进程的进程,可能就可以定位到入侵入口。还可利用audit审计监控落盘的恶意程序文件,层层向上可能会定位到最初存在rce的进程。还可以利用audit审计监控下载相关(如curl、wget)操作命令,定位到最初调用下载的进程。
根据可疑进程特征,或病毒引擎检测结果,查找病毒所属家族、黑产组织、类似样本分析资料,根据网上资料和样本分析结果提供的入侵方式(如利用的组件漏洞、web漏洞、爆破、未授权访问等),对照当前服务器是否存在对应的有漏洞组件、网站是否存在对应的漏洞、弱密等,进行有针对性地进一步验证。
进程分析主要目标是能够完整定位服务器上存在的恶意进程并进行取证,确认服务器是否被黑和被黑后产生什么活动和后果,分析出恶意进程之间的调用和守护关系,以及大致了解恶意进程所采用的攻击技术和所进行的恶意活动(如伪装、隐藏、性能消耗等),以便于后续结合其它方向的应急排查结果做进一步的分析,对样本分析、病毒清理和特征提取有辅助作用。以下总结了Linux应急排查进程分析过程中的一些排查命令。
下一篇我们将介绍Linux应急排查的文件分析部分。Linux系统“一切皆文件”的设计哲学提供了更直观透明的与系统交互的方式,同时也方便我们更快速准确地排查安全问题,因为攻击本身与系统的交互也需要通过文件,持久化、防御绕过、恶意样本落盘、提权等攻击阶段都会涉及到文件。相信在下一篇,通过对文件内容分析、文件权限&属性分析、文件修改&创建活动分析、恶意样本分析等的介绍,能够对安全事件应急排查有更深入的了解。
基于全球广泛分布的边缘节点,依托10余年安全运营和海量攻防数据,「网宿安全」构建从边缘到云的智能安全防护体系,提供DDoS防护、Web应用防护、爬虫管理、远程访问安全接入、安全SD-WAN、主机安全等全方位的安全产品及服务,覆盖云安全、企业安全和安全服务等领域,助力企业构筑基于零信任和安全访问服务边缘(SASE)模型的全新安全架构,护航网络安全,为数字时代保驾护航。 网宿科技(300017)成立于2000年,2009年于创业板首批上市,是全球领先的边缘计算及安全服务商,业务遍及全球70多个国家和地区。公司始终致力于提升用户的数字化体验,满足用户随时随地、安全、可靠的数据处理及交互需求。