Saturday, August 29, 2020

Bir Önceki Savaşa Hazırlanmak


Savaş tarihinde "ordular her zaman bir önceki savaşa hazırlanır” diye bir söz vardır.

Birinci Dünya Savaşından sonra Avrupa orduları buradan çıkarttıkları derslere bakarak yeni savunma duruşlarını belirlemeye başladı. İlgili olanların bileceği gibi; Birinci Dünya Savaşı Batı Avrupa’da büyük ölçüde orduların kazdıkları siperlerden yürüttüğü bir mücadeleyle geçti. Bunun sonucunda daha iyi tahkimata sahip olanın daha az kayıp verdiği, iyi hazırlanmış bir savunma hattının askerlerin sağlığını da koruduğu gibi pek çok önemli ders çıkartıldı. Fransa bu dersleri en iyi şekilde uygulayan ve buradan çıkarttığı derslerle kendini bir sonraki savaşa hazırlayan ülke oldu. Maginot Hattı’nı bilen bilir.

Peki çıkartılan derslerin sonucu ne oldu? Fransa siper savaşına hazırlanırken Almanya tanklarını ve hava kuvvetlerini hazırladı ve İkinci Dünya Savaşı’nın ilk yarısında bu sayede üstünlüğü elde etti.

Benzer örnekler hemen her savaş için verilebilir. A.B.D. İkinci Dünya Savaşı’ndan öğrendiklerini Vietnam Savaşı’nda kullanamadığı gibi, zararını da gördü.

Sadece ordular değil, havacılık sektörü de benzer bir gelişim izledi ve izliyor. Bir uçak düşünce nedeni araştırılıyor ve olayın tekrarlanmaması için düzeltilmesi gerekenler düzeltiliyor.

Aynı davranış kalıbını siber güvenlik alanında görüyoruz ne yazık ki. Bir güvenlik ihlali yaşanıyor ve genel duruş buradan çıkartılan derslere göre yeniden tasarlanıyor. Kısaca biz de farkında olmadan bir önceki savaşa hazırlanıyor olabiliriz.

Siber güvenlik konusunda güncel tehditlere karşı hazır olmanın 5 temel adımı olacaktır.

Varsayımlardan kurtulmak

“Bütün sistemlerde antivirüs var” dendikten sonra birçok sistemde aslında antivirüsün yüklü olmadığını tespit ettiğimiz kaç tane sızma testimiz olduğunu hatırlamıyorum bile. Benzer şekilde “VLAN ayrımını yaptık” denildiğinde VLAN ayrımının olmadığına defalarca tanık olduk.

Kuruluşların güvenlik seviyesi ne yazık ki çoğunlukla varsayımlara dayanıyor ve çok az durumda bu varsayımların doğru çıktığını görüyoruz. Bu nedenle varsayım yapmaktan kurtulmak şart. Geçerli olabilecek tek varsayım güvende olmadığınızdır.

Eğitim

Hukuk fakültesinden 50 yıl önce mezun olmuş ve hiç avukatlık yapmamış birini avukat olarak güvenir misiniz? Yeni çıkan kanunlardan haberi var mıdır? Aynı şekilde bir muhasebeci olsa? Veya bir doktor? Siber güvenlik alanı, bilişimin her dalında olduğu gibi sürekli değişiyor. Her gün hayatımıza yeni saldırı teknikleri ve tehditler giriyor.

Internette bir ömür boyu okunabileceklerden çok daha fazla ücretsiz kaynak var. Bunları düzenli olarak takip etmek güncel tehditlerden haberdar olmak için çok önemlidir.

Gerçeklerle yüzleşmek

Hacklenebilirsiniz, öncelikle bunu kabul etmeniz lazım. Gerçekler sandığınız kadar tozpembe değil, bunlarla yüzleşin.

Sürekli İyileştirme

