Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

NetCease 및 SAMRi10를 사용한 내부 정찰 보호

NetCease 및 SAMRi10를 사용한 내부 정찰 보호

Aug 12, 2025

내부 정찰이란 무엇인가요?

내부 정찰은 공격자가 네트워크에서 사용자 또는 컴퓨터 계정을 침해한 이후에 가장 먼저 수행하는 단계 중 하나입니다. 다양한 도구나 스크립트를 사용해 정보를 열거하고 수집함으로써, 공격자가 원하는 목표를 달성하기 위해 다음에 어떤 자산을 추가로 침해하려고 시도해야 하는지 식별하는 데 도움이 되는 정보를 얻습니다. 예를 들어, BloodHound 는 일반 사용자에서 관리자로 권한을 상승시키는 데 활용될 수 있는 공격 경로를 파악해 보여줍니다.

거의 모든 일반적인 열거(enumeration) 방법은 권한이 없는 사용자도 실행할 수 있어, 이를 탐지하고 차단하기가 매우 어렵습니다. 이 글에서는 내부 정찰의 두 가지 유형에 대해 방어하기 위해 어떻게 사용하는지 설명하겠습니다:

  • 권한이 없는 사용자의 세션 열거
  • 다음에 대한 쿼리: MS-SAMR protocol

정찰의 유형

침투한 네트워크에 대한 정보를 찾기 위해 공격자는 종종 다음과 같은 유형의 데이터를 나열합니다:

  • 세션 — 누가 어디에 로그인했는지 확인하기 위해
  • 사용자 — 도메인 내 모든 사용자를 이해하기 위해(가능하다면 그룹 멤버십 포함)
  • 그룹 — 도메인 내 모든 그룹을 확인하기 위해(가능하다면 멤버십 포함)
  • Active Directory 액세스 제어 목록(ACL) — 어떤 보안 주체(예: 사용자 및 그룹)가 어떤 리소스에 액세스할 수 있는지 이해하기 위해
  • 로컬 그룹 멤버십 — 해당 장치(컴퓨터)에서 누가 액세스 권한을 가지고 있는지(특히 누가 관리 권한을 가지고 있는지) 확인하기 위해

NetCease로 세션 열거(Session Enumeration) 차단하기

이 블로그 게시물은 세션 열거(session enumeration)에 초점을 맞춥니다. 세션 열거를 통해 공격자는 사용자 계정과 서비스 계정이 어디에 로그인되어 있는지 확인할 수 있습니다. 이러한 정보는 관리자가 로그인되어 있는 호스트처럼, 어떤 호스트를 먼저 손상(침해) 시도할지 우선순위를 정하는 데 도움이 됩니다.

참고: Windows 10의 기본 권한은 공격자가 세션 열거를 수행하지 못하도록 변경되었지만, 그래도 확인해볼 가치가 있습니다.

NetCease 는 NetSessionEnum 메서드 권한을 제어하는 레지스트리 키를 변경하여 세션 열거를 방지하는 데 도움이 되는 짧은 PowerShell 스크립트입니다. (이를 수동으로가 아니라 스크립트를 통해 수행하는 이유는 키인 SrvsvcSessionInfo가 reg 바이너리 값에서만 편집 가능하기 때문입니다.) 다음은 SrvsvcSessionInfo 키의 경로입니다:

경로: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/LanmanServer/DefaultSecurity

SrvsvcSessionInfo 레지스트리 키의 기본값은 NetSessionEnum 메서드의 사용을 허용하는 ACL입니다. 이는 다음에 할당됩니다:

  • Administrators 그룹 구성원
  • Server Operators 그룹 구성원
  • Power Users 그룹 구성원
  • 인증된 사용자

Authenticated Users 권한을 통해 공격자는 손상된 사용자 계정(어떤 계정이든)을 사용하여 세션 정찰을 수행할 수 있습니다.

NetCease 스크립트는 현재 레지스트리 값을 백업한 다음 권한을 수정하여, 다음 ACE가 ACL에 포함되도록 합니다:

  • InteractiveSid
  • ServiceSid
  • BatchSid
  • 관리자
  • 서버 운영자
  • PowerUsers

ACL 확인

보안 디스크립터를 확인하려면 다음 PowerShell 스니펫을 사용할 수 있으며, 이 스니펫은 ACL을 표시합니다:

      #Registry Key Information
