보안정보

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

Cuckoo Sandbox 플러그인 (MalConfScan) 사용을 통한 분석 고도화

2022.04.06

79,066


 

 

 

 

01. Sandbox란?

 

샌드박스(Sandbox)의 원래 뜻은 모래상자로 간이 놀이터로 이해하면 쉽다. 보안에서는 컴퓨터에서 프로그램을 실행할 때 격리된 공간을 제공하여 그 공간에서 벗어나 허용되지 않은 작업을 하지 못하도록 방지하는 기술로 사용된다. Fireeye를 비롯한 여러 보안업체에서는 의심되는 파일에 대해서 격리된 환경인 Sandbox에서 실행 후 결과를 기반으로 실행 또는 차단을 결정하는 방식을 활용 하거나 전용 장비를 제작하는 등 분석 자동화에 사용되고 있다.

 

오픈소스 Sandbox로는 Cuckoo Sandbox가 유명하며 분석 자동화를 진행하기 위해 Cuckoo Sandbox 서버 구축 도중 MalConfScan 플러그인의 존재를 알게 되었다. njRAT, FormBook, Lokibot등 악성코드 내부의 설정 데이터, C2 등의 데이터를 쉽게 추출 가능하다는 장점이 있어 기존에 사용중인 도구 및 외부 Sandbox 서비스와 어떤 차이점이 존재하는지 알아보려 한다.

 

 

 

[그림 1] 정상 프로그램과 악성코드 동작 시나리오 (출처:https://stringfixer.com)

 

 

02. Cuckoo Sandbox

 

Cuckoo Sandbox는 Sandbox 기반으로 동작하며 의심스러운 파일의 분석을 자동화하기 위한 오픈소스 소프트웨어다. 의심되거나 확인이 필요한 파일을 물리 PC와 격리된 Sandbox 환경으로 이동 후 실행하여 실행 당시 상황을 모니터링, 기록하여 보안 담당자, 악성코드 분석가 및 보안 관련 종사자들이 결과값을 이용하여 상세 분석여부를 판단하는데 사용 가능하며 다양한 플러그인이 제공되고 있어 많은 사람들이 이용하고 있다.

 

 

버전

내용

2.0.7

(최신)

Python 3 지원

VirtualBox 취약점 경고 로직 추가

Reporting 서버 개선

2.0.6

RDP / VNC 지원

64비트 윈도우 지원 개선

Unicode 파일명 지원

jse, url, iqy, slk 파일 지원

2.0.4

YARA 통합

Metasploit IoC 추출

Shellcode Disassembly Framework 추가

Linux 파일 분석 개선

2.0.2

Volatility 통합

 

[표 1] Cuckoo Sandbox 버전 히스토리

 

 

 

 

[그림 2] Cuckoo Sandbox 동작 개요 (soji256 Medium Blog)

 

 

1) MalConfScan

 

2019년 4월 22일 JPCERT/CC는 악성 프로그램의 구성 데이터를 추출할 수 있는 MalConfScan를 GitHub에 최초로 업로드했다. MalConfScan는 Volatility에서 확보한 메모리 덤프를 이용하여 악성 행위를 검색하고 구성 데이터 및 DGA 도메인 덤프, 악성코드가 참조하는 문자열을 나열하는 기능을 가지고 있다. JPCERT/CC는 MalConfScan를 Cuckoo Sandbox에 연동하여 사용 가능한 플러그인으로 제작하여 GitHub에 추가로 배포하고 있다. 현재 MalConfScan에서 지원하는 악성코드 목록은 표 [5-2]과 같다.

 

 

목록

Ursnif

Emotet

Smoke Loader

PoisonIvy

CobaltStrike

NetWire

PlugX

RedLeaves

(Himawari  Lavender Armadill  zark20rk)

TSC_Loader

xxmm

Datper

Ramnit

HawkEye

Lokibot

Bebloh (Shiotob

URLZone)

AZORult

NanoCore RAT

AgentTesla

FormBook

