BG Turk

Bilgi Güvenliğinin Türkçesi

Kategoriler

14 Temmuz 2023 Cuma

Tersine mühendislik yöntemiyle malware analiz ve cracking


Software Reverse Engineering (Reversing), tersine mühendislik yaklaşımıyla bir uygulamanın yapıtaşlarını ortaya çıkarmaya yarar. Bu yaklaşım bir programı illegal yolla kullanmak (Cracking) için kullanılabileceği gibi şüpheli bir programın analiz edilip zararlı olup olmadığını veya etkilerinin ne olduğunun araştırılması içinde kullanılır. Bu yazıda Reversing işlemiyle zararlı bir yazılımın yapıtaşları, davranışları ve sisteme nasıl etki edeceği incelenecektir. Örnek uygulama olarak içine zararlı kod enjekte edilmiş ve AV lere yakalanmayan putty programı reversing yöntemiyle incelenecek ve içindeki zararlı kod parçası analiz edilecek.


Tersine mühendislik, bir aygıtın, objenin veya sistemin; yapısının, işlevinin veya çalışmasının, çıkarımcı bir akıl yürütme analiziyle keşfedilmesi işlemidir. Makine veya mekanik alet, elektronik komponent, yazılım programı gibi parçalarına ayrılması ve çalışma prensiplerinin detaylı şekilde analizini içerir. [1] Bu yazıda bir yazılımın tersine mühendisliği (Software Reverse Engineering) anlatılacak ve bu tanımı Reversing olarak kısaltacağız.

Reversing işleminde mantık; Sabit olan sistem üzerinde gerçekleşen farklı yazılımların gösterdiği farklılıkları anlamaktır. İşletim sistemi sabittir değişkenlik göstermez hep aynı işlemleri yaparak ilerler ancak işletim sistemi üzerinde çalışan uygulamalar farklılık gösterir. Eğer biz işletim sisteminin çalışma yapısını çok iyi bilirsek uygulamaların oluşturduğu farklılıkları çok daha rahat gözlemleyebiliriz. Bu yüzden uygulamaların analizi için sisteminin çalışma mantığını oluşturan CPU, RAM, Register gibi yapıları, komut işletme adımlarını ve bu adımlar sırasında bu yapıların konuşurken kullandığı dil olan Assembly yapısına değineceğiz.



İntel CPU’larda Komut işleme diyagramı:




Komut işleme diyagramındaki adımları biraz daha yakından tanıyalım;

1: Komutu Getir (Fetch):

    - Bellekten bir sonraki komutu getir ve yazmaça koy.

    - Program sayacını (program counter – PC) bir sonraki komutu gösterecek şekilde güncelle.

2: Komutu çözümle (Decode):

    - Getirilen komutun tipini ve işlevini belirle.

3: İşlenenleri getir (fetch operands):

    - Komut bellekteki bir sözlüğü kullanıyorsa sözcüğün nereden getirileceğini belirle, sözcüğü getir ve CPU yazmacına (register) koy.

4: Komutu işlet (Execute):

    - Yazmaçlardaki işlenenler üzerinde komutu işlet ve sonucu yazmaça koy.

5: Sonucu sakla (Store output):

    - Çıktı bir bellek işleneniyse belleğe yaz.

6: Bir sonraki komutu işletmek için 1. Adıma git




Fetch the code, program çalıştırıldığında belleğin belirli alanlarına programla ilgili veriler yüklenir, Bilgisayarın mimarisine göre farklı olacak şekilde programda yapılan herhangi bir işlem bellekte programla ilgili bu kısımların aktif olmasını sağlar, burada yapılan işlemle ilgili bölümün aktif olması işlemi “fetch the code” işlemidir.

PC, yazmaç, bellek gibi bir yapıdır, küçük ve çok hızlıdır. İçinde komutların adresleri bulunur. PC birimi, sırada hangi komut işletilecekse o komutla ilgili adresi taşır ve sıradaki komutun getirilmesini sağlar ve decode işlemiyle komut çözülür.

Fetch operands işlemiyle sıradaki komutun nereden alınacağı belirlenir ve oradan alıp CPU nun içindeki ilgili yazmaça (register) yazılır. Daha sonra yazmaçtaki bu komutlar çalıştırılır. Bu işlem sonucunda çıktılar belleğe veya tekrar işleme alınacaksa yazmaça gönderilir.

ALU (Aritmetic Logical Unit), iki sayının toplamı, mantıksal karşılaştırılması gibi işlemler burada yapılır. Veriler işletilmeden önce yazmaçlara yazılır, buradan ALU ya gelen veriler burada işleme tabi tutulur. Çıkan sonuç tekrar işlem görecekse yazmaça veya belleğe kaydedilir.

Bu şekilde döngüsel bir işlem gerçekleşir.

X86 Assembly temel komutlar


Sırasıyla ilk önce komut, yazmaç ve parametre yazılır, her işlemciye ait mimari farklıdır, işlemci bir dökümantasyon sağlar. 

intel işlemciye ait assembly program yapısını daha iyi anlamak için aşağıdaki örnekleri inceleyebiliriz.

Örnek:

mov eax,100h ;EAX=100h → aex a 100h ata

add eax,400h ;EAX=500h → eax a 400h ekle

sub eax,200h ;EAX=300h → eax tan 200h çıkar


Aşağıda reversing sırasında işimize yarayacak komutlar kısa örnekle açıklanmıştır.

1- MOV: 
Bu komutla bir yazmaçtan bir yazmaca kopyalama yapılabileceği gibi bir yazmaca sabit bir değer de yazılabilir.

Örnek:

mov ah,5

mov al,bh

Birincisinde “ah” yazmacına 5 yazılır. İkincisinde ise “bh” yazmacındaki veri “al” yazmacına kopyalanır. Mov komutuyla yalnızca eşit kapasitedeki yazmaçlar arasında kopyalama yapılabilir. Yani sonu x ile bitenler arasında veya sonu h veya l ile bitenler arasında kopyalama yapılabilir.

2- INC: 
Bir yazmaçtaki değeri bir artırır.

Örnek:

inc al

Burada al'nin önceki değerini 5 sayarsak artık al'nin değeri 6 olur.

3- MUL: 
Belirtilen yazmaçtaki değerle al yazmacındaki değeri çarpıp sonucu ax yazmacına koyar.

Örnek:

mul cl

Burada al yazmacındaki değerle cl yazmacındaki değer çarpılıp sonuç ax yazmacına konur.

4- ADD: 
Herhangi bir yazmaçtaki değerle herhangi sabit bir değer veya yazmaçtaki değeri toplayıp sonuç ilk belirtilen yazmaca koyulur.

Örnek:

add al,1

add al,cl

Birincisinde al ile 1 toplanıp sonuç al'ye atanır. Yani sonuçta al bir artırılmış olur. İkincisinde ise al ile cl toplanıp sonuç al'ye atanır. Yani sonuçta al'ye cl eklenmiş olur. Add komutu argüman olarak yalnızca eşit kapasitedeki yazmaçları alabilir. Örneğin aşağıdaki komut hatalıdır.

add ax,cl

5- SUB: 
Herhangi bir yazmaçtan sabit bir değeri ya da başka bir yazmaçtaki değeri çıkarır.

Örnek:

sub al,10

sub ax,cx

Birincisinde al yazmacındaki değer 10 eksilir. İkincisinde de ax yazmacındaki değer cx'teki değer kadar eksilir. Sub komutu da tıpkı add gibi eşit kapasiteli yazmaçlarla işlem yapar.

6- LOOP: 
Komutun argümanındaki ofset adresi ile loop komutunun bulunduğu satır arasında cx'in değeri kadar gidip gelinir. Yani bir döngü kurulmuş olur.

Örnek:

14F7:100 mov cx,5

14F7:103 inc al

14F7:105 add dl,al

14F7:107 loop 103

14F7:109 int 20

Burada 5 kere 103. ofset ile 107. ofset arasında gidip gelinir. Bütün yazmaçların ilk değerlerini 0 sayarsak sonuçta al'nin değeri 5, dl'nin değeri de f olur. Burada şunu gözden kaçırmamanızı öneriyorum: loop komutunun kapsama alanına giren komutlar henüz loop komutunun bulunduğu satıra gelinmeden doğal olarak bir kez çalıştırılır. Bu çalıştırılma bu bahsettiğimiz gidip gelmeye dâhildir. Öbür türlü söz konusu satırlar toplam 6 kere işletilmiş olurdu.

7- CMP: 
İki yazmaçtaki değeri ya da bir yazmaçtaki değerle sabit bir değeri kıyaslar. Tek başına bir işe yaramaz.

Örnek:

14F7:100 cmp al,bl

14F7:102 cmp bl,5

14F7:104 cmp 5,bl

14F7:106 cmp ax,bl

Bu komutlardan ilk ikisi çalışacak. Son ikisiyse çalışmayacak. Çünkü üçüncüsünde ilk argüman sabit bir değer. Sonuncusunda da farklı boyutlardaki yazmaçlar kıyaslanmış.

8- JG, JL, JE, JGE, JLE: 
Kendisinden hemen önce gelen cmp komutuna göre programın akışını belirli bir ofsete yönlendirirler.

Örnek:

14F7:100 cmp al,bl

14F7:102 jl 10e

Burada eğer al'deki değer bl'den küçükse akış 10e ofsetine yönledirilecektir. Değilse program normal şekilde akışına devam edecektir. Tahmin edebileceğiniz gibi jl küçüktür anlamına geliyor. Mantığı bununla tamamen aynı olan farklı komutlar da vardır. Bunlar

jg → büyüktür.

jl → küçüktür.

je → eşittir.

jge → büyük eşittir.

jle → küçük eşittir.

9- JMP: 
Belirli bir ofsete atlamaya yarar.

Örnek:

14F7:100 jmp 110

Burada programın akışı 110. ofsete yönlendirilir.

Küçük bir kodun

10- CALL: Komutu ilgili bölümden çağırır




GDB ile örnek uygulama




Yalnızca iki değişkenden oluşan örnek bir kodun assembly dilinde nasıl görüntüleneceğini inceleyelim. Komut işleme diyagramını yukardaki kod üzerinden düşünecek olursak; program iki değişkeni içeriyor, bu iki değişken bellekte farklı hücrelere yerleşecek. Fetch ile ilgili bölümden değer çağırılacak ve pc ile counter miktarı arttırılacak, Decode işlemi ile komut çözümlenecek ve ALU ya gönderilecek, aynı anda yazmaçlar bellekteki ilgili bölümü okuyacak ve ALU ya iletecek. ALU biriminde toplanan değerler execute edilerek komut işletilecek ve bir çıktı oluşacak. Daha sonra bu çıktı belleğe yada tekrar işlenecekse yazmaç bölümüne yazılacak. Tüm bu işlemlerin mantığını anlarsak programın debug işlemini daha rahat okuyabiliriz.



