[TR] DEFCON 27 Advanced Wireless Exploitation Workshop — CTF Write-Up

Anıl Çelik
11 min readJul 7, 2020

--

Herkese merhaba. Bugünkü yazımda, 8 Temmuz 2019 tarihinde DEFCON 27 konferansında yer alan ve Besim ALTINOK tarafından düzenlenen “Advanced Wireless Exploitation for Red Team and Blue Team” isimli workshop’ın sonunda gerçekleştirilen Capture The Flag (CTF) etkinliğinin sorularının çözümlerini paylaşacağım.

Sorulara geçelim:

  • 1. Soru:
Question 1

Bu soruda, bize verilen başka bir .pcap dosyası içerisinden WPA2 parolasının ve bu ağa saldıran saldırganın sahip olduğu hostname değerinin bulunması isteniyor.

  • 1. Sorunun Çözümü:

İlk olarak WPA2 parolasını elde etmeye çalışalım. Bunun için öncelikle elimizdeki .pcap dosyasına bir saldırı düzenleyip düzenleyemeyeceğimizi görebilmek için, öncelikla aircrack-ng aracına bu dosyayı verip elimizde potansiyel bir hedef olup olmadığını görmeliyiz. Aynı işlemi elimizdeki dosyayı Wireshark ile açıp EAPOL paketlerinin olup olmadığına bakarak da analiz edebiliriz.

Attack Vector Analysis w/aircrack-ng

Buradan görebileceğimiz gibi, elimizde gerçekten bir brute-force saldırısı düzenleyebileceğimiz bir dosya var. Aynı işlemi Wireshark üzerinden de gerçekleştirebiliriz:

Attack Vector Analysis w/Wireshark

Buradan da görebileceğimiz gibi, dosya içerisinde EAPOL paketleri bulunduğu için bir brute-force saldırısı gerçekleştirebiliriz.

Brute-Force saldırısını gerçekleştirmeden önce, elimizde güçlü bir wordlist bulunması gerekiyor, wordlist dosyasını kendimiz oluşturabilir veya oluşturulmuş diğer wordlist dosyalarını kullanabiliriz:

Wordlist for Brute-Force Attack

Şimdi aircrack-ng aracını kullanarak saldırımızı gerçekleştirip parolayı elde etmeye çalışalım:

WPA2 Password Cracking

Gördüğümüz gibi, parolayı elde etmeyi başardık. Parolayı elde ettiğimize göre, şimdi sırada soruda ikinci istenen bilgi olan saldırganın hostname bilgisini elde etmeliyiz. Bunu yapabilmek için, soruda da ipucu olarak verilen bootp filtrelemesini yapmamız gerekmektedir. BOOTP’nin ne olduğundan söz etmek gerekirse, en basit tabirle BOOTP (Bootstrap Protocol) aslında DHCP protokolünü temsil ediyor diyebiliriz çünkü Network içerisindeki cihazlara IP Address atamasını sağlayan Configuration Server’dan sorumlu olan protokoldür.

Hostname bilgisini elde etmek için bootp filtrelemesi yapmamız gerektiğini anladık fakat burada hatırlamamız gereken şey, soruda da belirtildiği gibi elimizdeki .pcap dosyasını decrypt etmemiz gerektiğidir. Yani dosyayı decrypt etmeden bu filtrelemeyi uyguladığımızda herhangi bir bilgi göremeyeceğiz çünkü bu bilgiler encrypted durumdadır:

Encrypted bootp packets

Dosyayı decrypt etmek için, Wireshark içerisinde IEEE 802.11 ayarları içerisinde Decryption Key tanımlaması yapmamız gerekmektedir:

IEEE 802.11 Preferences

Şimdi bulduğumuz WPA2 parolasını, Decryption Key olarak ekleyelim:

Adding WPA2 Password as Decryption Key

Şimdi bootp paketlerini tekrar görüntülemeye çalışalım:

