Showing posts with label sızma testi. Show all posts
Showing posts with label sızma testi. Show all posts

Tuesday, March 31, 2015

Elektrik kesintisi ve PLC güvenliği

Çocukken “elektrikler kesikti çalışamadım hocam” derdik, bugün yaşanan geniş çaplı kesinti sırasında ise “siber saldırı var hocam” sözünü çokça duyduk. Bugün yaşanan elektrik kesintisinin bir siber saldırı olduğunu ima etmiyorum, sadece bugün popüler olan bir konuyu ele almak istedim.


PLC, ICS ve SCADA nedir ve neden önemlidir?
Özünde aynı şey, üretim hattı veya makineleri yönetmek için kullanılan sistemlerdir. Protokol ve/veya üretici farkı olsa da temelde programlanabilir bir mikroişlemci sayesinde fabrika veya üretim otomasyonu yapmamızı sağlarlar.
Terimlere kısaca bakacak olursak;
PLC: İngilizce “Programmable Logic Controller” yani programlanabilir mantıksal denetleyici kelimelerinin baş harflerinden oluşmaktadır.
ICS: İngilizce “Industrial Control Systems” yani endüstriyel kontrol sistemleri kelimelerinin baş harflerinden oluşmaktadır.
SCADA: İngilizce “Supervisory Control and Data Acquisition” yani Kapsamlı ve entegre bir Veri Tabanlı Kontrol ve Gözetleme Sistemi kelimelerinin baş harflerinden oluşmaktadır.
Hedefe özel yazılmış zararlı yazılımların megastarı olarak adlandırabileceğimiz STUXNET’in ortaya çıkmasıyla bu sistemlerin siber saldırıların hedefi olabileceği gerçeği geniş kitlelerin dikkatini çekti.
Otomasyon sistemlerinin hedef alındığı saldırılar aslında yeni değildir ve ilk örnekleri soğuk savaş yıllarında görülmüştür. Soğuk savaşın en yaygın olarak anlatılan siber saldırı hikayelerinden birisi (CIA tarafından resmi olarak teyit edilen bir olay olmadığı için bu aşamada “hikaye” demek zorundayız) de 1982 yılında Sibirya Boru Hattında yaşanan patlamaydı. Rusya’nın en önemli boru hattı projelerinden birinin sonuna yaklaşan dönemin Sovyet yönetimi bu boru hattını yönetecek bir yazılıma sahip olmadıklarını farkedince bu eksikliklerini A.B.D’nin elindeki yazılımlardan birini çalarak gidermeye karar verir. Fransız istihbarat örgütünün uyarısı üzerine CIA Rusların çalmaya çalıştığı koda bir hata ekleyecek 1982 yılının Temmuz ayında boru hattında bir patlamaya neden olurlar.
SSCB Tarafından patlamaya konu Sibirya Boru Hattı anısına basılmış bir pul. 

“Gerçek dünya” olarak adlandırabileceğimiz fiziksel boyutta herhangi bir şeyi kontrol eden herhangi bir yazılımı ele geçirebilmek, şüphesiz hepimizin hayal gücünü devreye sokar. Trafik ışıklarını kendi geçişimize göre yönetebilmek, asansörün her zaman bizi katta beklemesi, köprüden ücretsiz geçmek, emniyet şeridini kontrol eden kameraların bize ceza yazmaması, mağaza alarmını devre dışı bırakmak, gibi yüzlerce senaryo aklımıza gelir. Bunların bir uzantısı olarak da, belki de filmlerde görmeye alışkın olduğumuz ve dünyayı yok etmeye çalışan “deli profesörler” gibi bir nükleer tesisi patlatmak veya bir ülkenin elektriklerini tamamen kesmek gibi daha “fantastik” senaryolar aklımıza gelebilir.
Bütün ülkenin elektriğini kesmek?
Bugün yaşanan geniş çaplı elektrik kesintileri siber odaklı geniş çaplı komplo teorilerine neden oldu. Bu konulara bulaşmış birisi olarak gerçek durumumuz hakkında biraz araştırma yapma ihtiyacı duydum.
PLC’ler nasıl bulunur?
İnternete bağlı PLC sistemleri bulmak için kullanılabilecek onlarca farklı yöntem vardır, bunlardan bazıları;
  1. Arama motorlarının kullanımı
  2. ERIPP veya scan.io projelerinin sonuçlarından faydalanmak
  3. Port taraması yapmak
Port taraması yapmak kaynak ve saldırgan IP’lerin hedef sistemler tarafından tespit edilmesi gibi belli ölçüde risk almayı gerektirdiği için ilk tercih edilen yöntem olmayacaktır. Bunun yerine arama motorları her ne kadar daha sınırlı sonuçlar verse de ilk aşamada daha hızlı bir yaklaşım olacaktır.
Aşağıdaki bir kaç örnekte Google aramaları ile bulduğum internete açık bazı PLC sistemlerini görüyorsunuz.

Yukarıda: SIMATIC PLC'leri tespit etmek için kullanılabilecek bir Google arama sorgusu

Yukarıda: Bulunan SIEMENS SIMATIC PLC'lerden birinin arayüzü

Yukarıda: Başka bir PLC arayüzü


Yukarıda: Rüzgar enerjisinden elektrik üreten bir istasyonun günlük enerji üretim değerleri tablosu. Google araması ile bulundu.


Yukarıda: Yaygın olarak kullanılan ROCKWELL marka bir PLC'nin internete açık arayüzü

Yukarıda: Başka bir PLC'nin ağ bağlantıları tablosu