Programı derledikten sonra GDB programında disassembe main komutuyla kodun main kısmının bellekte adreslendiği bölümler ve bu bölümler için yapılan mov, sub, call gibi işlemleri görüyoruz. Burada dikkat etmek gereken 11. Satırda callc parametresiyle printf komutu bellekten çağırılıyor, buradan anlıyoruz ki değişkenler bu satırdan sonra ekrana yazılıyor.

Debug işlemi yapılırken break point koyarsak program bu satıra kadar çalışır ve durur böylece buraya kadar ki alınan parametreleri daha rahat inceleyebiliriz. Örnek olarak yazdığımız programcıkta break main komutuyla main kısmına break koyuyoruz, program buraya kadar çalışıyor ve duruyor ve bize var1 değerini gösteriyor.

Print var1 dediğimizde bize “0” değerini gösteriyor, buradan var1 değerinin henüz yazmaça yazılmadığını anlıyoruz, next dediğimizde var2 değerini gösteriyor, bu aşamada print var1 dediğimizde bize var1 değeri olarak 3434 rakamını veriyor, böylece var1 değerinin yazmaça yazıldığını anlıyoruz, next ile ilerlediğimizde program tamamlanıyor ve istediğimiz değerleri gösteriyor.



Örneğin, print &var1 komutuyla birinci değişkenimizin hangi adreste olduğunu görebiliyoruz. Bu komut modifiye etmek yada görüntülemek isteyeceğimiz kısmın bellekteki tam yerini bulmak için bize yardımcı olacaktır.

OLLYDBG ile dinamik malware analiz örnek uygulama:

Öncelikle msfvenom programıyla putty programının içine belirlediğimiz ip adresine reverse channel açacak bir kodu yerleştiriyoruz ve putty programını yeni haliyle derliyoruz.



Oluşturduğumuz putty programını Ollydbg ile açıp şüpheli kodların bellekte hangi bölümde adreslendiğini bulmaya çalışıyoruz, ilk başta samanlıkta iğne aramak gibi olsada doğru ipuçları yakaladıktan sonra doğru aramalar yaparak sonuca ulaşabiliriz.

Netstat ile bağlantıları izlediğimizde 192.168.93.128 ip sine bağlantı kurulduğunu görüyoruz, ancak ip adresiyle ilgili bölüm gözükmüyor, bunun yerine programın sitringlerini log dosyasına yazdıktan sonra, log dosyasında zararlı bir koda ait bir ipucu bulmaya çalışıyoruz.



Username isimli bir string bulduk, bu bölümün nerde adreslendiğini ollydbg programıyla bulmak gerekiyor.



Username stringinin bulunduğu kısımda breakpoint koyma, sırayla çalıştırma gibi işlemler yaparak bizim için gerekli olan analizleri yapabiliriz. Bu sayede virüsün nelere etki ettiğini anlayıp önlemlerimizi alabiliriz.





Kaynaklar:

19 Mart 2021 Cuma

Kriptografik saldırılar



Kripto analiz, bir şifreleme sistemini veya sadece şifreli mesajı inceleyerek, şifreli mesajın açık halini elde etmeye çalışan kriptoloji disiplinidir. Kripto analiz çalışması sırasında kripto analiz yapan kişinin elinde çoğu zaman çok az bilgi vardır. Değişik durumlar aşağıda listelenmiştir:


• Şifrelenmiş mesaj analizi: Kripto analiz yapan kişinin elinde sadece şifreli bir mesaj vardır. Mesajın açık hali ile ilgili hiçbir ipucu yoktur.

• Tam bir açık mesajın analizi: Kripto analiz yapan kişinin elinde bütün bir mesajın hem açık hali hem de şifreli hali vardır.

• Yarım olarak elde edilmiş açık mesajın analizi: Kripto analiz yapan kişi bir mesajın açık halinin belirli bir kısmına ve şifreli halinin tamamına sahiptir.

• İstenen açık mesajın şifrelenmiş halinin analizi: Kripto analiz yapan kişi istediği açık mesajın şifreli halini elde edebilmektedir. Bu şifrelemeyi yapan cihazın veya yazılımın çalışan bir kopyasına sahip olarak veya şifrelemeyi yapan sistemi fark edilmeden kullanmakla mümkün olur.

• Şifreli mesajın şifreleme algoritması bilinerek analizi: Kripto analiz yapan kişi elindeki şifreli mesajın hangi yöntemle şifrelendiğini bilmektedir.

Kullanılan kripto analiz yöntemleri ise aşağıda listelenmiştir:

• Kaba kuvvet yöntemi: Veri güvenliği konusundaki en basit saldırı yöntemidir. Bir işin çok zeki olmayan ama güce dayalı çözümü misali her zaman en uzun çözüm yoludur ve her zaman bir çözme ümidi vardır. Basitçe bir şifreli metnin alabileceği bütün anahtar ihtimalleri veya bütün açık metin ihtimallerinin denenmesine dayanır. Örneğin en basit şifreleme yöntemlerinden Kaydırma Şifrelemesini (Shift Cipher) ele alalım. Anahtar uzunluğu en fazla 26 olabilir (Türkçe için 29). Kaba kuvvet saldırısında bütün bu ihtimaller denenir. Yani şifreli metin 1 kaydırılır ve okunmaya çalışılır, 2 kaydırılır ve okunmaya çalışılır ve böylece anlamlı bir metin çıkana kadar bütün ihtimaller denenir. Kaydırma şifrelemesi gibi ilkel bir şifrelemede hemen sonuç veren oldukça etkili bu yöntem gelişmiş ve karmaşık saldırılarda giderek başarısız hale gelmektedir.

Ayrıca şifre çözme işlemleri sırasında sözlük saldırısı (Dictionary Attack) kullanılarak hızlandırmak mümkündür. Bu yöntemle anahtarın alabileceği ihtimallerin azaltılması ve mümkün olan bir küçük kümenin denemesi mümkündür [21].

• Diferansiyel kripto analiz: Bu yöntem kabaca sistemi bir kara kutu yaklaşımı (Black Box) ile ele alır ve bu kutunun girişindeki değişimlerin, çıktıdaki etkilerini inceleyerek sistemi analiz etmeye çalışır. Şifreleme sistemlerinin tamamı bu yöntemden etkilenir. Elbette her sistemin etkilenmesi ve bu yönteme karşı olan zafiyeti farklı seviyelerdedir. Kabaca bütün blok şifreleme yöntemlerinin (Block Ciphers), akış şifrelemelerinin (Stream Ciphers) ve özetleme fonksiyonlarının (Hash Functions) bu yönteme karşı zafiyeti olduğunu söylemek yeterlidir [22].

 Geniş Kapsamlı Anahtar Arama Saldırısı: Geniş kapsamlı bir anahtar arama saldırısı ya da kaba kuvvet saldırısında, kripto analist (şifre çözme uzmanı) bir şifreli metnin şifresini çözmek için tüm olası anahtarları dener ve kanıtlanabilir güvenli şifreler dışında herhangi bir şifreleme algoritmasına karşı kullanılabilir bir şifre pratik olarak mümkün değildir. Anahtar boyutu n bit ise, saldırganın en kötü durumda bir şifreyi ve 2n anahtarlarını kırmak için ortalama 2n-1 anahtar denemesi gerekir. Bir saldırının hesaplama karmaşıklığı (2n) olarak ifade edilir.

Yan Kanal Analiz Saldırısı: Yan kanal Analizi (SCA), yürütme sırasında fiziksel olarak gözlemlenebilir özelliklere dayalı saldırıları ifade eder. Yan Kanal Analizi için kullanılan genel fiziksel özelliklerden bazıları, yürütülmesi, elektromanyetik radyasyon, ısı yayması ve sistemin gürültüsü için gereken Güç ve Mikroişlemci zamanıdır. Bu özelliklere dayanarak Yan-Kanal Analizlerinin en bilinenleri; Zamanlama Analizi Saldırıları, Güç Analizi Saldırıları, Elektromanyetik Analiz Saldırıları ve Akustik Analiz Saldırılarıdır. Bu saldırılara karşı genel bir önlem bulunmamakla birlikte, muhtemel önlemlerin bir kısmı gürültü, çıktı dizisinin tamponlanması (buffering), fiziksel koruma, sinyal boyutunun azaltılması, uygulanan algoritmada şube işleminin ortadan kaldırılması, şifreleme süresini eşdeğer ve daha az hale getirecektir.

Zaman Bellek Takas Saldırısı: Bir zaman bellek takas etme saldırısı, daha basit bir temel kriptografiden ve çevrimiçi karmaşıklığın kapsamlı bir anahtar aramadan daha düşük bir şekilde, arama tablosundan daha yüksek bir temel kriptografik saldırmayı amaçlayan bir kriptografik yöntemidir.

Bu saldırı iki aşamaya ayrılabilir; çevrimdışı bir faz veya ön hesaplama aşaması ve çevrimiçi faz. Çevrimdışı fazda, tablo, farklı rasgele tuşları seçerek ve seçilen her bir anahtar için çıktı üreterek, benzer bir arama tablosu yönteminde oluşturulmuştur. Bu çıktı dizeleri ve anahtar çiftleri, çıktı dizeleri tarafından dizilenmiş bir tabloda saklanır. İkinci aşamada veya çevrimiçi aşamada, saldırgan bilinmeyen anahtarların ürettiği çıktıyı gözlemler. Daha sonra bu çıktılar, çevrimdışı aşamada üretilen tablonun çıktılarıyla eşleştirilir. Bir eşleşme bulunursa, karşılık gelen anahtar eşleşen çıktının anahtarı olacaktır.

Ayırt Edici (Distinguishing) saldırı: İyi bir akış şifreleme tasarımı için en önemli kriter, ana anahtar üretimin rasgele olmasıdır. Ayırt edici saldırı, belirli bir anahtar akışı rasgele bir sıra veya bir şifre veya üreteç oluşturduysa tanımlamaya çalışır. Ayırt etme saldırısı, iç durum değişkenleri ile çıktı anahtar akımı arasındaki ilişkileri belirlemeye çalışır. Saldırıyı ayırt etmek için bir şifrenin iç yapısı kapsamlı olarak analiz edilmelidir. Ayırt edici saldırı bilinen bir anahtar saldırıdır.


