SOC Prime Bias: Medium

22 May 2026 12:42 UTC

SHADOW-WATER-063의 Banana RAT: 빌드 서버에서 은행 사기로

Author Photo
SOC Prime Team linkedin icon 팔로우
SHADOW-WATER-063의 Banana RAT: 빌드 서버에서 은행 사기로
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

Banana RAT는 금융 동기화된 위협 행위자 SHADOW-WATER-063이 브라질 은행을 대상으로 자격 증명을 탈취하고 사기 거래를 실행하는 데 사용하는 뱅킹 트로이 목마다. 이 악성코드는 악성 배치 파일을 통해 전달되며, 계층화된 PowerShell 난독화, 메모리 내 실행 및 AES-256 암호화를 활용하여 탐지를 회피한다. 숨겨진 예약 작업을 통해 지속성을 유지하며, HTTP 및 TLS를 통해 명령 및 제어 서버와 통신한다. 이 캠페인은 브라질의 즉시 결제 생태계를 겨냥한 Pix QR 코드 가로채기 기능도 갖추고 있다.

조사

Trend Micro MDR 분석가들은 서버 측 도구와 클라이언트 측 페이로드를 확보하여 FastAPI 기반 다형성 암호화 도구부터 PowerShell 스테이저 및 최종 메모리 내 C# 컴파일 단계까지 전체 공격 체인을 재구성할 수 있었다. 분석 결과, 공격자 인프라, 난독화 워크플로우, 화면 스트리밍, 입력 조작, QR 코드 조작을 포함한 기능 세트가 드러났다. 이 작전은 Tetrade 뱅킹 트로이 목마 생태계와 관련되었지만 여러 구조적 차이점이 있는 것으로 연구자들은 평가했다.

완화

수비자는 네트워크 경계에서 악성코드 전달 엔드포인트로의 초기 HTTP GET 요청을 차단해야 하며, 특정한 숨겨진 예약 작업의 행동을 모니터링하고 PowerShell 및 csc.exe 실행에 대한 엄격한 제어를 시행해야 한다. 엔드포인트 방어는 또한 파일 없는 PowerShell 활동, 메모리 내 DLL 로딩 및 ProgramDataMicrosoftDiagnosisETW과 같은 기만 경로에 파일 생성도 탐지해야 한다. 사용자 인식 교육은 악성 배치 파일 및 WhatsApp 같은 채널을 통한 피싱 링크를 다루도록 해야 한다.

대응

Banana RAT 활동이 감지되면, 영향을 받은 엔드포인트를 즉시 고립시키고, 악성 PowerShell 프로세스를 종료하며, 숨겨진 예약 작업을 제거하고 공개 및 가장된 디렉토리에 있는 드롭된 파일을 삭제해야 한다. 조사자는 전체 PowerShell 명령줄을 수집하고, C# 컴파일 아티팩트를 보존하며, 명령 및 제어 도메인에 연결된 네트워크 트래픽을 검토해야 한다. 노출된 자격 증명은 재설정하고, 금융 팀에 사기적인 뱅킹 활동 징후를 감시하도록 경고해야 한다.

"graph TB %% Class definitions classDef technique fill:#99ccff %% Node definitions step_A["<b>기술</b> – <b>T1204.001 사용자 실행</b>: 배치 파일을 다운로드하기 위해 WhatsApp 또는 이메일을 통해 전달된 악성 링크."] class step_A technique step_B["<b>기술</b> – <b>T1027.014 난독화된 파일</b>: 배치 파일이 난독화된 PowerShell 코드를 실행."] class step_B technique step_C["<b>기술</b> – <b>T1027.016 정크 코드 삽입</b>: 아홉 가지 사용자 정의 난독화 계층, 변수 이름 변경, XOR, AES."] class step_C technique step_D["<b>기술</b> – <b>T1036.008 가장</b>: Microsoft ETW 경로를 모방하여 공용 문서에 msedge.txt 드롭."] class step_D technique step_E["<b>기술</b> – <b>T1564.005 아티팩트 숨기기</b>: ProgramData Microsoft Diagnosis ETW에 악성 파일을 작성하여 합법적인 파일과 혼합."] class step_E technique step_F["<b>기술</b> – <b>T1620 반사 코드 로딩</b>: 메모리 내 C# DLL을 컴파일하기 위해 csc.exe 사용."] class step_F technique step_G["<b>기술</b> – <b>T1134.001 토큰 가장</b>: SYSTEM 토큰 복제하고 상호작용 세션에서 PowerShell 생성."] class step_G technique step_H["<b>기술</b> – <b>T1134.002 토큰으로 프로세스 생성</b>: 복제된 토큰으로 프로세스 생성."] class step_H technique step_I["<b>기술</b> – <b>T1571 비표준 포트</b>: 사용자 지정 AES-256-CBC 프로토콜을 사용하여 HTTPS 포트 443을 통한 C2 통신."] class step_I technique step_J["<b>기술</b> – <b>T1048.002 대체 프로토콜을 통한 데이터 유출</b>: 비동기화 암호화된 비C2 프로토콜을 사용한 암호화된 데이터 유출."] class step_J technique step_K["<b>기술</b> – <b>T1140 난독화 해독</b>: PowerShell이 메모리 내에서 AES로 포장된 페이로드 암호 해독."] class step_K technique step_L["<b>기술</b> – <b>T1659 콘텐츠 삽입</b>: PowerShell이 Net.WebClient 또는 Start-BitsTransfer를 사용하여 공격자 웹 서버에서 페이로드를 가져옴."] class step_L technique step_M["<b>기술</b> – <b>T1566 피싱</b>: WhatsApp/이메일을 통해 전달된 악성 링크로 배치 파일 다운로드."] class step_M technique %% Connections step_A –>|이어짐| step_B step_B –>|이어짐| step_C step_C –>|이어짐| step_D step_D –>|이어짐| step_E step_E –>|이어짐| step_F step_F –>|이어짐| step_G step_G –>|이어짐| step_H step_H –>|이어짐| step_I step_I –>|이어짐| step_J step_J –>|이어짐| step_K step_K –>|이어짐| step_L step_L –>|이어짐| step_M "

