from external network to domain admin

Bu senaryo dışa açık web uygulamsından domain admin senaryosunu kapsamaktadır.

  1. Öncellikle web uygulamasında bulunan zafiyet sonucunda içeriye web shell atılır. Web uygulamasının çalıştığı sunucuda sadece 80 ve 443 portları dışarıya açıktır.

  2. Web uygulamasına web shell atıldıktan sonra içeriden bilgi toplamak için web shell üzerinden web config dosyaları okunabilir. Administrator haklarına sahip kullanıcının parolası web.config dosyalarında bulunabilir.

  3. Web uygulamasının bulunduğu sunucuya rdp ile bağlanabilmek için RDP trafiğinin 80 portu üzerinden gönderilmesi gerekir. Bunun için tunna aracı kullanılabilir. Bu araç sunucuya yüklenen(conn.aspx/php) bir aspx/php dosyası üzerinden http trafiğini alır ve içerde RDP portuna yönlendirir. Aracı çalıştırmak için aşağıdaki örnek komut kullanılabilir.

  4. python proxy.py -u "http://DOMAIN/PATH/conn.aspx" -l 4444 -r 3389 -v

    Yukarıdaki komut basit ifadeyle localhost'un 4444 portuna gelen trafiği conn.aspx/php dosyası üzerinden sızılan sunucunun 3389 portuna yönlendirir.

  5. Artık sunucuya RDP üzerinden oturum alınabilir. Oturum almak için windowsta bulunan RDP client'ı üzerinden veya linux'de bulunan xfreerdp gibi araçlar kullanılabilir. xfreerdp /u:"user_name" /v:localhost:4444 komutu xfreerdp için kullanılabilir.

  6. Sunucudan RDP oturumu alındıktan sonra eğer 'Administrator' grubunda isek doğrudan lsass.exe processinin dump'ını alarak kendi makinemize çekebiliriz. Dump'ı aldıktan sonra mimikatz aracı kullanılarak sızılan sunucuda oturum açmış kullanıcılara ait clear-text veya parola özetlerine ulaşılabilir.

  7. mimikatz aracına lsass processinin dump dosyasını verip, giriş yapan kullanıcıları bulmak için aşağıdaki komutlar verilmelidir.

    1. privilege::debug

      sekurlsa::minidump <dump_file_name.DMP>

      sekurlsa::logonpasswords

  8. Eğer makineden GUI olarak oturum alınamıyor ise komut satırı üzerinde procdump aracı ile herhangi processin dump'ı alınabilir. Bu işlem için procdump aracı hedef sunucuya atıldıktan sonra aşağıdaki komutlar çalıştırılmalıdır.

    1. procdump.exe -ma lsass.exe lsass.DMP

    2. Yukarıdaki komut ile lsass processinin dump'ı alınarak lsass.DMP dosyasına yazılır. Daha sonra 7. adımda bulunan mimikatz komutu kullanılarak giriş yapan kullanıcılara ulaşılabilir.

Ağda Bulunan Diğer Sunuculara Sıçrama

  • Yukarıdaki senaryo ele geçirilen makine üzerinden bilgi toplamayı kapsamaktadır. Sızma testlerinde amaç erişilebilecek maximum sunucu sayısı olduğundan networkde bulunan diğer sunucularada sızılmaya çalışılmalıdır. Bu bağlamda dışarıya kapalı olan bu sistemlere erişim ancak ele geçirilen hedef sunucunun proxy olarak kullanılmasıyla mümkün olmaktadır. Bu bölümde ele geçirilen sunucunun proxy olarak kullanılarak networkdeki diğer kaynaklara erişmeyi kapsamaktadır.

  1. Ele geçirilen sunucu üzerinden meterpreter oturumu alınmalıdır. Bu işlem için meterpreter backdoor'u oluşturularak doğrudan web shell üzerinden yüklenebilir. Bu durumda bazı alt senaryola doğabilir. Örneğin;

    1. msfvenom ile backdoor oluşturularak web shell üzerinden sisteme yüklenebilir.

    2. web delivery modülü kullanılarak meterpreter oturumu alınabilir.

    3. sunucuda bulunan güvenlik cihazları meterpreter zararlısını yakalayabilir.

      • Bu durumda meterpreter yazılımı encoding işleminden geçirilmelidir veya güvenlik yazılımları atlatmak için başka evasion teknikleri kullanılmalıdır.

      • Sunucuda bulunan güvenlik yazılımında exclusion verilen dizinler bulunarak zararlı bu dizinlere yüklenebilir.

  2. Meterpreter oturumu başarılı bir şekilde alındıktan sonra dışardan erişilmeyen makinelerin bulunduğu ip bloğu için route kuralı eklenmelidir. Literatürdeki adıyla ele geçirilen sunucunun pivot olarak kullanılması diye geçer.

  3. Route işlemi için meterpreter oturumu background'a alındıktan sonra metasploit shell'inde iken aşağıdaki komut ile route kuralı yazılabilir.

    1. route add <dışarıdan erişilmeyen IP> <erişilmeyen blok için subnet> <meterpreter session id

      • route add 192.168.1.0 255.255.255.0 2

      Tek bir ip adresine ait yönlendirme yapılacak ise aşağıdaki şekilde ifade edilebilir.

      • route add 192.168.1.42 255.255.255.255 2

  4. Yönlendirme işlemi yapıldıktan sonra metasploit bünyesinde bulunan auxiliary modülü olan socks4a kullanılarak sunucuda bir sock proxy servisi başlatılır. Bu işlem için;

    1. use auxiliary/server/socks4a

      set RHOST <your ip>

      set RPORT <your port>

      run

  5. Socks servisi başlatıldıktan sonra sock servisinde belirtilen porta istekleri yönlendirmek için bir proxy uygulaması kullanılmalıdır. Bu işlem için proxychains kullanılabilir. Bunun için /etc/proxychains.confdosyasının en altında socks4 IP PORT bilgisi girilmelidir. Böylece proxychain ile başlatılan bütün uygulamaların trafiği belirtilen IP:PORT a yönlendirilecektir. Ordan da yazdığımız route kuralına göre dışardan erişemediğimiz networke iletilir.

  6. Socks servisi başlatılıp proxychains konfigüre edildikten sonra metasploit uygulaması proxychains msfconsole -q ile başlatılır. Artık metasploit'e ait tüm trafik proxychainde belirtilen IP:PORT' yönlendirilir ordan da hedef sistemin içinde olduğu network'e.

  7. Bu aşamadan sonra artık ms17-010 ve smb_login modülleri ile içerde 'lateral movement" yapılarak domain admin'e ulaşılmaya çalışılır.

(smb_login ve ms17-010 ve session başlatılmama payload değiştirme gibi trickler yazılacak.)

  1. Yu

Last updated