

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将调查结果映射到 AWS 安全调查结果格式 (ASFF) 的指南
<a name="guidelines-asff-mapping"></a>

使用以下准则将您的调查发现映射到 ASFF。有关每个 ASFF 字段和对象的详细描述，请参阅《AWS Security Hub 用户指南》**中的 [AWS 安全调查发现格式（ASFF）](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html)。

## 识别信息
<a name="asff-identifying-information"></a>

`SchemaVersion` 始终为 `2018-10-08`。

`ProductArn`是 AWS Security Hub CSPM 分配给你的 ARN。

`Id`是 Security Hub CSPM 用来为发现结果编制索引的值。调查发现标识符必须是唯一的，以确保其他调查发现不会被覆盖。如要更新调查发现，应使用相同的标识符重新提交调查发现。

`GeneratorId`可以与离散的逻辑单元相同`Id`或可以指代离散的逻辑单元，例如 Amazon GuardDuty 探测器 ID、 AWS Config 录制器 ID 或 IAM Access Analyzer ID。

## Title 和 Description
<a name="asff-title-description"></a>

`Title` 应包含受影响资源的一些相关信息。`Title` 限 256 个字符，包括空格。

在 `Description` 中添加更多详细信息。`Description` 限 1024 个字符，包括空格。你可以考虑在描述中添加截断。示例如下：

```
"Title": "Instance i-12345678901 is vulnerable to CVE-2019-1234",
"Description": "Instance i-12345678901 is vulnerable to CVE-2019-1234. This vulnerability affects version 1.0.1 of widget-1 and earlier, and can lead to buffer overflow when someone sends a ping.",
```

## 调查发现类型
<a name="asff-finding-types"></a>

您可在 `FindingProviderFields.Types` 中提供您的调查发现类型信息。

`Types` 应符合 [ASFF 的类型分类法](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-type-taxonomy.html)。

如有需要，您可以指定自定义分类器（第三个命名空间）。

## 时间戳
<a name="asff-timestamps"></a>

ASFF 格式包括几个不同的时间戳。

**`CreatedAt` 和 `UpdatedAt`**  
每次为各项调查发现调用 [https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchImportFindings.html](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_BatchImportFindings.html) 时，您必须提交 `CreatedAt` 和 `UpdatedAt`。  
这些值必须与 Python 3.8 中的 ISO8601 格式相匹配。  

```
datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat()
```

**`FirstObservedAt` 和 `LastObservedAt`**  
您系统观察到调查发现时，`FirstObservedAt` 和 `LastObservedAt` 必须匹配。如果您未记录此信息，则无需提交这些时间戳。  
这些值与 Python 3.8 中的 ISO8601 格式相匹配。  

```
datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat()
```

## Severity
<a name="asff-severity"></a>

您可在 `FindingProviderFields.Severity` 对象中提供严重性信息，其应包含以下字段。

**`Original`**  
来自您系统的严重性值。`Original` 可是任何字符串，以便适应您使用的系统。

**`Label`**  
必需的 Security Hub CSPM 指标，表示发现的严重性。允许的值如下：  
+ `INFORMATIONAL`：未发现任何问题。
+ `LOW`：无需针对问题执行任何操作。
+ `MEDIUM`：必须解决问题，但不是紧急的。
+ `HIGH`：必须优先解决问题。
+ `CRITICAL`：必须立即纠正问题,防止造成进一步的伤害。
合规的调查发现应始终将 `Label` 设置为 `INFORMATIONAL`。`INFORMATIONAL`发现的示例包括通过安全检查的 AWS Firewall Manager 结果和经过补救的结果。  
客户通常按严重性对调查发现进行排序，以便为其安全运营团队提供待办事项清单。将调查发现的严重性设置为 `HIGH` 或 `CRITICAL` 时,应保持谨慎。

您的集成文档必须包含您的映射原理。

## Remediation
<a name="asff-remediation"></a>

`Remediation` 有两个要素。这些元素在 Security Hub CSPM 控制台上组合在一起。

`Remediation.Recommendation.Text` 出现在调查发现详细信息的“**修复**”部分。它已超链接到的 `Remediation.Recommendation.Url` 值。

目前，只有来自 Security Hub CSPM 标准、IAM Access Analyzer 和 Firewall Manager 的发现才会显示指向有关如何修复该发现的文档的超链接。

## SourceUrl
<a name="asff-sourceurl"></a>

