相关文章推荐
睿智的跑步鞋  ·  Android GATT ...·  7 月前    · 
害羞的海龟  ·  Android ...·  9 月前    · 

验证内存中的进程完整性?

2 人关注

It looks 就像不可能防止坚定的攻击者修改一个人的进程代码/数据一样。我希望它至少有可能检测到这种篡改。

Under Windows, is it possible to listen for DLL injections , WriteProcessMemory和CreateRemoteThread into the current process?

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

windows
linux
security
dll-injection
intrusion-detection
Gili
Gili
发布于 2011-08-22
2 个回答
Yahia
Yahia
发布于 2011-08-22
已采纳
0 人赞同

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

另一种方法是尝试在运行时对内存中的段进行一些散列,但这将是一些蛇蝎心肠的做法,因为散列代码本身将提供一个规避这种方法的入口点。

在一个自建的虚拟机中执行你的代码,然后通过管理程序与系统的其他部分进行通信......当然,管理程序必须成为系统的启动加载器,以便操作系统只是你的管理程序的一个 "孩子"......应该可以做到这一点......尽管你必须自己编写所有这些,并确保它没有可利用的弱点(非常肯定没有人能够为这样一个复杂的软件做到这一点)。

不知道你的对手是什么,但只要你的代码所运行的硬件和软件不在你的完全控制之下,总是有办法做到你提到的事情,并且通过一点计划来避免被发现。

或者这 "仅仅 "是关于防止软件盗版/反转的保护? 如果是这样,那么就有一些措施,甚至一些100%安全的措施,尽管这一切都涉及到安全与可用性的平衡......

Gili
I'm trying to solve this problem: en.wikipedia.org/wiki/...
好的--其中哪些部分是你开发的--签名应用? 认证系统? 用户的应用?
Gili
目前我的应用程序既做认证又做签名。在未来,我可能会使用外部查看器,但现在让我们忽略这一点。我如何保证我自己的应用程序没有被篡改?
如果代码在客户机上运行,那么你可以让攻击者更难下手,但真正坚定的攻击者总是能够在你没有发现的情况下造成一些破坏。如果你可以选择在你控制的机器上执行所有相关的内容,那么你可能就有机会了。
Gili
足够公平。我将试着用以下的方法 stackoverflow.com/questions/869320/... 用于减缓攻击者的速度。谢谢。
0 人赞同

咦,你怎么知道LD_PRELOAD是否是恶意的?ptrace呢?/dev/[k]mem?当一个进程在另一个进程的配置目录的文件夹中植入一个恶意插件或类似的东西时,怎么办?共享内存/IPC篡改怎么办?

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

理论上,不可能检测到一个进程的内存被篡改。在实践中,这取决于你如何定义检测,以及你关心什么样的假阳性和假阴性。

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