SNMP

네트워크 2016. 4. 29. 08:16

http://neonis.tistory.com/entry/SNMP-Simple-Network-Management-Protocol-%EA%B0%9C%EC%9A%94

 

1. 알아보자 SNMP

- SNMP는 네트워크 망에 대한 효율적인 관리를 위한 Protocol 이다. Manager-Agent 관계로 이루어져 있으며, 통신과정에서 인증을 위해 Community Sting을 사용하게 된다. 네트워크 장치를 모니터링하고 제어하기도 하고, 환경설정, 통계, 자료수집, 수행 성능, 보안 기능을 관리하는 수단이다. 이러한 종합된 정보들은 MIB(Managerment Infomormation Base)를 통해 DB에 저장된다.

- SNMP 패킷은 version, community string, SNMP PDU 로 구조로 이루고 있고, Agent와 Manager가 서로 UDP Port 161번으로 통신을 이루어진다. 아래 그림은 간단히 Agent와 Manager간 통신을 간단히 그려봤다.

사용자 삽입 이미지


2. SNMP 버전별 특징

  • SNMP v1 - 암호화 되어 있지 않고 보안 기능이 전혀 없음
  • SNMP v2 - v1에서는 없었던 암호화와 보안 기능 및 PDU 타입 정의 기능이 추가되었으나 상용화 되지 않았음 ( PDU : Process Data Unit 약자 )
  • SNMP v2c - 기존 v2에서 보안기능이 제거 되었고, v1에서 몇가지 기능이 추가되었다. 현재 가장많이 사용되고 있고 Community string 기능이 적재된 버전이다.
  • SNMP v3 - 암호화 및 인증을 지원하고, 보안성은 좋으나 호환성의 문제로 아직 상용화 되지 않고 있다.


3. SNMP 서비스 탐지


- SNMP 서비스는 UDP Port 161번을 사용하기 때문에 UDP Port Scanning을 통해 알아볼 수 있다. SNMP의 Get request를 전송하여 응답을 체크하고, 만약 SNMP서비스를 사용하는 중이라면 해당 시스템의 기본정보 획득이 가능하다. 하지만 Community string을 알아야 가능하다.

4. Community String 획득

- 기본적을 Community string은 Public 또는 private을 사용하고 있다. 그래서 Brute Forcing 기법이나 Dictionary Attack을 이용하여 획득이 가능하지만 시간은 오래 걸린다. 그리고 SNMP v1, v2는 암호화를 사용하지 않기 때문에 sniffing을 통해 획득 할 수도 있다.

5. SNMP 를 이용한 정보 습득 과정

- 우선은 SNMP 통신을 할때 사용하는 Port가 Open 중인지 확인하기 위해서 Port Scanning을 해본다. 보통 많이 사용하는 Nmap을 이용하여 아래 그림과 같이 Port scanning을 해보자. Nmap은 많이 사용하는 Scanning Tool이기에 사용 메뉴얼을 한번 읽어보도록 하자.

사용자 삽입 이미지


- 이렇게 SNMP가 사용하는 Port가 열려있다는 것을 확인하게 되면, Community string을 획득해야 된다. 위에서 설명한 것과 같이 Brute-forceing이나 Dictionary Attack을 통해 가능하지만, 사전 목록이 정확히 준비 되어 있지 않으면, 주화입마에 빠지기 쉽다. 사전 목록을 잘 만들어지 쉽다는 말이다. 아래는 테스트 목적으로 한 것이기 때문에 간단하게 Dictionary를 만들었고, 아래와 같이 Onesixtyone이라는 Tool을 통해 가능하다. Onesixtyone는 리눅스용으로 리눅스에서 설치해서 사용하자. ^^;;(BT가 설치 되어 있는 분은 거기에도 있어요..o^0^o)

사용자 삽입 이미지


- 위에서는 Community String은 public이라는 것과 윈도우2000을 사용하는 것을 알 수 있다. 원래대로 한다면 이렇게 쉽게 나오지는 않는다. 분명히 Default로 사용하지 않았을 것이다. 테스트 목적이기 때문에 쉽게쉽게 갑시다. ^^;; 이해해주시기 바랍니다. ㅜ.ㅜ

- 이제 서버는 윈도우서버, SNMP 서비스를 사용하고 있고, Community string은 public을 사용한다는 것을 알았다. 참 먼길을 왔다. 휴...이제 막바지로 달려보자. 아자아자. SNMP Scanning Tool을 이용하여 정보습득이 가능하게 되었다. 사용할 Tool은 snmpwalk를 사용할 것이다. 사용하게 전에 한가지 더 확인해봐야 되는 것이 있다. 바로 MIB/OID 정보이다. 이 정보는 MIB Browser를 통해 얻을 수 있다. 그래서 MIB/OID값 얻는 방법은 패스~~~하고, 아래와 같이 정보들을 획득할 수 있다.

사용자 삽입 이미지


6. SNScan ( SNMP Scan Tool )

- 간단히 설명하면 SNMP 사용하고 있는 장치 검색 도구이다. 지정한 IP대역내에서 SNMP를 사용하는 장치를 검색하는데 사용이 가능하다. 툴에 대한 설명은 당연히 하지 않을 것이고 직접 사용해보고 맘에 드시면 계속 사용하세요..^^

사용자 삽입 이미지


7. SNMP Enumeration 대응책

- 대응책이라고 하기는 너무 거창한 것 같고, 그냥 간단하다. SNMP 서비스를 사용안하면 된다. ^^;; 하지만 가용성 관련한 Network 장비 같은 경우 PRTG 같은 경우 어쩔수 없이 사용해야 된다. 그럴때는 Default Community String인 public이나 private을 사용하지 않고 다른 것을 변경을 하여 사용하면 된다.

지금까지 읽어 주셔서 감사합니다.

'네트워크' 카테고리의 다른 글

BCN / PTN / WDM / RoADM / OXC  (0) 2016.05.12
백홀망  (0) 2016.05.12
traceroute - ICMP port unreachable  (0) 2016.03.03
SNMP Trap  (0) 2012.11.01
PoE  (0) 2012.10.29
Posted by 캐논볼
,