Select Browser Mobile | Continue

Silic Group Froum Archive - Silic Security

 Forgot Password?
 Join Us
Search
Show: 1894|Reply: 3

[翻译] 揭秘Android嵌入式木马(Android_trojan_horse)

[Copy URL]
suy The user has been deleted
Posted 2016-2-24 00:55:47 | Show all replies |Read Mode
solve爪机无法排版,由此代发。



介绍
这个项目展现了对于任何Android应用来说,窃取用户隐私信息都是轻而易举的。
App干什么了
嵌入在app里的恶意代码使它可以完成几项任务。应用可以接触到用户所有的通话与短信记录,并可以把它们发送到任意源。这个应用还会每15分钟读取用户的GPS位置,并且弹出虚假对话框,要求用户输入他们的个人电邮账户信息。该应用还借助社工来使它传播到其他设备上。
这个host应用的恶意行为无迹可循。恶意代码完全在后台运行,对用户不可见。
SMS扫描
    在应用安装后,它会扫描用户所有的短信。短信被分为很多数据流,每个数据流都包含所有个人信息和另一个联系人。然后应用交叉引用通讯录,接收其他群组的附加信息。最近储存在用户手机里的短信都会被进行这样的操作。因此,只要用户开始使用手机而且没有删除短信,恶意程序将立即访问并记录他的短信记录。
    此外,在第一次查阅用户所有短信之后,用户每接收一个附加文本,恶意程序都会使应用将文本消息的内容和细节转发到指定的服务器。应用可以轻易捕获用户所有短信。

应用将初始内容作为JSON数组传送。它会被在服务器上进行解析,一旦服务器收到这些消息,它们就可以猥琐欲为了。之后,当应用检测到新信息是,它会继续想服务器传送。在这个PoC(proof of concept,漏洞概念性证明)中,短信显示的方式模仿实际的手机上的用户界面,可以让人按时间顺序读取。
1.png
介窃取密码
应用还会显示电子邮件账户错误通知,提醒用户重新输入电邮账户和密码。通过GET_ACCOUNTS许可,应用已经可以访问用户的电邮,就没必要请求这些了。这个对话框默认会在应用安装3分钟之后弹出,以免用户起疑。最终,应用安装后任意延迟时间,弹出对话框。用户看到的虚假对话框和真实gmail邮箱密码错误的对话框简直是一个模子里出来的。绝大多数用户在输入密码时也不会三思而后行。用户输入密码一次,对话框就不会弹出第二次。下面是对恶意和真正的邮件对话框的比较:

2.png

上面的图片基本相同,其合法性无法察觉,除非两者进行比较。此外,这类钓鱼活动代表了移动平台欺诈活动的新阶段。作为技术方面的安全特性,由于庞大的技术和时间要求,这个领域被黑客攻击将变得不那么普遍。然而,对于各种各样的身份窃取手段来说,这种钓鱼计划非常合理。这是因为在银行业,paypal,手机网络和电子邮件中,对话框的出现在用户的预期之中。这些攻击也是目前最难发现的,因为它们可以轻易嵌入应用程序中,黑客可以远程激活。
应用将用户的电邮和密码传送到服务器上,随后存入数据库以待下次使用。下面是一个服务器收到信息显示的例子,和接下来要讲述的GPS位置跟踪的一个链接:
3.png
GPS追踪

这个应用中最新的针对性攻击大概是地理定位。GPS可用时用GPS,GPS不可用时则借助基站。Geo-location在定位程序中非常有名,比如,Foursquare,Groupon和Google Offers。所以,这个经常忽略权限对话框的权限许可很常见。
我们的PoC中的恶意代码表明,有了授权许可,恶意程序可以以任意频率窃取基于位置的坐标。我们在服务器上通过用户整天的视觉化坐标轨迹跟踪他。
GPS坐标将作为经纬度形式传送到服务器。它们会被输入到服务器,很容易就被画成下面的地图,显示单个坐标,多个最近坐标,或用户的行动轨迹。


4.png

恶意程序的传播

