mcpField
P
performing-authenticated-vulnerability-scan

performing-authenticated-vulnerability-scan

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

performing-authenticated-vulnerability-scan について

セキュリティ評価担当者や脆弱性管理チーム向けの認証付きスキャンガイドです。認証情報の設定と検証を行い、ソフトウェア、パッチ、ホストのセキュリティ設定を調べる手順を説明します。

主な機能

  1. 01プラットフォーム別の認証情報選定
  2. 02専用サービスアカウントの作成
  3. 03スキャナー認証情報の設定
  4. 04認証情報によるアクセスの検証
  5. 05スキャン認証結果の確認

活用シーン

  1. 01定期的なホストセキュリティ監査
  2. 02インストール済みソフトウェアとパッチの確認
  3. 03システム構成とセキュリティ設定の検証
  4. 04認証情報やネットワークアクセスに起因するスキャン失敗の調査

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill performing-authenticated-vulnerability-scan

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

詳細

認証済み脆弱性スキャンの実施

概要

認証済み(資格情報を使用した)脆弱性スキャンでは、有効なシステム資格情報を使用して対象ホストにログインし、インストール済みソフトウェア、パッチ、構成、セキュリティ設定を詳細に調査します。未認証スキャンと比較すると、インストール済みパッケージ、レジストリキー、ファイルシステムの内容を直接照会できるため、誤検知を大幅に減らしながら、45~60%多くの脆弱性を検出できます。

使用する場面

  • 認証済み脆弱性スキャンを実施するセキュリティ評価を行う場合
  • 関連するセキュリティインシデントについて、インシデント対応手順に従う場合
  • 定期的なセキュリティテストや監査を実施する場合
  • 実地テストを通じてセキュリティ制御を検証する場合

前提条件

  • 脆弱性スキャナー(Nessus、Qualys、OpenVAS、Rapid7 InsightVM)
  • 対象システムで適切な権限を持つサービスアカウント
  • 安全な資格情報の保管(Vault との連携を推奨)
  • スキャナーから対象の管理ポートへのネットワークアクセス
  • システム所有者による書面での承認

基本概念

認証済みスキャンが必要な理由

未認証スキャンで評価できるのは外部から確認可能なサービスとバナーだけであり、次のような問題が生じることがあります。

  • ローカルにインストールされたソフトウェアの脆弱性を見逃す
  • バナーの変更によってバージョン検出が不正確になる
  • パッチレベル、構成、ローカルポリシーを確認できない
  • 推測に基づく検出により誤検知率が高くなる

認証済みスキャンでは、対象の OS に直接問い合わせることで、これらの問題を解決します。

プラットフォーム別の資格情報の種類
Linux/Unix システム
  • SSH キー認証:RSA/Ed25519 キーペア(推奨)
  • SSH ユーザー名/パスワード:鍵ベースの認証を使用できないシステム向けの代替手段
  • Sudo/Su による権限昇格:sudo 権限を持つ非 root ユーザー
  • 証明書ベースの SSH:エンタープライズ環境向けの X.509 証明書
Windows システム
  • SMB(Windows):ドメインまたはローカルの管理者資格情報
  • WMI:Windows Management Instrumentation クエリ
  • WinRM:Windows Remote Management(HTTPS を推奨)
  • Kerberos:サービスチケットを使用したドメイン認証
ネットワークデバイス
  • SNMP v3:認証とプライバシー(AES-256)を使用する USM
  • SSH:Cisco IOS、Juniper JunOS、Palo Alto PAN-OS 向け
  • API トークン:最新のネットワークプラットフォーム向け REST API
データベース
  • Oracle:SYS/SYSDBA 資格情報または TNS 接続
  • Microsoft SQL Server:Windows 認証または SQL 認証
  • PostgreSQL:ロールベース認証
  • MySQL:SELECT 権限を持つユーザー名/パスワード

ワークフロー

ステップ 1:専用のサービスアカウントを作成する
# Linux: Create scan service account
sudo useradd -m -s /bin/bash -c "Vulnerability Scanner Service Account" nessus_svc
sudo usermod -aG sudo nessus_svc

# Configure sudo for passwordless specific commands
echo 'nessus_svc ALL=(ALL) NOPASSWD: /usr/bin/dpkg -l, /usr/bin/rpm -qa, \
/bin/cat /etc/shadow, /usr/sbin/dmidecode, /usr/bin/find' | sudo tee /etc/sudoers.d/nessus_svc

# Generate SSH key pair
sudo -u nessus_svc ssh-keygen -t ed25519 -f /home/nessus_svc/.ssh/id_ed25519 -N ""

# Distribute public key to targets
for host in $(cat target_hosts.txt); do
    ssh-copy-id -i /home/nessus_svc/.ssh/id_ed25519.pub nessus_svc@$host
