在 Kali 上利用 Zmap 搭建攻击炮台

admin 2025年1月12日21:28:33评论17 views字数 5310阅读17分42秒阅读模式

在网络安全领域,端口扫描是一项重要的基础操作,Zmap 作为一款高效的端口扫描工具,备受关注。本文将详细介绍在 Kali 系统上利用 Zmap 搭建攻击炮台的相关内容,包括 Zmap 的介绍、安装、用法以及一些拓展应用。

一、Zmap 介绍

Zmap 是由美国密歇根大学的研究者开发的一款快速端口扫描工具。其独特之处在于采用了高效的扫描方式,能够在极短时间内对大量的 IP 地址进行扫描,为网络安全研究和相关工作提供了有力支持。

(一)工作原理

Zmap 基于 ICMP 协议工作,它通过向目标主机发送大量的 ICMP Echo Request 包来探测目标主机上的端口状态。具体而言,如果目标主机的某个端口处于开放状态,那么它会返回一个 ICMP Echo Reply 包;反之,若端口未开放,则不会有任何响应。借助这种机制,Zmap 能够迅速识别出目标主机上的开放端口。

为进一步提升扫描效率,Zmap 运用了多线程技术,可同时向多个目标主机发送 ICMP Echo Request 包,并快速处理响应,大大缩短了扫描所需的时间。

二、Zmap 安装

在 Kali 系统上安装 Zmap,需要按照以下步骤进行操作:

(一)更新系统和安装依赖(环境准备)

在终端中依次执行以下命令,以更新系统并安装所需的依赖包:

sudo apt-get update
sudo apt install -y build-essential cmake git

(二)克隆 Zmap 项目仓库

使用 git 命令克隆 Zmap 项目仓库到本地,并进入该目录:

git clone https://github.com/zmap/zmap.git
cd zmap

(三)编译和安装 Zmap

在 Zmap 项目目录下创建 build 文件夹,进入该文件夹后,使用 cmake 进行配置,最后执行安装命令:

mkdir build
cd build
cmake..
sudo make install

(四)测试 Zmap 是否安装成功

安装完成后,在终端中输入以下命令,若能正确输出版本信息,则说明 Zmap 已成功安装:

zmap --version

三、Zmap 用法

在使用 Zmap 扫描器之前,务必确保该扫描工具能够找到网关,否则将无法发送数据包。Zmap 的使用涉及众多参数,下面将详细介绍其基本用法和参数说明。

(一)基本用法示例

例如,要扫描 80 端口的 IP,并将结果输出到 output/scan_resutle_ips.txt 文件中,可使用以下命令:

zmap -p 80 -O output/scan_resutle_ips.txt

(二)参数用法说明

Zmap 的参数众多,涵盖基本参数、扫描选项、网络选项、探测模块、数据输出、日志和元数据以及其他选项等多个方面。

  1. 基本参数
    • -p, --target-port=port:指定要扫描的端口号,适用于 TCP 和 UDP 扫描。
    • -o, --output-file=name:设置输出文件。
    • -b, --blacklist-file=path:指定要排除的子网文件,采用 CIDR 表示法,例如 192.168.0.0/16
    • -w, --whitelist-file=path:指定要限制扫描的子网文件,同样使用 CIDR 表示法,例如 192.168.0.0/16
  2. 扫描选项
    • -r, --rate=pps:设置每秒发送的数据包速率。
    • -B, --bandwidth=bps:设置每秒发送的比特速率,支持 G、M 和 K 后缀。
    • -n, --max-targets=n:限制要探测的目标数量,可以是数字或地址空间的百分比。
    • -t, --max-runtime=ses:限制发送数据包的时间长度。
    • -N, --max-results=n:限制返回的结果数量。
    • -P, --probes=n:向每个 IP 发送的探测包数量,默认为 1。
    • -c, --cooldown-time=secs:发送最后一个探测包后继续接收的时间长度,默认为 8 秒。
    • -e, --seed=n:用于选择地址排列的种子。
    • --retries=n:如果发送失败,尝试发送数据包的最大次数,默认为 10 次。
    • -d, --dryrun:不实际发送数据包。
    • --shards=N:设置总分片数,默认为 1。
    • --shard=n:设置此扫描的分片编号,从 0 开始索引,默认为 0。
  3. 网络选项
    • -s, --source-port=port|range:指定扫描数据包的源端口。
    • -S, --source-ip=ip|range:指定扫描数据包的源地址。
    • -G, --gateway-mac=addr:指定网关 MAC 地址。
    • --source-mac=addr:指定源 MAC 地址。
    • -i, --interface=name:指定要使用的网络接口。
    • -X, --vpn:发送 IP 数据包而不是以太网数据包,适用于 VPN 环境。
  4. 探测模块
    • -M, --probe-module=name:选择探测模块,默认为 tcp_synscan
    • --probe-args=args:传递给探测模块的参数。
    • --list-probe-modules:列出可用的探测模块。
  5. 数据输出
    • -f, --output-fields=fields:指定结果集中应输出的字段。
    • -O, --output-module=name:选择输出模块,默认为 default
    • --output-args=args:传递给输出模块的参数。
    • --output-filter=filter:对响应字段指定一个过滤器,以限制发送到输出模块的响应。
    • --list-output-modules:列出可用的输出模块。
    • --list-output-fields:列出选定探测模块可以输出的所有字段。
  6. 日志和元数据
    • -v, --verbosity=n:设置日志详细程度,范围为 0 - 5,默认为 3。
    • -l, --log-file=name:将日志条目写入文件。
    • -L, --log-directory=directory:将日志条目写入此目录中的带时间戳的文件。
    • -m, --metadata-file=name:指定扫描元数据的输出文件(JSON 格式)。
    • -u, --status-updates-file=name:将扫描进度更新写入 CSV 文件。
    • -q, --quiet:不打印状态更新。
    • --disable-syslog:禁用向 syslog 发送日志消息。
    • --notes=notes:将用户指定的注释插入扫描元数据中。
    • --user-metadata=json:将用户指定的 JSON 元数据插入扫描元数据中。
  7. 其他选项
    • -C, --config=filename:读取配置文件,可在其中指定上述任何选项,默认配置文件为 /etc/zmap/zmap.conf
    • --max-sendto-failures=n:在扫描中止之前,NIC 发送失败的最大次数,默认为 -1。
    • --min-hitrate=n:在扫描中止之前,扫描可以达到的最小命中率,默认为 0.0。
    • -T, --sender-threads=n:用于发送数据包的线程数,默认为 1。
    • --cores=STRING:指定要绑定的核心列表,用逗号分隔。
    • --ignore-invalid-hosts:忽略白名单/黑名单文件中的无效主机。
    • -h, --help:打印帮助并退出。
    • -V, --version:打印版本并退出。