Google aramaları dışında ShodanHQ gibi internete bağlı belli cihazları endeksleyen arama motorlarının da saldırganlar tarafından hedef bulmak için kullanıldığını biliyoruz.
Aşağıda bazı ShodanHQ arama sonuçlarını görebilirsiniz. Aramaları Türkiye ile sınırlandırıp belli başlı PLC üretici isimlerini kullanarak yaptım ve ilk çıkan sonuçların ekran görüntülerini aldım. Daha detaylı aramalarla sonuç sayısı artacaktır.








Gerçek durum nedir? 
2008 yıllarının ortasında başlayan ve internete bağlı PLC sistemleri endeksleyen SHINE (SHodan INtelligence Extraction) projesi 2013 yılının sonuda 1,000,000’dan fazla PLC’nin internete bağlı olduğunu ve her gün yüzlerce yenisinin eklendiğini açıklamıştı 2014 yılının sonlarında yayınladığı rakam ise 2,100,000’i geçmişti.
Amerika Birleşik Devletleri, Almanya ve Çin gibi sanayisi gelişmiş ülkelerden oluşan ülkeler dünya genelinde internete bağlı PLC sistemlerinin 1,800,000’den fazlasını barındırıyor. A.B.D. ile Almanya’nın toplamı dünya genelinde internete bağlı PLC sistemlerin %49’unu barındırıyor.
2014 yılının son aylarında Türkiye’de internete bağlı 16,348 PLC sistem tespit edilmiş. PLC’lerin internete bağlı olmasının oluşturduğu en önemli problemlerden biri şüphesiz yüksek güvenlik riskleridir. PLC’lerin temellerinin atıldığı yıllarda siber güvenlik konusu ne yazık ki çok gündemde değildi. Hatta bugün de internetin temelinde yatan pek çok “güvenilmez” uygulama o yılların naif mimari yaklaşımlarından kaynaklanmaktadır.
Günümüzde kullanılan pek çok PLC yalıtılmış iç ağlarda çalışacakları varsayılarak tasarlandığı için güvenlik özellikleri genelde ikinci plana itilmiştir.
PLC Güvenliği için neler yapılabilir?
İnternete bağlı otomasyon sistemlerinin güvenliğinin sağlanabilmesi için atılabilecek en önemli adım üreticilerin bu konuda harekete geçmesi olacaktır. O gün gelene kadar ise, her konuda olduğu gibi, güvenliği sağlama sorumluluğu biz kullanıcılar üzerindedir.
1. Sistemlerin mevcut durumunu anlayın
PLC sistemleriniz üzerinde yaptıracağınız güvenlik testleri size sistemlerinizin mevcut güvenlik seviyesi hakkında somut bilgiler verecektir. PLC sistemlerinin güvenliğini sağlamak için bütçe ayırmak ilk bakışta mantıklı gelse de kapsamlı güvenlik testleri ve risk analizlerinin sonucunda belki de bu sistemlere para harcamaya gerek olmadığı ortaya çıkacaktır. Durumu anladıktan sonra harekete geçmek daha doğru olacaktır.
2. Dokümantasyon
Evet, sıkıcı konular. Herşeye prosedür yaz, prosedürleri uygula, güncelle, vs. Ama neyin nasıl yapılması gerektiğini ortaya koymadan ve buna uymadan PLC gibi kritik sistemler üzerinde yapılacak her işlem (en basit güncellemeden sistem mimarisi değişikliklerine kadar) yeni zafiyetlerin ortaya çıkmasına neden olabilir.
3. Eğitim
Sistemleri idare eden personelin PLC konusunda eğitim alması sistemlerin daha güvenli ve verimli çalışmasını sağlar. Eğitimler sırasında PLC güvenliği konularına da değinmek önemlidir.
4. Subnetleri unutmayın
Bilgisayar ağlarında yaptığımız gibi PLC ağlarını da birbirinden bağımsız altağlara ayırmak güvenlik açısından fayda sağlar.
5. Erişimi denetleyin
PLC’lere kimin hangi şartlarda ve hangi işlemleri yapmak için erişebildiğinin belli olması şarttır. Bu erişimlerin ve yapılan işlemlerin kayıt altına alınması hem operatör hatalarını azaltabilecek bir çalışmanın temelini oluşturur hem de yetkisiz müdahalelerin kısa zamanda tespit edilmesini sağlar.
6. Sistemleri yalıtın
Kimsenin sistemleri dışarıdan yönetmesi gerekmiyorsa PLC'nin internetle bağlantısı olmadığından emin olun. Bu bağlantının bir şekilde (yanlış kablolama, altağ değişikliği, vb.) yanlışlıkla sağlanmadığından emin olmak için düzenli olarak kontrol edin.
7. Sistemleri izleyin
PLC üzerindeki işlemleri takip edip yetkisiz veya olmaması gereken işlemlerin tespit edilmesini sağlayacak bir yapının mutlaka kurulması gerekmektedir.
PLC güvenliği konusunda da, tıpkı ağ güvenliğinde olduğu gibi, 5 yıl öncesinin “saldırganın içeri girmesini engelleyelim” yerine “saldırganlar eninde sonunda sızacak bunu mümkün olduğunca hızlı tespit edip etkisiz hale getirelim” yaklaşımı günümüz tehditlerine karşı daha uygun bir yaklaşımdır. Güvenliği “sağlanan” bir şey olmadığını ve sürekli izlenmesi gerektiğini hatırlamakta ve bunun özellikle, PLC’ler gibi fiziksel etkileri olabilecek sistemler için, daha da önemli olduğunu bilmekte fayda var.

Sunday, January 25, 2015

Saldırı Ağacı

