뉴스:
멘로 시큐리티, 구글과 전략적 파트너십 발표
__wf_예약_상속

Qakbot 캠페인에서 사용되는 HEAT 공격의 구조

Abhay Yadav
|
August 28, 2022
__wf_예약_상속
__wf_예약_상속__wf_예약_상속__wf_예약_상속__wf_예약_상속
__wf_예약_데코레이션

소개

QBot 또는 Pinkslipbot으로도 알려진 Qakbot은 10년 넘게 존재해 온 뱅킹 트로이 목마입니다.2007년에 야생에서 발견되었으며 그 이후로 지속적으로 유지 및 개발되고 있습니다.

Qakbot은 전 세계 최고의 뱅킹 트로이 목마 중 하나가 되었습니다.주요 목적은 은행 자격 증명 (예: 로그인, 암호 등) 을 훔치는 것이지만 금융 운영을 감시하고, 자신을 유포하고, 랜섬웨어를 설치하여 손상된 조직의 수익을 극대화할 수 있는 기능도 확보했습니다.

Qakbot의 배송 수단은 일반적으로 피해자에게 보내는 이메일입니다.이메일 첨부 파일일 수도 있고 이메일에 있는 링크일 수도 있습니다.이메일 첨부 파일에는 일반적으로 Qakbot 페이로드를 다운로드하는 문서가 포함됩니다.Menlo Labs는 최근 이러한 유형의 Qakbot 캠페인을 몇 가지 목격하고 있습니다.

이 블로그에서는 다양한 것을 사용하는 다양한 Qakbot 캠페인에 대해 논의할 것입니다. 고도로 회피적인 적응형 위협 (HEAT) 테크닉과 Qakbot 페이로드의 작동 방식에 대해서도 설명하겠습니다.

Qakbot에서 사용하는 HEAT 기법

Menlo Labs에서 식별한 Qakbot 캠페인에 사용된 다양한 HEAT 기법은 다음과 같습니다.

  • 하이퍼링크가 있는 이메일 루어
  • 엑셀 4.0 매크로
  • 폴리나 익스플로잇 (CVE-2022-30190)
  • HTML 스머글링

이러한 각 기법의 예를 제공하겠습니다.

하이퍼링크가 있는 이메일 루어

이 캠페인에서는 악성 페이로드를 호스팅하기 위해 양성 도메인이 손상되고 페이로드에 대한 링크가 이메일을 통해 전송됩니다.Qakbot은 기존 방어 체계를 우회하기 위해 암호로 보호된 ZIP 파일인 a를 사용했습니다. 알려진 HEAT 기술.아래는 VT에서 암호로 보호되는 이러한 페이로드가 제대로 감지되지 않는 것을 보여주는 스크린샷입니다.

아래 스크린샷은 Qakbot이 기존 방어를 회피하기 위해 사용하는 초기 액세스 방법을 보여줍니다.

Diagram showing that clicking on a URL in an email leads to downloading a password protected ZIP file that downloads a JS payload, leading to Qakbot