(三)示例

以下是一些常见的 Zmap 使用示例:

  • zmap -p 80:扫描互联网上的 tcp/80 端口主机,并将结果输出到标准输出(stdout)。
  • zmap -N 5 -B 10M -p 80:以 10 Mb/s 的速度扫描,找到 5 个 HTTP 服务器。
  • zmap -p 80 10.0.0.0/8 192.168.0.0/16 -o:在 tcp/80 上扫描这两个子网。
  • zmap -p 80 1.2.3.4 10.0.0.3:在 tcp/80 上扫描 1.2.3.4 和 10.0.0.3。

(四)探测模块(tcp_synscan)帮助

tcp_synscan 探测模块通过发送 TCP SYN 数据包到特定端口进行探测。可能的分类有 synack 和 rst,其中 SYN - ACK 数据包被视为成功响应,重置数据包则被认为是失败响应。

(五)输出模块(csv)帮助

默认情况下,ZMap 以 ASCII 形式(例如:192.168.1.5)将唯一的、成功的 IP 地址(例如,来自 TCP SYN 扫描的 SYN - ACK)输出到标准输出(stdout)或指定的输出文件。这一过程由 “csv” 输出模块内部处理,等效于运行 zmap --output-module=csv --output-fields=saddr --output-filter="success = 1 && repeat = 0"

四、测试 IP 地址存活性

为了确保扫描得到的 IP 地址可用,我们可以编写测试代码来验证。以下是一个使用 Python 和 requests 库实现的 IP 地址存活性测试示例:

import requests
import re


defload_proxies(file_path):
    proxies = []
    pattern = re.compile(r"(d{1,3}(?:.d{1,3}){3})(?::(d+))?")
with open(file_path, 'r'as file:
for line in file:
            line = line.strip()
            match = pattern.search(line)
if match:
                ip = match.group(1)  # 提取 IP
                port = match.group(2or"80"# 如果未指定端口,则默认 80
                proxies.append(f"{ip}:{port}")
return proxies


defcheck_proxy(proxy):
"""验证代理是否可用"""
    test_url = "http://www.baidu.com"
    proxies = {"http"f"http://{proxy}""https"f"http://{proxy}"}
try:
        response = requests.get(test_url, proxies=proxies, timeout=2)
if response.status_code == 200:
returnTrue
except Exception:
pass
returnFalse


defsave_proxies(proxies, output_file):
# """保存可用代理到文件"""
with open(output_file, 'w'as file:
for proxy in proxies:
            file.write(proxy + 'n')


defmain(input_file, output_file):
    proxies = load_proxies(input_file)
    print(f"总共加载了 {len(proxies)} 个代理,正在验证...")
    valid_proxies = []
for proxy in proxies:
if check_proxy(proxy):
            print(f"可用代理: {proxy}")
            valid_proxies.append(proxy)
else:
            print(f"无效代理: {proxy}")
    save_proxies(valid_proxies, output_file)
    print(f"验证完成!共找到 {len(valid_proxies)} 个可用代理,已保存到 {output_file}")


if __name__ == "__main__":
# 输入文件和输出文件路径
    input_file = f"IP 地址测活\raw_ips.txt"# 输入的代理文件
    output_file = f"IP 地址测活\valid_proxies.txt"# 输出的可用代理文件
    main(input_file, output_file)

五、BP 添加扩展设置

在某些情况下,我们可能需要为 BP(Burp Suite,一款常用的 Web 安全测试工具)添加扩展设置,以下是相关步骤:

(一)配置 Python 环境

下载 jython.jar 文件,下载地址为:https://repo1.maven.org/maven2/org/python/jython - standalone/2.7.4/

在 Kali 上利用 Zmap 搭建攻击炮台

(二)添加环境插件到 BP 工具

完成 jython.jar 文件下载后,按照 BP 工具的相关操作指引,将其添加为环境插件。

在 Kali 上利用 Zmap 搭建攻击炮台

(三)设置插件模块

  1. 下载插件模块:访问链接 https://github.com/Maikefee/BurpAutoProxySwitcherPlugins_Maikefee/tree/main 下载所需的插件模块。
  2. 添加插件模块:将下载好的插件模块按照 BP 工具的规定方式添加到相应位置。在 Kali 上利用 Zmap 搭建攻击炮台
  3. 启用插件模块:在 BP 工具中找到已添加的插件模块,并将其启用,使其能够在后续的操作中发挥作用。在 Kali 上利用 Zmap 搭建攻击炮台

原文始发于微信公众号(泷羽Sec-慕云):在 Kali 上利用 Zmap 搭建攻击炮台

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月12日21:28:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   在 Kali 上利用 Zmap 搭建攻击炮台http://cn-sec.com/archives/3621044.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息