1998 yılında Salter tarafından ortaya atılan “Saldırı Ağacı” (ing: Attack Tree) fikri bir sistemin, çeşitli saldırılara karşı güvenliğinin, biçimsel ve metodolojik olarak ortaya konulmasını sağlamaktadır. Türkçe olarak ifade edersek, güvenliğini sağlamaya çalıştığım sisteme “kim ve nasıl saldırabilir?” sorusuna yanıt oluşturacak bir çalışmadır.


Kolay ve hızlı bir çözüm olması nedeniyle Türkiye’de genel olarak kabul gören zafiyet temelli güvenlik yaklaşımından farklı olarak saldırı ağacı veya STRIDE gibi yaklaşımlar kuruluşunuzun bilgi güvenliği seviyesine daha bütünsel bir bakış açısı sağlar.

Zafiyet temelli yaklaşım, kısaca, sistem üzerindeki güvenlik zafiyetlerinin tespit edilmesi (otomatik zafiyet tarama aracı, sızma testi, vb.) ve bunları ortadan kaldıracak veya istismar edilmesini engelleyen gerekli önlemlerin alınması olarak özetlenebilir. Daha Saldırı Ağacı ise sistemde tespit edebileceğimiz zafiyetlerden yola çıkarak güvenliği sağlamaya çalışmak yerine saldırganların amaçlarından yola çıkarak sistemin güvenliğini sağlamaya çalışmaktadır.

Yaklaşımların her ikisinin de eksik kaldığı yerler vardır şüphesiz ancak amacımızın sistemin güvenliğini sağlamak olduğunu düşünürsek sadece zafiyetlerden yola çıkarak tam bir sonuç elde etmemizin mümkün olamayacağı görüşündeyim.

Saldırı ağacını hazırlamak
Güvenliğini sağlamaya çalıştığımız sistem için bir saldırı ağacı hazırlamak için aşağıdaki adımları izleyebiliriz;
  • Ağacın köküne karar verin
  • Dalları belirleyin
  • Bütünlük açısından değerlendirin
  • Ağacı “budayın” (fazlalıkları atın)
  • Sunum


Ağacın kökü
Genel olarak ağacın kökünü saldırganın hedefi oluşturacaktır. Aşağıdaki basit örnekte ağacın kökünü oluşturan ve saldırganın hedefi olabilecek olay “ofisten laptop çalmak” olarak belirlenmiştir. (baştan söylemekte fayda olabilirdi tabii, saldırı ağacı ters duruyor). Görüldüğü gibi saldırganın amacına ulaşmak için kullanabileceği yöntemler belli bir akış içerisinde ortaya konmaktadır.



Dallar
Saldırı ağacının diğer bileşenlerini tespit etmek için “beyin fırtınası” yapılıp aklımıza gelenleri sırayla yazabiliriz. Bazı önemli noktaları gözden kaçırmamıza neden olabileceği için bu tavsiye edeceğim bir yöntem olmaz. Kök sebep ve alt bileşenler arasındaki geçiş VE veya VEYA anlamında olabilir. Yukarıdaki örnekte bağlantılar VEYA anlamındadır ve saldırganın kullanabileceği çeşitli yöntemler listelenmiştir. Bağlantıları VE olarak oluşturmak saldırganın birden fazla araca ihtiyaç duyacağı durumların ortaya konuşması için daha etkili olacaktır.
Alt bileşenleri ortaya çıkartmak için saldırganın amacından yola çıkıp ihtimal dahilinde olan her saldırı vektörünü listeleyip sonrasında bir alt kademeye geçmek daha uygun olacaktır.

Bütünlük değerlendirmesi
Ağacın ilk hali ortaya çıktıktan sonra her bileşeni “bu sonuca ulaşabilecek başka bir yol var mı?” sorusu ile tekrar değerlendirmek faydalı olacaktır. İlk çalışmadan gözden kaçabilecek bazı saldırı vektörleri de bu şekilde ortaya çıkar. Sonuçların yanında saldırı yöntemlerinin ve saldırganların da tekrar değerlendirilmesi gerekecektir. Bu sayede saldırı ağacını farklı bilgi ve beceri seviyesine sahip saldırganlara karşı da etkili hale getirme imkanımız olacaktır.

Ağacı budayın
Çalışma tamamlandıktan sonra dalları ele alıp bu saldırıya karşı bir önlem alındı mı? Bu saldırı veya sonuç başka bir dalda ele alınmış mı? Gibi soruların cevaplarını arayarak gereksiz veya tekrar eden durumlar çalışmadan çıkartılabilir.

Sunum
Ele aldığınız sistem ne olursa olsun saldırı ağacının bir sayfadan uzun olmamasında yarar var. Bu sayede, amacımız olan, saldırıları anlaşılır ve kolay algılanır şekilde göz önüne serme işini gerçekleştirmiş oluruz. Sayfalarca devam eden bir saldırı ağacı ile, saldırganın kök amacını göremeyeceğimiz için, etkin bir sonuç elde etmemiz zorlaşacaktır. Bu durumla karşılaşılması halinde çalışmayı daha küçük birimlere ayırıp aynı sistemin farklı bileşenleri için ayrı saldırı ağaçları hazırlanması daha iyi olacaktır.

Saldırı ağacının anlamlandırılması
Korumaya çalıştığımız sisteme karşı düzenlenebilecek saldırıları listelemek iyi bir çalışma olacaktır ancak tek başına savunmamızı nasıl tasarlamamız gerektiği konusunda bilgi veremez. Diyelim ki saldırı ağacımızı ortaya çıkarttık ve bu sene bilgi güvenliği için 100.000 TL bütçe ayırdık. Bu çalışma bize hangi yatırımları yapmamızın daha faydalı olacağı konusunda bilgi vermez. Güvenlik seviyemizi nasıl iyileştirmemiz gerektiği konusunda bir fikir edinebilmek için saldırı ağacına bazı değerler atamakta fayda var.

