APT 공격이 인도의 정부를 겨냥하다 – SHEETCREEP, FIREPOWER, MAILCREEP 활용 | 2부
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
보고서는 인도 정부 기관을 손상시키기 위해 맞춤형 백도어인 SHEETCREEP, FIREPOWER, MAILCREEP 세 가지를 배포한 Sheet Attack 작전을 다룹니다. 이 임플란트는 Google Sheets, Firebase Realtime Database, Microsoft Graph API와 같은 합법적인 클라우드 플랫폼을 명령 및 제어(C2)로 활용하여 정상적인 SaaS 트래픽에 녹아들도록 했습니다. 분석 결과 개발자가 코드 생산을 돕기 위해 생성형 AI를 사용하는 흔적도 확인되었습니다. 이 캠페인은 APT36의 파키스탄 기반 하위 그룹과 관련된 것으로 평가됩니다.
조사
ThreatLabz는 백도어의 동적 및 정적 분석을 수행하여 지속 방법, C2 워크플로우, 데이터 탈취 행동을 문서화했습니다. 팀은 또한 지원 인프라를 맵핑하고, 지역 및 User-Agent 기반 필터링을 관찰하며, AI 지원 소스 생성 가능성을 시사하는 코드 수준의 지표를 포착했습니다.
완화
의심스러운 PDF/LNK 전달 체인에 대한 레이어 감지 메커니즘을 구현하고, PowerShell 또는 VBS 실행을 시작하는 예약된 작업을 모니터링하세요. Google Sheets, Firebase, Microsoft Graph와 같은 C2로 일반적으로 남용되는 클라우드 서비스에 대한 엄격한 출력 제어와 이상 모니터링을 적용하세요. 알려진 페이로드에 대한 해시 기반 차단을 사용하고, 식별된 악성 도메인 및 IP 주소를 차단하세요.
응답
탐지될 경우, 엔드포인트를 격리하고, 숨겨진 cmd.exe와 PowerShell 활동을 종료하며, 관련 예약된 작업을 제거하고 백도어 바이너리를 삭제하세요. Google Sheets 기반 C2 로그와 Firebase 아티팩트를 보존하고 검토한 후 동일한 지표를 나타내는 다른 호스트를 환경에서 사냥하세요.
공격 흐름
탐지
PowerShell을 통한 다운로드 또는 업로드 (cmdline 경유)
보기
Microsoft Graph API 도메인이 비정상적인 프로세스에 의해 해결됨 (dns_query 경유)
보기
공용 사용자 프로필 내 의심스러운 파일 (file_event 경유)
보기
의심스러운 GNU Wget 실행 시도 (cmdline 경유)
보기
PowerShell에서 의심스러운 .NET 메서드 호출 (powershell 경유)
보기
공용 사용자 프로필에서의 의심스러운 실행 (process_creation 경유)
보기
제3자 서비스/도구를 통한 데이터 유출/침입/C2 가능성 (dns 경유)
보기
아카이브에서 추출된 의심스러운 파일 (file_event 경유)
보기
검출: APT 공격 – 인도 정부 타켓 SHEETCREEP, FIREPOWER, MAILCREEP 사용 | Part 2
보기
검출: APT 공격 – 인도 정부 타켓 SHEETCREEP, FIREPOWER, MAILCREEP 사용 | Part 2
보기
검출: APT 공격 – 인도 정부 타켓 SHEETCREEP, FIREPOWER, MAILCREEP 사용 | Part 2
보기
검출: APT 공격 – 인도 정부 타켓 SHEETCREEP, FIREPOWER, MAILCREEP 사용 | Part 2
보기
검출: APT 공격 – 인도 정부 타켓 SHEETCREEP, FIREPOWER, MAILCREEP 사용 | Part 2
보기
SHEETCREEP 및 FIREPOWER 백도어 배치에 대한 PowerShell 명령어 탐지 [Windows Powershell]
보기
SHEETCREEP 및 FIREPOWER 백도어 C2 통신 탐지 [Windows Network Connection]
보기
시뮬레이션 실행
전제 조건: Telemetry & Baseline Pre-flight Check가 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 유발하도록 설계된 적의 기술(탐지 보고서: TTP)의 구체적인 실행 단계를 설명합니다. 명령어와 설명은 식별된 TTP를 직접적으로 반영해야 하며, 탐지 논리가 기대하는 정확한 텔레메트리를 생성하는 것을 목표로 해야 합니다. 추상적이거나 관련이 없는 예시는 잘못된 진단으로 이어질 수 있습니다.
-
공격 내러티브 및 명령어:
- 악성 PNG 준비:
- 공격자는 PNG 파일(
details.png)을 생성합니다. 이 파일은 실제로 컴파일된 .NET 어셈블리 바이트 스트림을 포함하고 있지만 정적 분석을 피하기 위해 바이트가 반전되어 있습니다.
- 공격자는 PNG 파일(
- 숨겨진 모드로 PowerShell 실행하여 어셈블리 로드:
- 공격자는 PowerShell을 실행합니다
-WindowStyle Hidden -Command와 한 줄의 명령어로 반전된 바이트를 읽고, 올바른 순서로 복원하고,[System.Reflection.Assembly]::Load(),를 통해 어셈블리를 로드하며, 알려진 진입 지점을 호출합니다(Task10.Program::MB()).
- 공격자는 PowerShell을 실행합니다
- 대안 LNK 기반 파워-파이어 배치:
- 제작된
.lnk숏컷이powershell.exe을 ‘headless -e’로 실행하여 원격 PowerShell 백도어를 가져와 실행합니다.--headless -e이 단계들은 Sigma 규칙이 찾는 문자열과 정확히 일치하며, 경보가 발생하도록 보장합니다.
- 제작된
회귀 테스트 스크립트:
- 악성 PNG 준비:
-
Regression Test Script:
# ------------------------------------------------- # SHEETCREEP 페이로드 시뮬레이션 - 정확한 명령 줄 재현 # ------------------------------------------------- # 1. 더미 .NET 어셈블리 생성(간단한 C# 헬로 월드) 및 컴파일 $source = @" using System; public class Task10 { public static void MB() { Console.WriteLine("Payload executed"); } } "@ $tempDir = "$env:TEMPsheetcreep" New-Item -ItemType Directory -Force -Path $tempDir | Out-Null $csFile = Join-Path $tempDir "Task10.cs" $dllFile = Join-Path $tempDir "Task10.dll" $source | Set-Content -Path $csFile -Encoding UTF8 # Compile using csc (assumes .NET Framework SDK installed) $cscPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" & $cscPath /target:library /out:$dllFile $csFile # 2. Read the DLL bytes, reverse them, and write to a .png file $bytes = [IO.File]::ReadAllBytes($dllFile) $revBytes = $bytes[($bytes.Length-1)..0] $pngPath = Join-Path $tempDir "details.png" [IO.File]::WriteAllBytes($pngPath, $revBytes) # 3. Execute the exact malicious PowerShell command line (this will fire the rule) $maliciousCmd = '-WindowStyle Hidden -Command "$b=[IO.File]::ReadAllBytes(''details.png'');' + '([System.Reflection.Assembly]::Load([byte[]]($b[($b.Length-1)..0])).GetType("Task10.Program")::MB())"' Start-Process -FilePath "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" ` -ArgumentList $maliciousCmd ` -WindowStyle Hidden ` -NoNewWindow # Cleanup (optional, run after verification) # Remove-Item -Recurse -Force $tempDir -
정리 명령어:
# Remove temporary files and directories created for the test $tempDir = "$env:TEMPsheetcreep" if (Test-Path $tempDir) { Remove-Item -Recurse -Force $tempDir }