mcpField
O
ops-proxyns

ops-proxyns

github.com/uphiagoセキュリティ1.3k41 回インストール8 週間前に更新
リポジトリ

ops-proxyns について

ops-proxyns は、Linux のネットワーク名前空間を使ってプロセスの通信を Tor 経由にする手順をまとめたスキルです。通信の分離、漏えい確認、回線の切り替えを扱い、セキュリティテスト担当者を対象としています。

主な機能

  1. 01プロセスの通信を Tor 経由に転送
  2. 02TCP、UDP、DNS、ICMP の分離
  3. 03IPv6 通信の遮断
  4. 04漏えい確認手順
  5. 05Tor 回線の切り替え方法

活用シーン

  1. 01Tor 経由でのコマンドライン偵察
  2. 02DNS と IPv6 の漏えい防止確認
  3. 03リクエスト間の Tor 出口回線切り替え

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/uphiago/recon-skills --skill ops-proxyns

インストール後、Claude Code で/ops-proxynsを入力して読み込まれたか確認します。

詳細

OPS-PROXYNS — カーネルレベルのプロキシ/OPSEC 保護

proxychains より proxy-ns を選ぶ理由

機能proxychainsproxy-ns
Go/Rust の静的バイナリに対応いいえ(LD_PRELOAD は機能しません)はい(カーネルの名前空間)
DNS リーク保護部分的完全
UDP の隔離いいえはい
アプリケーションによるバイパスはい(直接ソケット接続)いいえ
IPv6 リークよく発生ブロック
すべてのトラフィックタイプTCP のみTCP+UDP+DNS+ICMP

proxy-ns は Linux のネットワーク名前空間を使って、プロセスからのすべてのトラフィックを Tor プロキシ経由でルーティングします。アプリケーションがこれを検出したり、バイパスしたりする方法はありません。アプリケーションから見えるのは Tor の出口ノードの IP アドレスだけです。


インストール

# Prerequisites
sudo apt update && sudo apt install -y tor proxychains4 git make gcc curl

# Clone and build proxy-ns
git clone https://github.com/OkamiW/proxy-ns.git /tmp/proxy-ns
cd /tmp/proxy-ns
CGO_ENABLED=0 make
sudo cp proxy-ns /usr/local/bin/

# Configure Tor
sudo tee /etc/tor/torrc << 'EOF'
SOCKSPort 9050
ControlPort 9051
CookieAuthentication 0
DataDirectory /var/lib/tor
EOF

# Restart Tor
sudo systemctl restart tor 2>/dev/null || sudo tor &
sleep 3

基本的な使い方

# Run a single command through Tor
sudo proxy-ns curl --max-time 30 --connect-timeout 10 -s ifconfig.me
# Output: [Tor exit node IP]

# Run a full shell through Tor (ALL commands go through Tor)
sudo proxy-ns $SHELL

# Inside the proxy-ns shell:
curl --max-time 30 --connect-timeout 10 -s ifconfig.me   # Tor IP
nmap -sT target.com   # Works (Go binary)
masscan 10.0.0.0/24 -p80 --rate 100  # Works
python3 -c "import requests; print(requests.get('https://ifconfig.me').text)"  # Works
whois target.com      # Works (DNS queries also routed through Tor)

Tor 回線のローテーション

# Rotate to a new exit node IP
echo -e "AUTHENTICATE\r\nSIGNAL NEWNYM\r" | nc -w1 127.0.0.1 9051
sleep 2

# Verify new IP
sudo proxy-ns curl --max-time 30 --connect-timeout 10 -s ifconfig.me
自動ローテーションスクリプト
#!/bin/bash
# rotate-tor.sh — Rotate Tor circuit and wait for new IP
rotate() {
    echo -e "AUTHENTICATE\r\nSIGNAL NEWNYM\r" | nc -w1 127.0.0.1 9051
    sleep $(awk -v min=3 -v max=8 'BEGIN{srand(); print int(min+rand()*(max-min+1))}')
}
NEW_IP=$(sudo proxy-ns curl --max-time 30 --connect-timeout 10 -s ifconfig.me 2>/dev/null)
echo "[+] New Tor IP: $NEW_IP"