Saldırı ağacını anlamlandırmak için kullanılabilecek çeşitli yöntemler arasında, bu yaklaşımı bilgi güvenliği alanına 1999 yılında tanıtan Bruce Schneier’in ele aldıkları hala geçerliliklerini korur.
Saldırıların maliyetlerini kullanmak: Saldırıyı düzenlemek için saldırganın ihtiyaç duyacağı kaynaklar söz konusunu saldırın gerçekleşme ihtimalini etkileyecek bir unsurdur. Biraz önceki bütçemize dönersek 100.000TL ile gerçekleşme ihtimali düşük ve 300.000TL kaynak gerektirecek saldırılara karşı tedbir almaya çalışmak yerine, saldırı ağacında bulunan ve çok daha düşük maliyetli saldırılara karşı tedbir almak daha mantıklı olacaktır. Bu yaklaşımı etkin bir şekilde kullanabilmek için saldırgan profillemesinin dikkatlice ve detaylı olarak yapılması önemlidir. Saldırıyı düzenlemek için gerekli 300.000TL’lik yatırım sıradan saldırganlar için büyük bir tutarken, başka devletler için önemsiz ve kolayca harcanabilecek bir paradır.
Hedef sistem değerini kullanmak: Savunmayı korumaya çalıştığımız sistemlerin değerine göre belirlemek yatırımlarımızı en kıymetli varlıklarımızı koruyacak şekilde yapmamızı sağlar.

Bütüncül yaklaşımın önemi
Yukarıda gördüğümüz laptop çalma konusunu zafiyet taraması veya sızma testi yaklaşımıyla ele alırsak yapacağımız araştırma bize kapıdaki kilidin matkapla delinebileceğini gösterebilirdi (sarı olarak işaretlediğim kutu). Biz de buna karşılık matkapla delinmeyen veya delinde bile kapının açılmasına imkan vermeyen bir kilitle değiştirilmesini önerebilirdik. Bu durumda işimizi çok iyi yapmış ve zafiyeti ortaya çıkartmış olmamıza rağmen bütün olası saldırılar arasında sadece 1 tanesini ortaya çıkartmış oluruz.



Saldırı ağacı gibi bütüncül modeller bilgi güvenliği seviyemize daha geniş bir açıdan bakmamıza imkan verdiği için güvenlik seviyemizin durumu hakkında daha anlamlı bilgiler vermektedir.


Mart ayının sonuna kadar benimle temasa geçecek Kamu kurumları (Bakanlıklar, Askeri kurumlar, Emniyet Teşkilatı, Müsteşarlık ve Genel Müdürlükler) için ücretsiz olarak temel saldırı ağacı çalışmalarını yapacağım. Bu çalışmanın mevcut güvenlik seviyemizin bir röntgenini de çekmemize imkan sağlayacağı için faydalı olacağına inanıyorum. 

Saturday, December 13, 2014

Risk seviyesi ve sızma testleri

O: Sen hacker misin?
Ben: (bilmiş bir gülümsemeyle) Evet
O: (Heyecanla) Hadi birilerinin Facebook’unu patlatalım o zaman
Ben: (sinirli bir şekilde) ben saldırmıyorum
O: (biraz şüpheci) nasıl yani?
Ben: (Sıkılmış) hackerların ne yaptığını bilmem kurumları güvenli hale getirmemi sağlıyor
O: (hayal kırıklığına uğramış) Hacker değil misin yani?
Ben: (konuyu değiştirme çabasıyla) Tamagotchi’leri hatırlar mısın?

Buna benzer bir konuşmayı onlarca kişiyle belki yüzlerce kez yaptım. Bilgi güvenliği ile hacking konusunun nasıl bir araya geldiğini, aradaki köprünün ne olduğunu, benim ve meslektaşlarımın neden “hacker” olmadığımızı anlamakta zorlanıyorlar.

Siber suçluların düşünce yapısını anlama çabaları, saldırganlar tarafından kullanılan araç ve yöntemlere hakim olmaktaki amacımız siber saldırılardan doğacak riskleri doğru tespit edip gerekli önlemlerin alınmasını sağlamaktır.

İş hayatımızın ve ulusal güvenliğimizin çok önemli bir parçasını oluşturan bilişim sistemlerinin güvenli olması gerekiyor.  Kurumlarımızın asıl işinin bilişim sistemlerinin güvenliği olmadığını düşünürsek bilgi güvenliği konusunda aslında bir risk yönetimi işidir. 
Siber saldırılara karşı bizi koruyacak binlerce farklı çözüm ve yöntem vardır bunların hepsini alacak bütçeye sahip olmadığımızı düşünürsek bilgi güvenliği konusundaki amacımız siber saldırılardan doğacak riskleri kabul edilebilir seviyeye indirmek olacaktır.

Bilişim sistemlerinin suçluların iştahlarını kabartmalarına neden olan başlıca faktörlerden birisi internet üzerinden işlenen suçların, gerçek dünyada işlenen suçlara göre risk/kazanç oranını daha cazip olmasıdır. Gerçek dünyada bir market soymak isteyecek bir saldırgan yaralanma, ölüm veya yakalanma gibi riskleri göze almak zorundadır. İnternet üzerinden ise, aynı bakkalın sahibinin kredi kartı numarasını almaya çalışmak ise fiziksel risk oluşturmamaktadır. 
Riskin kazançtan büyük olduğu fiziksel dünyada suç işlemek yerine benzer maddi kazançlar sağlayacak suçu, kazancın alınan riskten büyük olduğu, internet ortamında işlemek çok daha caziptir.

