Python:Reverse Shell Alma

Bildiğiniz üzere günümüzdeki güvenlik duvarları dışarıdan bir bağlantı talebine izin vermiyor ve ciddi bir filtreleme söz konusu.Madem biz doğrudan kurbana ulaşamıyoruz o zaman kurban bize ulaşsın mantığını kullanarak sızma işlemini kolaylaştırabiliriz.Peki bu nasıl olur ? tabiki reverse shell ile.

Reverse Shell Nedir?

Kurban sistemde çalıştırıldığında saldırganın dinlediği bir port’a bağlantı talebi gönderen ve saldırganın bu sayede kurban sistemde komut çalıştırmasına olanak sağlayan scriptlerdir.Bu yazıda python ile nasıl reverse shell alınacağına değineceğim.

Öncelikle python’da socket modülünü kullanacağız. Socket Çift yönlü olarak iletişim kurmamıza olanak sağlar .Lafı uzatmadan koda geçelim.

KOD

Meali

Socket modülümüzü scripte dahil ettik

ip adresimizi tanımladık.Ben iç ağda olduğum için local ip girdim siz eğer dış ağda çalışacaksanız NAT yapılandırmayı unutmayın.

Burada dinleyeceğimiz port numarası,alacağımız paketin boyutu(1024=1mb) ve basit bir tanım girdik.

AF_INET: ipv4 tanımı için kullanılır.

AF_INET6: ipv6 tanımı için kullanılır.

SOCK_STREAM: TCP ile haberleşme için kullanılır.

SOCK_DGRAM: UDP ile haberleşme için kullanılır.

Oluşturduğumuz soketi tekrar tekrar kullanabilmek için bu tanımı yapmamız gerekiyor. Aksi halde soketin tekrar kullanılmasına izin verilmiyor.

server’ı başlatıyoruz ve bir kişinin bağlanmasına izin veriyoruz.

sock.accept() ile bağlantıya izin veriyoruz ama 2 değişken tanımladık çünkü ilk değişken bizim handle’ımız ikincisi ise bağlanan kişinin ip ve port bilgisini verir. Örneğin: (‘192.168.1.102’, 50618) böyle bir çıktıyla karşılaşmamak için basit bir düzenleme işleminden sonra ekrana bilgiyi basıyoruz.

Madem bağlantıyı kurduk o zaman komut gireceğimiz bir input olmalı. Eğer girilen komut exit ise client’e “exit” kelimesini yollar haber veririz sonrada bağlantıya son verip programı sonlandırırız.

Aksi halde girilen komutun encode edilmiş halini gönderir ve cevap gelmesini bekleriz eğer cevap gelirse (sock.recv(1024)) ekrana yazdırırız.

Peki kurbanın çalıştıracağı kod ne olacak ?

KOD

Meali

Farkedeceğiniz gibi subprocess adlı bir modül çağırdık. Bu alt process çalıştırmamıza olanak sağlayan bir modül.

Buralar bildiğiniz şeyler 🙂

ex değişkeninde tanımladığımız ip ve port bilgisini kullanarak bağlantı isteği yolladık.

Server’dan komut gelmesini bekleyip decode ederiz.Eğer komut exit ise soketi ve programı sonlandırır.

Aksi halde subprocess ile komutu çalıştırır ve standart giriş,çıkış,error paramterelerini de ekleyip çıktıyı doğru bir şekilde alıp server’a gönderir.

Örnek

Script’i çalıştırdığımızda 54321.port’u dinlediğimizi görüyoruz.

Client script’i çalıştırdığında ise bize kapı aralıyor ve bağlandığı bilgisini görüyoruz.

dir komutu ile karışık da olsa klasör ve dosyaları görüyoruz.

ipconfig komutu ile ip bilgisini görüyoruz.

powershell komutları da girebiliriz örneğin “powershell start-process notepad” komutu ile hedefte not defteri açtık.

net user komutu ile hedefteki kullanıcıları listeledik

Kısacası istediğimiz komut’u çalıştırabiliriz.Hayal gücünüze kalmış.Bu konu ile ilgili daha detaylı bir makale gelecek.

Python:Reverse Shell Alma” üzerine 1 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Reklama Tıkla Destek Ol!