본문 바로가기

Analysis

11. Lazarus's Movie Coin

2019년 08월 13일 라자루스 그룹이 제작한 것으로 추정되는 국세청 문서로 위장한 악성코드가 발견되었다. 본 글에서는 해당 악성코드를 상세분석한다.

Malware Lazarus's Movie Coin
Environment OS Windows 7
Action Stealer

 

먼저 국세청 문서로 위장한 악성코드는 "별지 제 172호 서식"이라는 타이틀을 가지며 "User"라는 사용자 명으로 최종 저장한 것으로 나타난다. 해당 악성코드는 이전 한글 파일을 이용해 악성코드를 유포하던 방식과 같이 EPS(Encapsulated Post Script)를 이용해 악성코드를 유포하며, 실제 악성코드 안에 PS 파일이 존재한다. PS 파일에는 드로퍼 역할을 수행하는 코드가 인코딩 되어 있으며 특정 값을 이용해 xor 디코딩을 진행하면 실제 코드가 복호화된다.

아래 그림은 실제 악성코드의 속성과 PS 파일의 내용이다.

 

악성코드가 유포되는 한글 파일의 속성

PS 파일의 내용

 

PS 파일 안 인코딩 된 값

 

xor 디코딩을 수행할 때 사용하는 특정 헥스 값

 

xor 디코딩을 수행할 때 사용되는 특정 헥스 값은 아래와 같다.

xor 디코딩에 사용되는 헥스 값 : < 0x39 0xC3 0xB2 0x70 0x05 0x85 0x3E 0x98 0x66 0x1C 0x8B 0xBC 0x1B 0xDD 0xEA 0xF8 >

 

본 작성자는 디코딩을 아래와 같은 간단한 코드를 이용해 수행했다.

 

xor 디코딩 수행 코드

 

이후 1차 디코딩을 완료하게 되면 2차 PS 스크립트가 등장하게 된다. 2차 PS 스크립트의 내용은 실제 무언가 수행하는 것처럼 보이게 되지만 결론적으로 중요한 부분은 쉘 코드(Shellcode) 로드 부분이다. 2차 PS 스크립트는 쉘 코드(Shellcode)를 로드하고 현재 작동되고 있는 PC의 비트가 32비트인지 64비트인지를 판별해 해당 쉘 코드(Shellcode)에서 실제 공격자의 서버에 연결해 현재 작동되고 있는 PC의 비트에 맞게 악성행위를 수행하는 DLL 파일을 다운로드 받아 실행시키게 된다.

아래 그림은 2차 PS 스크립트의 내용과 스크립트 안 쉘 코드(Shellcode)부분, 쉘 코드(Shellcode) 안의 실제 공격자 서버가 나타난 부분이다.

 

2차 PS 스크립트 내용
2차 PS 스크립트 안 쉘 코드(Shellcode)

 

쉘 코드(Shellcode)안 나타난 두개의 파일

 

쉘 코드(Shellcode) 안 나타난 32비트용 파일

 

쉘 코드(Shellcode)안 나타난 64비트용 파일

이후 악성코드를 다운로드 받아오게된다.(현재 공격자 서버가 닫힌 상태여서 악성코드 샘플을 구하는 것은 알아서 구해야했다..) 받아온 악성코드 또한 xor 로직으로 인코딩 된 상태로 보여지는데, 실제 exe 파일이나 dll 파일은 시그니처 네임이 "MZ"로 시작한다는 것을 생각해 악성코드 파일의 첫번째 바이트를 "M"을 뜻하는 헥스값인 "4d"와 xor 해주게 되면 해당 인코딩 된 파일을 디코딩할 때 사용하는 특정 값이 무엇인지를 알아낼 수 있다.

아래는 다운로드 받아온 악성코드의 내용과 악성코드 파일의 첫 바이트와 "M"을 뜻하는 헥스값인 "4d"를 xor 해준 값이다.

 

다운로드 된 악성코드

 

악성코드 파일의 첫 바이트 값과 "4d"를 xor 한 값

 

다운로드 된 악성코드 파일에서 xor 디코딩에 쓰이는 헥스 값은 아래와 같다.

