SOC Prime Bias: Critical

15 May 2026 12:49 UTC

FamousSparrow, 아제르바이잔의 석유 및 가스 부문을 표적으로 삼다

Author Photo
SOC Prime Team linkedin icon 팔로우
FamousSparrow, 아제르바이잔의 석유 및 가스 부문을 표적으로 삼다
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

Bitdefender Labs는 2025년 12월부터 2026년 2월 사이에 아제르바이잔의 석유 및 가스 회사를 대상으로 한 다단계 침입을 식별했습니다. 공격자는 ProxyShell 및 ProxyNotShell 체인을 악용하여 Microsoft Exchange를 손상시킨 후, 반복적으로 동일한 초기 접근 포인트를 통해 돌아오면서 고급 DLL 사이드로딩 기법을 통해 Deed RAT 및 Terndoor 백도어를 배포했습니다. Bitdefender는 중국과 관련된 APT 그룹 FamousSparrow 활동으로 이를 중간에서 높은 확신으로 귀속시켰습니다. 이 캠페인에서는 API 후킹 및 단계적 로더 활성화 등 정교한 회피 기법도 선보였습니다.

조사

연구원들은 세 가지 별개의 활동 파도를 문서화했습니다. 첫 번째는 웹 셸을 Exchange에 배포한 후 LogMeIn Hamachi와 유사한 서비스를 사용하여 Deed RAT을 전달했습니다. 두 번째 파도는 USOShared 및 드라이버 기반 체인을 통해 Terndoor를 배포하려 했으며, 마지막 파도에서는 업데이트된 구성 데이터와 함께 Deed RAT로 복귀했습니다. 기술 분석에서는 사용자 지정 암호화, RC4 및 AES-CBC 복호화 루틴, LZNT1 및 Deflate 압축, 사용자 정의 PE와 유사한 헤더 구조가 발견되었습니다. 공격자는 나중에 RDP를 통해 도메인 관리자 계정을 사용하여 횡적으로 이동하고 Impacket 프레임워크의 SMB 도구를 사용했습니다.

완화책

조직은 지체 없이 Exchange 서버를 패치하고 알려진 ProxyShell 및 ProxyNotShell 노출을 완화해야 합니다. 네트워크 분할은 자격 증명 재사용 및 횡적 이동의 영향을 줄이는 데 도움이 될 수 있습니다. 디펜더는 DLL 사이드로딩, API 후킹 및 의심스러운 서비스 생성에 대한 행동 기반 탐지로 배포해야 합니다. 권한 있는 RDP 접근 및 SMB 기반 원격 실행 도구에 대한 엄격한 제어도 권장됩니다.

대응조치

보안팀은 IIS 디렉토리 내의 웹 셸 파일 생성, LogMeIn Hamachi라는 예상치 못한 Windows 서비스, 사용자 쓰기 가능한 경로에서 시작된 드라이버 서비스 등록에 대해 경고해야 합니다. 다음과 같은 비정상적인 도메인으로의 HTTPS 트래픽도 다른 의심스러운 활동과 연관 지어야 합니다. virusblocker.it.com and sentinelonepro.com 와 같은 도메인으로의 HTTPS 트래픽도 다른 의심스러운 활동과 연관지어야 합니다. 조사관은 또한 다음과 같은 프로세스를 조사해야 합니다. StartServiceCtrlDispatcherW 또는 합법적인 바이너리와 함께 로드되는 의심스러운 DLL들