NodeRAT

Pony

njRAT

 

 

 

 

[표 2] MalConfScan 플러그인을 이용하여 탐지 가능한 악성코드 목록

 

  

[그림 3] Volatility 플러그인으로 사용되는 MalConfScan 화면

 

 

일반적으로 실행 파일 문자열 검색을 위해 String, PEStudio 등 프로그램을 이용하여 문자열 추출을 시도한다. 일반적으로 문자열 추출을 통해 IP, URL 및 기타 유용한 문자열을 획득하는 경우는 생각보다 드물며 유용한 데이터는 로직에 의해 메모리로 불러와 실행하는 경우가 다수 존재한다. 또한, 메모리 데이터 확보를 위해 가상환경에서 실행 시 Anti-VM 기능 및 분석 방해요소 제거를 위한 많은 시간 투자가 필요하다는 단점이 있다.

 

기본적으로 Cuckoo Sandbox 설치 시 Anti-VM을 우회하기 위한 작업을 진행하여 최대한 일반 PC와 비슷한 환경을 만들어낸다. 우회가 성공하여 정상적으로 실행될 경우 Sandbox에서 동작한 모든 행위를 기록하며 MalConfScan 플러그인이 메모리 덤프 데이터에서 분석가에게 필요한 정보를 확보하는 것이 가능해지는 것이다.

 

[표 3]의 샘플을 이용하여 MalConfScan 플러그인이 설치된 Cuckoo Sandbox 동작 결과와 일반적인 문자열 검색을 이용한 정보량 차이를 보여주려 한다.

 

 

목록

내용

파일명

Sandvik_Group_Meeting_Document_20170222_doc_.exe

MD5

b3139b26a2dabb9b6e728884d8fa8b33

 

[표 3] 테스트에 사용된 샘플 정보

 

 

문자열 추출의 경우 String, PEStudio 등 프로그램을 이용하여 파일에 하드코딩 되어있는 C2 정보 및 유용한 데이터 수집에 사용된다. 프로그램의 기능에 따라 PE 정보 및 가독성을 위해 ASCII, URL 등 맞춤으로 정보를 제공하고 있으나 악성코드 내부 로직을 통한 C2 주소 조합하여 사용하거나 파일이 난독화 되어있는 경우 정보 확보가 불가능하다는 단점이 존재한다.

 

 

[그림 4] 테스트 샘플 문자열 추출 결과

 

 

MalConfScan의 경우 Cuckoo Sandbox 결과창의 VM Memory Dump 페이지에 존재하며 메모리 내 분석에 유용한 데이터는 Cuckoo Sandbox에서 추출하며 MalConfScan의 경우 지원하는 악성코드에 대한 C2 데이터, Mutex 등 상세 데이터 추출에 용이하다는 장점이 있다.

 

 

[그림 5] MalConfScan 플러그인을 이용한 데이터 추출 결과

 

 

2) 샘플을 이용한 Cuckoo Sandbox 분석 결과

 

Cuckoo Sandbox를 이용하여 분석한 데이터로 확인 시 실행 파일로 확인되며 악성코드의 위험도의 점수는 현재 설정오류로 인해 정확한 점수 표현이 되지 않으나 해당 파일은 very suspicious로 확인된다.

 

 [그림 6] 테스트 샘플 Cuckoo Sandbox 분석 결과 요약

 

 

Behavioral Analysis 페이지에서 확인 결과 임시 폴더에서 obedience.exe가 실행된 이후 iexplore.exe 프로세스가 실행된 것으로 확인된다.

 

  

[그림 7] Behavioral Analysis 페이지

 

 

Dropped Files 페이지에서 확인 결과 obedience.exe 외 2개의 파일이 추가적으로 Drop되며 starburn.dll이 hankerchief.dat 데이터를 디코딩한 이후 iexplore.exe를 이용하여 실행하는 것으로 확인된다. 

 

 

 

[그림 8] Dropped Files 페이지

 

 

