Pentest 101 : Exploitler

Pentest 101 : Exploitler

Güvenlik açıklarını istismar etme

Siber güvenlik endüstrisinde, bazen bir güvenlik açığının, istismarının veya yazılım hatasının tam olarak ne olduğu konusunda bazı tartışmalara tanık olabiliriz.

Yazılım hataları , her şeyin başladığı yerdir. Bunlar sadece programlama hatalarıdır ve genellikle çok iyi tanımlanmış ve adlandırılmıştır. Elbette sadece yazılımda değil donanımda da olabilirler.

İşte bazı yazılım hataları örnekleri:

  • Buffer overflow
  • Race condition
  • Access violation
  • Infinite loop
  • Division by zero
  • Off-by-one error
  • Null pointer dereference
  • Input validation error
  • Resource leak

Yazılım hataları, her zaman olmasa da güvenlik açıklarına yol açabilir.

Güvenlik açıkları kesindir, bazen komik isimleri vardır. Güvenlik açıkları, temelde istenmeyen veya beklenmeyen bir davranışa ulaşmak için yararlanılabilen yazılım hatalarıdır.

Aşağıda bazı güvenlik açıkları örnekleri verilmiştir:

  • BlueKeep
  • Shellshock
  • Dirty COW
  • Heartbleed
  • EternalBlue
  • SQL injection
  • Code injection
  • Directory traversal
  • XSS, CSRF, SSRF

Ve bir de birisi bir güvenlik açığından yararlanmaya ve onu kullanmaya karar verirse gerçekleşebilecek Risk (Tehdit) vardır.

İşte bazı güvenlik riskleri örnekleri:

  • Remote code execution (Uzaktan kod yürütme)
  • Authentication bypass (Kimlik doğrulama atlama)
  • Sensitive information disclosure (Hassas bilgilerin ifşa edilmesi)
  • Denial of Service (Hizmet Reddi)
  • Privilege escalation (Yetki Yükseltme)
  • Security feature bypass (Güvenlik özelliği atlama)
  • User session takeover (Kullanıcı oturumu devralma)
  • Malicious file upload (Kötü amaçlı dosya yükleme)
  • Man-in-the-middle (Ortadaki Adam)

Yazılım hataları, güvenlik açıkları ve güvenlik riskleri şu şekilde bir araya gelir:

Bir istismar daha sonra üç terim arasındaki gerçek bir bağlantıyı temsil ederek riski gerçeğe dönüştürür.

Tanım olarak bir istismar, bir yazılımda hata içeren istenmeyen veya beklenmeyen bir davranışa (riski gerçekleştirme) ulaşmak için bir güvenlik açığından yararlanan bir kod parçası, bir program veya dikkatlice hazırlanmış bir veridir.

Yerel (Local) ve Uzak (Remote)

Yerel istismarlar, zaten (sınırlı) erişime sahip olduğumuz sistemde yerel olarak bir güvenlik açığından yararlanma amaçlayan kodlardır.

Bu istismarlar, hedef sistemin kaynakları üzerinde tam bir kontrole sahip olabilmemiz için ayrıcalıklarımızı daha yüksek bir düzeye çıkarmak amacıyla neredeyse her zaman ayrıcalıklı yükseltme istismarlarıdır.

Uzaktan istismarlar , uzaktaki bir sistemdeki bir güvenlik açığından önceden erişim izni olmadan yararlanma amaçlı kodlardır.

Bu istismarlar genellikle belirli bir ağ hizmetine (belirli bir savunmasız sürümün) hedeflenir. Amaç, bilgilere yetkisiz erişim sağlamak veya uzaktaki sistemin kaynaklarına erişim sağlamaktır.

Birçok farklı istismar türü vardır. Bakalım infosec endüstrisi bunları nasıl daha fazla kategorize ediyor.

İstismar türleri

Hizmet Reddi (DoS)

DoS, belirli bir hizmetin / sistemin çökmesine neden olan bir istismardır. Sisteme sürekli paketler göndererek sistemin zarar görmesini amaçlamaktadur.

Aslında, bir sistemin çökmesine veya kullanılamamasına neden olmak oldukça istenmeyen bir sonuçtur. Bu, bir işin aksama süresine ve dolayısıyla müşteri ile çok hoş olmayan görüşmelere yol açabilir.

Ancak çok daha kötüsü de olabilir – gelir kayıpları, üretkenlik kayıpları ve bizim veya işverenimizin sorumlu tutulabileceği diğer mali sonuçlar bile olabilir.

Yerel Yetki Yükseltme (LPE)

