En

Hacking Team Android Browser Exploit代码分析

作者:我有一把刷子公布时间:2015-07-10阅读次数:93993评论:4

分享

0x0 前言


Hacking Team 415G泄露资料的vector-exploit-master\src\ht-webkit-Android4-src目录中,包含一份Android Browser exploit代码。用户在浏览器中点击攻击者的链接,便会执行恶意代码。恶意代码利用漏洞获取root权限,并静默安装木马apk。影响Android4.0-4.3版本。


0x1 漏洞利用的艺术  


Exploit代码利用了三个已知的libxslt漏洞,获得对内存地址的完整控制能力。

1. information leak (CVE-2011-1202)。

2. Arbitrary memory read (CVE-2012-2825)

3. Heap-buffer-overflow (CVE-2012-2871)

关键流程:




0x2 利用分析

1. 申请330块1M大小的内存,并给每一块内存区域打上标记(0x70747468,‘HTTP’)





2. 
进行内存搜索,利用CVE-2012-2825可以检查任意内存地址是否为0x70747468(’HTTP’)的能力,找出第一步的标记内存,得到标记内存所在的地址。这里查找内存的时候涉及一个技术细节。

When parsing a XSLT stylesheet containing a DTD, a structure of type xmlEntity is accessed as another type. The value of cur->ns->href is then compared with a string (“http://www.w3.org/1999/XSL/Transform"). If not equal, return null.


ns->href和ns->prefix的值改为addr,然后利用二分法在[0x7a703030, 0x79303030]这块内存空间遍历addr,如果找到"http://www.w3.org/1999/XSL/Transform",会返回一个正确的documentElement。


由于这块地址在第一步中已经申请这块内存我们知道地址并可以随使用,这一步很关键可控制的内存约4MB,称为ZoneX


3.精心修改ZoneX,利用CVE-2011-1202泄漏堆对象的地址和CVE-2012-2871写特定内存地址为特定值的能力,把ZoneX标记为已释放,但JS仍然有读写的能力




这一过程相当复杂,暂且跳过。


4. 立即申请大量新的ArrayBuffer覆盖ZoneX,由于JS仍然有读写ZoneX的能力,可以马上修改一块符合条件的ArrayBuffer的起始地址为0x00000000,结束地址为0xFFFFFFFF,即整个内存区域



5. 利用BufferMemoryObject对象,封装对内存地址的操作,至此JS已经得到整个RING3内存的完整读写能力。



6. 下载小马module.so



7
. 结合CVE-2011-1202信息泄漏漏洞,获得libwebcore.so的基址进而获得libc.so的基址


然后在libc和libwebcore中搜索可用的gadget。



8. 
操作内存,覆盖JS对象的虚表构造假的vtable完成两个gadget的拼接。并使用ROP攻击手法,通过mprotect给堆上的shellcode代码执行的权限,并将执行流程跳转到真正的shellcode




9
. shellcode中激活已经下载好的小马module.so;



10
. 接下来马下载ROOT提权程序(exploit,ELF)获取ROOT权限;并留下一个shell /system/bin/rilcap,过程和rcs完全一致。


IDA打开小马,发现其使用了Obfuscator-clang对代码进行了混淆。


所涉及的两种root方法,第一种是put_user,另一种是towel。


1
1. 随后,小马在ROOT权限下静默安装黑客指定的木马程序。ALL DONE。


0x4 总结


从三个POC到一套完整的远程代码执行exploit,是一个复杂而艰难的过程。Hacking Team 的exploit演绎相当之精彩,不得不说是漏洞利用的艺术。从远程代码执行,到下载rcs远程控制客户端,Hacking Team构建了一条完整的黑色链条。看完之后,各位看官会不会和小编一样,背后吓出了一身冷汗。Android Browser Exploit仅仅是Hacking Team泄漏资料中的一个项目,其中的技术点便相当复杂。其所泄漏的项目,不仅包括源代码,还包括大量工程化的工具以及技术文档。仅需简单地配置和修改即可自动化生成黑客工具,很容易被不法分子利用。可想而知,这将大大降低黑产的技术门槛。黑产水平将在短时间内显著提升。守护用户安全之路将任重而道远。

行文如有疏漏,敬请斧正


评论留言

  • George Michael

    好文,假装看懂

    2015-07-10 18:00:15
  • 云淡风轻2BD

    【招聘全职/兼职】渗透测试技术、数据挖掘工程师
    ​‌‌岗位描述
    负责为客户提供信息安全服务,包括安全评估渗透测试获权、下载某网站数据库、漏洞挖掘检测、安全加固、应急响应等;

    【招聘】渗透测试工程师(招聘人数1人)
    技能要求
    要求投职人员具有至少1年以上的职业黑客攻击经验,并实际操作过各类项目,拒绝理论派、学术派、证书派。学历要求可以适当降低,但必须能看写适当的英文资料。
    1、掌握MySQL、MSSQL、Oracle、PostgreSQL等一种或多种主流数据库结构以及特殊性。
    2、熟悉渗透测试的步骤、方法、流程、熟练掌握各种渗透测试工具。
    3、有主机、网络或Web安全渗透测试相关项目实施经验&。
    4、掌握JavaScript及IE、Safari、Chrome、FireFox、Thunder&Bird、Opera等主流浏览器,能够有针对性的进行XSS、ClickJacking和CSRF。
    5、对网站/服务器的结构有敏锐的洞察力,能够根据网站的结构推测出大概的网站原始代码或服务器环境架设方案,从而找到入手点。
    6、基本的Webshell获取,掌握主流CMS漏洞利用以及如WP、Joomla、DZ等含漏洞插件找寻。
    7、基本服务器提权,懂得基本溢出,以及系统运行的system/root权限程序利用。
    8、掌握安全漏洞发现和利用方法,具备一定的实战经验&,有丰富渗透测试实战经验者优先。
    9、熟悉各类主流、非主流WAF或防火墙,并能够有针对性的绕过安全防护类防护软件。
    10、熟悉主流网络协议TCP/IP、HTTP协议等,精通Windows/Linux/Unix操作系统,,精通WEB渗透技能,至少熟悉一种web服务器端开发语言。
    11、具有较好的口头表达能力和文字表达能力。

    【招聘】数据挖掘工程师DBA(招聘人数1人)
    技能要求
    1、熟悉数据仓库的ETL的开发和数据建模,具有数据仓库实施经验优先;
    2、有海量数据分析,数据挖掘和统计相关经验,熟悉常用的数据挖掘算法;
    3、对hadoop/hive,hbase,MapReduce,flume-ng,kafka,storm&一种或者几种有一定的理解;
    4、精通Oracle、SQL&server,有较好的存储过程开发、SQL性能调优经验;
    5、熟悉java&web编程,熟悉mvc架构;
    6、熟悉SAP&BO软件者优先;
    7、熟悉数据仓库各类建模理论,以及数据仓库数据层级关系,精通3NF和多维数据模型设计,具备大型数据仓库架构设计、模型设计和处理性能调优等相关经验者优先;
    8、有元数据管理、数据质量管理、主数据管理经验者优先;
    9、有DBA经验、Hadoop等分布式计算平台使用经验者优先;
    10、具有数据挖掘、分析经验者优先;
    11、熟悉shell/perl/python脚本编程语言优先;有互联网行业数据挖掘从业经历者优先&


    全职与兼职待遇:
    招聘人数:2
    公司福利:双休,五险一金
    工作地点:全职或者兼职.
    月薪概述:30K~60k
    兼职酬劳:每单日结,态度认真、中介勿扰,请实力说话
    具有3年以上的渗透测试或数据挖掘经验的薪资(年薪60W以上,以能力而定)
    长期招聘兼职,长期有效,
    联系QQ:1575956178
    联系邮箱:1575956178@qq.com

    2015-07-13 22:13:37
  • A

    点赞>_<!

    2016-02-15 17:36:34
  • 双鱼座的余

    您好,请问你有exploit的源码么?有的话可以发我一份么?1359873869@qq.com

    2016-03-14 17:12:24
提交评论 您输入的漏洞名称有误,请重新输入