黑客24小时在线接单网站

黑客在线接单,网站入侵,渗透测试,渗透网站,入侵网站

利用第三方应用的各类代码注入技术窃取钥匙串

在macOS存储密钥是一个巨大的挑战,可以通过各种不安全的方式完成。在漏洞赏金评估期间,我测试了很多Mac应用程序观察到,开发人员倾向于将密钥放在偏好甚至隐藏的平面文件中。这种 *** 的问题是,所有具有标准权限的非沙箱应用程序都可以访问密钥数据。平面文件(Flat-File),Flat File它是一种没有相关结构记录的文件。这种类型通常用于描述文本处理、其他结构字符或标记被删除的文本。

使用中有一些模糊点,比如换行标记是否可以包含在内“Flat File(flat file)”在任何事件中,许多用户都把它保存起来“纯文本(text only)”类型的Microsoft Word文档叫做“Flat File(flat file)”。最终文件包含记录(一定长度的文本行数),但没有信息,例如,用一个内容表格式化标题或程序的长度。

例如,macOS上的Signal在〜/ Library / Application Support / Signal / config.json存储用于加密所有新闻数据库的密钥。

macOS钥匙串

据苹果称,钥匙链是存储密码和加密密钥等小密钥的更佳场所。钥匙链是一种非常强大的机制,允许开发人员定义访问控制列表(ACL)限制条目的访问。应用程序可以通过密钥组权限签名,以访问其他应用程序之间共享的密钥。以下内容Objective-C密钥值将保存在钥匙串中:

执行后,您应该看到条目已成功添加:

之一种窃取技术

之一种技术是验证应用程序是否已被使用“Hardened Runtime”或“Library Validation”标志签名,钥匙串检测不到代码注入。因此,只需使用以下命令:

如果标记为0x0,并且没有__RESTRICT Mach-O段落(这段很少见)只需要恶意dylib注入应用程序的主要可执行文件。创建以下内容exploit.m文件:

编译:

并注入:

第二种窃取技术

如果使用了可执行文件Hardened Runtime签名怎么办?这种绕过技术类似于我XPC开发系列中向你展示的内容。抓取已分析的二进制文件的旧版本,该版本在没有强化运行时的情况下签名,并将dylib注入。钥匙串不会验证二进制文件的版本,而是会向您展示秘密钥匙。

创建开发人员的建议修复程序“钥匙串访问组”并将钥匙移到那里。由于二进制文件的旧版本无法使用钥匙串组权限进行签名,因此无法获得钥匙。详情请点击此处。

第三种窃取技术

如果设置了,记住“Hardened Runtime”,则com.apple.security.cs.disable-library-validation将允许您注入恶意动态库。

第四种窃取技术

正如Jeff Johnson在他的文章中,TCC只需从表面上检查应用程序的代码签名。钥匙串也有同样的问题。即使整个捆绑包的签名无效,钥匙链也只会验证主要可执行文件是否未被篡改。让我们安装在设备上Electron应用程序(Microsoft Teams,Signal,Visual Studio Code,Slack,Discord等如,事实证明Electron应用程序无法安全存储您的密钥。Electron基于创建本地应用程序的框架Node.js和Chromium实现了通过JavaScript, HTML 和 CSS 等 Web 技术构建跨平台应用程序的能力。

其中,Electron还包括自动更新、原始菜单和通知、崩溃报告、调试和性能分析等功能。

即使你使用Hardened Runtime签署了Electron,恶意应用程序也可能改变包含实际代码的应用程序JavaScript文件。让我们看看Github Desktop.app,它将用户的会话密钥存储在钥匙串中:

并有效签名:

接下来,更改一个 *** 文件并验证签名:

可可以看到签名被破坏了,但是Github钥匙串中保存的密钥将正常启动和加载:

为防止修改,Electron实现了一个名字asar-integrity机制。它计算一个SHA512并存储哈希值Info.plist问题是它不会停止注射。如果未使用主要可执行文件Hardened Runtime或Kill标志签名,并且不包含受限制的权限,则只需修改asar计算新的验证和更新文件Info.plist文件。如果设置了这些标志或权限,则可以始终使用ELECTRON_RUN_AS_NODE变量,并在主要可执行的上下文中再次执行代码。因此,它可以窃取钥匙串条目。

总结

钥匙串中的安全密钥存储确实很难实现,因为检查所需可执行文件的代码签名只是一些肤浅的努力,所以绕过访问控制机制的 *** 有很多。

更大的问题是Electron在应用程序中,这些应用程序不能安全地将密钥存储在钥匙串中。请记住,任何将实际代码存储在主要可执行文件之外的框架都可能被欺骗加载恶意代码。

本文翻译自:https://wojciechregula.blog/post/stealing-macos-apps-keychain-entries/

   
  • 评论列表:
  •  离鸢胭话
     发布于 2022-05-31 08:31:34  回复该评论
  • untime签署了Electron,恶意应用程序也可能改变包含实际代码的应用程序JavaScript文件。让我们看看Github Desktop.app,它将用户的会话密钥存储在钥匙串中:并有效签名:接下来,更改一个JS文件并验证签名:可可以看到签名被破坏了,但
  •  余安命轴
     发布于 2022-05-31 06:04:00  回复该评论
  • 将密钥存储在钥匙串中。请记住,任何将实际代码存储在主要可执行文件之外的框架都可能被欺骗加载恶意代码。本文翻译自:https://wojciechregula.blog/post/stealing

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.