Yukarıda belirtildiği gibi, yetki yükseltme istismarları, zaten (sınırlı) erişime sahip olduğumuz sistemdeki güvenlik açıklarından yerel olarak yararlanmayı amaçlamaktadır.

Amaç, yönetici ayrıcalıkları elde etmektir, tipik olarak:

  • Active Directory’de “Domain Admin”
  • Windows sistemlerinde “NT Authority \ System”
  • UNIX benzeri sistemlerde “root” kullanıcı

Ancak, ayrıcalıkları artırmanın başka yolları da vardır. Yalnızca istismarları kullanarak değil. Ayrıcalık yükseltme taktikleriyle ilgili en iyi kaynaklardan biri:

Uzaktan Kod Yürütme (RCE)

RCE en popüler istismarlardandır. Hedef sistemde kod çalıştırmamıza izin veriyorlar.

Ancak bazen istismarlar hedefin çökmesine neden olabilir.

Bir örnek, kötü şöhretli EternalBlue (diğer adıyla MS17-010) güvenlik açığı olabilir. Birçok sistemde MS17-010 istismarı vardır. Bu güvenlik açığı sayesinde WannaCry fidye yazılımı binlerce bilgisayara bulaşmıştır.

Bu nedenle, RCE açıklarından yararlanma konusunda her zaman tetikte olmalıyız. Sızma testlerinde karşılaşma ihtimali olan yüksek seviyeli güvenlik açığıdır.

Web Uygulamaları (WebApps)

Genel olarak web uygulamalarındaki ve web teknolojilerindeki güvenlik açıklarını hedefleyen bir dizi istismar var.

Bunlar, aşağıdaki gibi güvenlik açıklarını içerir:

  • Directory Traversal
  • SQL Enjeksiyonu (SQLi)
  • Kimlik Doğrulamasını Atlama
  • Siteler Arası Komut Dosyası (XSS)
  • Siteler Arası İstek Sahteciliği (CSRF)
  • Sunucu Tarafı İstek Sahteciliği (SSRF)
  • XML Harici Varlık Ekleme (XXE)
  • Yerel / Uzak Dosya Dahil Etme (LFI / RFI)
  • Ve daha fazlası..

Tüm dünya web teknolojilerine doğru kayarken, WebApp istismarları, açık arayla yayınlanan açıkların en yüksek bölümünü oluşturuyor.

İstemci Taraflı (Client-Side) İstismarları

İstemci tarafındaki istismarlar, genellikle aşağıdaki gibi kullanıcı uygulamalarındaki güvenlik açıklarından yararlanır:

  • PDF görüntüleyiciler
  • internet tarayıcıları
  • Sohbet / IM / E-posta istemcileri
  • FTP, SSH, DHCP istemcileri
  • Ve daha fazlası..

Bu tür istismarlar, bir sızma testi sırasında çok nadiren kullanılır. Bu nedenle, onları burada çok detaylı anlatmayacağız.

Pentest araçlarımızın, paket dinleyicilerimizin veya tarayıcılarımızın bile güvenlik açıklarından kaçınamadığını söyleyebiliriz.

İstismarlar nerede bulunur?

Aşağıdaki bölümler genel olarak kabul edilen ve önerilen istismar kaynaklarının bir listesini sağlar.

Exploit Database

