Malware · behavior
A new hash is not a new behavior.
Repacking changes the file. It does not have to change the run. This note is about which questions survive that, without a sample and without a family name we would be inventing.
What expires overnight
A hash of the file. The icon. The filename in a user's downloads folder. A YARA rule aimed at a unique string the author can delete in one pass. Those are useful the week you get the sample, and they are how a repack gets reported as a "new family" by someone who did not look at the run.
This desk does not publish samples, and it does not publish the steps a packer takes. If the only artifact you have is a hash, say that. Do not promote it to a campaign.
What usually survives
These are questions, not proof. A single hit is a ticket to read the process tree, not a conclusion.
- A signed operating-system binary starting an unsigned child that the vendor does not start. The signature on the parent is the disguise. The child is the tell, and a repack of the child does not put the parent's signature on it.
- A process that is quiet for a long stretch and then opens a network connection, with no user input in between. Delaying the noisy part is a common way to outlast a sandbox that gives up. The delay changes length. The shape, idle then network, is the part worth graphing.
- A module loaded from a directory the user can write, into a process that normally loads from a program directory. Renaming the file does not move it into
System32.
What a dashboard should refuse
A tile that counts "malware detections" by hash will climb when the packer runs and fall when you write a new hash, and you will call both of those progress. Count the three questions above by host, over fourteen days, and annotate the day you deployed a hash rule. If the hash rule moved and the three questions did not, the repack worked and the behavior did not change.
None of this identifies a family. Identification needs a sample in a lab that is not this website, and a write-up that still does not include the build. Until then the honest status is: behavior class, not a name.