16 Mayıs 2012

Webshell üzerinden default RDP portunu değiştirerek firewall bypass

Posted by: Fırat Celal Erdik 16 Mayıs 2012
Bir süredir boş vakitlerimi BGA tarafından düzenlenen CTF 2012 Ethical Hacking yarışması ile geçirmekteydim.Yarışma gerçek sistemler üzerinde yapılan çeşitli hacking yöntemlerini içerisinde barındırmaktaydı.Yaklaşık 500 kişi ve 40 civarı grubun katıldığı yarışmada, Np004 grup ismi ile katıldığım yarışmada 540 puan toplayarak en yüksek puanı almış olsamda 6 adımdan oluşan yarışmada 5. adımda kaldığımdan dolayı ödüle ulaşamadım :)  Yarışmada tüm adımları tamamlayan olamadığı için sanıyorum tekrarlanacak :) Detaylı bilgi için: http://www.hack2net.com/ Puanlar: http://bit.ly/IVG2Pi

Yarışma süresince bloğ'umu her ne kadar aksatmış olsamda yarışmadan aldığım notları kısa kısa post olarak atmaya çalışacağım.Hacking süresince karşılaştığımız adımlardan birinde; nihai hedef web sunucu arkasındaki başka bir sunucu olduğu için web sunucuyu remote desktop olarak ele geçirmemiz gerekiyordu.Web uygulaması üzerinden sqli açıklığı ile sisteme sızılarak webshell ile sistem üzerinde kontrol sağlandı fakat sistemin önünde bulunan firewall incoming trafikte 80 ve 22 dışındaki portları engelliyordu.Dolayısıyla 3389 üzerinde çalışan RDP'ye erişmemiz sunucu üzerinde bu port açık olsada mümkün olmuyordu.Firewall'u bypass etmek için burada RDP TerminalService hizmeti default 3389 üzerinden 22 üzerine alındı.
Öncesinde 22 portunda çalışan Ftp uygulaması webshell üzerinden durdurulması gerekiyordu.Webshell ile windows bir sunucu olan web sunucu üzerinde komut satırı seviyesinde erişimimiz olduğu için webshell üzerinden verdiğimiz komutlar windows shell'inde çalışmaktaydı.Bu yüzden adımlarımızı windows shell komutları üzerinden devam ettirmekteydik.Hangi port üzerinde hangi process çalıştığını görmek için netstat -anb -p tcp komutu kullanılabilir.Tasklist komutu ile çalışan task'lar listelenebilir.

Taskkill komutu ile 22. portta çalışan filezillaftp.exe uygulaması durduruldu ve port 22 boşa çekildi.

İlgili komut şu şekilde:
taskkill /F /T /IM filezillaftp.exe

Burada /T ile ilişkili tüm processleri öldürmesini istiyoruz, /F ile öldürme işlemine zorluyoruz.


Ardından boşa çekilen 22 portu üzerinde RDP servisini(TerminalService) çalıştırmalıydık.Bu işlemi windows komut satırından regedit dosyasına müdahale ederek gerçekleştirdik.

İlgili komut şu şekilde:
REG ADD "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x16 /f

 Burada 0x16 , 22 decimal değerinin hexadecimal karşılığıdır.Bu inputu regedit dosyasına yazdırdıktan sonra TerminalService'in 22. portta çalışması için bu servisi durdurup tekrar başlatmak gerekiyor bunun içinde net stop TerminalService /y ve net start TerminalService /y komutlarını kullandık.
Böylece 22 portu üzerinden sisteme RDP ile eriştik daha öncesinde webshell üzerinden oluşturduğumuz kullanıcı adı ve şifre ile sisteme login olduk.Komut satırından kullanıcı adı şifre oluşturma ile ilgili http://www.networkpentest.net/2011/08/net-user-fonksiyonlar.html ve http://www.networkpentest.net/2011/08/ele-gecirilmis-sistem-uzerinde.html yazılarımıza göz gezdirebilirsiniz.Fakat Administrator kullanıcısının desktop'una ihtiyacımız olduğu için hashdump işlemi yapılıp mevcut hash ile sisteme login olundu.Bu işlemlere ait detayları başka bir yazımda değineceğim.
Makalelerin kötüye kullanım kullanıcının sorumluluğundadır. | networkpentest.net. Blogger tarafından desteklenmektedir.