PS-Remote Get MFT

This playbook leverages the Windows built-in PowerShell and WinRM capabilities to connect to a Windows host to acquire and export the MFT (Master File Table) as forensic evidence for further analysis.

Windows Forensics · 12 tasks · 5 inputs · 1 output

Details

IDPS-Remote Get MFT
From Version6.0.0
Tasks12

README

This playbook leverages the Windows built-in PowerShell and WinRM capabilities to connect to a Windows host to acquire and export the MFT (Master File Table) as forensic evidence for further analysis.

Dependencies

This playbook uses the following sub-playbooks, integrations, and scripts.

Sub-playbooks

This playbook does not use any sub-playbooks.

Integrations

This playbook does not use any integrations.

Scripts

  • UnzipFile
  • AddEvidence
  • Set
  • Sleep

Commands

  • ps-remote-export-mft
  • ps-remote-download-file

Playbook Inputs


Name Description Default Value Required
Host A single hostname or IP address from which to export the registry file. For example, testpc01.   Optional
FilePath The path on the hostname on which to create the MFT file. The default path will be c:\mft.mft.
If the AddHostNameToFile input is “true”, the file downloaded to XSOAR will contain the hostname.
c:\mft.mft Optional
VolumeForMft The volume for which to create the MFT. The default is c.
c Optional
ZipMft Specify “true” to zip the MFT file before sending it to XSOAR. true Optional
AddHostNameToFile Specify “true” for the downloaded filename to be comprised of the hostname, or “false” to keep the filename as configured in the FilePath argument. true Optional

Playbook Outputs


Path Description Type
MftDetails The MFT file details. string

Playbook Image


PS-Remote Get MFT

Inputs

  • Host — A single hostname or IP address from which to export the registry file. For example, testpc01.
  • FilePath — The path on the host on which to create the MFT file. The default path will be c:\mft.mft. If you the AddHostNameToFile input os "true", the file downloaded to XSOAR will contain the hostname.
  • VolumeForMft — Specify the volume for which to create the MFT. The default is c.
  • ZipMft — Specify "true" to zip the MFT file before sending it to XSOAR.
  • AddHostNameToFile — Specify "true" for the downloaded filename to contain the hostname, or "false" to keep the file name as configured in the FilePath argument.

Outputs

  • MftDetails — The MFT file details.

Commands used

ps-remote-download-file ps-remote-export-mft setEntriesTags

Flowchart

yes yes yes yes Start Start Is PowerShell Remoting enabled? - IsIntegrationAvailable Is PowerShell Remoting en... IsIntegrationAvailable Done Done Was a host specified? Was a host specified? PS-Remote export MFT - ps-remote-export-mft PS-Remote export MFT ps-remote-export-mft PS-Remote download file - ps-remote-download-file PS-Remote download file ps-remote-download-file Was an MFT file path specified? Was an MFT file path spec... Sleep - Sleep Sleep Sleep Was file zipped? Was file zipped? Unzip file - UnzipFile Unzip file UnzipFile Set MFT details - Set Set MFT details Set Mark and tag MFT - setEntriesTags Mark and tag MFT setEntriesTags
id: PS-Remote Get MFT
version: -1
name: PS-Remote Get MFT
description: This playbook leverages the Windows built-in PowerShell and WinRM capabilities
  to connect to a Windows host to acquire and export the MFT (Master File Table) as
  forensic evidence for further analysis.
