보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

Native IIS 모듈로 위장한 IIS 타깃형 악성코드

2021.10.06

58,743


 

 

 

 

01. 개요

 

인터넷 정보 서비스(IIS, Internet Information Services)는 마이크로소프트 윈도우 서버들을 위한 인터넷 기반 서비스들의 모음으로 윈도우 서버에서 웹 서비스를 사용하기 위해 설치해야되는 서비스로 알려져 있다. 2013년에 발견된 IIS 환경 최초의 악성코드는 ISN infostealer로 전자상거래 사이트의 지불 정보탈취를 목적으로 활동하였다.

 

올해 IIS를 타깃으로 수행된 공격은 2021년 3월에 발생한 Microsoft Exchange 제로데이 취약점인 ProxyLogon(CVE-2021-26855, CVE-2021-26857, CVE-2021-26858, CVE-2021-27065) 으로, 정부기관을 포함한 전세계 IIS 서버를 대상으로 공격을 시도하고 있다. Microsoft Exchange 서버의 경우 IIS를 기반으로 운영되고 있어 취약점 발견 이후 새로운 공격 목표로 떠오르기 시작하였다. 해당 취약점에 취약한 서버는 공격 성공 시 지속적인 시스템 접속과 관리자 권한 확보를 통한 추가적인 공격에 사용될 가능성이 있다.

 

지속적인 시스템 접속 및 관리자 권한 확보가 가능하다는 뜻은 해당 서버를 장악했다는 것으로 Backdoor를 포함한 다양한 공격에 사용되거나 특정 공격에서 징검다리 역할을 하여 공격자가 제작한 C2로 리다이렉션을 진행하는 등의 공격이 가능하다. 이번 호에서는 IIS를 타깃으로 하는 악성코드들의 유형과 공격 방식에 대해서 알아보려 한다.

 

 

  

 

[그림 1] 이동통신 기술의 진화에 따른 산업적 영향력의 변화 (출처 : 과학기술정보통신부)

 

 

02. 공격 시나리오 및 악성코드 분석

 

1) 공격 시나리오

 

Native IIS 모듈은 기본적으로 “%windir%system32inetsrv” 폴더에 있으며 서버에서 호스팅하는 일부 또는 모든 응용 프로그램에 대해 구성이 가능하다. 

 

Native IIS 모듈은 CMD.exe, AppCmd.exe, GUI 편집기인 IIS 관리자를 통해 등록이 가능하며 “%windir%system32inetsrvconfigApplicationHost.config” 파일을 수동으로 편집하여 등록이 가능하다. 이후 해당 모듈이 IIS 서버로 전송된 요청을 처리 등의 이유로 필요한 경우 하는 IIS 작업자 프로세스(w3wp.exe)에 의해 로드 된다. 

 

 

 

[그림 2] Windows Server 2019 최초 설치 시 확인되는 모듈 목록

 

 

Native IIS 악성코드는 IIS C++ API를 사용하여 작성된 DLL으로 정상 모듈로 위장하여 희생자의 IIS 서버에 Native IIS 모듈로 등록하여 사용하게 된다. 최초 HTTP 요청을 파싱하여 공격자가 원하는 모드로 처리 가능하도록 미리 셋팅되어 있으며 사용된 모드에 따른 HTTP 응답값을 위장하여 요청자에게 응답값을 전달하도록 설계되어 있다.

 

 


 

[그림 3] Native IIS 악성코드 동작 로직

 

 

Native IIS 악성코드를 활용하여 공격하는 방법은 크게 5가지의 유형으로 분류할 수 있으며, 대부분 감염된 IIS 서버를 활용하여 공격자가 이전에 생성한 C2 서버로 접근하도록 처리한 뒤 백도어(Backdoor module)를 제외한 조건에 맞는 모드의 결과값을 응답값에서 수정하여 전달하는 방식을 차용하고 있다.

 


[그림 4] Native IIS 악성코드를 활용한 5가지 공격 시나리오 (출처: welivesecurity)

 

 

2) 악성코드 분석 : Backdoor, Infostealer 모드

 

 

