Windows NT 경로 변환 로직을 악용한 취약점 탐지 및 방어 방안
이번에 설명할 취약점은 Windows NT 경로 변환 로직을 악용하여 악성 행위자가 파일, 디렉터리, 및 프로세스를 숨기고 가장하는 루트킷 유사 기능을 사용할 수 있게 합니다. 주요 취약점은 경로 내에 존재하는 점(.)과 공백을 NT 경로로 변환하는 과정에서 제거하면서 발생합니다.
취약점 상세
NT 파일 시스템에서는 파일 이름이나 경로에 포함된 점(.)이나 공백 등을 정상적으로 무시하는 경우가 있습니다. 예를 들어, c:\windows.\system32\svchost.exe
와 같은 경로에서 windows.
뒤의 점이 무시되고, 실제 파일 경로는 c:\windows\system32\svchost.exe
로 처리될 수 있습니다. 이를 악용하면, 악성 코드가 정상적인 시스템 프로세스로 가장하고 탐지를 회피할 수 있습니다.
탐지 및 방어 방안
- 프로세스 모니터링 강화
- 시스템에서 실행 중인 프로세스의 경로를 정확히 파악하고, 파일 경로 변형이 의심되는 프로세스를 모니터링합니다.
- 특히, 사용자 모드 API를 통해 접근하거나 변형된 경로를 사용하는 경우에는 추가 검사를 실시합니다.
- 파일 시스템 감사 정책 설정
- 파일 생성, 수정, 삭제 등의 이벤트를 로깅하여 비정상적인 파일 경로 사용을 추적합니다.
- 이벤트 로그를 분석하여 의심스러운 활동을 탐지합니다.
- API 호출 검사
- Windows API 호출을 모니터링하여, 경로 변환과 관련된 API 사용을 검사합니다.
CreateFile
,OpenFile
과 같은 API 호출 시, 입력된 파일 경로의 이상 여부를 점검합니다.
- Windows API 호출을 모니터링하여, 경로 변환과 관련된 API 사용을 검사합니다.
- 보안 솔루션 업데이트
- 안티바이러스 및 엔드포인트 보안 솔루션을 최신 상태로 유지하고, 경로 변조를 탐지할 수 있는 기능이 포함되어 있는지 확인합니다.
- 사용자 교육 강화
- 사용자들에게 파일 경로 변형과 같은 테크닉을 악용하는 악성코드에 대해 교육하여, 의심스러운 파일이나 프로그램 실행 시 경계심을 갖도록 합니다.
- 포렌식 및 사후 분석
- 의심스러운 프로세스가 발견되었을 때, 시스템의 포렌식 분석을 통해 악성코드의 존재 여부를 파악하고, 시스템 복원 및 재감염 방지 조치를 취합니다.
이러한 방안들을 통해 NT 경로 변환 과정을 악용한 취약점을 효과적으로 관리하고 방어할 수 있습니다. 탐지 및 모니터링을 위한 실무적 접근은 여러 단계로 구성될 수 있습니다. 다음은 Windows 시스템에서 경로 변환을 악용하는 악성 행위를 탐지하기 위한 구체적인 실행 단계입니다.
1. 로깅 및 모니터링 설정
- 이벤트 로깅 활성화: Windows 이벤트 로거를 사용하여 시스템과 보안 관련 이벤트를 포괄적으로 로깅하도록 설정합니다. 특히 파일 시스템, 프로세스 실행, 네트워크 활동에 대한 로깅을 활성화합니다.
- Sysmon 설치 및 구성: Sysmon (System Monitor)을 설치하여 파일 생성, 네트워크 연결, 프로세스 생성 등을 모니터링합니다. Sysmon 구성 파일을 통해 경로 변조가 의심되는 활동을 상세히 로깅하도록 설정할 수 있습니다.
2. 경로 변조 탐지 스크립트 개발
- 스크립트 작성: PowerShell 또는 Python을 사용하여 시스템에서 실행 중인 프로세스의 경로를 주기적으로 검사하는 스크립트를 개발합니다. 이 스크립트는 실행 중인 프로세스 목록을 추출하고, 각 프로세스의 실행 경로에 변조 가능성이 있는 패턴(예: 점, 공백 등)이 있는지 확인합니다.
- 정규 표현식 사용: 경로 이름에서 비정상적인 패턴을 찾기 위해 정규 표현식을 활용합니다. 예를 들어, 점(.) 다음에 곧바로 슬래시(/)나 백슬래시()가 오는 패턴을 찾아내는 식입니다.
3. 자동화된 경보 시스템 구축
- 경보 규칙 설정: 로깅된 데이터에서 이상 행위를 자동으로 탐지할 수 있는 경보 규칙을 설정합니다. 예를 들어, 변경된 경로를 가진 파일이 실행될 때 경보가 작동하도록 설정합니다.
- 경보 통합: 경보 시스템을 기존의 보안 정보 및 이벤트 관리(SIEM) 시스템에 통합하여 모든 경보가 중앙에서 관리되도록 합니다.
4. 정기적인 보안 검토 및 감사
- 정기적인 감사: 주기적으로 시스템을 검사하여 잠재적인 보안 취약점을 식별하고, 필요에 따라 보안 정책을 업데이트합니다.
- 포렌식 도구 활용: 의심스러운 활동이 탐지된 경우, 포렌식 도구를 사용하여 관련 데이터를 수집하고 분석합니다.
5. 훈련 및 응답 프로토콜
- 훈련: 보안 팀과 IT 스태프를 대상으로 정기적인 훈련을 실시하여 새로운 위협에 대응하는 방법을 교육합니다.
- 응답 프로토콜: 보안 위반 사항이 발생했을 때 신속하게 대응할 수 있는 응답 프로토콜을 마련합니다.
이러한 실무 내용은 조직의 보안 체계를 강화하고, 고도화된 위협에 효과적으로 대응할 수 있도록 도와줍니다. 시스템에서 실행 중인 프로세스의 경로를 모니터링하고, 이상 현상을 탐지하기 위한 실행 코드, 명령어, 그리고 자동화 방안을 개발하는 것은 보안을 강화하는 중요한 단계입니다. 아래에 PowerShell을 사용한 간단한 스크립트 예시와 이를 자동화하는 방법을 제공합니다.
PowerShell 스크립트 예시
시스템에서 실행 중인 모든 프로세스의 실행 파일 경로를 검사하여, 경로 변조가 의심되는 패턴을 찾습니다.
# 프로세스 목록을 가져와 각 프로세스의 실행 경로를 검사
Get-Process | ForEach-Object {
try {
$path = $_.Path
if ($path -and $path -match "\.\w+\\") {
Write-Output "Suspicious Path Detected: $path"
}
} catch {
Write-Output "Error accessing path for process: $($_.Name)"
}
}
이 스크립트는 실행 중인 모든 프로세스의 경로를 검사하며, 점 뒤에 바로 문자가 오고 슬래시가 붙은 패턴(예: ".exe")을 찾아 출력합니다. 경로를 정상적으로 액세스할 수 없는 프로세스에 대한 예외 처리도 포함되어 있습니다.
이 스크립트를 정기적으로 실행하고 결과를 로그로 기록하려면, Windows 작업 스케줄러를 사용하는 것이 효과적입니다.
작업 스케줄러 설정 방법
- 스크립트 저장: 위 PowerShell 스크립트를
CheckPaths.ps1
라는 이름으로 저장합니다. - 작업 스케줄러 열기: 시작 메뉴에서 '작업 스케줄러'를 검색하고 실행합니다.
- 기본 작업 생성: '작업 만들기' 또는 '기본 작업 만들기'를 클릭합니다.
- 트리거 설정: 작업을 얼마나 자주 실행할지 설정합니다. 예를 들어, 매일 또는 매시간 실행할 수 있습니다.
- 동작 설정: '동작 추가'를 클릭하고, '프로그램 시작'을 선택한 다음, 스크립트 파일(
CheckPaths.ps1
)의 위치와 함께powershell.exe
를 실행 파일로 지정합니다. - 옵션 구성: 필요에 따라 다양한 조건과 설정을 구성합니다.
이 스크립트와 작업 스케줄러 설정을 통해, 경로 변조를 주기적으로 검사하고 의심스러운 활동을 자동으로 기록할 수 있습니다. 이러한 로그는 보안 감사나 사후 분석에 유용하게 사용될 수 있습니다.
NT 경로 변환 취약점 종합 설명
Windows NT 기반 운영 체제에서 파일 시스템 경로를 변환하는 과정에서 발생하는 취약점을 악용하면 악성 행위자가 파일, 디렉터리, 및 프로세스를 숨기고 가장하는 루트킷 유사 기능을 사용할 수 있습니다. 이 취약점은 파일 경로에 점(.)이나 공백 등의 특수 문자를 포함하여 NT 경로 변환 과정에서 제거되도록 하여 정상적인 시스템 프로세스로 가장하는 방법을 이용합니다.
- 경로 변조: Windows 파일 시스템에서는 파일 경로에 포함된 점(.)이나 공백 등의 특수 문자를 무시하는 경우가 있습니다. 예를 들어,
c:\windows.\system32\svchost.exe
와 같은 경로에서windows.
뒤의 점이 무시되어, 실제 파일 경로는c:\windows\system32\svchost.exe
로 처리될 수 있습니다. 이를 통해 악성 코드는 정상적인 시스템 프로세스로 가장할 수 있습니다. - 경로 예시
c:\windows.\system32\svchost.exe
(악성코드) → 시스템에서c:\windows\system32\svchost.exe
로 인식c:\windows\system32\svchost .exe
(악성코드) → 시스템에서c:\windows\system32\svchost.exe
로 인식
악용 방법
- 파일 및 디렉터리 숨기기: 악성 파일이나 디렉터리의 이름에 점(.)이나 공백을 포함시켜 경로 변환 과정에서 무시되도록 합니다. 이는 탐지 도구가 정상적인 경로로 인식하게 만듭니다.
- 정상 프로세스로 가장: 변조된 경로를 사용하여 실행된 악성 프로세스는 프로세스 모니터링 도구나 작업 관리자가 정상적인 시스템 프로세스로 인식하게 만듭니다.
탐지 및 방어 방안
- 로깅 및 모니터링 강화
- 이벤트 로깅 활성화: Windows 이벤트 로그를 사용하여 시스템과 보안 관련 이벤트를 포괄적으로 로깅합니다.
- Sysmon 설치 및 구성: Sysmon (System Monitor)을 설치하여 파일 생성, 네트워크 연결, 프로세스 생성 등을 모니터링합니다.
- 경로 변조 탐지 스크립트 개발 및 자동화
- PowerShell 스크립트
Get-Process | ForEach-Object { try { $path = $_.Path if ($path -and $path -match "\.\w+\\") { Write-Output "Suspicious Path Detected: $path" } } catch { Write-Output "Error accessing path for process: $($_.Name)" } }
- 작업 스케줄러 설정
- 스크립트를
CheckPaths.ps1
로 저장하고, Windows 작업 스케줄러에서 주기적으로 실행하도록 설정합니다.
- 스크립트를
- PowerShell 스크립트
- API 호출 검사
- Windows API 호출을 모니터링하여, 경로 변환과 관련된 API 사용을 검사합니다.
CreateFile
,OpenFile
등의 API 호출 시 입력된 파일 경로의 이상 여부를 점검합니다.
- Windows API 호출을 모니터링하여, 경로 변환과 관련된 API 사용을 검사합니다.
- 보안 솔루션 업데이트
- 안티바이러스 및 엔드포인트 보안 솔루션을 최신 상태로 유지하고, 경로 변조를 탐지할 수 있는 기능이 포함되어 있는지 확인합니다.
- 사용자 교육 강화
- 사용자들에게 파일 경로 변형과 같은 테크닉을 악용하는 악성코드에 대해 교육하여, 의심스러운 파일이나 프로그램 실행 시 경계심을 갖도록 합니다.
- 정기적인 보안 검토 및 감사
- 주기적으로 시스템을 검사하여 잠재적인 보안 취약점을 식별하고, 필요에 따라 보안 정책을 업데이트합니다.
- 포렌식 및 사후 분석
- 의심스러운 활동이 탐지된 경우, 포렌식 도구를 사용하여 관련 데이터를 수집하고 분석합니다.
NT 경로 변환 취약점은 Windows 파일 시스템에서 경로를 처리하는 방식을 악용하여 악성 코드를 숨기고 정상적인 프로세스로 가장할 수 있게 합니다. 이를 탐지하고 방어하기 위해서는 철저한 로깅 및 모니터링, 스크립트를 통한 경로 검증, 정기적인 보안 검토 및 사용자의 보안 인식 강화가 필요합니다. 이러한 방안들을 통해 시스템 보안을 강화하고 고도화된 위협에 효과적으로 대응할 수 있습니다.