如何记录某个程序正在执行的所有操作?

信息安全 验证 访问控制 日志记录
2021-08-28 10:04:29

我有一个非常简单的程序。它只是一个简单的登录表单。

是否有可能记录该程序正在做什么(也许他正在访问哪个文件以及他正在访问哪个网站(以及该网站返回的内容)

我的意思是一个程序,它记录了该程序正在访问的文件以及该程序正在向网站发送哪些网站(或查询)。

我将衷心感谢您的帮助。

2个回答

如果您使用的是 Windows,您可以使用Process Monitor找出软件正在访问的文件和注册表项。对于它正在访问的站点(请求和响应),您可以使用一些代理,我个人更喜欢Fiddler您还可以使用TCPView检查 SW 打开的活动连接。

您还可以使用Wireshark监控网络活动并设置过滤器以显示与您想要的服务器的通信。或者您可以使用Microsoft Network Monitor,它可以显示特定进程的通信。

系统调用拦截可以在这里为您提供帮助。警告:它会让你记录一个进程与守护进程/服务通信的事实,但是如果守护进程/服务不受日志记录,那么它不会传递地记录守护进程/服务执行的操作,所以它不能暴露所有混淆代理问题。

strace手册页

在最简单的情况下,strace 会运行指定的命令,直到它退出。它拦截并记录进程调用的系统调用和进程接收到的信号。每个系统调用的名称、它的参数和它的返回值都打印在标准错误或使用 -o 选项指定的文件中。

由于文件系统访问和网络套接字创建是通过系统调用完成的,记录这些调用将让您重建程序正在访问的文件和网络资源。

如果您想了解正在访问哪些资源,然后确保即使被破坏,该进程也不会访问更多资源,请查看systrace.

对于复杂的应用程序,在运行它们之前很难知道正确的策略。最初,Systrace 会通知用户应用程序尝试执行的所有系统调用。用户为导致警告的特定系统调用配置策略。几分钟后,将生成一个策略,允许应用程序在没有任何警告的情况下运行。但是,未涵盖的事件仍会生成警告。通常,这表明存在安全问题。Systrace 通过提供入侵防御来提高网络安全。

或者,可以自动学习策略。在许多情况下,自动学习的策略可以立即用于沙盒。有时,需要最少的手动后处理。

警告:strace不是为安全而设计的,systrace因此很容易出现围绕系统调用参数的可利用的竞争条件。有关如何硬化的要点,请参见 DW 的评论strace

我对 Windows 上的系统调用拦截了解不多,但STraceNTvtrace看起来是一个很好的起点。

StraceNT是 Windows 的系统调用跟踪器。它提供了与 Linux 上的 strace 类似的功能。它可以跟踪进程对从 DLL 导入的函数所做的所有调用。StraceNT 在调试和分析程序的内部工作时非常有用。

VTrace收集有关进程、线程、消息、磁盘操作、网络操作和设备的数据。该技术使用加载到每个进程的地址空间中的 DLL 来拦截 Win32 系统调用;为 Windows NT 内核系统调用建立挂钩函数;修改内存中的上下文切换代码以记录上下文切换;并使用设备过滤器记录对设备的访问。