강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
네트워크 필터링기법을 통한 "Code Red" 웜 대응방법
조회 : 2,961  


CERTCC-KR-TR-2001-14

네트워크 필터링기법을 통한 "Code Red" 웜 대응방법

updated 2001.10.17
2001.8.9

(C)CERTCC-KR

전완근 wkjeon@certcc.or.kr
주현준 hjj@cisco.com

[목 차]

1. 개요
2. 서비스 가능한 시스템
3. Code Red 패턴
4. 필터링 설정 방법
5. 필터링 동작 확인 방법
[참고]

1. 개요

IIS 버그 보안 패치후에도 "Code Red"웜의 HTTP GET requests는 웹서버로 계속적으로 들어오게 되어 네트워크의 부하에 많은 영향을 미치고 있다. 본 문서에서는 시스코 라우터에서 제공되는 class-map, Policy Map, 접근 제어리스트(ACL)기능 등을 사용하여 네트워크 차원에서 적용 가능한 해킹시도 방지기법과 함께 설정된 각각의 필터링 기법들의 동작여부를 확인할 수 있는 방법을 소개한다.

*주의: 본 문서에서 제시하는 정책를 사용할 경우 cpu뿐만아니라 정상적인 서비스나 네트워크 부하에 영향을 줄 수 있읍니다, 따라서 신중하게 고려하신후 임시적인 방편의 일환으로 적용하시기 바랍니다.

2. 서비스 가능한 시스템

네트워크 필터링기법을 통하여 "Code Red" 웜바이러스에 대응할 수 있는 시스코 라우터들은 다음과 같다.

-----------------------
플랫폼 : IOS 최소버젼
-----------------------
7200 : 12.1(5)T
7100 : 12.1(5)T
3660 : 12.1(5)T
3640 : 12.1(5)T
3620 : 12.1(5)T
2600 : 12.1(5)T
1700 : 12.2(2)T
----------------------
*단,Cisco Express Forwarding (CEF)기능이 enable되어 있어야 함.

------------------------
플랫폼 : IOS 최소버젼
------------------------
7500 : 12.1(6)E
FlexWAN : 12.1(6)E
-----------------------
*단, Class-based marking과 Distributed NBAR (DNBAR)기능 사용이 전제되어야함.
*단, CIP(Channelized Interface Processor)모듈을 사용할 경우 service-policy이용불가능함.

3. Code Red 패턴

Code Red 웜 공격을 받으면 공격 성공여부에 상관없이 아래와 같은 메시지가 남을 수 있다.
(IIS 로그의 경우, c:WINNT/system32/LogFiles/W3SVC)

자세한 내용은 다음 문서들를 참조 바란다.

http://www.certcc.or.kr/paper/incident_note/2001/in2001_010.html
http://www.certcc.or.kr/paper/incident_note/2001/in2001_009.html

가. 최초의 Code Red의 패턴

2001-08-04 16:32:23 24.101.17.216 - 10.1.1.75 80 GET /default.ida

NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%
ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u
0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 403

나. Code Red II 의 패턴

2001-08-04 15:57:35 64.7.35.92 - 10.1.1.75 80 GET /default.ida XXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXX%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%
u6858%ucbd3%u7801%u9090%

u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 403 -

다. CodeRedScanner 에 나타나는 Code Red 의 패턴

*다음은 아래와 같은 보안 취약점을 점검해주는 도구를 사용하여 각 사이트내에서 감염 가능한(혹은 감염된) 시스템을 점검하였을 경우 나타나는 패턴이다.
http://www.eeye.com/html/Research/Tools/CodeRedScanner.exe

2001-08-06 22:24:02 24.30.203.202 - 10.1.1.9 80 GET /x.ida AAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=X 403 HTTP/1.1 -

4. 필터링 방법

가. Class-map을 사용하는 방법.

Router(config)#class-map match-any http-hacks
Router(config-cmap)#match protocol http url "*default.ida*"
Router(config-cmap)#match protocol http url "*x.ida*"
Router(config-cmap)#match protocol http url "*.ida*"
Router(config-cmap)#match protocol http url "*cmd.exe*"
Router(config-cmap)#match protocol http url "*root.exe*" T

나. Policy Map을 사용하는 방법.

다음과 같은 환경이라고 가정하였을 경우 Ethernet 0/0에서 생성되는 트래픽을 통제하고 Ethernet 0/1로 유입되기 전에 필터링되도록 설정한다.

* 환경 예)

E0/1(output interface)
E0/0(intput interface)

<---------------------

||R||
<----------------------

*R : 서비스 가능한 Router

1) inbound 트래픽에 대해 먼저 설정한 후에 outside 인터페이스에 대한 서비스 정책을 적용한다.

Router(config)#policy-map mark-inbound-http-hacks
Router(config-pmap)#class http-hacks
Router(config-pmap)#set ip dscp 1
Router(config)#interface ethernet 0/0
Router(config-if)#service-policy input mark-inbound-http-hacks