Decrypted bootp packets

Artık paket içerisindeki DHCP protokolüne ait paketleri görüntüleyebilir ve burada DHCP Discover paketi içerisinden istediğimiz hostname bilgisini elde edebiliriz:

Hostname Discovery

Gördüğümüz gibi, bulmamız gereken Host Name değerinin “redteam” olduğunu bulduk.

  • 2. Soru:
Question 2

Bu soruda, bizden verilen .pcap dosyası içerisinde bulunan Gizli SSID bilgilerini tespit edip bunlar hakkında bilgi toplamamız istenmektedir. İpucu olarak da Access Point, yani Erişim Noktalarının hatalı davranışından faydalanabileceğimiz veriliyor.

  • 2. Sorunun Çözümü:

Bize verilen dosyayı incelediğimizde, 6 karakter uzunluğunda (\000\000\000\000\000\000) ve 8 karakter uzunluğunda (\000\000\000\000\000\000\000\000) iki adet Gizli SSID bilgisine sahip erişim noktası olduğunu görebiliriz. Burada her bir “\000” ifadesi bir karakteri temsil etmektedir:

First Hidden SSID: 6 characters length
Second Hidden SSID: 8 characters length

Öncelikle ilk görünen 6 karakter uzunluğundaki SSID’ye sahip Beacon Frame’i inceleyelim:

Channel Number of the AP with First Hidden SSID

Gördüğümüz gibi 6 karakter uzunluğundaki Gizli SSID’ye sahip ilk erişim noktasına ait Beacon Frame’i incelediğimizde, 6 numaralı kanalda yayın yaptığının bilgisine ulaştık. Bu bilgi, daha sonra inceleyeceğimiz Probe Request ve Probe Responselarda bize yardımcı olabilir.

İkinci gizli erişim noktasının kanal bilgisine göz atalım:

Channel Number of the AP with Second Hidden SSID

İkinci gizli erişim noktasının bulunduğu kanal numarasını da 6 olarak tespit ettik.

Gizli bir erişim noktasının gerçek SSID değerini tespit ederken, Pasif Dinleme ve Aktif Dinleme olmak üzere iki farklı yöntem izleyebiliriz.

  • Pasif Dinleme: En basit haliyle, airodump-ng gibi bir araçla bir pcap dosyası elde edip bu dosyanın Wireshark gibi bir araçla analiz edilmesidir.
  • Aktif Dinleme: Pasif dinlemede kullandığımız paket toplama aşamasına ek olarak, bu sefer hedefe yönelik bir DoS saldırısı, yani bir Deauthentication Saldırısı yapıp, bir istemcinin ağa tekrar bağlanmasını sağlayarak gizli SSID bilgisini elde edebiliriz. Başka bir yöntem olarak, ağa yönelik göndereceğimiz Probe Requestler ile bir brute-force saldırısı gerçekleştirip yine gizli olan SSID bilgisini elde etmeye çalışabiliriz.

Bu noktada, elimizde zaten kaydedilmiş bir .pcap dosyası olduğu için, bu dosyaya yönelik Wireshark üzerinde bir analiz gerçekleştirebiliriz.

İlk Beacon Frame’i incelediğimizde, bu frame’in “MS-NLB-PhysServer-32_10:44:34:62:5E” şeklinde çözümlenen, asıl MAC adresi “02:30:44:34:62:5E” olan erişim noktasından yayınlandığını ve bu paket bir Beacon Frame olduğu için Broadcast olarak yayınlandığını görebiliriz. Daha garanti bir analiz yapmak adına, öncelikle Probe Responseları inceleyerek başlayalım çünkü Probe Responselar erişim noktasından istemciye dönen paketler oldukları için içlerindeki SSID bilgisi yanlış bir bilgi olamaz. Probe Responseları “wlan.fc.subtype == 0x0005” filtresi ile görüntüleyebiliriz ancak Probe Responseları incelediğimde, “MS-NLB-PhysServer-32_10:44:34:62:5E” MAC adresli erişim noktasından herhangi bir istemciye geri dönen bir Probe Response paketi bulamadım. Bir sonraki adım olarak, istemcilerden gönderilen Probe Request paketlerini “wlan.fc.subtype == 0x0004” filtresi ile görüntüleyelim:

Probe Requests

Burada “MS-NLB-PhysServer-32_10:44:34:62:5E” erişim noktasına ait paketleri görüntüleyelim:

Probe Requests from MS-NLB-PhysServer-32_10:44:34:62:5E

Erişim noktasına ait bütün Probe Requestleri listelediğimizde, bir sonraki yapmamız gereken şey 6 karakterli bir SSID ye sahip olan yayın varsa onu tespit etmek olacaktır. Ancak yukarıdaki figürden de görebileceğimiz gibi, bu erişim noktasına ait 6 karakterli bir SSID yayını bulunmamakta. Burdan sonra yapabileceğimiz diğer bir adım olarak diğer erişim noktalarında yayın yapan 6 karakterli SSID değerine sahip paketleri tespit etmek olabilir. Bunu yaptığımızda, aşağıdaki sonucu görebiliriz:

6 character length SSIDs

Elimizdeki paket içerisinde 6 karakterli bir SSID değerine sahip olan tek SSID değerinin DefCon olduğunu gördükten sonra, buradan bir paketi incelediğimizde, kanal numarasının da 6 olduğunu görüp aradığımız SSID değerinin bu olduğunu görebiliriz:

Channel Number of DefCon

İkinci gizli erişim noktası, yani 8 karakterlik SSID değerine sahip olan gizli erişim noktasını tespit etmek için yine aynı yöntemleri izleyelim. İkinci erişim noktasına ait Beacon Frame’den görebileceğimiz üzere, erişim noktasının “SamsungE_31:E7:C9” çözümlenmiş değerine sahip olan asıl MAC Adresi “C0:D3:C0:31:E7:C9” olan erişim noktası olduğunu görebiliriz. Öncelikle, bu MAC adresine sahip erişim noktasından istemcilere dönen Probe Responseları yine “wlan.fc.subtype == 0x0005” filtrelemesiyle görüntülemeye çalışalım:

Probe Responses from SamsungE_31:E7:C9

Gördüğümüz gibi, bu erişim noktasından istemcilere dönen bütün Probe Response paketleri içerisinde tek bir SSID değeri var ve o da “Flamingo”. Yine aynı şekilde bu istemcilerden giden Probe Requestleri de görüntüleyebiliriz:

Probe Requests to the AP with SSID: Flamingo

Ve son olarak yine Flamingo SSID’li erişim noktasından istemcilere dönen herhangi bir paketi incelediğimizde, Gizli SSID değerini ilk incelerken bulduğumuz kanal numarası bilgisiyle aynı olduğunu (Channel: 6) görebiliriz:

Channel Number of AP with SSID: Flamingo

İkinci sorunun çözümü bu kadardı. Şimdi bir sonraki soruya geçelim.

  • 3. Soru:
Question 3

Bu soruda bizden istenen, verilen pcap dosyası içerisinde bulunan WiFi erişim noktalarından sahte olanı tespit etmemiz. İpucu olarak da airodump-ng kullanmamız gerektiği belirtilmiş.

  • 3. Sorunun Çözümü:

Burada yapmamız gereken tek şey, verilen pcap dosyasını airodump-ng aracı ile açarken ayrıca “ — uptime” parametresini kullanmak olacaktır. Çünkü; eğer çevrede bir sahte erişim noktası bulunuyorsa, bu erişim noktasının uptime yani yayın yapma süresi sahte olmayan erişim noktalarına göre daha az olacaktır. Örneğin gerçek bir erişim noktası 10 günlük bir uptime değeri ile yayın yapmaktaysa, sahte bir erişim noktası (yeni açılmış ise) sadece birkaç saatlik bir uptime değerine sahip olacaktır. Burada dikkat etmemiz gereken bir nokta, saldırganların zaman zaman açtıkları sahte erişimm noktalarının uptime değerini orijinal bir erişim noktasının sahip olduğu uptime değerine benzer göstermek için açtıkları yayını gizli bir SSID kullanarak açıyorlar; dolayısıyla gizli SSID’ye sahip bir erişim noktası, airodump-ng gibi bir araç kullanmayan normal bir kullanıcıdan gizlenecektir ve bu kullanıcının herhangi bir saldırıdan haberi olmayacaktır. Elimizdeki pcap dosyasını “airodump-ng -r <file_name> — uptime” komutuyla açıp dosya içerisinde bulunan erişim noktalarının uptime sürelerini incelemeye başlamadan önce, öncelikle dosya içerisinde gizli olmayan bütün erişim noktalarının SSID değerlerini görmek adına bu erişim noktalarından yayılan Beacon Frameleri inceleyerek bir liste çıkartabiliriz:

SSID Values of APs

Gördüğümüz gibi, elimizde Pbbbg, DEFCON_WPA_1 ve ALPHA SSID değerlerine sahip 3 tane yayın var. Ancak bütün SSID değerlerini görebilmek için aynı zamanda erişim noktalarından istemcilere dönen Probe Responseları da incelememiz gerekmektedir:

Probe Responses from APs

Probe Response framelerini de incelediğimizde, yukarıdaki SSID değerlerine ek olarak Caesars_Resorts ve BETA SSID değerlerine sahip erişim noktalarının da bulunduğunu görebiliriz. SSID analizini bitirdiğimize göre, şimdi airodump-ng kısmına geçebiliriz:

airodump-np output for uptime

airodump-ng’nin çıktısına göz attığımızda; sırasıyla ALPHA, BETA ve Caesars_Resorts SSID değerlerine sahip erişim noktalarıın 128 gündür yayın yaptıklarını ve BETA SSID’sine ait farklı MAC adresli bir erişim noktasının da 79 gündür yayın yaptığını görebiliriz. Ancak DEFCON_WPA_1 ve Pbbbbg SSID değerli erişim noktalarına baktığımızda, DEFCON_WPA_1'in 1 saat 25 dakikadır yayın yaptığını, Pbbbbg’nin ise 3 dakikadır yayın yaptığını görebiliriz. Burada uptime süresine bağlı olarak şüpheli olan ve sahte erişim noktası olduğu düşünülebilecek iki adet yayın var ancak Pbbbbg’nin uptime süresi aralarında en az olduğu ve SSID değeri de bir anlam ifade etmeyen bir değerden oluştuğu için sahte erişim noktasına ait SSID değerinin Pbbbbg olduğunu söyleyebiliriz.

  • 4. Soru:
Question 4

Bu soruda bizlerden, bize verilen paket içerisinde bulunan öğrenci bilgilerinin olduğu ve o öğrencinin bilgilerinin toplanması isteniyor.

Bu soruyu gördüğümüzde, içerisinde öğrenci bilgilerinin bulunduğu bir paket varsa aklımıza direk Eduroam Network gelebilir. Eduroam Network’den kısaca bahsetmek gerekirse, dünya çapında üniversitelerde kullanılan ve öğrenci ve akademisyenlerin üniversite içerisinde kablosuz ağa bağlırken kullandıkları networkdür. Eduroam Network hakkında daha fazla bilgi edinmek ve içerisinde barındırdığı tehlikeler hakkında daha fazla bilgi edinmek için, yine Besim ALTINOK tarafından hazırlanan, başta DEFCON 27 olmak üzere ülkemizde de BTK’da ve diğer birçok organizasyonda sunulan Eduroam Ağlarındaki Tehlikeler hakkında olan araştırmaya ve DEFCON 27'de sunulan edu driving sunumuna buradan ulaşabilirsiniz: eduroam: Collect, Track, Hack

  • 4. Sorunun Çözümü:

