首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在内存中验证进程完整性?

在内存中验证进程完整性?
EN

Stack Overflow用户
提问于 2011-08-22 00:39:42
回答 2查看 1K关注 0票数 2

looks就像是不可能阻止坚定的攻击者修改自己的进程代码/数据。我希望至少有可能检测到这样的篡改。

在Windows下,是否可以监听当前进程中的DLL injectionsWriteProcessMemory and CreateRemoteThread

在Linux下,可以监听LD_PRELOAD和DR rootkit吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-22 00:57:03

使用一些真正复杂的代码,您可以检测到这些...这完全取决于攻击者的决心。如果他们真的下定决心,那么他们会使用一些rootkit方法-在这种情况下,你的应用程序对此无能为力(没有检测,只要攻击者知道他们在做什么就不会停止)……

另一种方法可能是在运行时尝试对内存中的段进行一些散列,但这将解释一些蛇油,因为散列代码本身会提供一个入口点来绕过此方法。

在一个自建的VM中执行您的代码,该VM又通过一个系统管理程序与系统的其余部分通信……当然,系统管理程序必须成为系统的引导加载程序,这样操作系统就只是系统管理程序的“孩子”了……如果要做trick...although,你必须自己编写所有的代码,并确保它没有可利用的弱点(我很确定没有人能为这么复杂的软件做这件事)……

我不确定你面对的是什么,但是只要你的代码运行的HW+SW不是直接在你的完全控制之下,总会有一种方法来做你提到的事情,并且通过一些计划来避免被发现……

或者这“仅仅”是关于保护软件免受盗版/逆转?如果是这样,那么有一些措施,甚至是一些100%安全的措施,尽管这一切都是关于安全性和可用性的平衡……

票数 1
EN

Stack Overflow用户

发布于 2011-08-22 06:35:30

嗯,你怎么判断LD_PRELOAD是否是恶意的呢?ptrace呢? /dev/kmem?当一个进程在另一个进程的config目录的文件夹中植入恶意插件或类似的东西时,该怎么办?那么共享内存/ IPC篡改呢?

首先,这是浪费时间和完全胡说八道,以实际销售作为一个合法的产品。不知道你想做什么。如果它是反病毒,反作弊游戏,或数字版权管理,那么这是徒劳的。您唯一能做的就是以另一个用户的身份运行该进程,以防止其他进程首先对其进行修改。如果这还不够好,那就太糟糕了,Linux不是一个安全的操作系统,而且永远也不会是。

从理论上讲,不可能检测到进程的内存被篡改。在实践中,这取决于您如何定义检测,以及您关心的是哪种类型的误报和漏报。

如果你知道程序的正常行为是不修改自己的,你确切地知道内存的哪些段是静态的,并且你知道你的电脑上没有任何合法的第三方程序篡改程序,那么你就可以很容易地检测到内存篡改。

最普遍的解决方案是像您所说的那样挂钩OSs进程间内存修改机制。只要敌方进程没有足够的权限移除您的钩子或进行绕过您的钩子的某些操作系统调用,这就会起作用。

您还可以一遍又一遍地扫描整个过程,使用安全散列算法对内存进行校验和。但是,如果敌方进程有权修改您的扫描程序,您将会失败。

所以,是的,如果进程没有权限破坏您的扫描程序,为什么它会有权限修改您关心的进程呢?听起来像是杀毒软件/反作弊软件/数字版权管理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7139586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档