借助Packet Capture实现无Root抓请求

16人阅读 评论(0) 收藏 举报
分类:

背景是这样的,有一天运营的同事反馈达达可以抓到我们的订单,简单查看了一下流程,发现达达先会下载一个插件,安装后,会提示信任一个vpn证书,然后就可以获取到我们的订单。

上一次达达商家版通过Android的Accessibility api监听我们应用的布局变化,获取了每个view中的数据,拼接成了他们自己的订单,但是这个api随着napos的升级被堵死了。这次他们换了一个思路,通过建立虚拟vpn的方式充当中间人,攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话。大概理解了这次抓单的思路,我们就开始顺着packet capture的线索开始摸索达达的整个方案。

首先我们查到了packet capture这个软件,  
Packet Capture免root抓包安卓版是一款数据包捕获/SSL网络流量嗅探的应用程序。 
特点:捕获网络数据包,并记录它们使用中间人技术对SSL解密,无须root权限 
这个软件使用了Android提供的VpnService api,实现了中间人攻击,完全符合达达的需求,那么我们就以这个为突破口,下载了最新的达达,发现在打开抓取饿了么和美团的订单的时候,他需要下载http://7xl8yn.dl1.z0.glb.clouddn.com/pkg-new.signed.apk 这个软件,下载反编译之,发现这个软件和packet capture 代码完全一样,但是我们在使用这个软件的时候,发现界面是不一样的,再比对,发现达达在这个软件外面包了一层壳,加了com.dada.provider 这个包。 
这里写图片描述 
这里写图片描述 
反复查看这几个类的作用,发现 
这里写图片描述

达达只是通过ContentProvider和intent 来实现了控制vpn开始关闭等功能,而vpn本身的实现完全依赖packet capture这个软件,看到这里我好像明白了什么。达达并没有自己实现高打上了的中间人攻击,他的刀,是别人的刀,那就是packet capture。但是达达是如何从packet capture 中获取数据的尼?要解开这个谜团还需要操开达达的包,哎呦,capture,还有mockhttp,日了明目张胆的出现了Elehttp和HttpDecoders$EleDecoders.java,当然美团也躺枪了。 
这里写图片描述
首先我们找到了设置页面的代码,验证了达达在packet capture中的代码只是为了控制vpn的开关,方便他控制抓单。 
这里写图片描述
这里写图片描述
这里写图片描述
通过代码可以清晰的看到,在打开监控饿了么美团的开关之后,达达通过contentProvide来检查socket capture 有没有打开,通过com.dada.walkthrough的start,stop 来开关vpn。 
很好,现在我们确定了达达的刷单思路,那下面就开始找他如何从socket capture软件中获取所有请求的数据。很快我们从HttpDecoders$EleDecoders中找到了 
这里写图片描述
很明显这里已经获取到了订单数据,正在解析。那么继续往上找,看什么地方调用了这个方法,顺藤摸瓜,找到了这个a方法,传入的参数是一个File,这让我们联想到达达是从文件中读取的数据,还与napos.order.getProcessedOrders 比对了method。 
这里写图片描述
很快我们又发现了很重要的一个类HttpCaptureTool,这里面在使用contentprovide访问一个数据库,而app.greyshirts.sslcapture.captureprovider 正是packet capture软件的包名。 
这里写图片描述
到了这里,我立马root了手机,查看了packet capture应用data->databases 中的数据库文件,哈哈,果然在这里。 
这里写图片描述
这和达达代码中的查询字段完全吻合 
这里写图片描述
这个数据库是socket capture存储请求的,里面有 
capture_time:抓取时间 
capture_file_name:文件存放地址(/data/data/app.greyshirts.sslcapture/files/capture-1727863624.dat) 
capture_server_ip:ip地址 
capture_app_name_main:应用名称 
capture_pkg_name_all:应用包名(达达就是通过包名来指定抓竞品的数据的) 
接下来没有悬念,files文件夹下面的dat文件就是每个请求的数据包 
这里写图片描述
到此为止,我们已经探明了达达的抓单思路,他通过在packet capture的外面包一层壳来灵活的开关使用packet capture作为中间人截获手机的流量,因为我们的https没有校验证书合法性,所以很轻易的就被解密为明文,然后充分利用packet capture每次抓到请求都存到文件中的特性,去files中查找对应包名的文件,对应的sql语句如下:

