ARP欺骗

ARP欺骗

一·前置知识

(1)协议简介

SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。

(2)SMTP工作原理

SMTP通常有两种工作模式。发送SMTP和接收SMTP。具体工作方式为:发送SMTP在接收到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向DNS查询远端邮件服务器的MX记录,并建立与远端接收SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方向传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此反复多次。当接收者收到全部邮件后会接收到特别的序列,入伏哦接收者成功处理了邮件,则返回OK应答。

(3)ARP欺骗原理

ARP协议简介: ARP是一种用于解析IP地址和MAC地址之间关系的协议。当一台计算机需要与另一台计算机通信时,它会使用ARP协议查询目标IP地址对应的MAC地址。

攻击者发送虚假ARP响应: 攻击者通过发送虚假的ARP响应,欺骗目标计算机。攻击者向网络中的目标发送ARP响应,声称自己是另一台计算机的MAC地址。这样,目标计算机将错误的MAC地址与目标IP地址关联起来。

目标计算机更新ARP缓存: 收到虚假ARP响应的目标计算机会将欺骗者提供的错误MAC地址存储在其ARP缓存中。此时,目标计算机会认为欺骗者的MAC地址是目标IP地址的正确映射。

流量被重定向: 由于目标计算机已经将错误的MAC地址存储在ARP缓存中,所有发送到目标IP地址的网络流量都将被发送到欺骗者而不是真正的目标。

中间人攻击: 攻击者可以在中间人位置拦截、修改或监视通过它的所有流量。这允许攻击者捕获敏感信息,例如用户名、密码等,或者对通信进行操纵。

二.实验原理

Kali作为攻击者,利用arp欺骗成为受害者Ubuntu和VMware网关之间的中间人,从而获取Ubuntu访问163 SMTP服务器的数据流,随之进行进一步的分析利用。

三.详细实验步骤

攻击机:kail 192.168.63.136 00:0c:29:dc:86:ac

目标机:ubuntu 192.168.63.129 00:0c:29:4b:00:4e

网关:192.168.63.1 00:50:56:C0:00:08

在攻击机kail中启用流量转发,这样被攻击机就不会断网

1
echo 1 > /proc/sys/net/ipv4/ip_forword 

启动ettercap -G启动图形化界面(该工具已经内置在kail中,无需再次安装)

我们选择目标网关192.168.63.1与目标地址192.168.63.129

进行自动ARP欺骗

此时我们在目标机中输入arp查看网关地址,发现已将变成了攻击机的mac地址

尝试获取目标主机的http信息,使用如下命令,将截获的数据包保存为ubuntu129.pcap

1
tcpdump -i eth0 host 192.168.63.129 and tcp port 80 -w /tmp/ubuntu129.pcap

在拦截的数据包中我们可以看到目标主机曾访问了某大学的一些网页

至此,arp欺骗已基本完成,下面进行邮件拦截,首先看一下自己邮箱的SMTP和POP3服务有没有正常开启

在目标机上运行脚本发送邮件即可,发送脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# -*-coding: utf-8-*-

import smtplib
from email.mime.text import MIMEText

SMTPSrv = "smtp.126.com"
Sender = "[email protected]"#这里输入自己的邮箱地址
Passwd = "your_email_password_or_app_password" # 使用邮箱的登录授权码而非直接密码

txt = "hello qfnu!!!!"
msg = MIMEText(txt)
msg['Subject'] = "hello QFNU"
msg['From'] = Sender
msg['To'] = "[email protected]"

# 使用SMTP_SSL连接,并将端口改为587
with smtplib.SMTP_SSL(SMTPSrv, 587) as smtp:
smtp.login(Sender, Passwd)
smtp.sendmail(Sender, ["[email protected]"], msg.as_string())###这里可以填自己的收件地址

在接收端我们可以看到发送的邮件

在攻击机端,我们过滤出SMTP协议的数据包后,可以看到目标主机的邮件发送行为数据。我这里使用的是126邮箱的587端口,可以看到获取的数据都是加密数据,同学们感兴趣的也可以尝试使用25端口,尝试获取SMTP明文数据。

当我们用以下脚本,利用25端口测试时,可以捕获到明文数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python
# -*-coding: utf-8-*-

import smtplib
from email.mime.text import *

SMTPSrv = "smtp.163.com"
Sender = "[email protected]"
Passwd = "XXXXX"

txt = "Hello, Qufu Normal University students"
msg = MIMEText(txt)
msg['Subject'] = "hello,QFNU"
msg['From'] = Sender
msg['To' ] = "[email protected]"

smtp = smtplib.SMTP(SMTPSrv, 25)
smtp.login(Sender, Passwd)
smtp.sendmail(Sender, [Sender], msg.as_string())
smtp.quit()

我们可以在攻击机中看到捕获的明文信息,例如收件人,发件人,邮件内容等。


ARP欺骗
https://erkangkang.github.io/2024/01/14/实训一_ARP欺骗实验/
作者
尔康康康康
发布于
2024年1月14日
许可协议