Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
악성코드 정보Emotet 악성코드는 계속 진화한다 (Script 편)
작성일 2018-12-06 조회 1184

Translation into English

Translation into Japanese (日本語への翻訳)

Translation into Chinese (翻译成中文)

 

 

 

Emotet 악성코드는 뱅킹 트로이 목마로 유명한 악성코드입니다. 대부분 다운로더 및 드로퍼 역할을 주로 수행하며, 전파 기능 또한 탑재되어 있는 경우가 많아 하나의 단말이 감염되면 그 피해는 급격히 증가하게 됩니다. 악성코드 감염 시 자동 시작 및 레지스트리 키 변경을 통해 지속적으로 감염 단말로의 열할을 수행하게 되며 dll 인젝션 등과 같은 고급 기술로 무장하고 있는 악성코드입니다.

 

최신 기술을 탑재한 악성코드인 만큼 유포 방식도 세련되고 최신 기술의 집합체로 유포될 것이라는 예상과는 달리 대부분 발견된 Emotet 악성코드는 스팸메일을 통해 유포되고 있습니다. 우리는 흔히 이것을 'Malspam'이라고 부릅니다. 사회공학적 해킹기법은 적은 비용으로 무작위로 유포가 가능한 장점이 있으며, 기존 이메일 주소나 담당자의 DataBase를 가지고 있다면 해당 내용을 더 정교하게 꾸밀 수 있습니다.

 

최근 윈스에서는 1년 반의 시간동안 Emotet의 스팸메일 형태, 스크립트, C2, 악성코드 등을 모니터링하며 확인된 몇 가지 내용들을 공유하고자 합니다. Emotet의 스팸메일은 정교한 방식이 아닌 일반 사람들도 쉽게 클릭할 수 있는 영수증, 택배, 출석요구 등 일반적인 주제로 구성되어 있습니다. 

 

 

스팸메일의 형태는 크게 두 가지로 이루어져 있습니다. 

 

1. doc 첨부파일 → 내부 스크립트에 의한 악성코드 다운로드
2. 링크 → doc 파일 다운로드 → 내부 스크립트에 의한 악성코드 다운로드

 

 

물론 Emotet이 아닌 다른 Malspam의 경우에도 상기 두 가지의 프로세스를 따르는 경우가 많습니다. 왜냐하면 만들기도 쉽고 공격자 입장에서 마음대로 수정할 수 있기 때문이죠. 또한, 일반 문서파일의 경우에는 의심 없이 실행할 수 있기 때문에 문서 첨부파일을 통해 유포하는 경우가 많은 것입니다.

 

 

 

 

Emotet은 어떻게 유포가 될까?

 

1. doc 첨부파일 실행 → Emotet 다운로드 → 추가 악성코드 다운로드

 

 

 

 

가장 기본적이고 심플한 doc 파일을 통한 악성코드 유포입니다. 내용도 누구나 쉽게 열어볼 수 있는 주제를 선정하여 유포하기 때문에 아무런 의심 없이 실행하거나 자동 실행이나 열기를 통해 실행한다면 공격자 입장에서는 더할 나위 없겠죠.

 

[그림] doc 첨부파일로 유포되는 emotet

 

 

 

정확하게 말하면 doc 파일을 실행하자마자 악성코드를 다운로드 하는 것이 아닙니다. 악성 행위를 하기 위해서 내부 스크립트가 실행되어야 하는데, 이 스크립트가 실행되기 전 해당 콘텐츠 사용 여부를 사용자에게 묻습니다. 이 버튼을 클릭하면 비로소 악성코드 다운로드 및 실행의 프로세스가 동작을 합니다. doc 파일 내용 또한, 콘텐츠 사용 버튼을 눌러야 내용이 보인다는 안내문구까지 더해서 감염율을 높이고 있습니다.

 

[그림] 컨텐츠 사용 유도

 

 

 

항상 Malspam 관련 글을 작성하면 외국 포럼에서 우연하게 본 그림이 생각이 납니다. 아무리 보안 장비에서 악성행위를 막는다고 하더라도 사용자의 잘못으로 인해 악성코드는 언제든지 내부로 침투할 수 있다는 그림입니다. Malspam 관련 모든 내용 중 아래의 그림처럼 우리의 상황을 잘 나타나는 그림은 많이 없다고 생각합니다.

 

[그림] 보안솔루션 - 악성코드 - 사용자의 삼각관계

 

 

 

2. pdf 첨부파일 내 링크 클릭 → doc 파일 다운로드 및 실행 → Emotet 다운로드 → 추가 악성코드 다운로드

 

 

 

 

 

한 번의 트릭이 더 사용된 방식입니다. doc 첨부파일을 전송하는 것이 아닌 해당 파일을 다운로드 할 수 있는 링크를 포함한 pdf 파일을 전송해 자연스럽게 다운로드 할 수 있는 방식입니다.

 

 

[그림] pdf 첨부파일로 유포되는 emotet

 

 

 

 

3. 이메일 내 링크 클릭 → doc 파일 다운로드 및 실행 → Emotet 다운로드 → 추가 악성코드 다운로드

 

 

 

 

