Çift - Çok Faktörlü Kimlik Doğrulama

Değerli arkadaşlar, merhaba! Bu yazımızda sizlere '2FA' ve 'MFA' kavramlarından bahsedeceğiz.

Web sitelerinde, mobil uygulamalarda veya oyunlarda kullandığımız hesapları korumak için genelde kullanıcı adı ve parola kullanırız. Bunun sebebi, kötü niyetli insanların hesaplarımıza erişmesini engellemektir. Fakat günümüz teknolojilerine baktığımız zaman çeşitli saldırı türleri ile beraber sadece 'kullanıcı adı – parola” kullanmak pek de mantıklı olmayacaktır. İşte burada devreye ilk önce 2FA girmektedir. Türkçe karşılığı "Çift Faktörlü Kimlik Doğrulama" olan 2FA (Two Factor Authentication), kullandığınız parolanızın yanında size, ek güvenlik önlemi sağlar. 2FA'nın görüldüğü şekiller 'genelde' şöyle sıralanabilir:

- E-mail hesabınıza gelen onay kodu

Bu yöntemde; kaydolduğunuz sistem, kullanıcı adı ve parolanızı girdikten sonra mail adresinize bir onay kodu yollar. O onay kodu olmadan sisteme giriş yapamazsınız.

İçerdiği Riskler:

1. Kullanıcı adı ve parolayı girdikten sonra bu bilgiler, POST metodu ile taşınır. Dolayısıyla bir saldırgan, mail adresinize gelen onay kodunu göremese bile kullanıcı adı ve parolanızı görebilir; ona göre de e-posta adresinizi ele geçirmeye çalışabilir.

2. E-posta hesabınız sessizce çalınmış olabilir. Dolayısıyla size gelen onay kodu, başkaları tarafından da görülebilir ve kolayca işlem yapılabilir.

3. Brute Force (Kaba Kuvvet) saldırısına maruz kalabilir.

4. E-posta adresinizi ele geçiren saldırganlar, hesaplarınızı kolayca çalabilir çünkü korumanızı e-posta adresiniz ile sağlamışsınız.

- Telefonunuza SMS olarak gelen onay kodu

Bu yöntemde; kaydolduğunuz sistem, kullanıcı adı ve parolanızı girdikten sonra telefonunuza SMS ile bir onay kodu yollar. O onay kodu olmadan sisteme giriş yapamazsınız.

İçerdiği Riskler:

1. Telefonunuz saldırıya uğramış olabilir ve içerisinde SMS kopyalan veya ekran görüntüsü alan kötücül bir yazılım barındırıyor olabilir. Bu kötücül yazılım, kopyaladığı SMS'leri ve ekran görüntülerini yazılımın sahibine (saldırgana) iletir.

2. Brute Force (Kaba Kuvvet) saldırısına maruz kalabilir.

3. Telefonunuzu kaybedebilir veya çaldırabilirsiniz.

- Tek kullanımlık şifre üreten çeşitli yazılımlar

Bu yöntemde ise kullanıcı adı ve parolanızı girerken veya girdikten sonra, telefonunuza indirdiğiniz, 30 saniyede bir doğrulama kodu üreten uygulamalar sayesinde uygulamanıza giriş yapabilirsiniz. 30 saniye içinde üretilen kodu girmeniz gerekir çünkü 30 saniye sonra başka bir kod gösterilecektir. Bu uygulamalara örnek olarak kullanılan en popüler iki uygulama; "Google Authenticatior" ve "Authy" uygulamalarıdır.

İçerdiği Riskler:

1. Bu yöntem her ne kadar diğer yöntemlerden güvenli olsa da diğer yöntemler gibi geçilmeleri (by-pass) mümkündür.

2. Onay kodu oluşturan uygulamayı kullandığınız cihaz saldırıya uğramış ve ele geçirilmiş olabilir.

3. Onay kodu oluşturan uygulamanın kendisinde bir güvenlik açığı bulunabilir ve bu açık sayesinde verilen kodlara erişilebilir.

