Exemplo n.º 1
0
    def testProcess(self, unused_MockAttachDisk, mock_FindDisks,
                    mock_CreateDiskCopy, mock_StartAnalysisVm, mock_AddLabels,
                    mock_GetBootDisk):
        """Tests the collector's Process() function."""
        mock_StartAnalysisVm.return_value = (FAKE_ANALYSIS_VM, None)
        mock_FindDisks.return_value = [FAKE_DISK]
        mock_CreateDiskCopy.return_value = FAKE_DISK_COPY
        FAKE_ANALYSIS_VM.AddLabels = mock_AddLabels
        FAKE_ANALYSIS_VM.GetBootDisk = mock_GetBootDisk
        FAKE_DISK_COPY.AddLabels = mock_AddLabels

        test_state = state.DFTimewolfState(config.Config)
        gcloud_collector = gcloud.GoogleCloudCollector(test_state)
        gcloud_collector.SetUp(
            'test-analysis-project-name',
            'test-target-project-name',
            'fake_incident_id',
            'fake_zone',
            42.0,
            'pd-standard',
            16,
            remote_instance_name='my-owned-instance',
        )
        gcloud_collector.Process()

        mock_CreateDiskCopy.assert_called_with('test-target-project-name',
                                               'test-analysis-project-name',
                                               FAKE_DISK.zone,
                                               disk_name=FAKE_DISK.name)
        forensics_vms = test_state.GetContainers(containers.ForensicsVM)
        forensics_vm = forensics_vms[0]
        self.assertEqual(forensics_vm.name, 'fake-analysis-vm')
        self.assertEqual(forensics_vm.evidence_disk.name, 'disk1-copy')
        mock_AddLabels.assert_has_calls(
            [mock.call({'incident_id': 'fake_incident_id'})])
Exemplo n.º 2
0
    def testProcess(self, unused_mock_attach_disk, mock_delete, mock_snapshot,
                    mock_find_disks, mock_create_disk_from_snapshot,
                    mock_start_analysis_vm):
        """Tests the collector's Process() function."""
        mock_start_analysis_vm.return_value = (FAKE_ANALYSIS_VM, None)
        mock_find_disks.return_value = [
            libcloudforensics.GoogleComputeDisk(FAKE_PROJECT, 'fake_zone',
                                                'disk1')
        ]
        mock_create_disk_from_snapshot.return_value = FAKE_DISK_COPY
        mock_snapshot.return_value = FAKE_SNAPSHOT

        test_state = state.DFTimewolfState(config.Config)
        gcloud_collector = gcloud.GoogleCloudCollector(test_state)
        gcloud_collector.SetUp(
            'test-analysis-project-name',
            'test-target-project-name',
            'fake_incident_id',
            'fake_zone',
            42.0,
            16,
            remote_instance_name='my-owned-instance',
        )
        gcloud_collector.Process()

        mock_snapshot.assert_called_once()
        mock_create_disk_from_snapshot.assert_called_with(
            FAKE_SNAPSHOT, disk_name_prefix='incidentfake_incident_id')
        mock_delete.assert_called_once()
        self.assertEqual(test_state.output[0][0], 'fake-analysis-vm')
        self.assertEqual(test_state.output[0][1].name, 'disk1-copy')
Exemplo n.º 3
0
    def testSetUp(self, mock_start_analysis_vm):
        """Tests that the collector can be initialized."""
        test_state = state.DFTimewolfState(config.Config)
        mock_start_analysis_vm.return_value = (None, None)
        gcloud_collector = gcloud.GoogleCloudCollector(test_state)
        gcloud_collector.SetUp(
            'test-analysis-project-name',
            'test-target-project-name',
            'fake_incident_id',
            'fake_zone',
            42.0,
            16,
            remote_instance_name='my-owned-instance',
        )
        self.assertEqual(test_state.errors, [])
        self.assertEqual(gcloud_collector.disk_names, [])
        self.assertEqual(gcloud_collector.analysis_project.project_id,
                         'test-analysis-project-name')
        self.assertEqual(gcloud_collector.remote_project.project_id,
                         'test-target-project-name')
        self.assertEqual(gcloud_collector.remote_instance_name,
                         'my-owned-instance')
        self.assertEqual(gcloud_collector.all_disks, False)

        mock_start_analysis_vm.assert_called_with(
            'test-analysis-project-name',
            'gcp-forensics-vm-fake_incident_id',
            'fake_zone',
            42.0,
            16,
            attach_disk=None,
            image_family='ubuntu-1804-lts',
            image_project='ubuntu-os-cloud')
Exemplo n.º 4
0
    def testProcess(self, unused_MockAttachDisk, mock_Delete, mock_Snapshot,
                    mock_FindDisks, mock_CreateDiskFromSnapshot,
                    mock_StartAnalysisVm, mock_AddLabels, mock_GetBootDisk):
        """Tests the collector's Process() function."""
        mock_StartAnalysisVm.return_value = (FAKE_ANALYSIS_VM, None)
        mock_FindDisks.return_value = [
            gcp.GoogleComputeDisk(FAKE_PROJECT, 'fake_zone', 'disk1')
        ]
        mock_CreateDiskFromSnapshot.return_value = FAKE_DISK_COPY
        mock_Snapshot.return_value = FAKE_SNAPSHOT
        FAKE_ANALYSIS_VM.AddLabels = mock_AddLabels
        FAKE_ANALYSIS_VM.GetBootDisk = mock_GetBootDisk
        FAKE_DISK_COPY.AddLabels = mock_AddLabels

        test_state = state.DFTimewolfState(config.Config)
        gcloud_collector = gcloud.GoogleCloudCollector(test_state)
        gcloud_collector.SetUp(
            'test-analysis-project-name',
            'test-target-project-name',
            'fake_incident_id',
            'fake_zone',
            42.0,
            16,
            remote_instance_name='my-owned-instance',
        )
        gcloud_collector.Process()

        mock_Snapshot.assert_called_once()
        mock_CreateDiskFromSnapshot.assert_called_with(
            FAKE_SNAPSHOT, disk_name_prefix='incidentfake_incident_id')
        mock_Delete.assert_called_once()
        self.assertEqual(test_state.output[0][0], 'fake-analysis-vm')
        self.assertEqual(test_state.output[0][1].name, 'disk1-copy')
        mock_AddLabels.assert_has_calls(
            [mock.call({'incident_id': 'fake_incident_id'})])