Cebirsel Saldırı: Cebirsel saldırılar, kayan şifrelemelere nispeten yeni saldırılardır ve bu alandaki ilerleme hızla devam etmektedir. Cebirsel saldırılar, LFSR tabanlı şifrelere karşı çok etkilidir. Cebirsel saldırıların temel ilkesi, bir kriptografik sistemi cebirsel denklemler açısından modellemektir. Bu saldırının ilk basamağı, başlangıç ​​durumunu çıkış anahtar akımı ile ilişkilendiren cebirsel denklemler kümesini bulmaktır ve ardından anahtar akış bitleri gözlenir ve bu değerler denklemlerin yerine geçer. Saldırganlar maksimum olası anahtar akımı bitlerini toplamaya çalışıyorlar. Son olarak, bu denklemler sistemi, başlangıç ​​durumunu belirlemek ve daha sonra gizli anahtarı türetmek için çözülür.

Korelasyon Saldırıları: Korelasyon saldırısı bilinen düz metin saldırı sınıfıdır. Bu saldırılar, akış şifrelemeleri için yaygın bir şekilde uygulanabilir; özellikle de geribildirim kaydırma kayıtlarına dayalı tasarım yapmak için. Bir korelasyon saldırısı, tasarımın birleştirme işlevindeki zayıf noktaları sömürerek çıkış anahtar akışından başlangıç durumuyla ilgili bazı bilgileri çıkarmaya çalışır.

 

Tahmin ve tespit saldırıları: Tahmin ve tespit saldırılar, genel kayan şifre saldırılarıdır. Tahmin ve tespit saldırıları adından da anlaşılacağı üzere, bir saldırgan tarafından tahmin edilen bölümü ve az miktarda bilinen anahtar akışını kullanarak anahtar akışını gözleyerek iç durumun bir bölümünü tahmin eder ve iç durumların tam değerini elde etmeye çalışırsınız. Sonunda keystream' in bir kısmı tahmin edilen değerler kullanılarak oluşturulur ve ardından tahmin edilen değerlerin doğruluğunu kontrol etmek için bilinen keystream ile karşılaştırılır. Tahmin edip, Polar Bear'e karşı saldırı tespit edildi. Tahmin ve belirleme saldırıları SNOW'a karşı da sunuldu. Düzensiz saat ile, tahmine karşı direniş ve saldırıları belirleme artabilir. Tahmin et ve saldırıları belirlemek kelime odaklı akış şifrelere karşı daha etkilidir.

 

Doğrusal Maskeleme Saldırıları: Doğrusal maskeleme saldırıları, blok şifreleme tasarımına benzer bazı doğrusal olmayan işlemlerin bulunduğu ve bu işlemi gizlemek için doğrusal maskelemenin kullanıldığı şifrelere uygulanabilir. Bu saldırılardan önce, doğrusal olmayan bir karakteristik ayırt edici olup bazı önyargılar sergilemektedir. Daha sonra lineer süreci inceleyip bazı eksik doğrusal kombinasyonlar elde ediyoruz. Aynı doğrusal kombinasyonlar şifre çıktısına uygulanır ve özellik ayırt etme izlerini bulmaya çalışırız. Coppersmithet al al. in, doğrusal maskelemeyi kullanarak akarsu şifrelere genel bir saldırı tanımladı. SNOW üzerinde doğrusal maskeleme saldırısı önerdi. Bu, Tahmin ve Tespit saldırısı biçimidir.

 

Bağlantılı Anahtar Saldırıları

İlgili Anahtar Saldırı: Biraz fazla ek güvenlik veya güvenliği sağlamak için, şifreleme protokolünün bazıları, tek bir anahtar kullanılarak şifrelenebilen veri miktarını sınırlar. Bu gibi durumlarda ya yeni anahtar, IV (başlatma vektörü) kullanılarak ve ana anahtarla ya da sırayla şifreleme anahtarını değiştiren IV' ü kullanarak üretilir. Bu tip şifrelere göre, yeniden anahtarlama stratejisi, girdileri, yeterli doğrusal olmayan bir şekilde iç durumlarla ilişkilendiriyorsa, şifre, ilgili bir anahtar saldırıya yatkın hale gelebilir. Akış şifrelemesi durumunda bu tür zayıflıklar çok yaygın değildir

Böl ve Fethet Saldırıları: Problemi küçük sorunlara bölmek ve problemi adım adım çözmeye çalışmak için kullanılan bir tekniktir. Aynı strateji, bir şifrenin bileşenlere bölünmüş olduğu ve her aşamada yalnızca birkaç anahtar biti bulunup belirlendiğinde böl ve fethet saldırısı durumunda uygulanır. İlk önce en savunmasız bileşenlere saldırı yapılır.

12 Nisan 2017 Çarşamba

Sızma Testi: Network güvenliği için yol haritası


Özet: Network sızma testi bilgisayar ağ altyapısında mevcut olan zafiyetleri ve açıklıkları tanımlayarak güvenlik düzeyimizi ölçmeye yardımcı olur. Bu yazının amacı, gerçek dünyadaki saldırıları olabildiğince modelleyerek, sızma testlerinin metodolojisini açıklamak, ağ güvenliği için önemli kısımlarının nasıl test edilmesi gerektiğini göstermektir. Başarılı sızma testleri güvenlik iyileştirmeleri yapabilmemiz için bize kanıtlar sağlar. Sızma testlerinde yüksek seviyedeki zayıf noktalara odaklanılır ve false positive durumu oluşmaz.

1.       GİRİŞ:
Sızma testleri, IT sistemlerinde Hacker, Crackers, vs. gibi bilgisayar korsanlarının tehditi altındaki sistemleri ortaya çıkarabilir. Tehdit altında olan bu açıklıkların net bir resmi çıkartılır ve tedbirlerin alınması sağlanır. Günümüzde ücretsiz ve ticari olarak birçok güvenlik açığı tarayan yazılım mevcuttur, bunların birçoğu güncellenip yeni zafiyetleri tanıma yeteneğine sahiptir ve açıklıkları bulmakta bize oldukça kolaylık sağlar.
Saldırgan çeşitleri:
“Hacker” terimi IT sistemlerine, kimlik doğrulama olmaksızın illegal yollarla yetkili bir erişim sağlayan kişi için kullanılır.
"Hackerlar" teknik nedenlerle BT sistemindeki güvenlik açıklarını hedefleyen akıllı programcılar olarak görülür, girdikleri sistem dışında herhangi bir şeye zarar vermezler.
"Crakerlar" kendilerine avantaj, sosyal ilgi veya saygı kazandırmak için BT sistemlerinin zayıf noktalarını kullanan, suç potansiyeline sahip insanlardır. Normalde yasadışı olarak bir yazılımın seri numarası veya parolasını kırarak komple yazılıma erişen kişilerdir.
“Script kiddies” genellikle, derinlemesine bir bilgi sahibi olmayan ancak bu konuya merak sarmış, internette bulduğu araçlarla saldırı yapan kişilerdir.
Tüm bu potansiyel saldırganlar, BT altyapısına yönelik saldırılar gerçekleştirmek için çeşitli nedenlere, motivasyonlara sahip olabilirler.

2.       ÖNEMLİ AĞ ATAKLARI:
IT network altyapısına zarar verebilecek, manipüle edebilecek birçok atak yöntemi vardır;
2.1.   Ağ Tabanlı saldırılar:
"Ağ tabanlı saldırılar", zaafiyeti sömürmek ve hasar vermek için ağ protokolü işlevlerini kullanır. Ağ tabanlı saldırılar; Port Tarama, IP Spoofing, Sniffing, Session Hijacking, DoS saldırıları, Buffer overflow saldırıları, Format strings saldırıları ve işletim sistemi, uygulama ve ağ protokollerindeki zafiyetleri sömüren ataklar olarak listelenebilir.

2.2.   Sosyal Mühendislik saldırıları:
Sosyal mühendislik saldırıları; saldırganların, ayrıcalıklı bilgiye sahip kişilere yönelik, şifre ve güvenlikle ilgili bilgileri ortaya çıkarmak için yaptığı aldatma girişimidir. Bu teknik ile muhtemel saldırı aralıkları çok geniştir. Güvenlikle ilgili bilgilerin gasp yoluyla elde edildiği durumlarda bu kapsamdadır. Sosyal Mühendislik sızma testi, belirli politikalar ve prosedürlerin test edildiği durumlarda en iyi sonucu verir.

3.       SIZMA TESTİ: TEST ADIMLARI
Networkte sızma testi için aşağıdaki adımlar uygulanır:
3.1.   Hedef sistem hakkında bilgi edinme:
İnternet üzerinden erişilebilen her bilgisayarın bir IP adresi vardır. Bazı kuruluşlar, internet üzerindeki sistemlerin ip bloğu hakkında bilgiler sağlar.
3.2.   Sunulan hizmetler için hedef sistemleri taramak:
Test edilen sistemlerin port taraması yapılır, açık portlar kontrol edilerek hedef sistemde kullanılan uygulamalar hakkında bilgi sahibi olunur.
3.3.   Sistem ve uygulamaları tanımak:
Hedef sistemdeki işletim sistemleri, uygulamalar ve sürümleri, uygulamalara ait "parmak izi" ile tanımlanabilir.
3.4.   Zaafiyet araştırma:
İşletim sistemlerinin ve uygulamalarının güvenlik açıkları, toplanan bilgiler kullanarak verimli bir şekilde araştırılabilir. Her işletim sisteminin kendi zaafiyetleri vardır, bu durum işletim sisteminde saklanan verilerin veya bilgilerin bir saldırgan tarafından saldırıya uğramasına sebep olur. Bu nedenle sızma testlerinde işletim sistemine ait bilgiler toplanmalı ve zafiyet olan sistemlere sızmaya çalışılmalı.
3.5.   Güvenlik açıklarını kötüye kullanma
Algılanan güvenlik açıkları, sisteme yetkisiz erişim sağlamak veya daha fazla saldırı hazırlamak için kullanılabilir. Bir sızma testinin kalitesi ve değeri, öncelikli olarak testin müşterinin kişisel durumuna ne ölçüde hitap ettiğine bağlıdır. Yani müşterinin zaman ve kaynaklarının, BT altyapısıyla ilgili açıkların tespiti için ne kadar harcandığına ve test edenin ne kadar yaratıcı olduğuna bağlıdır. Bu işlem, genel açıklamada anlatılmamaktadır, bu nedenle bir sızma testinin kalitesinin hizmet olarak büyük farklılıkları bulunmaktadır.