Soruya öncelikle “eduroam” SSID değerinin verilen paket içerisinde yer alıp almadığına bakarak başlayabiliriz:

Beacon Frames from AP with SSID: eduroam

Buradan görebileceğimiz gibi, “IntelCor_BC:E5:0D” adres çözümlemesine sahip ve asıl MAC adresi “A0:A4:C5:BC:E5:0D” olan erişim noktasından yayılan birçok Beacon Frame var. Paketlerin devamını incelediğimizde, Beacon Framelerin dışında sadece bir tane Association Request olduğunu görebiliriz ve buradan da bu ağa bir bağlantı talebinin gerçekleştirildiğini görebiliriz:

Association Request(s) made to the Access Point with SSID: eduroam

Burada, SamsungE_**:**:**adres çözümlemesine sahip cihazın bu networke bir bağlantı talebi gerçekleştirdiğini açıkça görebiliriz. Buradaki analizden sonraki durağımız EAP protokolü ile iletişimde bulunan istemciye ait paketleri incelemek olmalıdır çünkü Eduroam Network, Enterprise Networkler gibi kullanıcı adı ve şifre doğrulaması ile çalışmaktadır.

EAP Packets between Client and Access Point

Yukarıdaki figürden görebileceğimiz üzere, Samsung MAC adresli cihazdan önce ağ içerisinde Apple MAC adresli bir cihazdan bağlantı talebi yapılmakta ancak yapılan bağlantı talebinde gönderilen Authorization bilgileri yanlış gönderildiği için, erişim noktasından istemciye Failure paketlerinin gönderildiğini açık bir şekilde görebiliriz. Burada gönderilen Response, Identity paketlerini de inceleyebilir ve içerisinde gönderilen bilgileri görebiliriz:

False Identity Information

Buradan görülebileceği gibi, gönderilen Identity bilgisi içerisinde 0310260149127180@wlan.mnc260.mcc310.3gppnetwork.org şeklinde bir kullanıcı adının gönderildiğini, Mobile Country Code içerisinden ülke bilgilerini ve Mobile Network Code içerisinden de operatör bilgilerini görebiliriz. Şimdi doğru bilgilerin gönderildiği ve Authentication aşamasının doğru bir şekilde tamamlandığı paket(ler)i bulmaya çalışalım:

Identity Response from a device with Samsung MAC Address

Buradan, Samsung MAC adresli bir cihazdan gönderilen Response, Identity paketinde gönderilen Authorization bilgilerinin doğru olduğunu ve en sonda da başarılı bir şekilde Authorization işleminin tamamlandığını açıkça görebiliriz. Samsung MAC adresli cihazdan giden Response, Identity paketini incelediğimizde:

True Identity Information

Bu Response paketini incelediğimizde, giden Identity bilgisi içerisinden gönderilen kullanıcı Adının LegendaryNacar@hacettepe.edu.tr olduğunu görebiliriz. Buradan yapabileceğimiz çıkarımlar, Legendary içerisindeki “L” harfinin büyük oluşundan ve Nacar içerisindeki “N” harfinin büyük oluşundan bu girdinin sırasıyla İsim-Soyisim veya Soyisim-İsim şeklinde olduğunu, hacettepe.edu.tr içerisinden de network’ün ait olduğu kurumun Hacettepe Üniversitesi olduğunu rahatlıkla anlayabiliriz. Gerçek hayatta giden bir Identity paketinden çok daha fazla bilgi elde edebilmek de mümkündür.

  • 5. Soru:
Question 5

Bu soruda, verilen pcap dosyası içerisindeki WEP şifreleme standardına sahip erişim noktasının erişim parolasını elde etmemiz isteniyor. İpucu olarak parola içerisinde “b43s15m6” karakterlerinin bulunabileceği veriliyor.

  • 5. Sorunun Çözümü:

İlk olarak verilen pcap dosyası içerisindeki WEP korumalı ağı SSID değerini tespit etmek için, elimizdeki pcap dosyasını airodump-ng aracı ile açabiliriz:

airodump-ng output of 6_wep.pcap file

Buradan görebileceğimiz gibi, 60:31:97:39:FA:34 MAC adresine sahip ve GameOfPwners SSID değerindeki erişim noktası, WEP Encryption standardını kullanıyor, yani kısacası parolasını elde etmemiz gereken erişim noktasının adı: GameOfPwners.

Bu WEP korumalı erişim noktasının parolasını elde etmek için verilen karakterlerle bir wordlist oluşturup aircrack-ng aracını kullanarak bir brute force saldırısı yapabiliriz. Öncelikle verilen karakterlerle karakter sayısına göre bir wordlist oluşturalım (8 karakter):

8-char wordlist generation

Şimdi ise aircrack-ng aracına bu wordlisti vererek WEP parolasını elde etmeye çalışalım:

aircrack-ng result

Maalesef gördüğümüz gibi parolayı elde etmeyi başaramadık. Bunun iki sebebi olabilir:

  1. Brute-force sırasında kullandığımız wordlist yetersiz.
  2. Bulmamız gereken parola, aircrack-ng içerisinde default 128 bit olarak belirlenen WEP key length’den farklı bir key length içeriyor.

Oluşturduğumuz wordlisti soru içerisinde verilen karakterlere göre oluşturduğumuz için, ilk seçeneği gözardı edip ikinci seçeneğe odaklanabiliriz.

WEP şifreleme algoritmalarında bulunan RC4 stream cipher’ı, parolanın uzunluğunu belirlemekle beraber genellikle 64 veya 128 bit uzunluğunda olup, şifreleme esnasında XOR yönteminden faydalanmaktadır. Doğru olan key length’e ait bit sayısını bulabilmek için, en küçükten en büyüğe doğru sırasıyla gidebiliriz. aircrack-ng’ye bu bit değerini parametre olarak verebilmek için aircrack-ng’nin man sayfasına göz atabiliriz:

aircrack-ng man page

Burada gördüğümüz gibi, aircrack-ng’ye bu ağ parolasının sahip olduğu key length’i verebilmek için “-n” parametresinin devamında 64'den başlayıp 128, 152, 256 ve 512 ye kadar değer verebiliriz. İlk deneyeceğimiz değer 64 bit olduğu ve 64 bitin karşılığının da 40 bitlik bir WEP parolası olduğunu yukarıdaki sonuçtan bildiğimize göre, buradan ele geçirmeyi hedeflediğimiz WEP parolasının 40 bitin karşılığı olan 5 bytelık, yani 5 karakterlik bir değere sahip olduğunu anlayabiliriz. Öyleyse öncelikle yine soruda verilen ipucundaki karakterleri kullanarak 5 karakterlik yeni bir wordlist oluşturalım:

5-char wordlist generation

Şimdi ise “aircrack-ng -n 64 <file_name> -w 5charwordlist.txt” komutu ile aircrack-ng’yi çalıştıralım:

WEP Password

Gördüğümüz gibi, WEP parolasını başarılı bir şekilde elde ettik.

Bu CTF, bildiğim şeyleri test edebilmemin yanı sıra, yeni şeyler de öğrenmeme vesile olan güzel bir etkinlik oldu. Umarım sizlere de okurken bir faydası olmuştur. Ayrıca bu CTF’i hazırlayan Besim ALTINOK’a da teşekkürlerimi sunarım.

Bu yazı ile bahsetmek istediklerim bu kadardı, bir sonraki yazımda görüşmek üzere.

Kaynaklar:

--

--

Anıl Çelik
Anıl Çelik

No responses yet