Suçluların iştahını kabartan bilişim sistemlerimizi korumak ise zordur. Bütün sistemlerin hacklenebilir olması sadece bütçe kısıtlarında kaynaklı bir durum değildir. 

Tipik Hollywood hackerını ele alırsak karşımıza çıkacak görüntü aşağı yukarı şöyledir:


Resim 1: Hollywood hackerini Powerpoint'ta çizdim :)


Karanlık bir oda, siyah fon üzerine yeşil yazıların aktığı 3-4 monitör, gece gündüz demeden klavyede bir şeyler yazan saldırgan. Siber suçlularla ilgili bu karikatür bir bakıma güvenliği sağlamamakta karşılaştığımız temel bir soruna atıfta bulunmaktadır. Sistem yöneticileri gün içerisinde onlarca kullanıcının farklı sorunlarıyla ilgilenmektedir. 
Bilgi güvenliği konusunda uzmanlaşmış ve buna odaklı çalışsak bile güvenlik duvarından antivirüse kadar geniş bir yelpazede ürünlerin günlük olarak işletilmesi ve yönetilmesi görevini üstlenmekteyiz. Buna karşılık saldırgan sadece sizinle ilgilenmektedir. Savunma tarafı onlarca belki de yüzlerce problem ve bileşenden oluşan bir bulutun içerisinde her gün mücadele ederken saldırganın bu buluta sızmasını sağlayacak tek bir yol bulması yeterlidir. 

Resim 2: Savunma bulutu ve Hacker

Matematiksel olarak, savunmanın her seferinde kazanarak en düşük oranda %100 başarı sağlaması gerekirken saldırgan tek bir sefer, biraz önce tanımladığımız buluta sızmasını sağlayacak bir zafiyet bulması yeterlidir.

Savunmayı zora sokan bir diğer etken de zamandır. Yapacağımız bir çalışma sonucunda ağ ve sistemlerinizin bugün bilinen bütün zafiyetlerden arındırılması, bugünün istismar kodlarına karşı güvende olmasını sağlamak mümkündür. Bu güvenli noktadan saniyeler sonra bulunacak bir zafiyet bile ağ ve sistemleri bu çalışma öncesindeki güvensiz durumlarına geri getirecektir. Zaman geçtikte sistemler üzerinde tespit edilen zafiyetlerin sayısı artmaktadır. 
Her fırsatta düzenli olarak yapılmasını tavsiye ettiğimiz güncellemeler güvenlik seviyemizi belli bir noktada tutmamızı sağlayacaktır. Bazı durumlarda bu güvenlik güncellemelerinin (yamaların) çıkması sistemleri tehlikeye atmaktadır. Yazılım üreticilerinin güncellemelerle birlikte yayınladıkları dokümanlarda hangi zafiyetleri giderdikleri açıkça bellidir. Saldırganların bir kısmı bu güncellemelerin yayınlanmasını bekler ve güncelleme dokümanlarında anlatılan zafiyeti hedef alan saldırıları geliştirirler. Bu sayede güncellemenin yayınlandığı gün ile sistemlerin güncellendiği tarih arasındaki süre boyunca sistemlere karşı kullanabilecekleri ve geçerli bir saldırıya sahip olurlar.


Resim 3: Güncelleme ve risk seviyesi ilişkisi

Yukarıdaki grafikte zamanla değişen risk seviyemizi görebiliriz. Güncelleme yapılana kadar artan risk seviyemiz saldırgan açısından bakıldığında saldırgana fazladan avantaj sağlayan bir ortam oluşmasına neden olmaktadır.

Güncellemelerin yapılması savunma için firewall kurallarının denetlenmesi, IPS/IDS imzalarının güncellenmesi ve lisanssız yazılım kullanılmaması gibi temel bir hijyen kuralıdır. Günümüzün siber tehditleriyle başa çıkabilmek için savunma düşünce yapısı yeterli değildir. 

Sadece aldığımız önlemlere odaklanmak ve bunların işlerini doğru yaptıklarını varsaymak bilgi güvenliği açısından yapabileceğimiz ölümcül bir hata. Sistemlerimizi ne kadar koruyabildiğimizi anlamak, nerelerde iyileştirmeler yapmamız gerektiğini görmek ve, o ana kadar hiç aklımıza gelmemiş, saldırı vektörlerini belirlemek için saldırganların düşünce yapısını anlamalıyız. 

Benim gibilerin yaptığı çalışmalar kapsamında saldırı vektörlerini ortaya koyarak, kullanabilecek yöntemleri ve araçları kullanarak kurumsal ağ ve sistemlere sızmaya çalışmak kurumların mevcut güvenlik seviyesine bir saldırganın gözüyle bakmamıza imkan veriyor.



Sunday, November 23, 2014

Bilgi Güvenliğinin 8 Temel Kuralı

Bilgi güvenliği konusunda karar vermek zordur. Yapacağımız değişiklik mevcut güvenlik önlemlerimizi devre dışı bırakmamalı veya mevcutta olmayan bir güvenlik açığına neden olmamalıdır.

Resim 1: Bilgi Güvenliğinin 8 Kuralı (temsili)

