文章目录
  1. 1. 基础
  2. 2. 杭电
  3. 3. 163邮箱
  4. 4. qq Client
    1. 4.1. 环境
  5. 5. JD客户端抓包
    1. 5.1. 环境
    2. 5.2. dcpdump安装
    3. 5.3. 登陆过程
    4. 5.4. 分析
  6. 6. Reference

基础

TCP握手状态
EMC_wireshark
OSI模型应用层->SSL->TCP->IP

杭电

直接用这个过滤

http && http.request.method==”POST”

1
直接得出表段:学号,密码(经验证为MD5)
echo -n password | openssl md5

163邮箱

测试帐号名: ji2hanpgf

老方法过滤出IP
http && http.request.method==”POST”

0x00. ip筛选,打算看一下过程,linux下默认启用ssl登陆..

ask.wireshark
ip.dst_host matches “^123.58.”

0x01. 查找第一个握手包,加上指定地址,ip.addr不会用通配符

(ip.src_host matches “^123.58.” || ip.dst_host matches “^123.58.”) && tcp.flags.syn == 1

0x02. TCP Stream
2看到GeoTrust SSL字样,查了一下163采用了这个ssl服务
在这里也看到了tcp的完整握手流程,cli->serv->cli

0x03. 1226th TLSv1.2
在最上层中secure sockets layer中看到Pubkey(length:65),这个和搜到的也是一致(server将公钥发给client,之后client进行加密传输)
3

0x04. 继续ip过滤,之后看到一条重要的消息1268th,1233rd. length都上千 Application Data,打开后在最后看到encrypt Data字样,

0x05.
3
中找到cipher suite字样,看到加密类型是TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA(0xc013),查了一下,

正向保密 infoQ
那个密码套件的名称看起来相当神秘,但如果你把它拆开来看就很好懂了。 “TLS” 自然是指TLS协议。 “ECDHE” 是说使用带有短暂性密钥的椭圆曲线Diffie-Hellman密钥交换(也就是说要为每个会话创建新密钥并且事后也不会记下来)。“RSA”表明用RSA 非对称加密保护TLS握手的安全。 “AES_128_CBC” 是说在密码块链接模式中用带有128位密钥的AES 非对称加密保护真正的数据交换。最后的 “SHA” 表明用 SHA 安全哈希算法。
这可能是在Oracle的Java 7上用TLS 1.1所能用到的最好密码套件。如果用TLS 1.2 ,你可以升级成TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,使用更强(也更安全)的 SHA2 摘要算法。理想情况下,用GCM(伽罗瓦​​/计数器模式)之类的模式代替CBC更好,但Oracle的 Java 7 JSSE (Java 安全套接字扩展)实现还不支持。
你可能还要考虑从 “ECDHE” 去掉“EC”。密码学大师布鲁斯·施奈尔现在推荐优先选用离散对数而不是椭圆曲线加密 (在这篇文章中还有很多非常棒的建议,教你如何保证自己以及你的数据交换的安全)。椭圆曲线技术更快,但可能会有政府组织故意引入的弱点。但大多数商业安全网站目前似乎只支持Diffie-Hellman的椭圆曲线版本,所以这个例子里就用它了。

看了介绍,已经知道无解了..结束

qq Client

环境

QQLite win10(虚拟机) mac地址: 00-0C-29-A7-AA-00 包采用的是UDP定向包(高级设置)

知乎-向小刚
登陆采用TCP协议和HTTP协议,你和好友之间发送消息,主要采用UDP协议,内网传文件采用了P2P技术。总来的说:
1.登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。
2.和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。
3.如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转。

0x00. oicq过滤,找到最早一条,之后用ip.addr==183.232.127.253直接过滤出两者交互状态

0x01.
3 QQ号 版本号 etc

0x02.
4 防止帐号在同一台设备登陆?
5 这个前缀很多,而且cli和server端都有,算是保证无连接状态的稳定性?
上面的reference中提到是tcp传输数据,不过感觉好奇怪…前面有4个UDP协议的端口交换过程,从该图看到应该是搜集client设备信息,Data是一串数字+字母,看起来只是校验而已
,之后才是OICQ的传输

0x03. OICQ分析
从图中看的话,有Data,len为38, Reference了解到Seq和Ack Number的关系,client发送了两个数据,并且有相同的头,返回也有固定格式,基于UDP这种无连接方式,参考知乎牛说的,直接可以无视UDP了,直接看TCP

0x04. TCP分析-1
6
图中的三次握手和四次挥手还是非常明显http://dldir1.qq.com/qqfile/status/qqcam-logo.png,看了半天发现登陆到退出,全过程只是接受了一张小图片,上客户端找半天也没找到.. 没用,扔了

0x05. TCP分析-2
7
抓到一个地址183.232.127.254/cgi-bin.httpconn,搜了一下是tx的后台(c++)
用POSTMan传了一个数据,返回200,len不对,和抓的包一致,网上查这个路径也说不上来,感觉就这个路径啦,完结= =

JD客户端抓包

环境

Android6.0.1(ROOTed) tcpdump抓取 5.x及以上需要下载具有PIE的tcpdump

dcpdump安装

1
2
3
4
5
6
7
8
adb push ./Downloads/tcpdump /sdcard
adb shell
su
mv /sdcard/tcpdump /data/local/tcpdump && cd /data/local
chmod 6775 ./tcpdump
./tcpdump -i any -p -s 0 -w /sdcard/phoneCapture.pcap
# Ctrl+C 停止拦截
adb pull /sdcard/phoneCapture.pcap

登陆过程

由于保存过密码自动登陆,查看过个人页面,之后退出登陆,后重新输入密码进行登陆

分析

0x00. 直接http进行过滤

0x01.
8 进入客户端的状态,评价,收获等界面

0x02. 9 进入客户端之后后端传过来的数据

0x03.
10
11这些包中分析出来在/stat/access中将一段Key[truncated]
传给服务器,尝试base64,然并卵= =,上图 12

还有个/login_report/base64解出来是这么个东西13,后面正常,前面这个感觉像个校验码.

基本也能确定了,密码差不多就是那个form表单的key了,不过加密不知道的话也没什么卵用

Reference

资料:SSL
参考至SSL与TLS,Eric Rescorla著:
ssl流程(一般用于HTTPS):HTTP建立TCP连接之后,并在其中建立一条SSL隧道,之后在SSL隧道中发送同样的请求,服务器则以相同的方式用SSL进行相应
SSL握手流程:CSDN
TCP/UDP/IP协议分析_程姚根
TCP-PDU
Vim-16进制
Apache2-CGI
CGI-知乎
Android抓包_Trinea
linux cooked capture
TCP状态
听说能拆SSL?
SSL握手
wireshark-SSLv3
51CTO- 有关QQ登录服务器(UDP与TCP)
山鹰-qq

文章目录
  1. 1. 基础
  2. 2. 杭电
  3. 3. 163邮箱
  4. 4. qq Client
    1. 4.1. 环境
  5. 5. JD客户端抓包
    1. 5.1. 环境
    2. 5.2. dcpdump安装
    3. 5.3. 登陆过程
    4. 5.4. 分析
  6. 6. Reference