面向 Linux 的网络侦察与进攻性安全工具。
Hawk 是一个网络和渗透测试实用工具,我开发它是为了能够使用同一套工具执行不同类型的任务,而不是在多个工具之间来回切换。
目前,该脚本可以执行多种任务,例如 ifconfig、ping、traceroute、端口扫描(包括 SYN、TCP、UDP、ACK、全面扫描、主机发现(扫描本地网络上的在线设备)、MAC 地址检测(获取本地网络上主机 IP 的 MAC 地址)、Banner 抓取、DNS 检查(含地理位置信息)、WHOIS、子域枚举、漏洞侦察、数据包嗅探、MAC 欺骗、IP 欺骗、SYN 泛洪、Deauth 攻击和暴力破解攻击(Beta)。
其他功能仍在开发中。未来可能实现的功能包括 WAF 检测、DNS 枚举、流量分析、XSS 漏洞扫描器、ARP 缓存投毒、DNS 缓存投毒、MAC 泛洪、死亡之 ping、网络断连攻击(非 deauth 攻击)、OSINT、电子邮件欺骗、漏洞利用、一些自动化任务等。

请注意,目前该脚本只能在 Linux 上良好运行。如果你在 Windows 或 macOS 上尝试,它可能会运行,但会出现大量错误。
此脚本已在以下系统上测试:
要为脚本安装必要的软件包,使其无任何问题地运行,只需以 root 权限运行 setup.sh 脚本即可。目前,此安装脚本仅支持基于 Debian、Red Hat 和 Arch 的发行版,这些发行版分别使用 apt、dnf 和 pacman 包管理器(Ubuntu、Kali Linux、Parrot OS、Debian、Pop!_OS、Linux Mint、Deepin、Zorin OS、MX Linux、Elementary OS、Fedora、CentOS、Red Hat Enterprise Linux、Rocky Linux、AlmaLinux、Oracle Linux、ClearOS、Arch、Black Arch、Manjaro 等)。在大多数系统上,要安装 Hawk,只需运行以下命令:
git clone https://github.com/medpaf/hawk.git
cd hawk
sudo sh setup.sh
然后,只需按照说明操作即可。 请忽略安装过程中出现的错误消息。
但是,如果你使用的是任何其他具有不同包管理器的 Linux 发行版,请使用你的发行版的包管理器手动安装这些软件包。根据所使用的具体发行版,运行此脚本所需的某些软件包可能已安装在你的机器上。
如果你想知道所需的软件包,请查看 setup.sh 文件。
安装后,要运行该程序,只需导航到项目目录并使用 python 运行 hawk.py 文件。建议以 root 身份运行脚本以获得更好的性能并避免权限错误。使用的命令如下:
sudo python3 hawk.py
要进行配置,只需转到 files/conf.py 配置文件并编辑它。
如果你想要显示系统当前的 TCP/IP 网络配置,请输入以下命令:
-ifconfig

要向一个或多个主机发送 ICMP 数据包以检查连通性,只需输入:
-ping <HOST(s) IP/FQDN>

要诊断路由路径并测量传输延迟,请使用 -traceroute 命令:
-traceroute <HOST IP/FQDN>

端口扫描通过识别连接到网络的主机以及正在运行的服务,有助于发现潜在的安全漏洞。
支持多种扫描类型,包括 TCP SYN(-scansyn)[也称为隐形扫描]、TCP Connect(-scantcp)、UDP(-scanudp)、TCP ACK(-scanack)和全面扫描(-scan)。
-scan -host <HOST(s) IP/FQDN>
-scan -host <HOST(s) IP/FQDN> -p <PORT(s)>
如果你想要扫描 IP 范围和/或端口范围,请使用以下命令之一:
-scan -host <HOST(s) IP/FQDN> -prange <START PORT> <END PORT>
-scan -iprange <START IP> <END IP> -p <PORT(s)>
-scan -iprange <START IP> <END IP> -prange <START PORT> <END PORT>

扫描后,可以看到 22(SSH)和 80(HTTP)端口均已开放。
要在给定的网络上查找当前在线设备,请输入以下命令:
-scanlan
然后输入你想要扫描的网络。

要获取局域网中一个或多个活动主机的 MAC 地址,请使用以下命令:
-getmac -host <HOST(s) IP>

版本检测(或称 Banner 抓取)是一种检索软件横幅信息的侦察技术。该横幅通常包含有关网络服务的重要信息,包括但不限于其软件名称和版本。FTP、Web、SSH 和 SMTP 服务器通常会在其横幅中暴露其正在运行的软件的关键信息。
Banner 攻击通常从枚举扫描开始,以发现开放端口。一旦你确定了要攻击的服务,就可以发送特定的数据包并检查流量以获取指定信息。
要根据你的具体需求执行 Banner 抓取,请输入以下命令之一:
-grab -host <HOST(s) IP/FQDN> -p <PORT(s)>
-grab -iprange <START IP> <END IP> -prange <START PORT> <END PORT>
-grab -host <HOST(s) IP/FQDN> -prange <START PORT> <END PORT>
-grab -iprange <START IP> <END IP> -p <PORT(s)>

此功能类似于 UNIX 系统上常用的 nslookup 命令。如果你想进行 DNS 检查,请输入以下内容:
-ns <HOST(s) IP/FQDN>

免责声明:请注意,此功能使用 IPinfo API。建议将 API 密钥更换为你自己的,因为提供的密钥可能已被其他人使用。要更换 API 密钥,请转到 files/conf.py 配置文件。
WHOIS 是一种 TCP 协议,旨在查询联系人和 DNS 信息。要查询一个或多个页面的 WHOIS 信息,只需输入:
-whois <HOST(s) IP/PQDN>

子域枚举是查找一个或多个域的有效子域的过程。
子域枚举可以揭示安全评估范围内的许多域/子域,从而增加发现漏洞的机会。
如果你想要查找某个域的常见子域,只需输入:
-sdenum <PQDN>
此命令使用默认字典来查找子域。但是,如果你想要使用自己的字典,请输入:
-sdenum <PQDN> -wordlist <WORDLIST PATH>

目录爆破是在 Web 服务器中查找目录的过程。
要执行此任务,请输入:
-dirbust <HOST IP/FQDN>
此命令使用默认字典来查找子域。但是,如果你想要使用自己的字典,请输入:
-dirbust <HOST IP/FQDN> -wordlist <WORDLIST PATH>

要扫描一个或多个主机的漏洞,请使用以下命令:
-vulnscan -host <HOST(s) IP/FQDN>

免责声明:请注意,此功能使用 Shodan API。建议将 API 密钥更换为你自己的,因为提供的密钥可能已被其他人使用。要更换 API 密钥,请转到 files/conf.py 配置文件。
要执行数据包嗅探,请输入:
-sniff

免责声明:如果你想要嗅探网络中传输的所有数据,请先将无线网卡或适配器切换到监听模式。
MAC 欺骗是生成源 MAC 地址与发送网卡地址不同的帧。要更改接口的 MAC 地址,请执行以下命令:
-macspoof -source <SOURCE MAC> -iface <INTERFACE>

如下面的截图所示,接口的 MAC 地址已成功更改。

IP 欺骗的目的是修改正确的源 IP 地址,使数据包所指向的系统无法正确识别发送方。
请注意,此命令仅适用于存在未修补漏洞的机器。要对主机的特定端口执行 IP 欺骗,请使用以下命令:
-ipspoof -source <SOURCE IP> <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
如果你想要使用随机的源 IP,请输入以下命令:
-ipspoof -source r <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
你也可以使用随机的源端口:
-ipspoof -source <SOURCE IP> r -target <TARGET IP/FQDN> <TARGET PORT>

免责声明:请仅将其用于测试目的,并以你自己的机器为目标。
SYN Flood 是一种 DDoS 攻击方法,会直接给传输层(第 4 层)带来开销,并间接给应用层(第 7 层)带来开销。
要尝试 SYN 泛洪,请输入:
-synflood -source <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
如果你想要使用随机的源端口,请输入以下命令:
-synflood -source r -target <TARGET IP/FQDN> <TARGET PORT>

免责声明:请仅将其用于测试目的,并以你自己的机器为目标。
Deauth 攻击是一种无线攻击,针对路由器与连接到该路由器的一个或多个设备之间的通信,有效地强制目标机器与接入点断开连接。
要执行此攻击,请使用以下命令:
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface <INTERFACE>
如果你打算攻击网关中的所有客户端,请输入:
-deauth -target a -gateway <GATEWAY MAC> -iface <INTERFACE>
你也可以选择默认无线接口(在 files/conf.py 中配置)来执行攻击:
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface d

在执行上述截图中的命令后,连接到该接入点的所有设备都断开了连接,并且在此脚本运行期间无法重新连接。
免责声明:要执行此攻击,请确保你拥有支持监听模式的无线网卡或适配器,并在尝试 Deauth 攻击之前将其开启。 请仅将其用于测试目的,并以你自己的机器为目标。
暴力破解攻击是一种尝试破解密码或用户名的攻击。
要执行暴力破解攻击并查找常见/弱凭据,请输入:
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME>
如果你想要使用自定义字典,请使用以下命令:
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME> -wordlist <WORDLIST PATH>
目前仅支持 SSH 服务。
免责声明:请注意,目标服务器可能具有针对此类攻击的防御机制,并阻止攻击者猜测密码的尝试。 请仅将其用于测试目的,并以你自己的机器为目标。
此命令将自动执行此脚本中可用的部分侦察技术。要执行此操作,请输入:
-autoscan <HOST(s) IP/FQDN>
大多数无线用户仅将无线网卡用作连接 AP 的站点。在管理模式下,无线网卡和驱动程序依赖处于管理模式的本地 AP 来提供无线网络连接。
某些无线网卡还支持监听模式功能。当配置为监听模式时,无线网卡停止传输数据,并嗅探当前配置的信道,将观察到的任何数据包内容报告给主机操作系统。
要将接口切换到监听模式,请使用以下命令:
-mode monitor -iface <INTERFACE>
你也可以将接口设置为默认无线接口(在 files/conf.py 中配置):
-mode monitor -iface d

如下面的截图所示,接口模式已成功更改。

但是,如果你想要将接口切换回管理模式,请输入:
-mode managed -iface <INTERFACE>
你也可以将接口设置为默认无线接口(在 files/conf.py 中配置):
-mode managed -iface d

如下面的截图所示,接口模式已成功更改。

创建一个 issue 或 pull request,或发送电子邮件至 [email protected]。
本仓库采用 MIT 许可证。