Genel olarak bilgi güvenliğini etkileyebilecek bir konuda karar verirken uyulması gereken 8 temel kural sayesinde hata yapma ihtimalimizi en aza indirebiliriz. Göreceğiniz gibi bu kurallar bilgi güvenliği alanında uzun yıllardır çalışanlar tarafından tecrübe yoluyla öğrenilmiş ve uygulanmaktadır. Kevin Day “Inside the Security Mind” kitabında bu 8 kurala uzun uzadıya değinmektedir. Bu yazıda her kuralı kısaca ele alacağım.

Kural 1: En düşük yetki kuralı
Kural 2: Değişiklik kuralı
Kural 3: Güven kuralı
Kural 4: En zayıf halka kuralı
Kural 5: Ayrım kuralı
Kural 6: 3 aşamalı süreç kuralı
Kural 7: Önleyici faaliyet kuralı
Kural 8: Anında ve doğru tepki kuralı

Kural 1: En düşük yetki kuralı

En önemli ve en yaygın olarak uygulanan kuraldır. Kullanıcı ve/veya sistem yetkilerinin sadece personelin ve/veya sistemin işini yapabileceği kadarıyla sınırlandırılmasıdır. Bu kuralı uygulamaya koymak için kullanıcıya veya sisteme hiç yetki vermeyip, kademeli olarak işini yapmasını sağlayacak kadar yetkinin verilmesidir. Böylece kullanıcının sadece işini yapacak kadar yetkiye sahip olması sağlanır.

Kimin, hangi şartlarda, hangi sistemlere ulaşabileceğini belirlemek ve bu sayede doğru yetkileri belirlemek için aşağıdakilere benzer basit şablonlar kullanılabilir.

Kullanıcı: Sıradan ofis kullanıcısı
Erişime izin verilen saatler: Mesai saatleri içinde
Yetki: Çalıştığı birim ekranları
İnternet erişimi: Var
Lokal admin: Hayır (kendi bilgisayarı üzerinde uygulama çalıştıramaz)
Dışarıdan erişim yetkisi: Yok
VPN Kullanıcısı: Yok

Kullanıcı: Yönetici
Erişime izin verilen saatler: Mesai saatleri içinde ve dışında
Yetki: Çalıştığı birim ekranları
İnternet erişimi: Var
Lokal admin: Hayır (kendi bilgisayarı üzerinde uygulama çalıştıramaz)
Dışarıdan erişim yetkisi: Yok
VPN Kullanıcısı: Var

Kullanıcı: Bilgi İşlem Personeli
Erişime izin verilen saatler: Mesai saatleri içinde ve dışında
Yetki: Genel
İnternet erişimi: Var
Lokal admin: Evet
Dışarıdan erişim yetkisi: Var
VPN Kullanıcısı: Var

Kural 2: Değişiklik kuralı

Değişim daimidir. Bu bilişim sistemleri için de geçerlidir. Bilişim sistemlerini etkileyecek değişikliklerin doğru yönetilmesi, koordine edilmesi ve güvenlik açısından değerlendirilmesi önemlidir. Burada anahtar kelime “yönetim”dir, değişim yönetilmelidir. Yönetilmediği takdirde kurumsal ağın güvenlik düzeyinin korunması mümkün olmayacaktır.  Değişim yönetmek için kullanılabilecek bazı yöntemler aşağıdadır.

Değişiklileri denetleyin: Neye göre değişiklik yapacağız? Değişiklikleri kim denetleyecek? Gibi basit soruların yanıtlanmasını sağlayacak bir yöntem geliştirilmelidir.

Etkili bir yöntem geliştirilmelidir: Değişiklik yönetimi ancak kimseye yük olmadan kullanılabilirse işe yarar. Aksi takdirde kimsenin uygulamayacağı ve etkili olmayacak bir süreç olarak atıl kalır.
Her durumda uygulanmalıdır: Bu sürece uyulmadan hiç bir değişiklik yapılmamalıdır. Ufak bir güncelleme için bütün izin prosedürünün uygulanması şart olmayabilir ama bu güncellemenin kaydının tutulması şarttır.

Güvenlik konusunda değişiklikler dikkatle ele alınmalıdır: En küçük firewall kuralı değişikliği bile izin sürecine uygun olarak yapılmalıdır. Güvenlik konusundaki değişiklikler tek bir kullanıcının kararına bırakılmamalı, mümkünse bir kaç kişinin birlikte vereceği kararla yapılmalıdır.

İstemciler de dahil edilmelidir: Önceden onaylanmış bazı değişikliklerin bir listesinin oluşturulmasında fayda var. Buna örnek olarak Windows ve antivirüs güncellemeleri verilebilir.

Deneme tahtası olmayın: Yeni çıkan yazılım ve donanımlarda bazı sorunlar olabilir. Bunun önüne geçmek için “1 yıldan kısa süredir piyasada olan ürünler ağa bağlanmaz” gibi basit kurallar konulabilir. Güncellemeler konusunda bu kadar uzun süre beklemek doğru olmayacaktır, ancak bazı güncellemelerin sorun yarattığı da görülmüştür. Bu konuda karar sizindir, en kötü senaryo olarak bütün sistemi baştan yüklemek zorunda kalabileceğinizi düşünerek bir karar verebilirsiniz

Standartlaştırın: Tek bir üreticinin showroomu haline gelmek zorunda değilsiniz tabii ki ama kurumsal ağınızda bulunan cihaz ve yazılım türlerini sınırlandırmanın güvenlik açısından faydaları olduğu kadar yönetim işlerini de kolaylaştıracağı ortadadır.

Kural 3: Güven kuralı

