#3 HackRF ile Replay Attack #2 (1 Viewer)

Merhabalar arkadaşlar bu konumda siber güvenlik alanına giriş yapacaksak nasıl bir yol izlemeliyiz, nelere dikkat etmeliyiz ve kendimizi geliştirmek için neler yapabiliriz bunları anlatmaya, kaynaklar (konunun sonunda) ve örnekler vermeye çalışacağım. Öncelikle belirtmek istediğim birkaç şey var bunlardan bir tanesi şuan konu açtığım kategorideki adlı Kenzaii hocamızın açtığı konudan haberim var. Şimdi böyle bir konu forumda var neden bir tane daha açıyorsun diyecek olan arkadaşlarımız çıkabilir. Kesinlikle söyleyebilirim ki bu konu tamamen doğru bir konu lakin şahsıma göre eksik bir konu. Bu yüzden daha geniş çaplı bir konu olması için bu konuyu hazırladım. Belirtmek istediğim bir başka şey ise konuda belirteceğim her şey bazı kesimler veya kişiler tarafından doğru bulunmayabilir ki elbette ben de söylediğim her şey doğru diyemem lakin yanlış gördüğünüz şeyleri ETİK kuralları çerçevesince medeni bir şekilde konuyu baltalamadan konu altında tartışıp fikir alışverişi yapabiliriz. Bunları belirttikten sonra daha fazla uzatmadan konumuza giriş yapalım.

Siber güvenlik denilince aklımıza birçok alan gelebilir. Aslında siber güvenlik şahsıma göre tek bir alan değil bir alanlar topluluğudur. Ben bu konuda ise kendi bilgimin olduğu kadarıyla Web Güvenliği ve Ağ Güvenliği alanlarında ki dikkate alınması gereken şeylerden bahsedeceğim. Bu iki alan kanımca aslında tamamen keskin sınırlarla birbirinden ayrılamazlar yani ben ağ güvenliğine yöneleceğim diyip webe hiç bakmamak yada sıfır bilgim var demek mümkün olamaz. İki alan birbiriyle ilişki içinde bulunan, kesişim kümelerinin olduğu alanlardır. Bu yüzden konudaki başlıkları tek tek Web ve Ağ olarak ayırmadım. Bu hususu da belirttikten sonra izleyeceğimiz yoldaki köşe taşlarımıza geçelim.

1)Mantık-Sorgulama:
Bu konunun en önemli ve üzerinde en çok durulması gereken maddesi olarak Mantık ve Sorgulamayı görüyorum. Bu madde siber güvenlikte hangi alanla ilgilenirseniz ilgilenin hepsi için birinci madde niteliğindedir. Zaten bu maddeden sonra bahsedeceğimiz maddeler aslında bir nevi bu maddenin alt dallarıdır yani mantığı kavramak için yapılması ve bilinmesi gereken şeylerdir.
Yaptığınız veya yapacağınız işin çalışma mantığını ve nedenini bilmezseniz asla tam olarak belli bir konuma gelemezsiniz. Hazır bilgi üzerinden belli bir yere kadar gidebilirsiniz lakin devamında tıkanırsınız. Bu olay siber güvenlikte de geçerlidir. Kullandığınız sistemin çalışma mantığını bilmezseniz, ben bu butona bastım ama bastıktan sonra arkada nasıl olaylar döndü, arkada gerçekleşen olaylar neden bu şekilde gerçekleşti diye sorgulamazsanız 3-0 geride başlarsınız.
Hayatta her zaman sorgulamak insana bir şeyler kazandırır ama kaybettirmez. Eğer işin mantığını bilirseniz ve mantığını bilmek için sorgularsanız üstüne katacağınız bilgileri temelin üstüne oturtmak daha kolay olur. Bunun içinde kullanacağımız üç adet sorumuz var bunlar: Ne, neden ve nasıl. Çok sevdiğim bir hocam olan Engür Pişiricinin bir eğitimde bize en çok yönelttiği ve kafamıza vura vura sordurduğu sorulardır bunlar. Engür hocamın çok sevdiğim de bir sözü vardır onu da burada belirtmeden geçmeyeyim: Eğer bir şeyin güvenliğini öğrenecekseniz öncelikle o şeyi bilmeniz gerekir. Bla bla güvenliğini öğreneceksen o bla blayı bileceksin. Ağ güvenliği öğreneceksen önce ağ bileceksin. der bizi de ayak üstü fırçalar bu üç soruya yöneltirdi. Bu üç soruyu yönelterek sorgumuzu yapar ve işin mantığını kafamıza oturturuz. Bunu bir örnek ile size açıklamaya çalışayım.
DNSi ele alalım. DNSe dair yönelteceğimiz sorularımızı yukarıda belirttik. DNS ne? DNS neden var, ne işe yarar? DNS nasıl çalışır? Sorularımızı bu sırayla yöneltirsek temelimizi oluşturmamız daha kolay olur. Öncelikle DNSin ne olduğunu sonrasında DNSin tanımını bilerek ne işe yaradığını ve neden kullanıldığını en sonunda ise bunların ışığında DNSin çalışma mantığını öğrenerek bu kavramı tamamen kafamızda oturturuz. Peki biz bu yolları izleyerek nasıl bir kazanım elde etmiş oluruz? İşin mantığını bildiğiniz için kendinizi saldırganın yerini koyarak DNSin çalışma adımlarındaki güvenlik açıklarını, zaafiyetleri fark eder ona göre önleminizi alırsınız. Ya da bir sisteme sizden pentest yapmanız istenirse de bu bildiğiniz eksiklikleri kullanırız. Mesela DNSin ve internetin çalışma mantığını eğer anlayamazsınız Ortadaki Adam Saldırısını tam olarak kavrayamaz, kavrasanız bile tek yönlü olarak bilip çeşitli varyasyonlar üretemezsiniz.