4.       NASIL ÇALIŞIR?
Aşağıda, yukarıda verilen adımlara dayalı olarak bir sızma testinin beş aşaması tanıtılıyor. Her aşama diğerinden bağımsız ancak sırayla gerçekleşir.
1.Aşama: Teste başlangıç için hazırlık; Müşteri beklentilerini, sızma testinin amaçları üzerine bir çözüme ulaşma gibi iyi bir zemine oturtmadan yerine getirmek zordur. Sızma testinin başlangıcında müşterinin hedefleri açıklığa kavuşturulmalı ve tanımlanmalıdır. İlgili yasal hükümleri tam olarak dikkate almadan bir sızma testinin uygulanması ceza hukuku veya medeni kanun kapsamında maliyet doğurabilir. Bu nedenle test işleminin, test prosedürlerinin yasal hükümleri veya sözleşmeleri ihlal etmeyeceğinden emin olmalıdır. Bir testin başarısızlığı da alternatif taleplere yol açabilir. Kabul edilen tüm ayrıntılara sözleşmede yazılı olarak yer verilmelidir.
2. Aşama: İnceleme: Test etme kararı, hedefleri, kapsamı, prosedürleri, acil önlemleri, sınırlamaları yasal ve organizasyonel hususlar ve diğer koşullar göz önüne alınarak tanımlandıktan sonra, test görevlisi hedef sistem hakkında bilgi toplanmaya başlayabilir. Bu aşama, pasif sızma testidir. Amaç, sistem hakkında eksiksiz bilgi edinmek ve sistemdeki eksiklikler hakkında bilgi almaktır. İncelenecek ağın boyutuna bağlı olarak, test aşamaları çok zaman alıcı olabilir. Bu uzun test adımları genellikle otomatik olarak gerçekleştirilir.
3. Aşama: Elde edilen bilgilerin ve oluşabilecek riskin analiz edilmesi: Başarılı, açık ve ekonomik olarak verimli bir prosedür, sisteme aktif olarak nüfuz etme test adımlarından önce toplanan bilgileri analiz etmeli ve değerlendirmelidir. Analiz, sızma testinin tanımlanan amaçlarını, sisteme olası riskleri ve başarılı aktif sızma girişimleri için muhtemel güvenlik kusurlarını değerlendirmek için gereken zamanı içermelidir. Daha sonra, bu analiz temelinde 4. aşamanın amaçları seçilir. Test yapan kişi, tespit edilen sistemlerin listesinden, konfigürasyonlarından veya tespit edilen uygulamalar / servislerden faydalanarak bilinen zayıf noktalara sahip sistemleri seçebilir
4. Aşama: Aktif saldırı girişimleri: Son olarak, hedef sistemlere aktif bir şekilde saldırılır. Bu aşama bir sızma testinde en yüksek riski içerir ve dikkatli bir şekilde uygulanmalıdır. Bununla birlikte, yalnızca bu aşama, inceleme aşamasında belirlenen zayıf güvenlik açıklarının fiili riskleri ne ölçüde gösterdiğini ortaya koymaktadır.
Olası güvenlik açıklarının doğrulanması gerekiyorsa, bu aşama gerçekleştirilmelidir. Çok yüksek kullanılabilirlik veya bütünlük gereksinimleri olan sistemler için, arabellek taşması istismarları kullanımı gibi kritik test prosedürlerini uygulamadan önce potansiyel etkiler dikkatli bir şekilde düşünülmelidir. Beyaz kutu testinde, sistem hatalarını önlemek için test gerçekleştirmeden önce kritik sistemlere bir düzeltme ekinin kurulması gerekebilir. Test muhtemelen herhangi bir güvenlik açığı bulamayacak, ancak sistemin güvenliğini belgeleyecektir. Bununla birlikte, bir hacker saldırısından farklı olarak, sızma testi tamamlanmamıştır, devam edecektir
5. Aşama: Nihai Analiz: Bireysel test aşamalarının yanı sıra nihai raporda, güvenlik açıkları ve risklerini ortadan kaldırmak için olası riskler ve tavsiyeler şeklinde değerlendirilmeler yer almalıdır. Rapor, testlerin şeffaflığını ve test sırasında bulunan zayıf noktaları garanti altına almalıdır. IT güvenlik risklerinin bulguları, test prosedürlerinin başarıyla tamamlanmasının ardından müşteri ile ayrıntılı olarak tartışılmalıdır.
Müşterinin beklentilerini karşılayan başarılı bir sızma testi için hedeflerin net bir şekilde tanımlanması önemlidir. Müşteri hazırlık aşamasında bilgilendirmeli ve BT denetim veya BT güvenlik danışmanlığı hizmetleri gibi alternatif prosedürler önermelidir. Sızma testi ile elde edilen müşteri hedefleri dört kategoriye ayrılabilir:
1. Teknik sistemlerin güvenliğini arttırmak
2. Güvenlik açıklarını tanımlamak
3. BT güvenliğinin dışardan bir danışman tarafından onaylanması
4. Organizasyon ve kişisel altyapı altyapısının güvenliği artırılması

Bir BT sızma testinin sonucu, yalnızca varolan güvenlik açıklarının listelemez, aynı zamanda bulunan zaafiyetlerin ortadan kaldırılması için spesifik çözümler önerir. Çünkü bir sızma testi, sömürülebilir zayıflıkları tanımlamak ve hangi sistemlerin ve verilerin risk altında olduğunu ortaya çıkarmak için, bir sisteme "saldırmak" için yetkili, yerel bir girişimdir.


5.       SIZMA TESTİ UYGULAMASININ KURUMA FAYDALARI
• Güvenlik olaylarının etkisi, frekansı ve katılığı anlaşılır ve azaltılır.
• Güvenlik değerlendirmeleri uyumluluk ve düzenleme gereksinimlerini karşılar.
• Güvenlik açıklarını gidermek için kullanılan kaynakları optimize etme ve öncelik vermeye yardımcı olur.
• Güvenlik önlemleri, denetimleri ve politikalarını netleştirir.
• Ağ altyapısında zayıf noktaları ve riskleri tanımlar.
• Mevcut güvenlik önlemlerinin etkinliğini doğrular.
• Firmaya ait kurumsal sistem ve gizli bilgiler için riski ölçer.
• Kurumsal sorumluluğu olan yöneticilerin farkındalığını arttırır.
• Ağ güvenliğinin aşılmasını önlemek için ayrıntılı iyileştirme adımları sağlar.
• Sistem güncellemelerinin güvenliğini doğrular.
• Çevrimiçi varlıkların bütünlüğünü korur.
• Federal ve eyalet yönetmeliklerine uyma ve bunlara uyum sağlamaya yardımcı olur.
• Otomatikleştirilmiş bir ürün kullanmak, ağınızı sürekli test etmenize ve uygulamayı genel güvenlik programınıza kolayca entegre etmenize olanak tanır. Bu, ağın genel güvenliğine daha fazla güveneceğiniz anlamına gelir
• Ne kadar bilginin dışarıya açık olduğu konusunda bilgi verir.

6.       SIZMA TESTLERİNİN LİMİTLERİ
Günümüzde Bilgi Teknolojileri konularındaki hızlı değişimler ve saldırganların gittikçe daha akıllı ve tehlikeli hale gelmesi, güvenlikle ilgili sorunları çok hızlı bir şekilde arttırıyor. Bir sistemi daha güvenli hale getirmek için, aynı anda toplu testler yapmak gerekiyor. Yeni bir güvenlik açığı, bir sızma testi tamamlandıktan hemen sonra başarılı bir saldırının gerçekleşebileceği anlamına gelebilir. Test sırasında keşfedilmemiş farklı bir zaafiyetinde saldırıya neden olması mümkündür.  Güvenlik açıklarının bulunması, sızma testinin kalitesini göstermesine rağmen, Test hizmetinin tanımı yalnızca güvenlik açıklarını bulmaktır, farklı güvenlik açıklarının olmadığı anlamına gelmez. Sızma testi raporu, test sırasında kullanılan yöntemleri ve sızma testi sırasında kullanılan çeşitli prosedürleri açıkladığından ağ güvenlik konusunda tecrübeye sahip bir kişi testin geçerliliğini ölçebilir.



7.       SONUÇ

Bu yazıda sızma testi, metodolojileri ve uygulaması hakkında bilgiler verildi. Olası saldırıları tahmin ederek sunucu ve ağ sistemini, daha güvenilir kılmak için, tecrübeli güvenlik danışmanlarının gerekli olduğu vurgulandı. Ağ sistemine sahip kurumlar / ofisler / şirketler, olası saldırıları bilen güvenlik personelinden faydalanarak olası güvenlik saldırılarının üstesinden gelmek için bir mekanizma geliştirmesi gerekir. Bunun için sızma testi sürecinin uygun ve bilimsel olarak oluşturulması ve yürütülmesi gereklidir. Sızma sisteminin test sonuçlarını belgelemekle birlikte, bilimsel ve usule dayalı bir yaklaşım olmalıdır. Kurumsal ağlara yapılabilecek saldırılarda gündelik değişiklikler olduğu için sızma testi metodolojileri de sıklıkla güncellenmelidir. Güncel saldırılara göre, sızma testi yapan kişi saldırgan gibi düşünerek saldırı tiplerini değiştirilmelidir. Sızma testi sisteminin konuşlandırıldığı kuruluşlar güvenlik tedbirleri için yol haritası sağlamalıdır. Bir ölçme aracı olarak, sızma testleri ile elde edilen bulgularla, yazılım geliştirme süreçlerinde, güvenli implementasyon için iyileştirmeye yardımcı olabilecek şekilde tam olarak entegre olarak çalışırsa çok güçlü bir etki bırakacaktır.


8.       KAYNAKÇA
Penetration Testing: A Roadmap to Network 

Yazarlar: Mr. Nitin A. Naik, Mr. Gajanan D. Kurundkar, Dr. Santosh D. Khamitkar, Dr. Namdeo V. Kalyankar December, 2009
S

23 Şubat 2017 Perşembe

Yeni Nesil Güvenlik Duvarlarında sağlanan güvenlik servisleri

Uygulama seviyesi güvenlik duvarlarının sunduğu güvenlik servisleri

Özet

Günümüzde uygulamaların karmaşıklaşması klasik güvenlik duvarlarını yetersiz hale gelmiştir. Artık güvenlik duvarlarından, işlevselliği engellemeden siber tehditleri önlemesi ve uygulama seviyesinde koruma sağlaması beklenmektedir. Bu dokümanda yeni nesil güvenlik duvarlarında uygulama seviyesinde sunulan güvenlik servislerinden bahsedilecektir.

Giriş

