3.1 KiB
3.1 KiB
name, description, domain, subdomain, tags, version, author, license, mitre_attack, d3fend, references
| name | description | domain | subdomain | tags | version | author | license | mitre_attack | d3fend | references | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hashing-and-fingerprinting-files | Computes cryptographic and fuzzy fingerprints for malware samples: MD5/SHA-1/SHA-256 for exact identity, plus import hashing (imphash), section hashing, and fuzzy hashes (ssdeep, TLSH) to cluster related variants. Activates for requests to hash a sample, compute imphash, or fingerprint files for similarity clustering. | cybersecurity | lab-foundations |
|
1.0.0 | analyst-ai-pack | Apache-2.0 |
|
|
|
Hashing and Fingerprinting Files
When to Use
- You need a stable identity for a sample to look up, deduplicate, or share as an IOC.
- You want to cluster related variants that differ slightly using fuzzy/similarity hashes.
- You are computing imphash or section hashes to pivot across a malware family.
Do not use cryptographic hashes alone to judge similarity — a single byte change yields a completely different SHA-256; use fuzzy/import hashing for relatedness.
Prerequisites
- Python with
hashlib(stdlib); optionallyssdeep/python-tlshfor fuzzy hashes andpefilefor imphash. - Samples handled in the isolated lab per the safe-handling skill.
Safety & Handling
- Treat every sample as live: never execute it during hashing; operate on the inert file only.
- Store samples encrypted/password-protected and reference them by hash, not by original name.
Workflow
Step 1: Compute cryptographic hashes
Generate MD5, SHA-1, and SHA-256. SHA-256 is the canonical identity for sharing; MD5/SHA-1 aid lookups in legacy feeds.
python scripts/analyst.py hash sample.bin
Step 2: Compute structural hashes (PE)
For PE files, compute imphash (hash of the import table) and per-section hashes to pivot across samples built from the same toolchain.
Step 3: Compute fuzzy/similarity hashes
Generate ssdeep and/or TLSH digests so near-duplicates can be matched even when bytes differ.
Step 4: Record and cross-reference
Store all digests with the sample metadata; query threat-intel feeds by SHA-256 and cluster by imphash/fuzzy hash.
Validation
- The same input always yields identical cryptographic hashes (deterministic).
- Imphash matches across known-related samples; fuzzy hashes score high similarity for variants.
- Digests are recorded alongside sample metadata for later pivoting.
Pitfalls
- Treating MD5 collisions as identity proof; use SHA-256 as canonical.
- Assuming different cryptographic hashes mean unrelated files; check fuzzy/import hashes.
- Computing imphash on packed samples (imports are stubbed) and over-trusting the result.
References
- See
references/api-reference.mdfor the hashing helper. - ssdeep and TLSH (linked in frontmatter).