rootkit 작성 : 김경애, drizzle@snags.snu.ac.kr 날짜 : 1999년 11월 2일 내용 : rootkit의 특징과 진단 방법에 대해 설명합니다.
차례 - rootkit에 대한 설명
- rootkit의 특징
- rootkit의 진단
- 대응 방향
1.rootkit에 대한 설명 다른 시스템에 침입하기 위한 프로그램 등이 다양하지만, linux 와 solaris에 설치 가능한 것 중에 rootkit이란 패키지가 있습니다. 원격으로 슈퍼 유저 로그인이 가능할 뿐만 아니라 침입했다는 사실을 숨기는 기능까지 있기 때문에 매우 위험합니다. 98년 12월에 나온 linux rootkit IV가 최신 버젼이며, 이는 다양한 툴들을 제공합니다.그 전의 버젼들은 이에 포함되어 있으므로 생략하기로 하고 이를 기준으로 살펴보기로 합니다. 일반 유저를 슈퍼유저로 만들어주는 chfn, chsh, passwd 등 eggdrop 등을 자동으로 돌려주는 crontab의 기능 침입 흔적을 숨겨주는 ls, find, du, ps, pidof, top 등 네트웍 연결을 숨겨주는 ifconfig, netstat, inetd, syslogd, tcpd 등 backdoor 기능을 하는 login, rshd 등 wtmp, utmp 등을 수정하는 wted, 그리고 lastlog 까지 지우는 z2 등 이처럼 rootkit은 로그가 남지 않게 하면서 network으로 슈퍼유저 로그인이 가능하며, 위와 같은 파일들을 새로 설치한다 하더라도 fix라는 기능으로 그 파일의 modified time을 바꾸지 않기 때문에 rootkit이라는 사실을 잘 찾아낼 수 없습니다. 2.rootkit의 특징 rootkit은 가장 기본적인 명령들 - ls, find, ps, ifconfig, netstat 등- 의 파일을 다른 특수 파일들을 참고 하게 하여 특정 사실들을 보이지 않게 하는 용도로 많이 사용됩니다. 기본적으로 컴파일을 하면, 주로 참고하는 파일이 /dev 아래에 만들어지며, sda69*로 시작되는 파일이나, pty*로 시작되는 파일이 default로 설치되는 것으로 보입니다. login
rootkit 패스워드를 알고 있는 어떤 계정도 로그인이 가능합니다. 슈퍼유저로 로그인을 막고 있다 하더라도 "rewt"로 로그인하면 가능합니다. last, w 명령으로 보이지 않고, log도 남지 않습니다. ls
특정 파일이나 디렉토리 등을 보이지 않게 할 수 있습니다. 이는 rootkit 컴파일시 rootkit.h의 설정 파일에서 참고 파일을 지정할 수 있고, default는 /dev/ptyr로 되어 있습니다. # more /pytr chattr tcp.log .s s ssynk ptycron /dev/ptycron ptyp /dev/ptyp ptyq /dev/ptyq ptys /dev/ptys ptyr /dev/ptyr 이처럼 하면, /dev/pty[pqtr] 등의 파일이 보이지 않습니다. netstat
특정 IP address 나 domain name, port 등을 보이지 않게 합니다. 사용 형식은, 다음과 같습니다. default data file: /dev/ptyq type 0: hide uid type 1: hide local address type 2: hide remote address type 3: hide local port type 4: hide remote port type 5: hide UNIX socket path 예를 들어, # more /dev/ptyq 0 500 1 128.31 2 128.31.39.20 3 8000 4 6667 5 .term/socket
uid 가 500인 사용자, 128.31.X.X으로부터(from) 접속, 128.31.39.20으로의(to) 접속, port 8000으로 접속해오거나, port 6667로 다른 호스트에 접속한 것에 대한 내용을 모두 다 숨깁니다. 뿐만 아니라 .term/socket path를 포함한 UNIX socket에 대한 것을 숨기게 합니다. ps
특정 프로세스에 대한 정보를 숨깁니다. default로는 /dev/ptyp의 설정 파일을 참고 합니다. # more /dev/ptyp 0 0 1 p0 2 sniffer 3 hack uid 0이 실행시킨 프로세스, tty p0에서 띄운 프로세스, sniffer라는 이름으로 실행하거나, hack이란 단어가 들어간 프로그램이 돌아가는 프로세스에 대한 것을 숨기도록 하는 예입니다. syslogd
특정 문자열을 포함하는 모든 로그를 삭제합니다. 역시 default로 /dev/ptys 파일을 참고합니다. # more /dev/ptys evil.com 123.100.101.202 rshd
evil.com , 123.100.101.202, rshd 를 포함하는 모든 로그를 지웁니다. 3.rootkit의 진단 rootkit 패키지의 내용을 살펴보면, 위에서 말한 ls나 ps 등의 설정 파일들을 default로 /dev 아래에 설치하도록 되어 있습니다. /dev 아래에는 block이나 packet 파일 등 우리가 잘 알지 못하면서 이름이 비슷한 파일들이 ls 로는 찾아볼 수 없도록 많이 있기 때문입니다. 따라서 # find /dev -type f -print
의 명령으로 일반 파일들을 찾았을 때 위에서 본 것과 같은 설정 파일이 있는지 확인해야 합니다. 일반적으로 pty[pqrs]나 sda69*로 시작되는 파일들이 많이 발견되고 있습니다. 그러나 이것도 안전한 방법은 아닌 이유는 find 명령도 rootkit의 일부이기 때문입니다. 따라서 가장 안전한 방법은 무결성이 보장된 파일로 점검하는 것입니다.
또다른 방법 중의 하나는 ls, ps 등 위에서 언급된 파일들의 내용이 이상한가 살펴보는 것입니다. # strings /usr/bin/ls
를 실행했을 때 /dev/ptyp 등의 내용이 있다던가 하면 이는 rootkit으로 바꾸어진 ls 라는 것을 알 수 있습니다.
또 만약 rootkit을 설치할 때, 옵션을 주어 컴파일 했다면, # ls -/
'-/'의 옵션이 에러로 나오는 것이 아니라 ls 명령이 실행되게 되는데, 이것도 rootkit의 결과입니다.
linux의 경우에는 rootkit을 체크하는 방법이 더 쉽습니다. # rpm -Va S.5....T /bin/ls .M...... /dev/log S.5....T /usr/bin/find missing /bin/netstat S.5....T /sbin/ifconfig SM5....T /bin/ps SM5....T c /etc/syslog.conf SM5....T /bin/login
이처럼 rpm을 이용해서 파일들이 시스템 설치 이후 바뀌었는지를 알 수 있습니다. 자세한 것은 rpm manpage를 참고하시면 됩니다.
그리고 rootkit에 sniffing, scan의 도구가 함께 들어 있기 때문에, 보통 rootkit을 설치한 침입자라면 이 도구를 사용할 가능성이 높습니다. 따라서 네트웍 트래픽이 정상적인지를 살핌으로써 침입을 감지할 수도 있습니다. 4.대응방향 rootkit에 대한 완벽한 대응 방향이 있는 것은 아닙니다. 모든 보안의 방법처럼, 평소에 시스템 보안에 신경을 쓸 수 밖에 없습니다. 이는 Document의 Unix Security를 참고하시기 바랍니다.
만약 rootkit이 설치된 시스템에 대해 새로 설치를 하지 않는다면, 위에서 언급된 파일들을 무결성 진단이 된 파일들로 바꾸어야 합니다. 그리고 crontab 이나 inetd.conf 등을 잘 살펴 backdoor가 있는지 잘 체크해주어야 합니다. 새로 설치하지 않는 이상 backdoor가 남아있다면 다시 재침입당할 가능성이 높을 수 밖에 없습니다. |
0