Cursor localCursor = d.getContentResolver().query(localUri, null, null, null, "captureset_start_time DESC limit 1");
Cursor localCursor = localContentResolver2.query(localUri, null, "capture_pkg_name_all=? and capture_server_port=? and capture_set_id=?", arrayOfString2, " _id desc limit 30");
  • 1
  • 2

在没有理清达达这次的刷单思路之前,我们没有想出好的应对方式,现在明白了整个过程,那么就可以兵来将挡,水来土掩。

建议一:武功再高,也怕菜刀,达达手拿菜刀,有点吓人,但是回过神来,我们首先可以断他的刀。那么我们首先要从socket capture 的中间人攻击入手,防止中间人攻击网上的思路很多,这里不作重复。

建议二:抢过他的菜刀,达达在socket capture上开的接口,我们可以调用,他能开,我们也能关,监听达达的start action,你开我就关,好不热闹。

张小龙说:对产品人来说,善良比聪明更重要。达达这样不择手段的获取竞品app信息已经丧失了应有的理性,让我想起了去年美团商家版kill竞品进程的事情,达达和美团也就半斤八两。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
查看评论

Packet Capture -- android 手机抓包利器

无Root抓包Packet Capture真是网络调试的福音,应用通过自建一个vpn达到无root,通过中间人方便调试加密流量,流量还区分应用一目了然,这大概是目前最方便的抓包应用了吧  log...
  • lxlmycsdnfree
  • lxlmycsdnfree
  • 2018年02月05日 09:23
  • 232

借助Packet Capture实现无Root抓请求

背景是这样的,有一天运营的同事反馈达达可以抓到我们的订单,简单查看了一下流程,发现达达先会下载一个插件,安装后,会提示信任一个vpn证书,然后就可以获取到我们的订单。...
  • xujinyang1234
  • xujinyang1234
  • 2016年05月19日 22:00
  • 14958

pcap(Packet capture library)的简单应用

pcap目前是一个应用广泛的针对网络接口数据包抓取的共享库。 该系统对数据抓取提供一个高层的接口,获得指定网络的全部 数据包,包括那些目的地址不是本机的数据包。 下面的程序是一个简单的实验用例。...
  • leeshuheng
  • leeshuheng
  • 2011年03月16日 09:01
  • 3480

教你如何抓接口

需要有抓包工具, 目前我使用的是paros. 另外在加上分析工具,我目前用的是 VisualJSON 分析工具. 接着, 你需要将电脑与手机同步, 在同一个局域网内, 设置一下网络偏好设置,在手机上...
  • qq_32780047
  • qq_32780047
  • 2016年04月04日 11:59
  • 770

Remote Packet Capture for iOS Devices

Remote Packet Capture for iOS Devices,Remote Virtual Interfaces
  • AddyChen
  • AddyChen
  • 2015年03月26日 12:53
  • 1284

抓包工具使用方法

pre { counter-reset: line-numbering; border: solid 1px #d9d9d9; ...
  • guoer9973
  • guoer9973
  • 2015年09月29日 13:20
  • 4074

Remote Packet Capture Protocol//远程包捕获协议

发现自己的系统服务中出现了Remote Packet Capture Protocol服务项,也就是O23 - Service: Remote Packet Capture Protocol v.0 ...
  • playlaugh2011
  • playlaugh2011
  • 2011年07月15日 00:36
  • 2966

想不通HTTPS如何校验证书合法性来看

简介 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安...
  • xujinyang1234
  • xujinyang1234
  • 2016年06月15日 23:03
  • 1469

关于“Packet size limited during capture”的解释

前言: 在linux下用tcpdump抓取http数据包,之后用wireshark打开,发现数据包的内容是不全的,如图: size limited during capture”的解释(转载)" ...
  • haijiaoqihao20160106
  • haijiaoqihao20160106
  • 2017年12月04日 13:44
  • 184

USB Packet capture for Windows Tour usb抓包

http://desowin.org/usbpcap/tour.html This short tour assumes you have installed the latest vers...
  • earbao
  • earbao
  • 2016年07月02日 11:32
  • 1851
    个人资料
    持之以恒
    等级:
    访问量: 40万+
    积分: 4787
    排名: 7526
    zt
    222
    最新评论