Blog

최신 피싱 캠페인을 구매할 수 있는 마켓! Caffeine으로 불리는 PhaaS(Phishing-as-a-Service)

Adrian McCabe, Steve Sedotto
Oct 10, 2022
9 min read
|   Last updated: Oct 27, 2022
phishing
Managed Defense

2022년 3월 맨디언트 매니지드 디펜스(Mandiant Managed Defense) 고객을 대상으로 피싱 활동을 조사하던 중 맨디언트 분석가는 'Caffeine'이라는 공유 PhaaS(Phishing-as-a-Service) 플랫폼을 이용하는 악의적인 행위자를 발견하였습니다. 이 플랫폼은 직관적인 인터페이스로 이용하기 쉽고, 비용도 높지 않습니다. 또한, 피싱 캠페인 요소를 조정하고 자동화할 수 있는 다양한 기능과 도구도 제공합니다. 이 플랫폼은 맞춤형 피싱 키트 제작, 리다이렉션 및 미끼 페이지 관리, 악성 페이로드에 대한 URL 생성, 캠페인 메일 활동 등을 셀프서비스 방식으로 이용할 수 있습니다.

다른 PhaaS 플랫폼과 달리 Caffeine은 공개된 등록 절차를 따릅니다. 누구나 등록해 사용이 가능하다는 특징은 매우 독특한 것입니다. 언더그라운드 포럼이나 암호화된 메지기를 통해 비밀스럽게 신청하거나, 기존 사용자의 초대를 받아야 하는 번거로움이 없습니다. 또한, Caffeine은 고객 지원도 남다릅니다. 러시아, 중국을 대상으로 사용할 수 있는 피싱 이메일 템플릿을 제공합니다. 이는 뒷부분에서 자세히 다루겠습니다.

피싱 플랫폼을 이용하는 것은 새로운 것은 아닙니다. 하지만 Caffeine과 같이 기능이 풍부한 플랫폼에 누구나 쉽게 접근할 수 있다는 것은 새롭다고 볼 수 있습니다. 이 포스팅을 통해 맨디언트 분석가가 사용한 증거 식별 방법을 살펴보고, PhaaS 플랫폼의 진입 장벽이 얼마나 낮은지 소개하겠습니다. 그리고 Caffeine의 핵심 기능과 탐지 회피를 위한 기술적 구성을 알아보겠습니다. 더불어 후반부에는 피싱 캠페인 요소를 식별하도록 설계한 탐지 룰도 소개하겠습니다.

맨디언트 고객을 대상으로 한 피싱 활동 조사

이메일 보안 플랫폼이 제공하는 자동화 기반 검사와 탐지 기능이 발전에 발맞춰 피싱 전술도 진화를 거듭하고 있습니다. APT29가 외교 기관을 표적으로 손상된 이메일 자격 증명을 교묘하게 사용한 것처럼 고도로 전문화된 위협도 문제지만 아래 그림과 같이 도난된 자격 증명을 추적하는 전통적인 피싱 공격도 여전히 골치거리입니다. M-Trends 2022 보고서에 따르면 맨디언트가 2021년에 대응한 침입의 약 9%가 자격 증명 도용이었습니다.

Typical credential theft phishing attack flow

2022년 3월 맨디언트 디펜스는 의심스러운 URL이 포함된 유럽 건축 컨설팅 회사에서 보낸 이메일을 관찰하였습니다. 이메일 내용을 완전히 복구하지 않았지만 피싱 이메일 'eduardorodiguez9584[.]ongraphy[.]com(활동 당시 IP는 134.209.156[.]27로 확인됨)'에 포함된 도메인 데이터를 수집해 분석하였습니다.

