Ransomware nedir? Ransomware nasıl yazılır?

Bozkurts1

Üye
8 Şub 2022
153
2
105
Ransomware nedir?

Ransom kelimesinin Türkçe karşılığı fidyedir. Ransomware, bilgisayarlara bulaşan, bilgisayardaki dosyaları kullanılmaz hale getiren, dosyalara erişimi engelleyen, şifreleyen zararlı yazılımlara verilen genel addır. Ransomware Türkçe'ye fidye virüsü olarak çevrilebilir. Ransomware yazılımların büyük çoğunluğunu bilgisayardaki dosyalara şifreler. Bazıları ise sadece bilgisayarı kullanılmaz hale getirir. Son dönemde ortaya çıkan Ransomware yazılımların tamamına yakını bulaştığı sistemedeki tüm belgeleri şifrelemektedir.
Ransomware yazılımlar bilgisayara bulaştığında başta belgeler olmak üzere
Resimler, filmler, veritabanları ve daha pek çok türdeki dosyayı şifreler. Bu dosyalara erişebilmeniz için Ransomware, sizden daha sonra para, fidye talep eder.
Ransomware yazılımlar siber suçlular tarafından sıkça kullanılmaktadır. Fidye genel olarak
Bitcoin denilen dijital para birimi ile istenir. Fidyenin tutarı Ransomware geliştiricisi tarafından belirlenir.





Bir Ransomware Yazalım:

Ransomware başlığı altında örnek bir ransomware de yazalım dedik mantığı kavratmak açısından. Biz Python ile yazacağız Ransomware'mizi. Python bu işler için uygun bir programlama dili değil aslında... Ama mantığı kavratmaya çalıştığımız için söz dizimi, yapısı basit bir dil kullanmak istedik.
Olayın en başında kullanacağımız parola algoritmasını belirlememiz gerekmektedir.
Biz bu örneğimizde
AES kullandık, kısaca AES şifrelemeden bahsedelim.
AES, DES'in bazı bilim adamları tarafından kırılmasıyla 2001 yılında Vincent Rijmen ve Joan Daemen tarafından bulunmuş bir blok şifreleme algoritmasıdır. DES'in zayıf yönlerini kapatmayı hedeflemişlerdir. 128, 192 ve 256 bit olmak üzere üç farklı anahtar uzunluğuna sahiptir. En yaygın kullanılan simetrik şifreleme algoritmasıdır.
Python ile
AES şifreleme yapabilmek için halihazırda birçok modül var. Eğer kripto konusunda bilgeliyseniz ve Python da biliyorsanız kendi modülünüzü yazabilirsiniz... Biz kendimiz yazmayacağız, Richard Moore (GİTHUB: ricmoo) tarafından yazılan "pyaes" modülünü kullanacağız.ç Bu modül kolay kurulumu ve saf python ile yazılmış olması dikkat çekicidir.
Ama "Pycrypto" kütüphanesine göre biraz "
300 kat" yavaş. Zaten bu kadar kolay kurulumu olduğundan 300 kat yavaş zor kurulumu ve fazla gereksinim gerektiren bir yazılım olsaydı elbette orta derece hızda olurdu. Her neyse buradan mantığı anlatmaya çalıştığımız kabul edilebilir bir şey.

Modülün Kurulumu:
Modülü kurmak için öncelikle Python'un kurulu olması gerekiyor. İki yol ile kurma yöntemi vardır. Biri "pip" diğeri de GitHub sayfasından indirip kurmak.

Pip Kullanarak Kurmak:
Pip kullanarak kurmak basit, hem Windows hem de Linux üzerinde.
"pip install (
paketadı)" lütfen paketi kurarken parantezi kaldırıp kurunuz. Linux sistemlerde yönetici hakları ile çalıştırılmalıdır pip.

Linux sistemlerde kurulum:



Resimlerde gördüğünüz gibi bir mesaj aldıysanız, modül kurulmuş demektir. Kullanıma geçmeden önce GitHub üzerinden indirip kurmayı da gösterelim.

GitHub Üzerinden Kurulum:

Modülümüzü GitHub üzerinden kuracaksak, dosyaları indirmeli ardından da "setup" dosyasını kullanıp modülü sisteme kurmalıyız. Eğer bilgisayarımızda git kuruluysa "git clone <url>.git" yazarak bir projeyi bilgisayarımıza indirebiliriz. Ardında "setup" dosyası ile modülü kuracağız.
Modülün GitHub adresi: GitHub - ricmoo/pyaes: Pure-Python implementation of AES block-cipher and common modes of operation.



Ben işlemleri daha önceden yaptığım için git ile yaptığım indirmeden de gördüğünüz üzere "pyaes" halihazırda mevcut olduğu vurgulanmaktadır.
Ben size kodları sıralıyım:
git clone GitHub - ricmoo/pyaes: Pure-Python implementation of AES block-cipher and common modes of operation.
cd pyaes
python2 setup.py install

Zaten bu işlemler basit ileride ki işlemler zor gibi gelebilir ama kesinlikle 1-2 kez deneme yaptıktan sonra size de kolay gelecektir.


Modülün Kullanımı / Testler
Kurulum işleminin ardından basit bir kullanımına bakalım. Ayrıntılı dökümana az önce verdiğim GitHub sayfasından ulaşabilirsiniz.

Anahtar Üretmek:
Anahtar üretmek için Python'un "os" kütüphanesine başvuracağız. Önceden de bahsettiğimiz gibi, AES anahtarı üç farklı uzunlukta olabilir;
128, 192 ve 256 bit. Sekiz bit bir bayt ve bir bayt bir karakter olduğuna göre;


16 karakterli anahtar --> 128 bit anahtar
23 karakterli anahtar --> 192 bit anahtar
32 karakterli anahtar --> 256 bit anahtar

olur. Biz verileri 256 bit uzunluğunda bir anahtar ile şifreleyelim. Bu anahtar 32 karakterli olacak. Az önce de belirttiğim gibi Python'un "os" kütüphanesinden yararlanacağız. Anahtarlarımızı üretelim.

32 bayt/karakterli, 256 bit anahtar üretimi aşağıda ki görselde mevcuttur:
Ama öncelikle konsolumuza "Python2" yazarak başlıyoruz.




Gördüğünüz üzere, 32 karakter uzunluğunda (256 bit) bir anahtar ürettik. Kullandığımız "urandom" fonksiyonu tamamen kriptografik amaçla string üretmek için yazılmış bir fonksiyondur. Hem şifreleme hem de deşifre işlemi için aynı anahtarı kullanacağız, bu yüzden AES simetrik bir şifreleme algoritmasıdır.

Veri Şifreleme

Artık elimizde bir anahtar olduğuna göre, veri şifreleyebiliriz. Az sonra kaynak kodlarda göreceğiniz birkaç yabancı kelime olacak hemen onların anlamlarını verelim bilmeyenler için.

Key --> Anahtar

Encrypt --> Şifreleme
Decrypt --> Deşifre
Plain text --> Açık metin, şifrelenmiş metin
Ciphertext --> Şifreli metin
CTR kipi --> Counter Mode of Operation / Blok şifre çalışma kiplerinden biri.
Birkaç ön bilgiden sonra, denemelerimize başlayalım. Biz AES ile şifreleme yaparken CTR kipi ile çalışacağız. Bu modları merak ediyorsanız,
Wikipedia (Blok şifre çalışma kipleri) üzerinden okuyabilirsiniz.
Önce bir "encrypt" fonksiyonunu yazalım ve şifreleme yapmak için gerekli değişkenleri, modül içeri aktarma olaylarını yapalım.

Şifreleme Fonksiyonu:

Şimdi ise Gedit, Mousepad, Nano vs. fark etmez bir metin düzenleyicisi açın ama sonu ".py" olsun.



NOT: Key bölümüne yazdığım anahtar az önce python'da kodlamasında aldığımız anahtardır ben daha önceden kodladığım için anahtar da değişiklik ola bilir.
Bu yazdığımız fonksiyon ile "encrypt" fonksiyonuna "plaintext" olarak verdiğimiz "Merhaba" verisinin ikinci bir değer olarak verdiğimiz anahtarı kullanarak şifreledi. Şimdi bir de çalıştırıp nasıl bir çıktı vereceğine bakalım.



Gördüğünüz gibi, "merhaba" karakter dizisini şifreledi ve sonucu ekrana yazdırdı. Bu sonucu anahtar olmadan eski haline getirmek çok zordur, 256 bit şifreleme yaptık çünkü. Bir de "decrypt" fonksiyonu yazalım ki, elimizdeki anahtar ile şifrelenmiş mesajı eski haline getirebilelim.

Şimdi ise şifreleme ve deşifre Fonksiyonlarından bahsedelim. Buradan sonra konumuzu bitireceğiz.




Yukarıda ki kodlardan gördüğünüz üzere "Deşifreleme" bu şekilde "encrypt" gönderdiğimiz "merhaba" karakter dizisi şifrelenip "decrypt" fonksiyonuna yöneliyor ve anahtar ile çözülüp tekrar eski haline geri dönüyor şimdi ise komutumuz olan Python2 şifreleme.py komutunu çalıştıralım.



Gördüğünüz üzere yukarıda ki işlemimizde
Deşifre edilmiş: Merhaba diye cevabımızı alıyoruz.

Ve şifreleme de yapmak bu kadar basittir.


Katkılarından dolayı @Zoptik hocama teşekkür ederim
Umarım konuyu beğenmişsinizdir.


















 

Klaxxon

Katılımcı Üye
5 Şub 2022
773
5
783
Güzel konu python da bulunan fernet kütüphanesini incelemeni tavsiye ederim. Eline sağlık
 

KensTagia

Üye
24 Eki 2022
132
1
66
M İ T
Ransomware nedir?

Ransom kelimesinin Türkçe karşılığı fidyedir. Ransomware, bilgisayarlara bulaşan, bilgisayardaki dosyaları kullanılmaz hale getiren, dosyalara erişimi engelleyen, şifreleyen zararlı yazılımlara verilen genel addır. Ransomware Türkçe'ye fidye virüsü olarak çevrilebilir. Ransomware yazılımların büyük çoğunluğunu bilgisayardaki dosyalara şifreler. Bazıları ise sadece bilgisayarı kullanılmaz hale getirir. Son dönemde ortaya çıkan Ransomware yazılımların tamamına yakını bulaştığı sistemedeki tüm belgeleri şifrelemektedir.
Ransomware yazılımlar bilgisayara bulaştığında başta belgeler olmak üzere
Resimler, filmler, veritabanları ve daha pek çok türdeki dosyayı şifreler. Bu dosyalara erişebilmeniz için Ransomware, sizden daha sonra para, fidye talep eder.
Ransomware yazılımlar siber suçlular tarafından sıkça kullanılmaktadır. Fidye genel olarak
Bitcoin denilen dijital para birimi ile istenir. Fidyenin tutarı Ransomware geliştiricisi tarafından belirlenir.





Bir Ransomware Yazalım:

Ransomware başlığı altında örnek bir ransomware de yazalım dedik mantığı kavratmak açısından. Biz Python ile yazacağız Ransomware'mizi. Python bu işler için uygun bir programlama dili değil aslında... Ama mantığı kavratmaya çalıştığımız için söz dizimi, yapısı basit bir dil kullanmak istedik.
Olayın en başında kullanacağımız parola algoritmasını belirlememiz gerekmektedir.
Biz bu örneğimizde
AES kullandık, kısaca AES şifrelemeden bahsedelim.
AES, DES'in bazı bilim adamları tarafından kırılmasıyla 2001 yılında Vincent Rijmen ve Joan Daemen tarafından bulunmuş bir blok şifreleme algoritmasıdır. DES'in zayıf yönlerini kapatmayı hedeflemişlerdir. 128, 192 ve 256 bit olmak üzere üç farklı anahtar uzunluğuna sahiptir. En yaygın kullanılan simetrik şifreleme algoritmasıdır.
Python ile
AES şifreleme yapabilmek için halihazırda birçok modül var. Eğer kripto konusunda bilgeliyseniz ve Python da biliyorsanız kendi modülünüzü yazabilirsiniz... Biz kendimiz yazmayacağız, Richard Moore (GİTHUB: ricmoo) tarafından yazılan "pyaes" modülünü kullanacağız.ç Bu modül kolay kurulumu ve saf python ile yazılmış olması dikkat çekicidir.
Ama "Pycrypto" kütüphanesine göre biraz "
300 kat" yavaş. Zaten bu kadar kolay kurulumu olduğundan 300 kat yavaş zor kurulumu ve fazla gereksinim gerektiren bir yazılım olsaydı elbette orta derece hızda olurdu. Her neyse buradan mantığı anlatmaya çalıştığımız kabul edilebilir bir şey.

Modülün Kurulumu:
Modülü kurmak için öncelikle Python'un kurulu olması gerekiyor. İki yol ile kurma yöntemi vardır. Biri "pip" diğeri de GitHub sayfasından indirip kurmak.

Pip Kullanarak Kurmak:
Pip kullanarak kurmak basit, hem Windows hem de Linux üzerinde.
"pip install (
paketadı)" lütfen paketi kurarken parantezi kaldırıp kurunuz. Linux sistemlerde yönetici hakları ile çalıştırılmalıdır pip.

Linux sistemlerde kurulum:



Resimlerde gördüğünüz gibi bir mesaj aldıysanız, modül kurulmuş demektir. Kullanıma geçmeden önce GitHub üzerinden indirip kurmayı da gösterelim.

GitHub Üzerinden Kurulum:

Modülümüzü GitHub üzerinden kuracaksak, dosyaları indirmeli ardından da "setup" dosyasını kullanıp modülü sisteme kurmalıyız. Eğer bilgisayarımızda git kuruluysa "git clone <url>.git" yazarak bir projeyi bilgisayarımıza indirebiliriz. Ardında "setup" dosyası ile modülü kuracağız.
Modülün GitHub adresi: GitHub - ricmoo/pyaes: Pure-Python implementation of AES block-cipher and common modes of operation.



Ben işlemleri daha önceden yaptığım için git ile yaptığım indirmeden de gördüğünüz üzere "pyaes" halihazırda mevcut olduğu vurgulanmaktadır.
Ben size kodları sıralıyım:
git clone GitHub - ricmoo/pyaes: Pure-Python implementation of AES block-cipher and common modes of operation.
cd pyaes
python2 setup.py install

Zaten bu işlemler basit ileride ki işlemler zor gibi gelebilir ama kesinlikle 1-2 kez deneme yaptıktan sonra size de kolay gelecektir.


Modülün Kullanımı / Testler
Kurulum işleminin ardından basit bir kullanımına bakalım. Ayrıntılı dökümana az önce verdiğim GitHub sayfasından ulaşabilirsiniz.

Anahtar Üretmek:
Anahtar üretmek için Python'un "os" kütüphanesine başvuracağız. Önceden de bahsettiğimiz gibi, AES anahtarı üç farklı uzunlukta olabilir;
128, 192 ve 256 bit. Sekiz bit bir bayt ve bir bayt bir karakter olduğuna göre;


16 karakterli anahtar --> 128 bit anahtar
23 karakterli anahtar --> 192 bit anahtar
32 karakterli anahtar --> 256 bit anahtar

