Declared an innovator and leader for Secure Web Gateways (SWG) by Frost and Sullivan

Back to blog

Qakbot 캠페인에서 사용하는 HEAT 공격의 해부

Menlo Labs | Aug 30, 2022

Share this article

서론

Qakbot은 QBot 또는 Pinkslipbot이라고도 불리며, 10년 이상의 역사를 가진 은행용 트로이 목마입니다. 2007년에 처음 발견되었으며, 이후 계속 유지 및 개발되어 왔습니다.

Qakbot은 전 세계 주요 은행용 트로이 목마 중 하나가 되었습니다. 주요 목적은 은행 자격 증명(예: 로그인, 비밀번호 등)을 훔치는 것이지만, 금융 거래를 감시하고 스스로 퍼지며 랜섬웨어를 설치하여 손상된 조직으로부터 수익을 극대화하는 기능도 획득했습니다.

Qakbot의 배달 수단은 대개 피해자에게 이메일입니다. 이메일 첨부 파일 또는 이메일 내 링크일 수 있습니다. 이메일 첨부 파일은 일반적으로 Qakbot 페이로드를 다운로드하는 문서를 포함합니다. Menlo Labs는 최근 이러한 종류의 Qakbot 캠페인을 몇 차례 발견했습니다.

이 글에서는 다양한 고도로 회피적 적응 위협(HEAT) 기술을 사용하는 다양한 Qakbot 캠페인에 대해 설명하고, Qakbot 페이로드가 어떻게 작동하는지 설명할 것입니다.

Qakbot에 의해 사용된 HEAT 기술

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

  • 이메일 유인과 하이퍼링크
  • 엑셀 4.0 매크로
  • Follina 취약점 (CVE-2022-30190)
  • HTML 스멀글링

각 기술에 대한 예를 제공하겠습니다.

이메일 유인과 하이퍼링크

이 캠페인에서는 악의적 페이로드를 호스팅하기 위해 정상 도메인이 손상되고, 페이로드에 대한 링크가 이메일을 통해 전송됩니다. 기존 방어를 회피하기 위해 Qakbot은 암호로 보호된 ZIP 파일, 알려진 HEAT 기술을 사용했습니다. 아래 스크린샷은 VT에서 이러한 암호로 보호된 페이로드의 검출 불량을 보여줍니다.

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

