检测iOS中的功能挂钩

时间:2014-01-02 02:21:21

标签: ios security hook cydia-substrate

据我所知,在iOS中有三种函数挂钩技术:

  1. 使用DYLD_INSERT_LIBRARIES预加载库
  2. 使用fishhook
  3. 导入符号表重定向
  4. 在函数已经加载时修补它们 - 即使用substrate MSHookFunction
  5. 已经在内存中

    这些暴露了安全问题,所以我希望能够发现这些事情何时发生。对于第1点,我可以应用函数指针验证来检测。然而对于2和3,我没有任何想法。我非常感谢能够解决这个问题的想法。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题-试图避免在我的应用程序中挂任何潜在的函数。

我的应用程序最近经过了PEN测试,发现在功能挂钩方面存在漏洞。安全报告将Frida视为执行此行为的主要罪魁祸首之一。我敢肯定你们大多数人都会熟悉这个工具。

OWASP建议了一些保护应用程序安全的补救方法,但是在这种情况下,标题为 Anti-Debugging Checks 的部分将是主要重点。

如OWASP所建议,我将ptrace与PT_DENY_ATTACH一起使用-拒绝将GDB / LLDB进程附加到应用程序。

来自OWASP:

  

换句话说,将ptrace与PT_DENY_ATTACH一起使用可确保没有其他调试器可以附加到调用进程中。如果调试器尝试附加,则该过程将终止

这是我使用的solution(用于Swift)。 Raywenderlich.com这篇文章(目标C)也为我提供了帮助。我可以确认使用链接的解决方案是可行的-应用程序启动,但调试器中断,停止所有日志到控制台。这可能会阻止黑客,但是总会有一种解决方法。如前所述,Raywenderlich文章链接:

  

别太自在。黑客经常使用Cycript,这是一种JavaScript样式的程序,可以在运行时操纵Objective-C应用程序。最可怕的是,连接Cycript时,先前用于检查调试活动的逻辑失败。记住,没有什么是真正安全的……

不过,据Joseph Lord称,希望使用Swift编写应用程序可以对您有所帮助。但是再说一次,逆向工程师总是赢。

我希望这会以某种方式或形式有所帮助...