ASNMap を活用した組織ネットワーク範囲の特定と調査手法

ツール概要

ASNMap は、Go 言語で構築されたコマンドラインインターフェース(CLI)およびライブラリであり、自治システム番号(ASN)を利用して組織が保有する IP アドレス範囲を迅速に特定するためのツールです。セキュリティ評価やネットワークインテリジェンス収集において、多様な入力形式と出力オプションを提供し、効率的な調査を可能にします。

コマンド構造と主要オプション

基本的な実行形式は asnmap [オプション] となります。主な機能は入力源の指定、設定管理、出力制御の 3 つに分類できます。

入力源の指定

  • ASN 直接指定: -a または -asn を使用し、AS 番号(例:AS13335)を入力します。
  • IP アドレス: -i または -ip で IPv4/IPv6 アドレスを指定し、所属 ASN を逆引きします。
  • ドメイン名: -d または -domain でドメインを指定し、関連する ASN を解決します。
  • 組織名: -org を使用して組織名(例:CLOUDFLARE)から ASN を検索します。
  • ファイル入力: -f または -file で、複数のターゲットが記載されたテキストファイルを読み込めます。

設定と出力制御

  • 認証: -auth で ProjectDiscovery 云平台の API キー管理を制御します。
  • DNS 解決: -r または -resolvers でカスタム DNS サーバー(例:1.1.1.1)を指定可能です。
  • フォーマット: -j (JSON)、-c (CSV) で出力形式を変更できます。
  • IPv6 包含: -v6 フラグにより、IPv6 CIDR ブロックを結果に含めます。
  • verbosity: -v で詳細ログ、-silent で結果のみの出力を行います。

基本的なクエリ実行例

以下に、一般的な調査シナリオにおけるコマンド例を示します。

単一および複数 ASN の調査

# 単一 ASN のネットワーク範囲を取得
asnmap -a AS13335

# 複数の ASN をカンマ区切りで指定
asnmap -a AS13335,AS16509

ドメインおよび IP からの逆引き

# ドメインから関連 ASN を特定
asnmap -d cloudflare.com

# IP アドレスから所属 ASN を確認
asnmap -i 1.1.1.1
asnmap -i 1.1.1.1,8.8.8.8

出力形式の定制

# JSON 形式でファイルに保存
asnmap -a AS13335 -j -o cloudflare_data.json

# CSV 形式で出力し、IPv6 も含める
asnmap -a AS13335 -c -v6 -o networks.csv

自動化スクリプトとワークフロー

調査プロセスを効率化するため、シェルスクリプトと組み合わせた活用が推奨されます。

多様な入力タイプに対応した自動収集

以下のスクリプトは、入力リストに含まれるターゲットのタイプ(ASN, IP, Domain, Org)を自動的に判別し、それぞれ適切なフラグで処理を行います。

#!/bin/bash
# 自動ネットワーク情報収集スクリプト

INPUT_LIST="recon_seeds.lst"
DATA_STORE="collected_intel"

mkdir -p "$DATA_STORE"

while IFS= read -r target; do
    echo "[*] 処理中:$target"
    
    case $target in
        AS[0-9]*)
            # ASN として処理
            asnmap -a "$target" -j > "$DATA_STORE/asn_${target}_info.json"
            ;;
        [0-9].[0-9].[0-9].[0-9]*)
            # IPv4 として処理
            safe_name=$(echo "$target" | tr '.' '_')
            asnmap -i "$target" -j > "$DATA_STORE/ip_${safe_name}_info.json"
            ;;
        *.* )
            # ドメインとして処理
            safe_name=$(echo "$target" | tr '.' '_')
            asnmap -d "$target" -j > "$DATA_STORE/domain_${safe_name}_info.json"
            ;;
        *)
            # 組織名として処理
            asnmap -org "$target" -j > "$DATA_STORE/org_${target}_info.json"
            ;;
    esac
    
    echo "[+] 完了:$target"
