공격 지표 알림 중 "알 수 없는 항목"

상황에 따라 공격 지표(IoA) 알림에 다음 이미지와 같이 "알 수 없음" 항목이 표시될 수 있습니다.

이러한 항목은 주로 다음과 같은 시나리오로 인해 발생합니다.

  1. Active Directory(AD) 외부 DNS

    조직에서 Active Directory(AD) 도메인 외부의 DNS 서버를 사용하는 경우 제품이 AD가 아닌 DNS 환경을 지원하지 않는다는 점을 유의해야 합니다. 즉 특정 DNS 쿼리나 요청이 AD에 속하지 않는 외부 DNS 서버를 통해 라우팅되는 경우 Tenable Identity Exposure에서 해당 항목을 식별할 수 없고, 그 결과 IoA 알림 목록에 "알 수 없음" 항목이 발생합니다.

    이러한 경우 그러한 "알 수 없음" 항목은 예상되는 결과이며 Tenable Identity Exposure 내부에 오작동이나 오류가 발생했다는 의미가 아닙니다. 이러한 현상은 완전한 가시성과 추적을 위해 AD 환경 내에서 DNS 레코드를 관리해야 하는 Active Directory와의 통합 특성 때문입니다.

    해결 방법

    • 이러한 "알 수 없음" 항목을 최소화하려면 DNS 인프라가 Identity Exposure 모니터링에 중요한 도메인 및 리소스에 대하여 AD에 완전히 통합되어야 합니다.

    • DNS 쿼리가 AD 외부로 나가야만 하는 경우, Tenable Identity Exposure에서는 이 문제를 해결할 수 없으므로 이러한 "알 수 없음" 항목이 계속 표시된다는 점을 양해해 주십시오.

  1. Tenable Identity Exposure 계정에 대한 권한 부족

    IoA 알림에 "알 수 없음" 항목이 표시되는 또 다른 이유로는 계정 Tenable Identity Exposure에 DNS 항목을 읽을 권한이 부족해서라는 점을 들 수 있습니다. Tenable Identity Exposure 서비스가 Active Directory 내의 DNS 레코드에 적절히 액세스하여 분석하려면 읽기 권한이 필요합니다.

    해결 방법

    이 문제를 해결하려면 Tenable Identity Exposure에서 사용하는 계정에 AD 내의 필요한 DNS 항목에 대한 읽기 액세스 권한이 있어야 합니다. 즉 이 계정에 DNS 서버에 쿼리하고 Identity Exposure 분석을 수행하기 위해 필요한 레코드에 액세스할 권한이 있어야 합니다.

    Tenable Identity Exposure 계정에 적절한 읽기 권한이 없는 경우, 다음 절차를 사용해 해당 권한을 부여하면 됩니다.

    팁: 스크립트에서는 Tenable Identity Exposure에서 사용하는 계정의 이름만 변경하면 됩니다. 읽기 권한은 다음 특성에 포함되어 있습니다.
    • distinguishedName

    • dnsRecord(IP를 포함함)

    • name

    • ntSecurityDescriptor

    • objectCategory

    • objectClass

    • objectGUID

    PowerShell 스크립트를 사용하는 다음과 같은 두 가지 옵션이 있습니다.

    1. Active Directory 관리자에서 컨테이너(dnsZone)에 대한 읽기 권한을 설정하고 모든 하위 dnsNode로 전달합니다(해당하는 경우 권장 해결 방법).

      복사
      Import-Module ActiveDirectory

      $identity = New-Object System.Security.Principal.NTAccount('EXAMPLE\user2') # Service account used by TIE for collect/listening
      $dnsZonePartition = (Get-ADRootDSE).namingContexts | Where-Object { $_ -match "DomainDnsZones" }

      # dnsRecord attribute GUID
      # and Public-Information property set GUID
      $guids = @('e0fa1e69-9b45-11d0-afdd-00c04fd930c9', 'e48d0154-bcf8-11d1-8702-00c04fb96050')

      $dnsZones = Get-ADObject -LDAPFilter "(objectClass=dnsZone)" -SearchBase $dnsZonePartition

      ForEach ($dnsZone in $dnsZones) {
          $acl = Get-Acl -Path "AD:\$dnsZone"

          ForEach ($guid in $guids) {
            $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
              $identity,
              [System.DirectoryServices.ActiveDirectoryRights]::ReadProperty,
              [System.Security.AccessControl.AccessControlType]::Allow,
              [guid]$guid,
              [System.DirectoryServices.ActiveDirectorySecurityInheritance]::All,
              [guid]'e0fa1e8c-9b45-11d0-afdd-00c04fd930c9' # dnsZone GUID
              )

            $acl.AddAccessRule($ace)
          }

          # ntSecurityDescriptor
          $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
              $identity,
              [System.DirectoryServices.ActiveDirectoryRights]::ReadControl,
              [System.Security.AccessControl.AccessControlType]::Allow,
              [System.DirectoryServices.ActiveDirectorySecurityInheritance]::All,
              [guid]'e0fa1e8c-9b45-11d0-afdd-00c04fd930c9' # dnsZone GUID
              )

          $acl.AddAccessRule($ace)
          Set-Acl -Path "AD:\$dnsZone" -AclObject $acl
      }
    2. 기존의 모든 dnsNode 개체(모든 하위 dnsNode에 영향을 미치는 dnsZone)에 대해 읽기 권한을 설정합니다.

      복사
      Import-Module ActiveDirectory

      $identity = New-Object System.Security.Principal.NTAccount('EXAMPLE\user2') # Service account used by TIE for collect/listening
      $dnsZonePartition = (Get-ADRootDSE).namingContexts | Where-Object { $_ -match "DomainDnsZones" }

      # dnsRecord attribute GUID
      # and Public-Information property set GUID
      $guids = @('e0fa1e69-9b45-11d0-afdd-00c04fd930c9', 'e48d0154-bcf8-11d1-8702-00c04fb96050')

      $dnsNodes = Get-ADObject -LDAPFilter "(objectClass=dnsNode)" -SearchBase $dnsZonePartition

      ForEach ($dnsNode in $dnsNodes) {
          $acl = Get-Acl -Path "AD:\$dnsNode"

          ForEach ($guid in $guids) {
            $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
              $identity,
              [System.DirectoryServices.ActiveDirectoryRights]::ReadProperty,
              [System.Security.AccessControl.AccessControlType]::Allow,
              [guid]$guid
              )

            $acl.AddAccessRule($ace)
          }

          # ntSecurityDescriptor
          $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
              $identity,
              [System.DirectoryServices.ActiveDirectoryRights]::ReadControl,
              [System.Security.AccessControl.AccessControlType]::Allow
              )

          $acl.AddAccessRule($ace)
          Set-Acl -Path "AD:\$dnsNode" -AclObject $acl
      }
  2. 지원되는 DNS 파티션

    Tenable Identity Exposure은(는) 활성 DNS 확인을 수행하지 않습니다. 대신 ForestDnsZonesDomainDnsZones 파티션에서 추출한 DNS 항목에 의존합니다. 사용자 지정 DNS 파티션을 사용하는 경우 Tenable Identity Exposure은(는) 해당 파티션을 크롤하거나 DNS 항목을 저장하지 않습니다.