다. 해킹시도 방지 방법.

아래와 같은 방법중에 하나를 선택하여 적용하면 된다.

- 접근제어리스트(ACL)를 이용하는 방법.

1) ACL는 DSCP의 값이 "1" 인 것에 한해서 로그를 남긴 후에 필터링한다.

Router(config)#access-list 105 deny ip any any dscp 1 log
Router(config)#access-list 105 permit ip any any

2) 웹서버가 있는 outbound측의 inside측 인터페이스를 다음과 같이 설정한다.

Router(config)#interface ethernet 0/1
Router(config-if)#ip access-group 105 out

*주의:만약 많은 인터페이스 있을 경우 로그기능를 사용하면 많은 자원낭비를 초래하기 때문에 되도록이면 콘솔로그를 사용하지 않는 것이 좋다.

- Policy Based Routing 방법을 적용하여 필터링을 하는 예

Router(config)#access-list 106 permit ip any any dscp 1
Router(config)#route-map null_policy_route 10
Router(config)#match ip address 106
Router(config)#set interface Null0
Router(config)#interface ethernet 0/0
Router(config-if)#ip policy route-map null_policy_route

* 라우터로 부터 유출되는 모든 인터페이스에 대해서 차단하지 않고, 라우터로 유입되는 인터페이스에 대해서만 차단하도록 설정할 수도 있다.

- Policing Solution을 이용한 방법.

1) 라우팅 혹은 접근통제리트(ACL), 전송속도와는 상관없이 트래픽을 제어할 수 있다.

Router(config)#policy-map drop-inbound-http-hacks
Router(config-pmap)#class http-hacks
Router(config-pmap)#police 1000000 31250 31250 conform-action drop exceed-action drop violate-action drop

2) 라우팅 혹은 접근통제리트(ACL)와는 상관없이 트래픽을 제어할 수 있다.

Router(config)#interface ethernet 0/0
Router(config-if)#service-policy input drop-inbound-http-hacks

5. 필터링 동작 확인 방법

다음은 설정된 각각의 필터링 기법들의 동작여부를 확인하는 방법들이다.

가. 접근제어리스트(ACL) Solution 운영 확인방법.

Router#show access-list 105
Extended IP access list 105
deny ip any any dscp 1 log (2406 matches)
deny tcp any any dscp 1 log
permit ip any any (731764 matches)

나. Policy Based Routing Solution 운영 확인방법

Router#show access-list 106
Extended IP access list 106
deny ip any any dscp 1 (1506 matches)
Router#show log
Aug 4 13:25:20: %SEC-6-IPACCESSLOGP: list 105 denied tcp A.B.C.D.(0) -> 10.1.1.75(0), 6 packets
Aug 4 13:26:32: %SEC-6-IPACCESSLOGP: list 105 denied tcp A.B.C.D.(0) -> 10.1.1.75(0), 6 packets
*로그에 탐지된 IP 10.1.1.75(0)와 A.B.C.D.(0)는 설정된 환경에 따라 다르게 나타나게 된다.

다. Policing Solution 운영 확인방법

Router#show policy-map interface ethernet 0/0
Ethernet0/0
Service-policy input: mark-inbound-http-hacks
Class-map: http-hacks (match-any)
3101 packets, 4292566 bytes
30 second offered rate 2000 bps, drop rate 0 bps
Match: protocol http url "*default.ida*"
3101 packets, 4292566 bytes
30 second rate 2000 bps
Match: protocol http url "*cmd.exe*"
0 packets, 0 bytes
30 second rate 0 bps
Match: protocol http url "*root.exe*"
0 packets, 0 bytes 30 second rate 0 bps
QoS Set
ip dscp 1
Packets marked 3101
Router#show policy-map interface fastEthernet 0/0
Ethernet0/0
Service-policy input: drop-inbound-http-hacks
Class-map: http-hacks (match-any)
5 packets, 300 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: protocol http url "*default.ida*"
5 packets, 300 bytes
5 minute rate 0 bps
Match: protocol http url "*cmd.exe*"
0 packets, 0 bytes
30 second rate 0 bps
Match: protocol http url "*root.exe*"
0 packets, 0 bytes 30 second rate 0 bps
police:
1000000 bps, 31250 limit, 31250 extended limit
conformed 5 packets, 300 bytes; action: drop
exceeded 0 packets, 0 bytes; action: drop
conformed 0 bps, exceed 0 bps violate 0 bps

[참고]

[1]http://www.cisco.com/warp/public/63/nbar_acl_codered.shtml#8
[2]http://www.certcc.or.kr/paper/incident_note/2001/in2001_010.html

Korea Computer Emergency Response Team Coordination Center : CERTCC-KR, cert@certcc.or.kr

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=406


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
(주) 수퍼유저