공격 흐름

시뮬레이션 실행

전제 조건: Telemetry & Baseline 예비 비행 검사에 합격해야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적대자 기술(C2 통신)의 정확한 실행 세부 정보를 설명합니다. 명령과 서사는 식별된 TTP를 직접 반영하며 탐지 로직이 예상하는 정확한 텔레메트리를 생성하는 것을 목표로 합니다.

  • 공격 서사 및 명령:
    위협 행위자가 피해자 엔드포인트에 Banana RAT를 배포했습니다. 지속성을 유지하고 명령을 수신하기 위해, RAT는 하드코딩된 C2 인프라로 아웃바운드 통신을 시작합니다:

    1. HTTP 비콘 (IP 24.199.90.58:80): 로우 TCP 소켓을 열고 최소한의 HTTP GET 요청 전송.
    2. HTTPS 비콘 (IP 162.141.111.227:443): 를 사용하여 Invoke-WebRequest 로 C2 서버에 TLS를 사용하여 연결.
    3. 도메인 기반 비콘: 에 대한 DNS 조회 수행 c.windowsk-cdn.com, C2는 쿼리 볼륨을 모니터링합니다.

    세 가지 작업 모두 Sigma 규칙에서 최소한 하나의 선택에 타격을 극대화하기 위해 순차적으로 실행됩니다.

  • 회귀 테스트 스크립트:

    # -------------------------------------------------
    # Banana RAT C2 통신 시뮬레이션 (TC-20260522-A1B2C)
    # -------------------------------------------------
    # 1. HTTP 비콘 24.199.90.58:80
    try {
        $httpClient = New-Object System.Net.Sockets.TcpClient("24.199.90.58",80)
        $stream = $httpClient.GetStream()
        $writer = New-Object System.IO.StreamWriter($stream)
        $writer.WriteLine("GET / HTTP/1.1")
        $writer.WriteLine("Host: 24.199.90.58")
        $writer.WriteLine("Connection: Close")
        $writer.WriteLine()
        $writer.Flush()
        $reader = New-Object System.IO.StreamReader($stream)
        $response = $reader.ReadToEnd()
        $writer.Dispose()
        $reader.Dispose()
        $httpClient.Close()
    } catch { Write-Error "HTTP 비콘 실패: $_" }
    
    # 2. HTTPS 비콘 162.141.111.227:443
    try {
        Invoke-WebRequest -Uri "https://162.141.111.227" -UseBasicParsing -TimeoutSec 10
    } catch { Write-Error "HTTPS 비콘 실패: $_" }
    
    # 3. 악성 도메인에 대한 DNS 쿼리
    try {
        Resolve-DnsName -Name "c.windowsk-cdn.com" -Type A -ErrorAction Stop
    } catch { Write-Error "DNS 쿼리 실패: $_" }
    
    # 시뮬레이션 종료
  • 정리 명령:

    # -------------------------------------------------
    # 정리 – 남아 있는 소켓 또는 임시 파일 제거
    # -------------------------------------------------
    # 시뮬레이션으로 생성된 지속적 아티팩트는 없습니다.
    # 남아 있는 네트워크 연결이 없도록 하십시오:
    Get-NetTCPConnection -RemotePort 80,443 `
        | Where-Object {$_.RemoteAddress -in @("24.199.90.58","162.141.111.227")} `
        | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
    # 후속 테스트에 영향을 미치지 않도록 DNS 캐시를 정리하세요
    Clear-DnsClientCache