10 Ocak 2015 Cumartesi

Her ak sakallı dede,her uzun ve karışık parola da yeterince güvenli değil - Karışıklığın sıralaması

Excel'den oldum olası nefret ederim. Excel'e bu kadar bel bağlayan,Excel olmasa ne yapacağını, işlerini-projelerini nasıl yürüteceğini şaşıran organizasyonlar/kişiler gördükçe de bir o kadar üzülürüm.Bu yazıyı yazmamın nedeni etrafımda işini Excel,Word gibi ofis dokümanları üzerinden yürüten inanılmaz sayıda insanın olması, "karışıklığın sıralaması"ile kastettiğimin de yazının sonlarına doğru anlaşılmasını umuyorum. Bu olmazsa olmaz ofis uygulaması bu derece kritik olunca, ister istemez önemli ve gizli bilgiler de bu dokümanlarda saklanıyor ve Ofis'in parola/şifreleme mekanizması ile korunuyor. Ofis 2003 ve öncesi sürümleri ile parola koruması konan dokümanların parolaları kolaylıkla bulunabilecek küçük araçlarla saniyeler içinde öğrenilebiliyordu. 2007 ve sonraki versiyonlarda ise Microsoft ofis dokümanlarındaki şifreleme algoritmasını AES kullanacak şekilde değiştirdi. Bu konuda detaya girmeyeceğim, detaylı bilgi için 2007 Microsoft Office System Document Encryption isimli belgeyi okuyabilirsiniz. AES oldukça kuvvetli bir algoritma ve bu algoritmayla şifrelenen bir ofis dokümanının parolasını tespit etmek çok çok çok çok zor,ama brute force saldırı yöntemiyle bir şans var. Artık hepimizin bildiği gibi parola ne kadar uzun ve karmaşık olursa, ele geçirilmesi ve tespit edilmesi o kadar zorlaşıyor, daha doğrusu uzun zaman alıyor. Saldırı için kullanılan donanımın özelliklerine bağlı olarak bu süre günler hatta yıllar mertebesine kadar uzayabiliyor.


Donanım özelliklerinden sonra bu sürenin ne kadar uzayabileceğini belirleyen ikinci önemli kriter ise parolanın karmaşıklığı.Benim dikkat çekmek istediğim nokta ise parolayı oluşturan karakterlerin sıralamasının ve yerinin önemi. Deneme sürümü de olsa herhangi bir bruteforce aracını edinip kurcaladıysanız (Rus Elcomsoft firmasının Advanced Office Password Recovery ürünü en popüler olanlardan) size basit birkaç opsiyon sunduğunu görürsünüz; başlangıç karakter sayısı,bitiş karakter sayısı,hangi karakter kümelerinin kullanılacağı (alfabetik,numerik,özel karakter vb). Örnek olarak vermek gerekirse elinizde parola korumalı bir dosya varsa ve bahsettiğim türde bir bruteforce aracı kullanarak bu parolayı öğrenmeye çalışıyorsanız, başlangıç karakter sayısını 4-5, bitiş karakter sayısını 8 vererek başlayabilirsiniz.Saldırıda kullanılacak karakter kümesi olarak da küçük büyük harf+numerik karakterler kullanmak başlangıç için iyi olacaktır.Artık kimse 3-4 karakter uzunluğunda parola kullanmıyor emin olabilirsiniz,!+% gibi özel karakter kullanan da çok nadir :). Neyse konumuza dönelim saldırıda kullanılacak parolaların üretileceği başlangıç ve bitiş sayısını belirledikten sonra araç alfabenin ilk harfinden başlayarak ürettiği kelimelerin -yada muhtemel parolaların - dosyayı açıp açamadığını test eder . Aşağıda AOPR aracının debug logundan aldığım bir kaç satırı görebilirsiniz. Bu debug log kayıtları, Excel 2013 ile hazırladığım parola korumalı bir test dokümanına ekran görüntüsündeki ayarlarla ( 8 karakter uzunluğunda, büyük-küçük harf ve rakamlardan üretilecek parolalar), bruteforce saldırısı uyguladığımda oluşan kayıtlar.



esprBruteForce() call: Start password: AAAAAAAA, 32 passwords

esprBruteForce() call: Start password: AAAAAAAg, 32 passwords

esprBruteForce() call: Start password: AAAAAABC, 32 passwords

esprBruteForce() call: Start password: AAAAAABi, 49152 passwords

esprBruteForce() results: End password: AAAAAABB, speed 37 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAMyU, 32 passwords

esprBruteForce() results: End password: AAAAAAAf, speed 35 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAMy0, 32 passwords

esprBruteForce() results: End password: AAAAAABh, speed 35 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAMzW, 32 passwords

esprBruteForce() results: End password: AAAAAMzV, speed 38 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAMz2, 32 passwords

esprBruteForce() results: End password: AAAAAMyz, speed 37 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM0Y, 32 passwords

esprBruteForce() results: End password: AAAAAMz1, speed 38 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM04, 32 passwords

esprBruteForce() results: End password: AAAAAM0X, speed 33 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM1a, 32 passwords

esprBruteForce() results: End password: AAAAAM03, speed 33 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM16, 32 passwords

esprBruteForce() results: End password: AAAAAM1Z, speed 33 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM2c, 32 passwords

esprBruteForce() results: End password: AAAAAM2b, speed 42 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM28, 32 passwords

esprBruteForce() results: End password: AAAAAM15, speed 41 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM3e, 32 passwords

