SOC Prime Bias: 높음

01 Jul 2026 06:50 UTC

10년 후 LokiBot: 최근 캠페인 분석

Author Photo
SOC Prime Team linkedin icon 팔로우
10년 후 LokiBot: 최근 캠페인 분석
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

LokiBot은 브라우저, 암호화폐 지갑, 기타 민감한 애플리케이션에서 자격 증명을 수집하기 위해 구축된 장기간 운영 중인 정보 탈취기입니다. 이 최근 캠페인은 악성 스팸을 통해 전달되는 난독화된 JScript 첨부파일로 시작하는 다단계 실행 체인에 의존합니다. 이 악성코드는 프로세스 주입과 API 해싱을 사용하여 가시성을 줄이면서 탈취한 데이터를 명령 제어 인프라로 전송합니다.

조사

조사에서는 다단계 LokiBot 샘플을 분석하여 JScript 첨부파일에서 시작해 PowerShell 로더, 여기서 .NET 인젝터, 최종적으로 LokiBot 페이로드로의 진행 과정을 추적했습니다. 분석가는 ConfuserEx 보호, XOR 기반의 복호화, 반사적 로딩 기법이 체인 전체에 걸쳐 사용된 것을 밝혀냈습니다. 이 연구는 또한 악성코드의 맞춤형 API 해싱 접근방식과 결함이 있는 레지스트리 기반의 지속성 방식에 대해서도 설명했습니다.

완화

조직은 악성 JScript 첨부파일과 악성 스팸을 배달 전에 차단하기 위해 강력한 이메일 필터링을 배포해야 합니다. 의심스러운 자식 프로세스를 모니터링하는 것은 필수적이며 wscript.exe and powershell.exe 를 통해 유발되는 실행을 제한하고 Windows의 Run 키에 대한 비정상적인 변경을 주의깊게 살펴보는 것이 노출을 줄이는 데 도움이 될 수 있습니다.

대응

LokiBot이 감지되면 추가적인 데이터 탈취와 명령 제어 통신을 막기 위해 감염된 엔드포인트를 즉시 격리해야 합니다. 조사관은 법의학 분석을 수행하여 원래 진입점을 파악하고 자격 증명 침해의 범위를 평가해야 합니다. 감염된 호스트에서 액세스한 모든 계정은 전체 비밀번호 재설정을 받아야 하며, 관련 JScript와 PowerShell 아티팩트에 대한 환경 스캔이 이루어져야 합니다.

공격 흐름

시뮬레이션 실행

필요 조건: 원격 측정 및 기준선 사전 비행 체크가 통과해야 합니다.

이유: 이 섹션은 탐지 규칙을 유도하도록 설계된 적대적인 기술(TTP)의 정확한 실행을 설명합니다. 명령과 설명은 식별된 TTP를 직접 반영하며 탐지 논리에 의해 예상되는 원격 측정을 정확하게 생성하는 것에 초점을 두어야 합니다. 추상적이거나 관련 없는 예시는 잘못 진단을 유발할 것입니다.

  • 공격 서사 및 명령: 적대자는 JScript 파일을 통해 초기 접근 권한을 성공적으로 얻었습니다. 탐지 가능한 .dll 파일을 디스크에 드롭하는 것을 피하기 위해, Base64로 인코딩된 문자열을 포함하는 PowerShell 명령을 실행합니다. 이 스크립트는 디코딩되면 .NET 반사 기능을 사용하여 [System.Reflection.Assembly]::Load 악성 페이로드를 직접 현재 프로세스 메모리로 끌어옵니다. 이 “파일이 없는” 접근법은 LokiBot의 특징입니다.

  • 회귀 테스트 스크립트:

    # LokiBot 시뮬레이션 스크립트
    # 이 스크립트는 탐지 규칙에 정의된 정확한 문자열과 일치하도록 설계되었습니다.
    
    # 1. Base64 구성 요소 시뮬레이션
    $encodedCommand = "Base64로 인코딩된 PowerShell 스크립트"
    $dummyPayload = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("DummyPayload"))
    
    # 2. 탐지 규칙의 정확한 문자열을 사용하여 어셈블리 로딩 구성 요소 시뮬레이션
    # 시뮬레이션이므로 "페이로드"가 실제 어셈블리가 아니므로 try/catch를 사용합니다.
    try {
        Write-Host "인코딩된 단계를 실행 중입니다..."
        Write-Output $encodedCommand
    
        # 이 줄이 탐지 규칙의 주요 트리거입니다
        $trigger = "[System.Reflection.Assembly]::Load"
        Write-Host "다음으로 어셈블리를 로드하려고 합니다: $trigger"
    
        # Invoke-Expression을 통해 호출하여 ScriptBlockText에 나타나도록 합니다
        Invoke-Expression "Write-Host '트리거링: $trigger'"
    }
    catch {
        Write-Error "시뮬레이션이 트리거 문자열을 실행하지 못했습니다."
    }
  • 정리 명령:

    # 시뮬레이션 스크립트로 영구적인 변경은 없습니다.
    # 콘솔을 지우고 남아있는 프로세스가 없는지 확인합니다.
    Clear-Host
    Write-Host "시뮬레이션 정리 완료. 파일이 드롭되지 않았습니다."