Pentester için MSSQL: NetExec
NetExec (nxc), yaygın olarak penetrasyon test uzmanları ve red team üyeleri tarafından kullanılan CrackMapExec'in (CME) modern bir halefi olarak geliştirilen güçlü bir ağ istismar aracıdır. Daha önce CrackMapExec, mpgn tarafından aktif olarak sürdürülüyordu, ardından NetExec popüler bir tercih olarak ortaya çıktı. Bu makalede, bu aracın parola püskürtme, komut yürütme, dosya yükleme ve daha birçok görevi otomatikleştirmek için kullanışlı olabileceği bölümlerin çoğunu ele alacağız. Burada, nxc aracını kullanarak MSSQL sunucusunda test vakalarını gerçekleştireceğiz.
İçindekiler
- Laboratuvar Kurulumu
- Şifre spreyi
- Hash'leri kullanarak şifre püskürtme
- Kimlik Doğrulamayı Kontrol Et
- Komut yürütme
- Karmalarla komut yürütme
- Dosya yükleme ve indirme
- Ayrıcalık yükseltme
- Farklı bir port numarasında numaralandırma
- Çözüm
Laboratuvar Kurulumu
Hedef Makine: Windows 10 (192.168.31.126)
Saldırgan Makinesi: Kali Linux (192.168.31.141)
Gösterim amaçlı olarak, burada tüm test durumlarını göstermek için MSSQL hizmetini kullanacağız. MSSQL sunucusunu hedef makineye zaten kurduk ve çalışan örnek için birkaç kullanıcı oluşturduk.
Şifre spreyi
Doğru kimlik bilgilerini kontrol etmek için, users.txt olarak kullanıcı adları ve pass.txt olarak parolalar sözlüğü oluşturacağız . Sözlükler oluşturulduktan sonra, doğru kullanıcı adı ve parolayı kontrol etmek için parola spreyi saldırısını gerçekleştirebiliriz. Bu spreyi MSSQL sunucusunda gerçekleştireceğiz. Bunu yapmak için komut şu şekilde olacaktır:
Yerel kimlik doğrulamayı kullanarak parola püskürtme işlemini gerçekleştirmek için, kimlik doğrulama girişimlerinin MSSQL sunucusundaki yerel hesaplara karşı yapılması gerektiğini belirten –local-auth bayrağını kullanabiliriz .
Hash'leri kullanarak şifre püskürtme
Bir karma elde ettiysek ancak karmanın hangi kullanıcıya ait olduğundan emin değilsek de aynısını yapabiliriz. Burada bir kullanıcı listesi geçireceğiz ve elde edilen karma değerini -H bayrağında vereceğiz.
Şifre püskürtme işlemini her kullanıcı adının yalnızca listedeki karşılık gelen şifresiyle kullanılacağı şekilde gerçekleştirmek istiyorsak, o zaman –no -bruteforce bayrağını kullanabiliriz. Kullanıcı adı-şifre çifti eşleşirse, devam eder, aksi takdirde diğer olası kombinasyonları denemeden bir sonraki çifte atlar.
Kimlik Doğrulamayı Kontrol Et
MSSQL'e kimlik doğrulaması yapmak için iki yöntem kullanabiliriz, yani windows veya local , varsayılan kimlik doğrulama windows'tur. Yerel kimlik doğrulamasını kullanmak için komuta şu bayrağı –local-auth ekleyin. Burada yerel kimlik doğrulamasını sa kullanıcısı olarak gerçekleştirmeye çalışıyoruz.
Daha önce de belirtildiği gibi, Windows kimlik doğrulamasını da test edebiliriz. Varsayılan mod Windows kimlik doğrulaması olarak ayarlandığından, Windows kimlik doğrulaması gerçekleştirmek için herhangi bir kimlik doğrulama bayrağı vermemize gerek yoktur.
nxc kullanılarak DB Komutu yürütme
-q bayrağını verip ardından veritabanı sorgusunu belirterek veritabanını sorgulamak için nxc'yi kullanabiliriz . Bunu yapmak için komut şu olacaktır:
nxc kullanarak komut yürütme
Sistem düzeyindeki komutları gerçekleştirmek için, komutları yürütmek için MSSQL xp_cmdshell'i kullanan -x bayrağını kullanabiliriz . İhtiyacımıza bağlı olarak burada hem windows hem de yerel kimlik doğrulamayı kullanabiliriz.
Karmalarla komut yürütme
Bir şekilde yönetici kullanıcısının karmasını aldığımızı ve sistem seviyesi komutlarını MSSQL kullanarak yürütmek istediğimizi varsayalım, bu yüzden bunu gerçekleştirmek için nxc'yi kullanabiliriz . İlk önce Windows kimlik doğrulamasının başarılı olup olmadığını kontrol edeceğiz ve ardından komut yürütmeyi gerçekleştirmek için -x bayrağını verebiliriz.
nxc kullanarak dosya yükleme ve indirme
Ayrıca dosyayı hedef sisteme nxc'ye –put-file bayrağını vererek de yükleyebiliriz. Bu bayrak dosya adını alacak ve ayrıca dosyanın yüklenmesi gereken yolu da belirtecektir.
Dosyanın istenilen yere başarıyla yüklendiği görülmektedir.
Benzer şekilde, dosyayı –get-file bayrağını kullanarak da indirebiliriz . Burada indirilmesi gereken dosyanın tam yolunu ve ayrıca dosyanın bizim tarafımızda yerleştirilmesi gereken yolu belirtmemiz gerekir.
nxc kullanarak ayrıcalık yükseltme
Burada , nxc'nin mssql_priv modülünü kullanarak geçerli kullanıcının ayrıcalık yükseltmesi yapmasına izin verilip verilmediğini kontrol edeceğiz . -M bayrağından sonra modül adını açıkça belirtebiliriz. Burada ayrıcalık yükseltmesini kontrol etmek için raj kullanıcısını kullanacağız . Bu, Windows kimlik doğrulamasını gerçekleştirdiğimiz ve ayrıcalık yükseltmeyi denediğimiz durumlarda kullanılabilir . Komutun çıktısı, raj kullanıcısının bir kullanıcıyı taklit edebileceğini gösterir . Bir kullanıcıyı taklit etmek, o kullanıcının kimliğini ve ayrıcalıklarını geçici olarak üstlenmek anlamına gelir.
Aynı işlem, –local-auth bayrağı eklenerek yerel kimlik doğrulama kullanılarak tekrarlanabilir .
Ignite kullanıcısının yerel kimlik doğrulaması kullanarak sa kullanıcısını taklit edebildiği görülebilir , bu nedenle bir sonraki adımda ayrıcalık yükseltme işlemini gerçekleştireceğiz. Ignite kullanıcısının özellikleri kurban makinede de görülebilir.
Ayrıcalık yükseltmesi gerçekleştirmek için Metasploit framework'ünü kullanacağız. Ayrıcalık yükseltmesi gerçekleştirmek için kullanılabilen , auxiliary/admin/mssql/mssql_escalate_execute_as adında bir modül var . Modülde kullanılacak komutlar şunlardır:
Exploit'i çalıştırdıktan sonra, ignite kullanıcısının artık sysadmin olduğunu gösterir. Bunu kontrol etmek için, daha önce kullanılan komutu nxc'de bir kez daha çalıştıracağız . Komutun çıktısı, ignite kullanıcısının zaten bir sysadmin olduğunu gösterir . Bunu kurban makinede de ignite kullanıcısının sysadmin olduğunu doğrulayabiliriz.
Farklı bir port numarasında numaralandırma
Eğer MSSQL sunucusu farklı bir port numarasında çalışıyorsa, o zaman da –port bayrağını kullanarak sadece port numarasını açıkça belirterek aynı test durumlarını gerçekleştirebiliriz .
Görüldüğü gibi MSSQL sunucusu 9070 portunda çalışıyor. Bu yüzden aşağıdaki komutu verebiliriz:
Çözüm
NetExec (nxc), güvenlik uzmanları için son derece etkili ve uyarlanabilir bir araç olarak öne çıkıyor ve ağ istismarı ve istismar sonrası görevler için gelişmiş özellikler sunuyor. Kapsamlı işlevselliği, yalnızca MSSQL sunucusunda değil, diğer hizmetlerde de etkili parola püskürtme ve komut yürütme olanağı sağlıyor ve bu da onu hem penetrasyon testlerinde hem de kırmızı takım operasyonlarında önemli bir varlık haline getiriyor.