첫 번째로 소개할 Native IIS 악성코드는 Backdoor 및 Infostealer 모드가 포함된 악성코드다. 공격자는 IIS 서버에 패치 되지 않은 취약점을 이용하여 IIS 서버를 탈취 후 자신들의 공격 거점으로 사용하기 위해 Backdoor를 설치하고 여기에 Infostealer 모드를 추가하여 IIS 서버와 일반 사용자간 통신을 확인하여 공격자가 원하는 데이터를 추출하는 모드를 삽입한 것이 특징이다.

  

분석대상 분류

내용

공격 시나리오

 • Scenario 1 : 설치된 Backdoor에 접근 시도

 • Scenario 2 : 정상 사용자와 통신 중 민감한 데이터 탈취 시도

분석 대상 악성코드 정보

(MD5)

 • 1176B51814B59526B02AA7F3C88334A0256D0370

 • 58E23A74AC78D223505C774A20D0C1DE1070BE3A

 • 66739373D34DE7002C80A5E2AF660E9EA6FF6E7F

 • 68B6E7A48CD9B894A076C4D10A64E98F1C7366A3

분석대상 악성코드

주요기능

 • Infostealer : 데이터 통신 간 자격 증명 정보 탈취

 • Backdoor : 쉘 명령어 실행파일 업로드, 파일 다운로드

 

[표 1] 분석된 악성코드 개요

 

 

  

 

[그림 5] Backdoor, Infostealer 모드 공격 시나리오

 

 

Infostealer 모드는 악성코드가 설치된 서버로 요청되는 HTTP body 값에 password나 Transport-Security 가 포함된 요청 발생 시 해당 본문을 지정된 경로 및 형식으로 HTTP body 값을 저장한다.

 

 

 

 

[그림 6] 특정 조건 만족 시 HTTP Body 데이터 저장 시도

 

 

Backdoor 모드는 악성코드가 설치된 서버로 HTTP 요청 전송 시 공격자가 미리 지정한 HTTP header 사용 여부, header의 데이터 값에 사전에 설정된 패스워드 값이 존재하는지 확인한다. 조건 일치 시 전달된 명령어를 처리하며 불일치 시 정상적인 통신에 대한 응답값을 전송한다.

 

COM_InterProt, X-Chrome-Variations, Cookie, X-FFEServer, Sense-Pwd, X-Chrome-Variations,

Strict-Transport-Security, X-Content-Type-Options, X-BLOG, X-BlogEngine X-Cache, X-Via, X-Password, X-Chrome-Variations, XXXYYY-Ref

 

[표 2] 공격자가 미리 지정한 HTTP header 목록(14종)

 

 

 

 

[그림 7] Backdoor 모드 사용을 확인하기 위해 HTTP header 값을 비교하는 로직

 

 

NO

명령어

변수

명령어 설명

리턴값

1

CMD

명령어

“C:Windowssystem32cmd.exe /c”를 이용한 쉘 명령어 실행

요청한 명령의

결과값 출력

2

PIN

N/A

연결 확인 용도

PONG

3

INJ

BASE64인코딩된 데이터

BASE64 디코딩 이후 새로운 스레드로 실행 OR

Process Hollowing 기능을 이용하여 C:

WindowsSystem32credwiz.exe 프로세스에 인젝션 실행

DONE

4

DMP

N/A

로그 파일의 내용을 읽어 들임

파일 내용 또는

No Creds Found

5

UPL

파일명, BASE64인코딩된 파일 데이터

파일 데이터를 지정한 파일명으로 생성

DONE

6

DOW

파일명

지정한 파일의 내용을 읽어 들임

파일 내용

7

other

N/A

N/A

INVALID COMMAND

 

[표 3] 사용 가능한 Backdoor 명령어 목록

 

 

3) 악성코드 분석 : SEO 악용 및 Proxy 모드

 

