BlueDelta (APT28) 자격 증명 피싱: 무료 호스팅 및 Ngrok 사용
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
APT28/Fancy Bear로도 알려진 청갈 매, GRU 소속 그룹은 2025년 2월부터 9월 사이에 여러 차례의 자격 증명 수집 캠페인을 진행했습니다. 이 캠페인에서는 무료 호스팅 및 터널링 서비스를 사용하여 스푸핑된 Outlook, Google 및 Sophos VPN 로그인 페이지를 호스트하고 캡처된 자격 증명을 유출했습니다. 유인책에는 합법적인 PDF 문서와 지역별 언어가 포함되어 신뢰성을 높였습니다. 이 작전은 터키, 북마케도니아, 우즈베키스탄의 에너지, 핵 연구, 정부 및 학술 기관을 표적으로 삼았습니다.
조사
Recorded Future의 Insikt Group은 Webhook.site, InfinityFree, Byet Internet Services 및 ngrok과 같은 서비스에 호스팅 된 수십 개의 피싱 페이지를 수집했습니다. 페이지의 JavaScript는 사용자 이름, 비밀번호 및 피해자 식별자를 캡처하여 공격자가 제어하는 웹훅으로 신호를 보내고 피해자를 실제 포털로 리디렉션했습니다. 다수의 변형은 코드를 재사용하고 변수 이름을 수정하여 배포를 단순화했습니다. 인프라는 단명했고 ShortURL.at와 같은 링크 단축기를 활용했습니다.
완화
알려진 무료 호스팅 및 터널링 도메인을 차단하고, 웹훅 서비스로의 외부 트래픽을 모니터링하며, 모든 외부 계정에 대해 MFA를 강제 적용하세요. 특히 PDF 유인책이 첨부된 경우 OWA, Google 및 VPN 포털을 모방한 피싱 페이지에 대해 사용자에게 교육하세요. 알려진 악의적인 URL을 탐지하기 위해 네트워크 필터링을 구현하고 의심스러운 PDF 링크를 감지하기 위해 이메일 보안 제어를 적용하세요.
응답
알려진 웹훅 엔드포인트에 대한 HTTP POST가 관찰되고 자격 증명 수확 페이지가 로드될 때 SOC 분석가에게 알림을 전송합니다. 악성 페이지를 격리하고, 영향을 받은 사용자 계정을 격리하며, 비밀번호를 강제로 재설정하고 횡적 이동을 위해 로그를 검토합니다. 같은 인프라를 사용하는 다른 페이지를 탐지하고 차단 목록을 업데이트하세요.
“graph TB %% Class Definitions classDef action fill:#99ccff classDef service fill:#ffcc99 classDef tool fill:#cccccc %% Nodes u2013 Reconnaissance recon_info[“<b>동작</b> – <b>T1591 피해자 조직 정보 수집</b>: 대상 연구원의 공개 이메일 주소 및 조직 세부 정보 수집.”] class recon_info action recon_roles[“<b>동작</b> – <b>T1591.004 역할 식별</b>: 에너지 분석가, 싱크탱크 연구원, 보안 직원 등의 특정 직무 식별.”] class recon_roles action %% Nodes u2013 Resource Development resource_dev[“<b>동작</b> – <b>T1583.006 인프라 웹 서비스 획득</b>: 일회용 도메인을 등록하고 무료 호스팅/터널링 서비스(Webhook.site, InfinityFree, Byet, ngrok, shorturl.at) 사용.”] class resource_dev service %% Nodes u2013 Phishing phishing[“<b>동작</b> – <b>T1566.001 스피어피싱 첨부파일</b>: 여러 URL을 거쳐 리디렉션 되는 짧은 악성 링크를 포함한 이메일 전송.”] class phishing action %% Nodes u2013 Obfuscation html_smuggling[“<b>동작</b> – <b>T1027.006 HTML 스멀링</b>: 처음 리디렉션 시 합법적인 PDF 유인책을 메타 리프레쉬를 통해 잠깐 삽입하는 HTML 제공.”] class html_smuggling action %% Nodes u2013 자격 증명 수확 credential_forge[“<b>동작</b> – <b>T1606 웹 자격 증명 위조 / T1056.003 웹 포털 캡처</b>: OWA, Google, Sophos VPN의 스푸핑된 로그인 페이지가 JavaScript로 자격 증명을 캡처합니다.”] class credential_forge tool %% Nodes u2013 입력 캡처 비콘 web_capture_beacon[“<b>동작</b> – <b>T1056.003 웹 포털 캡처</b>: JavaScript가 페이지 열림 비콘 및 입력한 자격 증명을 공격자 웹훅으로 전송합니다.”] class web_capture_beacon tool %% Nodes u2013 유출 exfil_webhook[“<b>동작</b> – <b>T1567.004 웹훅을 통한 유출</b>: 캡처된 데이터를 JSON으로 공격자 제어 웹훅(webhook.site, ngroku2011free.app)으로 POST합니다.”] class exfil_webhook service %% Nodes u2013 명령 및 제어 c2_webprotocol[“<b>동작</b> – <b>T1071.001 애플리케이션 계층 프로토콜 웹 프로토콜</b>: C2 통신에 표준 웹 트래픽 사용.”] class c2_webprotocol service c2_webservice[“<b>동작</b> – <b>T1102.002 웹 서비스 양방향 통신</b>: 웹훅 서비스를 통해 지속적 양방향 채널 유지.”] class c2_webservice service %% Nodes u2013 터널링 protocol_tunnel[“<b>동작</b> – <b>T1572 프로토콜 터널링</b>: ngrok 터널을 사용하여 로컬 유출 엔드포인트를 인터넷에 노출시킵니다.”] class protocol_tunnel tool %% Nodes u2013 유출 후 리디렉션 post_redirect[“<b>동작</b> – 유출 후 리디렉션: 데이터 캡처 후 피해자는 의심을 피하기 위해 원래의 합법적인 문서나 VPN 포털로 전송됩니다.”] class post_redirect action %% Connections u2013 흐름 recon_info u002du002d>|leads_to| recon_roles recon_roles u002du002d>|leads_to| resource_dev resource_dev u002du002d>|enables| phishing phishing u002du002d>|triggers| html_smuggling html_smuggling u002du002d>|delivers| credential_forge credential_forge u002du002d>|captures| web_capture_beacon web_capture_beacon u002du002d>|sends_to| exfil_webhook exfil_webhook u002du002d>|supports| c2_webprotocol c2_webprotocol u002du002d>|uses| c2_webservice c2_webservice u002du002d>|relies_on| protocol_tunnel protocol_tunnel u002du002d>|facilitates| post_redirect “
공격 흐름
탐지
웹사이트 훅 엔드포인트를 통해 가능한 악성코드 유포 (프록시 경유)
보기
웹사이트 훅 엔드포인트를 통해 가능한 악성코드 유포 (DNS 경유)
보기
가능한 포트 터널링 서비스 (DNS 경유)
보기
제3자 서비스/도구를 통해 가능한 데이터 침입/유출/C2 (프록시 경유)
보기
탐지할 IOCs (DestinationIP): GRU 연결 BlueDelta의 자격 증명 수집 진화
보기
탐지할 IOCs (SourceIP): GRU 연결 BlueDelta의 자격 증명 수집 진화
보기
Webhook 사이트 [웹서버]를 통한 BlueDelta의 자격 증명 수집 캠페인 탐지
보기
시뮬레이션 실행
전제 조건: 텔레메트리 및 기본 상태 체크를 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적 공격 기술(TTP)의 정확한 실행을 설명합니다. 명령어와 설명은 식별된 TTP를 직접 반영하고 탐지 논리에 의해 예상되는 정확한 텔레메트리를 생성해야 합니다. 추상적이거나 관련 없는 예시는 오진의 원인이 될 것입니다.
-
공격 서사 및 명령어:
- 초기 피싱 전달: 공격자는 단축 URL을 포함한 피싱 이메일을 보내고, 해당 URL은 악성으로 리디렉션됩니다
webhook.site페이지. - 피해자 행동: 피해자는 링크를 클릭하고, 브라우저는 리디렉션을 따라가며 HTTP GET 요청을 수행합니다
https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7. - 자격 증명 캡처 페이지: 페이지는 입력한 자격 증명을 훔쳐 같은 웹훅 URL로 POST하지만, 프록시는 초기 GET 요청만 기록하며 이는 규칙을 발동시키기에 충분합니다.
- 테스트에서는피해자를 모방하여 PowerShell의
Invoke-WebRequest를 사용하여 정확한 악성 URL을 요청하고 동일한 프록시 로그 항목을 재현합니다.
- 초기 피싱 전달: 공격자는 단축 URL을 포함한 피싱 이메일을 보내고, 해당 URL은 악성으로 리디렉션됩니다
-
회귀 테스트 스크립트:
# ------------------------------------------------- # BlueDelta Webhook 사이트 액세스 시뮬레이션 (TC-20260109-9X3BZ) # ------------------------------------------------- $maliciousUrls = @( "https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7", "https://webhook.site/3791f8c0-1308-4c5b-9c82-0dc416aeb9c4" ) foreach ($url in $maliciousUrls) { try { Write-Host "Requesting malicious URL: $url" Invoke-WebRequest -Uri $url -UseBasicParsing -Method GET -TimeoutSec 10 | Out-Null Write-Host "✅ Request sent." } catch { Write-Warning "Request to $url failed: $_" } } -
정리 명령:
# 프록시 캐시 플러시 (해당하는 경우) 잔류 항목을 피하기 위해 net stop "Squid Service" net start "Squid Service" # 스크립트에 의해 생성된 모든 임시 파일 삭제 (해당 없음) Write-Host "정리 완료."