如何通过ARP欺骗获取他人的校园网账号和密码

分类 - 技术 共有 2 条评论

不知道大家是不是听过这么一句话:“不要乱连免费WiFi,可能你的信息就被泄露了”。这句话其实特别有道理,不得不说,我们现在的网络环境隐藏着太多风险。可能上一秒你还在高兴自己找到了免费的WiFi,下一秒你的银行账户就被洗劫一空。今天我就借着这个例子来告诉大家,为什么不要乱连WiFi。

先介绍几个相关的知识,有助于后面的理解。

ARP (地址解析协议)

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
--摘自百度百科

抓包

包(Packet)是TCP/IP协议通信传输中的数据单位,一般也称为数据包。在包交换网络里,单个消息被划分为多个数据块,这些数据块称为包,它包含发送者和接收者的地址信息。这些包然后沿着不同的路径在一个或多个网络中传输,并且在目的地重新组合。而抓包的意思也就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
--摘自百度百科

从这里可以得到一个结论,我们可以通过伪装MAC地址来进行ARP欺骗,这样可以让被攻击的主机发送的消息传输到攻击者的主机上,而不是传输到真正的目标服务器上。在攻击者的主机上进行抓包,然后获取包内的数据,其实想要做到这些其实并不复杂,由于cain软件太久没更新所以只能用xp以及以下的系统。

本次需要准备的东西有:

  1. Windows Xp系统的电脑(或者是虚拟机版本)
  2. 数据包抓包软件(wireshark XP版) [点击下载]3
  3. ARP欺骗工具(cain) [点击下载]4
  4. 无线路由器

买个网卡更方便,先不讲这种:

  1. 数据包抓包软件(wireshark win10版) [点击下载]5
  2. 可以开热点的网卡(360wifi 3代)

大家都知道每台网络设备都有一个mac地址,路由器也不例外。在路由器的局域网下,局域网内的主机将数据通过路由器来进行传输。通过将攻击者主机里的网卡伪装成路由器,被攻击的主机发送的数据不流向路由器,而是流到了攻击者的主机里。

准备工作

将路由器的wan口连接到校园网接入口,将攻击者的一台windows电脑连接到路由器的lan口,作为局域网主机。

安装Windows XP 虚拟机,将网络适配器改为桥接模式,并且勾选复制物理网络连接状态。
1.jpg

在电脑里先安装cain再安装wireshark,取消勾选 Install WinPcap 4.1.3然后直到安装结束。cain由于其软件的特殊性,杀毒软件会造成误报。
2.jpg

软件操作

双击cain,会提示开启了防火墙,点击确定后我们可以看到以下界面。
3.jpg

如图点击第三个选项卡Sniffer ,点击左下角第一个Hosts
4.jpg

这里我使用自己的手机来当被攻击的主机,这里我将手机连入此局域网。

点击左上角第二个按钮开始嗅探功能,点击成功后会往下凹,如图所示。
5.jpg

然后在下面的空白栏右键点击Scan Mac Addresses扫描Mac地址,在弹出的界面里选择Range输入搜索的范围,点击OK(我的路由器分配局域网ip地址是192.168.1.1,所以我填的搜索范围是192.168.1.1~192.168.1.1.254,这一步是用来搜索局域网内可攻击的目标的。)

6.jpg

所以我得到了除了虚拟机之外的另外三个ip地址和Mac地址,第一个是路由器的网关地址和Mac地址,第二个是我的电脑的ip地址,第三个是我手机的ip地址和网关地址。

8.jpg

接着点击APR选项卡(1),选中左框中的APR(2),然后点击一下红色框内的空白地方(3),然后第二排选项里的加号会变蓝(4)。

7.jpg

点击加号,添加欺骗规则,左边选择你想要伪装的目标,右边选择攻击者的目标,由于我们想伪装成路由器所以左边选择192.168.1.1 右边选择192.168.1.101,最后点击OK(要点一下右边的)。

9.jpg

点击第三个黄色的图标 start APR ,然后 Status会变成poisoning

10.jpg

打开Wireshark选择监听的网卡(1),点击Start进入监听。
11.jpg

此时我们已经成功欺骗手机,让它以为我们是路由器,而我们可以在这里看到所有的数据出入,如图所示。

12.jpg

因为我们要获取的是其他人的校园网账号和密码,所以我们选择过滤选项,来筛选出我们需要的包,因为登录校园网是http—post的方式,并且目的地址是172.16.154.130,所以我们设置过滤器规则后回车确认。

ip.dst==172.16.154.130 && http.request.method=="POST"

13.jpg

接下来我在手机上模拟被攻击者的登录操作。(假设故事的主人公是小明他的学号是201616010409密码是111111)

情景再现:

有一天小明手机没网了,他突然发现这里有一个免费的wifi,一连接才知道需要登录校园网账号和密码,而他自己刚好有一个校园网账号和密码,他就打开手机上的校园网登录器,输入了自己的账号和密码。其实他全然不知道我们已经在路由器端获取了他的账号和密码,如图所示,选择这一条数据包,打开其中的post内容,我们可以看见被加密并且再经过URL编码的账号和密码。
14.jpg

15.jpg

由于学校校园网加密算法已经被破解,所以我们可以写一个反加密程序来进行解密。

先进行URL解码:

账号:
16.jpg

密码:
17.jpg

得到加密后的账号为:645:5:45484=加密后的密码为:7cc>?cc<=cc:
经过我的分析发现了其中的解密方法,然后我就写了个解密程序。
结果:
18.jpg

成功获取了小明的密码。

源代码如下:

#include<stdio.h>
#include<string.h>
#include<windows.h>
void Decode(char *username, char *password)
{
    int i=0,j=0;
    char encodepassword[30];
    while (username[i] != '\0')
    {
        username[i] -= 4;
        i++;
    }
    char key[] = "1234567890";
    for (i=0;i<=strlen(password);i+=2)
    {
        if (j % 2 == 0)
            encodepassword[j] = password[i];
        else
            encodepassword[j] = password[i+1];
        j++;
    }
    encodepassword[j] = '\0';
    for (i = 0; i < strlen(encodepassword); ++i)
    {
        int j = encodepassword[i] - 54;
        encodepassword[i] =(char)(j ^ key[strlen(key) - i%strlen(key) - 1]);
    }
    strcpy(password, encodepassword);
}
int main()
{
    char Username[30];
    char Password[30];
    scanf("%s", Username);
    scanf("%s",Password);
    Decode(Username,Password);
    printf("username:%s\npassword:%s\n", Username, Password);
    system("pause");
    return 0;
}

本文为Lw-LovelyWhite原创,转载请说明出处,如果你有任何建议或者意见欢迎评论区留言。

文章评论
  1. 小黄.

    我是小白+1

    回复
  2. 木木夕

    我是学计算机网络的,怎么感觉和小白差距那么大

    回复