# Usage: rotate between every N requests

IPv6 リークの防止

proxy-ns は IPv6 を自動的にブロックします。次のコマンドで確認してください。

# Inside proxy-ns shell, test for leaks:
sudo proxy-ns bash -c '
  echo "=== IPv4 check ==="
  curl --max-time 30 --connect-timeout 10 -s ifconfig.me
  echo ""
  echo "=== IPv6 check (should fail) ==="
  curl --max-time 30 --connect-timeout 10 -6 -s ifconfig.me 2>&1 || echo "[OK] No IPv6"
  echo "=== DNS leak check ==="
  dig +short myip.opendns.com @resolver1.opendns.com
'

ステルスヘッダーとジッター

User-Agent をローテーションし、リクエスト間にジッターを常に入れてください。

# stealth_headers.py — Use inside proxy-ns shell
import requests, random, time

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/[REDACTED_IP]",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 Safari/605.1.15",
    "Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15",
]

ACCEPT_LANGS = ["en-US,en;q=0.9", "en-GB,en;q=0.8", "en-CA,en;q=0.7"]

def stealth_session():
    s = requests.Session()
    s.headers.update({
        "User-Agent": random.choice(USER_AGENTS),
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": random.choice(ACCEPT_LANGS),
        "Accept-Encoding": "gzip, deflate",
        "Connection": "keep-alive",
        "Upgrade-Insecure-Requests": "1",
    })
    return s

def stealth_get(url, session=None, min_delay=2, max_delay=6):
    """Make a stealth GET with jitter"""
    s = session or stealth_session()
    time.sleep(random.uniform(min_delay, max_delay))
    return s.get(url, timeout=30)

# Usage:
# session = stealth_session()
# r = stealth_get("https://target.com/.env", session=session)

実際に起こり得るリスク

リスク発生の仕組み結果
IP アドレスの漏えいサーバーログ、WebRTC、DNS リークブロック、追跡
フィンガープリンティングUser-Agent、TLS フィンガープリント(JA3)、ヘッダーボットとして特定
レート制限短時間にリクエストを送りすぎるIP アドレスの恒久的なブロック
ハニーポットセキュリティチームに警告する偽のエンドポイント法的措置
SIEM/Splunk一元化されたログがパターンを検出セキュリティチームへの警告
Cloudflare WAF403/503 が連続して多数発生IP アドレスがブラックリストに追加
追跡された SA キーサービスアカウントの過剰な使用キーの失効
GitHub API検索 API へのクエリが多すぎるレート制限、トークンの失効

テスト前の OPSEC チェックリスト

対象に何らかのリクエストを送る前に、次の項目を確認してください。

