View difference between Paste ID: g1Ee3ZxR and mnvEUNaP
SHOW: | | - or go back to the newest paste.
1
Packed sample: 9cee5522a7ca2bfca7cd3d9daba23e9a30deb6205f56c12045839075f7627297
2
3
Files encrypted w/ Salsa20 using custom-built matrix (x8 calls of RtlRandomEx -> ULONG, skips Position = 0)
4
https://en.wikipedia.org/wiki/Salsa20#Structure
5
6
Keys (technically matrix) encrypted using RSA-1024
7
8
# File Format
9
Length	| Description
10
---------------------
11
?	| Salsa20(FileMatrix, FileContents)
12
0x80	| RSA1024(PublicKey, Blob)
13
0x10	| Checksum(RSA1024(PublicKey, Blob))
14
15
# Blob Format
16
Length	| Description
17
---------------------
18
0x40	| FileMatrix
19
0x08	| OriginalFileSize
20
0x08	| 0xFFFFFFFFFFFFFFFF
21
22
Checksum function with optional compression (only used for ID):
23
1. CRC32 (IEEE polynomial) input x5 times w/ initial value 0xDEADBEEF
24
2. Take each step (except first) and concat into 16 byte buffer
25
3. (Optional) Compress by XORing first half with last half to get 8 bytes, again to get 4 bytes
26
27
Checksum function in Python: https://gist.github.com/Demonslay335/f82b8d9f94040b875ceb2386f9533362
28
29
Victim's ID (used as the extension and in the ransom note filename) is the Checksum (with compression) of the primary MAC address, converted to lowercase hex
30
ID: Checksum(MAC, true)
31
32
Mutex is created by running the Checksum function (without compression) on the malware's own executable
33
Mutex: "Global\" + Checksum(EXE, false)