olur. Biz verileri 256 bit uzunluğunda bir anahtar ile şifreleyelim. Bu anahtar 32 karakterli olacak. Az önce de belirttiğim gibi Python'un "os" kütüphanesinden yararlanacağız. Anahtarlarımızı üretelim.

32 bayt/karakterli, 256 bit anahtar üretimi aşağıda ki görselde mevcuttur:
Ama öncelikle konsolumuza "Python2" yazarak başlıyoruz.




Gördüğünüz üzere, 32 karakter uzunluğunda (256 bit) bir anahtar ürettik. Kullandığımız "urandom" fonksiyonu tamamen kriptografik amaçla string üretmek için yazılmış bir fonksiyondur. Hem şifreleme hem de deşifre işlemi için aynı anahtarı kullanacağız, bu yüzden AES simetrik bir şifreleme algoritmasıdır.

Veri Şifreleme

Artık elimizde bir anahtar olduğuna göre, veri şifreleyebiliriz. Az sonra kaynak kodlarda göreceğiniz birkaç yabancı kelime olacak hemen onların anlamlarını verelim bilmeyenler için.

Key --> Anahtar

Encrypt --> Şifreleme
Decrypt --> Deşifre
Plain text --> Açık metin, şifrelenmiş metin
Ciphertext --> Şifreli metin
CTR kipi --> Counter Mode of Operation / Blok şifre çalışma kiplerinden biri.
Birkaç ön bilgiden sonra, denemelerimize başlayalım. Biz AES ile şifreleme yaparken CTR kipi ile çalışacağız. Bu modları merak ediyorsanız,
Wikipedia (Blok şifre çalışma kipleri) üzerinden okuyabilirsiniz.
Önce bir "encrypt" fonksiyonunu yazalım ve şifreleme yapmak için gerekli değişkenleri, modül içeri aktarma olaylarını yapalım.

Şifreleme Fonksiyonu:

Şimdi ise Gedit, Mousepad, Nano vs. fark etmez bir metin düzenleyicisi açın ama sonu ".py" olsun.



NOT: Key bölümüne yazdığım anahtar az önce python'da kodlamasında aldığımız anahtardır ben daha önceden kodladığım için anahtar da değişiklik ola bilir.
Bu yazdığımız fonksiyon ile "encrypt" fonksiyonuna "plaintext" olarak verdiğimiz "Merhaba" verisinin ikinci bir değer olarak verdiğimiz anahtarı kullanarak şifreledi. Şimdi bir de çalıştırıp nasıl bir çıktı vereceğine bakalım.



Gördüğünüz gibi, "merhaba" karakter dizisini şifreledi ve sonucu ekrana yazdırdı. Bu sonucu anahtar olmadan eski haline getirmek çok zordur, 256 bit şifreleme yaptık çünkü. Bir de "decrypt" fonksiyonu yazalım ki, elimizdeki anahtar ile şifrelenmiş mesajı eski haline getirebilelim.

Şimdi ise şifreleme ve deşifre Fonksiyonlarından bahsedelim. Buradan sonra konumuzu bitireceğiz.




Yukarıda ki kodlardan gördüğünüz üzere "Deşifreleme" bu şekilde "encrypt" gönderdiğimiz "merhaba" karakter dizisi şifrelenip "decrypt" fonksiyonuna yöneliyor ve anahtar ile çözülüp tekrar eski haline geri dönüyor şimdi ise komutumuz olan Python2 şifreleme.py komutunu çalıştıralım.



Gördüğünüz üzere yukarıda ki işlemimizde
Deşifre edilmiş: Merhaba diye cevabımızı alıyoruz.

Ve şifreleme de yapmak bu kadar basittir.


Katkılarından dolayı @Zoptik hocama teşekkür ederim
Umarım konuyu beğenmişsinizdir.


















eline sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.