[ ] VPN/Tor active and verified (ifconfig.me shows non-originating IP)
[ ] IP not leaking? (check https://ipleak.net)
[ ] DNS not leaking (dig myip.opendns.com @resolver1.opendns.com)
[ ] WebRTC disabled?
[ ] IPv6 disabled/blocked (curl -6 ifconfig.me should fail)
[ ] Generic and rotating User-Agent?
[ ] Random delay (2-6s jitter between requests)?
[ ] GitHub credentials NOT logged in (or use dedicated burner account)
[ ] Nmap using -sT (SYN scan -sS is unsupported via proxy)
[ ] proxy-ns shell active for ALL commands (not just curl)
[ ] GitHub credentials logged in only when needed?

レート制限の保護

# Rotate IP between every N requests automatically
for i in $(seq 1 10); do
  echo "Request $i"
  sudo proxy-ns curl --max-time 30 --connect-timeout 10 -s "https://target.com/.env" > /dev/null
  sleep 3
done

# After 10 requests, rotate Tor circuit
echo -e "AUTHENTICATE\r\nSIGNAL NEWNYM\r" | nc -w1 127.0.0.1 9051
sleep 3
NEW_IP=$(sudo proxy-ns curl --max-time 30 --connect-timeout 10 -s ifconfig.me)
echo "[+] Rotated to IP: $NEW_IP"

proxy-ns 経由の偵察

偵察ツールチェーン全体を proxy-ns 内で実行してください。

# Start proxy-ns shell
sudo proxy-ns $SHELL

# Inside the protected shell:
TARGET="target.com"

# subfinder works (Go binary)
subfinder -d "$TARGET" -silent > subs.txt

# httpx works
cat subs.txt | httpx -silent -status-code > live.txt

# curl works
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/.env" | grep -i "DB_PASSWORD"

# nuclei works
nuclei -l live.txt -t ~/nuclei-templates/ -severity critical,high

# Python requests work
python3 -c "
import requests
r = requests.get('https://target.com/wp-json/wp/v2/users')
print(r.status_code, len(r.text))
"

よくある問題

問題解決策
sudo: proxy-ns: command not found再ビルドします。cd /tmp/proxy-ns && sudo make install
Tor が実行されていないsudo systemctl start tor または sudo tor &
ポート 9050 で Connection refused が発生する`sudo netstat -tlnp
Nmap の SYN スキャンが失敗する-sS の代わりに nmap -sT(TCP 接続スキャン)を使います
Masscan のバナー取得ホスト上のインターフェース IP を指定して --source-ip を使います
Go バイナリが依然として実際の IP アドレスを表示するproxy-ns が正しくインストールされていることを確認します。CGO_ENABLED=0 make
遅すぎる(Tor の遅延)Tor は本来遅いものです。ジッターを増やすか、代替としてプレミアム VPN を使います。

代替手段

お使いのカーネルで proxy-ns が動作しない場合:

# Level 1: proxychains (works for Python/curl, NOT for Go/static binaries)
sudo apt install proxychains4
proxychains4 curl ifconfig.me

# Level 2: Full VPN (best performance, worst OPSEC — VPN logs)
# Level 3: Tails OS / Whonix (entire OS is Tor-routed)
# Level 4: Dedicated pentest VPS (separate jurisdiction)

検証

  1. プロキシテスト — プロキシ接続を確認します。
    curl --max-time 30 --connect-timeout 10 -s --proxy "http://127.0.0.1:8080" "https://httpbin.org/ip" 2>/dev/null | python3 -m json.tool 2>/dev/null || echo "NOTE: no proxy configured locally"
    
  2. DNS リークテスト — DNS 解決経路を確認します。
    dig +short example.com 2>/dev/null | head -1 && echo "PASS: DNS resolution works" || echo "FAIL: dig not available"
    

すべてのテストで、プロキシが使用可能な状態かを確認できます。


注意事項

  • プロキシがローテーションしない — すべてのリクエストで同じ IP アドレスが使われる場合、レート制限や IP アドレスの禁止は避けられません。ローテーションが実際に機能していることを確認してください。
  • プロキシログに認証情報が含まれる — HTTP プロキシは完全なリクエスト URL を記録します。共有する前に、プロキシログがサニタイズされていることを確認してください。
  • プロキシ経由の DNS リーク — プロキシの構成によっては DNS が漏えいすることがあります。機密性の高い操作を行う前に、dnsleaktest.com 相当のテストで確認してください。
  • プロキシチェーンの遅延 — 複数ホップのプロキシチェーンは遅延を増加させ、タイミングベースの攻撃に支障をきたします。時間に制約のあるプローブを実行する前に、スループットをテストしてください。
  • SOCKS と HTTP プロキシの混同 — SOCKS5 プロキシは TCP をトンネルしますが、HTTP プロキシがトンネルするのは HTTP のみです。プロトコルに合ったものを使用してください。

コメント