$key = "HKLM:SYSTEMCurrentControlSetServicesLanmanServerDefaultSecurity"
$name = "SrvsvcSessionInfo"

#Get the Registry Key and Value
$Reg_Key = Get-Item -Path $key
$BtyeValue = $reg_Key.GetValue($name, $null)

#Create a CommonSecurityDescriptor Object using the Byte Value
$Security_Descriptor = New-Object -TypeName System.Security.AccessControl.CommonSecurityDescriptor -ArgumentList $true, $false, $ByteValue, 0

#Output of the ACL to make it simple to see for document. Use only $Security_Descriptor.DiscretionaryAcl if you want to see the full ACL!
$Security_Descriptor.DiscretionaryAcl | Select-Object SecurityIdentifier, ACEType | Format-Table -AutoSize
      
NetCease 실행 전 출력:

NetCease SAMRi10 1
NetCease 실행 후 출력:

NetCease SAMRi10 2

참고: 잘 알려진 SID에 대한 정보는 다음에서 확인할 수 있습니다여기.

세션 열거 테스트

일반 사용자 계정에 의한 세션 열거(session enumeration)를 차단했는지 쉽게 확인하려면 NetSess Joeware.net의 도구를 사용하면 되지만, SharpHound 등 다른 옵션도 많이 있습니다. 이 작업을 수행할 때는 Administrators, Server Operators 또는 Power Users 그룹의 구성원이 아닌 사용자 계정을 사용하고 있는지 확인하세요.

NetCease 사용 전 출력
      Netsess.exe [Computer]
      

NetCease SAMRi10 3
권한이 없는 계정으로 NetCease 사용 후 출력
      Netsess.exe [Computer]
      

NetCease SAMRi10 4
권한 있는 사용자 계정으로 NetCease 사용 후 출력
      Netsess.exe [Computer]
      

NetCease SAMRi10 5

Remote SAM (SAMR)를 사용한 정찰(Reconnaissance) 차단

공격자는 SAMR 프로토콜을 사용해 정찰(reconnaissance)을 수행할 수 있습니다. SAMR은 원격으로 장치를 조회할 수 있을 뿐 아니라 Active Directory도 조회할 수 있습니다. SAMR을 사용하면 공격자는 관리자 권한이 전혀 없어도, 높은 권한을 가진 그룹과 사용자뿐 아니라 네트워크의 모든 시스템에 대한 로컬 사용자와 그룹을 찾을 수 있습니다. 그런 다음 BloodHound와 같은 도구는 이 정보를 자동으로 공격 경로(attack paths)에 매핑하여 Active Directory를 손상(compromise)시키도록 도울 수 있습니다.

Microsoft는 Windows 10에서 SAMR을 조회할 때의 보호 기능을 도입했으며, 2017년에는 RestrictRemoteSAM 레지스트리 키를 사용해 Windows 7 및 Server 2008 R2까지 이전 운영 체제에 대한 업데이트를 추가했습니다. 이 키는 문자열(REG_SZ)로, Remote SAM 호출을 보호하는 보안 디스크립터(security descriptor)의 SDDL을 포함하게 됩니다.

Windows 10(1607) 및 Windows Server 2016 이후의 기념일 에디션에서는 기본 SDDL이 변경되어, Remote SAM을 조회할 수 있는 대상이 로컬 관리자(local administrators)로만 제한되었습니다.

아래 표는 모든 운영 체제에 대한 요구 사항, 기본 동작, 보호 옵션을 정리한 것입니다:

OS

KB required

Who can query by default

SAMR protection options

Prior to Windows 7 and Server 2008 R2

N/A

Any domain user

None

Windows 7

KB 4012218

Any domain user

Registry Key or Group Policy

Windows Server 2008 R2

KB 4012218

Any domain user

Registry Key or Group Policy

Windows 8.1

KB 4102219

Any domain user

Registry Key or Group Policy

Windows Server 2012

KB 4012220

Any domain user

Registry Key or Group Policy

Windows Server 2012 R2

KB 4012219

Any domain user

Registry Key or Group Policy

Windows 10 1507

KB 4012606

Any domain user

Registry Key or Group Policy

Windows 10 1511

KB 4103198

Any domain user

Registry Key or Group Policy

Windows 10 1607 and later

N/A

Local Administrators

Registry Key or Group Policy

Windows Server 2016 and later

N/A

Local Administrators

Registry Key or Group Policy