First-stage phishing campaign redirect page, `eduardorodiguez9584[.]ongraphy[.]com
1단계 피싱 캠페인 리다이렉션 페이지, eduardorodiguez9584[.]ongraphy[.]com

eduardorodiguez9584[.]ongraphy[.]com 도메인은 oculisticaspizzirri[.]it/fill/(분석 시점 기준 주소 134.209.156[.]27) 리다이렉트 페이지로 활용되었습니다. 이 사이트는 합법적인 도메인의 하위 페이지를 손상한 것입니다. 부모 도메인인 oculisticaspizzirri[.]it은 이탈리아 안과 의사의 합법적인 웹 사이트에 연결된 것입니다. 맨디언트는 사이트 손상의 초기 침입 벡터가 무엇인지 명확하게 알지 못합니다. 다만 이 사이트가 워드프레스를 기반으로 제작되었으며 몇 가지 플러그인을 적용한 것을 확인하였습니다. 참고로 워드프레스 취약점은 손상된 사이트에 관찰할 수 있는 일반적인 초기 침입 벡터입니다. 본 포스팅을 작성하는 시점에서 위에 언급한 도메인은 더 이상 손상되지 않은 것으로 보입니다.

합법적인 사이트의 손상된 부분에서 호스팅 되는 2단계 미끼 페이지는 잘못 구성되어 있었습니다. 올바르게 구성하였다면 Caffeine을 이용하는 공격자가 구성한 최종 미끼 페이지가 표시될 것입니다.

Misconfigured second-stage campaign page with support link, oculisticaspizzirri[.]it
잘못 구성된 2단계 캠페인 페이지에 대한 안내

다음은 미끼로 만든 가짜 마이크로소프트 365 로그인 페이지의 예입니다.

Correctly configured lure page for Microsoft 365 credential theft
Microsoft 365 자격 증명 도용에 대해 올바르게 구성된 미끼 페이지

잘못 구성된 미끼 페이지에 대한 안내 문구를 보면 티켓을 오픈(Open a Ticket) 하라는 부분을 확인할 수 있습니다. 이는 오류에 대한 안내와 함께 이 문제 해결을 위해 도움을 받을 수 있는 고객 지원 링크입니다. Caffeine 엔지니어가 훌륭한 사용자 경험 제공을 위해 지원 서비스를 제공하고 있다는 것을 보여주는 부분입니다. 티켓 오픈 링크를 누르면 Caffeine 지원 페이지로 가기 전에 다음과 같은 로그인 페이지로 리다이렉션 됩니다.

Main Caffeine login screen
Caffeine 로그인 화면

Caffeine 플랫폼에 대한 연구 과정에서 맨디언트 매니지드 디펜스는 고객 지원 관련 안내 링크 대신 암호화된 메시징 서비스 연락처로 대체한 것도 관찰하였습니다.

Caffeine 플랫폼 구성 요소

Caffeine 플랫폼은 다음 세 요소로 구성됩니다.

  • 코어 Caffeine 계정
  • 라이선스
  • 캠페인 인프라 및 구성

코어 Caffeine 계정

최신 SaaS(Software-as-a-Service) 플랫폼처럼 Caffeine 플랫폼을 이용하려면 사용자 계정을 생성해야 합니다. 모든 PhaaS가 같은 방식으로 작동하는 것은 아닙니다. Caffeine 플랫폼의 경우 웹 사이트 자체가 대중에게 공개되어 URL만 알면 누구나 접근할 수 있습니다. 다른 PhaaS처럼 사이트에 접근하기 위해 기존 사용자 추천을 요구하는 등의 사전 검증 과정이 없이 계정을 만들 수 있습니다.

일단 계정이 등록되면 Caffeine 서비스 홈페이지로 이동해 피싱에 필요한 준비 작업을 할 수 있습니다. 플랫폼 조사 과정에서 맨디언트 매니지드 디펜스는 Caffeine 관리자가 뉴스 피드를 통해 암호 화폐 기능 업데이트 등의 주요 개산 사항을 발표하는 것을 관찰하였습니다.

Caffeine homepage
Caffeine 홈페이지

라이선스

Caffeine은 입소문을 통해 홍보와 함께 사이버 범죄 관련 언더그라운드 포럼에 광고를 통해 사용자를 모으고 있습니다. 다음 그림은 nulled[.]to에 올라온 내용으로 Caffeine을 광고하고 있습니다.

Caffeine advertisement on nulled[.]to
nulled[.]to에 게재된 광고

다음 그림은 또 다른 예로 crax[.]tube에 올라온 Caffeine 플랫폼 기능 중 일부를 알리는 광고 게시물입니다.

Caffeine advertisement on crax[.]tube
crax[.]tube에 게재된 광고 게시물

최신 SaaS 플랫폼처럼 Caffeine은 영구 라이선스가 없는 완적 구독형 서비스로 세 가지 구독 옵션을 제공합니다. Caffeine 구독 모델은 다른 PhaaS보다 약간 더 비쌉니다. Caffeine의 경우 월 기본 구독료는 250달러입니다. 2019년 보안 회사인 Cyren의 블로그 게시물에 따르면 일반적인 PhaaS의 평균 월 구독료는 50~80달러 사이입니다. Caffeine의 이용료가 평균을 웃도는 주요 이유로 무제한 고객 지원 서비스를 제공하는 것과 광범위한 탐지 방지 및 분석 방지 기능을 제공하는 것을 꼽을 수 있습니다.

캠페인 인프라 및 구성

Caffeine 플랫폼 이용자는 자격 증명 피싱 캠페인에 사용한 세부적인 구성 설정을 선택할 수 있습니다. Caffeine 플랫폼 이용자는 셀프서비스 방식으로 설정을 할 수 있습니다. 필요에 따라 캠페인 리다이렉션 페이지, 최종 미끼 페이지 관련해 사용자 지정 방식으로 동적 URL 스키마를 등록할 수도 있습니다.

Supported dynamic URL schemas
지원되는 동적 URL 스키마

이외에도 Caffeine 플랫폼 이용자는 CIDR 범위 내에서 IP 주소를 블랙리스트에 추가하고 연결을 차단하는 옵션도 선택할 수 있습니다.

Caffeine platform configuration settings
Caffeine 플랫폼 구성 설정

실제 사례 연구

Caffeine 플랫폼 이용자는 필수 구성 요소를 설정한 후 일반적으로 피싱 키트(phshing kit)라고 부르는 도구를 캠페인 인프라에 배포해야 합니다. 배포를 마친 다음 라이선스 토큰을 통해 Caffeine 계정에 연결하면 피싱 위협을 가할 준비가 마무리됩니다.

Caffeine 플랫폼 피싱 키트 배포

전통적인 피싱 캠페인에서 공격자는 두 가지 메커니즘을 사용해 악성 컨텐츠를 호스팅 합니다. 공격자는 특수한 목적으로 만든 웹 인프라를 활용하거나, 합법적인 제3자 사이트와 침해한 인프라를 활용해 컨텐츠를 호스팅 합니다. 두 방법은 하나만 선택하기도 하고 조합해 이용하기도 합니다.

손상된 웹 인프라에 피싱 키트를 배포하는 것과 관련된 전술, 기술, 절차(TTP)에 대한 전체 분석은 본 포스팅이 다루는 범위를 벗어납니다. 다만 간단히 알아보자면 피싱 키트 배포를 위해 동원한 기술은 다음과 같습니다.

  • 손상된 웹 관리자 계정
  • 웹 인프라 플랫폼 및 기술 취약점 악용
  • 취약한 방식으로 구성된 웹 애플리케이션 남용

어떤 기술을 사용하든 공격자의 목표는 호스팅 된 웹 인프라에서 파일 쓰기 권한을 획득하는 것입니다. 이 작업이 완료되면 피싱 키트에서 파일을 업로드합니다. 그리고 종속성 이슈가 없는지 확인합니다.

Fully deployed Caffeine phishing kit on hosted infrastructure shown in Caffeine instructional video
Caffeine 교육 비디오에 소개된 호스팅 인프라에 배포된 Caffeine 피싱 키트 예

피싱 키트 배포 후 공격자는 라이선스 토큰을 Caffeine 계정에 연결하여 플랫폼이 제공하는 기능과 옵션을 활용해 캠페인을 운영 및 관리합니다.

Caffeine token management UI
Caffeine 토큰 관리 UI
Caffeine phishing campaign management dashboard
캠페인 관리 대시보드

사전 준비 작업이 완료되면 다음과 유사한 마이크로소프트 365 로그인 페이지가 나타납니다. 이 페이지는 자격 증명을 탈취하기 위한 주요 수단입니다. 참고로 사전 설정에 문제가 있으면 미끼 페이지에 접속하는 사람들은 오류 메시지를 받게 됩니다.

Correctly configured lure page for Microsoft 365 credential theft

맨디언트는 Caffeine 플랫폼을 통한 피싱 캠페인에서 관찰한 위와 같은 가짜 마이크로소프트 365 로그인 페이지 외에 다른 유형의 자격 증명 탈취를 유도하는 페이지를 식별하지 못했습니다. 그러나 고객 요구를 충족하기 위해 Caffeine 플랫폼에 다른 유형의 로그인 페이지 형식이 추가될 것으로 보고 있습니다.

피싱 이메일 발송

캠페인 인프라 구성이 완료되면 공격자는 Caffeine 플랫폼이 제공하는 이메일 관리 유틸리티(Python, PHP 모두 제공)을 사용해 피싱 이메일을 만들어 잠재적인 피해자에게 보낼 수 있습니다.

Python Sender Module
Python 발신자 모듈
XAMPP PHP Sender Module
XAMPP PHP 발신자 모듈

기본적으로 Caffeine 플랫폼은 발신자 유틸리티와 함께 사용되는 발신 이메일에 포함할 구성 가능한 HTML 파일을 제공합니다. 여기에는 러시아, 중국의 사용자를 대상으로 하는 템플릿이 포함되어 있습니다.

Default fake fax Caffeine phishing email template
피싱 이메일 템플릿
Default Microsoft file share Caffeine phishing email template
마이크로소프트 파일 공유 피싱 이메일 템플릿
Default Chinese Caffeine phishing template
중국어 피싱 템플릿
Default Mail[.]ru phishing template
기본 Mail[.]ru 피싱 템플릿

피싱 캠페인 감지

Caffeine 플랫폼 내의 모든 유틸리티 및 구성 요소에 대한 포괄적인 분석은 본 포스팅이 다루는 범위를 벗어납니다. 다만 간단히 위협 탐지를 위한 참고 사항을 소개하겠습니다.

엔드포인트에서 Caffeine 기반 피싱 감지

이 룰 집합은 피싱 인프라 및 활동을 식별하기 위한 헌팅 여정의 출발점이라 할 수 있습니다. 그러나 위협이 진화에 맞추어 조정이 필요할 수 있습니다. 소개한 탐지 방식을 효과적으로 활용하려면 YARA 룰을 실행하십시오.

Table 1: Caffeine platform sample information and corresponding YARA rules details

파일 이름

MD5

참고

M_Hunting_PHP_Caffeine_Toolmarks_1

index.php

ce9a17f9aec9bd2d9eca70f82e5e048b

Caffeine 플랫폼에는 다양한 구성 요소에 걸쳐 'index.php'라는 이름의 페이지가 많습니다. 이는 배포한 피싱 키트에 접근할 때 기본적으로 제공되는 페이지입니다. 탐지 과정에서 찾는 문자열은 Caffeine 난독화 도구의 출력에서 나온 표시입니다.

M_Hunting_PHP_Caffeine_Obfuscation_1

index.php

ce9a17f9aec9bd2d9eca70f82e5e048b

이 탐지는 'Caffeine-style' 난독화 메커니즘을 찾는 것이지만 다른 피싱 탐지에도 적용이 가능합니다. 맨디언트는 Caffeine에서 사용하는 난독화 메커니즘이 다른 PhaaS 플랫폼에서도 사용 중일 수 있다는 것을 몇몇 증거를 발견하였습니다.

M_Hunting_JSON_Caffeine_Config_1

config.json

684b524cef81a9ef802ed3422700ab69

배포한 Caffeine 피싱 키트에서 사용하는 기본 구성 파일입니다. 탐지하는 문자열은 Caffeine이 활용하는 구성 아티팩트입니다.

M_Hunting_JS_Caffeine_Redirect_1

file.htm

60cae932b80378110d74fe447fa518d6

일반적인 Caffeine 리다이렉션 페이지입니다. 탐지하는 문자열은 Caffeine이 활용하는 구성 아티팩트입니다.

M_Hunting_ICO_Caffeine_Favicon_1

favicon.ico

12e3dac858061d088023b2bd48e2fa96

Caffeine 키트에 포함된 합법적인 마이크로소프트 로고 파비콘을 감지합니다. Rouge PHP, HTA, Javascript 파일과 함께 발견된 마이크로소프트 파비콘은 악의적인 활동이 있는지 면밀히 조사해야 합니다.

위협 최전선에서 Caffeine 기반 피싱 감지

다음 도메인은 배포된 피싱 키트를 위한 Caffeine 아키텍처의 핵심 구성 요소입니다. 탐지를 효과적으로 하려면 웹 로그 내에 아래와 같은 도메인의 클러스터에 대한 비정상적인 네트워크 트래픽 또는 몇 분 이어지는 타임프레임 내의 트래픽을 찾아야 합니다.

Table 2: Domains leveraged by various components of Caffeine’s architecture

도메인/URL

IP 주소

참고

caffeinefiles[.]click

104.21.6[.]210

Caffeine 플랫폼 파일의 활성 호스팅 위치입니다. Cloudflare에 있습니다.

caffeines[.]space

185.163.46[.]131

Caffeine 플랫폼 파일의 비활성 호스팅 위치입니다.

caffeines[.]store

104.26.7[.]11

T기본 Caffeine 저장소 도메인입니다. Cloudflare에 있습니다.

ip-api[.]io

192.99.71[.]107

Caffeine이 IP 주소 위치 정보에 사용하는 서비스로 합법적인 것으로 보입니다. 이 도메인에서 관찰한 활동은 다른 Caffeine 침해 지표와 함께 나타날 때 맥락적 가치가 있습니다.

telegram[.]org

149.154.167[.]99

Caffeine이 많이 사용하는 합법적인 암호화 메시징 서비스입니다.

결론 및 감사의 말

위와 같은 활동은 뻔한 이야기처럼 들릴 수 있습니다. 하지만 아무리 강요해도 지나치지 않습니다. Caffeine 플랫폼을 이용한 피싱 공격에서 볼 수 있듯이 엔터프라이즈를 노리는 위협을 수행할 때 필요한 도구는 비용이 높지 않고 쉽게 구할 수 있습니다.

끝으로 본 포스팅 작성에 필요한 위협 인텔리전스 및 조사 지침 관련해 도움을 준 Jeremy Kennelly, 탐지 검토를 도와준 Evan Reese, 그리고 The Managed Defense Security Operations Center에 감사의 말을 전합니다.

탐지 목록

소개하는 YARA 룰은 적절한 성능 보장과 오탐 위험을 줄이기 위해 내부 테스트를 통해 유효성을 검사하지 않은 것이니 참조 바랍니다.

YARA 룰

rule M_Hunting_JS_Caffeine_Redirect_1

{

meta:

author = "adrian.mccabe"

md5 = "60cae932b80378110d74fe447fa518d6"

date_created = "2022-09-22"

rev = "1"

context = “Searches for string artifacts on Caffeine Javascript redirect pages. Intentionally wide.”

strings:

$cf1 = "Don't Play Here Kid" ascii wide

$cf2 = "mrxc0der" ascii wide

condition:

all of them

}

rule M_Hunting_PHP_Caffeine_Toolmarks_1

{

meta:

author = "adrian.mccabe"

md5 = " ce9a17f9aec9bd2d9eca70f82e5e048b"

date_created = "2022-09-22"

rev = "1"

context = “Searches for generic Caffeine obfuscation toolmark strings. Intentionally wide.”

strings:

$attacker_brand = " - WWW.CAFFEINES.STORE" ascii wide

$obfuscation_tagline = "CODED By MRxC0DER" ascii wide

condition:

all of them

}

rule M_Hunting_PHP_Caffeine_Obfuscation_1

{

meta:

author = "adrian.mccabe"

md5 = "ce9a17f9aec9bd2d9eca70f82e5e048b"

date_created = "2022-09-22"

rev = "1"

context = “Searches for obfuscated PHP scripts.”

strings:

$f1 = {3C 3F 70 68 70 }

$a1 = "__FILE__));" ascii wide

$a2 = "=NULL;@eval" ascii wide

$a3 = "))));unset" ascii wide

condition:

uint16(0) == 0x3F3C and

all of them

}

rule M_Hunting_JSON_Caffeine_Config_1

{

meta:

author = "adrian.mccabe"

md5 = "684b524cef81a9ef802ed3422700ab69"

date_created = "2022-09-22"

rev = "1"

context = “Searches for default Caffeine configuration syntax. Intentionally wide.”

strings:

$cf1 = "token" ascii wide

$cf2 = "ip-api.io" ascii wide

$cf3 = "ff57341d-6fb8-4bdb-a6b9-a49f94cbf239" ascii wide

$cf4 = "send_to_telegram" ascii wide

$cf5 = "telegram_user_id" ascii wide

condition:

all of them

}

rule M_Hunting_ICO_Caffeine_Favicon_1

{

meta:

author = "adrian.mccabe"

md5 = "12e3dac858061d088023b2bd48e2fa96"

date_created = "2022-09-22"

rev = "1"

context = “Searches for legitimate Microsoft favicon used by Caffeine. VALIDATION REQUIRED.”

strings:

$a1 = { 01 00 06 00 80 }

$a2 = "fffffff" ascii wide

$a3 = "3333333" ascii wide

$a4 = "DDDDDDDDDDDUUUUUUUUUUUP" ascii wide

$a5 = "UUUPDDD@" ascii wide

condition:

uint16(1) == 0x0100 and

all of them

}

도메인/URL

Table 3: Comprehensive domain list for Caffeine-associated activity in this blog post

도메인/URL

IP 주소

참고

eduardorodiguez9584[.]ongraphy[.]com

134.209.156[.]27

피싱 캠페인 리다이렉션 사이트

oculisticaspizzirri[.]it/fill/

136.243.82[.]137

2단계 자격 증명 수집 URL이 잘못 구성되었습니다.

caffeinefiles[.]click

104.21.6[.]210

Caffeine 플랫폼 파일의 활성 호스팅 위치입니다. 현재 Cloudflare에 있습니다.

caffeines[.]space

185.163.46[.]131

Caffeine 플랫폼 파일의 비활성 호스팅 위치입니다.

caffeines[.]store

104.26.7[.]11

기본 Caffeine 저장소 플랫폼 URL입니다. 현재 Cloudflare에 있습니다.

ip-api[.]io

192.99.71[.]107

TCaffeine이 사용하는 서비스로 겉으로 보기에 합법적입니다. 악의적인 사이트는 아니지만 이 도메인에서 관찰한 활동을 다른 Caffeine 침해 지표와 함께 살펴보면 맥락을 이해하는 측면에서 가치가 있습니다.

telegram[.]org

149.154.167[.]99

Caffeine이 많이 사용하는 합법적인 암호화 메시징 서비스입니다.