WithSecureLabs / chainsaw

Rapidly Search and Hunt through Windows Forensic Artefacts
GNU General Public License v3.0
2.77k stars 251 forks source link

Improve handling of registry hives #185

Open JakePeralta7 opened 4 days ago

JakePeralta7 commented 4 days ago

I would like to have the ability to create rules on registry hives, for example:

---
title: T1547.004 - Winlogon System Shell Changed
group: Persistence
description: Winlogon\Shell changed from explorer.exe
kind: registry_hive
level: critical
status: stable
timestamp: <take the timestamp from the last changed attribute on the registry key>

filter:
  condition: winlogon_shell and not value_data_explorer
  winlogon_shell:
    RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
    RegistryValue: Shell
  value_data_explorer:
    RegistryValueData: explorer.exe

I think that this feature will allow to get a lot value from the registry hives, both in forensics and threat hunting.

alexkornitzer commented 3 days ago

So I have not full checked the format but Chainsaw already supports .hve because it is needed for the shimcache analysis. You can see what the output looks like with chainsaw search '.*' EXAMPLE.hve.

So to write a rule, kind just needs to be set to hve. There is a chance we might need to implement a new container type but that depends on the shape of the data that is being output.

JakePeralta7 commented 2 days ago

I could be missing something, but when I'm running it against the SYSTEM and SOFTWARE hives I get 0 hits. image

alexkornitzer commented 2 days ago

The rule would need to look something like this:

---
title: Example
group: Persistence
description: Example
authors: []
kind: hve
level: critical
status: stable
timestamp: detail.Light.last_key_written_date_and_time.interpreted

fields:
  - name: Path
    to: path
  - name: Values
    to: sub_values

filter:
  condition: example
  example:
    path: '"\ROOT\Classes\*"'
    sub_values:
      - value_name: AlwaysShowExt
        value.String: ''

Which could then be run like so chainsaw hunt -r /tmp/rule.yml /tmp/SOFTWARE.hve, but the values output is quite large:

[+] Loading detection rules from: /tmp/rule.yml
[+] Loaded 1 detection rules
[+] Loading forensic artefacts from: /tmp/cSOFTWARE.hve (extensions: .hve)
[+] Loaded 1 forensic artefacts (73.9 MB)
[+] Hunting: [========================================] 1/1
[+] Group: Persistence
┌─────────────────────┬────────────┬─────────────────┬────────────────────────────────┐
│      timestamp      │ detections │      Path       │             Values             │
├─────────────────────┼────────────┼─────────────────┼────────────────────────────────┤
│ 2019-12-07 09:17:43 │ ‣ Example  │ \ROOT\Classes\* │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: AlwaysShowExt     │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: AlwaysShowExt       │
│                     │            │                 │     interpreted: AlwaysShowExt │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 13                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -40                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 2147483650          │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 0                   │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28854908                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885489 │
│                     │            │                 │ 6                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: ''                   │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: ConflictPrompt    │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: ConflictPrompt      │
│                     │            │                 │     interpreted: ConflictPromp │
│                     │            │                 │ t                              │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 14                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -40                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 1280                │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 152                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28850952            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28855052                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885500 │
│                     │            │                 │ 8                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.ItemType │
│                     │            │                 │ Text;System.Size;System.DateMo │
│                     │            │                 │ dified;System.DateCreated      │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: ContentViewModeFo │
│                     │            │                 │ rBrowse                        │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value: []                  │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: ContentViewModeForB │
│                     │            │                 │ rowse                          │
│                     │            │                 │     interpreted: ContentViewMo │
│                     │            │                 │ deForBrowse                    │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 24                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -48                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 298                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28851160            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28855260                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885520 │
│                     │            │                 │ 8                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:~System.ItemNam │
│                     │            │                 │ eDisplay;System.ItemTypeText;~ │
│                     │            │                 │ System.LayoutPattern.PlaceHold │
│                     │            │                 │ er;~System.LayoutPattern.Place │
│                     │            │                 │ Holder;System.DateModified;Sys │
│                     │            │                 │ tem.Size                       │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: ContentViewModeFo │
│                     │            │                 │ rSearch                        │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value: []                  │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: ContentViewModeForS │
│                     │            │                 │ earch                          │
│                     │            │                 │     interpreted: ContentViewMo │
│                     │            │                 │ deForSearch                    │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 24                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -48                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 290                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28851512            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28855612                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885556 │
│                     │            │                 │ 0                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:~System.ItemNam │
│                     │            │                 │ eDisplay;~System.ItemFolderPat │
│                     │            │                 │ hDisplay;~System.LayoutPattern │
│                     │            │                 │ .PlaceHolder;System.ItemTypeTe │
│                     │            │                 │ xt;System.DateModified;System. │
│                     │            │                 │ Size                           │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: ContentViewModeLa │
│                     │            │                 │ youtPatternForBrowse           │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: ContentViewModeLayo │
│                     │            │                 │ utPatternForBrowse             │
│                     │            │                 │     interpreted: ContentViewMo │
│                     │            │                 │ deLayoutPatternForBrowse       │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 37                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -64                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 12                  │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28851872            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28855972                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885590 │
│                     │            │                 │ 4                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: delta                │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: ContentViewModeLa │
│                     │            │                 │ youtPatternForSearch           │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: ContentViewModeLayo │
│                     │            │                 │ utPatternForSearch             │
│                     │            │                 │     interpreted: ContentViewMo │
│                     │            │                 │ deLayoutPatternForSearch       │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 37                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -64                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 12                  │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28851952            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28856052                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885598 │
│                     │            │                 │ 4                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: delta                │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: ExtendedTileInfo  │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value: []                  │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: ExtendedTileInfo    │
│                     │            │                 │     interpreted: ExtendedTileI │
│                     │            │                 │ nfo                            │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 16                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -40                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 168                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28852008            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28856108                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885606 │
│                     │            │                 │ 4                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.ItemType │
│                     │            │                 │ Text;System.Size;System.DateMo │
│                     │            │                 │ dified;System.OfflineAvailabil │
│                     │            │                 │ ity                            │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: FullDetails       │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: FullDetails         │
│                     │            │                 │     interpreted: FullDetails   │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 11                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -40                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 630                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28852256            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28856356                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885628 │
│                     │            │                 │ 0                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.PropGrou │
│                     │            │                 │ p.FileSystem;System.ItemNameDi │
│                     │            │                 │ splay;System.ItemTypeText;Syst │
│                     │            │                 │ em.ItemFolderPathDisplay;Syste │
│                     │            │                 │ m.Size;System.DateCreated;Syst │
│                     │            │                 │ em.DateModified;System.FileAtt │
│                     │            │                 │ ributes;*System.StorageProvide │
│                     │            │                 │ rState;*System.OfflineAvailabi │
│                     │            │                 │ lity;*System.OfflineStatus;*Sy │
│                     │            │                 │ stem.SharedWith;*System.FileOw │
│                     │            │                 │ ner;*System.ComputerName       │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: InfoTip           │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: InfoTip             │
│                     │            │                 │     interpreted: InfoTip       │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 7                   │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -32                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 847                 │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 114                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28852928            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28857028                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885699 │
│                     │            │                 │ 2                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.ItemType │
│                     │            │                 │ Text;System.Size;System.DateMo │
│                     │            │                 │ dified                         │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: NoRecentDocs      │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: NoRecentDocs        │
│                     │            │                 │     interpreted: NoRecentDocs  │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 12                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -40                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 2147483650          │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 0                   │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28857156                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885714 │
│                     │            │                 │ 4                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: ''                   │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: NoStaticDefaultVe │
│                     │            │                 │ rb                             │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: NoStaticDefaultVerb │
│                     │            │                 │     interpreted: NoStaticDefau │
│                     │            │                 │ ltVerb                         │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 19                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -48                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 2147483650          │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 0                   │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28857196                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885718 │
│                     │            │                 │ 4                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: ''                   │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: PreviewDetails    │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: PreviewDetails      │
│                     │            │                 │     interpreted: PreviewDetail │
│                     │            │                 │ s                              │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 14                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -40                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 847                 │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 308                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28853176            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28857276                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885723 │
│                     │            │                 │ 2                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.DateModi │
│                     │            │                 │ fied;System.Size;System.DateCr │
│                     │            │                 │ eated;*System.StorageProviderS │
│                     │            │                 │ tate;*System.OfflineAvailabili │
│                     │            │                 │ ty;*System.OfflineStatus;*Syst │
│                     │            │                 │ em.SharedWith                  │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: PreviewTitle      │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: PreviewTitle        │
│                     │            │                 │     interpreted: PreviewTitle  │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 12                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -40                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 847                 │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 96                  │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28853528            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28857628                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885758 │
│                     │            │                 │ 4                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.ItemName │
│                     │            │                 │ Display;System.ItemTypeText    │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: QuickTip          │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value: []                  │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: QuickTip            │
│                     │            │                 │     interpreted: QuickTip      │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 8                   │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -32                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 114                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28853664            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28857764                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885772 │
│                     │            │                 │ 8                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.ItemType │
│                     │            │                 │ Text;System.Size;System.DateMo │
│                     │            │                 │ dified                         │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: SetDefaultsFor    │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value:                     │
│                     │            │                 │     - 0                        │
│                     │            │                 │     - 0                        │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: SetDefaultsFor      │
│                     │            │                 │     interpreted: SetDefaultsFo │
│                     │            │                 │ r                              │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 14                  │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -40                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 847                 │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 94                  │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28853824            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28857924                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885788 │
│                     │            │                 │ 0                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.Author;S │
│                     │            │                 │ ystem.Document.DateCreated     │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
│                     │            │                 │ - data_type: REG_SZ            │
│                     │            │                 │  value_parse_warnings: null    │
│                     │            │                 │  value_name: TileInfo          │
│                     │            │                 │  versions: []                  │
│                     │            │                 │  detail:                       │
│                     │            │                 │   Light:                       │
│                     │            │                 │    slack:                      │
│                     │            │                 │     value: []                  │
│                     │            │                 │    signature:                  │
│                     │            │                 │     value: vk                  │
│                     │            │                 │    flags_raw:                  │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    data_type_raw:              │
│                     │            │                 │     value: 1                   │
│                     │            │                 │    value_name:                 │
│                     │            │                 │     value: TileInfo            │
│                     │            │                 │     interpreted: TileInfo      │
│                     │            │                 │    value_name_size:            │
│                     │            │                 │     value: 8                   │
│                     │            │                 │    size:                       │
│                     │            │                 │     value: -32                 │
│                     │            │                 │    padding:                    │
│                     │            │                 │     value: 0                   │
│                     │            │                 │    data_size_raw:              │
│                     │            │                 │     value: 114                 │
│                     │            │                 │    data_offset_relative:       │
│                     │            │                 │     value: 28853960            │
│                     │            │                 │  data_offsets_absolute:        │
│                     │            │                 │  - 28858060                    │
│                     │            │                 │  updated_by_sequence_num: null │
│                     │            │                 │  sequence_num: null            │
│                     │            │                 │  cell_parse_warnings:          │
│                     │            │                 │   logs: null                   │
│                     │            │                 │  file_offset_absolute: 2885802 │
│                     │            │                 │ 4                              │
│                     │            │                 │  value:                        │
│                     │            │                 │   String: prop:System.ItemType │
│                     │            │                 │ Text;System.Size;System.DateMo │
│                     │            │                 │ dified                         │
│                     │            │                 │  flags: CellKeyValueFlags(VALU │
│                     │            │                 │ E_COMP_NAME_ASCII)             │
│                     │            │                 │  state: Allocated              │
└─────────────────────┴────────────┴─────────────────┴────────────────────────────────┘

[+] 1 Detections found on 1 documents

Some sort of container that can pull out matching values from an array of objects would probably need to be implemented to solve the array of values output noise.

JakePeralta7 commented 2 days ago

That will be great.

Also an abstraction for the rules to be able to translate HKEY_LOCAL_MACHINE\SYSTEM in the rule format to SYSTEM hive file (without needing to put '\ROOT\').

Changing the hive files to .hve also feels unnecessary (isn't there a file header or something?)

Thanks for the help!

alexkornitzer commented 2 days ago

That is doable too, but would need some code changes to handle that behind the scenes.

You can bypass having to add .hve by using the command --load-unknown, currently there is no magic support because at the time of writing there was no good portable libmagic solution.