RestrictRemoteSAM 레지스트리 키를 설정하는 방법은 세 가지가 있습니다:

  • 레지스트리
  • 그룹 정책
  • SAMRi10 (Samaritan)

각 항목을 하나씩 살펴봅시다.

레지스트리 옵션

RestrictRemoteSAM 레지스트리 키는 관리자가 원하는 대로 업데이트할 수 있습니다:

경로: HKLM/System/CurrentControlSet/Control/Lsa

이름: RestrictRemoteSAM

Windows 10의 기본 값(SDDL): O:SYG:SYD:(A;;RC;;;BA)

SDDL의 구성 요소

NetCease SAMRi10 6

보시다시피 Windows 10에서 기본으로 설정하는 값은 소유자와 기본 그룹에 대해 SYSTEM이며, 내장된 관리자에 대해서는 Read Control 입니다.

적용하기 전에 SDDL 확인하기

변경 사항을 적용하기 전에 SDDL이 올바른지 확인하려면 PowerShell에서 ConvertFrom-SDDLString 명령을 사용해 읽기 쉬운 보안 설명자(security descriptor)로 변환할 수 있습니다.

NetCease SAMRi10 7

그룹 정책 또는 로컬 보안 정책 옵션

그룹 정책과 로컬 보안 정책 설정을 통해 관리자는 이 키를 쉽게 설정할 수 있습니다. 이는 모든 시스템 또는 여러 그룹의 시스템에 대해 동일한 값을 설정하려는 관리자가 있을 때 잘 작동할 수 있습니다(예: 특정 OU의 모든 서버 또는 특정 애플리케이션 서버 집합에 대해 Remote SAM 연결을 허용).

해당 설정에 대한 자세한 내용은 다음과 같습니다:

Policy name

Network access: Restrict clients allowed to make remote calls to SAM


Location

Computer Configuration|Windows Settings|Security Settings|Local Policies|Security Options

Possible values

· Not defined

· Defined, along with the security descriptor for users and groups who are allowed or denied to use SAMRPC to remotely access either the local SAM or Active Directory

SAMRi10 (Samaritan) 옵션

SAMRi10 은 이전 옵션에 비해 주요 이점을 제공하는 PowerShell 스크립트입니다. 즉, 새 로컬 그룹을 만들고 해당 그룹이 Remote SAM 호출을 수행할 수 있도록 그룹에 대한 액세스를 위임합니다. 이를 통해 관리자는 Group Policy Preferences에서 이 기능을 완전히 제어하거나, 필요할 때 계정에 수동으로 권한을 부여할 수 있습니다.

SAMRi10 스크립트는 다음을 수행합니다:

  1. “Remote SAM Users”라는 이름의 로컬 그룹을 생성합니다
  2. 새로 생성된 그룹을 포함하도록 SDDL을 수정합니다:
    • 기본 SDDL이 없으면 기본 제공 관리자(Built-in Administrators)에게 액세스를 허용합니다.
    • SDDL이 이미 존재하면 Remote SAM Users 그룹에 대한 새 ACE를 포함하도록 이를 수정합니다.
SAMRi10 사용의 이점
  • Remote SAM 액세스를 위한 세분화된 권한을 쉽게 부여
  • 최소 권한 액세스를 적용하려는 조직을 지원합니다
  • 로컬 그룹 멤버십 과 함께 사용하여 항목 수준 타기팅을 통해 사용자에게 중앙에서 액세스를 부여할 수 있습니다
  • privileged access management (PAM) 시스템에서 계정 또는 프로세스가 이 특정 권한을 필요로 하는 경우, 동적(필요 시점) 액세스를 손쉽게 부여하는 데 사용할 수 있습니다

Netwrix 솔루션으로 정찰(Reconnaissance)에 대응하기

Netwrix StealthAUDIT에는 공격 경로 분석기가 포함되어 있어 관리자가 Active Directory ACL을 파악할 수 있습니다. 이를 통해 공격자가 악용하기 전에 발생한 보안 공백을 메울 수 있습니다. Netwrix StealthINTERCEPT LDAP 쿼리를 모니터링한 다음 Netwrix StealthDEFEND로 전달할 수 있으며, 해당 제품은 기본 제공 기능만으로 BloodHound를 비롯해 모든 SPN에 대한 쿼리, 그리고 password never expires 속성을 가진 모든 계정에 대한 쿼리 등 여러 정찰 시나리오와 쿼리를 탐지할 수 있습니다.

