Malware

금융 정보 탈취 악성코드 이모텟(Emotet)

wsoh9812 2021. 1. 7. 18:28

 

 

Emotet 악성코드의 행위를 간단하게 설명 드리면

사용자PC를 감염시키고, C&C서버와 통신을 하면서 시스템 정보와 금융정보를 탈취하는 행위를 합니다.

 

주로 이메일을 통해 유포가 되고 악의적인 스크립트를 삽입한 문서를 열게끔 만들어 PC감염을 시킵니다.

 

참조 : asec.ahnlab.com/ko/1358/

 

5개월만에 돌아온 Emotet 악성코드!! 국내 유포 중 - ASEC BLOG

AhnLab Security Emergency response Center

asec.ahnlab.com

Malware 샘플은 아래의 링크에서 구하였습니다.!

www.malware-traffic-analysis.net/2020/12/28/index.html

 

Malware-Traffic-Analysis.net - 2020-12-28 (Monday) - Quick post: Emotet activity resumes after Christmas break

2020-12-28 (MONDAY) - QUICK POST: EMOTET ACTIVITY RESUMES AFTER CHRISTMAS BREAK ASSOCIATED FILES   398 kB   (397,650 bytes)   5.0 MB   (4,953,813 bytes)   38.9 MB   (38,856,096 bytes)   652 KB   (651,500 bytes)   1.1 MB   (1,061,200 bytes) NOTES:

www.malware-traffic-analysis.net

 

 


분석 진행


 

MD5 : 9a38d3731449df93b1e71e491cca466b

 

EML Parse

 

eml을 다운받아 파싱해보면 첨부파일을 확인 할 수 있습니다. 

첨부파일

 

삽입된 매크로 
추출된 문자열

문서의 매크로 동작을 분석하기 위해 디버깅 해본 결과 아무 동작도 하지 않았고, '추출된 문자열'의 &뒤에 문자열을

보면 다른 추가적인 동작을 하는 것임에 틀림 없다.! 

powershell을 숨겨서 base64 decode한 결과를 실행시키는데,,,, 아마 vm환경 때문에 제대로 동작을 하지 않는 것 같다.

 

 

그래서 샌드박스의 힘들 빌렸다.

( 해당 악성코드는 SHGetFolderPath api를 사용하는데,

이 api는 vista 이후로 사용이 중단 되었다. 그래서 win7에서 동작이 된다고 추측할 수 있다.)

'base64로 인코딩된 문자열을 디코딩해서 powershell로 실행을 시킨다.'는 명령이다.

그럼 이 인코딩된 문자열을 디코딩 해보면.....

 

 

디코딩된 문자열

위의 사진의 코드를 powershell로 실행을 시키겟다는 것이다.

 

[중요] 특정 주소에서 파일들을 순차적으로 다운 받아 로컬에 779.exe로 Drop한다.

 

그럼

우리는 로컬에 drop되는 파일을 분석해보자.

 

 

779.exe


 해당 컴퓨터의 국가 정보 수집

 

 

[중요] 'MISTIRIOS'라는 이름을 가진 리소스를 불러 옵니다.

 

리소스 복호화

[중요] 리소스 데이터 전제를 복호화 하는 것이 아닌  오프셋을 구해서 그 부분터 복호화를 진행 합니다.

 

복호화된 함수

복호화된 함수암호화 하는 함수인 것을 알 수 있습니다. 

 

이제 이 복호화 된 함수를 call 합니다.

 

Encrypt전 data
enc 전 후 비교

이 함수 내에서도 특정 데이터를 암호화를 합니다. 이 암호화 된 데이터도 이후에 call 합니다.

 

 

위의 내용을 요약하자면 아래의 형태입니다.

리소스를 가지고 온다. -> 리소스 복호화 -> 복호화된 함수 call -> 내부적으로 다른 data 암호화 -> res()

 

 

89번째 줄 res()함수로 들어가보자

 

res() function


[*] res() 함수를 분석해보면 2가지의 행위를 가지는 것을 알 수 있다.

[중요]

현재프로세스의 파라미터를 GetCommandLine으로 구하여

그 값이 --166ca176이면 빨간색박스 

그렇지 않으면 파란색 박스로 들어간다.

 

 

ProcMon.exeGetNativeSystemInfo

파란색박스로 들어가게 되면 위 사진처럼 자식프로세스를 생성하고, 파라미터로 '--166ca176'을 주어 실행하게 된다.

 

결국에는 if문안에 있는 빨간색박스 함수로 들어온다.~!

 

sub_70A9CA의 일부분

[*] dword_7106ac가 '0, 1, 2, 3' 순으로 크게 4가지 동작으로 볼 수 있다.

(참고로 분석해보면 0,1,2,3 순차적으로 실행되는 것을 알 수 있습니다.)

 

 

dword_7106ac가 0,1,2,3, 일때 동작을 살펴보자.

 

0일때

0일때의 행위

[중요]

6~14반쩨줄 까지는 분석한 결과를 주석으로 처리하였다.

15줄에서 현재 실행되고 있는 파일이 드랍된 파일이 아니면 if문안으로 들어가서, 파일을 드랍하고 이를 실행합니다.

드랍되는 파일은 자가복제입니다.

 

1일때

통신하기 위해 필요로하는 dll들을 로드합니다.

 

2일때

[중요]C2서버로 프로세스정보와 컴퓨터정보를 보냅니다.

 

프로세스 정보 탈취
탈취한 데이터 암호화
CryptEncrypt API을 사용한 암호화
암호화된 데이터
생성된 키

[참고] 암호화된 데이터의 '='이전의 데이터들은 복화화할때 필요한 key입니다.

 

프로세스 리스트와 컴퓨터정보를 탈취해 이를 암호화 한다음 또다시 CryptEncrpyt API를 이용해 암호화를 합니다.

 

이렇게 암호화된 데이터를 

 

C2서버 주소

[*] 76.104.80.47/n9I87Dy8m1Cp로 데이터를 전송합니다.

 

 

데이터 전송을 실패하면 프로세스가 종료됩니다.

하지만 

 

[중요] 성공을한다면 서버로 부터 암호화된 데이터를 읽어들이고, Window시작시 자동실행되게끔 레지스트리에 악성코드를 등록합니다.

 

레지스트리에 자동실행 등록
autoruns.exe

 

C&C서버 부터 받은 파일
C:\ProgramData\

[*] 파일 다운로드 기능

(서버로 부터 데이터를 읽어서 파일 DROP)

 

서버로 부터 받은 명령에 따라 위 사진의 경로에 파일을 드랍시키고 실행을 합니다.

 

 

결 론


문서를 열고, 첫번째로 실행되는 악성코드가 탈취하는 정보는 그렇게 많지 않습니다.

하지만 파일다운로드기능이 있기때문에 차후에 어떤 행위든 가능하다.

 

p.s. 손에 꼽을정도로 까다로웠던 악성코드였다..