5GE7nR.jpg




2)Ağ(Network):
Yukarıda da belirttiğim gibi eğer kollayı sıvayıp ağ güvenliğine dalmak istiyorsak önce ağ öğrenmemiz, ağ temellerini atmamız gerekir. Yani eğer sektörde Ya ben ağ güvenliğiyle uğraşıyorum ama ağ bilgim yok derseniz size karşınızdakiler bir yerleriyle gülerler. Protokolleri, protokollerin çalışma mantığını, birbirleri ile ilişkilerini, ağ mantığını bilmeden yapamayız. Mesela bir önceki konumda NMAPi anlattım ve mantığı üzerinde durdum. Eğer siz konuda verdiğim ağ temellerine vakıf olmadan konuyu okursanız NMAPin çalışma mantığını anlamanız da o kadar zor olur.


yzJ5Y0.jpg


Mesela ağ ve bir sonraki madde olan web için kendi bölümümden bir örnek vereyim. Eğer siz insan(makina,sistem) fizyolojisini(normal işleyiş) bilmezseniz patolojisini(aksaklıklar, hasar, açıklar, zaafiyetler) anlayamazsınız. Yani mesela bir sistemin yönetimini gerçekleştiriyorsunuz ve çalışan işlemlerde birkaç şey var, bunların sistemin normal işleyişinde var olması gereken olaylar mı olduğunu yoksa sistemdeki bir zaafiyetten mi kaynaklandığını anlamanız için öncelikle sistemin normal işleyişinin nasıl olduğunu bilmeniz gerekir. Aynı şekilde bir sisteme pentest yapacaksanız da ağın temelindeki açıkları ve sömürülebilir noktaları bilip ona göre bildiğiniz zaafiyetlere yönlenirsiniz. Misal TCP syn attack yapacaksanız yada IP sahteciliği yapacaksanız(teorikte evet de pratik de çok zor) TCPyi bilmelisiniz.
TCPyi bilmelisiniz derken demek istediğim Açılımı Transmission Control Protocoldür, TCP/IP protokol takımının aktarım katmanı protokollerinden birisidir. Gelişmiş bilgisayar ağlarında paket anahtarlamalı bilgisayar iletişiminde kayıpsız veri gönderimi sağlayabilmek için TCP protokolü yazılmıştır. şeklinde bana TCPyi anlatmanız değildir. TCP bilmek derken çalışma mantığını, neden ihtiyaç olduğunu, ne olduğunu anlatmanızdır.
Ağ hakkındaki bilgilerinizi pekiştirmek için Cisconun bir simülasyonu var bunu kullanabilir. Kendi ağınızı kurup üstünde denemeler yapabilir, işleyişi takip edebilirsiniz. Bunu da belirtmiş olayım.

3)Web:
Evet gelelim en sevdiğim maddelerden birine. Bu maddeyi çok seviyorum çünkü bu madde forumda çoğunluğunun temel olarak ne kastedildiğini şahsıma göre anlamadığı ve çok iyi bildiğini iddia ettiği bir maddedir. Öncelikle gelelim şimdiliye kadar anlatılmış olan şahsıma göre de yanlış olan Web temeline. Bu temel şu şekilde: Önce CMS Bruteforce, sonrasında Havij ile Sql İnjection bunun bir tık üstü olarak Sqlmap ile (temel düzeyde) sql injection, shell atma, config çekme.... ilerleyip gidiyor. Hatta hatırı sayılır kişiler tarafında en basitinden (SQL,İSS,RFI,LFI,XSS) şeklinde açıkların bilinmesi önerilmiştir. Şimdi adım adım bu temeli bir ele alalım.


