我目前正在阅读“恶意软件分析师的食谱和 DVD”。其中有一章“动态分析”,还有一些关于挂钩和监视进程的 API 调用的方法,但它是针对 Windows 的。
我想做同样的事情,就像食谱 9-10 所解释的那样,但是对于 Linux。图9-10称为“捕获进程、线程和图像加载事件”。在本收据中,它展示了“如何实现一个驱动程序,当您的恶意软件样本执行时系统上发生任何事件时,该驱动程序会向您发出警报”。它使用Windows驱动程序工具包(WDK)的API函数来调用用户定义的回调函数。它使用回调函数:
- 进程创建回调函数调用 PsSetCreateProcessNotifyRoutine(...)
- 线程创建回调函数调用 PsSetCreateThreadNotifyRoutine(...)
- 图像加载回调函数称为 PsSetLoadImageNotifyRoutine(...)。
当任何事件发生时,它会将它们显示为调试消息,然后可以在 DebugView 等中查看。
Windows 似乎有很好的文档,而且很容易找到这方面的信息,但我在查找 Linux 的信息时遇到了一些问题。
我找到了一些关于驱动程序的一般介绍和一个关于挂钩的介绍,但我仍然没有找到任何不那么一般的或至少更专注于恶意软件分析的内容。
我很高兴获得有关此主题的进一步阅读的提示或推荐的教程。
答案1
答案2
最简单的方法是使用 运行恶意软件样本strace
。
strace
在跟踪下运行提供的命令并输出(到标准错误,或者如果需要,则输出到文件)应用程序调用的所有系统调用及其参数。
例如,要捕获创建新进程或新线程的所有调用,可以运行:
strace -e trace=clone,fork -o trace.log -f malware
-e
指定要记录哪些系统调用。如果您不指定它,那么您将在日志中获取所有系统调用。-o
指定要将跟踪写入的文件-f
将跟踪附加到生成的进程