Windows Ağlarında Domain Admin Haklarına Sahip Olma

“Kaçak” sızma testleri esnasında kullanılmak üzere windows ağları için belirli yeteneklere sahip geliştirilmiş bir araçtır. Geliştirilmesi devam etmekte olan bu sürüm yetenekleri olarak;

  • Kurum domain yapısı üzerinde belirtilen kullanıcıların oturum bilgisinin tespit edilebilmesi
  • Mimikatz sonuçlarının raporlanabilmesi

NOT: Burada anlatılanlar Kali Linux dağıtımında uygulanmıştır. Diğer sistemler için test edilmemiştir ancak muhtemelen aynı adımlar ile uygulanması mümkündür.

Kullanıcı Oturum Bilgilerinin Tespit Edilmesi

Kurulum öncesi gerekli paketlerin sisteme kurulması gerekmektedir. Bunun için aşağıdaki adımlar takip edilmelidir.

# apt-get install msgpack-python

Duruma ait örnek ekran görüntüsü belirtildiği şekilde olmaktadır.

İndirilen dosya (master.zip) zip dosyasından çıkarılır

# cd /tmp
# wget https://github.com/SpiderLabs/msfrpc/archive/master.zip

Duruma ait örnek ekran görüntüsü belirtildiği şekilde olmaktadır.

# unzip master.zip
# cd msfrpc-master/python-msfrpc
# python setup.py install

Duruma ait örnek ekran görüntüleri belirtildiği şekilde olmaktadır.

Gerekli paketlerin sisteme kurulmasının ardından “msfrpc” servisinin başlatılması gereklidir. Bunun için paket ile birlikte gelen
“msfrpcd.sh” betiği kullanılabilir. Msfrpc servisinin başlatılması için betik aşğıda belirtildiği şekilde çalıştırılmalıdır. Bu betik 55552 portunda msfrpc servisinin çalıştırılmasını betik içerisindeki gömülü kullanıcı adı parola bilgisi ile başlatmaktadır. Daha önceden bu servisin farklı bir kullanıcı adı/parola bilgisi ile çalıştırılması olasılığına karşın kontrol edilmelidir. Bu işlem netstat komutu yardımı ile belirtilen şekilde kontrol edilebilmektedir.

# netstat -nlput | grep 55552 | grep -v grep

Bu adım doğrulandıktan sonra betik aşağıda belirtildiği şekilde yönetilebilmektedir.

# ./msfrpcd.sh status
MsfRpcd: Running

# ./msfrpcd.sh stop
MsfRpcd: Stopped

#./msfrpcd.sh start
MsfRpcd: Starting
………………
MsfRpcd: Started

Duruma ait örnek ekran görüntüsü belirtildiği şekilde olmaktadır.

Kullanım için parametre olarak 3 adet dosya kullanılmaktadır.

1. parametre olarak hangi kullanıcıların sisteme oturum açtığı bilgisinin sorgulanacağı dosya,
2. parametre olarak hangi kullanıcı bilgileri ile belirtilen sistemlerde oturum açılıp açılmadığı bilgisinin alınacağı
“xml” tabanlı yapılandırma dosyası,
3. parametre ilede hangi ip adresleri için sorgulamanın gerçekleştirileceği dosya kullanılmaktadır.

  • <user_file>: Bu dosya içerisinde hangi kullanıcıların aranacağı bilgisi yer almalıdır. Her bir satırda “DomainKullanıcı_Adı” şeklinde belirtim gerçekleştirilebilir. Örnek bir içerik aşağıda gösterilmiştir.

SirketYoneticiKullanici
WorkgroupAdministrator

  • <ip_file>: Bu dosya içerisinde hangi ip adreslerinin aranacağı belirtilmektedir. Metasploit formatında kabul edilen tüm ip adres yazım formatı geçerli olmaktadır. Örnek bir içerik aşağıda gösterilmiştir.

192.168.100.100
192.168.100.111

  • <config_file>: Bu dosya içerisinde hangi kullanıcı bilgileri ile belirtilen sistemlere oturum açılıp açılmayacağı bilgisi bulunmaktadır. İstenilen sayıda kullanıcı bilgileri için belirtimler gerçekleştirilebilir. Domain Adı, Kullanıcı Adı, Kullanıcı Parola bilgisi ve kullanılmak istenen “thread” sayısının belirtimleri kullanılmaktadır. Örnek bir içerik aşağıda gösterilmiştir.

<?xml version=”1.0″?>
<domain-admin>
<domain>
<name>WORKGROUP</name>
<username>Administrator</username>
<password>Test123</password>
<threads>10</threads>
</domain>
<domain>
<name>Sirket</name>
<username>Saldirgan</username>
<password>Aa123456</password>
<threads>10</threads>
</domain>
</domain-admin>

