콘텐츠로 이동

hivex

hivex is a powerful library and set of command-line tools for reading, writing, and manipulating Windows Registry hive files. Essential for digital forensics, incident response, and Windows system analysis. Supports extracting artifacts from SAM, SYSTEM, SECURITY, SOFTWARE, and NTUSER.DAT hives.

# Kali Linux (pre-installed)
hivexsh --version

# Manual installation
sudo apt-get update
sudo apt-get install hivex

# From source
git clone git://git.annexia.org/libhivex.git
cd libhivex
./configure
make
sudo make install

# Verify installation
which hivexsh
which hivexml
which hivexregedit
hivexml --help
ToolPurpose
hivexshInteractive shell for registry hive navigation
hivexmlConvert hive to XML format
hivexregeditPython-based registry editor
hivexgetExtract values from registry hives
hivexdiffCompare two registry hives
# Open registry hive
hivexsh -w SAM

# Open system hive
hivexsh -w SYSTEM

# Open user hive
hivexsh -w C:/Users/username/NTUSER.DAT

# Read-only mode (default)
hivexsh SAM

# Show root keys
cd /
ls
CommandPurpose
cd <path>Navigate to registry path
lsList subkeys in current location
cat <key>Display key value
infoShow key metadata
dumpExport current location
quitExit interactive shell
helpDisplay command help
pathShow current path
# Navigate SAM hive
hivexsh SAM
> cd /
> ls
> cd SAM/Domains/Builtin/Users
> ls
> cat Names

# Extract user information
> cd /SAM/Domains/Builtin/Users
> ls
> cd 000001F4
> info
> cat F

# Examine SYSTEM hive
hivexsh SYSTEM
> cd /ControlSet001/Services
> ls
> cd /CurrentVersion
> cat SystemRoot
# Convert hive to XML
hivexml SAM > sam.xml

# Convert SYSTEM hive
hivexml SYSTEM > system.xml

# Convert NTUSER.DAT
hivexml NTUSER.DAT > ntuser.xml

# Pretty print XML
hivexml SAM | xmllint --format - > sam_formatted.xml

# Filter specific keys
hivexml SAM | grep -A 5 "Names"
# Get specific registry value
hivexget SAM '/SAM/Domains/Builtin/Users/Names'

# Extract from SYSTEM hive
hivexget SYSTEM '/ControlSet001/Services/RealTek/ImagePath'

# Get all values in key
hivexget SAM '/SAM/Domains/Builtin'

# Extract with path display
hivexget -p NTUSER.DAT '/Software/Microsoft/Windows/CurrentVersion/Run'
# Compare two SAM files
hivexdiff SAM_old SAM_new

# Compare SYSTEM hives
hivexdiff SYSTEM_jan SYSTEM_feb

# Generate detailed diff report
hivexdiff -v old.hive new.hive > changes.txt

# Show only added keys
hivexdiff SAM_before SAM_after | grep "^<"
# Extract user accounts from SAM
hivexsh SAM
> cd /SAM/Domains/Builtin/Users
> ls
> cd 000001F4
> dump

# Export to XML for analysis
hivexml SAM > sam_analysis.xml

# Search for specific users
hivexml SAM | grep -i "administrator"

# Get user RID mapping
hivexget SAM '/SAM/Domains/Builtin/Users'
# Check last logon times
hivexsh SECURITY
> cd /Policy/PolAdtEv
> cat AuditLogRetentionPeriod

# Extract from SYSTEM hive
hivexsh SYSTEM
> cd /ControlSet001/Control/Session Manager
> ls

# Look for network configuration
> cd /ControlSet001/Services/Tcpip/Parameters
> dump
# List installed software
hivexsh SOFTWARE
> cd /Microsoft/Windows/CurrentVersion/Uninstall
> ls
> cd <GUID>
> cat DisplayName
> cat InstallLocation

# Analyze services
hivexsh SYSTEM
> cd /ControlSet001/Services
> ls
> cd <ServiceName>
> cat ImagePath
> cat Start
# Check Run registry keys
hivexsh SOFTWARE
> cd /Microsoft/Windows/CurrentVersion/Run
> dump

# Check RunOnce
> cd /Microsoft/Windows/CurrentVersion/RunOnce
> dump

# Examine scheduled tasks
> cd /Microsoft/Windows/CurrentVersion/Explorer/Run
> dump

