웹셸
웹셸(Web Shell)은 웹 서버에 명령을 실행하여 관리자 권한을 획득해 행하는 공격 방법을 말한다.[1]
목차
개요
웹 애플리케이션의 첨부 파일에 대한 부적절한 신뢰와 불충분한 점검으로 인해 악의적인 원격 공격 코드가 웹 서버로 전송, 실행되는 방법을 말한다.[1]
원리
웹셸은 간단한 서버 스크립트 (jsp,php,asp ..)로 만드는 방법이 널리 사용되며 이 스크립트들은 웹서버의 취약점을 통해 업로드 된거며 웹셀 설치시 해커들은 보안 시스템을 피하여 별도의 인증없이 시스템에 쉽게 접속이 가능하다.[2]
웹 애플리케이션 아키택쳐(소프트웨어)
웹쉘이 실행될 수 있는 웹 애플리케이션(Web Application) 환경을 말허며 웹쉘이 구동하기 위해서는 웹 애플리케이션의 SSS와 CSS(Client Side Script, 이하 CSS)가 필요하다.
- 홈페이지가 구동하기 위해서는 HTTP(HyperText Transfer Protocol)를 통해 WWW상에서 정보를 주고 받게 된다. 서버 측면 프로그램(Server-Side Program)에 해당 하는 부분이 바로 PHP, JSP ASP, ASP.NET에 해당하는 SSS를 의미하게 되고, HTML등 Client-Side Program에 해당하는 부분이 CSS를 의미하는 거다.
- SSS는 클라이언트가 파일을 HTTP로 요청하면 웹서버(스크립트 엔진)의 정보를 이용하여 DB서버에 접속하여 사용자에게 동적 데이터를 전송하는 것을 기본으로 하며, 최근에는 클라이언트에서 전송한 내용의 동적 데이터 생성 뿐만 아니라 세션을 통한 사용자 구분 및 사용자 별 서비스 제공 등 다양한 기능을 제공하는 거다.(자세한 사항은 각주의 출처 참고)[3]
언어
서버에서 사용되는 서버 측면 프로그램(Server-Side Program)이 PHP, JSP, ASP, ASP.NET과 관련된 확장자를 통해서 서비스를 제공하게 되기 때문에 웹쉘이 구동하기 위해서는 해당 확장자의 파일을 사용해서 동작하므로 스크립트 언어와 파일 확장자 종류는 다음과 같다.[3]
- 보여지는 순서는 스크립트 언어 : 파일 확장자 순이다.
- PHP : php, php3, php4, php5, phtml, inc
- JSP : jsp, jsf
- ASP : Asp, asa, cds, cer
- ASP.NET : aspx, asax, ascx, ashx, asmx, axd, config, cs, csproj, licx, rem, resources, resx, soap, vb, vbproj, vsdisco, webinfo
- 위 목록들은 웹셸 공격에 사용되는 확장자 목록이다.[3]
발생원인
파일업로드 기능의 사용여부로 분류할 수 있으며, 파일업로드는 클라이언에 존재하는 파일을 서버에 업로드 하는 기능을 의미한다. 일반적으로 스마트편집기(SmartEditor), 다음편집기(DaumEditor), 전자정부프레임워크 등의 오픈소스 게시판을 이용하거나 자체 개발한 파일업로드 기능을 이용하여 웹쉘파일의 업로드를 시도하게 된며 파일 업로드를 이용하여 웹쉘을 서버에 올리기 위한 방법으로는 SSS나 CSS에 존재하는 파일 확장자 필터링 우회, 이미지 파일 등 정상 확장자 파일 내에 공격코드를 삽입하는 정상 확장자를 이용한 우회 등으로 분류할 수 있다.[3]
구분
위의 발생원인 중 대표적으로 확장자 우회와 취약점이 있다.[3]
확장자 우회
파일 확장자 우회 이기도 하며 예시로는 다음과 같다.
- 서버(Server Side Script) 우회
- CSS(Client Side Script) 우회[3]
취약점
정상 확장자(JPG, PNG등)를 이용한 우회, WEB/WAS, 애플리케이션(Application) (OS, DBMS 등), 편집기(Editor)으로 나눈다.[3]
정상 확장자(JPG, PNG등) 이용 우회
이미지 파일에 웹쉘 백도어 코드 숨기기(Hiding Webshell Backdoor Code in Image Files)이다.[3]
WEB/WAS
IIS 파일 구문분석 우회로 공격 아파치 스트럿츠2(IIS File Parsing Bypass Attack Apache Struts2) 원격 임의코드 실행 취약점�(CVE-2013-2251, CVE-2016-3081, CVE-2016-4438 등 다수) 가 대표적이다.[3]
애플리케이션(OS, DBMS 등)
- 자바 0-데이 취약성(Java 0-day Vulnerability)
- 원격 파일 포함 취약성(RFI : Remote File Inclusion Vulnerability)
- SQL 주입 취약성(SQL Injection Vulnerability)
등이 있다.[3]
편집기
- 스마트편집기(SmartEditor) 2.3.3 : 이미지 파일 확장자 미체크
- 스마트편집기(SmartEditor) 2.8.2.1 : 파일업로드 취약점 등이있다.[3]
파일 업로드
- 사용하는 것 : 파일 확장자 우회, 정상 확장자(JPG, PNG등) 이용 우회, 편집기
- 사용 안 하는 것 : WEB/WAS, 애플리케이션(OS, DBMS 등)[3]
종류
웹셀 종류는 크게 단독파일과 내용추가가 있으며 단독파일은 그 안에서도 텍스트(Text)와 이미지(Image)가 있다.다음은 텍스트에있는 종류들이다.[3]
텍스트
텍스트에는 단일, 다중, 기타 등 3가지가 있다.
단일
한줄웹쉘, 단일줄(Single-line, One-line), 웹셀, 일구화목마(后门木马)등이 있으며 예시로는 다음과 같다.
- ASP : <% eval request(“cmd”) %>
- PHP :
- JSP : <% Runtime.getRuntime().exec(request.getParameter(“cmd”)%>[3]
다중
1개의 파일에 다중 공격구문이 존재하는 경우를 말하며 다음 내용은 그 예시이다.
- ASP : ASPyder, Zehir Asp Shell, ASPXSpy, ASPX Shell
- JSP : JspSpy, JspSpyWeb, jFolder, shack2, devilzShell, JSP, File Browser, jshell, JspWebshell[3]
기타
다중분할웹쉘(Multi Division Webshell) : 공격자가 전송하는 다중분할 피라미터를 웹서버에서 재조합하는 방식이다.[3]
이미지
그 외에 포함되며 이미지 웹셸(Image Webshell)이 대표이다.
- 이미지파일 마지막에 공격구문을 삽입하는 방법이다.
- 이미지파일 구조 내에 공격구문을 삽입하는 방법이다.[3]
내용추가
텍스트와 같이 포함되는 것으로 그 안에 텍스트가 다중으로 되어있어서 기존에 존재하는 소스코드에 웹솋이 삽입되어 있는 형태 를 말하는 거다.(자세한 사항은 링크 참조)[3]
솔루션
웹셸을 방지하기 위해 여러 솔루션이 나왔지만 기존 방식의 한계가 있었고 새로운 방식들이 나오고 있다 먼저 기존방식의 한계다.[4]
한계
- 시큐어 코딩(Secure Coding) : 웹 어플리케이션 보안 취약점을 제거할 수 있으나, 비용이 높고, 개발/구축/유지보수 전 과정에 대한 인력 리소스 부족으로 많은 기업들이 어려움을 주고 있다.
- 신ㆍ변종 웹쉘의 탐지 : 현재의 시그니처 기반의 솔루션(방화벽(Firewall), IPS, WAF)으로는 신종 웹쉘, 보안장비 우회기법 등 신규 해킹의 방어가 현실적으로 어려움이 있으며, 다양한 우회 기법은 나날이 발전하고 있다.
- 웹 방화벽(WAF) 솔루션 : 웹 서버로 송, 수신되는 모든 패킷(Packet)의 내용을 검사하고 차단하는 웹 방화벽(WAF)은 OWASP , 국정원 취약점 등의 다양한 웹 공격을 시그니처 기반으로 탐지, 차단하기 때문에 신 변종 웹쉘에 대한 완벽한 대응이 불가능하다.
- 실시간 모니터링의 필요성 : 웹쉘로 인한 해킹 피해를 최소화하기 위해서는 24시간 실시간 모니터링이 필요하고 정확하고 빠른 탐지와 신〮변종 웹쉘에 대한 명확한 분석을 필요로 한다.
위와 같은 문제를 해결하기 위해 나온 방식이 바로 실시간 웹쉘 탐지 솔루션(MetiEye)이다.[4]
실시간 웹쉘 탐지 솔루션
보안장비에서 탐지하지 못하는 신 변종 웹쉘을 정규식과 휴리스틱 탐지 기술을 사용하여, 실시간으로 탐지 웹쉘에 대한 차단, 격리 조치 등 선제적 대응이 가능한 보안 솔루션이다.[4]
구성도
네트워크 구성 환경을 분석하여 솔루션의 안정적인 성능과 보안성, 에이전트(Agent)가 설치되는 감시대상 서버의 영향력 등을 고려하여 최적화 된 시스템을 구성한다.[4]
장점
다른 장점도 있지만 그중에서 웹쉘 탐지 기법에 대해 설명하지면
- 이미 알려진 웹쉘은 해시 값을 DB화하고 정형화된 정규식 패턴 외 웹쉘 특성을 파악하는 휴리스틱(Heuristic)
탐지 기법으로 다양한 유형의 웹쉘 탐지가 가능하다.[4]