TL;DR:我知道一个程序创建然后删除/tmp
. 我怎样才能拦截他们进行检查?
上下文:
.jar
有一个我不信任的特定文件;出于某种原因,它的源代码包含一个 ftm 方法并具有建立连接的能力,这从输出中与网络相关的系统调用中可以明显看出strace
(当我指的是连接时,我不是指 unix 域套接字,它是AF_INET6
)。我使用 Wireshark 进行了检查,发现在使用过程中没有传出 TCP 或 UDP 连接。
但是,我仍然不太相信它。从我的输出中strace
我看到它正在创建临时文件,/tmp
然后将它们删除。有没有办法拦截这些文件来检查它们的内容?
更好的是,如果您想对恶意 Java 二进制文件进行逆向工程,而不是尝试拦截文件,请反编译可疑
.jar
文件。为此,您可以使用CFR - 另一个 java 反编译器
不乏替代品,但 CFR 项目似乎维护得很好,有 2018 年的更新。
免责声明:自 2005 年以来,我没有对 Java/JAR 二进制文件进行逆向工程
注意:在重复问题上发布了改进的解决方案
从阅读如何在创建后直接访问临时文件?我有了使用
inotify
和创建硬链接到文件本身的想法。这当然是一种竞争条件,因为在创建硬链接之前可以取消链接文件,但是我确实设法恢复了应用程序正在创建的临时文件中的数据。这是一个短管道放在终端选项卡 A 中,终端选项卡 B 运行实际命令:3个缺点是:
awk
我很快就为一个特定的文件拼凑起来;但是解析输出并将路径名与文件名连接起来的更通用和灵活的awk
命令将不得不花费一些时间来解析行,将所有内容传递给变量,然后传递给,这可能会回到上一个要点 - 到时间解析完成,没有要链接的文件。inotifywatch
$1
$3
sprintf()
system()
inotify
Python 模块(这可能是我将来会做的事情)。至于有问题的文件,它显示为某种形式的二进制数据,带有循环
0...sun.rt._sync_Inflations
和0...sun.rt._sync_Deflations
字符串(可能与Java 多线程有关)。但就这个问题而言,这是无关紧要的——我们已经有了。我唯一想要的是获取文件本身。