在Linux系统中,进程是正在执行的程序的实例。了解系统中常见的、合法的进程,对于日常系统管理和在发生安全事件时进行应急响应 (Incident Response, IR) 至关重要。当可疑活动发生时,能够快速识别异常进程是应急响应的第一步。
常见的合法Linux进程
以下是一些在大多数Linux系统中常见的核心进程和服务进程:
-
init
/systemd
(PID 1): -
systemd
(或init
) 自身不太可能直接成为攻击目标,但攻击者可能会尝试将其启动的子进程替换为恶意程序,或注册恶意服务。 -
检查 systemd
的单元文件 (/etc/systemd/system/
,/run/systemd/system/
,/usr/lib/systemd/system/
) 是否有未经授权的修改或新增服务。 -
systemctl list-units --type=service --state=running
可以查看正在运行的服务。 -
描述: 这是内核启动后执行的第一个用户空间进程,其进程ID (PID) 始终为1。在现代Linux发行版(如Ubuntu 16.04+、CentOS 7+)中, systemd
取代了传统的init
(SysVinit)。 -
作用: 负责启动和管理系统上的所有其他进程和服务,处理系统关机。 -
应急响应关联: -
kthreadd
(通常 PID 2): -
这些进程通常是合法的内核活动。但某些内核级Rootkit可能会伪装成内核线程或注入到内核线程中。 -
异常高的CPU使用率,或者名称看起来可疑(例如,不是方括号包围或者名称拼写错误)的内核线程,需要警惕。 -
描述: 内核线程创建守护进程。 -
作用: 负责管理和创建其他内核线程。其子线程通常以 [kworker/...]
,[ksoftirqd/...]
等形式出现,处理中断、工作队列、定时器等内核级任务。 -
应急响应关联: -
sshd
: -
检查是否有未经授权的 sshd
进程,或监听在异常端口的sshd
实例。 -
分析 auth.log
或secure
日志,查找可疑的登录尝试、成功的未授权登录、来自异常IP的连接。 -
攻击者可能会替换 sshd
二进制文件,或利用其漏洞。 -
描述: OpenSSH服务器守护进程。 -
作用: 允许通过SSH协议进行安全的远程登录和命令执行。 -
应急响应关联: -
cron
/crond
: -
攻击者经常使用cron job来实现持久化,定期执行恶意脚本或连接到C&C服务器。 -
检查系统级crontab ( /etc/crontab
,/etc/cron.d/
,/etc/cron.hourly/
, etc.) 和用户级crontab,查找可疑的、未经授权的条目。 -
日志通常在 /var/log/syslog
或/var/log/cron.log
中。 -
描述: 任务计划守护进程。 -
作用: 根据预设的时间表(crontab文件)定期执行指定的命令或脚本。 -
应急响应关联: -
rsyslogd
/syslog-ng
/journald
: -
这些进程对于日志记录至关重要。如果它们被停止或配置被篡改,可能会导致日志丢失,阻碍调查。 -
攻击者可能会尝试停止日志服务或修改其配置以避免被记录。检查其运行状态和配置文件 ( /etc/rsyslog.conf
,/etc/systemd/journald.conf
)。 -
描述: 系统日志守护进程。 journald
是systemd
的一部分,负责收集和管理日志。 -
作用: 收集来自内核、系统服务和应用程序的日志消息,并将其写入到相应的日志文件中。 -
应急响应关联: -
dbus-daemon
/dbus-broker-launch
: -
虽然D-Bus本身是合法的,但它也可能被恶意软件滥用进行进程间通信或权限提升。 -
异常的D-Bus活动或相关的错误日志可能需要关注。 -
描述: D-Bus消息总线守护进程。 -
作用: 提供应用程序间的通信机制 (IPC)。 -
应急响应关联: -
NetworkManager
/systemd-networkd
/dhclient
/dhcpcd
: -
检查网络配置是否被恶意修改(例如,DNS被指向恶意服务器,添加了可疑的路由)。 -
攻击者可能会运行自己的DHCP服务或进行ARP欺骗。 -
ifconfig
/ip addr
,route -n
/ip route
,cat /etc/resolv.conf
等命令用于检查网络状态。 -
描述: 网络管理相关的服务。 -
作用: 负责配置和管理网络接口、IP地址、DNS解析、路由等。 -
应急响应关联: -
Web服务器进程 (如
apache2
,httpd
,nginx
,lighttpd
): -
Web服务器是常见的攻击目标。检查其配置文件、访问日志和错误日志,寻找Webshell、SQL注入、目录遍历等攻击迹象。 -
异常的子进程、高资源消耗或监听在非标准端口的Web服务进程需要调查。 -
描述: 如果系统作为Web服务器运行,这些是常见的Web服务进程。 -
作用: 处理HTTP/HTTPS请求,提供网页内容。 -
应急响应关联: -
数据库服务进程 (如
mysqld
,mariadbd
,postgres
): -
检查数据库日志,查找未授权的访问、可疑查询(如数据窃取)、权限变更。 -
异常的数据库连接或高负载。 -
描述: 数据库服务器进程。 -
作用: 存储和管理数据。 -
应急响应关联: -
agetty
/mingetty
/login
: -
通常这些是正常进程。但如果发现大量此类进程或在非预期终端上活动,可能表明有问题。 -
描述: 处理终端登录。 -
作用: 在物理控制台或串行终端上显示登录提示符,并处理用户登录过程。 -
应急响应关联:
应急响应中分析进程的关键点
当怀疑系统被入侵时,对应急响应团队来说,对进程的分析是核心工作:
-
识别异常进程:
-
未知进程: 出现不认识的、非系统标准或非管理员安装的进程。 -
伪装进程: 进程名与合法进程相似但有细微差别(例如, scvhost
而非svchost
——虽然这是Windows的例子,但Linux上也可能出现类似伪装,如systemd-daemon
而非systemd
)。 -
资源占用异常: 某个进程CPU或内存占用率持续异常高。 -
父子关系异常: 例如,一个通常由 systemd
启动的进程,其父进程却是一个用户shell。 -
运行路径可疑: 进程的可执行文件位于 /tmp
,/var/tmp
或用户家目录等非标准路径。 -
用户身份可疑: 一个通常以特定服务用户运行的进程,却以root用户身份运行,或者反之。 -
常用工具进行进程分析:
-
ps aux
,ps faux
,pstree
: 查看当前进程列表、父子关系、用户等。 -
top
,htop
: 实时监控进程活动和资源占用。 -
lsof -p <PID>
: 查看指定PID进程打开的文件和网络连接。 -
netstat -tulnp
或ss -tulnp
: 查看监听的网络端口及其对应的进程。 -
cat /proc/<PID>/cmdline
: 查看进程的完整命令行参数(注意cmdline
中的参数是以空字符分隔的)。 -
cat /proc/<PID>/exe -> /path/to/executable
: 查看进程对应的可执行文件路径。 -
strings /proc/<PID>/exe
: 查看可执行文件中的可打印字符串,可能发现C&C地址等线索。 -
strace -p <PID>
: 追踪进程的系统调用。 -
gdb -p <PID>
: 附加到进程进行调试(高级技巧)。 -
关联日志分析:
-
一旦发现可疑进程,立即查找其在系统日志 ( syslog
,auth.log
)、安全审计日志 (audit.log
)以及应用日志中的相关记录,以确定其启动时间、来源、行为等。 -
样本获取与分析:
-
如果确定某个进程是恶意的,应尝试获取其可执行文件副本 ( cp /proc/<PID>/exe /tmp/malware_sample
) 进行离线分析(如病毒扫描、逆向工程)。
结论
熟悉Linux系统中的常见合法进程是进行有效应急响应的基础。在安全事件发生时,能够快速区分正常与异常,并通过工具深入分析可疑进程的属性和行为,结合日志信息,才能准确地定位问题、评估影响并采取恰当的处置措施。持续监控和定期审计进程活动也是主动防御的重要组成部分。
原文始发于微信公众号(格格巫和蓝精灵):Linux常见进程解析及其在应急响应中的重要性
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论