【问题标题】:Verifying process integrity in memory?验证内存中的进程完整性?
【发布时间】:2011-10-31 15:51:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: windows linux security dll-injection intrusion-detection


    【解决方案1】:

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

    首先,将其作为合法产品实际销售是浪费时间和完全无稽之谈。不确定您要做什么。如果是防病毒、游戏防作弊或 DRM,那么这是徒劳的。您唯一能做的就是以另一个用户身份运行该进程,从而防止其他进程首先对其进行修改。如果这还不够好,那就太糟糕了,Linux 不是一个安全的操作系统,而且永远不会是。

    理论上,不可能检测到进程的内存被篡改。在实践中,这取决于您如何定义检测,以及您关心什么样的误报和误报。

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

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

    您也可以一遍又一遍地扫描整个过程,使用安全散列算法对内存进行校验和。再说一次,如果敌方进程有权修改您的扫描仪,那么您就输了。

    所以是的,如果进程没有权限来颠覆你的扫描仪,为什么它有权限修改你关心的进程?对我来说听起来像是防病毒/防作弊/DRM。

    【讨论】:

    • 你误会了。我不是在编写 DRM 或销售扫描恶意代码的产品。我正在尝试实现en.wikipedia.org/wiki/…。我不在乎它是否是合法的插件,发布版本不允许任何插件。任何想要调试代码的人(例如内部员工)都将在禁用扫描仪的情况下构建代码。根据您的回答,在我看来,我无法防御已获得 root 访问权限的人(一旦您获得对机器的物理访问权限,这将是微不足道的)。
    • wtf... wiki 段落需要引用。不知道你想做什么。
    【解决方案2】:

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

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

    在自建的虚拟机中执行代码,然后通过虚拟机管理程序与系统的其余部分进行通信......当然,虚拟机管理程序必须成为系统的引导加载程序,以便操作系统只是一个“您的虚拟机管理程序的孩子”...应该可以解决问题...尽管您必须自己编写所有内容并确保它没有可利用的弱点(很确定没有人可以为如此复杂的软件做到这一点)...

    不确定您要面对什么,但只要您的代码运行的硬件和软件不在您的完全控制之下,总有一种方法可以做您提到的事情,并且通过一些计划也可以避免检测...

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

    【讨论】:

    • 我正在尝试解决这个问题:en.wikipedia.org/wiki/…
    • 好的——这其中的哪些部分是你开发的——签名应用程序?认证系统?用户的应用?
    • 目前我的应用程序同时进行身份验证和签名。将来我可能会使用外部查看器,但现在让我们忽略它。我如何保证我自己的应用程序没有被篡改?
    • 如果代码在客户端机器上运行,那么你可以让攻击者更难,但一个真正坚定的攻击者总是能够在你没有检测到它的情况下造成一些损害。如果您可以选择在您控制的机器上执行所有相关方面,那么您可能会有机会。
    • 很公平。我将尝试stackoverflow.com/questions/869320/… 提到的方法来减缓攻击者的速度。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2020-02-29
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多