공격 킬 체인은 다음과 같습니다.

  • 악성 ZIP 파일을 가리키는 URL이 포함된 이메일이 피해자에게 전송됩니다 (hxxp [://] zigmaTraveles [.] LK/INMO/Main3173988897 [.] zip).
  • ZIP 파일은 비밀번호로 보호됩니다 (pwd - U523 md5 - afd1d504d88971e6f09d89e9dde8aeb8).
  • ZIP 파일 안에는 실행할 PowerShell 명령 또는 JS를 쉽게 제공할 수 있는 기능이 있는 링크 파일이 있습니다.
  • 링크 (md5 - 622D21C40A25F9834A03BFD5FF4710C1) 파일을 열면 JS (md5 — 76cd1dfafc4d0fd89e228fe82ea721f6) 파일이 다운로드됩니다.그러면 JS 파일이 Qakbot 페이로드를 다운로드합니다.

아래 스크린샷은 악의적인.lnk 다운로드 JS 파일 중 하나를 보여줍니다.

screenshot of malicious .lnk download JS file

난독화된 JS 파일은 아래와 같이 런타임 중에 암호를 해독하여 C2에서 페이로드를 다운로드하고 실행합니다.

screenshot of obfuscated JS file

엑셀 4.0 매크로

이 캠페인에서는 Excel 4.0 매크로를 사용하여 스프레드시트 셀에 명령을 추가하고 이메일 첨부 파일을 의도한 대상으로 보냈습니다.

다음은 Qakbot을 제공하기 위해 Excel 4.0 매크로를 사용하는 첨부 파일이 포함된 이메일의 몇 가지 예입니다.

Diagram showing email with Macro 4.0 leads to Macro 4.0 leads to Qakbot

Excel 파일의 첨부 파일을 보여주는 이메일입니다.

Examples of emails with attached excel files

XLS 문서를 열면 Excel 4.0 매크로를 실행할 매크로를 활성화하라는 메시지가 사용자에게 표시됩니다.

Screenshot of Excel document with warning asking to enable macros

XLS 파일에 있는 이러한 명령은 C2에서 페이로드를 다운로드하고 실행합니다.

screenshot of code

CVE-2022-30190

이 캠페인에서는 CVE-2022-30190 취약점 (폴리나라고도 함) 을 활용하여 Qakbot을 제공했습니다.익스플로잇이 포함된 문서를 실행하면 ms-msdt URL 프로토콜을 사용하여 PowerShell 코드를 실행하는 외부 HTML 파일이 호출됩니다.

다음은 Qakbot을 제공하기 위해 CVE-2022-30190 를 사용하여 첨부 파일이 포함된 이메일의 몇 가지 예입니다.

email with cve-2022-30190 leads to cve-2022-30190 docx file leads to ms-msdt leads to qakbot

다음은 Qakbot을 배송하기 위해 CVE-2022-30190 (md5 - 7a91b01a01a037ccbfe658916161643d0a65a) 를 사용하는 문서의 몇 가지 예입니다.

screenshot showing document using CVE-2022-30190

문서를 열면 HTML 파일 다운로드를 시도하고 Qakbot 페이로드를 추가로 다운로드합니다.

screenshot of file being opened in Microsoft Word

HTML (md5 - ea48f95ab4f3ca3b0c687a7a726cb00c49)

screenshot of code

HTML 스머글링

이 캠페인에서는 특별히 제작된 HTML 첨부 파일 또는 웹 페이지를 사용하여 방화벽 뒤에서 로컬로 멀웨어를 구축했습니다.

다음은 HTML Smuggling 첨부 파일이 포함된 이메일의 몇 가지 예입니다.

examples of emails with HTML smuggling attachments

이 캠페인에서 스팸 이메일에는 그림과 같이 Base64로 인코딩된 HTML 파일 (md5- 2881945BDF1DB34216CC565FEF4501D4) 이 포함되어 있습니다.

screenshot of code

“var text” 함수는 아래와 같이 Adobe 이미지와 실행 시 생성되는 암호로 보호된 ZIP 파일 “Report Jul 14 71645.zip” (md5- 5F57C9BF0923DE15046CCB14E41CE0A6 pwd - abc444) 로 Base64로 인코딩되었습니다.

screenshot of Adobe image and a password-protected ZIP file

공격의 감염 사슬은 다음 이미지에 나와 있습니다.

Diagram showing email with html leading to html smuggling leading to password protected ZIP file leading to JSO leading to DLL leading to regsvr leading to DLL leading to Qakbot

HTML 스머글링 기법을 사용한 Qakbot 공격의 감염 사슬은 다음과 같습니다.

  • 피해자가 HTML 이메일 첨부 파일을 엽니다.
  • HTML 파일은 Base64 형식을 디코딩하여 페이로드를 구성하고 Adobe 이미지와 암호로 보호된 ZIP 파일을 표시합니다.
  • 암호로 ZIP 파일을 추출하면 피해자의 컴퓨터에 ISO 파일 “Report Jul 14 71645.iso”가 삭제됩니다.
  • Qakbot 페이로드가 포함된 ISO 파일은 피해자의 컴퓨터에 전달됩니다.

Qakbot 페이로드 분석

다음으로 Qakbot 페이로드의 작동에 대해 설명하겠습니다. Qakbot 페이로드는 ISO 파일과 Qakbot 실행을 담당하는 내부 구성 요소를 사용합니다.

7월 14일 신고 71645.iso

아카이브에서 다운로드한 ISO 파일에는 7533.dll, calc.exe, 보고서 7월 14일 71645.lnk 및 파일이 포함되어 있습니다. WindowsCodecs.dll

screenshot of ISO file

파일의 기능 및 세부 사항은 다음과 같습니다.

  • 보고서 7월 14일 71645.lnk (md5 - 622D21C40A25F9834A03BFD5FF4710C1)
  • 페이로드를 실행하는 데 사용되는 단축키 파일
  • Calc.exe (md5 - 60B7C0FEAD45F2066E5B805A91F4F0FC)
  • 합법적인 윈도우 7 계산기 응용 프로그램
  • 윈도우 Codecs.dll (md5 - 21930ABBBB06588EDF0240CC60302143)
  • calc.exe 파일을 실행하고 7533.dll 파일을 로드하기 위해 에서 DLL 사이드로드로 사용되는 악성 .dll regsrv.exe
  • 7533.dll (md5 - 1FFFB3FDB0A4B780385CC5963FD4D40C)
  • 칵봇 페이로드

ISO 파일을 실행하면.lnk 파일은 calc.exe 파일을 실행하고 .dll 사이드로딩을 사용하여 WindowsCodecs.dll 를 로드합니다. 그런 다음 7533.dll regsrv32.exe 를 사용하여 (Qakbot) 를 로드합니다.

Qakbot 페이로드를 폭파시키려면 DLL 사이드로딩 공격 회피 기술이 사용됩니다.이 기법을 사용하면 아래와 같이 calc.exe 는 가장한 WindowsCodecs.dll 파일을 로드하여 7533.dll regsv32.exe 명령을 사용하여 파일을 로드합니다.

screenshot of calc.exe loading the masqueraded WindowsCodecs.dll to load 7533.dll using regsv32.exe

이 최종 페이로드는 마침내 wermgr.exe 에 악성 코드를 주입합니다.

screenshot of files

regsrv32.exe 파일을 사용하여 .dll 파일을 로드하는 Qakbot 페이로드는 런타임 패커를 사용하여 패킹됩니다.패커에는 아래와 같이 Qakbot의 압축을 푼 버전을 가져오기 위한 XOR 암호 해독이 포함됩니다.

screenshot of XOR decryption getting the unpacked version of Qakbot

압축을 푼 페이로드는 2022년 6월 21일에 컴파일된 32비트.dll 파일입니다.

screenshot of file details

압축을 푼 이 바이너리는 리소스 섹션 RCDATA (3C91E639 - C2, 89210AF9- 봇넷 ID) 에 C2와 봇넷 ID를 저장합니다.

screenshot of file data

아래와 같이 RC4를 사용하여 리소스 섹션에 있는 C2 및 봇넷 ID를 해독합니다.

screenshots

RC4를 사용하여 봇넷 ID와 C2의 암호를 해독하는 Python 스크립트 (부록 참조) 를 만들었습니다.우리가 분석한 바이너리는 봇넷 ID 오바마 201을 사용한 것이었습니다.

screenshot

아크봇에 대한 멘로 보호

Menlo를 사용하는 고객은 초기 액세스로부터 보호되므로 엔드포인트 감염을 방지할 수 있습니다.

멘로 플랫폼은 Qakbot 멀웨어가 사용하는 다음과 같은 HEAT 기술로부터 보호합니다.

암호로 보호된 ZIP 파일

Menlo 플랫폼은 인터넷에서 다운로드한 모든 문서와 아카이브를 사용자의 엔드포인트 장치에서 멀리 떨어진 Isolation Core™ 에서 엽니다.멀웨어 공격자는 일반적으로 보안 방어를 회피하기 위해 악성 페이로드를 암호로 보호합니다.다운로드가 암호로 보호된 경우 Menlo Platform은 사용자에게 암호를 입력하라는 메시지를 표시합니다.암호가 제공되면 플랫폼은 파일을 검사하여 다운로드해도 안전한지 확인합니다.

엑셀 4.0 매크로

Menlo 이메일 제품은 조직 외부에서 받은 모든 첨부 파일을 래핑합니다.그런 다음 래핑된 첨부 파일이 Isolation Core™ 에서 열립니다. 그러면 문서가 사용자가 볼 수 있는 안전한 버전으로 변환되고 검사 엔진은 파일이 양호한지 불량인지 판단합니다.인터넷에서 다운로드한 모든 문서를 항상 보거나 문서의 SAFE 버전이 엔드포인트에 다운로드되도록 정책을 구성할 수도 있습니다.Menlo의 Safedoc 기능은 모든 활성 콘텐츠를 제거하므로 악의적인 부분이 모두 제거됩니다.

폴리나 익스플로잇

Follina는 Microsoft 진단 도구를 활용하여 원격 코드를 가져오고 실행하는 익스플로잇에 부여된 이름입니다.멘로 플랫폼은 인터넷에서 다운로드한 모든 문서와 아카이브를 사용자의 엔드포인트가 아닌 Isolation Core™ 에서 엽니다.검사 엔진이 파일의 양호 여부를 판단하는 동안 문서는 사용자가 볼 수 있는 안전한 버전으로 변환됩니다.인터넷에서 다운로드한 모든 문서를 항상 보거나 문서의 SAFE 버전이 엔드포인트에 다운로드되도록 정책을 구성할 수도 있습니다.Menlo의 Safedoc 기능은 활성 콘텐츠를 모두 제거하여 악의적인 부분을 제거합니다.

HTML 스머글링

HTML 스머글링의 목표는 HTML5/JavaScript 기능을 사용하여 파일 다운로드를 제공하는 것이며, 일반적으로 두 가지 유형으로 제공됩니다.

Qakbot은 이메일 첨부 파일을 통해 HTML 스머글링을 사용하지만 Menlo Security는 많은 것을 확인했습니다. 악성 캠페인 HTML 밀수를 위한 웹 벡터 사용.HTML Smuggling을 통해 엔드포인트에 다운로드되는 악성 페이로드는 브라우저에서 생성되기 때문에 모든 네트워크 검사를 회피합니다.Menlo Isolation Core™ 는 브라우저에 구성된 모든 유형의 JS 및 페이로드에 대한 가시성을 제공하므로 웹 벡터를 통해 전달될 때 이러한 종류의 공격을 탐지하고 차단합니다.

결론

이 게시물에서는 분석한 Qakbot 캠페인에서 사용한 다양한 HEAT 기술을 선보였습니다.Menlo Isolation 플랫폼을 사용하는 고객은 보호됩니다.

IOC

NameMd5
7533.dll1FFFB3FDB0A4B780385CC5963FD4D40C
Report Jul 14 71645.lnk622D21C40A25F9834A03BFD5FF4710C1
calc.exe60B7C0FEAD45F2066E5B805A91F4F0FC
WindowsCodecs.dll21930ABBBB06588EDF0240CC60302143
Report Jul 14 71645.ZIP5F57C9BF0923DE15046CCB14E41CE0A6
Report Jul 14 71645.ISO0C9164296949B72BF82EC1951AB7AC3B
C2
70.46.220.114:443
179.111.8.52:32101
208.107.221.224:443
176.45.218.138:995
24.158.23.166:995
24.54.48.11:443
89.101.97.139:443
24.55.67.176:443
24.139.72.117:443
120.150.218.241:995
174.69.215.101:443
38.70.253.226:2222
41.228.22.180:443
217.165.157.202:995
172.115.177.204:2222
173.21.10.71:2222
69.14.172.24:443
47.23.89.60:993
104.34.212.7:32103
66.230.104.103:443
81.158.239.251:2078
179.158.105.44:443
189.253.167.141:443
24.178.196.158:2222
174.80.15.101:2083
187.116.126.216:32101
100.38.242.113:995
74.14.5.179:2222
40.134.246.185:995
172.114.160.81:443
72.252.157.93:995
70.51.137.244:2222
82.41.63.217:443
197.89.11.218:443
37.34.253.233:443
67.209.195.198:443
67.165.206.193:993
93.48.80.198:995
111.125.245.116:995
1.161.118.53:443
76.25.142.196:443
148.64.96.100:443
217.128.122.65:2222
32.221.224.140:995
47.180.172.159:443
39.57.56.11:995
186.90.153.162:2222
37.186.58.99:995
86.97.10.37:443
39.44.116.107:995
182.191.92.203:995
86.98.78.118:993
117.248.109.38:21
39.52.44.132:995
1.161.118.53:995
91.75.85.128:1194
121.7.223.45:2222
39.41.90.210:995
46.107.48.202:443
190.252.242.69:443
187.172.31.52:443
72.252.157.93:993
72.252.157.93:990
47.145.130.171:443
63.143.92.99:995
197.92.136.122:443
45.46.53.140:2222
196.203.37.215:80
94.59.138.43:2222
92.132.132.81:2222
39.49.48.167:995
103.246.242.202:443
84.241.8.23:32103
94.59.15.180:2222
89.211.209.234:2222
94.36.193.176:2222
47.156.129.52:443
201.172.20.105:2222
109.12.111.14:443
85.6.232.221:2222
96.37.113.36:993
2.178.120.112:61202
193.136.1.58:443
103.133.11.10:995
120.61.3.142:443
182.52.159.24:443
78.100.219.38:50010
173.174.216.62:443
106.51.48.188:50001
67.69.166.79:2222
45.241.254.69:993
88.240.59.52:443
86.213.75.30:2078
24.43.99.75:443
101.50.67.155:995
108.56.213.219:995
5.32.41.45:443
39.53.139.2:995
80.11.74.81:2222

마이터 어트&CK 테크닉

TacticTechnique IDTechnique Name
Initial AccessT1566SpearPhishing
Defense EvasionT1027.006Html Smuggling
Defense EvasionT1027Password Protected zip
ExecutionT1204User Execution
Defense EvasionT1574.002DLL Side-Loading
Defense EvasionT1055Process Injection
Command and ControlT1573.001RC4 Encryption

충수

Qakbot 구성 암호 해독 코드

—----------------------Config Decrptor—-----------------------------------
import hashlib
from arc4 import ARC4  
import struct
import socket, sys

key = b"\\System32\\WindowsPowerShel1\\v1.0\\powershel1.exe"
key = hashlib.sha1(key).digest()
print(key.hex())

file_res = open(sys.argv[1],"rb+") # c2 data from resource section
file_data = file_res.read()
file_res.close()
rc4 = ARC4(key)
data = rc4.decrypt(file_data)
print(data)

if len(data) > 70:
   data = data[20:]  
   out = ""
   while data:
  flag, ip, port = struct.unpack(">BLH",data[:7])
  ip = socket.inet_ntoa(struct.pack('!L', ip))
  data = data[7:]
  out += "{}:{}\n".format(ip,port)
print(out)

출력 이미지

screenshot
블로그 카테고리
태그가 지정되었습니다