Windows 서버와 Windows 10이 실행되는 환경을 안전하게 보호하는 것은 매우 중요합니다. 특히 오늘날처럼 정교해진 위협 환경에서는 더욱 그렇습니다. 이러한 시스템은 보통 공격에서 사슬의 가장 약한 고리인 사용자을 악용해 침해가 시작되는 첫 번째 대상이 됩니다. 속임수와 소셜 엔지니어링을 통해 공격자는 이러한 시스템에 접근한 뒤, 권한을 가로(측면)로 확장하고 권한을 상승시키려 합니다. 따라서 엔드포인트 및 서버 보안을 강화하면 보안 침해 위험을 크게 줄일 수 있습니다.
엄선한 관련 콘텐츠:
서버를 강화하는 방법 중 하나는 Local Security Authority (LSA)를 보호하는 것입니다. LSA는 메모리 안에 사용자 권한 정보, 비밀번호 해시 및 기타 중요한 정보 조각을 제어하고 관리합니다. 예를 들어 mimikatz 같은 공격자 도구는 이 콘텐츠에 접근해 비밀번호 해시 또는 평문 비밀번호를 수집하는 데 의존합니다. LSA Protection을 사용하도록 설정하면 Windows가 메모리에 저장된 정보를 보다 안전한 방식으로 제어하도록 구성되는데, 특히 보호되지 않은 프로세스가 해당 데이터에 접근하지 못하도록 하기 위함입니다.
보호된 프로세스란?
프로세스는 이 Microsoft documentation에 설명된 기준을 충족하면 보호된 것으로 간주됩니다. 요약하면, 해당 프로세스는 Microsoft의 검증된 서명을 보유하고 Microsoft Security Development Lifecycle (SDL)를 준수하는 경우에 보호된 것으로 간주됩니다. 이 두 가지 기준을 충족하지 못하면, 해당 프로세스는 메모리에서 LSA가 사용 중인 콘텐츠에 접근할 수 없습니다.
LSA Protection을 사용하도록 설정하는 방법
LSA Protection은 레지스트리를 통해 제어되므로 Group Policy를 사용하면 모든 장치에서 쉽게 이를 활성화할 수 있습니다. RunAsPPL 값만 1로 설정하면 됩니다. 이 설정은 레지스트리에서 SYSTEMCurrentControlSetControlLsa 에서 확인할 수 있습니다.
다음 코드는 .reg 파일로 활용하여 이 값을 1로 설정할 수 있습니다:
*Code Block*
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa]
"RunAsPPL"=dword:00000001
*Code Block*
설정 검토
각 서버가 보호되고 있는지 확인하려면 위에서 언급한 레지스트리의 해당 섹션으로 이동하여 값이 1로 설정되어 있는지 확인할 수 있습니다.
다만 작업을 조금 더 쉽게 하기 위해, 아래에 특정 컴퓨터에 대해 원격으로 값을 조회할 수 있는 PowerShell 스크립트를 제공했습니다(올바른 접근 권한이 존재한다고 가정). [SAMPLEHOST] 를 해당 머신의 호스트 이름으로 바꾸기만 하면 됩니다. 이 코드는 0, 1 또는 RunAsPPL 속성이 존재하지 않음을 나타내는 예외를 반환합니다. 1이 반환되지 않으면 대상 컴퓨터에서 해당 설정이 활성화되어 있지 않은 것입니다.
*Code Block*
invoke-command -Computer [SAMPLEHOST] {Get-itempropertyvalue -Path "HKLM:SYSTEMCurrentControlSetControlLsa" -Name RunAsPPL}
*Code Block*
공유하기
더 알아보기
저자 소개
Kevin Joyce
제품 관리 책임자
Netwrix의 제품 관리( Product Management ) 책임자입니다. Kevin은 사이버 보안에 대한 열정이 있으며, 특히 공격자들이 조직 환경을 악용하기 위해 사용하는 전술과 기술을 이해하는 데 집중합니다. Active Directory 및 Windows 보안에 초점을 맞춰 제품 관리 분야에서 8년의 경험을 쌓아, 조직이 Identity, 인프라 및 데이터를 보호할 수 있도록 솔루션을 구축하는 데 그 열정을 더했습니다.