huasec 05月14日 18:26
应急响应之Linux进程介绍
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入剖析了Linux系统中多个关键进程,包括init、kthreadd、systemd-journald等,详细介绍了它们的功能、启动方式、父进程以及用户账户。同时,文章还探讨了如何识别恶意进程,例如通过检查进程路径、命令行、CPU资源消耗、网络连接以及已删除的二进制文件等方法,帮助读者更好地理解Linux系统运作机制,提升系统安全防护能力。是一篇系统安全运维人员不错的参考资料。

⚙️ Systemd作为Linux系统的第一个进程(PID=1),负责内核初始化设备、挂载根文件系统,并启动其他系统服务,是理解系统启动过程的关键。

🛡️ 通过检查进程的路径、父进程ID、启动时间、用户账户以及资源消耗情况,可以有效识别伪装成系统进程的恶意软件,例如,如果内核进程拥有进程路径或关联的二进制文件,则可能存在风险。

📚 procfs虚拟文件系统提供了丰富的进程信息,包括进程路径、虚拟地址空间、环境变量、文件描述符、I/O统计等,是分析进程行为的重要工具。

🗑️ 即使恶意软件在启动后自行删除,也可以通过检查/proc/*/exe目录下的已删除二进制文件,判断其是否仍在运行,从而发现潜在威胁。

原创 花十一一 2021-09-07 22:00


01


Systemd


路径:/usr/lib/systemd/systemd

父进程:无
进程 ID:1

用户帐户:root

启动时间:跟随系统启动时运行

描述:内核初始化设备,挂载根文件系统,然后运行/sbin/init,被指定为系统运行的第一个进程(PID = 1)。init 是 Initialization 的缩写。init 是一个守护进程,在计算机启动后启动并持续运行,直到它关闭。事实上,init 是计算机启动后启动的第一个进程,使其直接或间接地成为其他所有正在运行进程的父进程,因此通常被分配"pid=1"。systemd 是系统守护进程,以 UNIX 约定命名,在守护进程的末尾添加d,与 init 类似。


02



[kthreadd] 


路径:无

父进程:无
进程 ID:2

用户帐户:root

启动时间:跟随系统启动时运行

描述:[kthreadd] 有许多子进程,例如[migration/0]是内核的一部分,主要作用是用来执行进程迁移操作。[crypto] 提供对内核加密 API 的访问,该 API 旨在对加密和未加密数据之间的转换。[kworker/0:0]是内核工作线程的占位进程,它执行内核的大部分实际处理,特别是在有中断、定时器、I/O 等的情况下。内核线程不是 init 或 systemd 的子线程,因为它们可以在所有用户空间进程之前启动。它们通常用于管理硬件,这就是为什么它们由内核直接处理并具有高优先级的原因。



03


systemd-journald


路径:/usr/lib/systemd/systemd-journald
父进程:Systemd
进程ID:随机
父进程ID:1
用户帐户:root
启动时间:跟随系统启动

描述:systemd-journald 是一个收集和存储日志数据的系统服务。



04



lvmetad


路径:/usr/sbin/lvmetad
父进程:Systemd
进程 ID:随机
父进程 ID:1
用户帐户:root
启动时间:系统启动后
描述:lvmetad是LVM的元数据缓存守护程序。守护程序从udev规则(必须安装lvmetad才能使LVM正常工作)接收通知。通过这些通知,lvmetad具有系统中可用卷组的最新且一致的映像。默认情况下,LVM不使用lvmetad(即使正在运行)。



05



systemd-udevd


路径:/usr/lib/systemd/systemd-udevd
父进程:Systemd
进程 ID:随机
父进程 ID:1
用户帐户:root
启动时间:系统启动后
描述: systemd-udevd是监听内核发出的设备事件,并根据udev规则处理每个事件。



06



auditd


路径:/sbin/auditd
父进程:Systemd
进程ID:随机
父进程ID:1
用户帐户:root

启动时间:系统启动后

描述:auditd(或 auditd 守护进程)是Linux审计系统中用户空间的一个组件,其负责将审计记录写入磁盘。


07



dbus


路径:/usr/bin/dbus-daemon
父进程:Systemd
进程ID:随机
父进程ID:1
用户帐户:dbus
启动时间:系统启动后

描述:DBus作为一个轻量级的IPC被越来越多的平台接受,用于进程间通信或进程与内核的通信。

DBus进程间通信主要有三层架构:

1.底层接口层:主要是通过libdbus这个函数库,给予系统使用DBus的能力。 

2.总线层:主要Message bus daemon这个总线守护进程提供的,在Linux系统启动时运行,负责进程间的消息路由和传递,其中包括Linux内核和Linux桌面环境的消息传 递。总线守护进程可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。 

3.应用封装层:通过一系列基于特定应用程序框架将DBus的底层接口封装成友好的Wrapper库,供不同开发人员使用。比如libdbus-glib, libdbus-python。




08



systemd-logind


路径:/usr/lib/systemd/systemd-logind
父进程:Systemd
进程 ID:随机
父进程 ID:1
用户帐户:root
启动时间:系统启动后

描述:
systemd-logind 是一个管理用户登录的系统服务。它负责:



09



rngd


路径:/sbin/rngd
父进程:systemd
进程ID:随机
父进程ID:1
用户帐户:rngd
开始时间:系统启动后

描述:为硬件设备和内核检查和提供随机数据,并确保随机数正确。


10



gssproxy


路径:/usr/sbin/gssproxy -D

父进程:systemd
进程 ID:随机
父进程 ID:1
用户帐户:root
启动时间:系统启动后




11



chronyd


路径:/usr/sbin/chronyd
父进程:systemd
进程ID:随机
父进程ID:1
用户帐户:chrony
启动时间:系统启动后

描述:chrony是两个用来维持计算机系统时钟准确性的程序,这两个程序命名为chronyd和chronyc。chronyd是一个在系统后台运行的守护进程。他根据网络上其他时间服务器时间来测量本机时间的偏移量从而调整系统时钟。对于孤立系统,用户可以手动周期性的输入正确时间(通过chronyc)。在这两种情况下,chronyd决定计算机快慢的比例,并加以纠正。chronyd实现了NTP协议并且可以作为服务器或客户端。chronyc是用来监控chronyd性能和配置其参数的用户界面。他可以控制本机及其他计算机上运行的chronyd进程。



12



dhclient


路径:/sbin/dhclient
父进程:systemd
进程 ID:随机
父进程 ID:1
用户帐户:root
启动时间: 系统启动后

描述:DHCP 客户端


13



 postfix/master


路径:/usr/libexec/postfix/master
父进程:systemd
进程 ID:随机
父进程 ID:1
用户帐户:postfix
启动时间:系统启动

描述:postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。当Postfix被启动后,首先启动的是master daemon,它主导邮件的处理流程,同时也是其他组件的总管。在处理邮件的过程中,master会启动对应功能的组件来处理相关事宜,被master启动的组件,在完成交付的工作之后会自行结束;或者,如果组件的处理时间超过时限,或是工作量到达预定限度,组件也会自行结束。master daemon会常驻在系统中,当管理员启动它时,它从main.cf和master.cf这两个配置文件取得启动参数。



14



  postfix/pickup


路径:/usr/libexec/postfix/pickup

父进程:systemd
进程 ID:随机
用户帐户:postfix
启动时间:系统启动后

描述:监视maildrop/子目录,读出新邮件,交给cleanup组件。




15



 postfix/qmgr


路径: /usr/libexec/postfix/qmgr

父进程:systemd

进程 ID:随机
用户帐户:postfix
启动时间:系统启动后

描述:队列管理器。各个postfix组件之间的合作依靠队列交换邮件。



16



rsyslogd


路径:/usr/sbin/rsyslogd
父进程:systemd
进程 ID:随机
父进程 ID:1
用户帐户:root
启动时间:系统启动后
描述:rsyslog是一个开源的软件,它负责写入日志,记录绝大部分的日志,例如:系统日志、认证ssh日志、计划任务at,cron等日志。rsyslogd是日志服务进程,配置文件位于/etc/rsyslog.conf ,负责定义处理日志消息的规则。




17



atd


路径:/usr/sbin/atd
父进程:systemd
进程 ID:随机
父进程 ID:1
用户帐户:root
启动时间:在系统启动的
描述:是linux计划任务的守护进程。


18


crond


路径:/usr/sbin/crond
父进程:systemd
进程 ID:随机
父进程 ID:1
用户帐户:root
启动时间:系统启动后
描述:crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。



18


agetty


路径:/sbin/agetty
父进程:systemd
进程 ID:随机
父进程ID:1
用户帐户:root
开始时间:系统启动后

描述:agetty是一个Linux版本的getty。getty 是"get tty"的缩写,是一个运行在主机上的 Unix 程序,用于管理物理或虚拟终端以允许多用户访问。


19


sshd


路径:/usr/sbin/sshd
父进程:systemd
进程ID:随机
父进程ID:1
用户帐户:root
开始时间:系统启动后
描述:sshd(secure shell)服务使用ssh协议远程开启其他主机shell的服务。






20


恶意进程识别


(1)内核进程([])没有进程路径,与它关联的二进制文件和PPID都为零,如果有路径和关联的二进制文件,则该进程是可疑的。

(2)攻击者通常会伪装系统进程来命名恶意进程,可以检查进程命令行,如果进程路径指向如/tmp等,父进程和进程启动的时间异常,进程是否由预期的用户启动,是否消耗高CPU资源(可能是矿机),或存在不正常的网络连接。

(3)procfs 是一个虚拟文件系统,包含有关进程和其他系统信息的信息。

进程路径:

    /proc/<PID>/exe

    查看进程的虚拟地址空间:

      /proc/<PID>/maps

      进程环境变量:

        /proc/<PID>/environ

        文件描述符,查看进程打开/处理了哪些文件

          ls -al /proc/<PID>/fd

          进程状态:

            /proc/PID/stat/proc/PID/status

            进程的I/O统计:

              /proc/PID/io

              当前工作目录:

                /proc/PID/cwd

                进程hash:

                  sha256sum /proc/$pid/exe

                  (4)有时恶意软件会在启动后自行删除,检查已删除的二进制文件是否仍在运行。

                    ls -alR /proc/*/exe 2> /dev/null | grep deleted

                    阅读原文

                    跳转微信打开

                    Fish AI Reader

                    Fish AI Reader

                    AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

                    FishAI

                    FishAI

                    鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

                    联系邮箱 441953276@qq.com

                    相关标签

                    Linux进程 Systemd 恶意进程识别 系统安全
                    相关文章