[보안뉴스 성기노 객원기자] 방화벽, IPS, IDS 등 다양한 네트워크 보안장비를 갖추고도 웹 서버 안에 미리 숨겨져 있던 웹쉘로 인해 보안 사고가 발생하는 경우도 있다.

웹쉘은 공격자가 파일 첨부 기능이 있는 게시판 등에 악성파일을 업로드한 뒤 관리자가 이를 실행하면 악성코드에 감염되는 수법을 말한다. 이를 통해 웹서버 내 모든 자료를 볼 수 있을 뿐만 아니라 웹페이지 변환, 추가적인 악성코드 업로드 등을 통해 해당 사이트의 모든 내용을 위변조할 수 있는 치명적인 해킹 방법이다. 웹쉘 공격은 전통적이고 오래된 수법임에도 여전히 관리자들의 보안 의식 소홀로 자주 ‘낚이는’ 해킹 방법이다.
최근 웹 해킹의 90% 정도에서 사용되고 있는 해킹기법이 바로 웹쉘을 통한 공격이다. 이러한 웹쉘은 웹서버 안에 상주하게 되면, 서버의 모든 권한을 장악하고 이후 동일 네트워크의 모든 서버들까지 2차 장악하는 등 한번 걸리게 되면 서버의 모든 핵심컨트롤 기능을 모두 적에게 넘겨주게 되는 치명적인 공격 방법이다.
그러나 이러한 웹쉘은 JSP, ASP, PHP 등과 같은 스크립트(Script)로 작성되어 있으며, 다양한 변종들로 인해 기존의 안티 바이러스와 같은 보안 솔루션으로 방어하는 데 한계점이 드러나 있다.
따라서 웹쉘을 방어하기 위해서는 이미 나와 있는 웹쉘에 대한 다양한 패턴정보뿐 아니라 신종 웹쉘에 대해서도 능동적으로 대응할 수 있는 휴리스틱 기법을 사용해야 한다. 또한 웹쉘을 포함한 서버 내 보안위협이 되는 파일 등에 대한 실시간 모니터링이 중요하다. 최근의 웹서버는 NAS와 같은 대용량 스토리지를 많이 사용하고 있으므로, 이에 대한 대비책도 염두에 두어야 한다.
수동진단을 통한 사후 대처는 이미 발생한 피해를 더 이상 확산시키지 않는데 포커스를 둘 수밖에 없으므로, 사전 예방을 위해 실시간 탐지 등을 통해 더욱 관심을 기울여야 한다. 이외에 시스템 및 DB, WEB/WAS, 네트워크 장비 등의 보안설정을 철저히 점검 관리하고 취약점을 제거하는 것이 매우 중요하다.
웹쉘에 대한 사전 예방법은 크게 3가지로 구분된다. 첫째, 홈페이지 파일 업로드 취약점 제거다. 이는 파일 업로드가 불필요한 게시판의 경우는 업로드 기능을 완전히 제거하고 필요한 경우에는 파일의 확장자를 체크하는 것이다. 확장자를 체크하는 루틴은 자바스크립트같이 html 파일 내에 포함되어서는 안되고 반드시 서버 사이드에서 실행되는 CGI 파일 등에 존재해야 한다. 또한 업로드를 제한하는 asp, cgi, php, jsp 등의 확장자를 막는 방법으로 구현하기보다는 허용하는 확장자 즉, txt, hwp, doc, pdf, gfi 등의 업로드 가능한 파일 확장자만 올릴 수 있도록 체크하는 것이 바람직하다.
두 번째는 파일 업로드 폴더의 실행 제한으로, 이를 위해서는 웹서버의 파일 업로드 전용 폴더를 만들고 전용 폴더의 스크립트 파일 실행을 제한하여 해당 폴더 내에 있는 파일이 실행되지 않도록 해야 한다.
세 번째는 SQL Injection 방지다. 웹쉘 공격은 파일 업로드 취약점뿐 아니라 SQL Injection을 이용해서도 가능하므로 DB 쿼리와 관련된 특수 문자들을 필터링해 사용자의 입력 값에 포함되어 있을 경우 에러를 발생시켜 악의의 쿼리가 실행되지 않도록 방지해야 한다. SQL Injection 공격은 에러 메시지를 참고해 이루어지는 경우가 대부분이므로 에러 메시지의 출력만 막아도 어느 정도 방지할 수 있다.
[성기노 객원기자(kino@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>