首页
社区
课程
招聘
[旧帖] [分享]APP网络端口开放问题 0.00雪花
发表于: 2015-12-1 10:20 2135

[旧帖] [分享]APP网络端口开放问题 0.00雪花

2015-12-1 10:20
2135

0x00 网络端口开放概述

网络端口开放问题已经成为攻击者实现移动终端远程攻击的几大重要入口之一,但端该问题一直以来未受到广大开发人员的重视,直到“百度虫洞”的披露,将这个安全问题带来的严重危害赤裸裸的暴露在用户、开发者以及安全人员面前,大家才正真的意识到问题的严重性。

在APP开发过程中,为了实现某些特定功能,如厂商的应用推广、信息收集和上报、和PC进行交互等,会在APP中创建一个TCP OR http Server,并绑定到特定的端口上进行监听:IP: PORT,接收本地或远程客户端的链接请求。

Server接收Client端发来的请求数据/控制指令,并进行解析执行,调用对应的接口函数/后门函数,实现如安装指定应用、获取终端信息、获取账户信息、文件上传下载等功能,因此这些后门函数一旦被恶意攻击发掘并成功调用,将对用户造成严重危害。

0x01 网络端口开放威胁扫描

我们从应用商店随机拉取了100个热门应用,通过某漏洞扫描系统进行专项的端口威胁扫描,这里简单概述一下扫描方式。该系统包含了静态和动态扫描引擎,关于端口威胁的扫描,部分扫描规则配置文件如下:

<signatureid="e10566"type="api">
<logo>true</logo>
<name><init></name>
<cclass>Ljava/net/InetSocketAddress;</cclass>
</signature>

<signatureid="e10567"type="api">
<logo>false</logo>
<name>bind</name>
<cclass>Ljava/net/ServerSocket;</cclass>
</signature>

<signatureid="e10568"type="api">
<logo>true</logo>
<name><init></name>
<cclass>Ljava/net/DatagramPacket;</cclass>
</signature>

<signatureid="e10569"type="api">
<logo>false</logo>
<name>send</name>
<cclass>Ljava/net/DatagramSocket;</cclass>
</signature>

<signatureid="e10570"type="api">
<logo>true</logo>
<name>accept</name>
<cclass>Ljava/net/ServerSocket;</cclass>
</signature>

<signatureid="e10571"type="api">
<logo>true</logo>
<name>receive</name>
<cclass>Ljava/net/DatagramSocket;</cclass>
</signature>
        
<logic>
<pattern>(e10566 and e10567 and e10570) or (e10568 and e10569 and e10571)</pattern>
<scope>apk</scope>
</logic>

经过静态扫描引擎扫描后,将扫描命中的APP输入到动态扫描引擎,安装启动应用,获取到APP实际运行过程中开放的端口信息:


以下是批量扫描的结果:


从结果中,我们发现影音类的APP端口开放现象尤为普遍:

APP名称        版本        开放的端口信息        APK MD5
百度视频        7.19.3        0::ffff:127.0.0.1:8058        c8ae251b1e04c7516e4e975abe96ea93
0 ::ffff:127.0.0.1:38008
……
芒果TV        4.5.5        00.0.0.0:20109        25c945a60f0b40c8cf61f1f288b2fe2b
0 0.0.0.0:30107
……
乐视视频        6        00.0.0.0:6990        944a15a6eb3258bdbf9a7b3f26d806e2
0 0.0.0.0:1443
……
PPTV网络电视        5.2.4        00.0.0.0:1578        d4d096681bb3da0da55c6ae03e1a6e3e
0 0.0.0.0:1790
……
爱奇艺        6.8.0                  
暴风影音        5.2.39        00.0.0.0:9090        65db381e8811d3bb82b62968959d5d0f
0 0.0.0.0:56339
……
QQ音乐        5.7.1.5         0 0.0.0.0:49152         0CF6E6BE8470004BB5E8C56A1F7FF4F6
腾讯视频        4.5.0.9698        00.0.0.0:12024        F6247965EED0CE4EAF095DB7AD83A243
0 0.0.0.0:15418
……
百度音乐播放器        5.6.5.2        00.0.0.0:13000        52e21114b9a32a2de5c083679a9d2e38
搜狐视频        5.1.0        00.0.0.0:9010        2dc97f79583cd9e635e6b2fb707d988e

另外,市场上比较热门的应用,如新浪微博、360手机助手、一号店、一些应用分发APP等也在本地开启网络端口进行监听,其中部分程序开启的端口可被利用,进而调用本地的一些危险后门接口。

庆幸的是,截止目前,以上部分应用已经通过关闭端口、移除高危接口函数、加强通信客户端的身份检测、执行条件限制等方式对端口开放问题进行了修复。

