ASNMap使用手册

🌐 工具简介

ASNMap 是一个快速映射组织网络范围的 Go CLI 工具和库,通过 ASN(自治系统号)信息识别组织拥有的 IP 地址范围。支持多种输入方式和输出格式,适合网络安全测试和网络情报收集。

📋 基础用法

asnmap [参数选项]

🎯 参数详解

📥 输入选项 (INPUT)

🔍 目标类型

  • -a, -asn string[]

    • 功能:查询目标 ASN
    • 格式:ASN编号(如 AS5650)
    • 示例-a AS5650-a AS5650,AS15169
  • -i, -ip string[]

    • 功能:查询目标 IP 地址对应的 ASN
    • 格式:IPv4/IPv6地址
    • 示例-i 100.19.12.21-i 2a10:ad40::
  • -d, -domain string[]

    • 功能:查询目标域名对应的 ASN
    • 格式:域名
    • 示例-d google.com-d google.com,facebook.com
  • -org string[]

    • 功能:查询目标组织对应的 ASN
    • 格式:组织名称(如 GOOGLE)
    • 示例-org GOOGLE-org "Google LLC"
  • -f, -file string[]

    • 功能:从文件读取多个目标
    • 格式:每行一个目标的文本文件
    • 示例-f targets.txt

⚙️ 配置选项 (CONFIGURATIONS)

  • -auth

    • 功能:配置 ProjectDiscovery 云平台 (PDCP) API 密钥
    • 默认:启用(true)
  • -config string

    • 功能:指定 ASNMap 配置文件路径
    • 用途:自定义工具行为
  • -r, -resolvers string[]

    • 功能:指定使用的 DNS 解析器
    • 示例-r 8.8.8.8,1.1.1.1
  • -p, -proxy string[]

    • 功能:指定使用的代理服务器
    • 支持:逗号分隔列表或文件输入
    • 示例-p socks5://127.0.0.1:9050

🔄 更新选项 (UPDATE)

  • -up, -update

    • 功能:更新到最新版本
    • 示例asnmap -up
  • -duc, -disable-update-check

    • 功能:禁用自动更新检查
    • 用途:自动化环境中避免检查更新

📤 输出选项 (OUTPUT)

📁 输出控制

  • -o, -output string
    • 功能:将结果保存到指定文件
    • 示例-o results.txt

📊 输出格式

  • -j, -json

    • 功能:以 JSON 格式输出结果
    • 特点:便于程序解析和处理
  • -c, -csv

    • 功能:以 CSV 格式输出结果
    • 特点:适合导入电子表格
  • -v6

    • 功能:在 CLI 输出中包含 IPv6 CIDR 范围
    • 默认:仅显示 IPv4 范围

📝 输出级别

  • -v, -verbose

    • 功能:详细输出模式
    • 用途:显示更多调试信息
  • -silent

    • 功能:静默模式
    • 用途:仅输出结果,无额外信息
  • -version

    • 功能:显示工具版本信息
    • 示例asnmap -version

🎪 使用示例

示例1:基础查询

# 查询单个ASN的网络范围
asnmap -a AS15169

# 输出示例:
# AS15169 (GOOGLE):
#  - 8.8.8.0/24
#  - 8.8.4.0/24
#  - 142.250.0.0/15
#  - ...

示例2:多目标查询

# 查询多个ASN
asnmap -a AS15169,AS8075

# 查询多个域名
asnmap -d google.com,facebook.com

# 查询多个组织
asnmap -org GOOGLE,CLOUDFLARE

示例3:IP查询

# 查询IP地址所属的ASN
asnmap -i 8.8.8.8

# 查询多个IP地址
asnmap -i 8.8.8.8,1.1.1.1

示例4:文件批量处理

# targets.txt 内容:
# AS15169
# google.com
# 8.8.8.8

asnmap -f targets.txt

# 或使用不同类型的文件
echo -e "AS15169\ngoogle.com\n8.8.8.8" | asnmap

示例5:不同输出格式

# JSON格式输出
asnmap -a AS15169 -j -o google_asn.json

# CSV格式输出
asnmap -a AS15169 -c -o google_asn.csv

# 包含IPv6范围
asnmap -a AS15169 -v6

示例6:静默和详细模式

# 静默模式,仅输出CIDR范围
asnmap -a AS15169 -silent

# 详细模式,显示更多信息
asnmap -a AS15169 -v

🔧 进阶用法

与其他工具结合

# 1. 获取ASN范围后扫描
asnmap -a AS15169 -silent | mapcidr -sbh 256 | naabu -silent

# 2. 批量查询并合并结果
for asn in AS15169 AS8075 AS16509; do
    asnmap -a $asn -silent >> all_cidrs.txt
done

# 3. 生成目标列表用于nuclei扫描
asnmap -org GOOGLE -silent | httpx -silent | nuclei -t ~/nuclei-templates/

工作流自动化

#!/bin/bash
# 自动化ASN情报收集脚本
TARGETS="asn_targets.txt"
OUTPUT_DIR="intel_results"

mkdir -p $OUTPUT_DIR