이메일 내부에는 첨부파일이 존재하지 않습니다. 이메일의 첨부파일을 검사하는 많은 보안 솔루션을 회피할 수 있기 때문에 링크에 들어가 직접 사용자가 악성 행위를 하는 doc 파일을 다운로드하고 실행하는 것입니다.

 

 

[그림] 메일 내 링크로 유포되는 emotet

 

 

스팸메일로 유포하는 방법이 어떤 방식이든 한 가지 확실한 것은 emotet의 유포는 취약점을 활용한 것이 아닌 많은 비율이 사회공학적 해킹 방식을 사용했다는 것입니다. 이 해킹 공격은 우리의 인식이 바뀌지 않는 이상은 언제나 우리 주위에 도사리고 있는 위협입니다. 또한, 이 공격방식은 무궁무진한 공격 컨텐츠를 생산하며 점차 더 고도화될 수 있다는 점을 생각한다면 우리 스스로가 주의를 해야할 것입니다. 언제나 신뢰하지 못하는 사용자의 이메일의 링크나 첨부파일을 조심해야 합니다.

 

 

 

 

 

doc 파일을 실행하면 어떤 행위가 일어나는가?

 

doc 내 악성행위를 하는 (정확히 말하면 악성코드를 다운로드 하는) 스크립트를 확인하기 전 doc 파일의 공통된 실행 구조를 확인할 수 있습니다. 약 1년 6개월 간 대부분의 Emotet doc 파일은 총 2가지 프로세스를 이용합니다.

 - cmd.exe

 - powershell.exe

 

[그림] emotet 스크립트 프로세스

 

 

cmd.exe를 통해 powersherll.exe를 실행하여 악성코드를 다운로드 하는 프로세스를 가지고 움직입니다. 물론 emotet만의 유니크한 프로세스는 아니나 doc 파일 실행 이후 cmd.exe 와 powershell.exe가 실행되는 행위는 정상행위라고 보기 어렵다고 판단합니다. 그럼 내부에서는 어떤 행위가 일어나고 있는 것일까요?

 

 

cmd.exe 을 실행하여 진행되는 행위는 간단합니다. powershell.exe 실행하고 필요한 명령어를 입력하는 형식입니다. 결국 powershell.exe 가 악성 C2에 접속하여 원하는 경로에 emotet을 설치하고 실행하는 역할을 합니다. 

 

이전의 Emotet 스크립트는 평문으로 되어 있는 경우도 많아 난독화에 대한 개념이 그리 많지는 않았습니다. 내부 스크립트 추출 Tool을 사용해 확인하면 아래의 명령어를 평문으로 확인할 수 있는 경우가 대부분이었습니다. 이 뜻은 보안 솔루션으로 탐지가 쉽고 차단률이 높아 악성행위를 할 수 있는 확률이 낮아진다는 의미입니다.

 

[그림] 기본적인 악성 스크립트 구성

 

 

2017년 이후부터는 많은 난독화 기술들이 추가가 됩니다. 몰론 처음부터 고급 기술이 사용된 것은 아닙니다. Base64 같은 기본적인 난독화도 존재합니다. 물론 한 문자열을 모두 하나의 변수에 담는 것이 아닌 분산 투자(?)를 통해 조금 더 복잡하게 코드를 구성합니다.

 

[그림] Base64를 사용한 난독화 (위: encode / 아래 : decode)

 

 

굳이 사람이 하나씩 변환할 필요 없이 기본적인 Tool에서 자동으로 C2가 확인되기 때문에 이 또한 탐지율도 매우 높은 방식입니다. 생각보다 감염이 적었는지 공격자들은 점차 복잡한 난독화 기법을 사용하게 됩니다.

 

[그림] 기본 Base64 C2 탐지

 

 

 

Emotet 이 좋아하는 스크립트 난독화 기법 Top 6

 

 

1. 문장 잘게 쪼개기

 