이메일에서 URL을 클릭하면 비밀번호로 보호된 ZIP 파일이 다운로드되어 JS 페이로드를 다운로드하고 Qakbot에 이어지는 다이어그램입니다.

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

  • 피해자에게 악성 ZIP 파일을 가리키는 URL이 포함된 이메일이 발송됩니다 (hxxp[://]zigmatravels[.]lk/inmo/Main3173988897[.]zip).
  • ZIP 파일은 암호로 보호되어 있습니다 (pwd – U523 md5 – afd1d504d88971e6f09d89e9dde8aeb8).
  • ZIP 파일 안에는 PowerShell 명령이나 JS를 실행할 수 있는 능력이 있는 링크 파일이 있습니다.
  • 링크(md5 – 622D21C40A25F9834A03BFD5FF4710C1) 파일을 여는 것은 JS(md5 – 76cd1dfafc4d0fd89e228fe82ea721f6) 파일을 다운로드합니다. 그리고 JS 파일은 Qakbot 페이로드를 다운로드합니다.

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

런타임 중에 복호화되어 C2로부터 페이로드를 다운로드하고 실행하는 난독화된 JS 파일은 아래와 같습니다.

JavaScript 코드 블록입니다.

엑셀 4.0 매크로

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

아래는 엑셀 4.0 매크로를 사용하여 Qakbot을 전달하는 첨부 파일이 있는 이메일의 예시입니다.

Macro 4.0을 포함한 이메일이 Macro 4.0을 거쳐 Qakbot으로 이어지는 다이어그램입니다.

엑셀 파일의 첨부를 보여주는 이메일입니다.

첨부된 엑셀 파일이 포함된 이메일의 예시입니다.

XLS 문서를 열면 사용자에게 엑셀 4.0 매크로를 실행하도록 매크로를 활성화하라는 요청이 표시됩니다.

매크로를 활성화할 것인지 묻는 경고가 포함된 엑셀 문서의 스크린샷입니다.

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

코드 블록

CVE-2022-30190

이 캠페인에서는 CVE-2022-30190 취약점(Follina라고도 함)이 Qakbot을 전달하는 데 사용되었습니다. 실행되면, 취약점이 포함된 문서는 ms-msdt URL 프로토콜을 사용하여 PowerShell 코드를 실행하는 외부 HTML 파일을 호출합니다.

아래는 Qakbot을 전달하기 위해 CVE-2022-30190을 사용하는 첨부 파일이 있는 이메일의 예시입니다.

CVE-2022-30190을 포함한 이메일이 있고, 이메일을 받아서 해당 문서 파일(docx)을 열 때 Microsoft Diagnostic Tools(ms-msdt)를 이용하면 Qakbot에 감염되는 과정을 거칩니다.

다음은 CVE-2022-30190(md5 – 7a91b01a037ccbfe6589161643d0a65a)을 사용하여 Qakbot을 전달하는 문서의 예시입니다.

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

HTML (md5 – ea48f95ab4f3ca3b0c687a726cb00c49)

HTML 스머글링

이 캠페인에서는 특별히 제작된 HTML 첨부 파일이나 웹 페이지가 방화벽 뒤에서 로컬로 악성 소프트웨어를 구축하는 데 사용되었습니다.

아래는 HTML 스머글링 첨부 파일이 있는 이메일의 예시입니다.

HTML smuggling 첨부 파일을 포함한 이메일의 예시

이 캠페인에서 스팸 이메일은 Base64로 인코딩된 HTML 파일(md5- 2881945BDF1DB34216CC565FEF4501D4)을 포함하고 있습니다.

“var text” 함수는 아래와 같이 Adobe 이미지와 암호로 보호된 ZIP 파일 “Report Jul 14 71645.zip” (md5- 5F57C9BF0923DE15046CCB14E41CE0A6 pwd – abc444)을 실행 시 구성합니다.

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

이메일에서 HTML을 클릭하면 보안이 비밀번호로 보호된 ZIP 파일이 다운로드되고, 이를 열 때 JSO 파일을 거쳐 DLL 파일을 실행시키고, DLL 파일을 다시 regsvr 파일을 거쳐 실행시켜 Qakbot에 감염되는 과정을 보여주는 다이어그램입니다.

HTML 스머글링 기술을 사용한 Qakbot 공격의 감염 체인은 다음과 같습니다:

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

Qakbot 페이로드 분석

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

보고서 Jul 14 71645.iso

아카이브에서 다운로드한 ISO 파일은 7533.dll, calc.exe, Report Jul 14 71645.lnk 및 WindowsCodecs.dll을 포함하고 있습니다.

파일의 기능과 세부 정보는 다음과 같습니다.

  • Report Jul 14 71645.lnk (md5 – 622D21C40A25F9834A03BFD5FF4710C1)
    • 페이로드를 실행하기 위해 사용되는 바로 가기 파일
  • Calc.exe (md5 – 60B7C0FEAD45F2066E5B805A91F4F0FC)
    • 합법적인 Windows 7 계산기 애플리케이션
  • Windows Codecs.dll (md5 – 21930ABBBB06588EDF0240CC60302143)
    • Malware .dll로, calc.exe와 함께 DLL 사이드로딩으로 사용되어 regsrv.exe를 실행하고 7533.dll을 로드하는 데 사용됩니다.
  • 7533.dll (md5 – 1FFFB3FDB0A4B780385CC5963FD4D40C)
    • Qakbot 페이로드

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

DLL 사이드로딩 공격 회피 기술을 사용하여 Qakbot 페이로드를 실행합니다. 이 기술을 사용하여 calc.exe는 위장한 WindowsCodecs.dll을 로드하여 regsv32.exe를 사용하여 7533.dll을 로드합니다.

코드 블록

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

regsrv32.exe를 사용하여 .dll 파일을 로드하는 Qakbot 페이로드는 런타임 패커를 사용하여 패킹되었습니다. 패커는 XOR 복호화를 수행하여 Qakbot의 언패킹 버전을 얻습니다.

언패킹된 페이로드는 2022년 6월 21일에 컴파일된 32비트 .dll 파일입니다.

이 언패킹된 이진 파일은 C2 및 봇넷 ID를 리소스 섹션 RCDATA(3C91E639 – C2, 89210AF9- 봇넷 ID)에 저장합니다.

이 리소스 섹션에 있는 C2 및 봇넷 ID를 복호화하기 위해 RC4를 사용합니다.

코드 블록

우리는 Python 스크립트를 만들어 Botnet ID와 C2를 RC4로 복호화하는 방법을 소개했습니다. 분석한 바이너리는 BotnetID Obama 201을 사용하고 있습니다.

Menlo QakBot에 대한 보호

Menlo를 사용하는 고객은 초기 접근에 대한 보호로 엔드포인트 감염을 방지할 수 있습니다

Menlo 플랫폼은 Qakbot 악성코드에서 사용하는 다음 HEAT 기술에 대해 보호합니다:

비밀번호로 보호된 ZIP 파일

Menlo 플랫폼은 인터넷에서 다운로드된 모든 문서 및 아카이브를 사용자의 엔드포인트 장치와 분리된 Isolation Core™에서 엽니다. 악성코드 제작자들은 종종 보안 방어를 회피하기 위해 악성 페이로드를 비밀번호로 보호합니다. 다운로드가 비밀번호로 보호되어 있으면 Menlo 플랫폼은 사용자에게 비밀번호를 입력하도록 요청합니다. 비밀번호가 제공되면 플랫폼은 파일을 검사하고 안전하게 다운로드할 수 있는지 확인합니다.

Excel 4.0 매크로

Menlo 이메일 제품은 조직 외부에서 수신한 모든 첨부 파일을 랩핑합니다. 랩핑된 첨부 파일은 Isolation Core™에서 열리며, 문서가 사용자가 볼 수 있는 안전한 버전으로 변환되고, 검사 엔진이 파일이 좋은지 나쁜지를 판단합니다. 인터넷에서 다운로드된 모든 문서가 항상 보이도록 구성하거나 문서의 안전한 버전을 엔드포인트에 다운로드하도록 구성할 수도 있습니다. Menlo의 Safedoc 기능은 모든 활성 콘텐츠를 제거하여 악성 측면이 제거되도록 보장합니다.

Follina Exploit

Follina은 Microsoft 진단 도구를 이용하여 원격 코드를 가져와 실행하는 exploit입니다. Menlo 플랫폼은 인터넷에서 다운로드된 모든 문서 및 아카이브를 사용자의 엔드포인트 장치와 분리된 Isolation Core™에서 엽니다. 문서가 사용자가 볼 수 있는 안전한 버전으로 변환되고, 검사 엔진이 파일이 좋은지 나쁜지를 판단합니다. 인터넷에서 다운로드된 모든 문서가 항상 보이도록 구성하거나 문서의 안전한 버전을 엔드포인트에 다운로드하도록 구성할 수도 있습니다. Menlo의 Safedoc 기능은 모든 활성 콘텐츠를 제거하여 악성 측면이 제거되도록 보장합니다.

HTML Smuggling

HTML Smuggling의 목표는 HTML5/JavaScript 기능을 활용하여 파일 다운로드를 전달하는 것입니다. 보통 두 가지 방법이 있습니다.

  • 클라이언트 장치에서 Data URL을 통해 다운로드를 전달합니다.
  • 적절한 MIME 유형을 가진 JavaScript blob을 만들어 클라이언트 장치에서 다운로드

Qakbot은 이메일 첨부 파일을 통해 HTML Smuggling을 사용하지만, Menlo Security는 웹 벡터를 통해 HTML Smuggling을 사용하는 악성 캠페인을 다수 발견했습니다. 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

MITRE ATT&CK Technique

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 Decryption Code

—----------------------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)

Output Image

Share this article

상담문의

Menlo Security의 제품 및 솔루션에 관한 문의사항

궁금하신 내용이 있거나 비즈니스 상담을 원하시는 경우 양식을 제출하여 멘로 시큐리티 전문가에게 상담받으세요.