done < "$INPUT_LIST"

ネットワーク範囲の集計とマッピング

組織名を指定し、保有する全 CIDR ブロックを抽出して IP 総数を算出するスクリプト例です。

#!/bin/bash
# 組織ネットワーク規模算出スクリプト

ENTITY="$1"
echo "[*] 組織 '$ENTITY' のネットワークマップ作成中..."

# 重複を除外して保存
asnmap -org "$ENTITY" -silent | sort -u > "${ENTITY// /_}_cidrs.lst"

IP_COUNT=0
while IFS= read -r range; do
    # CIDR から IP 数を計算
    NUM=$(mapcidr -cl "$range" -c)
    IP_COUNT=$((IP_COUNT + NUM))
done < "${ENTITY// /_}_cidrs.lst"

echo "[+] 発見された CIDR ブロック数:$(wc -l < "${ENTITY// /_}_cidrs.lst")"
echo "[+] 推定 IP アドレス総数:$IP_COUNT"

他ツールとの連携パイプライン

ASNMap の出力を他のセキュリティツールに渡すことで、攻撃面分析やスキャンを自動化できます。

  • サブネット分割とポートスキャン:
    asnmap -a AS13335 -silent | mapcidr -sbh 256 | naabu -silent
  • Web サーバーの特定と脆弱性診断:
    asnmap -org "AMAZON" -silent | httpx -silent | nuclei -t ~/templates/
  • 並列処理による高速化:
    asnmap -f targets.txt -silent | parallel -j 8 "nmap -sS {}"

主な利用シナリオ

ペネトレーションテストの範囲定義

顧客組織の正式な ASN を基に、テスト許可範囲となる IP ブロックをリスト化します。

#!/bin/bash
ORG="$1"
asnmap -org "$ORG" -silent > "scope_${ORG// /_}.txt"
echo "[+] 対象範囲を scope_${ORG// /_}.txt に保存しました"

競合他社のインフラ分析

複数の企業名をリスト化し、それぞれのネットワーク規模を比較します。

for company in "Company A" "Company B"; do
    count=$(asnmap -org "$company" -silent | wc -l)
    echo "$company: $count CIDR blocks"
done

脅威インテリジェンスの蓄積

特定の脅威アクターに関連する組織名を監視し、ネットワーク変化を追跡します。

TODAY=$(date +%Y%m%d)
asnmap -d "suspicious-domain.com" -silent > "intel_${TODAY}.txt"
# 前回との差分を確認
diff "intel_$(date -d yesterday +%Y%m%d).txt" "intel_${TODAY}.txt"

トラブルシューティングと注意点

一般的なエラーと対応

  • 認証エラー: API キーが未設定または無効な場合、-auth false を試すか、設定ファイルを確認してください。
  • 結果なし: 入力形式が間違っているか、対象が存在しない可能性があります。クエリタイプ(-a, -d, -org)を見直してください。
  • 接続失敗: ネットワーク制限がある場合、-p でプロキシを指定するか、-r でパブリック DNS を変更してください。

運用上のベストプラクティス

  1. 設定ファイルの活用: 頻繁に使用する API キーやリゾルバーは、JSON 設定ファイルに保存し -config オプションで読み込むことで、コマンド入力を簡略化できます。
  2. データの検証: 取得した CIDR 範囲が実際に応答するか、簡易的な ping やポートチェックで検証することをお勧めします。
  3. 大量処理の最適化: 多数のターゲットを処理する際は、コマンドライン引数ではなくファイル入力(-f)を使用し、静黙モード(-silent)を組み合わせることでパフォーマンスが向上します。
  4. 法的遵守: 収集した情報は授权范围内使用し、対象組織の利用規約および相关法律法规を遵守してください。

タグ: asnmap network-recon osint golang-cli cidr-enumeration

6月24日 01:31 投稿