# User-level Run keys
hivexsh NTUSER.DAT
> cd /Software/Microsoft/Windows/CurrentVersion/Run
> dump
# Extract network configuration
hivexsh SYSTEM
> cd /ControlSet001/Services/Tcpip/Interfaces
> ls

# Get network interface details
> cd /<InterfaceGUID>
> cat DhcpIPAddress
> cat DhcpNameServers
> cat Domain

# Extract from registry
hivexml SYSTEM | grep -i "tcpip"
# Analyze USB devices
hivexsh SYSTEM
> cd /ControlSet001/Enum/USB
> ls

# Get device details
> cd /VID_1234&PID_5678
> dump

# Extract from SOFTWARE hive
hivexsh SOFTWARE
> cd /Microsoft/Windows/CurrentVersion/Explorer/MountPoints2
> ls

# User MRU
hivexsh NTUSER.DAT
> cd /Software/Microsoft/Windows/CurrentVersion/Explorer/MountPoints2
> dump
# Chrome extensions
hivexsh NTUSER.DAT
> cd /Software/Google/Chrome/Extensions
> ls
> cd <ExtensionID>
> dump

# Firefox add-ons registry refs
> cd /Software/Mozilla
> ls
> dump

# IE history
> cd /Software/Microsoft/Internet Explorer/TypedURLs
> ls
> dump
#!/bin/bash
# Extract all hives to XML

hives=("SAM" "SYSTEM" "SECURITY" "SOFTWARE" "NTUSER.DAT")

for hive in "${hives[@]}"; do
    if [ -f "$hive" ]; then
        echo "Converting $hive..."
        hivexml "$hive" > "${hive}.xml"
        echo "Saved to ${hive}.xml"
    fi
done

# Verify exports
ls -lh *.xml
#!/bin/bash
# Search all hives for keyword

search_term="$1"

for hive in SAM SYSTEM SOFTWARE SECURITY NTUSER.DAT; do
    if [ -f "$hive" ]; then
        echo "=== Searching $hive for '$search_term' ==="
        hivexml "$hive" 2>/dev/null | grep -i "$search_term"
    fi
done
#!/bin/bash
# Extract specific registry paths from all hives

paths=(
    "/Software/Microsoft/Windows/CurrentVersion/Run"
    "/ControlSet001/Services/RealTek"
    "/SAM/Domains/Builtin/Users"
)

for path in "${paths[@]}"; do
    echo "=== Extracting: $path ==="
    for hive in SAM SYSTEM SOFTWARE NTUSER.DAT; do
        hivexget "$hive" "$path" 2>/dev/null
    done
done
# Find suspicious services
hivexsh SYSTEM
> cd /ControlSet001/Services
> ls
> cd <SuspiciousService>
> cat ImagePath
> cat DisplayName
> cat Start

# Extract all services to file
hivexml SYSTEM | grep -A 10 "<key name=\"Services\"" > services.xml

# Check for unsigned drivers
> cd /ControlSet001/Services/<DriverName>
> cat ImagePath
# Check autorun locations
hivexsh SOFTWARE
> cd /Microsoft/Windows/CurrentVersion/Run
> dump

# Look for suspicious paths
> cd /Microsoft/Windows/CurrentVersion/RunOnce
> dump

# Check shell associations
> cd /Classes/.exe
> cat (Default)

# Examine AppInit_DLLs
> cd /Microsoft/Windows NT/CurrentVersion/Windows
> cat AppInit_DLLs
# Extract modification times
hivexml SAM | grep "timestamp"

# Compare hive versions
hivexdiff SAM_2024-01-01 SAM_2024-01-15

# Track configuration changes
hivexdiff SYSTEM_baseline SYSTEM_current > config_changes.txt

# Generate event timeline
cat config_changes.txt | awk '{print $1, "Registry Change:", $0}'
#!/usr/bin/env python3
import guestfs

# Open hive file
g = guestfs.GuestFS()
h = g.open('SAM')

# List root keys
keys = h.keys('/')
for key in keys:
    print(key)

# Navigate to Users
users_key = h.open('/SAM/Domains/Builtin/Users')
user_list = h.keys()
for user in user_list:
    print(f"User: {user}")

# Close hive
h.close()
#!/usr/bin/env python3
import sys
from hive import hive_open

