질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

웹쉘 현황 및 분석

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문


웹쉘 현황 및 분석

 

다운로드 ==> etc.gif 웹쉘의 현황 및 분석.pdf

 

 [자료: 한국정보보호진흥원(KISA)]

__________________________________________________________________________________________
- 1 -
1. 개요
일반적으로 웹 서비스에는 게시판이나 자료실과 같은 파일을 첨부하는 기능을 포함한다.
이때 txt, jpg, doc와 같은 데이터 파일종류 이외에 악의적으로 제작된 스크립트 파일인
웹쉘을 업로드하여 해킹하는 사고가 빈번히 발생하고 있다.
이와 같이 서버 명령을 실행할 수 있는 asp, cgi, php, jsp등과 같은 웹쉘을 이용하여
웹 서버에 명령을 실행해 관리자 권한을 획득한 후 웹페이지 소스 코드 열람, 서버내 자
료 유출, 백도어 프로그램 설치 등의 다양한 공격이 가능하다.
최근 웹쉘은 단순한 쉘 권한 실행 뿐만 아니라 DB 조작등을 포함하고 있으며 탐지를
어렵게 하기 위해 웹쉘의 아주 일부분만을 피해시스템에 업로드 하는 등 그 유형이 나날
이 발전하고 있다.
이에 본 사고노트에서는 현재 존재하는 수많은 웹쉘의 일반적인 유형들을 살펴보고
최근 사고현장에서 자주 발생하는 ASP木2006에 대한 분석을 통하여 웹쉘을 이용한 사고를
예방하는데 도움이 되고자 한다.
2. 웹쉘의 현황
1) 기본 기능
웹쉘 프로그램은 인터넷에 널리 유포되어 있으며 파일 업로드 취약점을 이용하는데 취약점
확인 방법도 간단하여 웹쉘을 이용하는 공격방법은 상대적으로 아주 쉽게 이루어진다.
다음은 파일첨부가 가능한 게시판의 글쓰기를 이용하여 웹쉘 파일인 list.asp 파일을 업로
드 하는 화면이다.
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 2 -
게시판을 통해 업로드 된 list.asp를 열면 쉘 명령어가 실행되어 디렉토리 내용에 대한
결과가 보여지는 것을 알 수 있다. 이는 가장 일반적이고 기본적인 웹쉘의 기능이다.
2) 암호화 및 패스워드 설정
다음은 최근 발견된 웹쉘 코드로 소스가 암호화되어 있다.
또한 다음과 같이 웹쉘 제작자만이 사용하도록 패스워드를 설정해놓기도 한다.
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 3 -
이렇게 많은 웹쉘들이 암호화와 패스워드 설정으로 탐지를 어렵게 하거나 실행에 제한
을 두고 있다.
3) 다양한 기능
다음은 DB 내용의 열람 및 수정, 삭제를 용이하게 하기 위해 직접 쿼리문을 입력하여
바로 실행되도록 구현된 웹쉘 프로그램이다.
또한 Shell 프로그램의 입력을 용이하게 하기 위해 파일명과 파일 내용을 직접 입력하
도록 구현된 웹쉘 프로그램이다.
위와 같이 test.html 파일의 내용을 직접 입력하여 파일을 생성한 후 해당 파일의 내용을
살펴보면 그대로 생성되어 있는 것을 알 수 있다.
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 4 -
다음은 명령어 입력을 두 가지로 나누어 공격하는 웹쉘 프로그램의 예이다.
Wait command는 dir과 같이, 실행한 후 그 결과를 확인해야하는 명령어나 프로그램에
서 사용되는 것으로 위와 같이 C 디렉토리의 내용이 보여지는 것을 확인할 수 있다.
Notwait command는 실행한 후 그 결과를 볼 필요가 없으며 백그라운드에서 계속 실행
되는 nc.exe와 같은 프로그램을 실행할 때 사용된다.
위와 같이 피해시스템에 nc.exe 파일을 업로드 한 후 웹쉘 프로그램을 이용하여 특정 포
트를 열면 다음과 같이 해당 포트(3333)가 열리는 것을 확인할 수 있다.
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 5 -
특히 nc.exe 프로그램으로 공격자가 원하는 서버를 열어놓은 후 피해시스템이 이 특정
서버로 연결하도록 리버스 텔넷을 이용하여 피해시스템의 쉘권한을 얻는 방법을 쓰기도
한다.
3장에서 다루고 있는 ASP木2006과 같이 실제 웹쉘에는 이러한 기능 뿐만 아니라 더욱
다양한 기능을 종합적으로 구현해놓은 프로그램들이 많이 존재한다.
3. ASP木2006 분석
웹쉘 프로그램 ASP木2006은 여러 가지 기능들을 편리하게 제공하며 사용자의 기호에
맞게 선별하여 사용할 수 있고 강력한 Client-Server 기능을 제공하여 실제 웹쉘 프로그
램을 피해시스템에 업로드할 필요가 없다는 것이 특징이다.
ASP木2006의 이러한 특징 때문에 실제 해킹 사고에서 가장 많이 발견되고 있으며 웹쉘
프로그램이 피해시스템에 존재하지 않기 때문에 탐지가 어려운 것이 사실이다.
1) 구성 및 기능
ASP木2006 프로그램은 다음과 같은 주요 파일들로 구성된다.
- 2006.asp : 악성 웹쉘 프로그램
- 2006x.exe : 클라이언트 서버 기능 제공 프로그램
- 2006z.exe : 2006.asp의 기능을 선별하여 생성하는 프로그램
- hididi.ini : 설정 파일
ASP木2006은 서버정보, 시스템 사용자 정보, 통신정보, Shell 실행, 파일 조작, 데이터
베이스 조회 및 수정 등의 기능을 제공하며 패스워드가 설정되어 있어 패스워드를 입력
해야 실행시킬 수 있다.
다음은 2006.asp 파일을 실행한 화면으로 패스워드를 입력받는 부분이다.
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 6 -
소스에 삽입되어 있는 패스워드를 입력하면 웹쉘이 실행되어 다음과 같은 메뉴를 볼
수 있다.
2) 특정 기능 선별
2006z.exe는 2006.asp의 기능 중 원하는 기능만 선별하여 새로운 2006_Lite.asp 파일을
생성해준다. 다음 그림과 같이 화면의 왼쪽 부분에서 탑재하고자 하는 기능을 선택하여
체크한 후 2006.asp 파일을 열어 2006_Lite.asp를 생성시킨다. 2006.asp의 기능 중 일부 기
능만 탑재하여 생성되므로 파일의 사이즈가 차이가 나는 것을 알 수 있다.
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 7 -
3) 클라이언트-서버 기능
ASP木2006에서 제공하는 클라이언트-서버 기능은 실제 피해시스템에 악성 웹쉘 자체를
업로드할 필요가 없게 한다. 즉 공격자 자신의 시스템이나 제3의 시스템에 존재하는 악성
웹쉘 프로그램으로 피해시스템에 공격을 가할 수 있게 된다.
2006x.exe 프로그램은 이러한 기능을 위한 중간코드 server.asp와 위에서 생성된 공격용
웹쉘 프로그램인 2006a_Lite.asp를 html파일로 변환시켜주는 역할을 한다.
생성된 server.asp의 내용을 살펴보면 아래와 같이 매우 짧은 스크립트 코드로 실제 피
해시스템에는 이 내용만 업로드시키면 된다. 이는 server.asp 파일 자체를 피해 시스템에
업로드 하여 사용 할수도 있으며 또는 피해시스템에 존재하는 정상적인 asp파일에 해당
코드만 삽입하여 사용할 수도 있다. 즉, 피해 시스템에서는 실제 웹쉘 코드를 찾을 수 없
다는 것이 ASP木2006이 제공하는 가장 큰 특징이다.
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 8 -
4) 공격 과정
이제 생성된 2006a_Lite.asp.html 파일과 server.asp 파일로 어떻게 공격을 실행하는지
살펴보자.
① 파일 업로드 취약점 등을 이용하여 공격하고자 하는 시스템에 위에서 생성된
server.asp 파일만 업로드 한다.
② 2006x.exe를 이용하여 공격용 프로그램으로 생성한 2006_Lite.asp파일을 htm 문서로
변환시킨 2006_Lite.asp.htm파일을 공격자 자신의 시스템에서 실행한다.
③ 공격하고자 하는 시스템에 업로드된 server.asp 경로를 입력한 후 버튼을 누르면 새
로운 IE 창이 뜨면서 피해시스템의 server.asp가 실행되는데 이는 실제 악성 웹쉘
프로그램인 2006_Lite.asp가 실행되는 것이다. 다음 그림은 2006_Lite.asp가 실행되
면서 패스워드를 입력 받는 화면이 실행되는 것을 볼 수 있다.
5) 조치 방법
이러한 방법으로 공격당한 시스템을 분석할 경우 실제 악성 웹쉘 프로그램이 존재하지
않으므로 악성코드를 찾아내기가 난해하다. 새로 생성된 웹쉘 파일을 찾거나 다음과 같은
악의적인 코드 Execute(Session(“lcxMarcos"))가 정상 asp에 포함되지 않았는지 확인하여
해당 코드 부분을 삭제 해야한다.
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 9 -
4. 예방 대책
1) 홈페이지 파일 업로드 취약점 제거
파일 업로드가 불필요한 게시판의 경우는 업로드의 기능을 완전히 제거하고 필요한 경
우에는 파일의 확장자를 체크한다. 확장자를 체크하는 루틴은 javascript 같이 html 파일
내에 포함되어서는 안되고 반드시 서버 사이드에서 실행되는 CGI 파일 등에 존재해야
한다.
또한 업로드를 제한하는 asp, cgi, php, jsp 등의 확장자를 막는 방법으로 구현하기 보다
는 허용하는 확장자 즉 txt, hwp, doc, pdf, gif 등의 업로드 가능한 파일 확장자만 올릴
수 있도록 체크하는 것이 바람직하다. 특정 확장자만 막는 경우에는 우회해서 올릴 수 있
는 방법들이 존재하기 때문이다.
2) 파일 업로드 폴더의 실행 제한
웹서버의 파일 업로드 전용 폴더를 만들고 전용 폴더의 스크립트 파일 실행을 제한하여
해당 폴더내에 있는 파일이 실행되지 않도록 해야한다.
윈도우 서버의 경우 [설정] -> [제어판] -> [관리도구] -> [인터넷서비스관리자]에서 마
우스 오른쪽 버튼을 클릭하여 [등록정보] -> [디렉토리] 를 선택해 실행권한을 ‘없음’으로
설정한다. 리눅스의 경우 httpd.conf와 같은 웹서버 설정 파일에서 변경한다
3) SQL Injection 방지
웹쉘 공격은 파일 업로드 취약점 뿐만 아니라 SQL Injection을 이용해서도 가능하므로
DB 쿼리와 관련된 다음과 같은 특수 문자들을 필터링 하여 사용자의 입력값에 포함되어
있을 경우 에러를 발생시켜 악의의 쿼리가 실행되지 않도록 방지해야한다.
‘ “ ; , - (space)
사용자 로그인 페이지나 게시물의 번호를 입력받는 등의 사용자 입력을 받아 그 변수
를 DB 쿼리문에 삽입하여 사용하는 모든 경우에 이러한 필터를 적용하여 단 한개의 페
이지에서라도 SQL Injection의 허점이 존재하지 않도록 주의해야 한다.
SQL Injection공격은 에러메세지를 참고하여 이루어지는 경우가 대부분이므로 에러메세
KrCERT-IN-2007-02 http://www.krcert.or.kr
웹쉘 현황 및 분석 cert@krcert.or.kr
_______________________________________________________________________________________        _
__________________________________________________________________________________________
- 10 -
지의 출력만 막아도 어느 정도 방지할 수 있다. 다음은 IIS 서버에서의 에러메세지를 제
한하는 방법이다.
5. 탐지 방법
실제 피해 시스템에서 웹쉘 프로그램을 탐지하는 방법으로 파일내 특정 문자열을 이용
하여 찾는 방법이 있다.
다음은 현재 가장 많이 발견되고 있는 ASP木2006을 포함한 웹쉘 프로그램을 찾을 때
유용하게 검색할 수 있는 키워드이다. 단 모든 웹쉘 프로그램을 아래의 키워드로 탐지 가
능한 것은 아니며 새로운 웹쉘 프로그램이 유행할 경우 다른 키워드가 요구될 수 있다
문자열 설 명
lcxMarcos
최근 발생하는 사고 현장에서 자주 발견되는
웹쉘코드에 삽입된 고유문자열
Session("#"), Session("1")
최근 발생하는 사고 현장에서 자주 발견되는
웹쉘코드에 삽입
Request("#"), Request("1")
최근 발생하는 사고 현장에서 자주 발견되는
웹쉘코드에 삽입
cmd.exe command.com 대부분의 웹쉘에서 사용
Encode 암호화된 웹쉘코드에 사용
gb2312
charset에 설정된 중국어 코드
※ 피해시스템에서 발견되는 대부분의 웹쉘이
중국에서 제작된 것이므로 본 키워드가 포함되어
있으나 이는 중국어로 제작된 정상적인 파일에도
포함되고 있으므로 유의해야 함

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,789 개
  • 현재 접속자 :  244 명