Wins blog

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

악성코드 정보

앞 내용 보기 다음 내용 보기
악성코드 정보SLACK 과 GitHub를 통신 채널로 사용하는 SLUB 백도어
작성일 2019-04-24 조회 711

1. 슬럽 백도어(SLUB Backdoor) 개요

1.1 개요

2019년 2월 말에 트렌드 마이크로(Trend Micro)에서 슬렉(Slack) 및 깃허브(Github)를 이용하는 백도어를 발견하여 슬럽(SLUB)이라 명명했다. 이 백도어는 워터링 홀 공격(Watering hole attack)을 통해 전파된다. 또한, 깃허브의 기스트(Gist) 서비스와 슬렉 메시징 시스템을 C&C 서버와의 통신 채널로 사용하는 특징을 지닌다. SLUB Backdoor는 총 2단계로 진행되며 그 중, 본 보고서는 2단계에 해당하는 SLUB Backdoor.dll 파일에 대한 분석을 진행한다. 먼저, 워터링 홀 공격 기법이 사용된 웹사이트에 접속하면 원격 코드 실행 취약점([1]CVE-2018-8174)을 악용한 후, DLL 파일을 다운로드하여 파워쉘 명령을 실행한다. 다운 받은 DLL 파일은 특정 안티바이러스 프로그램(V3Tray.exe, AYAgent.aye, avgemc.exe 등)이 실행 중인 경우 종료된다. 만약, 안티바이러스 프로그램이 실행 중이 아니라면 SLUB Backdoor.dll 악성코드를 다운로드 및 실행하고 [2]CVE-2015-1701 취약점을 악용하여 로컬 권한을 상승시킨다.

 

 

2단계 SLUB Backdoor.dll이 실행되면 C&C 서버와의 통신 및 각 명령에 따른 행위를 수행한다. 먼저 run 레지스트리 키에 지정된 값을 등록하여 지속성을 확보한다. 다음으로 기스트 [3]스니펫을 다운로드한 후 [4]슬렉 채널과 통신하여 해당 명령어를 수행한다. 슬렉 채널과 메시지를 주고 받을 때는 https://slack.com/api/chat.postMessagehttps://slack.com/api/files.upload API를 사용하며, [5]Bearer 인증을 위한 토큰 2개가 하드 코딩 되어 사용된다. 악성 행위는 표 4에 명시된 10개의 명령어가 사용되고, 일부 명령어는 세부 기능이 추가됐다.

 

 

표 1은 SLUB Backdoor 파일 정보이다. Win32 DLL 파일이며, C&C 서버와 통신, 레지스트리 등록, 정보 수집 등의 악성 동작을 수행한다. 여러 안티바이러스 프로그램에서 트로이 목마로 진단한다.

 

 

표 1 SLUB Backdoor 파일 정보

 

 

1.2. SLUB Backdoor 통신 패킷 분석

SLUB Backdoor는 깃허브 서버(192.30.255.118)와 통신을 시도한다. 하지만 현재는 동작하지 않는다.

 

 

그림 1 SLUB Backdoor 패킷

 

 

2. SLUB Backdoor 주요 특징

2.1. 레지스트리 등록

SLUB Backdoor는 그림 2와 같이 자동실행 경로에 드랍 파일 Windows-RT-KB2937636.dll을 실행하도록 익스포트 함수와 함께 등록한다.

 

 

그림 2 Run 레지스트리 키 등록

 

그림 3은 Run 레지스트리 키에 등록을 위한 코드이다.

 

 

그림 3 Run 레지스트리 키 등록 코드

 

 

2.2. C&C 통신

C&C 서버로부터 수신하는 명령어에 따라 각기 다른 명령을 수행한다. 현재 해당 C&C 서버에 접속되지 않아 정확한 확인이 어렵다. 아래 그림 4는 기스트 서버와 연결하여 기스트 스니펫을 다운받는 코드이다.

연결한 URL은 “gist.github[.]com/kancc14522/626a3a68a2cc2a91c1ece1eed7610c8a”이다.

 

 

그림 4 C&C 서버 접속 코드

 

 

SLUB Backdoor는 Bearer 통신을 하며 표 2와 같이 두 개의 하드 코딩된 인증 토큰이 있다. Bearer 인증 토큰에서 xoxp- 로 시작하는 것은 앱을 설치한 사용자와 앱을 인증하는 사용자를 위해 발행되는 사용자 토큰을 의미한다.

 

 

표 2 Bearer 인증 토큰

 

 

SLUB Backdoor는 사용자 이름과 컴퓨터 이름을 얻고, 슬렉 메시지를 만들어 채널에 업로드 한다. 

 

 

그림 5 PC 및 USER 이름 획득 코드

 

 

그림 6은 슬렉 메시지를 보낼 때 지정해둔 키워드의 일부이다. ‘title’, ‘text’, ‘color’, ‘attachments’, ‘channel’이 키워드로 사용됐다.

슬렉 채널과 통신할 때 사용하는 API는 https://slack.com/api/chat.postMessage이다.

 

 

그림 6 슬랙 메시지 생성 키워드

 

 

SLUB Backdoor에서 사용된 chat.postMessage 함수는 token, channel, text 3개의 인자를 필수로 요구한다.

 

 