ZOjM8Z.jpg


a)CMS Bruteforce:
Allah affetsin zamanında ben de yaptım. Lakin sonrasında doğru yolu buldum. Şimdi burayı okuyanların aklına şu gelmesin. CMS bruteforce yapanları aşağılıyor, hor görüyor.. Birincisi bunu yapmam kendi ilkelerime aykırı gelir ikincisi bunu yapmak haddime değildir. Ben burada bunun yanlış kullanımını anlatacağım.
Şimdi ilk gelenlere CMS bruteforce ile başla denir. Karşıdaki de okeyler başlar CMS Bruteforcea. Öncelikle burada ki yanlış yeni gelen ve temel olarak nerden başlamalıyım diyen kişiye temel diye CMS Bruteforceu vermek. Şimdi gelelim ikinci yanlışa. Ben kimseye sakın CMS Bruteforce kullanma demem. Kullanacaksan kullan lakin orda 2 tane butona basıp çıkan siteyi burda allayıp pullayıp pazarlarsan ve başka insanlara bununla hava atarsan işte o zaman laf ederim. Arkadaşlar CMS Bruteforceu kullanacaksanız kullanın ama lütfen çalışma mantığını bilerek kullanın. Hani diyorsanki kardeş ben günde illa bir defa CMS bruteforce açmadan yapamıyorum. Açın açmayın diyen yok lakin o program arkada neler yapıyor? Neden ben bu butona basıyorum. Bu butona bastığımda arkada noluyor? Bunları düşünerek araştırarak yapın.


jQrBzg.jpg


Burda dikkatinizi çekmek istediğim bir nokta var. Bakın en baştan beri Bruteforce yapmayın demiyorum CMS bruteforce yapmayın, illa yapacaksanız da çalışma mantığını bilerek zevk için yapın diyorum çünkü bruteforce yapma dersek yanlış yapmış oluruz. Bruteforce doğru şekilde ve bilinçli kullanımlarında çok etkili ve bazen kullanılması şart olan bir yöntemdir. Bunun da altını çizelim.

b)SQL Injection:
Şimdi de buradaki yanlışlara değinelim. Kişiye öncelikle birkaç tane video atıp(sql açığı sorgulama, havij kullanımı, sqlmap kullanımı) sql injection yarım yamalak anlatılır. Bu birinci yanlışımız. İkinci yanlışımız ise en basitinden (SQL,İSS,RFI,LFI,XSS) tırnak içinde belirtildiği gibi bu açıkları basit olarak görmek. Madem bu kadar basit açıklar ve bu kadar kolay öğrenilebiliyor ise neden bu beyanlarda bulunan kişileri HackerOne tarzı sitelerde çok yüksek miktarlı ödemeler yapan şirketlerden ödül almış şekilde göremiyoruz?


GyW31v.png


Şimdi gelelim Webin şahsıma göre doğru olan temeli nedir ve nasıl atılmalıdır o bölüme. Eğer kişiye web temeli verilecekse bunlar zaafiyetler değil webin kendisi olmalıdır. Php, js, css, html, veritabanı yönetimi gibi şeyler verilmelidir ki kişi zaafiyetleri anlayabilsin. Buna 3 tane örnek vereceğim ilk örneğimiz SQL injection üstünden olacak. En basitinden mesela elinizde bir site var ve sitede sql var mı diye kontrol edeceksiniz. Nasıl yapılması anlatıldı? Sonuna tırnak işareti koyarak. Bizim yapmamız gereken şey neden tırnak işareti koyuyoruz? Ya da tırnak işareti yerine ünlem işareti koysak olmaz mı , olmazsa neden olur, olmazsa neden olmaz? Bu soruları yöneltmek ve atıyorum SQLMAP kullanıyorsunuz diyelim yada manuel olarak yapıyorsunuz. Select, where, get gibi girdileri neden veriyoruz? Bunlar neden bize bu çıktıları veriyor? Şeklinde sorular yönetip SQL sisteminin çalışma mantığını ve nasıl işlediğini bilmeliyiz ki bu soruların cevaplarını alabilelim.
İkinci örneğimiz ise XSS zaafiyeti üzerinden olacak. Mesela XSS zaafiyeti var mı diye kontrol ediyorsunuz, atıyorum bunu alert verdirerek yapmaya çalışıyorsunuz ama biz bu alerti nasıl verdiriyoruz, bu alert neden çıkıyor? Diye sorular yöneltmeliyiz. Alerti verdirirken js kodu çalıştırıyorsunuz. Bu yüzden JavaScript bilmeliyiz. Eğer javascript bilmeden ben xss açığı kullanıyorum falan derseniz sadece kendinizi kandırmış olursunuz.
 

Bu konuyu görüntüleyen kullanıcılar