[TR] - 2FA Bypass

May 16, 2020

Merhaba, bu yazıda 2FA Bypass'dan bahsedeceğim. Ancak önce 2FA'in ne olduğunu açıklığa kavuşturalım.

2FA (Two-Factor Authentication) Nedir?

Herhangi bir siteye kullanıcı adı ve parolanız ile giriş yaptıktan sonra, bu bilgilere ek olarak başka bir güvenlik önmeliminin alınmasıdır. Mesela, Google hesabınıza giriş yapmak için kullanıcı adı ve parolanızı girdiniz ve Google telefonunuza güvenlik kodu gönderdi. Telefonunuza gelen kodu, giriş ekranına yazmadan hesaba erişemezsiniz. İşte bunun gibi önlemlere Two-Factor Authentication deniyor. Genel olarak şu kategorilerden oluşurlar.

  • Bildiğiniz bir şey: Anne kızlık soyadı, ilk öğretmeninizin adı gibi.
  • Sahip olduğunuz bir şey: Telefonunuz, kredi kartı veya herhangi bir donanım aracı.
  • Sizden bir şey: Parmaz izi, iris taraması vs.

2FA Bypass Nedir?

Yukarıda anlattığım gibi, 2FA bizlere fazladan güvenlik sağlar. Ama gelin görün ki teknolojide her zaman olduğu gibi tamamen güvenilir bir şey değildir. Atlatılabilir. Bypass kelimesi de siber alanda bu anlamda kullanılıyor. Herhangi bir güvenlik önlemini atlatmak, bypass etmektir. 2FA için birçok bypass metodu vardır. Hadi inceleyelim.

2FA Bypass Türleri

Direkt Bypass: 2FA ile hiç uğraşmadan direkt olarak endpointe yönelmeye verilen isimdir. Kullanıcı adı ve parola ile X sitesine giriş yaptınız ve site telefonunuza sms göndererek sizden güvenlik kodunu istedi. Siz güvenlik kodunu girme ekranında iken URL'nin "x.com/2FA" olduğunu varsayalım. URL'in sonundaki 2FA'i silerek x.com'a giriş yapmayı deniyoruz.

Paylaşımlı Tokenler İle Bypass: Bu senaryoda, kendi hesabınıza giriş yapıyoruz. 2FA girişinde doğru kodu göndererek, sunucudan gelen HTTP yanıtını yakalıyoruz. Eğer yanıtın içerisinde 2FA için belirlenmiş bir token varsa, o tokeni kopyalıyoruz. Hedef hesabın kullanıcı adı ve parolasını girdikten sonra, endpointe bir istek atıyoruz. Ancak bu isteğin içerisine, daha önceden kopyalamış olduğumuz tokeni de ekliyoruz.

Parola Sıfırlama Linki İle Bypass: Çoğu web uygulaması parola sıfırladıktan sonra hesaba direkt olarak giriş yapar. Siteye girdiniz ve parolamı unuttum dediniz. Sistem, kullanıcının kayıtlı olan e-mail ya da telefon numarasına link göndererek parola sıfırlama işlemini gerçekleştiriyordur. Eğer sistem, her seferinde yeni bir link belirlememe gibi bir hata yapıyorsa, o linki kullanarak hesaba her zaman erişim sağlayabiliriz. Kullanıcı e-mailini değiştirse bile.

Oauth İle Bypass: x.com sitesinde facebook ile giriş yapma seçeneğinin bulunduğunu düşünelim. Eğer oradan giriş yapmayı seçersek, 2FA onaylamasına ihtiyacımız kalmayacaktır. Ancak bu yöntem pek uygulanamaz. Çünkü çoğu şirket bu tür girişleri kabul etmez.

Brute Force İle Bypass: 6 karakterlik bir kod için brute force yapmak günümüz sistemlerine çocuk oyuncağı gibi gelir. Ama, burada dikkat etmemiz gerek şey; hedef sistemin brute force saldırıları için aldığı önlemlerdir. Unutmadan söyleyeyim, "gizli" radarlara dikkat etmeniz gerekir. Mesela sistem, 50 istekten sonra sizin isteklerinizin hepsine olumsuz yanıtı döndürebilir. Brute force tiplerine bakacak olursak:

  1. Hız Limiti: Deneyebileceğiniz kod sayısı sınırsızdır. Ancak, istek yapma hızınız sınırlıdır. Örneğin, iki saniyede bir istek yapmanıza izin veriliyordur.

  2. Deneme Limiti: Belirli sayıda kod denemenize izin verir. Fakat, bu sayılar genellikle çok küçüktür.

  3. Kodu Yeniden Gönder: Sanırım böylesi sistemler çok nadirdir. Sistem size bir kod gönderir, deneme hakkınızı bitirirsiniz, tekrar kod gönder dediğinizde sistem size aynı kodu gönderir fakat deneme hakkınızı sıfırlar.

  4. Benzer Endpointlere Giriş Yapmaya Çalışmak: Örneğin, x.com/login'e girmek istiyorsanız; x.com/Login , x.com/log-in , x.com/Log-in gibi denemeler yapmanızda fayda var.

  5. IP Başına Deneme Sınırlaması: Eğer sistem, her IP için belirli sayıda deneme yapmaya izin veriyorsa, o sayıyı bir IP için kullandıktan sonra, istek başlığımızdaki IP'yi değiştirmeliyiz. Bu IP'ler şu başlıklarda olabilir:

    X-Originating-IP: 127.0.0.1 X-Forwarded-For: 127.0.0.1 X-Remote-IP: 127.0.0.1 X-Remote-Addr: 127.0.0.1

    #veya double X-Forwared-For kullanabiliriz. X-Forwarded-For: X-Forwarded-For: 127.0.0.1

  6. Diğer Tanımlayıcılar: Sizi tanımlayan diğer başlıkları da değiştirerek denemeler yapabilirsiniz. Örneğin; User-Agent, Cookie vs.

Son olarak buraya olayı özetleyen bir fotoğraf bırakıyorum.

Alt

Bu yazılık benden bu kadar. Sağlıcakla kalın...

Fatih Furkan Hatipoğlu

 

Bana bu kadar bilgi yetmez, daha fazlasını istiyorum diyenler için birkaç tavsiye kaynak:

Hacktricks - 2FA Bypass

RSA Conferences - 12 Ways to Hack 2FA (Video)

HackerOne'dan Bir Örnek