Saat başı yeni tehditlerin ortaya çıktığı bir ortamda savunma duruşunuzda son 1-2 ay içerisinde hiç değişiklik yapmadıysanız bu iyiye işaret olamaz. Saldırılar geliştikçe savunmanın da kendini geliştirmesi lazım.

Takip

Güncel saldırılara hazır olmak için belki de en önemli nokta yeni tehditleri takip etmektir. Bunun için hem kuruluş ağındaki riskleri (sistemler ve uygulamalardaki zafiyetler veya geçerli saldırı vektörleri gibi) hem de güncel saldırıları takip etmek lazım. Bu noktada siber tehdit istihbaratı önemli bir yardımcı olacaktır.

 

Siber Tehdit İstihbaratı Nedir?

Siber tehdit istihbaratı kuruluşların siber saldırılarla daha etkin mücadelede ve müdahale etmesini sağlayabilecek önemli bir kaynaktır. Türkiye’de pek çok kuruluşun faydalandığı siber istihbaratın özünde “şu IP adreslerini bloklayın” ötesinde kuruluşunuza neler sağlayabileceğine bakalım.

Etkin bir siber tehdit istihbaratı yapısı kuruluşunuza aşağıdaki konularda da bilgi sağlayabilmelidir;

  • Kuruluş bünyesinde bulunan zafiyetler
  • Zararlı yazılımlar
  • Oltalama saldırıları
  • Hedefli saldırılar

Bilinen saldırgan IP adresleri bir miktar bilgi sağlar elbette ancak bu konu sadece saldırgan kaynak IP adresi hakkında bilgi vermekten ibaret kalıyorsa siber tehdit istihbaratı sürecinizin geliştirilmesi şarttır. IP adresleri “bize kim saldırıyor?” sorusuna sınırlı da olsa bir yanıt verirken “nasıl saldırıyor?”, “saldırganın teknik bilgi seviyesi nedir?” ve “amaçları ne?” gibi önemli soruları da cevapsız bırakır.

Herhangi bir siber güvenlik ihlali yaşandığında ve tespit edildiğinde olay müdahalesi sırasında yapacaklarınız saldırganın başarılı veya başarısız olması arasındaki farkı oluşturabilir.

Siber tehdit istihbaratı nasıl kullanılır?

Herhangi bir kaynaktan gelen veri, bilgi veya istihbarat bir şekilde kullanılırsa kuruluşunuza faydalı olacaktır. Aksi takdirde yapılan çalışmaların etkinliği sınırlı kalacağından sağlayacağı fayda da oldukça düşük olacaktır. İlk aşamada siber tehdit istihbaratı siber ölüm zinciri çerçevesinde düşünülmelidir.

Hatırlayacağınız gibi “Siber Ölüm Zinciri” 2011 yılında Lockheed Martin tarafından ortaya atılan ve siber saldırıların aşamalarının takibi için geliştirilmiştir. Bu zincir siber saldırganların başarılı olabilmek için atmak zorunda kaldıkları adımlardan oluşur.

  1. Keşif: Hedef kuruluş hakkında bilgi toplama ve olası saldırı noktalarının belirlenmesi.
  2. Silahlandırma: Kuruluş bünyesinde tespit edilen güvenlik açıklarını istismar edecek kodun hazırlanması (bu bir USB bellek de olabilir, PDF belgesi de)
  3. Teslimat: Bir önceki adımda oluşturulan silahın hedefe iletilmesi (örn: USB belleğin kargoya verilmesi, mailin gönderilmesi, vb.)
  4. İstismar: Saldırı kodunun hedef tarafından çalıştırılması sonucunda sistemin ele geçirilmesi
  5. Kurulum: Ele geçirilen ilk sisteme ek yazılımlar yüklenmesi ve kalıcı olmak için (bu adımda hedeflerden birisi de bilgisayar yeniden başlatıldığında bağlantının kopmaması olacaktır) gerekli işlemlerin yapılması.
  6. Komuta ve kontrol: Saldırganın içerideki sistemle iletişim kurmasını ve veri alışverişi yapmasını sağlayacak iletişim yapısının kurulması (örn: HTTPS üzerinden tünel)
  7. Hedef üzerinde işlemler: Saldırganın asıl amacını gerçekleştireceği adım burasıdır (veri çalmak, veri şifrelemek, casusluk, vb.)

