今天在抓学习通的包的时候,发现个防重放攻击的方法,如下是在学习通删除一条回复的数据包
GET /mooc-ans/bbscircle/deletereply?courseid=236733741&clazzid=82097324&topicid=485148900&replyid=1825029331&rootid=-1&cpi=156032240&createrUid=153530680&enc=cab5d5f83227614c69384937799b71e9 HTTP/1.1 略 Sec-Fetch-Site: same-origin
我抓了两条,经过compare,发现删除评论数据包主要区别在回复ID和enc参数,不难猜测enc就是encryption,cab5d5f83227614c69384937799b71e9有32位,应该就是MD5加密,然后我简单尝试了几种可能的MD5输入,都不是,轮到我害怕了,开发者可以是把各参数数值相加之和作为输入,也可能是各参数数值相加之积作为输入,也可能... 确实难搞。
不过有一说一,我这是请求报文,也就是我的浏览器生成的,也就是说md5加密可能是在本地(前端js加密,那样就有方向了),但也可能是由后端生成,向后端请求来的,不过开发难度大,但黑客破解难度更大。
抓包
抓包意义
有时候,比如渗透一款app、电脑某应用程序、小程序,你不知道它的服务器ip和端口,可以用抓包去看,发现ip:port,就不再目标一个App那么迷茫了。
抓包对象
app、电脑某应用程序、小程序...
-
抓app:
-
抓小程序
我甚至用Charles抓腾讯文档小程序,然后ctrl + F查找文档里某个字符串,还真找到了:
-
抓PC应用的数据包:
打开PC上QQ软件上的空间(以触发http/s协议的活动):
抓包协议和软件们
有http/s协议、其他协议,有的抓包工具不支持某些协议。
其他协议包括但不限于:
Ethernet(以太网)
TCP/IP(传输控制协议/互联网协议)
UDP(用户数据报协议)
ICMP(Internet控制消息协议)
FTP(文件传输协议)
SMTP(简单邮件传输协议)
POP3(邮局协议版本3)
DNS(域名系统)
SSH(安全外壳协议)
Telnet(远程登录服务协议)
SNMP(简单网络管理协议)
VPN(虚拟专用网络)
比如Charles抓PC某应用的数据包,操作了应用(比如登录),但Charles没数据包,1. 可能不是http/s协议,解决:使用wireshark或科来网络分析系统/tcpdump/... ;2. 应用绕过了(系统级)代理,不被你抓到。
-
Fiddler:是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 http通讯,设置断点查看所有的 “进出 ”Fiddler的数据(指 cookie,html,js,css等文件 )。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露 http通讯还提供了一个用户友好的格式。
我打开了fiddler,设置它监听127.0.0.1:8888,我的浏览器没有设置任何代理,但是fiddler依旧能抓到我的浏览器的数据包,这是为什么?
这是因为Fiddler使用了系统级的代理来捕获网络流量。当你设置Fiddler监听特定的端口(如127.0.0.1:8888)时,它会在你的计算机上启动一个代理服务器。然后,当你的浏览器发送请求时,Fiddler会将这些请求重定向到自己的代理服务器上,并拦截和分析请求和响应的数据包。
所以即使你的浏览器没有设置任何代理,Fiddler仍然能够捕获到浏览器的数据包,是因为它通过操作系统级别的代理来截获流量。
既然Fiddler使用了系统级的代理来捕获网络流量,即使浏览器没有设置任何代理,Fiddler仍然能够捕获到浏览器的数据包。那么为什么我的电脑上其他软件如QQ聊天产生的数据包没有被fiddler捕捉到?
Fiddler只能捕获通过HTTP或HTTPS协议发送的数据包。如果其他软件使用了不同的协议或端口进行通信,Fiddler可能无法捕获到这些数据包。
另外,一些应用程序可能会绕过系统级代理,直接进行网络通信这样Fiddler就无法捕获到它们的数据包。这可能是因为这些应用程序使用了特定的网络配置或加密技术来避免被代理截获。
如果你希望Fiddler能够捕获特定应用程序的数据包,你可以尝试配置该应用程序使用Fiddler的代理。具体的配置方法随应用程序而异,请参考该应用程序的文档或联系开发者以获取更多信息。
验证:在QQ发消息,fiddler没有捕捉到包;
打开QQ软件上的空间(以触发http/s协议的活动),fiddler有反应了:
启动Fiddler后,有时它报错了导致运行出故障、卡住了、或者Fiddler非正常退出,这时候因为Fiddler没有自动注销(相对于正常关闭fiddler而言,Fiddler此时会自动注销),会造成http/s协议都被卡住,例如网页无法访问。解决的办法是重新启动下Fiddler。我刚刚遇到一次。
-
Charles:是一个HTTP代理服务器 ,HTTP监视器 ,反转代理服务器,当浏览器连接 Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的 HTTP通信,这些包括 request, response和 HTTP headers (包含 cookies与 caching信息)。
Charles应该也是系统级代理,它也可以抓到没开代理的浏览器等来源的Http/s报文。
-
TCPDump:linux专用,基本上所有协议都能抓。。是可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、 or、 not等逻辑语句来帮助你去掉无用的信息。
-
BurpSuite:是用于攻击 web 应用程序(专注http协议)的集成平台,包含了许多工具。 Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的 HTTP 消息、持久性、认证、代理、日志、警报。
-
Wireshark:基本上所有协议都能抓,是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。 Wireshark使用 WinPCAP作为接口,直接与网卡进行数据报文交换。
-
科来网络分析系统:基本上所有协议都能抓。是一款由科来软件全自主研发,并拥有全部知识产品的网络分析产品。该系统具有行业领先的专家分析技术,通过捕获并分析网络中传输的底层数据包,对网络故障、网络安全以及网络性能进行全面分析,从而快速排查网络中出现或潜在的故障、安全及性能问题。
它自己的介绍面板写着:集数据包采集、解码、协议分析、统计、日志图表等多种功能为一体的综合网络分析系统。科来网络分析系统强大的数据包解码功能可以让最为狡猾的网络攻击、欺骗行为也无所遁形;针对常用网络协议设计的高级分析模块为用户提供更为实用的网络使用数据记录;网络通讯协议和网络端点都可以提供详尽的数据统计;独创的协议、端点浏览视图结构,可以帮助用户快速定位所要数据;丰富的图表功能为用户提供直观的信息。支持自定义协议
-
WPE&封包分析:Wireless Packet Editor,基本上所有协议都能抓。是强大的网络封包编辑器, wpe可以截取网络上的信息,修改封包数据,是外挂制作的常用工具。一般在安全测试中可用来调试数据通讯地址 。
用了几个抓包软件,发现小区别,除了Charles分门别类等小区别,Charles、Fiddler都是系统级代理,burp则不是,比如要抓微信的包,就只能用Charles、Fiddler,因为我设置不了微信软件的代理(不过直接给主机的WIFI设置代理,或许可行,但是,自己能代理到自己IP:某端口吗,不知道...);
此外只有burp能拦截数据包,从而篡改数据包而后发送,Charles、Fiddler更像个记录者。
Wireshark、科来支持按网络接口分类抓流量。
安装抓包软件的证书
因为https协议设计ssl,电脑上的软件或模拟器里的手机/手机需要安装证书才能抓。
Android7之后不信任用户安装的证书
这回导致我们抓不到包:
解决:把Charles证书安装成系统证书。请参考我另一篇文章,在笔记的“玩转计算机 - Android - Android7及以上,把Charles证书安装成系统证书.md”
windows上的证书管理器
在运行框输入“certmgr.msc“或者在设置里搜索证书,打开证书管理器:
可以查看是否已安装某证书:
Charles
charles抓到的包是按站点/域名/ip/目录分类的,所以后上场的数据包可能出现在前列,charles用标黄提示最新抓到的包在哪。
-
优点:按站点/域名/ip/目录分类,展示有条理
-
缺点:抓到的包太杂了,什么ggogle.com、qq.com、firefox.com,不过应该可以配置忽略某些站点的,比如常出现的非目标站点google、baidu、firefox,像这样:
我还要筛选哪些是我想要的数据包。比如a.baidu.com和b.baidu.com,它会分成两个跟目录,有时候抓个app的包,比如这次抓火山短视频:
基本上都是火山的api,挺无助的,这让我怎么筛,哪个才是短视频的src嘞,很想报警...
还有,我打开抖音,这个过程可能涉及多达十个站点,哪个站点是视频的src呢。
科来网络分析系统
我们注意到burpsuite 茶杯 fiddler需要安装证书才能抓包,而科来和wireshark不需要配置即可抓包,这是因为后两者直接抓网络接口。
科来相比wireshark对新手友好,能按进程分类流量,还能继续按协议细分该进程的不同流量:
科来还支持按域名分类流量,例如QQ是pub.idqqimg.com,QQ空间是h5.qzone.qq.com,他们都属于QQ进程:
科来还支持按IP分类流量:
还有协议分类、MAC分类:
使用科来抓模拟器的数据包,还是关闭模拟器的代理吧,因为这样模拟器流量会走正常的网卡接口,也就是:
否则流量会走代理那边,归burp等软件管了。
封包
微信聊天、游戏基本上没有WEB协议,我们就不能用burp他们渗透了。针对游戏,封包应运而生,用到科来 / WPE。
为什么游戏里的WEB协议少得很?:
HTTP/s协议下的server和client只有两次互动,require和response,而游戏是十几分钟不间断的连接的,http不满足要求。TCP协议就合适。
封包监听工具
老师用科来和模拟器里面的传奇游戏做实验:
TCP有三种状态:Closed(关闭,数据已经传输完毕)、Established(连接中,正在通信)、Time_Wait(等待中)。
老师此时已经登陆完毕,正在移动角色,老师关注Established状态的TCP数据包,有三个,
老师移动角色,注意到有一个Established状态的TCP的字节数在增大,而其他两个不变,说明它就是游戏服务器,其IP为81.6.41.108。如果搞安全测试的话,那么我们的中心就是在81.6.41.108上。我们不是专业游戏bug测评师,但我们仍可以用WEB那些手段,比如扫81.6.41.108已开放的端口和服务,爆破之类的...
封包和抓包的区别?:
封包指将网络传输过程中分片传输的数据(特别是游戏中实现功能的数据包)进行一个整合封装。让我们能更加直观的看到效果。例如回城、回血功能,点一下回城,我们回城了,回城功能可能分片成好几个的TCP数据包,抓包抓的很零散。封包工具将抓到的包按功能封装在一起,好像回程就只有一个数据包。所以制作游戏外挂常用到封包。即零散整体的区别,封包能精确到每个操作的数据包
老师玩传奇,点了下回城,并对此过程用封包监听工具(此工具抓所有协议)封包,得到如下一堆数据包:
思考:我点回城,回城这个请求肯定是client发向server。所以老师依次发送type为发送的数据包,试到第二个的时候,成了,一发出去,人物就回城。
思考:安全测试一个app,重点测试哪?:用户数据比如卡密、资金相关的,所以得多关注充值。
ProxyDroid + CCProxy + WPE+雷电模拟器
封包监听工具有点事按进程封包、操作少、无需配置代理,但是可能有些小程序、软件等进程不能被成功封包抓到。此时可以采用老路子,老路子原理是:代理机器人在模拟器将流量转发到CCProxy(注意,使用时网络WIFI代理关闭,那是抓http/s协议的,我们准备抓游戏包),然后我们用WPE监听CCProxy进程,可以说封包监听工具是一顶三,但是有时候抓不到包。
使用:
好像手机上设置WIFI的代理,设置的是http/s协议走代理,其他协议抓不到。所以我们此处才用到ProxyDroid。
在雷电模拟器(逍遥模拟器不行,我查了一下午bug,软件都没毛病,就出在逍遥上,好像是因为逍遥不能给软件root权限,而雷电会弹窗问:是否给它root权限)安装代理机器人.apk,安装后它叫ProxyDroid,电脑打开CCProxy,先点”停止“,再点”设置“:
记录Socks/MMS端口是9898,用于代理机器人转发到哪。
再点“高级”:
再点“账号”,点击”允许所有“,表示所有包都抓:
现在可以启动CCProxy了。
使用ProxyDroid需要root,我的代理机器人版本低,它说最好是低版本安卓,但我在高版本安卓上也能正常使用:
然后
我们再打开模拟器上的游戏,看到ccp 中有这样一条线,就能看到代理成功。
接下来我们就打开 ,WPE , 在目标程序中找到ccp 的进程。
在视图里面可以设置 拦截发送的数据包,还是接受到的数据包,我这里只拦截发送的数据包。
设置好之后,就可以抓包了:
技巧:
以回城为例,抓到回城的封包后:
共有 0 条评论