이미지 파일을 이용한 PHP 웹쉘 악성코드

웹쉘(WebShell)이란 웹 서버에 업로드 되어 파일 탐색이나 시스템 쉘 명령 등을 실행할 수 있게 하는 파일이다. 공격자는 웹 브라우저를 이용해 서버 시스템의 파일을 탐색하고 쉘 명령을 내릴 수 있다. 악의적인 웹쉘 파일이 서버에 업로드 되는 것을 방지하기 위해 업로드 파일 확장자를 제한하는 등의 방법이 있다. 하지만 공격자는 다음과 같은 방법으로 이를 우회할 수 있다.

  • 서버 사이드 스크립트(Server-Side Script)의 확장자 필터링을 우회하는 파일 업로드
  • GIF, PNG, JPEG 이미지 등 업로드 가능한 확장자 파일에 악성 스크립트를 삽입하여 파일 업로드

본 글은 이 중에서 두번째 방식에 해당되는 내용으로, GIF 이미지 확장자 파일에 삽입된 웹쉘 악성코드에 대해 설명한다. GIF 파일은 실제로 유효한 이미지 파일일 수도 있고 아닐 수도 있다. 공격자는 PHP 나 ASP 등의 서버 사이드 스크립트 GIF 매직값(GIF87a/GIF89a) 뒤에 삽입하거나 파일의 가장 마지막인 TRAILER(3B) 뒤에 삽입한다. 일반적으로 서버는 유효한 이미지 파일 포맷 여부 확인을 매직값만 보고 판단한다. 공격자는 이를 이용하여 단 몇 바이트의 매직값 뒤에 악성 스크립트를 삽입하여 이미지 파일 조건을 통과한다.

이미지 파일을 이용한 PHP 웹쉘

이를 YARA 룰로 시그니처화 하면 다음과 같다. (실제 V3 제품의 진단 방식과는 차이 있음)

rule image_webshell {
  meta:
      info = "이미지 파일을 이용한 PHP 웹쉘 악성코드"
  strings:
      $gif = "GIF87a"
      $gif2 = "GIF89a"
      $php = "<?php"
      $command = "$_GET['cmd']"
  condition:
      ($gif at 0 or $gif2 at 0) and $php and $command
}

ASEC 분석팀은 몇가지 유형의 웹쉘 파일을 분석하고 이를 탐지할 수 있도록 진단을 반영하였다. 웹서버에서 웹쉘 악성코드가 탐지되었다면 이로 인한 추가 악성코드 발견이나 침해 사고가 발생했을 수 있으니 반드시 정밀 검사가 필요하다.

[파일진단]
WebShell/GIF.Backdoor.GEN (2020.12.02.03)

[IOC]
2d1bc085815fcdc994b24ea97cdf1170

Categories:악성코드 정보

Tagged as:,

5 5 votes
별점 주기
guest
0 댓글
Inline Feedbacks
View all comments