我们的应用进行传播,主要依赖于用户社交网络中的信任网。用户结束通话后一分钟,他们的朋友就会收到一条短信,通常说,“嘿,我忘记告诉你下载这个APP了”。关于更多依赖信任网的文章请看Social Engineering Section。
      5.png
然后用户有可能点击短信中的链接,并立即启动FTP下载应用程序。注意,被感染的用户不会有任何短信发送记录。
屏幕上显示的是最后的安装过程。
6.png
用户剩下要做的就是打开被感染的应用程序。对于任何嵌入恶意代码的应用程序,更有用的是:用户安装了又一个有用的app,而没有察觉附带的木马。

7.png

攻击用户数据的其他可行方式
         还有不少额外权限可以导致用户泄露敏感消息。一些其他有趣的技巧包括远程操作手机的技术特点(相机/摄像机,铃声/振动),通过用户的gmail帐号修改他们的Facebook密码,以及通过交互环境进行社工。这个应用中展示的exp还可以进一步扩大。可以在用户浑然不知的情况下发短信,也可以探索用户与朋友的互动下更多有趣玩法。此外,对话框也可以用于获取其他敏感信息。即使用户怀疑对话框是假的,他们也很难知道是哪个APP发起的。此外,在编写应用程序时,我们没有隐藏服务器位置或我们作为攻击者的身份。然而现实生活中,黑客可能通过使用HTTPS或者代理来进行反追踪。如果这种病毒被攻击者部署,政府通过服务器URL定位攻击者简直太容易了。

危险
       有几个特性使这种攻击尤其危险。网络钓鱼、黑客和未root控制移动设备是一种相对较新的形式的攻击,用户需要特别注意这些可能的攻击。

沉默
       因为用户的手机可以被静默劫持,用户将永远不会知道他们的信息泄露了。未经你的允许,黑客监控你的行为随着时间推移将日趋危险。在任何短信历史,日志或者通知里都不会有应用的踪迹。此外,有用户账户的信息到手,黑客可以将你的信息用于社工。
易于嵌入
这个特定代码另一个危险的方面在于它可以嵌入到任意无恶意的应用程序。恶意代码在编写时就已模块化,不依赖宿主程序的任意代码。这意味着恶意代码可以在不同程序上实现相同功能。开发人员可以很容易地将这段代码在不影响现有应用程序的功能的情况下嵌入他们的应用程序收集私人数据,而不让用户知晓其存在。
传播迅速
       这个应用程序依赖于用户网络传播。因此,优雅的社会传播和快速社会传播存在一个悖论,类似于计算机编程利用空间或时间复杂度的算法。无论它传播的速度多快,它最初依然很难检测。因此,当它被发现时,它已经给用户造成了不可逆转的损害。
社工
社工可能是这玩意儿最有趣的特性,也是最可靠的了。这个应用程序依赖于用户的社交网络传播自己。它只发送给与用户有紧密关系的用户(指的是电话交谈)。
       复杂的社会工程学方法可以用来更明智的传播应用,代表用户发送消息,检索更多个人信息,进行中间人攻击,以及劫持用户的社会身份,以程序实现方式或通过个人的行为。随着人工智能继续变得更聪明和更熟练,这些攻击的合理性和深度也会增长。

保护措施

仔细审核应用权限
       从应用程序手中保住你的个人隐私的第一道防线是在安装应用前仔细查看程序所需权限。如Section 1.2所统计,大多数应用程序所需权限并非恶意代码所需,在安装应用程序时,您应当检查应用申请的权限是否是必要的。而提供应用程序特定的权限可以为用户提供更好的功能和有用的服务,这些权限也可以被恶意使用。用户被迫相信开发人员使用这些权限和漏洞添油加醋。
从可信源安装
可能包含恶意代码的应用程序会很快被捕获并从应用市场删除。Google有时也会远程擦除感染恶意软件的所有设备的相关数据。通过只从信任来源安装应用程序,比如Android市场,可以大大减少被攻击的可能。如果你从一个朋友那得到了类似的信息,最好的办法是问他是什么应用程序。这样感染用户会及时发现并使你免遭感染。

