通常,Linux恶意软件在启动后会自行删除,以免文件扫描器和完整性检查发现二进制文件的存在。这也会使得取得二进制文件变得困难,从而增加了取证分析的难度。
然而,在Linux上恢复已删除的进程二进制文件是很容易的,只要该进程仍然在内存中。
在 Linux 系统中,/proc/<PID>/exe
文件是一个特殊的符号链接文件,它指向当前正在运行的进程所执行的可执行文件。即使该可执行文件已经被删除,该符号链接仍然存在,并且可以继续指向被删除的文件。
这是因为 Linux 系统中的文件删除实际上是通过引用计数来处理的。当一个文件被打开或执行时,系统会为该文件增加一个引用计数。只有当该文件的引用计数降为零时,才会将其删除并释放磁盘空间。
所以恢复已删除的进程二进制文件的基本命令很简单。
1
| cp /proc/<PID>/exe /tmp/recovered_bin
|
下面以sleep命令来模拟一个已从磁盘中删除的进程。您可以在自己的Linux系统上安全地运行这一系列命令,以便练习恢复已删除的二进制文件。
1 2 3 4
| cd /tmp cp /bin/sleep x ./x 3600 & rm x
|
1 2 3 4 5 6 7 8 9 10 11 12
| # root @ ubuntu in ~ [16:37:43] $ cd /tmp # root @ ubuntu in /tmp [16:37:45] $ cp /bin/sleep x # root @ ubuntu in /tmp [16:37:45] $ ./x 3600 & [1] 13499 # root @ ubuntu in /tmp [16:37:45] $ rm x # root @ ubuntu in /tmp [16:37:47] $ ls -al /tmp/x ls: cannot access '/tmp/x': No such file or directory
|
可以看到文件确实不存在了,进程还在运行
1 2 3
| $ ps -aux | grep 3600 root 13499 0.0 0.0 9224 748 pts/0 S 16:37 0:00 ./x 3600 root 13540 0.0 0.0 16180 1124 pts/0 S+ 16:38 0:00 grep --color=auto 3600
|
我们ls查看,可以看到文件被标记为删除了
1 2 3 4 5
| $ ls -al /proc/13499/exe lrwxrwxrwx 1 root root 0 7月 21 16:39 /proc/13499/exe -> '/tmp/x (deleted)' # root @ ubuntu in /tmp [16:39:20] $ ls /tmp/x ls: cannot access '/tmp/x': No such file or directory
|
我们用cp恢复
1
| cp /proc/13499/exe /tmp/recovered_bin
|
可以看到文件完好无缺
1 2 3 4 5 6
| # root @ ubuntu in /tmp [16:40:38] $ md5sum /tmp/recovered_bin 2fb28b5c237207b71c89ac6eb5861a5c /tmp/recovered_bin # root @ ubuntu in /tmp [16:40:48] $ md5sum /bin/sleep 2fb28b5c237207b71c89ac6eb5861a5c /bin/sleep
|
假如这正是一个病毒木马,你可以可以在安全的虚拟环境中,使用调试器和ida去分析了。
所以,绝不要轻易杀掉你发现的可疑进程,你可能失去获取病毒木马的机会。
如果系统感染了某种病毒,请将其隔离在网络中,然后慢慢查看。不要急于行动,因为这样会破坏关键数据。
假如你看不到评论,可能是你访问Disqus被墙了,请使用代理访问
文章来源: https://www.giantbranch.cn/2023/07/21/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%B4%BB%E5%8A%A8%E7%9A%84Linux%E6%81%B6%E6%84%8F%E8%BD%AF%E4%BB%B6%E4%B8%AD%E6%81%A2%E5%A4%8D%E5%B7%B2%E5%88%A0%E9%99%A4%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6/
如有侵权请联系:admin#unsafe.sh