The malware is created in Golang and uses no anti-analysis components as string encryption, function names stripping, etc.
After execution, it creates an ID which is later used as the key from the array of Latin alphabet characters and numbers using a standard Golang rand function.
Then the malware identifies hard drives present on the infected system and collects a list of directories and files, excluding the Windows and Program Files folders.
After that, the ransomware note is created as a “read_me .html” file and dropped to the user’s Desktop folder. The note contains the victim ID and the actor’s contact emails on the ProtonMail domain; emails are hard-coded.
The malware utilizes a strange ineffective encryption workflow – it creates a copies of the initial sample and runs them as separate processes for each file encrypted.
Copy names are generated using Golang GUID library functions.
To encrypt victims’ data, HermeticRansom relies on a list of hard-coded files types.
Files are encrypted using the AES algorithm with the generated key. Then the AES key is encrypted with RSA-OAEP.
OAEP is parameterized with a hash function that is used as a random oracle.
The hashing function is SHA-256.
The RSA public key is hard-coded as a base64 blob. After decoding the key in JSON format, it is converted to a byte array:
Once files are encrypted, HermeticRansom appends a “.encrypted” extension to each.
Given the circumstances under which HermeticRansom appeared, including the date, time and victims’ geo-locations, analysts have moderate confidence it is connected with HermeticWiper’s general objectives – destroying or otherwise making Windows systems unusable due to data loss.