Offensive Security tarafından işletilen ve sürdürülen Exploit Database ( https://www.exploit-db.com/ ), istismarların elde edileceği en iyi yerlerden biridir. Herkese açık istismarlar ve güvenlik tavsiyeleri arşividir.

Şu anda bu makaleyi yazarken veritabanlarında 42.729’dan fazla istismar girişi var ve sayı her geçen gün artıyor.

Exploit arşivine erişim için bir komut satırı yardımcı programı searchsploit de vardır . Bu yardımcı program Kali Linux’a varsayılan olarak önceden yüklenmiştir ve diğer sistemler için de mevcuttur.

JBoss açıklarını aramak için yardımcı programı kullanmanın bir örneği:

searchsploit jboss

İstismarlar daha sonra /usr/share/exploitdb/exploits/ dizini altında bulunarak kullanılabilinir.

Vulners CVE veritabanı

Vulners CVE veritabanı ( https://vulners.com/search ) bir başka büyük istismar kaynağıdır.

Birçok farklı kaynaktan büyük miktarda bilgiyi bir araya getirir. Bu, herkese açık olarak bilinen herhangi bir güvenlik açığı hakkında pratik olarak ayrıntı sağlamalarına olanak tanır.

Vulners veritabanı, Nessus veya OpenVAS gibi güvenlik açığı tarayıcılarından gelen bilgileri bile indeksleyerek, eklentilerinin içeriğinde arama yapmamıza olanak tanır.

Her giriş ayrıca gerçek danışmalara ve posta listelerine bağlantılar içeren bir referans bölümü içerir. Bu aynı zamanda muhtemelen bir istismara yol açan harika bir bilgi kaynağı olabilir.

GitHub istismar depoları

Açıklardan yararlanma ve CVE PoC kodları içeren çok sayıda GitHub deposu da vardır.

İşte en iyi istismar depolarından bazıları:

Bu depoların, kötü amaçlı içerik içerebileceğinden, son derece dikkatli kullanılması gerektiğini unutmayın.

Bu makalenin son bölümünde aşağıda açıklanan güvenlik yönergelerine uyduğunuzdan emin olunuz.

Exploit frameworks

Exploit çerçeveleri, çeşitli sızma testi faaliyetlerini standart bir şekilde ve büyük ölçekte otomatikleştirmemize olanak tanıyan büyük bir yazılım paketleridir.

Ayrıca test edilmiş ve kullanımı güvenli olan çok sayıda istismar içerirler.

İşte en popüler istismar çerçevelerinden bazıları:

Metasploit Framework muhtemelen en popüler olanıdır ve ayrıca varsayılan olarak Kali Linux’a önceden yüklenmiştir.

Metasploit’te ProFTPd istismarlarını aramaya bir örnek:

msfconsole
msf5 > search proftpd

Bir CVE’yi de kolayca arayabilirdik.

Exploit çerçeveleri son derece kullanışlıdır, çünkü sömürü aşağıdaki gibi ilgili görevlerle kolayca zincirlememize izin verir:

  • payload / shellcode oluşturma
  • pivoting işlemleri
  • Post explotation

Ayrıca çeşitli tarayıcılar ve pentesting için yararlı bir dizi yardımcı modül içerirler.

ÖNEMLİ NOT

Exploit framework’lerini exploit kitleriyle karıştırmayınız!

Exploit kitleri, siber suçlular tarafından istemci son kullanıcı makinelerine yapılan saldırıları otomatikleştirmek için kullanılan araç takımlarıdır. Genellikle kötü amaçlı yazılımları dağıtmak ve genellikle dolandırıcılık ve hırsızlık içeren yasa dışı faaliyetlerin gerçekleştirilmesine yardımcı olmak için kullanılırlar.

Exploit kitleri, bilgisayar virüsleri alanına aittir ve istismarlar da içermelerine rağmen, sızma testi sırasında kullanmak için yer yoktur.

Payload nedir?

Burada exploit’lerden bahsettiğimiz için, payload’lardan bahsetmek zorundayız, çünkü bunlar çoğu istismarın ayrılmaz bir parçasıdır. Kötüye kullanımların neden payload olduğunu anlamak için size bir soru sormama izin verin:

Bir yazılım hatasından yararlandıktan sonra ne olur, diyelim ki bir buffer overflow?

Ne istersek ortaya çıkıyor! Payload’lar devreye girdiği yer burasıdır.

Payload’lar, temel olarak bir güvenlik açığından yararlandıktan sonra gerçekleştirmek istediğimiz bir eylemi tanımlar. Örneğin:

  • Bir kodu yürütün.
  • Reverse shell alın.
  • Bir arka kapı oluşturun.
  • Bir kullanıcı oluşturun.
  • Bir dosya okuyun.

İstediğimiz herhangi bir şey.

Payload’lar tipik olarak bir shell biçiminde yazılır, ancak bu bir kural değildir. Örneğin, web uygulaması istismarlarının metin biçiminde payload’ları vardır.

Shellcode nedir?

Shellcode’lar, binary explotation alanına aittir. Bir shellcode, temelde bir payload’ın binary biçimidir – sömürü sırasında yürütmek istediğimiz eylemi (talimatları) tanımlayan bir kod parçasıdır.

Tipik olarak shellcode, hedef işlemci mimarisine ve işletim sistemine uygun bir makine kodunda yazılır. Örneğin:

  • x86 / Windows
  • Dalvik / Android

Shellcode kodlamayla ilgili olsa da, aslında hiçbir şeyi kodlamamız gerekmiyor. Metasploit gibi istismar araçlarıyla tamamen otomatikleştiriliyor.

Metasploit’in sunduğu msfvenom yardımcı programının bir örneği, akla gelebilecek her platformda ve mimaride pratik olarak yükler oluşturabilir:

msfvenom --list platforms
msfvenom --list archs

Msfvenom, çeşitli gizleme ve kodlama yöntemlerini desteklerken, muhtemelen isteyebileceğimiz neredeyse tüm payload’ları oluşturabilir.

Bu, payload üretiminin İsviçre çakısıdır ve özellikleri bu blog’un kapsamı dışındadır.

İşte msfvenom’un nasıl kullanılacağına dair örnekler içeren bazı çevrimiçi kaynaklar:

Hangi istismarın kullanılacağını nasıl bilebilirim?

Bu, genellikle kapsamlı bir keşif ve yazılımın hangi sürümünün hedefimiz üzerinde çalıştığını belirlemek anlamına gelir. Tam sürüm bilgisine sahip olduğumuzda, devam edip bir istismar arayabiliriz.

Ayrıca kullanabileceğimiz küçük bir numara var.

Searchsploit, Nmap çıktısını ayrıştırıp algılanan sürümlerine göre exploit bulabilmektedir.

Tek yapmamız gereken, hedefimizi Nmap servis algılama taraması (-sV) kullanarak taramak ve çıktıyı bir XML dosyasına (-oX) kaydetmek. Bunun gibi:

nmap -sV -oX file.xml <target>

Ardından, file.xml çıktısını seachsploit’e şu şekilde bağlayabiliriz:

searchsploit --nmap file.xml

Açıklardan nasıl güvenli bir şekilde yararlanılır?

İstismarlar öncelikli olarak tehlikelidir ve yanlış kullanılması feci sonuçlara yol açabilir.

Görünüşte şifreli ve belirsiz doğaları nedeniyle, genellikle anlaşılması zordur. Bu da başka bir risk yaratır.

Örneğin, istismara hoş olmayan bir sürpriz yapmak oldukça kolay olurdu – gizli bir kod veya bir arka kapı.

Doğrulanmış ve doğrulanmamış istismarlar

Herhangi bir istismarı çalıştırmadan önce, istismarın ne yaptığı hakkında bir fikrimiz olmalı.

İstismarın tam olarak nasıl çalıştığını ayrıntılı olarak anlamamız gerektiğini önermiyorum, ancak iddia ettiğinden daha fazlasını yapmadığına dair en azından belli bir düzeyde kesinliğe sahip olmalıyız.

Bir istismarın güvenli olduğunun göstergelerinden biri , Exploit Veritabanında ( https://www.exploit-db.com/ ) web arayüzünde ‘EDB Doğrulandı’ işaretini aramaktır :

Yeşil işaretler, istismarın Saldırı Güvenliği laboratuvarlarında test edildiğini ve kullanımının güvenli olduğunu gösterir.

Bilinmeyen ikili bloblara dikkat edin

Aşağıdaki örnekteki gibi bir açıkta bilinmeyen bir ikili blob gördüğümüzde çok dikkatli olmalıyız:

Bu tampon neden orada ve bu ne anlama geliyor?

Assembly dilini, tersine mühendisliği ve ikili dosya analizini anlamadığımız sürece, istismarı bir test ortamında test etmekten başka yapabileceğimiz pek bir şey yoktur.

Ama yine de aşağıdaki hileleri kullanarak onu analiz etmeye çalışabiliriz.

Yazdırılabilir / ASCII karakter olup olmadığına bakın:

echo -en "\x7f\x45\x4c\x46\x01....." | xxd

Bilinen herhangi bir dosya türüyle eşleşip eşleşmediğine bakın:

echo -en "\x7f\x45\x4c\x46\x01....." | file -s -

Bilinen herhangi bir dosya türü içerip içermediğini bulmanın başka bir yolu (ayrıca içinde):

echo -en "\x7f\x45\x4c\x46\x01....." > blob.bin
binwalk blob.bin

Blob’u makine kodu (talimatlar) olarak yorumlayın ve montaj kodunu okuyun:

echo -en "\x7f\x45\x4c\x46\x01....." | ndisasm -u -

Emin değilsek, en iyi şansımız onu bir test ortamında test etmektir.

Açıklardan yararlanmaya yönelik çalışma için güvenlik yönergeleri

İstismarları kullanırken akılda tutulması gereken temel güvenlik önerileri listesi:

  • Yalnızca güvenilir ve saygın istismar kaynaklarını kullandığınızdan emin olunuz.
  • Özel forumlardan veya tanımadığınız kişilerden suistimalleri indirmeyin
  • İstismarı bir hedef üzerinde çalıştırmadan önce test etmek için çaba gösteriniz.
  • Her istismarı her zaman bir metin düzenleyicide inceleyiniz.
  • Terminal kaçış enjeksiyonlarına dikkat ediniz

KAYNAKÇA:

en(https://www.infosecmatter.com/pentesting-101-working-with-exploits/)

Related Posts

Leave a Reply