仅在您可以为特定调查发现提供指向您控制台的深度链接 URL 时，才使用 `SourceUrl`。否则，将其从映射中省略。

Security Hub CSPM 不支持来自该字段的超链接，但它已在 Security Hub CSPM 控制台上公开。

## Malware, Network, Process, ThreatIntelIndicators
<a name="asff-malware-network-process-threatintel"></a>

适用时，可使用`Malware`、`Network`、`Process` 或 `ThreatIntelIndicators`。这些对象中的每一个都在 Security Hub CSPM 控制台中公开。在您发送的调查发现的上下文中使用这些对象。

例如，如果您检测到恶意软件与已知命令和控制节点建立了出站连接，请在 `Resource.Details.AwsEc2Instance` 中提供 EC2 实例的详细信息。为该 EC2 实例提供相关的`Malware`、`Network` 和 `ThreatIntelIndicator` 对象。

### Malware
<a name="asff-malware"></a>

`Malware` 是一个最多可接受五组恶意软件信息的列表。让恶意软件条目与资源和调查发现相关。

每个条目都包含以下字段。

**`Name`**  
恶意软件的名称。该值是最多 64 个字符的字符串。  
`Name` 应来自经过审查的威胁情报或研究人员来源。

**`Path`**  
该恶意软件的路径。该值是最多 512 个字符的字符串。`Path` 应该是 Linux 或 Windows 系统文件路径，但以下情况除外。  
+ 如果您根据 YARA 规则扫描 S3 存储桶或 EFS 共享中的对象，则`Path` 为 S3:// 或 HTTPS 对象路径。
+ 如果您扫描 Git 存储库中的文件，则 `Path` 为 Git URL 或克隆路径。

**`State`**  
恶意软件的状态。容许值为 `OBSERVED` \$1` REMOVAL_FAILED` \$1 `REMOVED`。  
务必在调查发现标题和描述中提供恶意软件发生事件的背景信息。  
例如，如果 `Malware.State` 是 `REMOVED`，则调查发现的标题和描述应反映出您的产品删除了路径上的恶意软件。  
如果 `Malware.State` 是 `OBSERVED`，则调查发现的标题和描述应反映出您的产品在路径上遇到了该恶意软件。

**`Type`**  
指明恶意软件的类型。容许值为 `ADWARE` \$1 `BLENDED_THREAT` \$1 `BOTNET_AGENT` \$1 `COIN_MINER` \$1 `EXPLOIT_KIT` \$1 `KEYLOGGER` \$1 `MACRO` \$1 `POTENTIALLY_UNWANTED` \$1 `SPYWARE` \$1 `RANSOMWARE` \$1 `REMOTE_ACCESS` \$1 `ROOTKIT` \$1 `TROJAN` \$1 `VIRUS` \$1 `WORM`。  
如果您需要其他值`Type`，请联系 Security Hub CSPM 团队。

### Network
<a name="asff-network"></a>

`Network` 是一个单一对象。您不能添加多个与网络相关的详细信息。映射字段时，应使用以下准则。

**目的地和来源信息**  
目的地和来源很容易映射 TCP 或 VPC 流日志或 WAF 日志。在您描述有关攻击调查发现的网络信息时，这些信息用起来就更加困难。  
通常，来源是攻击发起的地方，但也可能是如下所示的其他来源。您应在您的文档中解释来源，还应在调查发现的标题和描述中对其进行说明。  
+ 尽管真正的 DDoS 攻击可能会使用数百万台主机，但对于 EC2 实例的 DDoS 攻击来说，来源就是攻击者。目的地是 EC2 实例的公有 IPv4 地址。`Direction` 为 IN。
+ 对于观察到从 EC2 实例到已知命令和控制节点通信的恶意软件，其来源是 EC2 实例的 IPV4 地址。目的地是命令和控制节点。`Direction` 为 `OUT`。您还需要提供 `Malware` 和 `ThreatIntelIndicators`。

**`Protocol`**  
除非您可以提供特定的协议，否则 `Protocol` 始终映射到互联网编号分配机构（IANA）的注册名称。您应该始终使用它并提供端口信息。  
`Protocol` 独立于来源和目的地信息。只在有意义的时候才提供它。

**`Direction`**  
`Direction`始终是相对于 AWS 网络边界的。  
+ `IN`表示它正在进入 AWS （VPC、服务）。
+ `OUT`表示它正在退出 AWS 网络边界。