4. Bu uygulamalara bir hesap tanıtırken uygulama, her hesap için otomatik olarak bir 'anahtar (key)' üretir. Bu key sayesinde, onay kodu üreten uygulamayı silseniz veya telefonunuzu kaybetseniz bile başka bir cihazdan aynı key değerini girerek ait olduğu hesaba erişmenizi sağlayacak onay kodlarını alabilirsiniz. Bu durumda key değerinizi kaybedebilir veya çaldırabilirsiniz. Key'i kaybederseniz o hesaba girişiniz artık mümkün olmayacaktır. Bundan korunmak için bu key değerlerini off-line (internetle bağlantısı olmayan) bir ortamda saklamanız önerilir. Kâğıda yazıp kimsenin göremeyeceği, bulamayacağı bir yere saklamak veya internetle ilişiği olmayan bir depolama cihazına saklamak (örneğin USB) gibi.

Google Authenticatior ve Authy Karşılaştırması

- İkisi de hem Google Play Store hem de AppStore üzerinde mevcuttur.

- İkisi de 30 saniyede bir onay kodu oluşturur.

- Google Authenticatior, giriş yapılırken hiçbir güvenlik önlemi sunmaz; direkt olarak giriş yaparsınız fakat Authy, hem bir pin kodu hem de parmak izi ister. Dolayısıyla telefonunuzu gerçek hayatta biri eline aldığında bu uygulamaya giriş sağlayamayacaktır.

- Authy uygulamasına web üzerinden de giriş sağlayabilirsiniz.

- Dark Web üzerinde Google Authenticatior kodlarını çalan bir yazılım ürettiklerini iddia eden hackerlara rastladık.

MFA

Türkçe karşılığı "Çok Faktörlü Kimlik Doğrulama" olan MFA (Multi Factor Authentication), sanılanın aksine az önce saydığımız üç yöntemi kapsamaz. Bir MFA, en az 3 çeşit korumadan oluşur. Bunlar; zihnimizde yer alan bilgi (parola), yanınızda taşıdığınız bilgi (telefondaki kod) ve sizi siz yapan bir özelliktir (parmak izi, yüzünüz). Yani e-mail, SMS ve kod üreten 2FA uygulamalarının hepsini kullanıyor olmanız, MFA uyguladığınız anlamına gelmez. Burada en güvenli olan yöntem; e-mail, kod üreten uygulama ve bir fiziksel özelliğinizi kullanan güvenlik önlemlerini aynı anda kullanmak olacaktır.

Kullanıcı Güvenlik Önerileri:

1. SMS ile doğrulama yöntemi yerine e-mail ve kod üreten uygulamaları eş zamanlı olarak kullanın. Telefonunuzu kaybetmeniz veya telefonunuzun bozulması her zaman mümkündür.

2. Ne olduğu belli olmayan uygulamaları telefonunuza indirmeyin, her linke tıklamayın. Bu bir apk dosyası olabilir veya önemli bir yerden gelen bir mail olabilir.

3. Telefon üzerinden bir siteye, uygulama yerine tarayıcıdan (Chrome, Brave vb.) giriyorsanız şifrelerinizi kaydetmeyin ve işiniz bittikten sonra oturumu sonlandırın.

4. Telefonunuza indirdiğiniz uygulamaların istediği izinlere dikkat edin. Uygulama, amacı dışında bir şey için izin istiyorsa şüphe duymalısınız. Örneğin bir oyunun, galerinize veya kişilerinize erişim istemesi gibi.

Site veya Uygulama Geliştiricileri İçin Öneriler:

1. Kullanıcı adı ve parola giren bir kullanıcı düşünün. Kullanıcı adı doğru fakat parola yanlışsa "parolanız yanlış" şeklinde bir mesaj vermemeniz gerekir. Bu, herkes için parolanın yanlış olduğunu ifade edebilir ama bir saldırgan için 'kullanıcı adının doğru olduğunu ifade eder'. Dolayısıyla böyle bir durumda "kullanıcı adı veya parola hatalı" tarzında, herhangi bir bilgi vermeyen mesajlar gösteriniz.