Yeni nesil güvenlik duvarları OSI Modelinde uygulama katmanı düzeyinde çalışır. En sık kullanılan güvenlik duvarı tekniğidir. Uygulama katmanındaki güvenlik duvarı, gelen paketin veri kısmına kadar olan tüm paket başlıklarını açıp kontrol edebilir ve filtreleyebilir. Uygulama katmanında filtreleme yapmanın en önemli avantajı bazı uygulamalar ve protokollerin anlaşılır olmasıdır (FTP, DNS, HTTP gibi). Günümüzdeki güvenlik duvarları da sadece port kapamak amaçlı kullanılmıyor. Yeni nesil güvenlik duvarları da U.T.M. (Unified Threat Management) (güvenlik duvarı, antivirüs, antispam, IDS/IPS, VPN, yönlendirici (router) gibi özellikleri olan) tümleşik cihazlardır.
Uygulamaların kullanımı, kullanıcı davranışı ve ağ altyapısındaki temel değişiklikler, geleneksel port tabanlı ağ güvenliği yapısındaki zayıflıkları açığa çıkaran bir tehdit alanı oluşturur. Kullanıcılar, geniş bir cihaz türleri yelpazesinde çalışan ve sayısı gittikçe artan farklı uygulamalara erişmek ister, fakat iş ya da güvenlik risklerini genellikle çok önemsemezler. Aynı zamanda veri merkezi genişlemesi, ağ segmentasyonu, sanallaştırma ve mobilite girişimleri, bir yandan geleneksel güvenlik mekanizmalarından kaçan, yeni ve daha karmaşık bir gelişmiş tehditler sınıfından ağınızı korurken diğer yandan da sizi uygulamalara ve verilere nasıl erişim sağlayacağınız konusunda yeniden düşünmeye zorlamaktadır. Geçmişte iki temel seçenek vardı; ağ güvenliği açısından her şeyi engellemek ya da verimlilik adına her şeyi etkinleştirmek. Bu seçenekler, kullanıcılarla uzlaşma için çok az alan bırakıyordu. Yeni nesil güvenlik duvarları, siber güvenlik tehditlerini önlerken bir yandan da erişime izin vererek kullanıcıların gereksinim duyduğu uygulamaları güvenli bir şekilde etkinleştirebilmeyi sağlar. Yeni nesil güvenlik duvarı, (uygulamaları, tehditleri ve içeriği kapsayacak şekilde) tüm trafiği inceler ve bunu, konumdan ya da cihaz türünden bağımsız olarak kullanıcıya bağlar. İşin yürütülmesini sağlayan öğeler olan uygulama, içerik ve kullanıcı, kurumsal güvenlik politikasına karşı bir tehdit oluşturmamış olur. Böylece, güvenlikten taviz vermeden uygulamaları kullanarak verimlilikte sağlanmış olur.

1. Yeni Nesil Güvenlik Duvarlarının özellikleri

Yeni nesil güvenlik duvarlarında;
· Tüm trafiği sınıflandırarak, iş kullanımı durumunu tanımlayarak ve ilgili uygulamalara erişim izni veren ve koruyan politikalar atayarak uygulamaları, kullanıcıları ve içeriği güvenle etkinleştirebilir.
· Tehdit ayak izini azaltmak için istenmeyen uygulamaları devre dışı bırakarak tehditleri önleyebilir ve hedefli güvenlik politikaları uygulayarak bilinen güvenlik açığı istismarları (vulnerability exploits), virüsler, casus yazılımlar, botnet’ler ve bilinmeyen kötü amaçlı yazılımlar (Advanced Persistent Threat-APT’ler) engellenebilir.
· Veri merkezlerini; uygulamaların doğrulanması, verilerin ayrılması (izolasyon), hileli uygulamalar üzerinde denetim sağlama ve yüksek hızlı tehdit önleme gibi hizmetlerle koruma yeteneğine sahiptir.
· Halka açık ve özel bulut bilişim ortamlarını, geliştirilmiş görünürlük ve denetim ile güven altına alabilir; güvenlik politikaları, sanal makinelerde aynı hızda uygulayıp sürdürülebilir.
Yeni nesil güvenlik duvarları, tüm portlar genelinde trafiğin tamamının tüm fonksiyonlar kullanılarak tek geçişli incelenmesini (single pass inspection) gerçekleştirir; böylece güvenlik politikası için temel olarak uygulama, ilgili içerik ve kullanıcı kimliği bağlamında karar almayı sağlar.


Şekil-1: Uygulama seviyesi güvenlik duvarında uygulama filtreleme

  • Günümüzde, uygulamalar ve onlarla ilgili içerikler, çeşitli teknikler kullanarak port tabanlı bir güvenlik duvarını kolayca geçebilir. Yeni Nesil (uygulama seviyesinde) güvenlik duvarı ile uygulamaları, tehditleri ve kötü amaçlı yazılımları belirlemek için, doğal bir biçimde trafik akışına birden fazla sınıflandırma mekanizması uygulanır. Tüm trafik, port, şifreleme (SSL ya da SSH) ya da kullanılan kaçınma tekniklerinden (evasive techniques) bağımsız olarak sınıflandırılır. Tanımlanamayan uygulamalar (genellikle, trafiğin küçük bir yüzdesini oluşturmakla birlikte risk potansiyeli yüksektir), otomatik olarak sistemli yönetim için sınıflandırılır
  • Trafik tamamen sınıflandırıldıktan sonra, belirli uygulamalara izin verip diğerlerini reddederek ağ tehdidi ayak izi azaltılabilir. Bu durumda, bilinen kötü amaçlı yazılım sitelerini engellemek ve güvenlik açığı istismarlarını (vulnerability exploits), virüsleri, casus yazılımları ve kötü amaçlı DNS sorgulamalarını önlemek için eş güdümlü siber saldırı koruması uygulanabilir. Her özel ya da bilinmeyen kötü amaçlı yazılım, dosyaları çalıştırarak ve bunların sanal bir sandbox ortamındaki kötü amaçlı davranışlarını doğrudan gözlemleyerek analiz edilir ve tanımlanır. Yeni bir kötü amaçlı yazılım keşfedildiğinde virüs bulaşan dosya ve ilgili kötü amaçlı yazılım trafiği için otomatik olarak bir imza oluşturulur ve size gönderilir.
  • Güvenlik duruşunu iyileştirmek ve olay yanıt sürelerini (incident response time) azaltmak için uygulama kullanımını kullanıcı ve cihaz türüyle eşleştirmek ve bu bağlamı güvenlik politikalarını uygulayabilmek çok önemlidir. Geniş çaplı kurumsal kullanıcı havuzlarıyla entegrasyon, uygulamaya erişen Microsoft Windows, Mac OS X, Linux, Android ya da iOS kullanıcısının ve cihazının kimliğini sağlar. Hem kullanıcılar hem de cihazlar üzerindeki birleştirilmiş görünürlük ve denetim, kullanıcı nerede olursa olsun ya da hangi cihazı kullanırsa kullansın ağdan geçen her uygulamanın kullanımını, güvenle etkinleştirebilmesini sağlar.
  • Kullanımdaki belirli uygulamaların, içerik ya da taşıyor olabileceği tehdidin ve ilişkili kullanıcı ya da cihazın ilişkisini bu bağlamda oluşturarak, politika yönetimini kolaylaştırmaya, güvenlik duruşunu iyileştirmeye ve olay soruşturmasını (incident investigation) hızlandırmaya yardımcı olur.

2. Yeni Nesil Güvenlik Duvarlarında sağlanan güvenlik servisleri

Antivirus:
Gelen ve giden mail eklentilerini, tüm ftp ve http trafiğini (web tabanlı mailler dahil) tarar. Antivirüs getaway gelen virus ve wormları networke girmeden önce kestiğinden zarar
verebilecek durumları önceden önlemiş olur. Gerçek zamanlı update olarak belirli zaman periyotları ile değil virus çıktığı anda update yapılmış olur.
Güvenlik Duvarı:
Policy bazlı kural yazma ile tek bir kuralda birçok kontrol sağlar. Tek bir kuralda kaynağı, hedefi ve kullandığı servisi belirtilmiş paket nat, traffic shaping, loglama Autentication (Active directory, local, lap, radius) ve protection profile uygulanabilir. Protection profile sayesinde kurala uyan paketlere antivirüs taraması, antispam taraması, web filtering, ips/ids ve im/p2p kontrolü yapılabilir.
Intrusion Detection:
Uyarı tabanlı binlerce bilinen saldırı barındıran özelleştirilebilir veritabanı mevcuttur. Host tabanlı antivirus programlarından kaçan saldırıları durdurur. Antivirus güncellemelerinde olduğu gibi saldırı imzaları güncellemeleri de gerçekleştirilir. Bu sayede yeni saldırı çıkar çıkmaz update yapılır güncelleme süresinin dolması beklenmez.
VPN:
Ipsec, PPTP, L2TP, based ve SSL VPN esnek bir şekilde yapılmaktadır. VPN 2 lokasyon arasında yapılabileceği gibi dışardan dial-up kullanıcıları da güvenli bir şekilde VPN yapabilmektedir. Gelen VPN paketlerin protection profile uygulama bildiğinden, ips, antivirus, proxy serverlarını kullanacak olanlar için URL filtering gibi denetlemeler uygulanarak tam koruma sağlanmış olunur.
Şekil-2: Fortinet yeni nesil güvenlik duvarında güvenlik özellikleri
AntiSpam:
Blacklist website ve domain tabanlı, kelime taraması (her kullanıcı için ayrı configure edilebilirlik) ve dinamik
puanlama sistemi ile güçlü ve doğru sonuç alınabilir.
Traffic Shaping:
Traffic Shaping ile network trafiği, paket sınıfı, kuyruk disiplini vs. kriterlere göre kısıtlama yapılabilir. Böylece
iş önceliğine göre trafik şekillendirilebilir. Ftp ve web hızını düşürüp SQL bağlantılarının performansı garanti altına alınabilir.
Web Filtering:
Milyonlarca domain ve milyarlarca web sayfası ile URL filtrelemede etkili bir kontrol sağlanır. Kategori bazlı
filtreleme imkânı sunulabilir. Ayrıca kelime ve kara liste oluşturma imkânıyla da filtreleme yapılabilir.
IM/p2p:
Chat araçlarının en popülerleri olan aim, icq, msn ve yahoo paylaşım programlarında bitTorrent, eDonkey,
gnutella, kazaa, skype, winNY programlarının logon, file transfer (dosya boyutu belirtilebilir), audio kontrolleri
yapılabilmektedir. Ayrıca standart portlar dışında çalışan benzer programlar kontrol edilebilir. Bu programlar
aracılığı ile gelen paketler protection da belirtilen virus vb. taramalardan geçirilebilir. Yasaklanan programları
kullanan kullanıcıların listesi gelmektedir. Bu listeden istenilen kullanıcılara izin verilebilir veya engellenebilir.
Şekil-3: Yeni Nesil Fortinet Firewall temel özellikleri

