1. 개요
최근 Solaris 시스템을 중심으로 Carko라는 이름의 새로운 DDoS 공격 Tool이 많이 발견되고 있어 시스템 관리자들의 특별한 주의가 요구된다. 현재까지 알려진 바에 의하면 Carko는 금년 1월 배포되었던 DDoS 공격 Tool인 "Stacheldraht v1.666 + antigl + yps"의 변종으로서 그 동작도 유사한 것으로 알려졌다.
Carko가 "Stacheldraht v1.666 + antigl + yps"의 변종으로 추정되는 유력한 근거로는 Carko binary를 strings 명령으로 분석한 결과 및 Procedure call tree가 유사하다.
현재 Carko는 주로 snmpXdmid의 buffer overflow 취약점을 이용하여 시스템관리자 권한을 획득한 후 설치되는 것으로 알려져 있다.
※ snmpXdmid의 buffer overflow 취약점은 2001년 3월 중순경에 널리 알려지기 시작한 취약점으로 대응방법은 다음 문서를 참조하기 바란다.
http://www.certcc.or.kr/advisory/ka2001/ka2001-023.txt
Top
2. Carko 탐지 방법
현재까지 CERTCC-KR에 접수된 몇 건의 사고를 분석한 결과 다음과 같이 Carko가 설치된 시스템을 찾을 수 있다. 특히, 네트워크 속도가 현저히 떨어지거나, 문제가 있을 때 Carko와 같은 DDoS Agent가 설치되어 있는지 의심해 봐야 한다.
로컬 시스템에서 검사할 경우 :
1) Carko DDoS agent 프로그램은 대부분 "/usr/share/man/mansps/ddos/" 디렉토리에 설치되어 있으므로 해당 디렉토리가 존재하는지 확인
2) Carko 프로세스를 숨기기 위해 변조된 /usr/bin/ps 프로그램을 설치하는데 다음과 같은 방법으로 확인할 수 있다.
# strings /usr/bin/ps
...
user
/proc
/dev/ptyq
SYS_TEST
...
※ 위에서 /dev/ptyq 라는 문자열이 나오면 이는 변조된 ps 프로그램이다.
이밖에 /usr/bin/adb, /usr/bin/kgmon, /usr/bin/uptime, /usr/bin/w, /usr/bin/ipcs 등의 프로그램 등도 변조된 ps와 똑같은 프로그램으로 바뀐다.
3) "/dev/ptyq" 라는 일반 파일이 있는지 점검한다.
4) 시스템 재부팅시 Carko를 실행하기 위해 시스템 시작 스크립트 파일에 프로그램을 등록해놓으므로 /etc/rc2 , /etc/rc3, ... 등의 파일에 "carko"가 있는지 검사한다.
Top
네트워크 모니터링을 통하여 탐지할 경우 :
1) carko는 ICMP Echo Reply를 이용하여 다른 프로그램과 주기적으로 통신을 하므로 다음과 같이 snoop 명령을 이용하여 탐지할 수 있다.
※ 아래 예에서 일반적인 Ping과 달리 패킷의 사이즈가 1058 bytes 이므로 쉽게 탐지가 가능하다.
[ids:root]:/user/lotus> snoop -V icmp
Using device /dev/hme (promiscuous mode)
________________________________
ids -> valeria.unr.edu.ar ETHER Type=0800 (IP), size = 1058 bytes
ids -> valeria.unr.edu.ar IP D=200.3.120.77 S=172.16.4.150 LEN=1044, ID=63605
ids -> valeria.unr.edu.ar ICMP Echo reply
________________________________
ids -> cobe48.comsat.net.ar ETHER Type=0800 (IP), size = 1058 bytes
ids -> cobe48.comsat.net.ar IP D=200.3.116.48 S=172.16.4.150 LEN=1044, ID=7729
ids -> cobe48.comsat.net.ar ICMP Echo reply
Top
2) ngrep 이라는 도구를 이용하여 carko가 다른 프로그램과 주기적으로 통신하는 내용만을 탐지할 수 있다. carko는 ICMP Echo reply 패킷안에 "skillz"라는 특정 문자열을 포함해서 통신한다.
[ids:root]:/user/lotus/ngrep> ngrep -x "skillz" icmp
interface: hme0 (172.16.4.128/255.255.255.128)
filter: ip and ( icmp )
match: skillz
#
I 172.16.4.150 -> 200.3.120.77 0:0
1a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 73 6b 69 6c 6c 7a 00 00 ........skillz..
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
위와 같이 탐지된 경우 172.16.4.150 시스템에 carko agent가 설치되어 있음을 알 수 있다.
ngrep은 다음 사이트에서 다운로드받아 설치할 수 있다.
http://www.packetfactory.net/Projects/ngrep/
3. 대응방안
Solaris 시스템과 관련된 모든 보안패치를 적용한다. 특히, 최근의 snmpXdmid 취약점에 대하여 다음 문서를 참고하여 보안조치를 한다.
Solaris 보안관련 사이트 : http://sunsolve.sun.com/security
snmpXdmid 취약점 관련 링크 : http://www.certcc.or.kr/advisory/ka2001/ka2001-023.txt
=================
KA-2001-023 Solaris snmpXdmid Buffer Overflow Vulnerability
=================
최초 작성일 : 2001/04/3
갱신일 :
출처 : http://www.securityfocus.com/vdb/?id=2417
작성자 : 김상철, ksch@certcc.or.kr
-- 제목 --------------
Solaris snmpXdmid Buffer Overflow Vulnerability
(솔라리스 snmpXdmid 버퍼오버플로우 취약성)
-- 해당 시스템 -------
Sun Solaris 8.0_x86
Sun Solaris 8.0
Sun Solaris 7.0_x86
Sun Solaris 7.0
Sun Solaris 2.6_x86
Sun Solaris 2.6
-- 설명---------------
Solaris는 관리 유연성을 제공하도록 업계 표준인 SNMP 및 DMI 기반의 프로토콜을
지원하며 이러한 역활을 수행해주는 Daemon 프로그램이 "snmpXdmid"이다. Sun
Microsystem's Solaris의 2.6, 7, 8 버전에서의 snmpXdmid 서비스 Daemon은 SNMP 요구
사항을 DMI 요구 사항으로 또는 그 반대로 맵핑하기위해서 사용된다. 이때 Solaris는
매퍼(mapper)를 사용하는데 매퍼는 SNMP 요구 사항을 DMI 요구 사항으로, DMI
요구사항을 SNMP요구사항으로 바꿔주는 SNMP 뷰에이전트 기능을 수행한다. 뿐만
아니라 매퍼는 DMI 서비스 제공자와 SNMP 마스터 에이전트간의 요구 사항 및 반응을
조정하여 DMI 서비스 제공자와 상호작용한다.
snmpXdmid가 SNMP 트랩으로 악의 있는 DMI 요구사항을 해석할 때 snmpXdmid는 버퍼
오버플로우 취약점을 포함하고 있다. 뿐만아니라 snmpXdmind는 루트 권한으로
실행되기 때문에 공격자가 이 취약점을 이용해서 공격에 성공하면 슈퍼유저의 권한을
획득할 수 있다. snmpXdmid는 solaris에서 발견되는 많은 취약점을 갖고 있는 RPC
기반의 프로그램이기때문에 RPC관련 스캔도구를 사용하여 snmpXdmid서비스가 제공되고
있는지 원격에서 탐지할 수 있다.
Local상에서 lsof와 rpcinfo명령어를 사용하여 snmpXdmid 서비스가 제공되고
있는지를 확인할 수 있으며 rpc관련 스캔 프로그램(vetescan등)을 사용하여 프로그램
ID번호 및 portmap정보를 획득할 수 있다.
Local에서
# lsof | grep snmpXdmid
........중간생략
snmpXdmid 339 root 1u inet 0x60e7ddd0 0t0 TCP *:32779 (LISTEN)
........나머지 생략
remote에서
#rpcinfo -p 172.16.4.150
........중간생략
100249 1 tcp 32779
........나머지 생략
현재 이 취약점을 이용한 공격도구가 제공되고 있으며, Incident List에서는
이와 관련된 사고가 접수되고 있다. 뿐만 아니라 UnderHacker(wild)들에게 사용되고
있다.
현재 이 취약점에 대한 패치가 제공되고 있지 않기 때문에 취약점의 공격으로부터
피해를 예방하기 위하여 SNMP 및 DMI관련 Management 기능을 사용하지 않으려면
아래의 해결책에 따라 대응하여야만 한다.
-- 해결책 ------------
현재 SUN사에서는 이러한 취약점을 알고 있으며, 이 취약점에 대하여 해결책을
마련하고 있다. Daemon 서비스로 제공되고 있는 DMI 서비스를 제공하지 않는 것이
안전하다. 이는 Solaris 부팅스크립트의 /etc/rc?.d/S07dmi를 /etc/rc?.d/K??dmi로
이름을 바꾸고, '/etc/init.d/init.dmi stop'을 실행하여 실행되고 있는 snmpXdimd
Daemon을 중지시켜야 한다. 또다른 방법으로는 snmpSdmid의 모든 권한을 제거하는
방법으로도 대응할 수 있다. 다음의 명령어를 실행하여 가능하다.
# chmod 000 /usr/lib/dmi/snmpXdmid
------- 참조 사이트 --------------------------
[1] Solaris snmpXdmid Buffer Overflow Vulnerability 권고문
http://www.securityfocus.com/vdb/?id=2417
[2] SNMP 및 DMI 기반의 구성요소
http://www.sun.co.kr/products/software/sys_net/fault/agent/over.html
-------------------------------------------------------------------
한국정보보호센터(Korea Information Security Agency),
Computer Emergency Response Team Coordination Center , CERTCC-KR
전화: 118 (지방 02-118) Email: cert@certcc.or.kr
====================================================================
최근 Solaris 시스템을 중심으로 Carko라는 이름의 새로운 DDoS 공격 Tool이 많이 발견되고 있어 시스템 관리자들의 특별한 주의가 요구된다. 현재까지 알려진 바에 의하면 Carko는 금년 1월 배포되었던 DDoS 공격 Tool인 "Stacheldraht v1.666 + antigl + yps"의 변종으로서 그 동작도 유사한 것으로 알려졌다.
Carko가 "Stacheldraht v1.666 + antigl + yps"의 변종으로 추정되는 유력한 근거로는 Carko binary를 strings 명령으로 분석한 결과 및 Procedure call tree가 유사하다.
현재 Carko는 주로 snmpXdmid의 buffer overflow 취약점을 이용하여 시스템관리자 권한을 획득한 후 설치되는 것으로 알려져 있다.
※ snmpXdmid의 buffer overflow 취약점은 2001년 3월 중순경에 널리 알려지기 시작한 취약점으로 대응방법은 다음 문서를 참조하기 바란다.
http://www.certcc.or.kr/advisory/ka2001/ka2001-023.txt
Top
2. Carko 탐지 방법
현재까지 CERTCC-KR에 접수된 몇 건의 사고를 분석한 결과 다음과 같이 Carko가 설치된 시스템을 찾을 수 있다. 특히, 네트워크 속도가 현저히 떨어지거나, 문제가 있을 때 Carko와 같은 DDoS Agent가 설치되어 있는지 의심해 봐야 한다.
로컬 시스템에서 검사할 경우 :
1) Carko DDoS agent 프로그램은 대부분 "/usr/share/man/mansps/ddos/" 디렉토리에 설치되어 있으므로 해당 디렉토리가 존재하는지 확인
2) Carko 프로세스를 숨기기 위해 변조된 /usr/bin/ps 프로그램을 설치하는데 다음과 같은 방법으로 확인할 수 있다.
# strings /usr/bin/ps
...
user
/proc
/dev/ptyq
SYS_TEST
...
※ 위에서 /dev/ptyq 라는 문자열이 나오면 이는 변조된 ps 프로그램이다.
이밖에 /usr/bin/adb, /usr/bin/kgmon, /usr/bin/uptime, /usr/bin/w, /usr/bin/ipcs 등의 프로그램 등도 변조된 ps와 똑같은 프로그램으로 바뀐다.
3) "/dev/ptyq" 라는 일반 파일이 있는지 점검한다.
4) 시스템 재부팅시 Carko를 실행하기 위해 시스템 시작 스크립트 파일에 프로그램을 등록해놓으므로 /etc/rc2 , /etc/rc3, ... 등의 파일에 "carko"가 있는지 검사한다.
Top
네트워크 모니터링을 통하여 탐지할 경우 :
1) carko는 ICMP Echo Reply를 이용하여 다른 프로그램과 주기적으로 통신을 하므로 다음과 같이 snoop 명령을 이용하여 탐지할 수 있다.
※ 아래 예에서 일반적인 Ping과 달리 패킷의 사이즈가 1058 bytes 이므로 쉽게 탐지가 가능하다.
[ids:root]:/user/lotus> snoop -V icmp
Using device /dev/hme (promiscuous mode)
________________________________
ids -> valeria.unr.edu.ar ETHER Type=0800 (IP), size = 1058 bytes
ids -> valeria.unr.edu.ar IP D=200.3.120.77 S=172.16.4.150 LEN=1044, ID=63605
ids -> valeria.unr.edu.ar ICMP Echo reply
________________________________
ids -> cobe48.comsat.net.ar ETHER Type=0800 (IP), size = 1058 bytes
ids -> cobe48.comsat.net.ar IP D=200.3.116.48 S=172.16.4.150 LEN=1044, ID=7729
ids -> cobe48.comsat.net.ar ICMP Echo reply
Top
2) ngrep 이라는 도구를 이용하여 carko가 다른 프로그램과 주기적으로 통신하는 내용만을 탐지할 수 있다. carko는 ICMP Echo reply 패킷안에 "skillz"라는 특정 문자열을 포함해서 통신한다.
[ids:root]:/user/lotus/ngrep> ngrep -x "skillz" icmp
interface: hme0 (172.16.4.128/255.255.255.128)
filter: ip and ( icmp )
match: skillz
#
I 172.16.4.150 -> 200.3.120.77 0:0
1a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 73 6b 69 6c 6c 7a 00 00 ........skillz..
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
위와 같이 탐지된 경우 172.16.4.150 시스템에 carko agent가 설치되어 있음을 알 수 있다.
ngrep은 다음 사이트에서 다운로드받아 설치할 수 있다.
http://www.packetfactory.net/Projects/ngrep/
3. 대응방안
Solaris 시스템과 관련된 모든 보안패치를 적용한다. 특히, 최근의 snmpXdmid 취약점에 대하여 다음 문서를 참고하여 보안조치를 한다.
Solaris 보안관련 사이트 : http://sunsolve.sun.com/security
snmpXdmid 취약점 관련 링크 : http://www.certcc.or.kr/advisory/ka2001/ka2001-023.txt
=================
KA-2001-023 Solaris snmpXdmid Buffer Overflow Vulnerability
=================
최초 작성일 : 2001/04/3
갱신일 :
출처 : http://www.securityfocus.com/vdb/?id=2417
작성자 : 김상철, ksch@certcc.or.kr
-- 제목 --------------
Solaris snmpXdmid Buffer Overflow Vulnerability
(솔라리스 snmpXdmid 버퍼오버플로우 취약성)
-- 해당 시스템 -------
Sun Solaris 8.0_x86
Sun Solaris 8.0
Sun Solaris 7.0_x86
Sun Solaris 7.0
Sun Solaris 2.6_x86
Sun Solaris 2.6
-- 설명---------------
Solaris는 관리 유연성을 제공하도록 업계 표준인 SNMP 및 DMI 기반의 프로토콜을
지원하며 이러한 역활을 수행해주는 Daemon 프로그램이 "snmpXdmid"이다. Sun
Microsystem's Solaris의 2.6, 7, 8 버전에서의 snmpXdmid 서비스 Daemon은 SNMP 요구
사항을 DMI 요구 사항으로 또는 그 반대로 맵핑하기위해서 사용된다. 이때 Solaris는
매퍼(mapper)를 사용하는데 매퍼는 SNMP 요구 사항을 DMI 요구 사항으로, DMI
요구사항을 SNMP요구사항으로 바꿔주는 SNMP 뷰에이전트 기능을 수행한다. 뿐만
아니라 매퍼는 DMI 서비스 제공자와 SNMP 마스터 에이전트간의 요구 사항 및 반응을
조정하여 DMI 서비스 제공자와 상호작용한다.
snmpXdmid가 SNMP 트랩으로 악의 있는 DMI 요구사항을 해석할 때 snmpXdmid는 버퍼
오버플로우 취약점을 포함하고 있다. 뿐만아니라 snmpXdmind는 루트 권한으로
실행되기 때문에 공격자가 이 취약점을 이용해서 공격에 성공하면 슈퍼유저의 권한을
획득할 수 있다. snmpXdmid는 solaris에서 발견되는 많은 취약점을 갖고 있는 RPC
기반의 프로그램이기때문에 RPC관련 스캔도구를 사용하여 snmpXdmid서비스가 제공되고
있는지 원격에서 탐지할 수 있다.
Local상에서 lsof와 rpcinfo명령어를 사용하여 snmpXdmid 서비스가 제공되고
있는지를 확인할 수 있으며 rpc관련 스캔 프로그램(vetescan등)을 사용하여 프로그램
ID번호 및 portmap정보를 획득할 수 있다.
Local에서
# lsof | grep snmpXdmid
........중간생략
snmpXdmid 339 root 1u inet 0x60e7ddd0 0t0 TCP *:32779 (LISTEN)
........나머지 생략
remote에서
#rpcinfo -p 172.16.4.150
........중간생략
100249 1 tcp 32779
........나머지 생략
현재 이 취약점을 이용한 공격도구가 제공되고 있으며, Incident List에서는
이와 관련된 사고가 접수되고 있다. 뿐만 아니라 UnderHacker(wild)들에게 사용되고
있다.
현재 이 취약점에 대한 패치가 제공되고 있지 않기 때문에 취약점의 공격으로부터
피해를 예방하기 위하여 SNMP 및 DMI관련 Management 기능을 사용하지 않으려면
아래의 해결책에 따라 대응하여야만 한다.
-- 해결책 ------------
현재 SUN사에서는 이러한 취약점을 알고 있으며, 이 취약점에 대하여 해결책을
마련하고 있다. Daemon 서비스로 제공되고 있는 DMI 서비스를 제공하지 않는 것이
안전하다. 이는 Solaris 부팅스크립트의 /etc/rc?.d/S07dmi를 /etc/rc?.d/K??dmi로
이름을 바꾸고, '/etc/init.d/init.dmi stop'을 실행하여 실행되고 있는 snmpXdimd
Daemon을 중지시켜야 한다. 또다른 방법으로는 snmpSdmid의 모든 권한을 제거하는
방법으로도 대응할 수 있다. 다음의 명령어를 실행하여 가능하다.
# chmod 000 /usr/lib/dmi/snmpXdmid
------- 참조 사이트 --------------------------
[1] Solaris snmpXdmid Buffer Overflow Vulnerability 권고문
http://www.securityfocus.com/vdb/?id=2417
[2] SNMP 및 DMI 기반의 구성요소
http://www.sun.co.kr/products/software/sys_net/fault/agent/over.html
-------------------------------------------------------------------
한국정보보호센터(Korea Information Security Agency),
Computer Emergency Response Team Coordination Center , CERTCC-KR
전화: 118 (지방 02-118) Email: cert@certcc.or.kr
====================================================================