结论
很明显,从我们创造的特洛伊木马的Android操作系统运行的应用程序在Android上获得大量的个人资料和使用恶意的访问相当容易。我们的程序可以收集被感染用户的短信、电子邮件密码,和GPS的位置。我们惊讶地发现,通过社工我们是多么容易通过短信传播恶意软件。由于特洛伊木马的静默安装,嵌入在无恶意应用程序內的能力,快速传播和社工获取信息使得它极其危险。真正可怕的是我们只触及了这类攻击的表面。Android用户目前的自保措施也就上述两种。碰到可疑之处,就不安装。
源代码
下载源码
(免责声明略)
包含的文件
add to manifest.txt
这个文件包含需要添加到主机应用程序的android应用程序清单文件代码片段。这包括权限、服务、活动和接收方声明。
CallService.java
这是一个在后台监听电话的服务。一旦电话结束,它将设置一个报警1分钟触发SendSmsReceiver调用其onReceive方法。
GetGPSReceiever.java
在第一次打开应用程序后五分钟触发以及每15分钟触发接收器。当它被触发时,它会发现用户的GPS位置使用开源MyLocation类[1]。然后,它将每15分钟向服务器发送这个位置并设置报警触发本身。
goes in main activity.txt
这个文件包含活动第一次启动(当用户打开APP)时的代码片段。文件中的代码集在第一次启动时发出几个警报,所以它们可以自设置自启。
pass_dialog.xml
这个文件是假密码对话框的布局。它应该放在正确的布局目录中。
ScanSMSReceiver.java
这个触发接收器1分钟后首次启动应用程序。每15分钟触发后,它会扫描用户信息并传送到服务器,每15分钟触发一个警报。
SendSMSReceiver.java
这东西在电话结束一分钟后触发。当触发时,它将一个文本发送给用户最近说话的人,说“哟,我忘了告诉你这个程序:[apk url]”。这是用来传播应用程序和解释Section 2.4的。
ShowPassDialog.java
这是假的活动密码对话框。它控制对话框中,这样当用户点击“登录”,输入的密码就发送到服务器。
ShowPassDialogReceiver.java
这个接收器第一次启动后没每三分钟触发一次。如果用户输入一个密码,接收方不会再次调用。所有的接收器ShowPassDialog活动开始。
Sms.java
这个类是一个基本的sms消息的对象表示。它还包含一个将短信转换成JsonObject表示并上传到服务器的toJson方法。
SmsHelpers.java
这个类包含一些基本的辅助方法。它有助于把所有短信和找到一个联系人的名字。
SmsReceiver.java
一接收短信,这个接收器就触发。它会立刻发到服务器。
权限许可
INTERNET
这个权限用于访问网络。
GET_ACCOUNTS
这个权限是读取用户账户信息的权限。
READ_PHONE_STATE
这个权限告诉应用用户的通话状态。
READ_CONTACTS
这个权限用于读取联系人。
ACCESS_COARSE_LOCATION
这个权限用于通过基站获取用户位置。
ACCESS_FINE_LOCATION
这个权限用于通过GPS获取用户位置。
SEND_SMS
这个权限用于发送短信。
READ_SMS
这个权限用于读取存储于本地的短信。
RECEIVE_SMS
这个权限允许用户在短信到达时接收和处理短信。

参考资料
这个应用程序及exp,除了以下开源代码,均完全由文章作者Jeremy Klein和Parker Spielman完成。




Translated by solve

CMSteam The user has been deleted
Posted 2016-2-24 01:05:08 | Show all replies
  Translated by solve
suy The user has been deleted
 Author| Posted 2016-2-26 20:08:00 | Show all replies
看完看完看完看完
采菇凉的小蘑菇 The user has been deleted
Posted 2016-8-3 10:54:26 | Show all replies
学习了 楼主厉害
You need to login before reply! Login | Join Us

Credit Rules of This Forum

Close

公告Privious /1 Next

小黑屋|手机版|Archiver|Silic Security

GMT+8, 2019-10-19 22:31

© 2001-2014 Silic Corp.

Quick Reply Top Return List