2. "...kullanıcı adı ve parolanızı girerken veya girdikten sonra..." şeklinde bir cümle kurduk. Bir yere bir bilgi girdiğiniz zaman bu bilgiler POST metodu ile taşınır. Bu bilgileri açık bir şekilde göstermemek adına trafik yaratan önemli verileri şifrelemeniz gerekir.

3. Ne kadar zor olsa da kullanıcıyı, işini bitirdikten sonra çıkış yapması için teşvik edin.

Nasıl Hackleniyor?

[!] Bu kısımda anlatılacak olan her şey tamamen eğitim ve farkındalık amacıyla anlatılmıştır. Anlatılanların herhangi bir yasa dışı faaliyette kullanılması durumunda sitemiz herhangi bir sorumluluk kabul etmeyecektir!

2FA ByPass

1. Bu yöntemde kullanıcının parolasını bilmemiz gerekir. Bunun ismi ‘uygulama hatası’ndan kaynaklanan güvenlik açığıdır. Yazılımcılar tarafından kaynaklanır. Birçok durumda gördüğümüz; sitede kullanıcı adı ve parola ‘girildikten sonra’ 2FA yönteminin getirilmesi durumudur. Yani siz kullanıcı adı ve parolanızı giriyorsunuz, ondan sonra size SMS kodu, e-mail kodu veya kod üreten uygulamadaki kodu soruyor. Bu durumda kullanıcı, kullanıcı adı ve parolasını girdiğinde ‘doğrulama kodunu girmeden önce’ aslında giriş yapmış konumda oluyor yani kullanıcı onaylanmış oluyor. Daha sonra doğrulama kodunu girdiğinizde siteye giriş yapmış bulunuyorsunuz. Buradaki sorun şu: Bazı siteler, kullanıcı adı ve parola girildikten sonra hemen giriş yapmış gibi duruyor. Yani aslında doğrulama kodunun pek bir anlamı kalmıyor. Yani bazı siteler, 2FA aşamasını gerçekten tamamlayıp tamamlamadığınıza bakmıyor. Bu bir yazılımcı hatasıdır.

>>> Burada kullanıcı, giriş yapmayı dener.

POST /login-steps/first HTTP/1.1

Host: vulnerable-website.com                      //sitenin adresini ifade eder

...

username=carlos&password=qwerty           //giriş yapan kullanıcının kullanıcı adı ve şifresini ifade eder

 

>>> Eğer böyle bir kullanıcı mevcutsa bunlar 200 OK ile gösterilir

HTTP/1.1 200 OK                               //200 kodu, ‘onaylandı’ anlamına gelir

Set-Cookie: account=Carlos              //hesabın ‘Carlos’a ait olduğu bilgisi kaydedilir.

GET /login-steps/second HTTP/1.1   //Doğrulama sayfasını GET ile ister.

Cookie: account=Carlos

 

>>> Doğrulama sayfası geldiğinde sistemde oluşturulan doğrulama kodu size gönderilir ve bunu oraya yazıp göndermeniz istenir. Eğer kodlar eşleşiyorsa sisteme girebilirsiniz.

POST /login-steps/second HTTP/1.1

Host: vulnerable-website.com

Cookie: account=carlos

...

verification-code=123456               //oluşturulan doğrulama kodunu ifade eder

Şimdi bunun nasıl geçildiğine bakalım. Bir web sitesine giriş yaptığımızı düşünelim:

Kullanıcı adınız: Cyber

Şifreniz: Worm

olsun. Giriş yaptıktan sonra 2FA sayfasını da başarılı bir şekilde geçmiş olduğumuzu düşünelim; zaten hesap bizim. Giriş yaptıktan sonra URL şu şekilde gözükmüş olsun: https://<siteismi>.com/my-account