done
# Windows: Create scan service account via PowerShell
New-ADUser -Name "SVC_VulnScan" `
    -SamAccountName "SVC_VulnScan" `
    -UserPrincipalName "[email protected]" `
    -Description "Vulnerability Scanner Service Account" `
    -PasswordNeverExpires $true `
    -CannotChangePassword $true `
    -Enabled $true `
    -AccountPassword (Read-Host -AsSecureString "Enter Password")

# Add to local Administrators group on targets via GPO or:
Add-ADGroupMember -Identity "Domain Admins" -Members "SVC_VulnScan"
# For least privilege, use a dedicated GPO for local admin rights instead

# Enable WinRM on targets
Enable-PSRemoting -Force
Set-Item WSMan:\localhost\Service\AllowRemote -Value $true
winrm set winrm/config/service '@{AllowUnencrypted="false"}'
ステップ 2:スキャナーの資格情報を設定する
Nessus の設定
{
  "credentials": {
    "add": {
      "Host": {
        "SSH": [{
          "auth_method": "public key",
          "username": "nessus_svc",
          "private_key": "/path/to/id_ed25519",
          "elevate_privileges_with": "sudo",
          "escalation_account": "root"
        }],
        "Windows": [{
          "auth_method": "Password",
          "username": "DOMAIN\\SVC_VulnScan",
          "password": "stored_in_vault",
          "domain": "domain.local"
        }],
        "SNMPv3": [{
          "username": "nessus_snmpv3",
          "security_level": "authPriv",
          "auth_algorithm": "SHA-256",
          "auth_password": "stored_in_vault",
          "priv_algorithm": "AES-256",
          "priv_password": "stored_in_vault"
        }]
      }
    }
  }
}
ステップ 3:資格情報によるアクセスを検証する
# Test SSH connectivity
ssh -i /path/to/key -o ConnectTimeout=10 nessus_svc@target_host "uname -a && sudo dpkg -l | head -5"

# Test WinRM connectivity
python3 -c "
import winrm
s = winrm.Session('target_host', auth=('DOMAIN\\\\SVC_VulnScan', 'password'), transport='ntlm')
r = s.run_cmd('systeminfo')
print(r.std_out.decode())
"

# Test SNMP v3 connectivity
snmpwalk -v3 -u nessus_snmpv3 -l authPriv -a SHA-256 -A authpass -x AES-256 -X privpass target_host sysDescr.0
ステップ 4:認証済みスキャンを実行する

Nessus API を使用してスキャンを設定し、開始します。

# Create scan with credentials
curl -k -X POST https://nessus:8834/scans \
  -H "X-Cookie: token=$TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "uuid": "'$TEMPLATE_UUID'",
    "settings": {
      "name": "Authenticated Scan - Production",
      "text_targets": "192.168.1.0/24",
      "launch": "ON_DEMAND"
    },
    "credentials": {
      "add": {
        "Host": {
          "SSH": [{"auth_method": "public key", "username": "nessus_svc", "private_key": "/keys/id_ed25519"}],
          "Windows": [{"auth_method": "Password", "username": "DOMAIN\\SVC_VulnScan", "password": "vault_ref"}]
        }
      }
    }
  }'
ステップ 5:資格情報が正常に使用されたことを確認する

スキャンの完了後、資格情報の検証結果を確認します。

  • プラグイン 19506(Nessus Scan Information):資格情報のステータスを表示します
  • プラグイン 21745(OS Security Patch Assessment):ローカルチェックが行われたことを確認します
  • プラグイン 117887(Local Security Checks):資格情報を検証します
  • プラグイン 110385(Nessus Credentialed Check):対象レベルの認証ステータスを表示します

資格情報のセキュリティに関するベストプラクティス

  1. 資格情報の保管にはシークレット用 Vault(HashiCorp Vault、CyberArk、AWS Secrets Manager)を使用します
  2. 資格情報をローテーションします。90 日ごと、または人員の変更後に実施してください
  3. 最小権限の原則に従い、必要最小限のアクセス権のみを付与します
  4. 資格情報の使用状況を監査し、サービスアカウントのログインイベントを監視します
  5. 通信中のデータを暗号化します。パスワードの代わりに SSH キーを、WinRM には HTTPS を使用します
  6. スキャナーごとにアカウントを分け、ツール間で資格情報を共有しないでください
  7. 可能な場合は、スキャン用サービスアカウントの対話型ログインを無効化します
  8. SIEM でスキャン用アカウントのすべての認証イベントを記録します

よくある落とし穴

  • 最小権限のサービスアカウントではなく、ドメイン管理者アカウントを使用すること
  • スキャン設定に認証情報を平文で保存すること
  • スキャン開始前に認証情報をテストしないこと(スキャン時間が無駄になります)
  • Linux のターゲットで sudo/権限昇格を設定し忘れること
  • Windows UAC によって、リモートでの認証済みチェックがブロックされること
  • ファイアウォールルールによって、スキャナーとターゲット間の WMI/WinRM/SSH 通信がブロックされること
  • 認証に複数回失敗し、アカウントがロックされること

関連スキル

  • scanning-infrastructure-with-nessus
  • performing-network-vulnerability-assessment
  • implementing-continuous-vulnerability-monitoring

コメント