다음으로 알아볼 Native IIS 악성코드는 검색엔진 최적화(SEO, Search Engine Optimization)을 이용하여 웹 크롤러의 요청을 공격자가 원하는 페이지로 연결되도록 속여 일반 사용자가 검색엔진을 이용 시 공격자의 페이지로 접속하도록 유도하는 방식을 사용하고 있다. 추가적으로 공격자가 C2로 통신을 원활하게 하기 위한 Proxy 모드도 포함하고 있다.

  

분석대상 분류

내용

공격 시나리오

• Scenario 4 : Proxy를 이용한 C2와의 통신 시도

• Scenario 5 : 검색엔진 봇에게 조작된 HTTP 응답 전달 시도

분석 대상 악성코드 정보

(MD5)

 • 279D841539212D4F159404417404827EBC17B8D7

 • 44933C61C82B9FB7C2A17B32C010C5B044B638F3

 • 4E8B84412101112E73F846545A412127AA5DCEB8

 • 2ED260A0EA017D0322C494E9EBFB0E1C07A6A0F2

분석대상 악성코드

주요기능

 • SEO 악용 : 크롤러의 HTTP 요청에 대한 응답을 공격자가 원하는 콘텐츠로 변경

 • Proxy : 감염된 호스트와 해당 C&C 서버 간에 HTTP 요청을 릴레이

 

[표 4] 분석된 악성코드 개요

 

 

Proxy 모드는 일반적인 사용자나 감염된 사용자, 검색엔진 봇 등 악성코드에 감염된 IIS 서버에 접근 시 해당 서버로 전송된 HTTP 요청을 공격자의 C2 서버로 넘겨주는 역할과 C2에서 재전송되는 데이터를 전달받아 HTTP 응답으로 전달하는 역할을 수행한다.

 

 360Spider, Baiduspider, Bingbot, Googlebot, Sogou Pic Spider, Sogou web spider, Yahoo, YandexBot, YisouSpider​

 

 

[표 5] User-Agent 헤더에서 확인하는 봇 종류(9종)

 

 

 

[그림 8] SEO 악용 및 Proxy를 이용한 공격 흐름도

 

 

SEO 악용을 진행하기 위해 정규 표현식을 이용하여 설치된 서버로 수신되는 HTTP 요청 중 User-Agent 헤더에서 특정 문자열이 있는 경우 검색엔진 크롤러 요청으로 간주하며 작업 공간으로 활용하기 위한 준비를 진행한다.

 

 

 

[그림 9] 정규표현식을 이용한 User-Agent 데이터 확인 시도

 

 

조건에 만족된 통신 데이터에서 Accept-Encoding 헤더를 삭제하여 추가 데이터 삽입을 가능하게 한 이후 공격자가 원하는 코드 또는 URL를 삽입하여 크롤러에게 전달한다. 크롤러에 전달된 내용을 바탕으로 검색엔진에서 검색 후 페이지 접근 시 원래 페이지가 아닌 공격자가 원하는 페이지로 리다이렉트되어 공격에 활용되게 된다.

 

  

 

[그림 10] 공격자의 공격 코드 전달 시도

 

 

4) 악성코드 : Backdoor, SEO 악용, Injector 및 Proxy 모드

 

마지막으로 알아볼 Native IIS 악성코드는 Backdoor, SEO 악용, Injector 및 Proxy 모드를 가진 악성코드이다. Infostealer 모드가 빠진 대신 Injector 모드가 추가되어 정보 탈취보다 공격에 더욱 치중된 악성코드로 확인된다. 여기서는 새롭게 추가된 Injector 모드만 소개하려 한다.

  

분석대상 분류

내용

공격 시나리오

 • Scenario 1 : 설치된 Backdoor에 접근 시도

 • Scenario 3 : 정상 접근한 사용자에게 악성 콘텐츠를 전달 시도

 • Scenario 4 : Proxy를 이용한 C2와의 통신 시도

 • Scenario 5 : 검색엔진 봇에게 조작된 HTTP 응답 전달 시도

분석 대상 악성코드 정보

(MD5)

 • 33F999E9F31648B3115D314EC49B09A005EC992A

 • A2EF7DE7A217B6F9F0F886B5D4DE4C56D5A6A7BE

분석대상 악성코드

