如何获取VHD进行安全调查 | Azure虚拟硬盘取证指南

本文详细介绍了在Azure云环境中获取虚拟硬盘(VHD)进行安全调查的技术流程,包括创建磁盘快照、跨订阅传输数据以及挂载文件共享进行取证分析的具体PowerShell脚本实现。

在之前的文章中,我们描述了本地/物理取证与云取证之间的差异,以及如何创建可分发到多个区域的VM镜像。本文将具体说明如何获取被标记调查的虚拟机(Virtual Machine)关联的虚拟硬盘(VHD)。

调查场景

Azure安全中心警报显示,ContosoOps资源组下的订阅B中名为"ContosoWeb"的虚拟机可能存在Web Shell。我们假设租户包含2个订阅,每个订阅有若干资源组,且IT安全团队具有跨租户权限。

获取虚拟机磁盘

步骤1:创建磁盘快照

我们选择文件容器(File container)存储快照,以便通过网络直接调查而无需多次复制。以下是关键PowerShell脚本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
######################################### 变量定义 #########################################
$srcSubId = '222222-2222-2222-2222-222222222222' # 源订阅ID
$destSubId = '111111-1111-1111-1111-111111111111' # 目标订阅ID
$srcRGName ='ContosoOps' # 包含VM的资源组
$destRGName = 'ContosoSecurity' # 目标存储账户资源组
$vmName = 'ContosoWeb' # 待调查VM名称
$srcLocation = 'westus' # 源区域
$dstLocation = 'westus' # 目标区域
$SnapshotName = 'ContosoWeb-Snapshot' # 快照名称
$destSA = 'contososecuritystorage' # 存储账户名
$destSAContainer = 'investigations' # 存储容器名

############################# 创建OS磁盘快照 #############################
Select-AzureRmSubscription -SubscriptionId $srcSubId
$vm = Get-AzureRmVM -ResourceGroupName $srcRGName -Name $vmName
$disk = Get-AzureRmDisk -ResourceGroupName $srcRGName -DiskName $vm.StorageProfile.OsDisk.Name
$snapshot = New-AzureRmSnapshotConfig -SourceUri $disk.Id -CreateOption Copy -Location $srcLocation
New-AzureRmSnapshot -ResourceGroupName $srcRGName -Snapshot $snapshot -SnapshotName $SnapshotName

##################### 将快照复制到文件容器 #######################
$snapSasUrl = Grant-AzureRmSnapshotAccess -ResourceGroupName $destRGName -SnapshotName $snapshotName -DurationInSecond 7200 -Access Read
Select-AzureRmSubscription -SubscriptionId $srcSubId
$targetStorageContext = (Get-AzureRmStorageAccount -ResourceGroupName $destRGName -Name $destSA).Context
Start-AzureStorageFileCopy -AbsoluteUri $snapSasUrl.AccessSAS -DestShareName $destSAContainer -DestContext $targetStorageContext -DestFilePath $SnapshotName -Force

清理原始快照:

1
Remove-AzureRmSnapshot -ResourceGroupName $srcRGName -SnapshotName $SnapshotName -Force

步骤2:访问包含磁盘的共享

可以通过以下命令挂载文件共享:

Windows:

1
net use * \\contososecuritystorage.file.core.windows.net\investigations /u:contososecuritystorage

Linux:

1
sudo mount -t cifs \\contososecuritystorage.file.core.windows.net\investigations\ -o username=contososecuritystorage

密码为存储容器的访问密钥,可通过Azure Storage Explorer获取。

最终成果

我们成功将潜在感染的VM磁盘快照传输到存储账户的文件共享中,可通过网络直接访问进行分析。下一篇文章将介绍如何自动化部分调查流程。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计