xor 디코딩에 쓰이는 헥스 값 : 0xAA

 

본 작성자는 해당 디코딩 또한 아래와 같이 간단한 코드를 구성해 풀어냈다.

디코딩 코드

 

이후 실제 악성행위를 분석해본다.

 

실제 악성행위는 대략적으로 아래와 같은 루틴으로 이루어진다.

중복실행 방지를 위한 뮤텍스 생성 -> C&C 서버 연결을 위한 네트워크 연결 초기화 -> C&C 서버와 연결 후 명령 대기 -> 감염 PC의 원격 데스크톱 정보 등을 탈취

 

일어나는 루틴을 하나하나 상세히 보게되면 먼저 중복실행 방지를 위한 뮤텍스를 생성한다. 뮤텍스의 이름은 "wobj" 명으로 생성된다.

아래 그림은 뮤텍스 명이 생성되는 부분이다.

(아이다의 obj로 표시된 부분은 오타이다..^^)

 

뮤텍스 명 생성

 

뮤텍스 명 생성

 

이후 WSAStartup() 함수를 이용해 C&C 서버와 네트워크 연결을 준비하게 된다.

아래 그림은 네트워크 연결 준비 부분이다.

 

네트워크 연결 준비
네트워크 연결 준비

 

이후 실제 3개의 C&C 서버로 연결을 시도하게 된다. 3개의 C&C 서버 URL은 아래와 같다.

- https://stokeinvestor[.]com/common[.]php 

- https://growthincone[.]com/board[.]php

- https://inverstingpurpose[.]com/head[.]php


아래 그림은 C&C 서버에 연결을 시도하는 부분이다.

 

C&C  서버 연결 시도

 

C&C 서버 연결 시도

 

현재는 C&C 서버가 닫혀있어 실제 연결까지 수행되지는 않지만, 해당 악성코드는 C&C 서버에 연결을 수행할 때 헤더값을 설정하는 등의 치밀함을 보였으며 실제 연결이 수행되면 C&C 서버로부터 추가적인 악성코드 배포나 추가적인 명령을 계속해서 기다리게 된다.

아래 그림은 C&C 서버에 연결을 수행할 때 헤더값을 설정하는 부분이다.

 

헤더값 설정

 

헤더값 설정

 

리퀘스트 전송

 

헤더값 설정
헤더값 설정

 

헤더값 설정

 

리퀘스트 전송

 

리퀘스트 전송

 

 

이후 C&C 서버와 정상적인 연결이 이루어지게 되면 감염 PC의 여러 정보도 탈취하는 행위를 수행한다. 논리드라이브 정보나 원격 데스크톱 설정 정보, 현재 감염 PC의 시간대가 어느 시간대인지도 탈취하게 된다. 시간대까지 탈취하는 행위를 봐서는 특정 국가를 목표로 유포되는 악성코드일 가능성이 높다.

아래 그림은 악성코드 내 정보를 탈취하는 부분이다.

 

논리드라이브 정보 탈취

 

원격 데스크톱 정보 탈취

 

감염 PC 시간대 탈취

 

논리드라이브 정보 탈취

 

원격 데스크톱 정보 탈취

 

감염 PC 시간대 탈취

 

결론적으로, 해당 악성코드의 경우 특정 국가 혹은 특정 대상을 목표해서 유포된 것으로 추정되며 행위는 백도어와 같이 C&C 서버에 연결해 이후 추가적인 악성코드의 유포나 추가적인 명령을 기다리며 악성행위를 수행하는 것으로 보인다.

 

- Reference

라자루스(Lazarus), 소명자료요구서로 위장한 '무비 코인' 캠페인 지속, https://blog.alyac.co.kr/2476

반응형

'Analysis' 카테고리의 다른 글

13. 분석 특징 정리  (0) 2019.08.26
12. 악성코드 샘플 수집 관련 사이트(무료)  (0) 2019.08.26
10. APT 관련 사이트  (0) 2019.08.05
09. Fast-Flux  (0) 2019.06.03
08. Clop  (0) 2019.06.03