3. Kaynakça

[1] PaloAlto Networks Next Generation Firewalls
[2] Fortinet NGFW Specifications
[3] Wikipedia.org

22 Şubat 2017 Çarşamba

Güvenli ve Şifreli E-posta iletimi: PGP

Özet

Bu makalede güvenli ve şifreli mail gönderim mekanizması olan PGP (Pretty Good Privacy), bu sistemi oluşturan kriptolojik yapıtaşlarıyla birlikte analiz edilmiştir. Makalede, büyük resimden detaya doğru bakmak amaçlandığı için, ilk önce bilgi güvenliği en temel seviyede ele alınmıştır. Sonrasında e-posta kullanım oranları ve e-posta güvenliğinin kurumlar için önemi anlatılmıştır. Kurumlar için kritik uygulamaların güvenliğini sağlamak için kullanılan kriptolojik mekanizmalar ve e-posta güvenliğinin sağlanmasında yaygın olarak kullanılan PGP ve onun kriptolojik yapıtaşları teknik olarak anlatılmıştır. Karma bir sistem olarak PGP şifreleme ile, bu mekanizmayı oluşturan simetrik ve asimetrik şifreleme yöntemleri ve dijital imzalama için kullanılan özet değeri çıkarma algoritması teknik detaylarıyla anlatılmış, son olarak kişisel bilgisayarımızda PGP ile e-posta alışverişi yapabileceğimiz örnek bir uygulama yapılmıştır.

1.      Giriş

Günümüzdeki rekabet ortamında, hız ve esneklik olarak kurumlara büyük avantajlar sağladığı için bilgi teknolojileri çok aktif bir şekilde kullanılıyor. Kurumlar çok kritik bilgiler içerse bile verilerini dijital ortamlarda saklamak ve bu verilere her an kesintisiz bir şekilde ulaşabilmek zorundalar. Kritik verilerini internet ortamında transfer etmek, iletişimlerini çoğu zaman e-posta ile yapmak, verimlilik açısından sağladığı avantaj dolayısıyla tercih edilmeye devam edilecektir.
Güvenlik ve verimlilik çoğu zaman birbirlerine ters orantılıdır, güvenliği arttırmak için çoğu zaman performans ve kullanım kolaylığından ödün vermek gerekir. Ayrıca güvenliği sağlamak için katlanmak gereken bir maliyet vardır. Bilgi Teknolojilerinde güvenlik kavramını araç içinde emniyet kemeri takmak ile karşılaştırabilir, emniyet kemerine kaza olmadığı sürece gerek duyulmaz, ancak hiç beklenmeyen bir zamanda kaza meydana geldiğinde emniyet kemeri takılıysa çok büyük kayıpları önleyecektir. Bu yüzden tıpkı emniyet kemerleri için sürücülerin bilinçlendirildiği ve yaptırım uygulandığı gibi, bilgi güvenliği kavramının da kurumlara iyi anlatılması ve yaptırımlarının olması gerekmektedir. Belirli ölçekteki kurumlar için yaptırım gereklidir çünkü kurumun uğradığı siber saldırı sadece o kurumu değil, birçok kurumu ve insanı etkileyebilecek ölçüde olabilmektedir. Bu konuda oldukça fazla örnek vermek mümkündür, örneğin bir bankanın uğrayacağı siber saldırı bankayı kullanan müşterilerin kritik bilgilerinin çalınmasına sebep olabilir. Bir online alışveriş sitesine yapılan saldırı sonucu veri tabanlarında kayıtlı kredi kartı bilgileri ele geçirilip müşterilerini mağdur edebilecek ölçüde olabilir.
1.1.  Bilgi güvenliğinin tanımı:
Bilgi güvenliği, bilgilerin izinsiz kullanımı, ifşa edilmesi, yok edilmesi, değiştirilmesi, bilgilere hasar verilmesi gibi durumlardan koruma, veya bilgilere yapılacak olan izinsiz erişimleri engelleme işlemidir. Bilgi güvenliği, bilgisayar güvenliği ve bilgi sigortası terimleri, sık olarak birbirinin yerine kullanılmaktadır. Bu alanlar birbirleriyle alakalıdırlar ve mahremiyetin, bütünlüğün ve bilginin ulaşılabilirliğinin korunması hususunda ortak hedefleri paylaşırlar
1.2.  Bilgi güvenliğinin 3 temel unsuru:
Bilgi güvenliği 3 temel unsura göre ele alınmıştır. Bu 3 temel unsura kısaca değinmek büyük resme bakmak için faydalı olacaktır. Bu unsurlar; güvenlik servisleri, güvenlik saldırıları ve güvenlik mekanizmaları olarak tanımlanmıştır. Örnek vermek gerekirse; Gizlilik bir güvenlik servisidir, PGP ise şifreleme algoritması olarak bir güvenlik mekanizmasıdır.
1.2.1.          Güvenlik Servisleri: İhtiyaca göre elde etmek istenen güvenlik hizmetleridir. CIA (Confidentiality, Integrity, Availability) üçlüsü olarak tanımlanır.
Şekil-1: CIA üçlüsü [2]

-          Gizlilik (Confidentiality): Bilginin yetkisiz kişilerin eline geçmemesi gerekir.
-          Bütünlük (Integrity): Bilginin yetkisiz kişiler tarafından değişikliğe uğramaması gerekir.
-          Erişilebilirleik (Availability): Bilginin yetkili kişilerce kesintisiz olarak erişilebilir durumda olması gerekir.

1.2.2.         Güvenlik saldırıları: Sardırganların güvenlik servislerini manipüle edebilme durumudur. Güvenlik saldırıları, “İçerden” ve “Dışardan” olarak ikiye ayrılır. İçerden olan saldırılar; “Dürüst fakat meraklı”, “Örtülü” ve “Kötücül” olarak üç çeşittir. Dışardan gelen saldırılar ise “Aktif” ve “Pasif” ataklar olarak iki çeşittir. [3]
1.2.3.          Güvenlik mekanizmaları: Servisleri sağlamak ve saldırılara karşı dayanıklı olmak için kullanılan yöntemlerdir.

1.3.  E-posta kullanım istatistikleri:
Aşağıdaki tabloda günlük e-posta gönderim oranları ve gelecekte nasıl olacağına dair tahminlere yer verilmiştir. Bu tablodan anlaşılacağı gibi e-posta kullanımı ile haberleşme günümüzde olduğu gibi gelecekte de önemini koruyacaktır.

Tablo-1: Dünya genelinde günlük e-posta trafiği, 2015-2019 [4]
1.4.  E-posta ile yapılan ataklar:
Dünya genelindeki hacker saldırıları istatistiksel olarak incelendiğinde e-posta güvenliğinin kurumlar için çok önemli olduğu görülebilir. E-postalar, çoğu zaman oltacılık yöntemiyle en güçlü savunma sistemine sahip kurumları bile zafiyete uğratabilir, çünkü kurumların bilgi güvenliğindeki en zayıf halkası olarak kullanıcılar hedeflenir. Tablo-2 de zararlı yazılımların bulaşma oranları kontrol edildiğinde, e-postaların şaşırtıcı derecede yüksek orana sahip olduğu görülüyor. Kuruma gönderilen maillerle kurum içine bir malware yardımı ile sızmak hedeflenmektedir. Sonrasında kurum içinde bir bilgisayarı ele geçirip o kurumda bir çalışan gibi zarar vermek mümkün olmaktadır. Bazı durumlarda yetkili bir kişi adına sahte e-posta gönderilmiş olabilir, bu durum e-postayı güvenilir göstereceği için çok daha tehlikeli olabilir. Bu problemin yaşanmaması için e-posta filtreleme (anti-spam) programlarının iyi yapılandırılmış olması çok önemlidir.

Tablo-2: 2015 yılına ait sistemlere malware bulaşma oranları [5]



1.5.  E-posta ile yapılan kritik işlemler:
Bazı durumlarda e-postalar kurum için gizliliği çok kritik olan bilgiler içeriyor olabilirler. Örneğin, bazı kurumlar e-postalarla bankalara talimat verir, çalışanlara ödenecek maaş listesini aylık olarak bankaya e-posta ile gönderilir, bankalar bu listeye göre ödemeleri yapar. Bu örnekte e-postayla iletişim ağlarında herkese açık bir kanalda çok kritik olan bu veri şifresiz olarak taşınırsa, saldırgan kolayca veriyi manipüle edebilir, ele geçirebilir veya engelleyebilir. Bilgi güvenliğinin 3 temel servisi olan gizlilik, bütünlük ve erişilebilirlik servislerinde probleme neden olabilir. Bu durum kurum açısından çok hayati değerde kayıplara neden olabilir. Kurum mutlaka bu türden kritik bilgiler içeren e-postaları şifreli ve imzalı olarak gönderip almalıdır. E-postanın içeriğini şifrelemek gizlilik sağlayacaktır ancak ortadaki adam (MİTM) ataklarına karşı göndericinin ve alıcının doğrulandığı sistemler kullanmak gerekmektedir. Aksi taktirde saldırgan kendisini maili göndereceğimiz kişi olarak gösterebilir veya iki haberleşme arasındaki trafiği aktif bir atakla kesip, tekrar oynatma atağıyla gizli bilgilere ulaşabilir. Bu konuda yapılan ataklar, kriptolojik protokolleri tanıdıktan sonra anlatılacaktır.

2.      Kriptolojik protokoller ve çözümler

