Elastic 보안 연구소, BRUSHWORM 및 BRUSHLOGGER 발견
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
Elastic Security Labs는 남아시아의 금융 기관을 대상으로 사용된 두 가지 맞춤형 멀웨어 패밀리인 BRUSHWORM과 BRUSHLOGGER를 발견했습니다. BRUSHWORM은 모듈식 백도어로서 예약된 작업을 통해 지속성을 유지하고, 제거 가능한 미디어를 통해 전파하며, 광범위한 확장자의 파일을 도난하는 기능을 가지고 있습니다. BRUSHLOGGER는 DLL 사이드 로딩된 키로거로서 키 입력을 활성 창의 컨텍스트와 함께 캡처하고, 로그를 XOR 암호화된 형식으로 저장합니다. 두 멀웨어 샘플은 상대적으로 낮은 복잡성을 보이며 지속적인 시행착오 개발의 징후를 보입니다.
조사
조사 과정에서, 분석가들은 백도어 실행파일 paint.exe와 사이드 로딩된 키로거 DLL libcurl.dll을 회수하고, 지속성 방법, 구성 논리, USB 전파 행동, 데이터 준비 디렉터리를 점검했습니다. V1.exe, V2.exe, V4.exe와 같은 이전 개발 빌드도 VirusTotal에서 발견되었으며, 이들은 명령 및 제어를 위해 무료 동적 DNS 인프라와 연결되어 있었습니다. 보고서는 또한 멀웨어의 예약된 작업, 뮤텍스, 파일 경로 관행을 문서화했습니다.
완화
수비자들은 ProgramData 및 Public 경로에서 알 수 없는 이진 파일의 실행을 방지하고, MSGraphics 또는 MSRecorder라는 이름의 예약된 작업 생성을 모니터링하며, 뮤텍스 Windows-Updates-KB852654856을 탐지해야 합니다. 또한 조직은 제거 가능한 미디어에서의 자동 실행을 비활성화하거나 제한하여 의심스러운 미끼 형식의 파일명을 점검해야 합니다. 확인된 C2 도메인으로의 WinHTTP 트래픽의 로깅과 점검이 강화되어야 합니다.
대응
BRUSHWORM 또는 BRUSHLOGGER 활동이 감지되면, 엔드포인트를 격리하고 paint.exe와 libcurl.dll 샘플을 보존하며 예약된 작업 증거를 수집하고 모든 사용자 및 공용 디렉터리에서 악성 파일을 삭제합니다. 조사관은 또한 미끼 바이너리를 제거 가능한 드라이브에서 검색하고, 준비된 외부 유출 폴더를 삭제하며, 영향을 받은 자격 증명을 재설정하고, C2 서버로부터 추가 페이로드 수신을 모니터링해야 합니다.
"graph TB %% Class definitions section classDef technique fill:#cfe2f3 %% Node definitions exec_check["<b>기술</b> – T1497.002 가상화/샌드박스 회피:<br/>사용자 활동, 화면 해상도, 사용자 이름, 컴퓨터 이름, 하이퍼바이저 CPUID 문자열 및 마우스 움직임을 점검하여 분석 환경에서 중단합니다."] class exec_check technique persistence_task["<b>기술</b> – T1053 예약된 작업/작업:<br/>사용자 로그인 시 백도어를 실행하는 MSGraphics라는 Windows 예약 작업을 생성합니다."] class persistence_task technique c2_contact["<b>기술</b> – T1071 애플리케이션 레이어 프로토콜:<br/>백도어가 WinHTTP를 사용하여 HTTPS로 C2 서버에 접속합니다."] class c2_contact technique encrypted_channel["<b>기술</b> – T1573 암호화된 채널:<br/>추가 모듈을 다운로드하기 위해 암호화된 채널을 설정합니다."] class encrypted_channel technique shared_module["<b>기술</b> – T1129 공유 모듈:<br/>C2 서버에서 DLL 페이로드(Recorder.dll)을 다운로드합니다."] class shared_module technique second_task["<b>기술</b> – T1053 예약된 작업/작업:<br/>rundll32.exe를 통해 Recorder.dll을 실행하는 두 번째 예약 작업을 생성합니다."] class second_task technique dll_side["<b>기술</b> – T1574.001 DLL 사이드-로딩:<br/>악성 libcurl.dll이 실행 흐름을 가로채기 위해 사이드-로딩됩니다."] class dll_side technique keylogging["<b>기술</b> – T1056.001 키로깅:<br/>DllMain이 낮은 레벨의 키보드 훅을 설치하여 키 입력, 창 제목 및 타임스탬프를 캡처합니다."] class keylogging technique obfuscation["<b>기술</b> – T1027 난독화된 파일 또는 정보:<br/>로그 파일은 XOR 암호화되고, 구성 데이터는 명확하게 작성된 후 삭제됩니다."] class obfuscation technique local_staging["<b>기술</b> – T1074.001 로컬 데이터 준비:<br/>수집된 파일은 C:UsersPublicSysteminfo에 복사되고 중복 외부 유출을 피하기 위해 해시 로그가 유지됩니다."] class local_staging technique usb_propagation["<b>기술</b> – T1092 이동식 미디어를 통한 통신:<br/>인터넷이 연결 가능한 경우, 악성 코드는 미끼 파일명을 사용하여 연결된 USB 드라이브에 자신을 복사합니다."] class usb_propagation technique usb_data_exfil["<b>기술</b> – T1025 이동식 미디어에서 데이터:<br/>USB 드라이브에서 파일 도난이 계속됩니다."] class usb_data_exfil technique physical_exfil["<b>기술</b> – T1052.001 물리적 매체를 통한 외부 유출:<br/>인터넷이 없을 경우, 도난된 파일은 이동식 미디어에 복사되어 물리적으로 외부 유출됩니다."] class physical_exfil technique %% Connections showing flow exec_check –>|triggers| persistence_task persistence_task –>|executes| c2_contact c2_contact –>|establishes| encrypted_channel c2_contact –>|downloads| shared_module shared_module –>|creates| second_task second_task –>|launches| dll_side dll_side –>|loads| keylogging keylogging –>|produces| obfuscation obfuscation –>|stores| local_staging local_staging –>|copies to| usb_propagation usb_propagation –>|exfiltrates from| usb_data_exfil local_staging –>|uses for| physical_exfil "
공격 흐름
탐지
의심스러운 예약된 작업 (감사를 통해)
보기
공용 사용자 프로필에서 의심스러운 실행 (프로세스 생성 통해)
보기
비정상적인 위치에 DLL 드롭 (파일 이벤트 통해)
보기
공용 사용자 프로필에서 의심스러운 파일 (파일 이벤트 통해)
보기
탐지할 SHA256 IOC: Elastic Security Labs가 BRUSHWORM 및 BRUSHLOGGER를 발견
보기
BRUSHWORM 백도어 C2 통신 탐지 [Windows 네트워크 연결]
보기
Paint.exe 및 Rundll32.exe 실행 탐지 [Windows 프로세스 생성]
보기
시뮬레이션 실행
전제조건: Telemetry & Baseline Pre‑flight Check가 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 작동시키도록 설계된 상대방 기술(TTP)의 정확한 실행을 자세히 설명합니다. 해당 명령어와 설명은 반드시 식별된 TTP를 직접 반영해야 하며 탐지 논리가 기대하는 정확한 원격 측정을 생성해야 합니다.
-
공격 설명 및 명령어:
공격자는 악의적인 DLL (evil.dll)을 획득했으며, 이 DLL이rundll32.exe를 통해 실행되면 랜섬웨어 페이로드를 떨어뜨리고 USB 드라이브에 암호화된 데이터를 작성합니다. 의심을 피하기 위해 공격자는 먼저paint.exe를 사용하여 이동식 미디어에 정상적인 이미지처럼 보이도록 파일을 생성한 다음, 동일한 디렉터리에 숨겨진 악성 DLL을rundll32.exe를 사용하여 로드합니다. 이 두 가지 작업 모두 Sigma 규칙과 일치하는 프로세스 생성 이벤트를 생성합니다. -
회귀 테스트 스크립트:
# ------------------------------ # Paint + Rundll32 남용 시뮬레이션 # ------------------------------ # 1. 임시 작업 디렉터리 생성 $workDir = "$env:TEMPPaintRundllSim" New-Item -ItemType Directory -Path $workDir -Force | Out-Null # 2. USB (workDir로 시뮬레이션됨)에 정상적인 이미지 복사 $imagePath = Join-Path $workDir "innocent.png" Invoke-WebRequest -Uri "https://via.placeholder.com/150" -OutFile $imagePath # 3. Paint를 실행하여 이미지 열기 (정상적인 사용 - 규칙에 여전히 일치) Start-Process -FilePath "$env:WINDIRsystem32mspaint.exe" -ArgumentList "`"$imagePath`"" -PassThru | Out-Null # 4. 악성 DLL 드롭 (시뮬레이션; 실제 페이로드는 은폐됨) $dllPath = Join-Path $workDir "evil.dll" $dllBytes = [byte[]] (0x4D,0x5A,0x90,0x00) # 최소 PE 헤더 자리표 Placeholder [IO.File]::WriteAllBytes($dllPath, $dllBytes) # 5. Rundll32로 DLL 실행 (이것이 악의적인 단계) Start-Process -FilePath "$env:WINDIRsystem32rundll32.exe" ` -ArgumentList "`"$dllPath`,EntryPoint`"" -PassThru | Out-Null # 6. SIEM 수집을 위해 잠시 대기 Write-Host "시뮬레이션 실행됨. 로그가 SIEM에 나타나기까지 약 30초 대기." -
정리 명령어:
# 임시 파일 및 프로세스 제거 Stop-Process -Name mspaint -ErrorAction SilentlyContinue Stop-Process -Name rundll32 -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPPaintRundllSim" -Recurse -Force Write-Host "정리 완료."