获取VHD进行调查 | MSRC博客
在之前的文章中,我们描述了本地/物理取证与云端网络调查之间的差异,以及这如何使云端取证变得具有挑战性。该博客文章介绍了一种创建和维护可分发到多个区域的VM镜像的方法,使您能够在几分钟内部署这台预先准备好的机器用于调查。既然您已经有了工具,本博客将描述如何从被标记为调查对象的VM中获取和访问虚拟硬盘(VHD)。
场景
Azure安全中心已提醒我们,订阅B中资源组ContosoOps内的虚拟机存在潜在安全问题。VM“ContosoWeb”上可能存在一个web shell。我们将遵循正常的分诊和调查流程来确定事件的可信度并收集更多信息。在我们的场景中,我们假设有一个租户包含2个订阅,每个订阅都有几个资源组。我们还假设IT安全团队在整个租户中拥有权限。
获取VM
现在我们希望获取与VM“ContosoWeb”关联的VHD,以便执行分析。为此,我们需要获取“ContosoWeb”的VHD快照,并将此快照传输到一个存储账户中进行调查。
步骤1:快照磁盘
创建快照时,我们需要确定要创建快照的存储容器类型。有几种存储容器可用于此目的:Azure Blobs、Azure Files和Azure Disks。因为我们创建快照是为了调查它,所以我们将选择一个文件容器。这将允许我们通过网络连接到容器并调查文件,而无需多次复制它。
我们可以使用Azure PowerShell Cmdlets来快照磁盘并将其复制到文件中,如下所述:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
######################################### Variables #########################################
$srcSubId = '222222-2222-2222-2222-222222222222' #包含VM的订阅
$destSubId = '111111-1111-1111-1111-111111111111' #包含目标存储账户的订阅
$srcRGName ='ContosoOps' #包含VM的资源组
$destRGName = 'ContosoSecurity' #包含存储账户的资源组
$vmName = 'ContosoWeb' #要创建的快照名称
$srcLocation = 'westus' #要快照的VM的位置/区域
$dstLocation = 'westus' #存储账户的位置/区域
$SnapshotName = 'ContosoWeb-Snapshot' #要创建的快照名称
$destSA = 'contososecuritystorage' #存储账户名称
$destSAContainer = 'investigations' #存储账户内的共享名称
#############################################################################################
####################################### Login to Azure ######################################
Login-AzureRmAccount -ErrorAction Stop
#############################################################################################
############################# Snapshot the OS Disk of target VM #############################
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
#############################################################################################
##################### Copy the snapshot from source to file container #######################
$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
##############################################################################################
|
快照仍将存在于原始资源组中,在本例中为“ContosoOps”。如果您希望保持资源组整洁,可以使用以下命令删除它:
1
|
Remove-AzureRmSnapshot -ResourceGroupName $srcRGName -SnapshotName $SnapshotName -Force
|
最后,我们可以在另一个存储账户、容器或可能在blob存储中制作VHD的第二个副本。要在blob和文件中都制作副本,请在上述脚本的第31行插入以下内容(添加相应的变量):
1
|
Start-AzureStorageBlobCopy -AbsoluteUri $snapSasUrl.AccessSAS -DestContainer $destSAContainer -DestContext $targetStorageContext -DestBlob $SnapshotName -Force
|
现在,我们有了潜在受损机器磁盘的副本,既可以在文件共享中访问和调查,也可以在blob容器中作为备份。我们还删除了原始资源组中的快照。
步骤2:访问包含磁盘的共享
现在我们可以在调查机器上挂载文件共享,访问和分析“ContosoWeb”的VHD。我们可以为Windows、Linux和macOS挂载共享。连接共享的最简单方法之一是使用命令行,如下所示:
1
2
3
|
Windows#> net use * \\contososecuritystorage.file.core.windows.net\investigations /u:contososecuritystorage
Linux#> sudo mount -t cifs \\ contososecuritystorage.file.core.windows.net\investigations\ -o username=contososecuritystorage
|
当提示输入密码时,这是共享所在存储容器的密钥,在本例中为“contososecuritystorage”。我们可以通过编程方式获取此密钥,也可以通过右键单击Azure Storage Explorer中的存储账户并复制主密钥或辅助密钥来获取。
结果
我们已经识别出一个可能受感染的VM,并拍摄了快照并将该快照传输到存储账户中的文件共享。我们现在可以通过网络访问此快照,使用我们在上一篇文章中创建的工具VM中的工具进行调查。在本系列的下一篇博客中,我们将看到如何自动化部分调查过程。
相关博客文章:
可扩展的调查和事件响应基础设施