NOT: Belirtilen dosyalar içerisinde “users_file” ve “ip_file” dosyaları için tam yol belirtilmelidir. Aksi halde hata mesaji
alıacaktır. Bu durum yapılandırma dosyası için geçerli değildir. Örneğin “/usr/local/data/users.txt” gibi. Kullanıcı oturum açma tespit etme özelliği için “–domain” opsiyonu ile çalıştırılmalıdır. Örnek bir kullanım aşağıda gösterildiği gibi olmaktadır.

# ./kacak.py –domain /root/sld_kacak/kacak/data/users.txt config/config.xml /root/sld_kacak/kacak/data/ip_file.txt

[+] Domain: WORKGROUP
— Empty —

[+] Domain: Sirket
[+] 192.168.100.101 -> SIRKETEtkiAlaniYoneticisi

Duruma ait örnek ekran görüntüsü belirtildiği şekilde olmaktadır.

NOT: Betik hata ayıklama seçeneği amaçlı “-v” opsiyonu ile çaıştırılarak debug mesajları verebilmektedir. Hata ayıklama modu olarak 3 seviye bulunmaktadır. 1 en düşük 3 ise en yüksek seviye olarak belirtilmektedir. Örnek bir kullanım aşağıda gösterildiği gibi olmaktadır. [-] ile başlayan satırlar hata ayıklama mesajlarına ilişkin satırlardır.

# ./kacak.py –domain /root/sld_kacak/kacak/data/users.txt /root/sld_kacak/kacak/config/config.xml /root/sld_kacak/kacak/data/ip_file.txt

[+] Domain: WORKGROUP
— Empty —

[+] Domain: Sirket
[+] 192.168.100.101 -> SIRKETEtkiAlaniYoneticisi

# ./kacak.py –domain /root/sld_kacak/kacak/data/users.txt /root/sld_kacak/kacak/config/config.xml /root/sld_kacak/kacak/data/ip_file.txt -v 1
[ – ] Config File’s Options –> [{‘threads’: ’10’, ‘password’: ‘Test123’, ‘user_name’: ‘Administrator’, ‘domain_name’: ‘WORKGROUP’}, {‘threads’: ’10’, ‘password’: ‘Aa123456’, ‘user_name’: ‘Saldirgan’, ‘domain_name’: ‘Sirket’}]

[+] Domain: WORKGROUP
[ – ] Commands –> [‘use auxiliary/scanner/smb/smb_enumusers_domainn’, ‘set RHOSTS file:/root/sld_kacak/kacak/data/ip_file.txtn’, ‘set THREADS 10n’, ‘set SMBPass Test123n’, ‘set SMBUser Administratorn’, ‘set SMBDomain WORKGROUPn’, ‘runn’]
— Empty —

[+] Domain: Sirket
[ – ] Commands –> [‘use auxiliary/scanner/smb/smb_enumusers_domainn’, ‘set RHOSTS file:/root/sld_kacak/kacak/data/ip_file.txtn’, ‘set THREADS 10n’, ‘set SMBPass Aa123456n’, ‘set SMBUser Saldirgann’, ‘set SMBDomain Sirketn’, ‘runn’]
[+] 192.168.100.101 -> SIRKETEtkiAlaniYoneticisi

Duruma ait örnek ekran görüntüsü belirtildiği şekilde olmaktadır.

NOT: test dizini altında hata ayıklama ve kontrol amaçli olarak “bash script” ile geliştirilmiş aynı işi gerçekleştirien bir betik
bulunmaktadır. Olası durumlarda bu betik yardımı ilede aynı işlem gerçekleştirilebilmektedir.

# ./test_kacak.sh ../data/ip_file.txt ../data/users.txt Sirket Aa123456 Saldirgan 5
192.168.100.101 -> SIRKETEtkiAlaniYoneticisi

Duruma ait örnek ekran görüntüsü belirtildiği şekilde olmaktadır.

Mimikatz Sonuçlarının Raporlanması

Mimikatz sonuçlarının ayrıştırılabilmesi için “–mimikatz” seçeneği kullanılmaktadır. Bu seçenek yardımı ile sonuçlar kolayca
raporlanabilmektedir. Mimikatz ile elde edilen örnek bir çıktının raporlanmasına dair örnek bir kullanım ve çıktı aşağıda gösterildiği gibi olmaktadır.

# ./kacak.py –mimikatz /root/sld_kacak/kacak/data/mimikatz.txt
Kadi: galkan Parola: galkan Sifresi
Kadi: alkan Parola: alkan Sifresi