while read target; do
    echo "[+] 收集 $target 的ASN信息..."
    
    # 判断目标类型
    if [[ $target == AS* ]]; then
        asnmap -a $target -j > "$OUTPUT_DIR/${target}_info.json"
    elif [[ $target =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
        asnmap -i $target -j > "$OUTPUT_DIR/ip_${target//./_}_info.json"
    elif [[ $target == *.* ]]; then
        asnmap -d $target -j > "$OUTPUT_DIR/domain_${target//./_}_info.json"
    else
        asnmap -org $target -j > "$OUTPUT_DIR/org_${target}_info.json"
    fi
    
    echo "[+] $target 信息收集完成"
done < $TARGETS

网络映射示例

# 映射组织的完整网络范围
./map_organization.sh "Google LLC"

# map_organization.sh 内容:
ORG_NAME="$1"
echo "[+] 映射 $ORG_NAME 的网络范围..."
asnmap -org "$ORG_NAME" -silent | sort -u > "${ORG_NAME// /_}_networks.txt"

# 统计网络大小
TOTAL_IPS=0
while read cidr; do
    COUNT=$(mapcidr -cl "$cidr" -c)
    TOTAL_IPS=$((TOTAL_IPS + COUNT))
done < "${ORG_NAME// /_}_networks.txt"

echo "[+] 发现 $(wc -l < "${ORG_NAME// / /_}_networks.txt") 个CIDR范围"
echo "[+] 总计 $TOTAL_IPS 个IP地址"

⚠️ 注意事项

1. API 限制

  • ProjectDiscovery 云服务可能有 API 调用限制
  • 大量查询时注意频率控制
  • 商业用途可能需要相应授权

2. 数据准确性

  • ASN 信息可能不实时更新
  • 组织的 IP 范围可能频繁变化
  • 建议结合多个来源验证数据

3. 合法使用

  • 仅用于授权的安全测试
  • 遵守目标组织的使用条款
  • 不要用于非法的网络扫描

4. 性能优化

  • 批量查询时使用文件输入
  • 静默模式减少输出开销
  • 合理配置解析器和代理

💡 使用场景

🎯 渗透测试范围定义

# 确定目标组织的攻击面
./define_scope.sh "Target Organization"

# define_scope.sh 内容:
ORG="$1"
asnmap -org "$ORG" -silent > "scope_${ORG// /_}_cidrs.txt"
echo "[+] 为 $ORG 定义了 $(wc -l < "scope_${ORG// /_}_cidrs.txt") 个网络范围"

📊 竞争对手分析

# 分析竞争对手的网络基础设施
for competitor in "Company A" "Company B" "Company C"; do
    asnmap -org "$competitor" -silent | wc -l
done

🔍 威胁情报收集

# 收集威胁组织的网络基础设施
THREAT_ACTORS=("APT29" "Lazarus Group" "Equation Group")
for actor in "${THREAT_ACTORS[@]}"; do
    echo "[+] 收集 $actor 的网络信息..."
    asnmap -org "$actor" -j > "threat_intel_${actor// /_}.json"
done

🛡️ 攻击面管理

# 监控组织的暴露网络
./monitor_exposure.sh mycompany.com

# monitor_exposure.sh 内容:
DOMAIN="$1"
TODAY=$(date +%Y%m%d)

# 获取当前ASN信息
asnmap -d $DOMAIN -silent > "asn_${TODAY}.txt"

# 与昨日对比
if [ -f "asn_$(date -d yesterday +%Y%m%d).txt" ]; then
    diff "asn_$(date -d yesterday +%Y%m%d).txt" "asn_${TODAY}.txt"
fi

🔄 故障排除

常见问题

  1. API 认证失败

    error: authentication failed
    

    解决:检查 PDCP API 密钥配置,或使用 -auth false 禁用认证

  2. 无结果返回

    No results found
    

    解决:确认目标存在且格式正确,尝试不同的查询类型

  3. 网络连接问题

    error: could not connect to service
    

    解决:检查网络连接,配置代理 -p 或使用其他解析器 -r

调试技巧

# 启用详细模式查看完整过程
asnmap -a AS15169 -v

# 使用自定义解析器
asnmap -a AS15169 -r 8.8.8.8,9.9.9.9 -v

# 检查版本
asnmap -version

📚 最佳实践

  1. 配置管理

    # 使用配置文件
    echo '{
      "api_key": "your-key",
      "resolvers": ["8.8.8.8", "1.1.1.1"],
      "proxy": "socks5://127.0.0.1:9050"
    }' > config.json
    
    asnmap -config config.json -a AS15169
    
  2. 结果验证

    # 验证发现的CIDR范围
    asnmap -a AS15169 -silent | while read cidr; do
      echo "验证 $cidr..."
      ping -c 1 $(echo $cidr | sed 's/\/.*//') && echo "存活"
    done
    
  3. 数据持久化

    # 保存原始JSON数据便于分析
    asnmap -a AS15169 -j > raw_data.json
    
    # 提取CIDR范围
    asnmap -a AS15169 -silent > cidrs_only.txt
    
  4. 性能优化

    # 批量处理使用文件而不是命令行参数
    asnmap -f large_target_list.txt -silent
    
    # 使用管道处理结果
    asnmap -f targets.txt -silent | parallel -j 4 "nmap -sS {}"
    
posted @ 2026-01-27 23:43  ffff5  阅读(13)  评论(0)    收藏  举报