Kimseye güvenmeden yaşayabilsek biz güvenlikçilerin işi çok kolay olurdu. Ne yazık ki kurumsal ağımız ve bilgilerimiz konusunda güvenmek zorunda olduğumuz pek çok farklı kişi ve sistem var. Örneğin ağımıza erişim verdiğimiz personelimize güvenmek zorundayız, bazı tedarikçilerimize veya iş ortaklarımıza güvenmek zorundayız. Bu nedenle kime nasıl güveneceğimize karar vermemiz gerekmektedir.

Kime güvenebileceğimiz konusunda karar verirken önyargılarımıza kurban olmamamız lazım. Örneğin aşağıda soldaki resim çoğumuzun “hacker” dendiğinde gözünde canlanan kişi iken, sağdaki resimde banka memuru gibi duran Gary McKinnon 2002 yılında A.B.D. ordusuna ait 97 bilgisayara sızan gerçek bir saldırgandır. Caner Koroğlu’na fotoğraf için teşekkür ederim.

Resim 2: "Hacker" fikri ve gerçek "hacker"

Kime güvenebileceğimize karar verirken kullanabileceğimiz basit bazı prensipler şunlardır:

Kontrol edemediğinize güvenmeyin: Tedarikçiler, iş ortaklarınız, danışmanlarınız gibi kontrol edemediğiniz ve kurumunuzun güvenlik politikalarına uymayan hiç bir şeye güvenmeyin.

Aslında kime güvendiğinizi bilin: Güzel bir atasözümüz “söyleme sırrını dostuna, o da söyler dostuna” der. Kurumsal dünyada da geçerlidir, siz X şirketine güvenirsiniz, X şirketinin de Y şirketine güvendiğini düşünürsek, siz de hiç tanımadığınız Y şirketine güvenmiş olursunuz.

Politikalarınızı uygulayın: Güvenlik politikaları her durumda uygulanmalıdır, söyleyecek fazla bir şey yok, uygulanmalıdır.

