GoCat 1. Bölüm: Go ile Modern Bir netcat Alternatifi

netcat neden eskidi, Go bir ağ aracına ne katıyor ve GoCat'in temel iş akışları: dinleme, bağlanma, TCP ile UDP ve dosya transferi.

3 dk okuma
ibrahimsql
507 kelime

GoCat, Go ile yazılmış çapraz platform bir netcat alternatifi. Bu üç bölümlük bir seri: burada temel iş akışları, 2. bölümde güvenli ve pratik özellikler, 3. bölümde güvenlik testinde nasıl kullanıldığı.

Bu serideki komut örnekleri kavramsaldır. Bayrak adları ve seçenekler sürüme göre değişir — elinizdeki sürüm için her zaman gocat --help ile doğrulayın. Burada listelenen yetenekler projenin belgelenmiş özellik kümesinden geliyor: TCP/UDP, SSL/TLS, proxy desteği, dosya transferi, port tarama, etkileşimli mod, IPv6, hex çıktı ve çoklu dinleyici.

Neden netcat yeterli değil?

Netcat "TCP/IP İsviçre çakısı" unvanını hak etti ama kenarları 1990'ların varsayımlarıyla köreldi:

  • Yerleşik TLS yok. Bir ucu openssl s_client'a bağlar, araçların anlaşmasını umarsınız.
  • Klasik nc'de IPv6 yok. Geleneksel sürüm yalnızca IPv4.
  • Platform sapması. BSD nc, GNU netcat ve Nmap'in ncat'i aynı adı taşıyan üç farklı araç; aynı iş için farklı bayraklar.
  • Okunaksız hex. İkili protokollerde ya bir byte duvarı ya da işe yaramaz bir çıktı alırsınız.

Go sıkıcı kısımları çözüyor: çalışma zamanı bağımlılığı olmayan tek statik ikili, birinci sınıf eşzamanlılık ve TLS, DNS ile iki IP yığınını zaten konuşan standart bir kütüphane.

Kurulum

GoCat bir Go programı. Go araç zinciriniz varsa alışıldık yol:

go install github.com/realibrahimsql/Gocat@latest

Ya da proje sürümlerinden platformunuza uygun hazır ikiliyi indirip PATH'inize koyun. Çalıştığını doğrulayın:

gocat --version
gocat --help

Dinleme ve bağlanma

İki temel işlem her netcat'te olduğu gibi: bir portta dinle ya da bir porta bağlan.

Bash
# TCP 4444 portunda dinle
gocat -l 4444
 
# TCP 4444 üzerinden bir sunucuya bağlan
gocat 10.0.0.5 4444

Bir terminalde dinleyin, diğerinde bağlanın. Birinde yazdığınız diğerinde görünür. Bu ham çift yönlü boru, sonraki her kullanımın temeli — sohbet, banner toplama, dosya transferi, laboratuvarda ters kabuk.

TCP ile UDP

TCP sıralama ve teslim garantisi verir; UDP el sıkışmasız veri birimleri. Taşımayı açıkça seçin:

Bash
# UDP dinleyici
gocat -u -l 5555
 
# UDP istemci
gocat -u 10.0.0.5 5555

Hedef servis UDP konuşuyorsa UDP'ye başvurun (DNS, syslog, bazı oyun ve keşif protokolleri). Geri kalan her şey TCP.

IPv6

GoCat iki IP yığınını da hedeflediği için bir IPv6 adresi özel bayrak gerektirmez — sadece doğru adres biçimini kullanın:

gocat -l 4444                      # bir dinleyici bağlar
gocat 2001:db8::10 4444            # IPv6 üzerinden bağlanır

Dosya taşıma

Bir netcat borusu bir dosya transfer kanalıdır. İki uçta yönlendirme yapın:

Bash
# Alıcı: dinle ve diske yaz
gocat -l 4444 > alinan.tar.gz
 
# Gönderici: dosyayı bağlantıya ver
gocat 10.0.0.5 4444 < arsiv.tar.gz

Sağlama yok, devam ettirilebilir ilerleme yok — bu ham boru. Bütünlük için hash'i ayrı gönderip doğrulayın:

sha256sum arsiv.tar.gz

Bu, güvenilen bir segmentte iki makine arasında dosya taşımak için iyi bir yol. Güvenilmeyen ağlarda scp ya da rsync yerine geçmez; orada şifreleme ve kimlik doğrulama istersiniz. TLS yolunu 2. bölüm anlatıyor.

Bundan sonrası

Çekirdek, TCP, UDP veya IPv6 üzerinden çift yönlü bir boru. 2. bölüm TLS, proxy, etkileşimli kolaylıklar ve aynı anda birden fazla dinleyici ekliyor. 3. bölüm aracı güvenlik işine çeviriyor — port tarama, hex çıktısıyla ikili protokoller ve böyle bir aracın hak ettiği laboratuvar senaryoları.

Proje: github.com/realibrahimsql/Gocat.

---
Bu yazıyı paylaş:
TwitterLinkedInFacebook

Ne düşünüyorsun?

Tepki bırakarak geri bildirim ver

İlgili Yazılar