Ömer'in Yeri

Bind ve Reverse Shell

Shell

Shell kullanıcıya işletim sistemine bir arayüz sağlar. Girdilerinizi toplar ve bu girdilere göre programları çalıştırır. Bir program çalışmasını tamamladığında, o programın çıktısını görüntüler. Türkçeye kabuk olarak çevrilmiştir.

Shell, shell komutlarımızı, programlarımızı ve komut dosyalarımızı çalıştırabileceğimiz bir ortamdır. Farklı shell çeşitleri vardır ve her shell çeşidinin kendi komutları ve işlevleri vardır.

Bind Shell

Hedef makinede bir iletişim portu açıldıktan sonra saldırgandan gelen bağlantıyı beklediği shell türüdür. Saldırgan daha sonra bu porta bağlanır ve sunucuda komut yürütmesine olanak sağlar. Yani saldırganın makinesi istemci, hedef makine ise sunucu gibi davranır.

Bind shell kullanmanın 3 adımı vardır:

  1. Hedef makinede bir shell’i (örn. bash) herhangi bir porta bağlayın.
  2. Saldırıyı yapacağınız makineden hedef makinenin belirlediğiniz portuna bağlanın.
  3. Komutlarınızı girin.

Netcat ile Bind Shell Örneği

Reverse Shell

Saldırganın makinesinde bir iletişim portu açılıp hedef makineden bağlantı beklediği shell türüdür. Hedef makine saldırgan makineye bağlandıktan sonra saldırgan komut yürütebilir. Yani saldırganın makinesi sunucu, hedef makine ise istemci gibi davranır.

Reverse shell kullanımının 3 adımı vardır:

  1. Saldırıyı yapacağınız makineden herhangi bir porta dinleyici açın.
  2. Hedef makineden bu porttaki dinleyiciye bağlanın.
  3. Komutlarınızı girin.

Netcat ile Reverse Shell Örneği

Bind Shell’in Sorunları

Yapısı itibariyle bind shell herhangi bir kimlik doğrulaması veya güvenlik sunmaz. Yani başka bir kişinin hedef makinedeki bind shell portunu birtakım araçlar yardımıyla keşfedip bağlanarak komut çalıştırması çok zor olmayacaktır.

Başka bir mesele ise internet trafiğine açık olan makinelerin önüne yerleştirilen güvenlik duvarlarının içeri gelen trafiği çok sıkı bir şekilde filtrelemesidir. Genelde sunucuların 80 ve 443 haricindeki portlarına gelen trafik güvenlik duvarına takılarak engellenir. Bind portunu 80 veya 443 yapsak bile modern güvenlik duvarlarının bu shell bağlantısını tespit edip engellemesi mümkündür.

Son olarak bind shell’in önündeki bir diğer engel ise NAT/PAT çevirmesidir. Bu işlem hedef makinenin dahili IP adresini farklı harici IP adreslerine çevirir. Bazı durumlarda portlar bile çevrilebilir. Bu durum da hedef makineye dışarıdan direkt bağlantı kurulmasını engeller.

Çözüm Olarak Reverse Shell

Reverse shell bind shell’in sorunlarının birçoğunu çözer.

Hedef makinede dinleyiciye ihtiyaç yoktur. Yani hedef makinenin shell bind edilmiş portunu savunmasız bir şekilde herkese açık bırakmak zorunda kalmayız.

Reverse shell genelde 80 ve 443 gibi popüler portları kullanır. Bu portlar genelde dışarıya çıkan trafikte filtrelenmez. Böylece güvenlik duvarlarını atlatabiliriz.

Hedef makinenin IP adresini bilmemiz veya belirtmemiz gerekmez. Böylece hedef makinenin iç ağındaki NAT/PAT çevirisi ile uğraşmayız.

Kullanım Senaryoları

Uzun süreli bir arka kapı bırakmak ve birden farklı makineden bağlanabilmek istiyorsanız, hedef makinenin içeri gelen trafiğini filtreleyen bir güvenlik duvarı yoksa, NAT/PAT çevirisi yapılmıyorsa veya başka yöntemlerle atlatabiliyorsanız bind shell kullanmanız daha mantıklıdır.

Sadece sizin makineniz ile hedef makine arasında bir bağlantı istiyorsanız, hedef makinenin trafik filtrelemesi sıkıysa, NAT/PAT çevirisi yapılıyorsa reverse shell kullanmanız daha mantıklı olacaktır.


Rehber — 19 Haziran 2021

🌑 moda geç.