Bu 7 adımı tamamlayabilen saldırgan başarılıdır. Bu 7 adımdan herhangi birinin engellenmesi durumundaysa saldırgan başarısız, savunma başarılı kabul edilebilir.

İdeal şartlarda siber güvenlik yapısı da bu 7 adımı tespit edip engelleyecek biçimde kurgulanmış olmalıdır. Siber tehdit istihbaratının da aynı yaklaşımla bu 7 adımı tespit etmek ve engellemek için kullanılması gerekmektedir.

Siber tehdit istihbaratı kaynağından gelen IP adreslerinin “bilinen” olduğu unutulmamalıdır. Kısaca bu IP adreslerinin saldırgan davranışları olduğu veya komuta sunucusu (bkz. siber ölüm zinciri 6. Adım) olduğu tespit edilmiştir. Bu noktada saldırganların farklı IP adreslerine sahip olması veya kuruluşunuzu hedef alan farklı bir saldırgan grubu olması halinde bu bilgi çok faydalı değildir. Siber tehdit istihbaratının başlıca amaçlarından birisinin de kuruluşunuza “bilinmeyen” konusunda bir miktar bilgi sağlamaktır. Mevcut siber güvenlik çözümlerinizin tespit edemediği her şey “bilinmeyen” olarak düşünülebilir.

Siber Tehdit istihbaratı entegrasyonu

Yukarıda belirtildiği gibi siber güvenlik duruşu siber ölüm zincirinin bu 7 adımını tespit edip engelleyebilecek şekilde kurgulanmalıdır. Siber tehdit istihbaratının da aynı yaklaşımla siber ölüm zincirine göre kurgulanması faydasını artıracaktır. Bunun için ilk adım olarak siber tehdit istihbaratının aşağıdaki soruları yanıtlayabilmesi gerekmektedir:

  •  Bize kim saldırabilir?
  • Bize kim saldırıyor?
  • Bize nasıl saldırabilirler?
  • İlk sistem ele geçirildikten sonra nasıl yayılabilirler?
  • Dışarıya nasıl veri sızdırabilirler?

Soruların sayısını artırmak için MİTRE tarafından yayımlanan ATT&CK yapısından faydalanılabilir.

Bize kim saldırabilir?

Siber tehdit istihbaratı abonelikleri tarafından sağlanan bilinen saldırgan IP adresleri bu noktada bir girdi oluşturabilir. Belli bir IP adresinin belli bir sektörde faaliyet gösteren kuruluşları hedef aldığı bilgisi bizi de hedef alması muhtemel saldırganlar konusunda fikir verebilir. Bu IP adreslerinin engellenmesi, bildirim tarihinden önce kuruluşumuzla herhangi bir iletişimleri olup olmadığının kontrol edilmesi ve iletişim olduysa ayrıntılı incelenmesi gerekmektedir.

Bize kim saldırıyor?

IPS ve firewall loglarına bakarak saldırı girişimlerinin kaynakları belirlenebilir. Loglar incelendiğinde internete açık sistemlere çok sayıda saldırı geldiğini göreceksiniz. Bu saldırıların bir kısmını mevut IPS yapınız tespit edebilecekken bir kısmını saldırı olarak görmeyecektir. Dolayısıyla ilk aşamada IPS alarmına neden olan IP adreslerini ele aldıktan sonra Firewall üzerinden geçen trafiğin de izlenmesi gerekir. Engellenmesi gereken IP adresleri konusunda USOM (Ulusal Siber Olaylara Müdahale Merkezi) tarafından yayımlanan listeden başlayarak dünya genelinde bu tür IP adreslerini yayımlayan kaynakları da dahil edebilirsiniz. USOM tarafından yayımlanan listeye https://www.usom.gov.tr/zararli-baglantilar/1.html adresinden ulaşabilirsiniz.

