通过滥用 Apple iOS URL 方案防止网络钓鱼攻击

信息安全 移动的 IOS 网络钓鱼 网址重定向 登记
2021-08-17 14:47:33

我正在构建一个 Apple iOS 应用程序,它将具有以下流程:

  1. 用户从 Web 完成注册。
  2. 注册完成后,一个链接将发送到他的电子邮件。
  3. 在 iOS 设备上单击链接后,我的 iOS 应用程序将启动并提示用户输入凭据。

问题是另一个恶意应用程序可以注册到与我的应用程序相同的 URL 方案。在这种情况下,可以启动恶意应用程序而不是我的合法应用程序,并且很容易窃取我的用户的凭据。

在这种情况下,我该怎么做才能防止数据泄露?(即确保恶意应用程序无法模仿我的应用程序和/或实施一种机制,使用户能够轻松区分我的应用程序和恶意应用程序)

我在这里看到了一些答案:https ://stackoverflow.com/questions/30461145/best-practices-in-dealing-with-the-abuse-of-custom-url-scheme-to-make-phishing-a

但他们都提议实现一种机制,最终使恶意应用程序能够完全模仿我的应用程序。

1个回答

在给出任何解决方案之前,重要的是要记住,如果一个应用程序正在安装在用户的设备上,那么只要给定时间和精力,恶意用户就可以复制/逆向工程该应用程序。也就是说,有一些技术可用于使逆向工程应用变得困难并最终复制应用变得困难。一些技术可以是:

  • 对于每个请求,都可以发送一个秘密值,该秘密值可以是(密码 + 当前时间 + 域 + 常量字符串)等连接字符串的哈希值。可以创建任何这样的方案,但要确保代码足够模糊这样攻击者就很难破解。通过频繁更改此算法,恶意应用程序也需要这样做才能跟上。

  • 其次,您可以包括反调试检查,例如使用ptrace 调用 PT_DENY_ATTACH 或使用sysctl 方法但同样,一个坚定而熟练的攻击者可以绕过这些检查。可以通过更改应用程序二进制文件来禁用这些检查。但是通过对二进制文件进行频繁的哈希检查会使攻击者的工作变得更加困难。

  • 使用 SSL pinning 还可以防止某些脚本小子查看网络流量,但SSL KillSwitch等工具可以轻松绕过此检查。