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.
Bu “aptal” kabukların SIGINT’i doğru şekilde işlememesinin yanı sıra başka dezavantajları da vardır:
- gibi bazı komutlar
su
Vessh
ç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:
|
|
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:
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:
Ve işte her ihtimale karşı bir Perl oneliner netcat
yüklü değil:
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:
|
|
Bu koşmana izin verecek su
örneğin (size daha hoş bir bilgi vermenin yanı sıra)
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):
|
|
Kurban Hakkında (lansman):
|
|
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:
|
|
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ı.
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
Kabuk arka plandayken, şimdi mevcut terminali ve STTY bilgisini inceleyin, böylece bağlı kabuğun onunla eşleşmesini sağlayabiliriz:
İ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
.
Not: Yazmadım nc
tekrar komut verin (yukarıda görünebileceği gibi). aslında girdim fg
ama 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)
|
|
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:
Olasılıklar artık sonsuzdur. Netcat kabuğu üzerinden Tmux? Neden? 😀
Hile sayfası komutları:
Python’u psuedo terminali için kullanma
|
|
Socat’ı kullanma
|
|
Stty seçeneklerini kullanma
|
|
Başka harika teknikler var mı? Yorumlarda bana bildirin veya Twitter’da bana ulaşın.
Eğlence! -ropnop