"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef technique fill:#e0e0e0 %% Node definitions initial_access["<b>Initial Access</b> – <b>T1210 원격 서비스의 악용</b><br/><b>기술 ID</b>: T1210<br/><b>설명</b>: ProxyShell 또는 ProxyNotShell을 사용하여 Exchange 서버와 같은 취약한 원격 서비스를 악용합니다."] class initial_access action persistence_webshell["<b>Persistence</b> – <b>T1505.003 웹 셸</b><br/><b>기술 ID</b>: T1505.003<br/><b>설명</b>: 지속적인 액세스를 위해 손상된 서버에 웹 셸을 배포합니다."] class persistence_webshell action malicious_service["<b>Persistence</b> – <b>T1569 시스템 서비스</b><br/><b>기술 ID</b>: T1569<br/><b>설명</b>: 지속성을 위해 LogMeIn Hamachi로 변장한 악성 서비스를 만듭니다."] class malicious_service action tool_logmein["<b>도구</b> – <b>이름</b>: LogMeIn Hamachi<br/><b>설명</b>: 위장한 합법적인 VPN 서비스."] class tool_logmein tool execution_proxy["<b>실행</b> – <b>T1218 서명된 바이너리 프록시 실행</b><br/><b>기술 ID</b>: T1218<br/><b>설명</b>: 악성 코드를 실행하기 위해 합법적인 시스템 바이너리를 사용합니다."] class execution_proxy action execution_masquerade["<b>실행</b> – <b>T1036 변장</b><br/><b>기술 ID</b>: T1036<br/><b>설명</b>: 악성 실행 파일을 LMIGuardianSvc.exe로 이름을 바꾸어 위장합니다."] class execution_masquerade action malware_lmi["<b>악성코드</b> – <b>이름</b>: LMIGuardianSvc.exe<br/><b>설명</b>: 실행 후 악성 DLL을 로드합니다."] class malware_lmi malware defense_reflective["<b>방어 회피</b> – <b>T1620 반사적 코드 로딩</b><br/><b>기술 ID</b>: T1620<br/><b>설명</b>: 디스크를 만지지 않고 메모리에 코드를 로드합니다."] class defense_reflective action defense_processhollow["<b>방어 회피</b> – <b>T1055.012 프로세스 할로잉</b><br/><b>기술 ID</b>: T1055.012<br/><b>설명</b>: 합법적인 프로세스의 메모리를 악성 코드로 대체합니다."] class defense_processhollow action defense_threadhijack["<b>방어 회피</b> – <b>T1055.003 스레드 하이재킹</b><br/><b>기술 ID</b>: T1055.003<br/><b>설명</b>: 실행 중인 프로세스의 스레드를 하이재킹합니다."] class defense_threadhijack action defense_hide["<b>방어 회피</b> – <b>T1564.010 아티팩트 숨기기</b><br/><b>기술 ID</b>: T1564.010<br/><b>설명</b>: 악성 구성요소를 탐지에서 숨깁니다."] class defense_hide action payload_decrypt["<b>페이로드 처리</b> – <b>T1560.003 아카이브 압축 해제</b><br/><b>기술 ID</b>: T1560.003<br/><b>설명</b>: 실행 전에 페이로드를 암호 해독하고 압축 해제합니다."] class payload_decrypt action lateral_movement["<b>흐름 이동</b> – <b>T1078 유효한 계정</b><br/><b>기술 ID</b>: T1078<br/><b>설명</b>: 도난당한 자격 증명을 사용하여 RDP 및 SMB 관리자 공유를 통해 유연하게 이동합니다."] class lateral_movement action tool_impacket["<b>도구</b> – <b>이름</b>: Impacket<br/><b>설명</b>: 피벗에 사용되는 네트워크 프로토콜용 Python 라이브러리."] class tool_impacket tool c2_https["<b>커맨드 앤 컨트롤</b> – <b>T1071.001 웹 프로토콜 HTTPS</b><br/><b>기술 ID</b>: T1071.001<br/><b>설명</b>: 암호화된 HTTPS를 통해 C2 서버와 통신합니다."] class c2_https action c2_contentinject["<b>커맨드 앤 컨트롤</b> – <b>T1659 콘텐츠 주입</b><br/><b>기술 ID</b>: T1659<br/><b>설명</b>: 합법적인 HTTP 응답에 악성 콘텐츠를 주입합니다."] class c2_contentinject action impact_kernel["<b>영향</b> – <b>T1014 루트킷</b><br/><b>기술 ID</b>: T1014<br/><b>설명</b>: 깊은 지속성을 위해 커널 드라이버 Terndoor를 설치하려고 시도합니다."] class impact_kernel action %% 연결들 initial_access –>|leads_to| persistence_webshell persistence_webshell –>|leads_to| malicious_service malicious_service –>|uses| tool_logmein malicious_service –>|leads_to| execution_proxy execution_proxy –>|uses| execution_masquerade execution_masquerade –>|loads| malware_lmi malware_lmi –>|performs| defense_reflective defense_reflective –>|performs| defense_processhollow defense_processhollow –>|performs| defense_threadhijack defense_threadhijack –>|performs| defense_hide defense_hide –>|enables| payload_decrypt payload_decrypt –>|enables| lateral_movement lateral_movement –>|uses| tool_impacket lateral_movement –>|leads_to| c2_https c2_https –>|uses| c2_contentinject c2_contentinject –>|enables| impact_kernel "

공격 흐름

## 시뮬레이션 실행

전제 조건: Telemetry & Baseline Pre‑flight Check가 통과해야 합니다.

  • 공격 내러티브 및 명령:

    Deed RAT을 운영하는 공격자는 데이터를 수집하고 명령을 수신하기 위해 지속적인 C2 채널을 확립하려고 합니다. PowerShell (T1059.001)을 사용하여 RAT은 하드 코딩된 악성 호스트로 HTTPS GET 요청을 시작합니다 sentinelonepro.com 포트 443 (T1071.001). 연결은 아웃바운드이므로 Windows 방화벽을 통과하며 Sysmon에 의해 NetworkConnect 이벤트로 캡처됩니다. 탐지 규칙은 이 이벤트에서 작동해야 합니다.

  • 회귀 테스트 스크립트:

    <#
    Deed RAT C2 시뮬레이션 – 알려진 악성 호스트(sentinelonepro.com)에 대한 아웃바운드 HTTPS 연결을 만듭니다.
    이 스크립트는 격리된 실험실에서 테스트하는 데 안전합니다; 도메인은
    실제 C2 인프라에 연결되지 않도록 비 라우팅 IP (127.0.0.1)로 해석됩니다.
    #>
    
    # 안전을 위해 DNS 해석 재정의 (선택 사항)
    $hostsPath = "$env:SystemRootSystem32driversetchosts"
    if (-not (Select-String -Path $hostsPath -Pattern "sentinelonepro.com")) {
        Add-Content -Path $hostsPath -Value "`n127.0.0.1 sentinelonepro.com"
    }
    
    # HTTPS 요청 수행 (시뮬레이션된 C2 트래픽)
    try {
        $response = Invoke-WebRequest -Uri "https://sentinelonepro.com/heartbeat" `
                                      -UseBasicParsing `
                                      -Headers @{ "User-Agent" = "DeedRAT/1.0" } `
                                      -TimeoutSec 10
        Write-Host "C2 요청 완료, 상태 코드:" $response.StatusCode
    } catch {
        Write-Warning "C2 요청 실패 (격리된 실험실에서 예상됨): $_"
    }
  • 정리 명령:

    # 임시 호스트 항목 제거
    $hostsPath = "$env:SystemRootSystem32driversetchosts"
    (Get-Content $hostsPath) |
        Where-Object { $_ -notmatch "sentinelonepro.com" } |
        Set-Content $hostsPath
    
    # 잔여 파일 삭제
    Remove-Item -Path "$env:TEMPexample.html" -ErrorAction SilentlyContinue