starttaskid: "0"
tasks:
  "0":
    id: "0"
    taskid: 2e73d06c-0d0e-4db2-8807-3c8bd9eaaae4
    type: start
    task:
      id: 2e73d06c-0d0e-4db2-8807-3c8bd9eaaae4
      version: -1
      name: ""
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "2"
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 570,
          "y": 80
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "2":
    id: "2"
    taskid: 3d412b04-16a0-4b5f-8b0f-08eb4e46478c
    type: condition
    task:
      id: 3d412b04-16a0-4b5f-8b0f-08eb4e46478c
      version: -1
      name: Is PowerShell Remoting enabled?
      description: Returns 'yes' if the integration brand is available. Otherwise
        returns 'no'.
      scriptName: IsIntegrationAvailable
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "3"
      "yes":
      - "4"
    scriptarguments:
      brandname:
        simple: PowerShell Remoting
    results:
    - brandInstances
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 570,
          "y": 230
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "3":
    id: "3"
    taskid: 664de072-ce7b-4c00-8572-87b23b878bd5
    type: title
    task:
      id: 664de072-ce7b-4c00-8572-87b23b878bd5
      version: -1
      name: Done
      type: title
      iscommand: false
      brand: ""
      description: ''
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 570,
          "y": 2110
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "4":
    id: "4"
    taskid: 671e520f-dba6-49c5-8f9b-bc06dec5fe5e
    type: condition
    task:
      id: 671e520f-dba6-49c5-8f9b-bc06dec5fe5e
      version: -1
      name: Was a host specified?
      type: condition
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#default#':
      - "3"
      "yes":
      - "9"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isNotEmpty
          left:
            value:
              simple: inputs.Host
            iscontext: true
    view: |-
      {
        "position": {
          "x": 330,
          "y": 410
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "5":
    id: "5"
    taskid: f34edc43-9c6f-4489-8fbd-eab2e5f74c14
    type: regular
    task:
      id: f34edc43-9c6f-4489-8fbd-eab2e5f74c14
      version: -1
      name: PS-Remote export MFT
      description: Extract master file table from volume.
      script: '|||ps-remote-export-mft'
      type: regular
      iscommand: true
      brand: ""
    nexttasks:
      '#none#':
      - "10"
    scriptarguments:
      csv_output: {}
      host:
        simple: ${inputs.Host}
      ip: {}
      output_path:
        simple: ${inputs.FilePath}
      volume:
        simple: ${inputs.VolumeForMft}
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 40,
          "y": 840
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "7":
    id: "7"
    taskid: c2b26a24-e487-4505-8ee2-5f4bb7f1f54b
    type: regular
    task:
      id: c2b26a24-e487-4505-8ee2-5f4bb7f1f54b
      version: -1
      name: PS-Remote download file
      description: Download a file from the remote endpoint.
      script: '|||ps-remote-download-file'
      type: regular
      iscommand: true
      brand: ""
    nexttasks:
      '#none#':
      - "11"
    scriptarguments:
      check_hash:
        simple: "true"
      host:
        simple: ${inputs.Host}
      host_prefix:
        simple: ${inputs.AddHostNameToFile}
      ip: {}
      path:
        simple: ${inputs.FilePath}
      zip_file:
        simple: ${inputs.ZipMft}
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 40,
          "y": 1240
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "9":
    id: "9"
    taskid: 6cd97deb-540a-48e6-8959-2af17a02788f
    type: condition
    task:
      id: 6cd97deb-540a-48e6-8959-2af17a02788f
      version: -1
      name: Was an MFT file path specified?
      type: condition
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#default#':
      - "3"
      "yes":
      - "5"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isNotEmpty
          left:
            value:
              simple: inputs.FilePath
            iscontext: true
    view: |-
      {
        "position": {
          "x": 180,
          "y": 620
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "10":
    id: "10"
    taskid: 36ec8072-289b-4b06-8d5b-526be956e01a
    type: regular
    task:
      id: 36ec8072-289b-4b06-8d5b-526be956e01a
      version: -1
      name: Sleep
      description: Sleep for X seconds.
      scriptName: Sleep
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "7"
    scriptarguments:
      seconds:
        simple: "30"
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 40,
          "y": 1040
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "11":
    id: "11"
    taskid: 75a21419-baec-4995-8985-d22747adcf3f
    type: condition
    task:
      id: 75a21419-baec-4995-8985-d22747adcf3f
      version: -1
      name: Was file zipped?
      type: condition
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#default#':
      - "15"
      "yes":
      - "12"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isEqualString
          left:
            value:
              simple: inputs.ZipMft
            iscontext: true
          right:
            value:
              simple: "true"
    view: |-
      {
        "position": {
          "x": 40,
          "y": 1430
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "12":
    id: "12"
    taskid: 0edb3fc1-2f10-40ab-844f-b9132750f91b
    type: regular
    task:
      id: 0edb3fc1-2f10-40ab-844f-b9132750f91b
      version: -1
      name: Unzip file
      description: Unzip a file using the fileName or entryID to specify a file. Unzipped
        files will be loaded to the War Room and names will be put into the context.
      scriptName: UnzipFile
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "15"
    scriptarguments:
      entryID:
        simple: ${File.EntryID}
      fileName: {}
      lastZipFileInWarroom: {}
      password: {}
    separatecontext: false
    view: |-
      {
        "position": {
          "x": -380,
          "y": 1600
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "14":
    id: "14"
    taskid: efe81ba7-8f3c-4fba-8d53-ea617e6f30b3
    type: regular
    task:
      id: efe81ba7-8f3c-4fba-8d53-ea617e6f30b3
      version: -1
      name: Set MFT details
      description: Set a value in context under the key you entered.
      scriptName: Set
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "3"
    scriptarguments:
      append:
        simple: "true"
      key:
        simple: MftDetails
      stringify: {}
      value:
        complex:
          root: File
          filters:
          - - operator: isEqualString
              left:
                value:
                  simple: File.Extension
                iscontext: true
              right:
                value:
                  simple: mft
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 40,
          "y": 1940
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "15":
    id: "15"
    taskid: d7db312d-7719-42d6-8819-d4fa97fb6e37
    type: regular
    task:
      id: d7db312d-7719-42d6-8819-d4fa97fb6e37
      version: -1
      name: Mark and tag MFT
      description: commands.local.cmd.entriesTags.set
      script: Builtin|||setEntriesTags
      type: regular
      iscommand: true
      brand: Builtin
    nexttasks:
      '#none#':
      - "14"
    scriptarguments:
      entryIDs:
        complex:
          root: File
          accessor: EntryID
          transformers:
          - operator: LastArrayElement
      entryTags:
        simple: MFT
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 40,
          "y": 1770
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
view: |-
  {
    "linkLabelsPosition": {},
    "paper": {
      "dimensions": {
        "height": 2095,
        "width": 1330,
        "x": -380,
        "y": 80
      }
    }
  }
inputs:
- key: Host
  value: {}
  required: false
  description: A single hostname or IP address from which to export the registry file. For example, testpc01.
  playbookInputQuery: null
- key: FilePath
  value:
    simple: c:\mft.mft
  required: false
  description: |-
    The path on the host on which to create the MFT file. The default path will be c:\mft.mft.
    If you the AddHostNameToFile input os "true", the file downloaded to XSOAR will contain the hostname.
  playbookInputQuery: null
- key: VolumeForMft
  value:
    simple: c
  required: false
  description: |
    Specify the volume for which to create the MFT. The default is c.
  playbookInputQuery: null
- key: ZipMft
  value:
    simple: "true"
  required: false
  description: Specify "true" to zip the MFT file before sending it to XSOAR.
  playbookInputQuery: null
- key: AddHostNameToFile
  value:
    simple: "true"
  required: false
  description: Specify "true" for the downloaded filename to contain the hostname, or "false" to keep the file name as configured in the FilePath argument.
  playbookInputQuery: null
outputs:
- contextPath: MftDetails
  description: The MFT file details.
  type: string
tests:
- No tests (auto formatted)
fromversion: 6.0.0