자주 묻는 질문

내부 정찰이란 무엇이며, 왜 신경 써야 할까요?

내부 정찰은 공격자가 이미 네트워크에 대한 초기 침투를 성공한 뒤, 가치 있는 대상을 찾기 위해 환경을 파악(매핑)하기 시작할 때 발생합니다. 이들은 더 이상 침입을 시도하는 게 아니라, 이미 로그인한 상태에서 주변을 살피고 있습니다. 대부분의 보안 전략이 여기서 한계를 보이는데, 공격자가 합법적인 자격 증명을 사용해 내부에서 자유롭게 이동하는 동안 방화벽·경계 방어에만 집중하기 때문입니다.

현실은 간단합니다. 보이지 않는 것은 보호할 수 없고, 이해하지 못한 것은 통제할 수 없습니다. 내부 정찰은 공격자가 Active Directory 구조에 대해 정보를 수집하고, 고가치 계정을 식별하며, 가장 민감한 데이터로 이어지는 경로를 파악하는 데 필요한 핵심 단계입니다. Data security는 Identity에서 시작하며, 즉 애초에 공격자가 ID 인프라를 열거(enumeration)하지 못하도록 막는 것을 의미합니다.

세션 열거(session enumeration) 보호를 위해 NetCease를 어떻게 구현하나요?

NetCease는 권한이 없는 사용자가 도메인 컨트롤러와 서버에서 활성 세션을 나열하지 못하도록 하여 세션 열거 공격을 차단합니다. 구현은 간단하지만 사전 계획이 필요합니다. 먼저 공식 리포지토리에서 NetCease를 다운로드하고 PowerShell 5.1 이상이 설치된 시스템에서 실행 중인지 확인하세요.

사전 준비:

  • 관리자 권한
  • PowerShell 5.1 이상
  • Windows Server 또는 도메인에 연결된 시스템

이 도구는 세션 열거 요청에 대해 Windows Server 서비스가 어떻게 응답하는지를 제어하는 레지스트리 설정을 수정하여 작동합니다. 보호하려는 각 서버에서 관리 권한으로 NetCease를 실행하되, 먼저 테스트용으로 중요하지 않은 시스템부터 시작하세요. 변경 사항은 재부팅 없이 즉시 적용되지만, 정당한 관리 도구와 모니터링 솔루션이 여전히 정상적으로 작동하는지 반드시 확인해야 합니다.

모범 사례는 환경 전체에 한 번에 배포하기보다 NetCease를 점진적으로 적용하는 것입니다. 먼저 업무에 중요하지 않은 애플리케이션을 호스팅하지 않는 서버부터 시작해 장애 여부를 모니터링한 다음, 도메인 컨트롤러와 기타 고가치 대상까지 확장하세요. 정찰(reconnaissance) 방지는 네트워크를 보이지 않게 만드는 것이 아니라, 공격자가 더 많은 노력을 들이게 하고 탐지 시스템이 악성 활동을 식별할 시간을 더 확보하도록 하는 데 있다는 점을 기억하세요.

SAMRi10과 Group Policy의 SAM 제한에는 어떤 차이가 있나요?

SAMRi10과 Group Policy는 모두 Security Account Manager(SAM) 데이터베이스에 대한 접근을 제한하지만, 적용 수준이 다르고 사용 사례도 다릅니다. SAMRi10은 PowerShell 스크립트로서 개별 머신의 레지스트리 설정을 직접 수정하므로, 특정 시스템에서 SAM 접근 제한을 세밀하게 제어할 수 있습니다.

Group Policy의 SAM 제한은 도메인 수준에서 작동하므로 여러 시스템에 동시에 일관된 정책을 배포할 수 있습니다. Group Policy 방식은 다수의 머신에 대해 동일한 보호가 필요할 때 대규모 배포에 더 적합합니다. SAMRi10은 특정 서버, 테스트 환경 또는 표준 Group Policy 템플릿에 맞지 않는 맞춤 구성이 필요한 상황에 이상적입니다.

기술적 구현 방식도 다릅니다. SAMRi10은 RestrictRemoteSAM 레지스트리 키를 직접 수정하는 반면, Group Policy는 동일한 결과를 얻기 위해 관리 템플릿 시스템을 사용합니다. 두 방법 모두 효과적이지만, SAMRi10은 문제 해결과 사용자 지정 구성에 대해 더 많은 유연성을 제공합니다. 대부분의 조직에서는 하이브리드 방식이 가장 효과적입니다. 도메인 전반의 기본 SAM 제한에는 Group Policy를 사용하고, 추가 강화가 필요한 특정 시스템에는 SAMRi10을 사용하세요.