def extract_registry_path(hive_path, reg_path):
    """Extract registry value from hive"""
    h = hive_open(hive_path)
    
    try:
        value = h.value_utf8(reg_path)
        return value
    except Exception as e:
        print(f"Error: {e}")
        return None
    finally:
        h.close()

# Usage
value = extract_registry_path('SYSTEM', '/ControlSet001/Services/RealTek/ImagePath')
if value:
    print(f"Value: {value}")
# Pretty print hivexml output
hivexml SAM | xmllint --format - > formatted.xml

# Extract specific XML elements
hivexml SYSTEM | xmllint --xpath "//key[@name='Services']" - > services.xml

# Count registry keys
hivexml SAM | grep -c "<key"

# Generate XML report with metadata
hivexml SAM > raw.xml
xsltproc transform.xsl raw.xml > report.html
# Create registry inventory
hivexml SAM | grep "<key name=" | awk -F'"' '{print $2}' > registry_keys.txt

# Generate user list
hivexget SAM '/SAM/Domains/Builtin/Users' > users.txt

# Create change report
hivexdiff before.hive after.hive > changes_report.txt

# Summarize findings
cat changes_report.txt | wc -l
# 1. Extract last logon information
hivexsh SYSTEM
> cd /ControlSet001/Control/TimeZoneInformation
> dump

# 2. Check installed software for suspicious apps
hivexsh SOFTWARE
> cd /Microsoft/Windows/CurrentVersion/Uninstall
> ls

# 3. Find autorun locations
> cd /Microsoft/Windows/CurrentVersion/Run
> dump

# 4. Check services
hivexsh SYSTEM
> cd /ControlSet001/Services
> ls

# 5. Examine network config
> cd /ControlSet001/Services/Tcpip/Parameters
> dump
# 1. Check recent files
hivexsh NTUSER.DAT
> cd /Software/Microsoft/Windows/CurrentVersion/Explorer/RecentDocs
> dump

# 2. Examine search history
> cd /Software/Microsoft/Windows/CurrentVersion/Explorer/TypedPaths
> dump

# 3. Check browser history
> cd /Software/Microsoft/Internet Explorer/TypedURLs
> dump

# 4. Look for cloud sync apps
hivexsh SOFTWARE
> cd /Microsoft/Windows/CurrentVersion/Uninstall
> ls | grep -i "dropbox\|onedrive\|gdrive"
# 1. Extract user accounts
hivexsh SAM
> cd /SAM/Domains/Builtin/Users
> dump

# 2. Get account creation times
> cd /SAM/Domains/Builtin
> dump

# 3. Check group memberships
> cd /SAM/Domains/Builtin/Groups
> dump

# 4. Extract password policy
hivexsh SYSTEM
> cd /ControlSet001/Control/Lsa
> cat MinimumPasswordLength
# Permission denied error
sudo hivexsh /path/to/hive

# Corrupted hive recovery
hivexml corrupted.hive 2>&1 | grep -i "error"

# Extract despite corruption
hivexml --partial corrupted.hive > partial_export.xml

# Verify hive integrity
file SAM
hivexml SAM --check

# Debug XML parsing
hivexml SYSTEM 2>&1 | head -20

# Handle Unicode characters
hivexml NTUSER.DAT | iconv -f UTF-16LE -t UTF-8
  1. Always work with evidence copies, never modify originals
  2. Document registry paths and findings with timestamps
  3. Cross-reference multiple hives for corroboration
  4. Export to XML for detailed analysis and comparison
  5. Use grep and xmllint for pattern searching
  6. Maintain chain of custody documentation
  7. Validate findings with multiple tools
  8. Document registry value meanings and forensic significance
PathPurpose
SAM/Domains/Builtin/UsersLocal user accounts
SYSTEM/ControlSet001/ServicesWindows services
SOFTWARE/Microsoft/Windows/CurrentVersion/RunAutorun programs
SOFTWARE/Microsoft/Windows/CurrentVersion/UninstallInstalled applications
NTUSER.DAT/Software/Microsoft/Windows/CurrentVersion/RunUser autorun programs
SYSTEM/CurrentControlSet/Control/TimeZoneInformationTime zone settings
SYSTEM/ControlSet001/Services/TcpipNetwork configuration

hivex is essential for Windows system forensics, incident response, and detailed registry analysis during investigations.