Shell Nedir?
Shell, klavyeden komutları alan ve bunları gerçekleştirmesi için işletim sistemine veren bir programdır.
Terminal Nedir?
Terminal, komut satırına erişmemizi sağlayan ve kabukla etkileşim kurmamıza izin veren bir arayüzdür.
Reverse Shell
Reverse Shell, hedef makinenin saldırgan makineye geri iletişim kurduğu bir shell türüdür. Saldırı yapan makinenin, bağlantıyı aldığı bir dinleyici portu vardır ve bu bağlantıyı kullanarak kurban makinede kod veya komut çalıştırılabilir.
NetCat İle Reverse Shell
Netcat, TCP ve UDP ağ bağlantılarında veri yazabilen ve okuyabilen yardımcı bir programdır. Ayrıca netcat port scanner, backdoor, port listener olarak da kullanılabilir.
NetCat Parametreleri
• -n : DNS çözümlemesi yapmamasını sağlar.
• -v : Bağlantı sırasında oluşan bilgilendirme mesajlarının ayrıntılı bir biçimde gösterilmesini sağlar.
• -l : Dinleme modu olduğunu belirtir.
• -p : Port numarasını belirtmek için kullanılır.
• -e : Eğer bağlantı olursa sonrasında program çalıştığında STDIN ve STDOUT ile iletişim kurmak için kullanılan opsiyondur.
İlk olarak, saldırganın kendi IP adresine gelen reverse shell bağlantısını dinleyebilmesi için sisteminde bir dinleyici başlatması gerekir. Bunu da netcat ile yapıyoruz.
Yukarıdaki komut, 1337 portunda bir netcat dinleyicisi başlatır. Artık saldırganın dinleyiciye bağlanmak için aşağıdaki resimdekine benzer komutlar çalıştırması gerekiyor. Daha fazla Reverse Shell komutuna buradan ulaşabilirsiniz.
Kurban makinede, yukarıda gördüğünüz komutu kullanarak, dinlemeye aldığımız porta bağlanabiliriz.
Yukarıdaki resimde de gördüğünüz gibi bağlantı gerçekleşti. Artık kurban makinede istediğimiz komutları çalıştırabiliriz.
Bind Shell
Bind Shell, hedef makinede bir iletişim portu veya bir dinleyicinin açıldığı ve gelen bağlantıların beklendiği bir shell türüdür. Saldırgan daha sonra hedef makinenin dinleyicisine bağlanarak sunucuda kod veya komut çalıştırabilir.
NetCat İle Bind Shell
Öncelikle netcat ile hedef makinemizin 1337 portunda bir dinleyici oluşturuyoruz.
Kurban makinede dinlemeye aldığımız 1337 portuna bağlanıyoruz.
Yukarıdaki resimden de görebileceğimiz gibi bağlantı gerçekleşti. Artık kurban makinede istediğimiz komutları çalıştırabiliriz.
Reverse İle Bind Shell Arasındaki Farklar
● Bind Shell ile saldırgan, kurban üzerinde bir port açar ve bu porta bağlanır
● Reverse shell ile kurban, saldırganın dinlemeye aldığı port’a bağlantı yapar
Ne Zaman Rerverse, Ne Zaman Bind Shell Kullanılır?
Bind Shell bağlantının gerçekleşebilmesi için kurban makinede bir portun açılıp dinlemeye alınması gerektiğini söylemiştik. Bu yaklaşım birkaç güvenlik sorunuyla birlikte geliyor;
• Bu sorunların ilki, bizim bilgimiz dahilinde olmayan birisi, dinlemeye alınmış porta bağlanıp sunucuda komut çalıştırabilir.
• Bir diğer sorun ise güvenlik duvarları nedeniyle oluşabilir. Güvenlik duvarları birkaç spesifik port (80,443,22 vb.) haricinde diğer portlara izin vermez. Bu nedenle yeni bir port açamayacağımızdan dolayı Blind Shell bağlantısı kuramayız.
Oysa, Reverse Shell Kullanmış olsaydık bu sorunları ortadan kaldırabilirdik
• Reverse Shell, hedef makinede dinleyici ihtiyacını ortadan kaldırır, bu da hedefi diğer kötü niyetli kişilere karşı savunmasız kalmayacağı anlamına gelir.
• Reverse Shell, genellikle iç ağdan dış ağa çıkış bağlantılarında güvenlik duvarı kısıtlamalarını atlayarak izin verilen popüler portları (ör. 80, 443) kullanabilir.