Fakat biz, Carlos adında bir arkadaşımızın hesabına girmek istemiş olalım (gerçek hayatta lütfen istemeyin 😊). Kodlu anlatımda en başta ‘username=carlos&password=qwerty’ biz bu satırı almıştık yani Carlos’un şifresini biliyoruz (bunu almanın farklı yolları var). Bunun için kendi hesabımızdan çıkış yapalım ve tekrar giriş ekranına gelelim. Carlos’un bilgilerini girelim ve bizi 2FA ekranı karşılasın. 2FA ekranındayken URL kısmını az önceki gibi değiştirelim. Yani 2FA kısmındayken URL kısmına ‘https://<siteismi>.com/my-account’ yazalım. Eğer sitede gerçekten böyle bir hata varsa Carlos’un hesabına da girmiş olacağız.

Buradaki mantık; zaten kullanıcı adı ve şifre girildiğinde kullanıcı onaylanmıştır ve site, yazılımcı hatası yüzünden 2FA aşamasını net olarak kontrol edemiyordur. Dolayısıyla ortada onaylanmış bir kullanıcı varken URL kısmını sanki gerçekten giriş yapmış gibi değiştirirsek gerçekten de giriş yapacaktır.

2. Bazı durumlarda da uygulamayı veya siteyi tasarlayan yazılımcılar da “Brute Force” tehlikesini görmezden gelir ve buna önlem almazlar. Bunu önlemenin en etkin yolu, birkaç parola denemesinden sonra kullanıcıyı bir süreliğine sistemden kısıtlamaktır. Brute Force, bir kullanıcı adına karşı yapılan sürekli ve otomatik şifre denemeleridir. Bu denemelerin biri tutar tutmaz sisteme erişim sağlanacaktır.

3. En popüler saldırı çeşitlerinden biri de ‘Pass The Cookies’ saldırısıdır. Bu saldırıda saldırgan, çerezlerinizi çalarak hesaplarınıza erişebilir. Çerezler, siteye giriş yaptığınızda tarayıcınıza kaydedilen giriş bilgilerini ifade eder. Siteye bir sonraki girişinizde kullanıcı adı ve şifre istememesinin sebebi çerezlerdir. Site, çerezleri otomatik olarak tanır ve sizi içeri alır. Bu cookies dediğimiz çerezler ise elbette ‘plaintext’ yani düz metin olarak saklanmaz, şifreli bir halde dururlar ama hackerlar ‘Mimikatz’ adlı bir yazılım sayesinde o şifreleri kolayca kırabilir. Bunu, kendinizi hiçbir şekilde güvende hissetmemeniz açısından anlatıyorum.

Bu senaryoda saldırgan, bilgisayarınıza çeşitli yöntemlerle erişir ve çerezlerinizi çalar. Çaldığı bu çerezleri de kendi bilgisayarına import (içe aktarmak) eder. Daha sonra hacker, kendi cihazından siz giriş yapıyormuşsunuz gibi herhangi bir parola ve benzeri doğrulayıcı bir şey girmeden giriş yapar.

Bu saldırı türünden korunabilmek için giriş yaptığınız sitede işiniz bittiğinde çıkış yapmanız gerekir. Kaydolurken veya giriş yaparken – eğer mümkünse – bilgilerinizi kaydetmeyin.

Bu yazımızda anlattıklarımız, kendinizi savunabilmeniz ve önlem alabilmeniz içindi. Bir şeyin ne kadar güzel bozulabildiğini öğrenirseniz, o şeyi o kadar iyi korursunuz.

[!] Bu kısımda anlatılacak olan her şey tamamen eğitim ve farkındalık amacıyla anlatılmıştır. Anlatılanların herhangi bir yasa dışı faaliyette kullanılması durumunda sitemiz herhangi bir sorumluluk kabul etmeyecektir!


Yayınlanma Tarihi: 2022-07-07 00:11:56

Son Düzenleme Tarihi: 2022-07-07 23:06:11