네트워크 통신 페이지 확인 결과 67.205.132.17:443으로 다수의 통신 시도가 확인된다. 

 

 

[그림 9] Network Analysis 페이지

 

 

다시 MalConfScan 페이지로 돌아와 확인 시 행위, Drop된 파일, 네트워크 데이터가 종합된 내용으로 보이나 실제로는 프로세스 명과 C2 정보, Mutex 등의 정보만 확인 가능하다는 단점도 존재한다. 그러나 MalConfScan를 이용하여 분석이 가능한 악성코드의 경우 악성 코드명이 Malware Name에서 확인된다.

 

샘플로 사용된 파일의 경우 RedLeaves RAT이며 감염된 PC에 원격 접속이 가능해지며 시스템/사용자 계정 정보 탈취 및 원격코드 실행 등 악성 행위가 가능해진다.

 

여기서 확보 가능한 C2 정보를 이용하여 최단 시간 내 1차 대응을 진행한 이후 행위, Drop된 파일에서 확인된 데이터들과 조합하여 초기 침해사고 분석에 사용되기에 충분할 것으로 보인다.

 

 

[그림 10] VM Memory Dump 페이지 내 MalConfScan 섹션

 

 

03. 외부 공개 Sandbox와 분석 데이터 비교

 

Cuckoo Sandbox를 제외한 외부 공개 Sandbox 서비스는 기본적으로 업로드된 샘플 및 샘플의 분석 결과를 공유하고 있어 침해사고 관련 샘플이나 외부에 공유되면 안 되는 파일의 업로드는 금해야 한다.

 

 

1) any.run

 

any.run은 회원가입 시 무료로 제공되는 Sandbox 서비스로 샘플 업로드 시 사용자가 Sandbox 화면에 개입이 가능하다는 장점이 있다. [그림 0] 하단부는 통신 관련 데이터, 파일 변경, 디버그 정보를 확인 가능하며 통신 관련 데이터에서 HTTP, TCP 통신 내역 확인, DNS 질의, 탐지된 Snort 룰 내용을 확인 가능하며 실행 간 발생한 통신을 PCAP 파일로 다운로드할 수 있다.

 

왼쪽의 경우 샘플 파일 정보 및 샘플 다운로드, 샘플 재분석 기능이 존재하며 Processes 항목에서 해당 샘플 파일 실행 시 파일 행위에 대한 데이터를 확인할 수 있다. 간단한 데이터는 하단부에서 확인 가능하며 more info 클릭 시 상세 정보를 확인할 수 있다.

 

추가로 해당 샘플 파일 실행 시 확인되는 IOC 정보 요약 및 ATT&CK matrix 또한 확인할 수 있다.

 

 

[그림 11] any.run에서 샘플 파일 분석 결과 

 

 

2) Joesandbox

 

Joesandbox은 회원가입 시 무료로 제공되는 Sandbox 서비스로 샘플 업로드 시 운영체제를 선택하는 것이 가능하다. 특이한 점으로 Android, iOS에서 사용되는 앱 설치파일의 Sandbox 분석을 지원한다. 

 

Full, Management, IOC Report를 각각 제공하는 것이 특징이며 Full Report는 기본정보, 탐지 시그니처, 파일의 분류, 프로세스 트리, ATT&CK Matrix, 행위 그래프 등 다양한 데이터를 매우 상세하게 제공하고 있다. 또한, Drop된 파일의 악성 탐지 여부 및 파일에 대한 Disassembly까지 제공하고 있어 Sandbox 서비스 중에서 상당히 많은 데이터를 제공하고 있다.

 

샘플 제공 및 메모리 덤프 등 관련파일과 PCAP 등 파일 제공하고 있으나 분석 도중 사용자의 개입과 샘플 분석 시간 지정이 불가능하다는 단점이 존재한다.

 

 

[그림 12] Joesandbox 에서 샘플 파일 분석 결과 

 

 

3) Triage

 

