欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

如何利用自定义URL Scheme远程突破Mac

来源:本站整理 作者:佚名 时间:2018-09-03 TAG: 我要投稿
        14F27
        CFBundleDevelopmentRegion
        en
        CFBundleDocumentTypes
       
               
                        CFBundleTypeExtensions
                       
                                7z
                       
                        CFBundleTypeName
                        DocumentType
                        CFBundleTypeOSTypes
                       
                                ????
                       
                        CFBundleTypeRole
                        Viewer
                        LSHandlerRank
                        Alternate
                        NSDocumentClass
                        Document
               
为了回答第二个问题,我们需要确定macOS如何处理这些文件的“注册”请求。在“Click File, App Opens”这篇文章中提到,这是一个自动化过程,一旦应用保存到本地磁盘上就会执行该操作。简单总结下,大致步骤如下:
1、应用(或者恶意软件)下载或者保存到本地文件系统中;
2、该过程会导致一个XPC消息发送到launch services daemon(lsd);
3、lsd守护进程解析该应用,将应用的“document handlers”信息提取并保存到一个数据库中。
# fs_usage -w -f filesystem | grep Info.plist
open  /Users/user/Desktop/Mac File Opener.app/Contents/Info.plist  lsd.16457
fstat64  F=4  lsd.16457
read  F=4  B=0x18a97  lsd.16457
# /usr/libexec/lsd
...
(lldb) po $rsi
{ path = '/var/folders/np/85lyz_4545d5lz8wvy04xvlm0000gn/0//com.apple.LaunchServices-134501.csstore' }
我们可以利用lsregister(具体路径为/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/)来转储lsd的数据库。当使用-dump标志调用时,lsregister可以显示指定了“document handler”的所有应用,lsd会自动注册这些“document handler”。比如,我们可以看到其中包含Mac File Opener及其注册的文档(文件类型,比如.7z等):
$ lsregister -dump
...
Container mount state: mounted
bundle id: 2592
Mach-O UUIDs: 88225C07-0FDC-3875-A3B4-C5328E509B9E, 20A99135-975D-3A7B-A8DD-B7DF2CE428D0
path: /Users/user/Downloads/Mac File Opener.app
name: Mac File Opener
identifier: com.pcvark.Mac-File-Opener (0x80025f61)
executable: Contents/MacOS/Mac File Opener
--------------------------------------------------------
claim id: 31508
  name: DocumentType
  rank: Alternate
  roles: Viewer
  flags: doc-type
  bindings: .7z
...
一旦应用(或者广告软件)自动注册了document handler,那么当用户尝试打开匹配的文档时,应用或广告软件就会被自动调用。
这个过程由launch services framework负责,更具体一些,是_LSBundleCopyOrCheckNode方法(以及_LSBundleCopyOrCheckNode_block_invoke)负责匹配过程(查找与文档类型匹配的已注册的应用)然后执行已注册的应用:

上一页  [1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载