### Process
<a name="asff-process"></a>

`Process` 是一个单一对象。您不能添加多个与流程相关的详细信息。映射字段时，应使用以下准则。

**`Name`**  
`Name` 应与可执行文件的名称相匹配。最多可接受 64 个字符。

****`Path`****  
`Path` 是可执行进程的文件路径。最多可接受 512 个字符。

**`Pid`, `ParentPid`**  
`Pid` 和 `ParentPid` 应与 Linux 进程标识符（PID）或 Windows 事件 ID 一致。为区分差异，可使用 EC2 亚马逊机器映像（AMI）来提供信息。客户或许可以区分 Windows 和 Linux。

**时间戳（`LaunchedAt` 和 `TerminatedAt`）**  
如果您无法可靠地检索此信息，并且该信息不能精确到毫秒级，请不要提供该信息。  
如果客户依赖时间戳进行取证调查，那么没有时间戳比使用错误的时间戳要好。

### ThreatIntelIndicators
<a name="asff-threatintelindicators"></a>

`ThreatIntelIndicators` 接受最多五个威胁情报对象的数组。

每个条目的 `Type` 都根据特定威胁的情况而定。容许值为 `DOMAIN` \$1 `EMAIL_ADDRESS` \$1 `HASH_MD5` \$1 `HASH_SHA1` \$1 `HASH_SHA256` \$1 `HASH_SHA512` \$1 `IPV4_ADDRESS` \$1 `IPV6_ADDRESS` \$1 `MUTEX` \$1 `PROCESS` \$1 `URL`。

下面是一些如何映射威胁情报指标的示例：
+ 您找到了一个与 Cobalt Strike 相关的进程。您知道该进程，这是你从 FireEye的博客中学到的。

  将 `Type` 设置为 `PROCESS`。还要为进程创建一个 `Process` 对象。
+ 您的邮件过滤器发现有人从已知恶意域发送了一个经过散列计算的著名数据包。

  创建两个 `ThreatIntelIndicator` 对象。一个对象用于 `DOMAIN`。另一个是用于 `HASH_SHA1`。
+ 你发现了带有 Yara 规则的恶意软件（Loki、Fenrir、Awss3、）。VirusScan BinaryAlert

  创建两个 `ThreatIntelIndicator` 对象。一个是针对恶意软件。另一个是用于 `HASH_SHA1`。

## Resources
<a name="asff-resources"></a>

`Resources` 应尽可能使用我们提供的资源类型和详细信息字段。Security Hub CSPM 不断为 ASFF 添加新资源。如需获取 ASFF 的每月变动日志，请联系 securityhub-partners@amazon.com。

如果建模资源类型的详细信息字段中无法容纳信息，您可将其余详细信息映射到 `Details.Other`。

对于未在 ASFF 中建模的资源，可将 `Type` 设置为 `Other`。有关详细信息，请使用 `Details.Other`。

您也可以将`Other`资源类型用于非AWS 调查结果。

## ProductFields
<a name="asff-productfields"></a>

仅在您无法为 `Resources` 使用其他辅助字段或描述性对象（例如`ThreatIntelIndicators`、`Network` 或 `Malware`）时才使用 `ProductFields`。

如果您使用了 `ProductFields`，则必须为此决定提供严谨的理由。

## 合规
<a name="asff-compliance"></a>

仅在您的调查发现与合规性有关时，才使用 `Compliance`。

Security Hub CSPM 使用`Compliance`它根据控制生成的调查结果。

Firewall Manager 将 `Compliance` 用于其调查发现，这是因为它们与合规性相关。

## 受限字段
<a name="asff-restricted-fields"></a>

这些字段旨在让客户跟踪他们对调查发现的调查。

切勿映射到这些字段或对象。
+ `Note`
+ `UserDefinedFields`
+ `VerificationState`
+ `Workflow`

可将这些字段映射到 `FindingProviderFields` 对象中的字段。切勿映射到顶级字段。
+ `Confidence`：仅在您的服务具有类似功能，或您百分百相信您的调查发现时，才包括置信度分数（0-99）。
+ `Criticality`：关键性分数（0-99）旨在表示调查发现相关资源的重要性。
+ `RelatedFindings`：仅在您可以跟踪与同一资源或调查发现类型相关的调查发现时，才提供相关的调查发现。要识别相关调查结果，您必须参考 Security Hub CSPM 中已有的查找结果标识符。