Ⅰ. 정의
웹쉘은 공격자가 원격에서 웹서버에 명령을 수행할 수 있도록 작성한 웹스크립트(asp, php, jsp, cgi ) 파일이다. 이때 zip, jpg, doc와 같은 데이터 파일종류 이외에 악의적으로 제작된 스크립트 파일인 웹쉘을 업로드하여 웹 서버를 해킹하는 사고가 빈번하고 있다. 이와 같이 서버 명령을 실행할 수 있는 웹쉘을 이용하여 웹서버에 명령을 실행해 관리자 권한을 획득한 후 웹 페이지 소스코드 열람, 서버내 자료 유출, 백도어 프로그램 설치 등의 다양한 공격이 가능하다. 최근에는 파일 업로드뿐만 아니라 SQL Injection과 같은 웹 취약점을 공격한 후 지속적으로 피해 시스템을 관리할 목적으로 웹쉘을 생성하거나, 아주 일부분만을 피해시스템에 업로드하는 등 그 유형이 나날이 발전하고 있다.
Ⅱ. 웹쉘의 위험성
많은 피해 웹서버 중 웹쉘이 발견되는 웹 서버는 약 90% 정도이다. 이것은 공격자들이 취약점을 공격 한 후 웹쉘을 업로드 하여 시스템을 통제하기가 수월 하다 보니 사용 빈도가 높은 것을 확인할 수 있다.
웹 취약점을 통해 피해시스템에 접근한 공격자는 방화벽에서 접근을 허용하는 HTTP (TCP 80)서비스를 통해 피해 시스템을 제어 하므로 웹쉘을 차단하기가 쉽지 않다. 또한 일반적인 서버관리자들은 해킹여부를 확인하기 힘들고, 피해를 인지하더라도 관리자들이 주로 사용하는 백신 프로그램에서 웹쉘 탐지가 안되는 경우가 빈번히 발생하며, 탐지가 된다고해도 공격자들은 스크립트 웹쉘들을 빈번히 변경시켜 사용하기 때문에 백신들로서는 탐지하기가 쉽지 않아 웹쉘을 찾기가 쉽지 않다. 관리자들이 해킹 피해를 인지하고 시스템을 재설치 하더라도 이전에 웹쉘이 업로드 되어 있는 소스 그대로 새롭게 설치한 시스템에 복사하여, 사용하기 때문에 지속적으로 웹쉘을 관리하는 공격자에게 피해를 입게 된다.
Ⅲ. 웹쉘 동향
① 인증된 공격자만 사용가능 하도록 패스워드를 입력 받거나, 특정 세션 값으로 세팅해야만 기능 들을 사용할 수 있는 웹쉘들
이 많다.
② ASP의 Eval, Execute메소드 등은 원격에 있는 공격자로부터 웹쉘 실행코드를 전달 받아 실행 하는데 많이 이용되고 있
다. 이 같은 Eval, Execute 코드는 정상적인 스크립트 파일에도 삽입이 가능해 웹쉘 탐지가 더욱 어려워 지고 있다.
-참고 –
Eval 메소드 : string(문자열 저장)을 자바스크립트 코드로 변환해 주는 메소드
Execute 메소드 : 질의어, SQL 문장, 프로시저 등을 실행시켜 주는 메소드
③ 최근 각 백신사, 관리자들에 의해 웹쉘 탐지가 늘어 공격자들은 여러 기능을 하는 웹쉘 코드를 각 기능별로 웹쉘들을 분리하
여 사용하고 있다. 그 중 파일 생성 기능, DB쿼리 기능을 하는 웹쉘 파일들이 빈번하게 발견되고 있다.
④ ASP 스크립트의 경우 웹 소스를 보호하기 위해 인코딩하는 Script Encoder를 제공하고 있다. 이러한 인코더를 악용하여 웹쉘
을 인코딩하고 백신 탐지를 우회하고 있다.
⑤ 공격자들은 웹쉘이 업로드 되어 있는 피해 시스템 웹쉘 URL을 관리하기 위해 관리프로그램들을 사용하고 있다. 중국 해커들
은 다음과 같은 관리 프로그램을 개발하여 자신들이 장악했던 피해 사이트들을 체계적으로 관리하고 있다.
Ⅳ. 탐지 방안
1) 웹쉘 시그니처를 이용한 파일 검색
① 시그니처
웹쉘은 시스템 명령어를 수행하거나 파일을 조작하기 위해 관련된 오브젝트, Wscript.Shell, Shell.Application등을 주
로 사용하게 된다. 하지만 이러한 오즈젝트는 정상적인 스크립트 코드에서는 사용하지 않는 것들로 웹쉘 탐지를 위
한 시그니처로 지정하여 웹쉘 탐지를 위한 시그니처로 지정하여 웹쉘을 탐지하는데 이용할 수 있다. 이렇게 시그니처
로 지정할 만한 문자열들을 찾아본 결과 다음 과 같다.
- Wscript.Shell, Shell.Application과 같은 시스템에 접근할 수 있는 오브젝트나 메소드
- 인코딩된 파일에 삽입된 헤더 문자열 VBScript.Encode
- 중국어 간체 gb2312 (웹쉘이 중국에서 제작된 것이므로 본 키워드가 포함되 어 있으나 이는 중국어로 제작된 정
상적인 파일에도 포함되고 있으므로 유의 해야 함)
- 시스템 명령어에 필요한 문자열 cmd.exe
- 정상적인 스크립트에서 흔히 사용되지 않는 eval, execute 함수등
cmd\.exe | Wscript.Shell | Shell\.Application |
execute *\( ? *session | execute *\( ? *request | eval *\( ? *request |
Webshell | Lake2 | Hack520 |
VBScript\.Encode | Gb2312 | lcxMarcos |
\.run.*> | \.exec *\( | marcos |
② findstr 명령어를 활용한 탐지 방법
findstr 명령어는 지정된 파일들에서 찾고자 하는 특정 문자열들을 검색할 수 있도록 도와준다. 위에서 정의된 시그니
처들을 파일(ex :abc.sig)로 지정하하고, 사이트 홈 디렉토리에서 아래와 같이 실행한다.
findstr /i/r/s /g :abc.sig *.asp 또는 *.php 등
- i : 대소문자 구분없이 검색
- g : 지정된 파일에서 검색 문자열을 받음
- r : 정규 표현식 사용
- s : 모든 하위디렉터리 검색
최근 공격자들이 웹쉘 확장자를 .cer, .asa, .cdx, .hta로 변경하여 파일을 업로드 하는 경우가 있다. (파일 업로드 우
회 공격) 반드시 검사 확장자를 asp나 php 뿐만 아니라 스크립트로 실행되도록 지정된 .asa, .cer등도 반드시 함께 검
색 하도록 해야 한다.
2) 웹쉘 로그 시그니처를 이용한 웹 로그 검색
① 시그니쳐
최근 대부분의 웹쉘들은 POST 방식으로 관련 데이터들을 전송하기 때문에 웹로그에서 웹쉘이 실행된 흔적을 찾기가 쉽지 않다. 하지만 많은 웹쉘들은 실행할 메뉴들을 GET방식으로 전달하여 이러한 로그들을 대상으로 시그니쳐를 추출 할 수 있다.
다음은 인터넷침해사고대응지원센터(www.krcert.or.kr)에서 피해시스템에서 수집된 웹쉘을 테스트하여, 웹쉘 실행여부를 확인할 수 있는 시그니쳐를 추출하였다.
Action=MainMenu Action=Show1File Action=EditFile Action=DbManager Action=getTerminalInfo Action=ServerInfo Action=Servu Action=kmuma (pageName|id|list|action|act)=ServiceList Action=mainwin action=serverinfo HigroupASPAdmin |
위의 탐지 방법에서 제공한 시그니쳐들은 오탐이 발생할 수 있으므로 반드시 웹쉘인지 철저히 확인 후, 삭제해야 한다.
Ⅴ.예방 대책
1) 웹 서버의 파일 업로드 취약점 제거
- 파일 업로드가 불필요한 게시판의 경우는 업로드의 기능을 완전히 제거하고, 필요한 경우에는 파일의 확장자를 체크한다. 업로드를 제한하는 asp, chi, php, isp 등의 확장자를 막는 방법으로 구현하는 것보다 허용하는 확장자 즉, txt, hwp, doc, pdf 등의 업로드 가능한 파일 확장자만 올릴 수 있도록 체크하는 것이 바람직하다. 그 이유는 특정 확장자만 막는 경우에는 우회해서 올릴 수 있는 방법들이 존재하기 때문이다. 또한, Php, Asp, jSp등의 대소문자 혼용 및 .txt.asp등의 2중 확장자의 형태도 필터링 해야한다.
2) 파일 업로드 폴더의 실행 제한
- 웹서버의 파일 업로드 전용 폴더를 만들고 전용 폴더의 스크립트 파일 실행을 제한하여 해당 폴더내에 있는 파일이 실
행되지 않도록 해야 한다.
윈도우 서버의 경우 [설정] – [제어판] – [관리도구] – [인터넷서비스관리자] 에서 마우스 오른쪽 버튼을 클릭하여 [등
록정보] – [디렉토리]를 선택해 실행권한을 ‘없음’으로 설정한다.
리눅스의 경우 httpd.comf와 같은 웹서버 설정 파일에서 변경한다.
3) SQL Injection 방지
- 웹쉘 공격은 파일 업로드 취약점 뿐만 아니라 SQL Injection을 이용해서도 가능 하므로 DB쿼리문에 삽입하여 사용하 는 모든 경우에 이러한 필터를 적용하여 단 한 개의 페이지에서라도 SQL Injection의 허점이 존재하지 않도록 주의해야 한다.
[DDoS] Slow HTTP POST Attack (0) | 2013.07.11 |
---|---|
2011년 3.4 DDoS Attack 내용 (0) | 2013.07.11 |
[Web] XSS (Cross-Site Scripting) (0) | 2013.07.11 |
[Web] SSL Strip Attack (0) | 2013.07.11 |
쿠키(Cookie) (0) | 2013.07.11 |