Exemplo n.º 5
0
    def testFindDisksToCopy(self, mock_StartAnalysisVm, mock_get_instance,
                            mock_list_disks, mock_get_disk, mock_GetBootDisk,
                            mock_GoogleComputeBaseResource):
        """Tests the FindDisksToCopy function with different SetUp() calls."""
        test_state = state.DFTimewolfState(config.Config)
        gcloud_collector = gcloud.GoogleCloudCollector(test_state)
        mock_StartAnalysisVm.return_value = (mock_GoogleComputeBaseResource,
                                             None)
        mock_list_disks.return_value = ['bootdisk', 'disk1']
        mock_get_disk.side_effect = ReturnFakeDisk
        mock_get_instance.return_value = FAKE_INSTANCE
        mock_GetBootDisk.return_value = FAKE_BOOT_DISK

        # Nothing is specified, GoogleCloudCollector should collect the instance's
        # boot disk
        gcloud_collector.SetUp(
            'test-analysis-project-name',
            'test-target-project-name',
            'fake_incident_id',
            'fake_zone',
            42.0,
            16,
            remote_instance_name='my-owned-instance',
        )
        disks = gcloud_collector._FindDisksToCopy()
        self.assertEqual(len(disks), 1)
        self.assertEqual(disks[0].name, 'bootdisk')
        mock_GetBootDisk.assert_called_once()

        # Specifying all_disks should return all disks for the instance
        # (see mock_list_disks return value)
        gcloud_collector.SetUp('test-analysis-project-name',
                               'test-target-project-name',
                               'fake_incident_id',
                               'fake_zone',
                               42.0,
                               16,
                               remote_instance_name='my-owned-instance',
                               all_disks=True)
        disks = gcloud_collector._FindDisksToCopy()
        self.assertEqual(len(disks), 2)
        self.assertEqual(disks[0].name, 'bootdisk')
        self.assertEqual(disks[1].name, 'disk1')

        # If a list of disks is passed, that disk only should be returned
        gcloud_collector.SetUp('test-analysis-project-name',
                               'test-target-project-name',
                               'fake_incident_id',
                               'fake_zone',
                               42.0,
                               16,
                               remote_instance_name='my-owned-instance',
                               disk_names='disk1')
        disks = gcloud_collector._FindDisksToCopy()
        self.assertEqual(len(disks), 1)
        self.assertEqual(disks[0].name, 'disk1')
Exemplo n.º 6
0
    def testSetUp(self, mock_StartAnalysisVm, mock_GoogleComputeBaseResource,
                  mock_AddLabels):
        """Tests that the collector can be initialized."""
        test_state = state.DFTimewolfState(config.Config)
        mock_StartAnalysisVm.return_value = (mock_GoogleComputeBaseResource,
                                             None)

        gcloud_collector = gcloud.GoogleCloudCollector(test_state)
        gcloud_collector.SetUp(
            'test-analysis-project-name',
            'test-target-project-name',
            'fake_incident_id',
            'fake_zone',
            'pd-standard',
            42.0,
            16,
            remote_instance_name='my-owned-instance',
        )
        self.assertEqual(test_state.errors, [])
        self.assertEqual(gcloud_collector.disk_names, [])
        self.assertEqual(gcloud_collector.analysis_project.project_id,
                         'test-analysis-project-name')
        self.assertEqual(gcloud_collector.remote_project.project_id,
                         'test-target-project-name')
        self.assertEqual(gcloud_collector.remote_instance_name,
                         'my-owned-instance')
        self.assertEqual(gcloud_collector.all_disks, False)

        mock_StartAnalysisVm.assert_called_with(
            'test-analysis-project-name',
            'gcp-forensics-vm-fake_incident_id',
            'fake_zone',
            'pd-standard',
            42.0,
            16,
            image_family='ubuntu-1804-lts',
            image_project='ubuntu-os-cloud')
        mock_AddLabels.assert_has_calls(
            [mock.call({'incident_id': 'fake_incident_id'})])
Exemplo n.º 7
0
 def setUp(self):
     if hasattr(self, 'error_msg'):
         raise unittest.SkipTest(self.error_msg)
     self.incident_id = 'fake-incident-id'
     self.test_state = state.DFTimewolfState(config.Config)
     self.gcloud_collector = gcloud.GoogleCloudCollector(self.test_state)
Exemplo n.º 8
0
 def testInitialization(self):
     """Tests that the collector can be initialized."""
     test_state = state.DFTimewolfState(config.Config)
     gcloud_collector = gcloud.GoogleCloudCollector(test_state)
     self.assertIsNotNone(gcloud_collector)