Yazının bu kısma kadar olan bölümünde bilgi güvenliğinin temellerinden, kurumların iletişim için yoğun bir şekilde e-posta kullandığından ve bunun içerdiği risklerden bahsettik. Riskler var diye hayatı kolaylaştıran uygulamaları kullanmaktan vazgeçmek yerine, verimliliği düşürmeden güvenliği arttıracak çözümler bulmak zorundayız. Bunun için kriptolojik çözümler geliştirilmiş, bu kriptolojik çözümlerden bazıları standartlaştırılarak protokol haline getirilmişlerdir. SSL, TLS, PGP gibi protokoller bunlara örnek olarak verilebilir. Kriptoloji, bilginin gizli bir şekilde iletilmesi ihtiyacından dolayı çok eski tarihlere dayanmaktadır. Kriptolojide genel mantık şifrelemenin kolay, şifreyi çözmenin belirli bir bilgi olmadan çok zor olmasıdır. Eski tarihlerde çok basit simetrik şifreleme teknikleri kullanılmıştır ancak günümüzde oldukça karmaşık asimetrik ve simetrik çözümler vardır. Simetrik yapılarda iletişim kuracak iki noktanın o iletişime özel bir anahtarı bulunur ve veriler bu anahtarla şifrelenir, iletişim kurulacak her nokta için farklı bir anahtar olması zorunluluğu vardır. Bu durum simetrik şifrelemede anahtar dağıtım problemini ortaya çıkarır. Asimetrik şifrelemede ise her noktanın kendine ait açık (public) ve özel (privite) anahtarı vardır. Açık anahtar herkese açık, özel anahtar ise gizli olmalıdır. Ancak burada da açık anahtarın sahibinin doğrulanması problemi vardır, bunun için dijital noterlik kavramı geliştirilmiştir. Bu amaçla sertifika otoriteleri (certificate authority) kurulmuştur. Bu otoriteler açık anahtarları kendi gizli anahtarlarıyla imzalayarak 3. taraflara sunmaktadır [6]. Bu şekilde ortadaki adam ataklarına karşı gizli haberleşme yapacağımız noktayı doğrulamış olur. Asimetrik şifrelemede anahtar yönetimi büyük avantaj sağlar ancak simetrik şifrelemeye göre çok daha yavaş çalışır, bu yüzden asimetrik ve simetrik sistemlerin bir arada kullanıldığı karma sistemler geliştirilmiştir. PGP bu karma sistemlerden birisidir.
Kriptoloji oldukça geniş kapsamlı ve teknik detaylara sahip bir konu olduğundan fazla detaya girmeden, PGP şifreleme algoritmasını genel olarak kavrayacağız. Bunun için öncelikle bu yapıyı oluşturan asimetrik ve simetrik yöntemler olan RSA ve IDEA şifreleme algoritmalarını ve özet alma mekanizması olarak MD5 algoritmasını tanıyacağız.
2.1.  RSA şifreleme algoritması:
1977 yılında Ron Rivest, Adi Shamir ve Len Adlemen tarafından yayınlanan “New Directions in Cryptoraphy” isimli makaleyle ilk kez tüm dünyaya tanıtılmış olan bu algoritma, ismini bu üç kişinin baş harflerinden alır. Bu yöntem günümüzde asimetrik şifreleme yöntemi olarak kullanır ve büyük boyutlu asal sayıların çarpanlara ayrılmasının zorluğuna dayanır. Öyle ki, iki büyük asal sayıyı çarpmak kolaydır, ancak çarpanlara ayırmak yani çarptıktan sonra bu sayıyı oluşturan iki asal sayıyı bulmak oldukça zordur. Her şey bu problemi çözmenin zor olması üzerine kurulmuştur. Bu yöntem o kadar yaygın olarak kullanılır ki, eğer bir gün çarpanlara ayırma konusunda çok güçlü bir yöntem gelişirse, RSA üzerine kurulmuş tüm güvenlik aşılmış ve her şey güvensiz hale gelmiş olacaktır. Günümüzdeki bilgisayar sistemleri çok büyük iki asal sayıdan oluşan bir sayıyı çarpanlara ayırmak konusunda yetersiz kalır ancak geliştirilme aşamasında olan quantum bilgisayarların bu konuda çok daha güçlü olacağı belirtilmektedir. Bu kadar yaygın olarak kullanılan bu yönteme biraz daha yakından bakmak için küçük sayılarla bir örnek yapalım [7] , sonrasında sayıların 128 bitlik olarak seçildiğinde güvenliğin ne derece güçlü olacağına birlikte karar verelim.

p ve q gibi iki asal sayı seçelim:
p=257, q=337
N sayısını hesaplayalım:
N=p.q è257.337=86609
Totient fonksiyonu hesaplanır: (örnekte bu değeri Pn olarak gösterelim)
Pn = (p-1)(q-1) è 256.336=86016
e Açık anahtar olarak kullanılacak sayı seçilir. Bu sayı 1 ile Pn değeri arasında ve Pn ile aralarında asal olmalıdır.
e=17 olarak seçelim
d gizli anahtarını hesaplayalım: Gizli anahtar Modulo Pn tabanında e sayısının tersidir, bu sayıyı hesaplamak için;
d.e = 1 (mod Pn) è d= e^-1 mod 86016 è Genişletilmiş Oklid Algoritması” ile hesapladığımızda d değeri yani e=17 sayısının mod 86016 tabanındaki tersi d= 65777 çıkıyor.
Bu durumda açık anahtarımız (e,N) = (17,86609), gizli anahtarımız (d,N) = (65777,86609) oluyor.
Örnek olarak 18537 mesajını açık anahtar ile şifrelemek için;
c= m^-1(mod N) è  c= m^-1(mod 86609) è c= 12448
Şifrelediğimiz mesajı gizli anahtarla açmak için;
m= d^-1(mod N) è m= d^-1(mod 86609) è m= 18537          
Görüldüğü gibi sadece 2 basamaklı asal iki sayılar ile bulduğumuz N sayısını oluşturan p ve q sayısını ve bunları kullanarak d gizli anahtarını bulmak zorlu bir işlemdir, bu p ve q sayılarının 128 bitlik iki sayı olduğunu düşünürsek N sayısını çarpanlara ayırma işlemi için imkansız derecede zor demek yanlış olmaz. İşte bankacılık işlemleri, e-ticaret vs. gibi uygulamalarda gizli anahtarımızı saklı tutarak bize güvenlik sağlayan protokol, çok büyük iki asal sayıyı çarpanlara ayırarak p ve q sayılarının hesaplanamıyor olmasından başka bir şey değildir.
2.2.  IDEA şifreleme algoritması:
İnternationel Data Encryption Algorithm (IDEA) 1991 yılında Xuejia Lai ve James Massey tarafından İsviçrenin Zürih şehrinde tasarlanmış bir blok şifreleme algoritmasıdır. Bu algoritma DES yerine üretilen PES (Proposed Encrypted Standart) algoritmasının geliştirilmiş versiyonudur. DES algoritmasına göre yaklaşık 2 kat daha hızlıdır ve bilinen en güçlü şifreleme algoritmalarından biridir. Ascom Tech firmasının tescilli ürünüdür ve ticari kullanımlar için bu firmaya ücret ödemek gerekmektedir. 128 bitlik ana anahtar kullanılır. Şifrelenecek olan metin 64 bitlik bloklara bölünür, daha sonra 16 bitlik 4 eş parçaya bölünür. Her parça için şekil 2 deki gibi matematiksel işlemler yapılarak şifrelenir. İşlemler mod  (mod 65536) da yapılır.


Şekil-2: IDEA algoritmasında blokların şifrelenmesi [8]
16 bitlik 4 eş parçaya bölünmüş olan blokları şifrelemek için 128 bitlik anahtar 16 bitlik 8 parçaya bölünür, daha sonra 128 bitlik anahtar bu şekilde 16 bitlik 52 anahtar oluşana kadar kaydırılır. Bu oluşan 16 bitlik anahtarlar, daha önce bölünmüş 16 bitlik metin ile 8 tur boyunca şekildeki gibi çarpma, toplama ve XOR (2 tabanda toplama) işlemlerinden geçirilir ve 8. Tur sonunda şifrelenmiş metin olarak çıkar. Şifre çözme işleminde bu kez işlemlerin tersi yapılır.
2.3.  MD5 Hash alma algoritması:
MD5 (Message Digest 5), Ron Rivest tarafından 1991 yılında geliştirilmiş bir özetleme algoritmasıdır. Girdi boyutu ne kadar olursa olsun 128 bitlik sabit bir çıktı verir. Bu 128 bitlik çıktı küçük olduğundan çakışma olma (aynı özeti veren başka mesajlar) riski oldukça yüksektir. Ancak kırılabilir olduğu matematiksel olarak ispat edilmediğinden günümüzde veri güvenliğinin kontrolü için kullanılmaya devam etmektedir. MD5 algoritmasında şekil 3 teki gibi matematiksel işlemler yapılır, burada yapılan işlemleri kısaca anlatmak gerekirse;


Şekil-3: MD-5 Hash algoritmasının çalışması [9]
-          Mesaj 128 bitlik bloklara ayrılır, daha sonra 128 bitlik blok 32 bitlik 4 eşit parçaya bölünür.
-          İlk 32 bit ile diğer 3 bitin F fonksiyonunda geçirilmiş hali XOR edilir.
-          F fonksiyonundan geçmiş değerle XOR edilmiş blok daha sonra Mi sabit değeriyle XOR edilir.
-          Mi değeriyle XOR edilmiş blok daha sonra Ki sabit değeriyle XOR edilir.
-          Ki sabit değeriyle XOR edilmiş 32 bitlik değişkenlerin s bitleri sola dairesel olarak kaydırılır.
-          S bitleri sola kaydırılmış 32 bit ikinci 32 bitle XOR edilir.
-          Tüm bu işlemlerin yapıldığı ilk 32 bit ikinci 32 bite yazılır.
-          İkinci bit üçüncü bite yazılır.
-          Üçüncü bit dördüncü bite yazılır.
-          Dördüncü bit ilk bite yazılır.
-          Bu işlem 64 tur tekrar edilir ve her 16 turda bir F fonskiyonu değişir.
MD5 algoritması ile özet alma, sunucuda şifrenin saklanması, mesajın bütünlüğünün korunması, mesajın imzalanması gibi farklı amaçlarla kullanılabilir. Bir sunucuya veya sisteme oturum açmak için şifremizin doğrulanması gerekir. Bu doğrulama sistemde saklanan şifremizin girdiğimiz şifreyle karşılaştırılması şeklinde olacaktır. Bunun için şifremizin sistemde saklanması gerekir. Şifreler açık olarak değil de özeti alınmış bir şekilde saklanır. Sisteme veya veri tabanına sızmış bir saldırgan için şifremizin özetini ele geçirmek zor olmayacaktır. Eğer özet alma fonksiyonu güçlü değilse şifrenin kırılması bu yöntemle zor olmayacaktır. PGP şifreleme algoritmasında MD5 gönderilen mesajın özetinin imzalanması amacıyla kullanılmaktaydı ancak MD5 in 128 bitlik çıktısı önceden hazırlanmış tablolar (rainbow table atak) kullanılarak yapılan ataklarla kırılabildiğinden PGP’ nin yeni versiyonlarında SHA256 özet alma algoritması kullanılmaktadır. Burada mesaj özetinin 128 bit olması ciddi bir çakışma riski oluşturuyor ancak bu algoritmaya yapılan atakların verdiği sonuçlar halen faydalanabilecek bir algoritma olduğunu gösteriyor.

3.      Pretty Good Privacy (PGP) Şifreleme Algoritması

