SNMP 공격

유서정·2024년 4월 17일

네트워크 보안

목록 보기
10/16

SNMP

SNMP : 네트워크 관리를 위한 프로토콜

Simple Network Management Protocol
네트워크 상의 장치로부터 정보를 수집하고 관리

Manager와 Agent 구조
Manager : Agent로부터 정보 제공받음
Agent : 시스템의 정보나 네트워크 정보등을 수집하여 MIB 형태로 보관

데이터 수집 방법

polling 방식 (agent쪽 port 오픈)
Event 방식 (서버쪽 port 오픈)

NMS : 네트워크 장비들을 감시/제어하는 관리 시스템
NMS에서 관리하는 방법 => SNMP 방식 / Syslog 방식
SNMP 방식 : MIB에 정의되어 있는 객체들의 OID 값을 전달받아 해당 장비의 상태를 나타냄

[참고] https://m.blog.naver.com/yoodh0713/221591628468

관리시스템과 에이전트가 통신하려면 최소한 다음 세가지 사항이 일치해야함

✔️ 버전
✔️ 커뮤니티 (Community)
✔️ PDU 타입 (Protocol Data Unit) 타입

MIB

Management Information Base
망관리를 위해 사용되는, 체계화된 관리 정보

  • 계층적 구조(트리 구조)로 관리
  • OID

    Object IDentifier : 관리되는 객체를 구별하기 위해 정수를 나열한 객체 식별자

Community

매니저와 에이전트 간의 인증을 위한 값
== snmp agent로 접속하기 위한 Password 역할을 하는 문자열

snmp agent와 agent manager가 동일한 community string을 가지고 있어야 통신 가능


실습

SNMP Community 값 유추

snmpwalk : 시스템 정보 확인

Usage : snmpwalk [host] -v [snmp_version] -c [community_name][OID]

snmpwalk 10.0.0.50 -v 2c -c public 1.3.6.1.4.1.77.1.2.25

  • 10.0.0.50 : SNMP 쿼리가 보내질 대상 장치의 IP 주소
  • -v 2c : 사용할 SNMP 프로토콜의 버전
  • -c public : SNMP Community 문자열
  • 1.3.6.1.4.1.77.1.2.25 : 계정 정보를 확인하는 OID 값.

라우터 쪽에 161번 포트가 OPEN되어 있는지 확인 => SNMP가 사용중인지 확인
nmap -sU -p 161 10.0.0.200
UDP 스캔 -> sU

커뮤니티 값(장비에 접근하기 위한 값)을 무엇을 쓰고 있을까?

onesixtyone 툴 이용하여 snmp community 값 유추

dict.txt = 대입 스크립트 값

./onesixtyone -c dict.txt 10.0.0.200

snmpwalk 10.0.0.50 -v 2c -c public

snmpwalk 10.0.0.200 -v 2c -c public

SNMP community를 찾는 BruteForce 공격

nmap -sU -p 161 --script snmp-brute 10.0.0.200

usr/local/share/nmap/nselib/data/snmpcommunities.lst 파일에 abc가 없기 때문에 abc는 못찾음 => dictionary bruteforce attack의 단점

위에서 알아낸 community String으로, 커뮤니티에 주어진 권한 파악

장비 Config 무단 변경 (Cain)

config파일 다운

CCDU (Cisco Config Download Upload)

10.0.0.200 = 라우터IP / private = community 명
=> C:\Program Files\Cain\CCDU\에 시스코 라우터의 config 파일 저장

다운받은 config 파일 수정

10.0.0.200(router)가 shutdown 되도록 config 파일 수정

확인

ping 10.0.0.200 -t
-t: ping 계속 보내기

수정한 config 파일 Upload -> ping 끊김

community에 가능한 write 권한은 가능한 설정하지 않는게 좋다.

+) shutdown된 라우터 살리기

라우터 Password Crack

enable password & enable secret

둘 다 라우터의 권한 상승을 위한 비밀번호를 설정하는 데 사용

enable password

평문으로 저장되며, 설정 파일에 암호가 그대로 표시 (위 코드는 Type 7 암호화 적용)
비교적 보안에 취약

enable secret

암호화되어 저장
보안적으로 더 강력하며, 권장되는 방식

enable password Crack

service password-encryption 설정
: 패스워드 암호화

암호화 타입

5 : MD5, Hash
7 : 비즈네르

쉽게 복호화 가능


secret password Crack

Charset : 대입해볼 문자열
Keyspace : 대입해볼 문자의 조합의 수

password 해킹 완료✔️

telnet으로 확인

=> telnet 접속했을때 나오는 첫번째 pw (복호화 하면 cisco)

telnet 10.0.0.200

enable : 사용자모드에서 관리자모드로 전환 (config 수정 가능)

두번째 pw == 아까 secret password crack으로 얻어냈던 pw : abc


SNMP 취약점 공격에 대한 대응방안⭐

  • 사용하지 않는 SNMP 서비스는 Disable 시킨다

    ▪ 시스템 감시 목적이 아니라면 SNMP 서비스를 제거 조치한다
    ▪ 특히! 장비조회 및 설정이 가능한 Read/Write 권한을 가능한 설정❌
  • SNMP community값을 복잡도 고려하여 새로운 값을 변경한다

    ▪ Community값은 복잡도를 고려하여 문자, 숫자, 특수기호를 혼합하여 설정
    ▪ 특히! Public, Private 값은 반드시 변경
    ( ※ Default SNMP Community Strings set to “public” and “private” )
  • SNMP 접근제어를 설정하여 운용한다

    ▪ SNMP 접근허용 IP대역을 지정하여 SNMP ACL를 설정
profile
information security

0개의 댓글