표 3 chat.postMessage 함수

 

 

2.3. SLUB Backdoor 명령어 요약

SLUB Backdoor는 크게 11개의 명령어를 사용하며, 일부 명령어는 세부 명령어가 있다. 자세한 내용은 표 4 및 아래 분석 결과를 참고하자.

 

 

표 4 SLUB Backdoor 명령어 요약

 

 

2.4. SLUB 백도어 명령어 - update 및 destroy

SLUB Backdoor는 Update와 Destroy 명령어를 받으면 배치 파일을 생성 및 실행한다. 그림 7의 왼쪽은 배치 파일의 내용이다.

 

 

그림 7 Update & destroy 명령어 – 배치 파일 실행

 

 

2.5. SLUB 백도어 명령어 - capture

SLUB Backdoor는 “Capture” 명령어를 받으면 실행 중인 화면을 캡처하고, 그림 8 하단에서 확인되는 CaptureFileSend 함수에서 데이터를 지정된 서버로 전송한다. 이 경우 사용하는 API는 https://slack.com/api/files.upload이다.

 

 

그림 8 Capture 명령어

 

 

SLUB Backdoor에서 사용된 files.upload 함수는 token인자를 필수로 요구한다.

 

 

표 5 files.upload 함수

 

 

2.6. SLUB 백도어 명령어 - proc

‘Proc’ 명령어를 받았을 경우 ‘list’, ‘kill’ 명령어를 추가로 받는다. 그림 9의 왼쪽은 proc-kill 명령을 받은 경우이고, 오른쪽은 proc-list를 받은 경우이다. Kill 명령어는 프로세스를 종료하고, list 명령어는 현재 실행중인 프로세스 목록을 수집한다.

 

 

그림 9 PROC 명령어 – 프로세스 목록 수집

 

 

2.7. SLUB 백도어 명령어 - drive

SLUB Backdoor는 ‘drive’ 명령어를 받으면 표 6에 작성된 10개의 드라이브 정보를 수집한다. 

 

 

표 6 드라이브 정보 수집 목록

 

 

그림 10은 드라이브 정보 수집을 위해 GetVolumeInformationW와 GetDiskFreeSpaceExW API를 사용한 코드이다.

 

 

그림 10 drive 명령어 – 드라이브 정보 수집

 

 

2.8. SLUB 백도어 명령어 – file

File 명령어는 5개의 세부 명령어(list, copy, delete, upload, setfiletime)가 있다. 이 중 upload 명령어를 받으면 File.io 스토리지에 파일을 업로드 한다. 그림 11은 업로드 정보를 세팅하며 http://file.io와 업로드 할 파일이 메모리에서 로드된다.

 

 

그림 11 file.io URL 설정 및 파일 로드


용어 설명

[1] CVE-2018-8174

VBScript엔진의 Use After Free 발생으로 인한 객체 재사용으로 발생하며, 원격 실행이 가능하다.

 

[2] CVE-2015-1701

Win7 환경에서만 동작하며 CreateWindowsEx API를 통해 시스템 권한을 획득한다.

 

[3] 코드 스니펫(Code Snippet)

스니펫(Snippet)이란 (작은)정보, 토막의 의미로 사용된다. 이를 확장하면 코드 스니펫이란 코드 조각을 의미한다. 코드 스니펫을 사용하면 반복적인 코딩을 할 때, 미리 등록해둔 스니펫을 사용하여 빠르게 작업할 수 있다. Code Snippet을 지원해주는 대표적인 응용 프로그램은 Github 사에서 지원하는 Gist가 있다.

cf) https://gist.github.com/discover

 

[4] 슬랙(Slack)

슬랙은 슬랙 테크놀로지스에서 개발한 협업용 커뮤니케이션 도구로 웹, 데스크톱, 모바일 앱 등 어느 디바이스에서도 접속이 가능하며, 전체 채팅방과 커뮤니티 내 1:1 대화, 프로젝트 별 멤버 대화 채팅방을 만들 수 있다. 또한, 파일 업로드 및 검색이 가능하여 원하는 팀원들에게 파일을 공유하고, 예전에 올렸던 파일을 검색하여 다시 보거나 다운 받을 수 있다.

 

[5] Bearer 인증 토큰

OAuth 2.0을 반영한 REST API는 허가된 요청을 만드는데 전달 토큰만 있으면 된다. 만약 Bearer 토큰을 소유하고 있으면 암호화 키 소유를 증명하지 않고 관련 리소스에 액세스 가능하다. 또한 cURL 통신을 이용하여 다양한 프로토콜로 데이터 및 Bearer 토큰을 전송할 수 있다.

 

 

 

Indicators of Compromise (IoCs)

43221eb160733ea694b4fdda70e7eab4a86d59c5f9749fd2f9b71783e5da6dd7 (Backdoor.Win32.SLUB.A)

 

URLs

https://gist.github[.]com/kancc14522/626a3a68a2cc2a91c1ece1eed7610c8a

 

source

https://blog.trendmicro.com/trendlabs-security-intelligence/new-slub-backdoor-uses-github-communicates-via-slack/

첨부파일 첨부파일이 없습니다.
태그 SLUB Backdoor  SLACK  gitHub  CVE-2018-8174  Code Snippet