1991 yılında Phil Zimmermann tarafından bulunmuştur. Amerikan senatosundan çıkan bir yasa tasarısı teklifine göre, her şifreleme yazılımı kendi içinde bir backdoor olmalı böylece hükümet istediğinde insanların güvenli haberleşmelerini okuyabilmeliydi. Phil Zimmermann bu durumun kendisini bu algoritmayı icat etmesinde motive ettiğini söylemiştir.


Şekil-4: Phil Zimmermann
Asimetrik ve simetrik şifrelemenin güçlü özelliklerinden faydalanır. Asimetrik şifreleme sayesinde anahtar değişimi kolaydır, simetrik şifreleme ile güvenli ve hızlıdır. PGP ile şifreleyerek e-posta gönderimi bize gizlilik ve bütünlük güvenlik servislerini sağlar.
3.1.  PGP ile şifreleme algoritmasının çalışma yapısı:
-          İlk olarak mesaj sıkıştırılır, böylece hem mesajın boyutu büyük oranda küçültülerek şifreleme öncesi performans artışı sağlanır, aynı zamanda sıkıştırılmamış bir metine göre daha güçlü bir güvenlik sağlanır.
-          Kullanıcıya ait Mouse ve klavye hareketleriyle oluşturulmuş 128 bitlik rastgele bir anahtar oluşturulur. Bu anahtarla IDEA şifreleme algoritması kullanılarak daha önce sıkıştırılmış metin şifrelenir.
-          Daha önce oluşturulan 128 bitlik rastgele anahtar RSA şifreleme algoritması kullanılarak karşı tarafın açık anahtarı ile şifrelenerek gönderilir. Burada açık anahtar PGP nin dünya genelindeki sertifika sunucularından temin edilir. Böylece açık anahtar rastgele bir kaynaktan alınmadığı için özellikle ortadaki adam ataklarına karşı e-posta göndereceğimiz kişiyi doğrulamış oluruz.
-          Karşı tarafa gönderilen şifreli metin ve 128 bitlik anahtar, yukarda yapılan işlemin tersi gerçekleştirilerek açılır.


Şekil-5: PGP şifreleme ve şifre çözme diyagramı [10]
3.2.  PGP ile dijital imzalama:
Orijinal mesaj şekil 6 da gösterildiği şekilde, MD5 algoritmasıyla özet değeri alınıp kendi özel anahtarımızla şifreleyip karşı tarafa göndeririz, karşı taraf bu mesajın şifresini açtığında aynı şekilde MD5 ile özetini alarak bizim gönderdiğimiz özet ile karşılaştırır. Böylece karşı taraf bizi doğrulamış olur.


Şekil-6: Gönderilen mailin dijital olarak imzalanması [11]

4.      Kriptolojik algoritmalara yapılan ataklar

Kriptoloji kendi içinde Kriptografi ve Kriptoanaliz olarak ikiye ayrılmıştır. Kritografi, şifreleme kısmıyla ilgilenirken kriptoanaliz, şifrelemenin güvenliğiyle ilgilenir. Bu amaçla kriptolojik mekanizmalara yapılan atakları inceler ve algoritmanın bu ataklara karşı olan güvenliğini test eder. Bu çok geniş kapsamlı ve teknik bir konu olduğundan bu konuyu derinlemesine incelemeyeceğiz ancak makalede kavramların yerine oturması için önemli atakları tanıyacağız.
4.1.  Kaba Kuvvet atakları:
Kriptolojide bir protokolün güvenliği, algoritmanın kırılmasının maliyetine bağlıdır. Zaman, fiziksel gereksinim bu maliyetlere örnek olarak verilebilir. Maliyetin ölçülmesinde kaba kuvvet atakları önemli bir ölçüm birimidir. Kaba kuvvet saldırılarında şifre olası tüm ihtimaller denenerek yapılır. Önlem olarak, algoritmaları geliştirenler saniyede girilebilen şifre sayısını azaltmayı amaçlamıştır. Örneğin WPA algoritmasında saniyede girilebilen şifre sayısı oldukça azaltılmıştır. Ayrıca web sitelerinde kullanılan captcha uygulamaları kaba kuvvet ataklarını önlemede etkili bir yöntemdir.
4.2.  Rainbow Table Atakları:
Çok sayıda metnin özet değeri alınarak bir tabloda tutulur, atak sırasında bu tabloyla kırılmak istenen özet değeri karşılaştırılarak yapılır. Kısa özet değeri veren MD5 için tehlikeli bir ataktır. Bu saldırıya önlem olarak sunucular öncelikle MD5 algoritmasından daha güçlü algoritmalara geçerek özet değerini 128 bitten daha yukarıya çekmiştir, ayrıca özet değerini aldıktan sonra özel bir tuz değeri ekleyerek özet değeri karmaşıklaştırılarak kısmi bir çözüm sağlanmıştır.
4.3.  Ortadaki adam (Man in The Middle) atakları:
Ortadaki adam atakları kriptolojide güvenliğin ölçülmesi için önemli bir yer tutar. Kriptoloji biliminin tarihteki ilk varoluş amacı mesajların güvenliğini düşmandan korumak olduğu düşünülürse, Kriptoloji bu atak üzerine kurulmuştur demek çok yanlış olmaz. İki nokta haberleşirken trafiği dinleyen ve atak yapmak isteyen 3. bir kişi her zaman vardır diye düşünmek ve buna göre davranmak zorundayız. Bu atak pasif olabileceği gibi aktif bir atak olup engelleme, değiştirme amaçlı olabilecektir. Şekil 7 üzerinden konuyu anlatmak gerekirse;
-           Kurban bilgisayar bankacılık işlemi yaparken bankaya ait açık anahtarla mesajını şifreleyip göndermesi gerekiyor bu sayede gönderdiği mesaj sadece bankanın gizli anahtarıyla açılabileceğinden açık kanalda herhangi biri tarafından okunmaması bekleniyor.
-          Ancak burada atak yapan kişi kurbana banka yerine kendi açık gönderiyor ve kurban bu anahtarla imzalama yaparak gönderiyor. Bu durumda kullanıcı gelen sertifika uyarısını dikkate almadığı varsayılıyor.
-          Saldırgan kurbandan gelen mesajı alıp bankaya kendisi iletiyor ve bankadan gelen cevabı kullanıcıya kendisi iletiyor.
-          Bu şekilde trafiği tekrar ettirerek tüm trafiğin içeriğini görebiliyor ve istediği tüm bilgileri elde edebiliyor.

Şekil-7: Ortadaki adam atağı [12]
Bu saldırıya önlem olarak daha önce bahsettiğimiz gibi çift taraflı doğrulama sağlayan sertifika makamları vardır. Bu çözüm sayesinde yukardaki örnekte kullanıcıya sertifikanın geçerli olmadığı uyarısı yapılmış ancak kullanıcı hatası olduğu ve bu uyarıyı yok saydığı varsayılmıştır. Kullanıcı tarafında yapılan hatalara karşı güvenlik çözümleri ne kadar güçlü olursa olsun saldırıların engellenmesi mümkün değildir. Bu ataklara çok sayıda örnek verilebilir, sosyal mühendislik saldırıları gibi farklı atak tipleriyle birleştirilerek saldırılar çeşitlendirilebilir. Bu yüzden kullanıcıların bilinçlendirilmesi bilgi güvenliği için çok önemlidir.

5.      Uygulama

Öncelikle Mozilla Thunderbird uygulaması üzerinde Enigmail eklentisini kuruyoruz, eklentiyi kurarken Windows için GnuPG bileşeni kurulacaktır. Kurulum sırasında ortak ve gizli anahtarımız aynı zamanda gizli anahtarı unutmamız ya da silinmesini talep edeceğimiz durumlar için kullanabileceğimiz bir Revokation Certificate (sertifika kurtarma) oluşturulur. Kurulum sonrası açık anahtarımız PGP sunucularına gönderilir. Böylece bize mail göndermek isteyen kişi açık anahtarımızı bu sunuculardan indirebilecek.

Yeni mail göndermek için açtığımız pencerede artık bize kırmızı yazılı olarak mesajın şifresiz gideceğine dair bir uyarı gelecektir, buraya yazılı alana tıkladığımızda aşağıdaki gibi pencere açılıp bize şifreleme seçenekleri sunacaktır. Burada “Mesajı şifrele”, “Mesajı imzala” seçeneklerini seçiyoruz. Böylece mesajı şifreleyerek saldırganların okuyamamasını ve mesajı imzalayarak alıcı tarafa mailin bize ait olduğunu, sahte olmadığını ispatlamış oluyoruz.

Maili gönder dediğimizde karşımıza Enigmail Anahtar seçimi penceresi çıkıyor, bu bölümde kayıp anahtarı indir butonuna basarak maili göndereceğimiz kişiye ait açık anahtarı indiriyoruz.

Son aşamada bize Passphrase ekranı çıkıyor, bu kısma enigmail kurarken belirlediğimiz şifremizi giriyoruz ve e-postamızı şifreleyerek gönderiyoruz.

Gelen maili açmak için aynı şekilde şifre girmek gerekecektir, şifreyi girdiğimizde mail açık metin olarak ve gönderen doğrulanmış olarak açılacaktır.

Şifreyi girip gelen maili incelediğimizde, gönderen mailin anahtarına ve kimliğine ait bilgiler yer alıyor, Ayrıca Enigma eklentisinin bu versiyonunda anahtar paylaşımı için RSA algoritmasını, mesaj doğrulaması yapmak üzere özet değeri almak için SHA256 algoritmasını kullanıldığını görüyoruz.

Sonuç
Yazının giriş bölümünde bahsedildiği gibi, siber güvenlik konusunda büyük resmi görüp, mail güvenliği ve onun uygulanması için gerekli olan kriptolojik protokoller konusuna odaklanmak ve PGP konusunu uygulanabilir bir şekilde açıklamak hedeflendi. Siber suçların ve bu suçlara bağlı mağduriyetlerin giderek arttığı günümüzde, bu saldırılara karşı önlemler almak gerekmektedir. Siber suçlar istatistiksel olarak incelendiğinde e-posta güvenliğinin ne kadar önemli olduğu açık olarak görülmektedir. Bu yüzden e-posta güvenliğini PGP ile koruma altına almak, ataklara karşı kurumlara veya kişilere önemli bir koruma sağlayacaktır.







Referanslar
[2] Muhammed Ali Bingöl, Tubitak uzman araştırma görevlisi, Kablosuz Ağlarda Güvenlik ve Mahremiyet ders sunumu
[3] Muhammed Ali Bingöl, Tubitak uzman araştırma görevlisi, Kablosuz Ağlarda Güvenlik ve Mahremiyet ders sunumu
[4] THE RADICATI GROUP, INC. A TECHNOLOGY MARKET RESEARCH FIRM PALO ALTO, Email Statistics Report, 2015-2019