악성코드를 전달하기 위해 해산물 구매 요청으로 위장된 피싱 이메일
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
Kimsuky 위협 행위자는 비즈니스 문서로 위장한 악성 LNK 파일을 사용하여 한국의 사용자들을 타겟팅하고 있습니다. 실행 시, LNK 파일은 추가 악성코드(예: JavaScript 및 PowerShell 구성 요소)를 숨긴 백그라운드 프로세스를 통해 배포하는 PowerShell 스크립트를 실행합니다. 악성코드는 Backblaze B2 저장소로 시스템 정보를 유출하고 동일한 클라우드 인프라를 통해 추가 명령을 수신합니다.
조사
AhnLab은 악성 LNK 파일과 지속성을 위한 PowerShell 및 예약 작업의 사용을 분석하여 캠페인을 식별했습니다. 조사는 악성코드가 페이로드를 숨기기 위해 XOR 암호화를 사용하며, Command and Control(C2) 및 데이터 유출에 Backblaze B2와 같은 합법적인 클라우드 서비스를 악용하고 있음을 보여줍니다. 실행 구문 및 작업 예약의 유사성은 이전 Kimsuky 캠페인과 이 활동을 연결합니다.
완화
사용자는 이메일을 통해 받은 LNK 파일을, 비록 그것이 합법적인 비즈니스 문서처럼 보일지라도, 열지 않도록 주의해야 합니다. 조직은 수상한 LNK 실행을 제한하고 비정상적인 PowerShell 또는 wscript.exe 활동을 모니터링해야 합니다. Backblaze B2와 같은 클라우드 스토리지 서비스와의 무단 통신을 모니터링하는 것도 잠재적인 악성코드 활동 및 데이터 유출을 탐지하는 데 도움이 됩니다.
대응
악성 활동이 감지되면, 관리자는 수상한 예약 작업과 C:ProgramData에 있는 파일을 확인하여 영향 받은 호스트를 식별하고 격리해야 합니다. 조사관은 삭제된 %TEMP% 파일과 시스템 로그를 검토하여 파일과 시스템 로그를 검토하여 tasklist tasklist 명령 실행을 조사해야 합니다. 예상치 못한 프로세스에서 나오는 api.ipify.org 또는 Backblaze B2로의 아웃바운드 연결도 조사해야 합니다.
공격 흐름
이 부분은 아직 업데이트 중입니다.
탐지
LOLBAS WScript / CScript (via process_creation)
수상한 Powershell 문자열 (via powershell)
시도된 IP 조회 도메인 통신 (via dns)
Backblaze B2 API를 통한 IP 조회 및 데이터 유출 탐지 [윈도우 네트워크 연결]
악성 LNK 파일 및 스크립트 실행 탐지 [윈도우 프로세스 생성]
LNK 파일을 통한 악성 PowerShell 및 JavaScript 실행 [윈도우 파일 이벤트]
시뮬레이션 실행
전제조건: 원격 측정 및 기준점 사전 비행 점검이 통과해야 합니다.
근거: 이 섹션은 탐지 규칙을 촉발하도록 설계된 적대자 기술(TTP)의 정밀한 실행을 상세히 설명합니다. 명령과 설명은 반드시 식별된 TTP를 직접 반영해야 하며 탐지 논리에 의해 기대되는 정확한 원격 측정을 생성하는 것을 목표로 해야 합니다. 추상적이거나 관련이 없는 예시는 오진을 초래할 수 있습니다.
-
공격 서사 및 명령: 적대자는 윈도우 작업자 워크스테이션에 성공적으로 발판을 마련했습니다. 유출을 준비하기 위해 공격자는 먼저 외부 IP 주소를 확인하여 C2(command-and-control) 리스너를 구성하고 어떤 이그레스 포인트가 사용되고 있는지 확실히 해야 합니다. 이를 위해
ipify.org을 사용합니다. 발견 후, 공격자는 민감한 문서를 준비하고 훔친 데이터를 업로드하기 위해 Backblaze B2 API에 연결을 시도하여 정상적인 비즈니스 트래픽에 혼합될 수 있도록 합법적인 클라우드 서비스를 활용합니다. -
회귀 테스트 스크립트:
# IP 발견 및 Backblaze API 연결의 시뮬레이션 Write-Host "[+] 시뮬레이션 시작: IP 발견..." -ForegroundColor Cyan try { $ip = Invoke-RestMethod -Uri "https://api.ipify.org" Write-Host "[+] 공개 IP를 성공적으로 검색했습니다: $ip" -ForegroundColor Green } catch { Write-Host "[-] IP 발견 실패." -ForegroundColor Red } Write-Host "[+] 시뮬레이션 시작: Backblaze B2 API 연결..." -ForegroundColor Cyan try { # Backblaze B2로의 API 호출 시뮬레이션 $backblazeUri = "https://api.backblazeb2.com/b2api/v2/b2_authorize_account" $response = Invoke-WebRequest -Uri $backblazeUri -Method Post -Body "{}" -ContentType "application/json" Write-Host "[+] Backblaze API에 성공적으로 연결했습니다." -ForegroundColor Green } catch { Write-Host "[-] Backblaze 연결 실패 (유효한 인증이 사용되지 않았다면 이는 예상 가능하지만, 네트워크 원격 측정은 여전히 트리거되어야 합니다)." -ForegroundColor Yellow } -
정리 명령:
# 이 네트워크 기반 시뮬레이션에 의해 생성된 영구 아티팩트는 없습니다. Write-Host "[+] 시뮬레이션 완료. 시스템에 변경 없음." -ForegroundColor Green