如何从活动的Linux恶意软件中恢复已删除的二进制文件
2023-7-21 08:0:0 Author: www.giantbranch.cn(查看原文) 阅读量:2 收藏

发表于 |

通常,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