Örneğin bir tedarikçiniz toplantı sırasında laptopuyla kurumsal ağınıza bağlanmak istiyor. Bu durumda cevaplanması gereken bazı sorular şunlardır;
Cihaz bizim güvenlik politikalarımıza uyuyor mu?
Cihazın güvenliği sağlanıyor mu? (Laptop’ta lisanslı ve güncel bir antivirüs var mı?
Gerek olursa cihazın loglarına erişebilir miyim?
Gerek olursa cihazın güvenlik seviyesini ölçebilir miyim?
Laptop’un bilinen bir güvenlik zafiyeti var mı? (örneğin Windows XP mi?)


Kural 4: En zayıf halka kuralı

“Zincir en zayıf halkası kadar güçlüdür” klişesinden ötesi var aslında. Saldırganlar gelişmiş iletişim algoritmanızı kırmakla veya yeni aldığınız güvenlik cihazını atlatmakla uğraşmazlar. Onun yerine kullanıcılarınıza yönelik bir sosyal mühendislik saldırısı yaparlar. Zincirin zayıf olduğu soyut bir düşüncenin ötesine geçmemiz ve saldırganların kimsenin bilmediği güncellenmemiş sunucunuzu bulabileceği gerçeğini kabullenmemiz lazım.

Resim 3: Zincir en zayıf halkası kadar güçlü

Güvenlik duvarımıza 20.000 TL, sızma tespit ve engelleme sistemimize 15.000 TL ve antivirüse hiç para yatırmadıysak (yoksa) kurumsal güvenliğimize yaptığımız toplam yatırım 0 TL’dir ve güvende değiliz.

Zafiyet taraması ve sızma testleri yaptırarak zayıf halkayı saldırganlardan önce bulmak bu nedenle çok önemlidir.
Yaygın olarak görülen bazı “zayıf halkalar” aşağıdadır:

Default kurulumlar: Sunucuları, cihazları ve hatta güvenlik cihazlarını fabrika yaralarında bırakmak bu sistemler üzerinde bilinen zafiyetlerin kurumsal ağınıza girmesine neden olur.

Zayıf parola kullanımı: Diyelim ki kurumsal ağınızda 1.000 adet güçlü (güçlü parola konusunda bir yazıma http://www.alperbasaran.com/2012/12/parola-guvenligi.html adresinden ulaşabilirsiniz) ve 2 adet zayıf (123qwe veya 456asd gibi) parola var. Bütün ağınızın güvenliği 123qwe parolasına bağlıdır.

Yetersiz loglama ve izleme: Logları izlememek ve anlamlandırmamak saldırıları farketmenizi zorlaştıracağından bütün ağınızı tehlikeye atar.

Yetersiz yedek alma: Yedekleri alınmayan bilgiler ve cihaz konfigürasyonları hem veri kaybına hem de iş kaybına yol açar.

Demo amaçlı kurulumlar: Denemek için kurulan cihaz ve sistemler anlık olarak zafiyet seviyenizi arttırır.

Güncel olmayan antivirüs ve IPSler: Güncel olmayan antivirüs yazılımları sizi belirli saldırılara ve zararlı yazılımlara karşı korumasız bırakacağından hiç faydaları olmayacaktır.

Kural 5: Ayrım kuralı

Güvenliğin başlıca amacı korumamız gereken sistemleri tehdit ortamından ayırmak olduğunu düşünürsek bu kuralın ne kadar önemli olduğu bellidir. Bu kuralı uygularken sadece tehdit ortamından ayırmayı değil, sistemleri de birbirlerinden ayırmamız gerektiğini hatırlamalıyız.

Aynı sunucu üzerinden birden fazla sistemin çalışması sunucu kaynaklarının verimsiz kullanımı sonucunda sorunlar yaratabileceği gibi güvenlik seviyesini de olumsuz etkiler. Diyelim ki aynı sunucu üzerinde web, eposta ve FTP sunucularımız çalışıyor. Web sunucumuz zaten dünyanın kalanıyla paylaşmak istediğimiz internet sayfamızı barındırıyor. Eposta sunucumuz ise şirkete ait kritik bilgileri de barındıran eposta iletişimimizi tuttuğumuz yer. Biraz önce tarif ettiğim yapı ile web sunucumuzu ele geçiren bir saldırganın epostalarımızı okuyabileceği bir ortam yaratmış oluyoruz.

Ayrım kuralını uygularken aşağıdakilere dikkat etmeliyiz:
Kritik sistem ve verileri ayırın: Ayrım sadece sistemlerle sınırlı kalmamalı, önemli veya gizli verilerinizi de ayırmanızda fayda var.

Saldırıya açık sistemleri ayırın: Saldırı alması daha muhtemel olan veya bilinen zafiyetleri olan sistemleri ayırın.

Güvenlikle ilgili olanları ayırın: Güvenlik cihazlarınızı ve sistemlerinizi ayırın.

Benzerleri gruplayın: Benzer sistemleri veya aynı güvenlik seviyesinde tutmak istediğiniz sistemleri ve verileri gruplayın.

Kural 6: 3 aşamalı süreç kuralı

Yeni alınacak güvenlik çözümleri 3 aşamalı bir süreç olarak değerlendirilmelidir. Böylece satınaldığımız ama bir türlü kurulumunu tamamlayamadığımız veya istediğimiz kadar iyi çalışmayan sistemlere para harcamaktan kurtuluruz.
Değerlendirmemiz gereken 3 aşama; kurulum, izleme ve bakımdır.

Kurulum: Yeni ürün alımı detaylı bir analiz sürecinden sonra yapılmalıdır. “Şu anda nasıl bir güvenlik seviyemiz var?” sorusunu cevapladığımız ve eksik gördüğümüz yerleri iyileştirmek için bir çözüm düşündüğümüz aşamadır. Bu aşamanın sonucunda bir ürün almaya karar verebiliriz.

İzleme: Kurulan cihazı kimin yöneteceğine karar verilmesi, bu cihaza ilişkin nelerin takip edileceği, cihazın işletim sisteminin ne zaman ve nasıl güncelleneceğinin belirlenmesi gereklidir. Güvenlik cihazları aktif cihazlardır ve etkili şekilde kullanılmaları da buna uygun bir modelin oluşturulması ile mümkündür.

Bakım: Genel olarak güncellenmemiş güvenlik cihazları bir süre sonra saldırıları (özellikle son güncellemeden sonra çıkanları) tespit edemeyeceğinden işlevlerini yitirirler. Bunun farkında olmamak bizde sahte bir güven duygu yaratacağı için güvenlik cihazının hiç olmaması kadar tehlikeli bir durumdur.


Kural 7: Önleyici faaliyet kuralı

Büyük ihtimalle uygulaması en zor kuraldır. Güvenlik konusunda proaktif önlem almak için yönetime başvurduğumuzda net veya bilinen bir sorunu adreslemediğimiz için derdimizi anlatmamız zor olabiliyor. Bu nedenle de proaktif tedbirleri almak genelde zordur.

Ağınızdaki sistemlerin bilinen zafiyetlerini yakından takip etmek, düzenli kontroller yapmak ve 3 aşama kuralının sağlıklı bir şekilde işletilmesi proaktif güvenlik konusunda atılabilecek en temel adımlardır.

Düzenli olarak sızma testi yaptırmak ve bulguları adresleyerek çözüm bulmak ise proaktif bilgi güvenliği süreçlerinin oturmasını sağlayacaktır.


Kural 8: Anında ve doğru tepki kuralı

Kabul edin veya etmeyin saldırı altındasınız. Şu ana kadar bir saldırı tespit edememiş olmanız saldırı tespiti ve dolayısıyla önlenmesi konusunda yetersiz bir yapınızın olduğunun kanıtıdır. Biraz iddialı bir cümle oldu ama ne yazık ki gerçek bu.

Saldırıları tespit etmek için gerekli ve etkili bir sistem kurulması şarttır, sekizinci kuralın işletilmesi de buna bağlıdır.

Saldırı tespit edildiğinde yapılması gereken şeylerin bazıları aşağıdadır;

Paniklememek: Güvenlik ihlali dünyanın sonu değildir, paniklemeyin, sadece süreci işletin.

Müdahale sürecinizi belirleyin: Çok uzun ve sayfalar dolusu formun doldurulmasını gerektiren bir süreç olması gerekmez. Tutarlı ve etkili bir plan olması yeterlidir.

Kime haber vereceğimizi bilelim: Güvenlik ihlali tespit eden veya güvenlik ihlali olmasından şüphelenenlerin kime ve nasıl haber vermesi gerektiği belli olmalıdır.

Herkes plana uymalıdır: Panik durumunu veya olayın aslından daha da yıkıcı hale gelmesini engellemek için herkesin plana uyması şarttır.


Olay sonrası: Olayın gerçek büyüklüğü anlaşılmalıdır. Önceki örneklerden gidersek; web sunucusuna sızıldıysa buradan eposta sunucunuza geçilmediğinden emin olmalısınız. Olay iyi anlaşılmalı, tekrarlanmaması için önlemler alınmalı ve her şey kayıt altına alınmalıdır.

MITRE ATT&CK Gerçek Hayatta Ne İşimize Yarar?

  Rusya kaynaklı siber saldırılar webinarı sırasında üzerinde durduğum önemli bir çalışma vardı. MITRE ATT&CK matrisini ele alıp hangi...