2021-05-19 07:30 (수)
[특집] 웹해킹의 시작은 ‘웹쉘’로부터
상태바
[특집] 웹해킹의 시작은 ‘웹쉘’로부터
  • 길민권
  • 승인 2011.06.02 04:36
이 기사를 공유합니다

해킹 당한 웹서버 중 웹쉘이 발견된 웹서버는 총 91%”
 
웹쉘이란 무엇인가?
웹쉘(Webshell)이란 해커가 악의적인 목적으로 웹서버에서 임의의 명령을 실행할 수 있도록 제작한 프로그램이다. 웹쉘은 다양한 방법으로 만들 수 있지만, 간단한 서버 스크립트(jsp, php, asp,..)로도 만드는 방법이 널리 사용된다. 이 스크립트들은 웹서버의 취약점을 통해 웹서버에 업로드되며 이후에는 해커가 웹서버 환경에서 임의의 명령어를 실행할 수 있다.
 
웹쉘이 설치되면 해커는 보안 시스템을 우회하여 별도의 인증 절차 없이 피해시스템에 손쉽게 접속하는 것이 가능하다. 접속한 피해시스템에서 임의의 명령어를 실행해도 보호 조치가 힘든 상태라고 보면 된다. 아울러 피해시스템의 파일을 수정, 복사, 삭제와 같은 시스템 제어가 가능하고, 웹소스 코드에 악성 스크립트를 삽입하여 해당 웹서버에 접속한 일반 사용자들의 PC를 공격하거나 피해시스템과 연결된 데이터베이스의 정보도 유출할 수 있는 등 매우 큰 피해를 입힐 수 있는 도구이다.
 
웹쉘에 의한 국내 사이트들의 피해
인터넷침해대응센터(www.krcert.or.kr)에서는 해킹 당한 웹서버 중 웹쉘이 발견된 웹서버는 총 91%의 분포를 보였다고 한다. 웹 취약점을 발견 후 해커들은 제일 먼저 웹쉘을 설치하고, 다음 순서로 웹서버의 시스템 권한을 획득하는 순서로 진행된다. 이후 해커는 웹쉘을 이용하여 해킹한 로그 및 흔적을 지우는 과정을 수행한다. 이렇게 되면 웹쉘 접속 시 해커의 웹브라우저에 원격으로 윈도우탐색기가 실행되는 것과 비슷한 상태가 된다. 필자는 예전 웹 방화벽 엔지니어로 근무할 때 종종 고객 웹서버에 웹쉘이 설치된 광경을 보고 놀라지 않을 수 없었다. 실제로 웹쉘은 적합한 보안 제품을 이용하지 않으면 탐지가 어렵기 때문에 해킹에 광범위하게 사용되고 있다. 
 
웹쉘을 방어하기 위해서 어떤 솔루션이 필요한가
실제 웹쉘을 탐지하기에는 일부 까다로운 부분이 분명 존재 한다. 웹셀을 다양한 경로로 웹서버에 업로드할 수 있고 일단 웹쉘이 설치되면 웹쉘을 이용하는 것과 정상적인 웹페이지들을 이용하는 것에서 큰 차이가 없게 되기 때문이다. 단순히 웹쉘에 대한 패턴만을 이용해서 탐지하는 것은 많은 한계가 존재한다. 이는 웹셀이 웹서버를 공격하는 데 매우 흔하게 사용되는 또 다른 이유이기도 하다.
 
웹쉘 방어에 효과적인 대응을 위해서는 우선, 웹서버에 파일 업로드하는 것을 효과적으로 제어할 수 있어야 한다. 이를 위해 적절한 기능을 갖춘 웹 방화벽을 도입하고 웹서버에서 업로드 된 파일들이 실행권한이 없도록 웹서버 환경을 설정하는 것이 중요하다. 2차적으로는 웹쉘의 이용을 탐지하는 방법을 갖추는 것이 필요하다. 해커들은 흔히 시스템에 대한 제어권을 얻기 위해 웹쉘을 통하여 특정 시스템 커맨드를 이용하거나, 상위 디렉토리 또는 특정 디렉토리에 접근을 한다. 이때 위의 명령어들이 웹쉘에 전달되어야 하므로 이러한 명령어들을 탐지함으로써 웹쉘의 이용을 차단하고 웹쉘의 존재 여부를 판단할 수 있다.
 
위와 같은 웹쉘 공격 자체를 차단하는 방법 외에 정적분석도구(Static Analysis Tools)을 이용하는 방법도 효과적이다. 웹쉘로 활용될 수 있는 웹소스를 검색하거나 악의적으로 수정된 웹페이지 등을 주기적 또는 실시간으로 모니터링 함으로써 웹쉘 공격을 차단할 수 있다.
 
정리하면 웹쉘은 비교적 간단한 방법으로 심각한 피해를 줄 수 있는 강력한 공격기법이다.
웹쉘을 차단하기 위해서는 웹서버를 적절하게 보호할 수 있는 웹 방화벽과 분석도구들을 사용하는 것이 효과적이며 보안을 감안한 웹서버 환경 설정 또한 중요하다.