0x02 细数端口开放漏洞的代表作

案例一、百度wormhole


Moplus是百度自身应用中集成的一个SDK,SDK中的com.baidu.android.moplus.MoPlusService用于开启一个HTTP server,并绑定在6259/40310端口进行监听,这里以百度云7.8.3为例:


sdk中对于接收到的连接请求没有做任何限制或过滤,直接解析执行,导致任意IP可以对目标的客户端发送请求,执行后门函数:


攻击截图:


受百度wormhole影响的APP列表(以下数据来源于:http://drops.wooyun.org/papers/10061):

足球直播
悦动圈跑步
贴吧看片
百度贴吧简版
PhotoWonder
足球巨星
优米课堂
贴吧饭团
百度贴吧HD
hao123特价
足彩网
音悦台
视频直播
百度输入法
CCTV手机电视
卓易**
移动91桌面
生活小工具
百度手机助手
91桌面
助手贴吧
央视影音
上网导航
百度手机游戏
91助手
中国足彩网
修车易
全民探索
百度视频HD
91爱桌面
中国蓝TV
小红书海外购物神器
穷游
百度视频
91 Launcher
中国蓝HD
侠侣周边游
途牛网
百度浏览器
365**
珍品网
物色
汽车之家
百度翻译
购车族
掌上百度
万达电影
拇指医生
百度地图DuWear版
**365
萌萌聊天
歌勇赛
爆猛料
百度地图
百度贴吧青春版
美西时尚
凤凰视频
百姓网
百度HD
PPS影音
么么哒
风云直播Pro
百度桌面Plus
百度
Selfie Wonder
蚂蚁短租
多米音乐
百度云
安卓市场
百度图片
旅游攻略
都市激情飙车
百度游戏大全
爱奇艺视频
**到家
乐视视频
懂球帝
百度音乐2014
VidNow
经理人分享
酷音铃声
蛋蛋理财
百度新闻
Video Now

口袋理财
穿越古代
百度团购
T2F话友

案例二、新浪微博


新浪微博V5.2.0存在端口开放漏洞,通过该漏洞可以调起新浪微博的未导出组件、获取用户的登陆状态信息、作为攻击第三方应用的跳板。新浪微博在libweibohttp.so中实现了一个httpserver,并绑定了127.0.0.1在端口9527进行监听:


Java层对应的功能代码位于com\sina\weibo\utils\weibohttpd\a,b,c三个文件内,主要实现了三个功能:

1)在用户登陆的情况下,获取用户的登陆状态信息
http://127.0.0.1:9527/login?callback=xyz

关键代码:

攻击截图:


2)获取终端上任意APP的基本信息
http://127.0.0.1:9257/query?appid=com.rytong.bankbj

3)调起微博任意组件,包括未导出组件
htpp://127.0.0.1:9257/si?cmp=com.sina.weibo_com.sina.weibo.ChooseGoodsActivity

打开未导出组件“工程模式”,在APP权限内执行任意命令,这里如果微博客户端具有root权限,攻击者将可以通过微博获取懂啊root权限,控制用户手机。
关键代码:

攻击截图:


案例三、360手机助手

360手机助手V3.4.7本地开启了一个http服务,该服务会监听手机的38517端口,并且允许远程IP连接:


恶意攻击者可以远程链接到被攻击客户端,通过360手机助手在用户终端进行一些列操作,如自动下载恶意程序并伪装为终端上已安装程序的升级程序,或者一些热门应用,诱导用户点击安装等。关键代码如下:


攻击的URL格式:
http://ip:38517/in?url=downloadurl&sign=md5(downloadurl+key)&logo=pngurl&name=appname

其中可以是硬编码的,所以sign可以轻松的计算出来;logo和name可以自定义,用于欺骗用户,如下图:


0x03 结语


上图是乌云上某安全人员对某一重大后门漏洞的回复,从中可以看出:
1)为了这样or那样的目的,后门总是存在的,就看会不会被发现、能不能被利用、可不可被披露。
2)后门就在那里,尽管被发现、被利用、被披露,但竟然可以被隐藏而不愿去关闭。希望以上只是属于个例。实际中很多后门被发现被利用后,开发者会移除一些高危函数,加强对应的安全策略。

从安全研究人员的角度来说,我们不推荐或者说不赞同开发者在应用程序中留有后门,但是事实并不能如我们所愿,以下是固执坚持留后门的开发者的建议:
1)把门做坚固:通信数据加密,命令格式复杂化,移除对功能影响不大的高危接口,避免硬编码一些关键数据;
2)把门做隐蔽:关键代码做混淆做加固;
3)通行条件做苛刻:对数据来源做过滤,做身份验证。

但最安全、最值得推荐的方法依然是:NO DOOR,NO WAY~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//