정찰( reconnaissance ) 방어 조치가 실제로 작동하는지 어떻게 확인하나요?

정찰 방어를 테스트하려면, 실제 공격자의 기법을 시뮬레이션하되 운영을 방해하지 않는 체계적인 접근이 필요합니다. 먼저 비관리자 계정에서 NetSess 같은 도구나 PowerShell의 Get-WmiObject 명령을 사용해 기본 세션 열거 테스트를 진행하세요. NetCease가 정상적으로 작동한다면, 이러한 시도는 실패하거나 제한된 정보만 반환해야 합니다.

SAM 제한의 경우, Linux 시스템에서 enum4linux 또는 rpcclient 같은 도구를 사용하거나, Windows에서 net use 명령을 사용해 Security Account Manager 데이터베이스에 대한 원격 액세스를 테스트하세요. SAM 제한이 올바르게 구성되어 있다면, 허가되지 않은 열거 시도는 차단하면서도 정당한 관리 액세스는 계속 허용해야 합니다.

핵심은 공격자 관점에서 테스트하는 것입니다. 표준 사용자 권한으로 테스트 계정을 만들고, 도메인 열거, 공유(쉐어) 검색, 사용자 계정 목록화 같은 일반적인 정찰 기법을 시도해 보세요. 무엇이 작동하고 무엇이 작동하지 않는지 기록한 다음, 그에 맞춰 방어 조치를 조정합니다. 효과적인 보안은 모든 것을 차단하는 것이 아니라는 점을 기억하세요. 합법적인 업무 기능이 정상적으로 계속 작동하도록 보장하면서, 어떤 정보가 누구에게 제공되는지를 통제하는 것이 목적입니다.

NetCease 및 SAMRi10 변경 사항은 언제 롤백해야 하나요?

롤백 시나리오는 일반적으로 승인된 관리 도구와의 호환성 문제, 예기치 않은 애플리케이션 장애, 또는 테스트 과정에서 발견되지 않았던 비즈니스 프로세스 중단이 포함됩니다. NetCease와 SAMRi10 모두 롤백 옵션을 제공하지만, 각 도구의 롤백 절차는 다릅니다.

NetCease의 롤백은 세션 열거를 제어하는 레지스트리 수정 사항을 되돌리는 것을 포함합니다. 이 도구에는 원래 설정으로 복원하기 위한 매개변수가 포함되어 있지만, 변경을 수행하기 전에 항상 기준 구성(baseline configuration) 을 문서화해야 합니다. 관련 단계와 타이밍을 이해할 수 있도록 먼저 실험실 환경에서 롤백 과정을 테스트하세요.

SAMRi10의 롤백은 여러 레지스트리 키를 포함하며, 경우에 따라 그룹 정책(Group Policy)과의 상호작용이 있을 수 있어 더 복잡합니다. 그룹 정책을 통해 SAM 제한을 구현했다면, 정책 관리 도구를 사용해 변경 사항을 되돌리세요. 레지스트리의 직접 수정인 경우 SAMRi10에는 복원 기능이 포함되어 있지만, 완전한 롤백을 보장하려면 수동 검증이 필수입니다.

가장 좋은 접근 방식은 선제적으로 준비하는 것입니다. 유지보수 시간대에 변경을 적용하고, 롤백 절차를 문서화한 뒤 테스트하며, 적용 후 최소 24~48시간 동안 영향을 받는 시스템을 면밀히 모니터링하세요. 대부분의 호환성 문제는 빠르게 드러나지만, 일부는 특정 비즈니스 프로세스나 시스템 운영 중에만 명확해질 수 있습니다.

공유하기

더 알아보기

저자 소개

Asset Not Found

Joe Dibley

보안 연구원

Netwrix의 보안 연구원이며 Netwrix Security Research Team의 일원입니다. Joe는 Active Directory, Windows 및 다양한 엔터프라이즈 소프트웨어 플랫폼과 기술 분야의 전문가로, 새로운 보안 위험, 복잡한 공격 기법, 그리고 이에 대한 대응(완화)과 탐지 방법을 연구합니다.