Triage 또한 회원가입 시 무료로 제공되는 Sandbox 서비스로 샘플 업로드 시 기본적으로 Windows 7, 10 버전의 Sandbox 동작하게 되며 사용자가 운영체제, 언어, 인터넷 접속방식, 시간, 브라우저를 선택하여 동작이 가능하다. 또한 해당 설정을 프로필로 저장이 가능하다. 분석 시간 동안 사용자의 개입이 가능하다는 장점 또한 존재한다.

 

리포트 확인 시 탐지 관련 시그니쳐, 프로세스 동작 순서, 네트워크 통신, ATT&CK Matrix 데이터를 확인 가능하며 샘플 및 관련 파일, 메모리 덤프, PCAP 다운로드가 가능하다.

 

추가 메뉴에서 시간 순서에 따른 파일 및 레지스트리 생성, 네트워크 통신, 프로세스 정보, Mutex 정보를 확인할 수 있다.

 

 

 

[그림 13] Triage에서 샘플 파일 분석 결과 

 

 

 

[그림 14] Triage에서 제공하는 파일 다운로드 목록

 

 

04. 정리

 

지금까지 Cuckoo Sandbox와 MalConfScan 플러그인을 이용하여 분석한 예시와 함께 MalConfScan 플러그인의 장단점에 대해 알아보았다. 추가로 같은 샘플을 외부 공개 Sandbox 서비스에 분석 요청하여 분석 결과 및 제공되는 데이터에 대해서도 알아보았다.

 

Cuckoo Sandbox의 경우 2019년 2.0.7 이후 추가적인 업데이트는 없으나 다양한 플러그인 조합, 이용자들의 플러그인 제작 및 배포를 통한 다양한 확장이 가능할 것으로 보이며 외부 공개 Sandbox 서비스의 경우 Cuckoo Sandbox보다 더욱더 많은 정보 확보가 가능하다.

 

Cuckoo Sandbox 및 외부 공개 Sandbox 서비스에 제공하는 것 중에서 특이 사항만 [표 4]에서 정리하였으며 사용자에게 맞는 Sandbox 서비스를 이용하거나 Cuckoo Sandbox에 마음에 들었다면 한번 구축해 보는 것도 추천한다.

 

 

순번

내용

Cuckoo Sandbox

Any.run

Joesandbox

Triage

1

분석 환경에 사용가능한 OS

설치된 VMOS에 따라

무료 사용자는 Windows 7 x32 고정

무료 사용자 기준
Windows 7, 10 x64
macOS High Sierra
Ubuntu 16.04, 20.04 x64
Android 9

무료 사용자 기준
Windows 7, 10, 11 x64
macOS 10.15
Android 9 x86, 10, 11 x64
arm9, mips9, mipsel9
Ubuntu 18.04 x64

2

분석에 이용 가능한 최대 시간

300초까지

선택 가능

최초 60, 300초까지 추가 가능

120초 고정

1,800초까지 선택 가능

3

동시 분석

X

X

X

최대 OS 2

4

분석 도중 사용자 개입

O
(
플러그인 설치 시)

O

X

O

5

데이터 다운로드
(
샘플 등)

O

O

O

O

6

ATT&CK Matrix

X

O

O

O

7

Snort Rule

O

O

O

X

8

YARA Rule

O
(
플러그인 설치 시)

X

O

X

9

Disassembly

X

X

O

X

 

[표 4] Sandbox 서비스 간 기능 비교

 

 

05. 참고자료

 

1)https://soji256.medium.com/build-a-malconfscan-with-cuckoo-environment-to-analyze-emotet-ff0c4c589afe 

2) https://github.com/JPCERTCC/MalConfScan-with-Cuckoo

3) https://blogs.jpcert.or.jp/en/2017/04/redleaves---malware-based-on-open-source-rat.html

4) https://app.any.run/tasks/dda2799b-b559-4303-99c4-0aeca3212b53

5) https://www.joesandbox.com/analysis/953946

6) https://tria.ge/220310-g4dccsecc7/behavioral1