명령어나 C2 등 Base64 encoding의 진행은 멈춰있지만 평문의 일반 명령어를 아래의 방식으로 나누는 방식으로 명령어 사이에 임의의 3bytes 문자열을 추가하고 더하기(+), 작은따옴표 (') 등 을 사용하여 문장을 더 잘게 쪼개어 원본을 아예 알아볼 수 없는 형태가 됩니다. 스크립트가 실행되면 replace를 통해 임의의 3bytes 를 공백 또는 특수 문자열로 변환합니다.

 

[그림] 원본 잘게 나누기

 

 

 

2. 명령어, 다양한 변수에 분산 저장

 

powershell 실행 명령어 온전히 쓰지 않고 다양한 변수에 한 글자 내지 두 글자로 쪼개서 저장한 후 실행 시 해당 변수들을 합쳐 실행하는 방식입니다. 물론 다양한 악성 스크립트에 사용하고 있지만 특히 Emotet은 2018년도 초반까지 해당 방식을 자주 사용하였습니다. 사람이 하나씩 하는 것이 아닌 난독화 툴을 만들어 제작하는 것으로 판단됩니다.

 

[그림] powershell 명령어

 

 

 

3. 쓰레기 사이에 진주

 

2018년도 초부터 악성 스크립트의 트렌드는 사용하지 않은 변수나 명령어 사이에 실행되는 명령어를 숨겨놓는 방식으로 변경되어 갔습니다. 보안 솔루션을 가볍게 피할 수 있는 목적과 분석자들에게 조금 더 난해한 과제로 진화하게 되었습니다. 이러한 방식은 앞으로도 지속적으로 나타날 전망입니다.

 

[그림] 원하는 데이터는 단 2줄

 

 

 

 

4. Mid, CDbl, Array 등 함수 사용

 

Visual Basic에서 제공하는 기본 함수를 가지고 데이터를 원하는 방식으로 조절을 합니다. 필요한 명령어를 자유자재로 조절할 수 있고 그에 맞춰서 보안 솔루션을 우회하려는 노력들은 계속 확인이 되고 있습니다. Mid 뿐 아니라 형식 변환함수나 정렬 등을 이용한 다양한 방법들이 발견되고 있습니다.

 

[그림] Mid 함수

 

 

5. 독립된 평문화 함수 사용

 

한 줄의 코드에 평문화가 모두 이루어지는 것이 아닌 인자값으로 변환하여 평문화를 진행하는 독립적인 함수를 사용합니다. 이러한 경우에는 각각 평문화 코드를 사용할 필요 없이 한 번에 해결이 가능하며, 하나의 평문화 코드만 사용하기 때문에 좀 더 복잡하고 어렵게 작성이 될 수 있습니다.

 

[그림] 하나의 함수로 평문화 진행

 

 

 

6. 데이터 Reverse

 

모든 데이터를 합쳐 최종 Powershell 코드를 출력하기 전 아래의 그림처럼 역으로 표시되는 것을 알 수 있습니다. 최종 명령어가 역순으로 정렬된다면 보안 솔루션에서 악성 C2나 명령어에 대한 탐지 문자열을 충분히 우회할 수 있을 것입니다.

 

[그림] 역순으로 정렬된 명령어

 

 

 

 

국내/외 스크립트 난독화는 트렌드에 맞춰 다양한 방식으로 나타나고 있습니다. 또한, 코드에 대한 자유도가 높아 악성 스크립트를 하나 하나 대응하며 많은 보안 회사들이 악성코드 유포자와 치열한 공방을 진행하고 있습니다. 언제나 보안 솔루션에 대한 최신 상태를 유지하며, 신뢰하지 못하는 메일의 모든 내용에 대해 주의하는 습관을 기르셔야 합니다. 

 

이 모든 스크립트를 완벽하게 차단하는 방법은 언제나 우리 손에 달려있다는 점 기억해두시길 바랍니다.

 

다음 Emotet 악성코드 편에서는 악성 C2 통신과 악성코드 변화에 대해 살펴보도록 하겠습니다.

 

 

 

 

IoC Information

 

17.07.26  doc  6cad070bd1a37291b207895bbb51b975fa07b4ad2f05fb9a1ee15fb7441d600e
17.09.18  doc  e77ff24ea71560ffcb9b6e63e9920787d858865ba09f5d63a7e44cb86a569a6e
17.10.10  doc  5a8b91fac4cdd9220dae03dc4160d8d77fb509482d14370da38227b5de7ee639
17.11.29  doc  7bdf7722115be910e2b301b3f6b3037bc4b987c588838cd2459aeeeec9f50be7
17.12.27  doc  a73924f6b3bc139c6f2365bc45eb1fa7727d6bfcea45ed3f9b21f97995d3daae
18.01.09  doc  6e4a276dd2d745f57faa6e18ba90e255836ef4976c65cdfd831412b8ae4ab91c
18.02.12  doc  b859eab6113acddebd201be486120caf32d3074225c0472dfe7ae633151eac27
18.03.01  doc  1fa89fc30aeb12427c5486137ffb18dca89806755379da8e5bdf010e0e6b1264
18.03.26  doc  9c657da632b79f66ee4d6a491597c858f510a41adc2bea2ea407b18a1060a209
18.05.04  doc  b26fa7e3f85d5bd8ccca12d893dea59e60bca6bbdf035a2cc516c5da51d00d9a
18.07.19  doc  7bad900ea5cb2044726bd474d9b7f642c279425144e73b99463279fc83a95981
18.08.13  doc  4cb1ea3d42cdc523b0a07e0614f80c78ff6460f9062c580c7438514a2c005d77
18.09.21  doc  d40f5ae2f85b62351f2e8b0f068a8c3695d228b0f06b8015a513eb919b70f5bb
18.11.06  doc  fc048b04dc8a13fba792e2caa5b50f5fe95c5d78855c74cbc5c93fdf0d398853
18.11.16  doc  7ccfb6433cc7b3173250028d08719efd1cbe5e556cc284f73a4f88c7aae4b008

 

 

 

 

 

Source

http://malware-traffic-analysis.net/

https://twitter.com/bry_campbell/status/903332131442761728
 

 

첨부파일 첨부파일이 없습니다.
태그 Emotet  Script  Trojan