http协议为何不安全?教你使用抓包抓取到登录时输入的账号密码!

本文通过演示如何使用科来或Wireshark抓包工具,展示了HTTP协议中用户数据的不安全性。在HTTP协议下,账号密码等敏感信息可能会以明文形式在网络中传输,容易被截取。通过解码数据包,可以看到即使部分数据经过Base64编码,仍能被还原,凸显了HTTPS协议的重要性。

前言

大家可以发现,在2023年,基本上需要用户输入数据的网站都是使用https协议,简单来说就是比http更安全,使用了更高级的加密方式,即使部分网站使用http协议,用户输入数据也会使用哈希函数或者其他加密方式,http协议为什么不安全呢?我们不妨亲自抓包感受一下,自己输入的账号密码可以直接被获取,我最近正在学习网络的东西,老师在课堂演示了一遍,我觉得很有意思,于是自己找了一个网站试一下,如果有什么问题欢迎大家批评指正。
抓包软件:科来(wireshark比较流行,科来全中文界面,而且可以帮你分析数据,对于初学者来说比较友好)

1、先设置过滤条件,只捕获http的数据包

在这里插入图片描述

在这里插入图片描述

2、点击上方的TCP会话

在这里插入图片描述

3、打开网站(我这里随便找了一个学校官网)

账号我随便写了一个当天日期,2023年4月1日,密码是123456,验证码是a7ru,然后点击登录

在这里插入图片描述

然后系统提示账号密码错误,不过没关系,本来就是编的。

在这里插入图片描述

4、打开科来查看

ok,我们发现有两条记录,一般是数据比较大的那一个会有我们的账号密码,我们点击第一个

在这里插入图片描述

URL中,POST是提交账号密码的,我们点击POST的那一行,下一步点击数据流,科来会自动帮你分析:

在这里插入图片描述

然后会发现这么一行数据:

userAccount=&userPassword=&RANDOMCODE=a7ru&encoded=MjAyMzA0MDE%3D%25%25%25MTIzNDU2

这行数据有一个关键字:password,而且那个a7ru是不是很眼熟?没错,就是我们当时输入账号密码的时候那个验证码,那也就是说着一行数据就有我们的账号密码,但是我们该如何分析呢?

userAccount:用户账号,值为空
userPassword:用户密码,值为空
RANDOMCODE:随机码,值为a7ru
encoded:编码值,值为MjAyMzA0MDE%3D%25%25%25MTIzNDU2

这个字符串经过了 Base64 编码,并且包含了一个编码后的分隔符 “%%%”,当一个字符串包含百分号 “%” 时,通常表示它经过了 URL 编码,即使用特殊的编码方式将特殊字符转换为可在 URL 中安全传输的形式。在 URL 编码中,字符 “%” 用 “%25” 表示。因此,“%3D%25%25%25” 实际上是被编码的 “=%%%” 字符串。将 “%25%25%25” 转换为 “%%%”,就得到了 “=%%%”,这是一个编码后的分隔符,用于分隔两个编码的值。

MjAyMzA0MDE%3D%25%25%25MTIzNDU2 -> MjAyMzA0MDE%%%MTIzNDU2

然后将编码后的字符串部分 “MjAyMzA0MDE” 和"MTIzNDU2"解码,可以使用任何 Base64 解码工具或库进行解码:

MjAyMzA0MDE->20230401
MTIzNDU2->123456

因此,完整的解码后的字符串为 “20230401%%%123456”。是不是和我们账号密码一模一样嘞,如果我们连到了别人网络,别人可以通过这种方式抓取你的数据包,从而得到你的账号密码。而且这种已经属于Base64编码加密过的数据,有些http包数据直接就是明文显示:user=xxx&password=xxxx,甚至不需要解码,更加的不安全。

### 使用 Wireshark 抓取并分析 PPPoE 协议认证上网的过程 #### 1. 准备工作 为了抓取和分析 PPPoE 数据包,需要准备以下工具和环境: - 一台运行 Wireshark 的计算机。 - 一根网线,用于连接拨号路由器的 WAN 口与计算机的网口。 - 确保网络环境中存在 PPPoE 认证过程(例如 ADSL 拨号上网)。 - 确保 Wireshark 已正确安装并能够捕获本地网络接口的数据包。 在开始之前,请确保断开路由器电源,并将路由器的 WAN 口连接到计算机的网口[^2]。 #### 2. 配置 Wireshark 捕获数据包 打开 Wireshark,选择正确的网络接口(通常是“以太网”或“Ethernet”)。如果没有看到任何活动数据包,可能是由于网络接口未正确配置或硬件连接问题。接下来设置过滤器,仅捕获 PPPoE 相关的数据包。输入以下过滤器表达式: ```plaintext pppoe || pppoed.tags.ac_name ``` 这将帮助您专注于 PPPoE 流量以及 BRAS 的关键信息,如 AC-Name[^1]。 #### 3. 开始捕获数据包 在完成上述配置后,点击“开始捕获数据包”按钮(通常为一个鲨鱼鳍图标)。此,接通路由器电源,Wireshark 将捕获整个 PPPoE 认证过程中的数据包。 #### 4. 分析 PPPoE 数据包 PPPoE 认证过程通常包括以下几个阶段: 1. **Discovery 阶段**:客户端发送 PADI(PPPoE Active Discovery Initiation),服务器回应 PADo(PPPoE Active Discovery Offer),最后客户端选择一个服务器并发送 PADS(PPPoE Active Discovery Session-confirmation)[^3]。 - 在 Wireshark 中,这些数据包可以通过 `pppoe` 过滤器查看。 2. **Session 阶段**:建立会话后,PPP 协议开始进行认证。常见的认证方式是 PAP(Password Authentication Protocol)或 CHAP(Challenge Handshake Authentication Protocol)。 - 查找 PPP PAP 数据包,可以使用过滤器 `ppp.auth` 或直接搜索 `Authenticate-Request`。 - 在 Authenticate-Request 数据包中,您可以找到明文传输的宽带账号和密码。 #### 5. 提取账号和密码 在 PPP PAP 数据包中,`Authenticate-Request` 包含了用户的宽带账号和密码。这些信息以明文形式传输,因此可以直接读取[^2]。 以下是提取账号和密码的具体步骤: 1. 找到包含 `Authenticate-Request` 的数据包。 2. 展开协议层次结构,定位到 PPP 和 PAP 层。 3. 在 PAP 层中,查看 `Username` 和 `Password` 字段。 #### 示例代码 如果需要自动化提取账号和密码,可以使用 Python 结合 Scapy 库解析捕获的 PCAP 文件: ```python from scapy.all import rdpcap, PPP_IPCP, PPP_LCP, PPP_AUTHREQ # 读取 PCAP 文件 packets = rdpcap("capture.pcap") # 遍历数据包 for packet in packets: if PPP_AUTHREQ in packet: auth_req = packet[PPP_AUTHREQ] username = auth_req.username.decode('utf-8') password = auth_req.password.decode('utf-8') print(f"Username: {username}, Password: {password}") ``` ### 注意事项 - PPPoE 认证过程中,账号和密码以明文形式传输,因此请注意信息安全,避免泄露敏感信息。 - 使用 Wireshark 进行网络分析,需获得相关授权,以免违反法律法规。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值