在 Windows 中,自动运行工具对于取证调查人员来说是一个非常有用的工具,可以帮助他们找到可疑的启动可执行文件并过滤良性的可执行文件。
但我在Linux中做不到这样的好事情,那么实现自动运行在查找可疑启动应用程序方面的最简单方法是什么? linux下有类似的工具吗?
基本上可以说,你是一名取证调查员,你有一个像 Ubuntu 这样的 Linux 系统,并被要求找到可疑的启动可执行文件,你将如何做以及你将使用什么工具来加快进程?
答案1
基本上可以说,你是一名取证调查员,你有一个像 Ubuntu 这样的 Linux 系统,并被要求找到可疑的启动可执行文件,你将如何做以及你将使用什么工具来加快进程?
您可以使用以下命令检查机器上执行的每个程序 福克斯塔。由于在任何给定时间产生的进程数量巨大,输出将包含大量噪音,但您通过此获得的列表应该是详尽的。 [0]
假设您正在分析的系统上的内核具有
NETLINK_CONNECTOR
功能已启用并且您的 forkstat 二进制文件不会受到损害,例如您自己编译和部署它。您必须决定希望它多早开始监听事件。创建一个单元文件并挂接到系统启动
在适当的时刻,例如basic.target
:
# cat /etc/systemd/system/forkstat.service
[Unit]
Description=process sniffer
[Service]
ExecStart=/sbin/forkstat
[Install]
WantedBy=basic.target
通过启动服务并使用 观察结果来验证其是否有效
journalctl -f
。然后,forkstat 输出将被捕获在系统日志中。请注意,这是启动过程中的早期阶段,甚至在根文件系统可用之前,因此要使其起作用forkstat 二进制文件必须在 initrd 中可用。如何将其添加到 initrd 取决于发行版。对于 Arch 来说,就像将其添加到BINARIES=…
中的行 一样简单mkinitcpio.conf
。
启用服务,重建initrd,重新启动。新启动后,您可以使用以下命令journalctl -b
查看捕获的事件:
Dec 04 10:12:17 zombo.com systemd[1]: Started process sniffer.
Dec 04 10:12:17 zombo.com forkstat[318]: Time Event PID Info Duration Process
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 exec 321 [/sbin/modprobe -q -- iptable_nat]
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 1 parent /sbin/init
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 322 child /sbin/init
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 exit 313 0 0.610s /usr/sbin/rpc.idmapd
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 2 parent [kthreadd]
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 323 child [kthreadd]
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 265 parent /usr/lib/systemd/systemd-udevd
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 324 child /usr/lib/systemd/systemd-udevd
您最感兴趣的是parent
和child
行,它们指示哪个进程执行了哪个二进制文件。我将向您推荐forkstat 联机帮助页
了解详情。
注意:由于这是对进程生成活动的详尽概述,因此日志可能会变得相当大。确保将日志限制设置为适当大的值,以适应生成的大量日志消息。
另请注意,此输出的准确性取决于值得信赖的内核。如果您怀疑内核本身已受到 Rootkit 形式的破坏,您可能需要首先部署一个已知的值得信赖的内核。
[0] 在一个非常繁忙的系统上,某些事件可能会被丢弃,这是 forkstat 使用的底层 netlink API 的产物。
答案2
因此,来自 Windows 的用户会框定你对事物的看法。我也曾走过同样的路。
首先是了解 Linux 如何自动启动。您需要了解 init/systemd,并且需要注意 Linux 有多个 DE(桌面环境)可供选择,尽管家庭用户目录中有一些常见的管道,例如 KDE:https://docs.kde.org/trunk5/en/kde-workspace/kcontrol/autostart/index.html
因此,考虑到使用 Linux 文件系统和配置数据是多么容易,通过 CLI 进行查询是很基本的,并且不一定需要图形客户端。
鉴于这对您来说是新事物,我建议您研究一下这个项目,它可以为您自动执行一些任务:https://cisofy.com/lynis/< 这是 Linux 上的 rootkit Hunter (rkhunter) 的作者,这是一个很棒的工具,也是您在审核期间可能希望考虑的其他内容,即流氓可执行文件和rootkit。