esprBruteForce() results: End password: AAAAAM27, speed 41 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM4A, 32 passwords

esprBruteForce() results: End password: AAAAAM3d, speed 40 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM4g, 32 passwords

esprBruteForce() results: End password: AAAAAM4f, speed 40 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM5C, 32 passwords

esprBruteForce() results: End password: AAAAAM39, speed 40 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM5i, 32 passwords

esprBruteForce() results: End password: AAAAAM5B, speed 40 passwords/sec, return: 8

esprBruteForce() call: Start password: AAAAAM6E, 32 passwords

esprBruteForce() results: End password: AAAAAM5h, speed 40 passwords/sec, return: 8

Anlatmak istediğim şu kardeşlerim, her nekadar saldırıda izlenecek yöntem yada algoritma ufak tefek farklılıklar gösterse de, saldırıda test edilecek parolalar belli bir sıraya göre üretilmek durumunda, aksi halde gelişigüzel (random) parolalarla bu tip bir saldırı asla başarılı olamaz. AOPR örneğinde ise, yukardaki kayıtlardan görülebileceği gibi, saldırı AAAAAAAA karakter dizisi, diğer bir deyişle test parolası ile başlıyor. Ve aşağıdakine benzer bir sıra ile devam ediyor

AAAAAAAA
AAAAAAAB
AAAAAAAC
......................
......................
......................
AAAAAAAZ
AAAAAAAa
AAAAAAAb
AAAAAAAc
......................
......................
......................
AAAAAAAz
AAAAAAA0
AAAAAAA1
......................
......................
AAAAAAA9
AAAAAABA
AAAAAABB
AAAAAABC
......................
......................
......................
AAAAAABZ
AAAAAABa
AAAAAABb
AAAAAABc
......................
......................
......................
AAAAAABz
AAAAAAB0
AAAAAAB1
......................
......................
AAAAAAB9

Yukarıdaki dizilerden de kolaylıkla anlayabileceğiniz gibi Ofis dokümanlarınızı korumada kullandığınız parolanız -her ne kadar 8 karakterden oluşuyor olsa da- AAAAAAB0 gibi bir parola ise klasik bir son kullanıcı bilgisayarında bruteforce saldırısı ile birkaç dakika içinde tespit edilebilir. Parolanız MAAAAAB0 (Sadece ilk harfin farklı) ise bu süre belki bir kaç gün uzayacaktır.

Ya da aB9KoOy3Er gibi karışık görünen bir parolanın tespit edilme süresi ile tB9KoOy3Er parolasının tespit edilme süresi arasında yine günlerce yada haftalarca fark olacaktır. Tabi her yiğidin yoğurt yeme şekli farklı olabileceğinden bir başka bruteforce saldırı aracı test parolalarını üretmeye alfabenin son harfinden de başlayabilir. Tamamen aracı yazan kişinin fantazi şinaz kişiliği ile açıklanabilecek bir durum,pek karşılaşmadım ama olur mu olur :D . Birkaç paragraf önce yazdığım gibi parolaların alfabenin başından mı yoksa sonundan mı başlayarak üretileceğini kestiremeyebiliriz ama kesin olan bir şey var, parolalar belirli bir sıraya göre üretilecek, en azından kafası biraz çalışan her uygulama geliştiricinin takip edeceği yöntem budur.

Yukarıda anlatmaya çalıştığım nedenlerle uzun sözün kısası, genel olarak bruteforce saldırısına maruz kalabilecek hesaplarınız (web uygulaları vb) ve de özellikle ofis dökümanları gibi dökümanlar için parola belirlerken parolanın sadece uzun ve karışık olması yanılgısına düşmeyin. Mümkün olduğunca parolalarınızda alfabenin (küçük ya da büyük) ortası ve sonrasındaki harflerini (benzer şekilde rakamları da) kullanarak üretmeye gayret gösterin (NoPro9l@m gibi). Bruteforce saldırılarına karşı yüzde yüz koruma sağlayamayabilirsiniz ama en azından saldırganın başarı süresini hatırı sayılır miktarda uzatmış belki de yıldırmış olursunuz.

Fikir vermesi açısından aşağıda parola güvenliğine vurgu yapan birkaç site paylaşıyorum,www.passwordday.org sitesindeki parola avlama oyununu mutlaka oynayın :) aşağıdaki iki cümle de yine bu siteden alınma

"You should change your important passwords as often as you change the oil in your car. Upgrading your password takes five minutes and can save you hours of trouble down the line."

https://www.passwordday.org
https://howsecureismypassword.net/
http://calc.opensecurityresearch.com/

Eğer unutmazsam bir başka yazıda, dökümanları şifrelerken ya da çeşitli uygulamalara/sitelere kayıt olurken kullandığım parolaları üretmede takip ettiğim yöntemlerden bahsetmeye çalışacağım.

2 yorum:

  1. CW'ye script kiddie diyen kardeşim yazılarını okuyan var mı acaba, arada CW'ye gir de sana da öğretelim Kali Toollarını :)

    Al blogumu incele ingilizceni geliştirirsin
    db43hackings.com

    YanıtlaSil
    Yanıtlar
    1. Teşekkür ederim ben de ingilizcemi geliştirebileceğim yerler arıyordum :) şaka bi yana hakaret içermeyen her yorumu yayınlarım ama size abi nasihatı,skiddie araçlarınızı da Bursa IP'nizle kullanmayın,ne olduğunu anlamadan polis amcalar kulağınızdan çekiverir

      Sil