주요기능

 • Backdoor : 파일 업로드 가능

 • Proxy : 감염된 호스트의 HTTP 요청을 C2 서버로 릴레이

 • SEO 악용 : 검색 엔진 크롤러의 HTTP 요청에 대한 응답을 공격자가 원하는 콘텐츠로 교체

 • Injector : 특정 방문자의 HTTP 요청에 대한 응답을 공격자가 원하는 콘텐츠로 교체

 

[표 6] 분석된 악성코드 개요

 

 

새롭게 추가된 Injector 모드는 정상적으로 접근한 사용자의 요청에 대한 응답을 공격자가 원하는 데이터로 대체하는 작업을 진행한다. HTTP 헤더에서 User-Agent, Referer 및 Host의 데이터를 추출하는 작업을 진행하여 공격자가 원하는 데이터가 존재하는지 먼저 체크하게 된다.

 

 

 

[그림 11] URI 또는 Referer 헤더 기반의 HTTP 요청 처리 로직

 

 

Injector의 경우 Referer 헤더를 확인하며 특정 검색엔진을 이용하여 해당 페이지에 접근 하는 경우 악성 콘텐츠 제공, 광고 표시, 워터링 홀 공격(Watering Hole Attack)에 사용되는 데이터를 주입하여 응답값으로 전달하게 된다.

 

 

 

[그림 12] HTTP 요청 처리 로직에서 조건에 사용되는 문자열

 

 

03. 대응방안

 

1) IIS 서버 감염에 대한 대비

 

일반적으로 IIS 모듈 설치는 관리자 권한이 필요하며 공격자는 악성코드 설치를 위해 관리자 권한에 준하는 권한 획득 시도를 목표로 할 것이다. [표 5-7]은 해당 작업을 어렵게 하기 위한 점검 항목이다. 

 

구분

설명

보안업데이트

정기적인 OS 업데이트 및 보안패치 작업 진행
2021-08 보안 업데이트 (https://msrc.microsoft.com/update-guide/releaseNote/2021-Aug)

불필요서비스 관리

외부로 오픈되어 있는 불필요한 서비스에 대한 관리 필요

보안솔루션 적용

IIS 서버를 사용중인 경우 웹 어플리케에션 방화벽, 백신, EDR 등 보안 솔루션 사용

기본모듈 정상여부 판단

명시된 파일 및 폴더를 확인하여 설치된 모든 기본 모듈이 정상 여부 확인 필요
파일 : %windir%system32inetsrvconfigApplicationHost.config
폴더 : %windir%system32inetsrv, %windir%SysWOW64inetsrv

 

[표 7] IIS 악성코드 감염에 대비한 점검 항목

 

 

2) 감염된 IIS 서버를 발견한 경우

 

일반적인 IIS 모듈의 경우 ApplicationHost.config 파일 또는 IIS 관리자를 통해 확인이 가능하다. 만약, 해당 IIS 서버가 감염 되었다고 판단될 경우 최초로 IIS 로그 데이터 확인이 필요하다. 로그 데이터의 경로는 “%SystemDrive%inetpublogsLogFiles” 에서 확인 가능하다.

 

 

 

[그림 13] IIS 로그 데이터 기본 경로

 

 

악성 Native IIS 모듈이 확인된 경우 IIS Manager의 Module 메뉴에 진입하여 해당 모듈을 직접 제거한다. 

 

 

 

 

[그림 14] IIS Manager를 이용한 악성 Native IIS 모듈 삭제

 

 

IIS Manager 사용이 어려운 경우 관리자 권한을 가진 명령 프롬프트에서 [그림 15]과 같은 명령어를 이용하여 제거 가능하다.

 

 

 
 

[그림 15] 명령 프롬프트를 이용한 악성 Native IIS 모듈 삭제

 

 

04. 참고자료

 

[1] Anatomy of native IIS malware

https://www.welivesecurity.com/2021/08/06/anatomy-native-iis-malware/

https://i.blackhat.com/USA21/Wednesday-Handouts/us-21-Anatomy-Of-Native-Iis-Malware-wp.pdf

[2] ProxyLogon 

https://proxylogon.com/