Bunun yanında aşağıda örneklerini verdiğim gibi kaynaklar da faydalı olacaktır:

 

 

 

 

Tuesday, July 28, 2020

Siber Güvenlik için Hangi Yazılım Dili?


Kısa cevap “hepsi”, hemen anlatıyorum. 



Siber güvenlik’te sızma testi alanında çalışıyorsanız yazılım dilleri hayatınıza 3 senaryo dahilinde giriyor; 
  1. Kendi araçlarınızı yazmak
  2. Yazılmış araçları anlamak
  3. Kaynak kod analizi çalışmaları


Kendi aracınızı yazmak için


Kendinizi rahat hissettiğiniz herhangi bir dil olur. Python ile yazılmış çok sayıda hazır araç olması, kütüphanelerinin bolluğu ve hemen her konuda en az bir blog yazısı bulabiliyor olmanız kendi araçlarınızı yazmak için Python’u tercih etmenize neden olabilir. 

Keylogger nasıl yazılır? 

Bir keylogger yazılımına ihtiyacımız olduğunu varsayalım, kod aşağıdaki gibi olabilir.





Nasıl çalıştığına bakacak olursak; herhangi bir tuşa basılması durumunda bu tuşun bilgisini “kayitlar.txt” isimli bir dosyaya kaydedecek. “Listener” özelliğiyle de yeni tuş hareketlerini “dinleyecek. Bu kod geliştirilebilir ama en temel haliyle işimizi görebilir. 





Aynı şeyi C’de, Go’da, Ruby’de veya aklınıza gelen herhangi bir yazılım dilinde de yazabilirsiniz. Önemli olan size kolay gelen, sevdiğiniz ve takıldığınız noktada kaynak bulabileceğiniz bir dil olmasıdır.



Yazılmış Araçları Anlamak İçin


Sızma testi veya CTF sırasında bir istismar kodu bulduğunuzu düşünelim, elbette kodu okumadan çalıştırmayacaksınız. Okurken gözünüze aşağıdaki kısım çarpıyor. 


 Ne ki bu? Hex encode edilmiş kısmı çözersek acı gerçekle karşılaşıyoruz: 

 
Evet, root yetkileriyle çalıştırdıysanız bütün bilgisayarınız, değilse “home” dizini üzücü şekilde silecek bir kod parçacığı.

Bu nedenle istismar kodları veya açık kaynak “hacking araçları” kullanılmadan önce mutlaka incelenmelidir.

İstismar kodlarının ve araçların yazıldığı dillere bakarsak genelde karşımıza C, Python, Perl ve son zamanlarda artan Go çıkacaktır. Bunların en azından ne demek istediğini, fonksiyonların işlevleri, hangi kütüphaneleri çağırdıkları ve varsa, dışarıda nereye hangi bilgileri/istekleri gönderdiklerini anlayabilecek kadar bu dilleri bilmek lazım.



Kaynak kod analizi


Uygulamanın veya basit bir Javascript kütüphanesinin kodunu okumak hedef hakkında önemli ipuçlarının yanında var olan güvenlik açıklarını da gösterir. Bu nedenle php, javascript veya .Net gibi yaygın olarak kullanılan web uygulama dillerine aşina olmak faydalı olacaktır.



Kendi araçlarınızı yazmak için kullanacağınız dile anadil diyelim. Yabancı dilleriniz de C, Go, PHP ve Javascript olsun. Anadilinizi iyi, diğerlerini de en azından ne anlatıldığını anlayacak kadar öğrenmeniz gerekiyor. 

LinkedIn’de yazılımcı arkadaşların “framework soruyorlar” diye isyan ettiğine şahit oluyorum. Peki biz ne yapalım?