Hping3:在Linux上创建TCP / IP数据包并执行DoS攻击

当我们要检查连接性时,我们都使用Ping命令,该工具将ICMP数据包发送到特定服务器,以了解通信是否正确或存在问题。 但是,此工具非常简单,几乎不允许对数据包进行任何修改,也不能使用其他协议发送信息。 Hping3是一个更高级的应用程序,它将使我们能够修改通过TCP / IP协议发送的数据包,以便我们可以更好地控制这些数据包,从而能够根据需要进行调整。

主要特点

Hping3是用于 Linux 这将使我们能够轻松地分析和组合TCP / IP数据包。 与用于发送ICMP数据包的常规ping不同,此应用程序允许发送TCP,UDP和RAW-IP数据包。 除了分析数据包外,此应用程序还可用于其他安全目的,例如,测试数据包的有效性。 火墙 通过不同的协议,检测可疑或经过修改的数据包,甚至防御攻击。 系统或防火墙的DoS。

平安3

过去,此工具用于解决网络安全问题,但我们也可以使用它来测试网络和主机。 我们可以使用此工具完成的一些主要应用程序如下:

  • 检查防火墙的安全性和运行情况。
  • 使用它作为高级端口扫描,尽管最好将Nmap用于此任务。
  • 使用不同的协议,ToS,分段等进行网络测试
  • 手动找出路线上的MTU。
  • 使用所有支持的协议的高级traceroute
  • 来自操作系统的远程指纹
  • 查看时间
  • TCP / IP堆栈审核

由于此工具的可能性很大,因此在本文中,我们将向您展示主要用途和操作方法。

安装Hping3

Hping3在以下位置的官方存储库中可用 Ubuntu,Debian和其他Linux发行版,因此要安装它,我们只需要打开一个终端(或Synaptic之类的软件包管理器)并输入以下内容:

sudo apt install hping3

该工具将占用大约3,600 KB,一旦安装,我们就可以开始使用它。

Hping3命令清单

该程序支持的功能非常丰富。 从执行简单的ping到通过特定端口发送数据包甚至隐藏源IP。 如果我们想深入了解该程序提供给我们的所有参数,只需在终端中键入以下内容,就可以查阅该工具中包含的帮助:

hping3 --help

该工具的基本用法:

  • v –version显示hping3的当前版本
  • -c –计数数据包计数器
  • -i –间隔超时(uX表示X微秒,例如-i u1000)
    • – -i u10000的快速别名(每秒10个数据包)
    • – -i u1000的快速别名(每秒100个数据包)
    • –Flood尽快发送数据包,不显示响应。
  • -n –带数字的数字输出
  • -q –安静的静默命令,不显示在屏幕上
  • -I –接口的接口名称,如果未设置任何内容,则默认情况下是上层门默认的接口。
  • -V –详细详细模式,用于调试
  • -D –调试调试信息
  • -z –bind bind ctrl + za ttl(默认为目标端口)
  • -Z –unbind取消ctrl + z的链接
  • –对每个匹配的数据包发出哔哔声

模式:

  • 默认模式是TCP
  • -0 –rawip RAW IP模式
  • -1 –icmp ICMP模式
  • -2 –udp UDP模式
  • -8 –扫描模式扫描模式。
  • -9 –准备聆听模式

示例:hping –scan 1-30,70-90 -S www.target.com

IP地址是:

  • -a –spoof欺骗源IP地址
    • –目的地随机目标IP地址。
    • –随机源的随机源IP地址。
  • -t –ttl ttl(默认64)
  • -N –id id(随机默认值)
  • -W –winid使用win * id字节顺序
  • -r –rel使id字段相对化(以估计主机流量)
  • -f –frag将数据包分成多个片段,可以遍历弱ACL
  • -x –morefrag片段更多
  • -y –dontfrag不会对数据包进行分段。
  • -g –fragoff设置片段偏移
  • -m –mtu设置虚拟MTU,这意味着数据包的片段大于MTU。
  • -o –tos服务类型(默认为0x00),请尝试执行–tos帮助
  • -G –rroute包括RECORD_ROUTE选项并显示路径缓冲区
    • –lsrr松散的源路由和路由日志
    • –ssrr严格的源路由和路由日志
  • -H –ipproto仅在RAW IP模式下设置IP协议。

ICMP:

  • -C –icmptype ICMP类型(默认为ICMP Echo请求)
  • -K –icmpcode ICMP代码(默认为0)
    • –Force-icmp发送所有ICMP类型(默认情况下仅发送支持的类型)
    • –Icmp-gw设置ICMP重定向的默认网关地址(默认0.0.0.0)
    • –icmp –icmptype 13的–icmp-ts别名(ICMP时间戳记)
    • –icmp –icmptype 17的–icmp-addr别名(ICMP子网掩码地址)
    • –icmp-help显示其他icmp选项的帮助。

ICMP代码

知道hping3可以向我们展示的一些ICMP代码非常有用,下面列出了所有最常用的代码:

TCP/UDP

  • -s –baseport基本源端口,默认为随机
  • -p –目标端口[+] [+] 目标位置(默认为0)ctrl + z inc / dec
  • -k –保留源端口
  • -w –win窗口大小,默认为64
  • -O –tcpoff将tcp数据偏移设置为false(而不是tcphdrlen / 4)
  • -Q –seqnum仅显示序列号
  • -b –badcksum(尝试发送带有欺骗性IP校验和的数据包),许多系统在发送数据包时会修复此校验和,因此UDP / TCP级别的校验和不正确。
  • -M –setseq设置TCP序列号
  • -L –setack设置TCP确认
  • -F –fin设置FIN标志
  • -S –syn设置SYN标志
  • -R –rst设置RST标志
  • -P –设置PUSH标志
  • -A –ack设置ACK标志
  • -U –urg设置URG标志
  • -X –xmas设置未使用的X标志(0x40)
  • -Y –ymas设置未使用的Y标志(0x80)
    • –tcpexitcode使用最后的tcp-> th_flags作为退出代码
    • –Tcp-mss使用给定值启用TCP MSS选项
    • –Tcp-timestamp启用TCP时间戳选项以猜测正常运行时间。

所有人共有的选项

  • d –数据数据大小,默认为0。
  • -E –来自文件的文件数据。
  • -e –sign添加签名
  • -j –以十六进制格式转储转储数据包
  • -J –print转储可打印字符
  • -B –safe启用“安全”协议
  • -u –end告诉您文件何时结束
  • -T –traceroute traceroute模式(意味着–bind和–ttl 1)
    • –在跟踪路由模式下收到第一个非ICMP数据包时,Tr-stop退出
    • –Tr-keep-ttl保持源TTL固定,仅用于监视一跳
    • –Tr-no-rtt在traceroute模式下不计算也不显示RTT信息
  • ARS软件包说明(新的和不稳定的)
    • –Apd-send发送APD描述的数据包

使用Hping3的示例

简单的ping测试

我们可以像常规ping命令一样使用此工具,获得几乎相同的结果。 为此,我们只需键入:

hping3 www.google.es

Hping3_tutorial_Linux_foto_1

我们将看到如何执行此简单的连接测试。 (我们可以将Google域更改为其他任何域,也可以直接使用IP对其执行ping操作)。

绘图连接路径

以与“ tracert”选项类似的方式 Windows 或Linux中的“ traceroute”,通过此工具,我们还可以跟踪从数据包离开计算机到到达目的地的数据包网络之间的所有跳转,从而能够随时了解数据包中是否存在某种问题。连接。

为此,我们只需键入:

hping3 redeszone.net -t 1 --traceroute

使用TCP SYN标志进行端口扫描

此工具还允许我们以TCP协议最纯净的方式发送数据包 NMAP 风格。 要使用此方法执行扫描,我们将在终端中键入“ hping3 –S [目标IP] –p [端口]”,结果类似于以下内容:

hping3 -S www.google.es –p 80

此测试的结果将返回 SA 标志,表示它对应于 同步/确认 ,即通信已被接受,或者是相同的, 端口是开放的 。 否则,如果值为 RA它 对应于 RST /确认 或相同之处在于,由于以下原因未正确执行通信 端口关闭 或过滤。

Hping3_tutorial_Linux_foto_2

这样,我们将能够知道,例如,是否允许与某个端口的通信,或者防火墙是否对其进行过滤。

使用自定义文本文件对软件包进行签名

可以使用此工具来修改我们发送的包裹,并在其中插入类似于签名的个性化消息。 为此,我们只需键入:

hping3 redeszone.net -d 50 -E firmaredeszone.txt

此命令将在Ping包中引入指示的txt文件的内容。 如果我们使用诸如WireShark之​​类的合适软件来分析这些软件包,我们会发现其中包含的是相关文件的内容。

Hping3_tutorial_Linux_foto_3

输入的参数表示:

  • -d:我们要输入的消息的长度,在这种情况下为50。
  • -E:我们将从中获取要引入到程序包中的消息签名的文件。

我们还可以使用其他参数,例如-p表示要将这些数据包发送到的端口,或-2表示通过UDP协议发送数据包的端口。

生成多个请求以测试DoS和DDoS保护

该工具还将使我们能够针对网络攻击(例如DoS和DDoS)检查系统的稳定性,从而生成针对localhost或针对网络内部(或外部)的其他服务器的真实测试。

我们只需键入以下内容,即可通过修改TCP / IP数据包中相同源IP的方式来进行一系列唯一的ping操作:

hping3 --rand-source 192.168.1.1

同样,我们可以添加–flood参数,以便实时批量发送数据包。 这样,我们将能够首先检查防火墙是否正常工作,其次检查系统对DDoS攻击威胁的响应能力。

为此,我们将输入:

hping3 --rand-source --flood 192.168.1.1

Hping3_tutorial_Linux_foto_4

在短短的几秒钟内,我们已经生成了超过25,000个数据包,因此我们必须小心,因为我们的网络可能被阻塞并且无法使用。

这样,将开始生成大量具有“假来源”的数据包(由于rand-source参数),这些数据包将连续发送到目标服务器(在这种情况下为192.168.1.1)。 通过这种方式,我们可以验证系统针对DDoS攻击的稳健性,因为如果系统停止工作或崩溃,可能会导致配置失败,并且我们必须采取相应的措施来防止这种情况在实际环境中发生。

该工具非常有用,尽管应始终在封闭和受控的环境中使用,因为出门在外可能会导致对我们不应该进行的团队进行拒绝服务攻击,这是非法的,并可能最终会受到制裁为了它。

我们建议你 访问官方的hping手册页 找出所有选项。