攻击指标警报中的“未知”条目

在某些情况下,您可能会在攻击指标 (IoA) 警报中遇到“未知”条目,如下图所示:

这些条目通常由以下主要情况引起:

  1. Active Directory (AD) 之外的外部 DNS

    如果您的组织在 Active Directory (AD) 域外部使用 DNS 服务器,请务必注意,该产品不支持非 AD DNS 环境。这意味着当某些 DNS 查询或请求通过不属于 AD 的外部 DNS 服务器路由时,Tenable Identity Exposure 无法进行识别,从而导致 IoA 警报列表中出现“未知”条目。

    在这些情况下,“未知”条目的出现在预料之中,并不表示 Tenable Identity Exposure 内有任何故障或错误。此问题是由于与 Active Directory 集成的性质所致,该集成要求在 AD 环境内管理 DNS 记录,以实现完全的可见性和跟踪。

    解决方案

    • 若要最大程度地减少“未知”条目,请确保将 DNS 基础设施完全集成到 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 服务器和访问执行身份暴露分析所需的记录。

    如果 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 条目。