Netcat ağ aracı nasıl kullanılır

İçindekiler

Bu derste bir hakkında konuşacağız çok güçlü Netcat ağ aracı, genellikle nc olarak kısaltılır. Bu araç komut satırı üzerinden kullanılır ve sözdizimi çok basittir. Soketler (TCP veya UDP) üzerinden veri yazmamıza ve almamıza izin verecek. Birçok özelliği vardır ve bu nedenle onu birçok şekilde kullanabiliriz. Ağ üzerinde hata ayıklamamıza, test etmemize ve araştırmamıza izin vereceğinden, işleyişini bilmek önemlidir.

ağ kedisi 2 modda çalışabilir:

MüşteriBu modda dinleyiciyle (belirli bir adres ve IP'de dinleyen ve bunu bilmemiz gerekecek) bağlantı kurmaktan sorumlu olacaktır.

Sunucu veya dinleyiciBelirli bir bağlantı noktasındaki istemcilerden gelen bağlantıları bekleyin.

Gidiyoruz Netcat veya nc'nin nasıl çalıştığını pratik örneklerle öğrenin, öğrenmenin en iyi yolu budur. Bunun için Ubuntu 16.04 işletim sistemini kullanacağım.

Göreceğimiz ilk şey netcat sözdizimi:

 nc [seçenekler] [hedef] [bağlantı noktası]
ağ kedisi birçok seçeneğiniz var, bazılarını görelim:

Bazı netcar seçenekleri

  • -l: netcat'e dinlemesini söyler.
  • -P: Çıkış limanını belirtmek için.
  • -s: Kaynak adresini belirtmek için.
  • -k: Dinleyiciye "sonsuz" bağlantılara izin vermek için (-l ile kullanılır).
  • -veya: Netcat, bağlantı noktasını TCP (varsayılan olarak) yerine UDP olarak açar.
  • -v: Bu seçenek ile bize bağlantı bilgilerini gösterecektir.
  • -ben: Gönderme ve alma gecikmesini belirtmek için. (Saniyeler içinde).
  • -4: Netcat'in yalnızca IPv4 kullanmasına izin verir.
  • -6: Bir öncekine benzer ancak IPv6 kullanmaya zorlar.

Aşağıdaki komutu uygulayarak görebileceğimiz daha fazla seçenek var:

 nc -h
Aşağıda resimde görebilirsiniz:

Örneklerle başlayacağız, önce en basitleri gidecek, onları karmaşıklaştıracak, ama birazcık, kullanımının çok kolay olduğunu göreceksiniz.

örnek 1
Makinemi 87 numaralı bağlantı noktasını dinlemeye koy:

 sudo nc -l -p 87
NotAynı kaldırma işleminde işe yarar -P.

Şimdi başka bir terminalden bağlantı kuracağız, aynı makinede çalıştırdığım için adres olarak localhost kullanıyorum:

 nc yerel ana bilgisayar 87
Az önce açtığımız istemciden bir şey yazarsak, onu dinleyen terminalde de görürüz ve böylece bağlantının doğru çalıştığını doğrularız. Ama ilk terminal olan dinleyiciye yazarsak, istemciye de ulaşır. Ardından, dinleyicinin ve müşterinin başka bir görüntüsünü bırakıyorum:

Bu örnekte istediğimiz gibi iletişim kurduklarını görüyoruz, bir başkasına geçelim.

Örnek 2
Sunucunun veya dinleyicinin istemci tarafından gönderilen verileri bir dosyaya kaydetmesini sağlayabiliriz, bunun için yürütülecek komut ilk örnekte görülenden çok farklı değildir:

 sudo nc -l 87> testi
Nottest gelen bilgileri kaydedeceğiniz dosyanın adıdır.

İstemci tarafında komut öncekiyle aynı olacaktır:

 nc yerel ana bilgisayar 87
Aşağıdaki görüntü, istemcide yürütülenleri gösterir (dinleyici bağlanmadan önce dinliyor, aksi takdirde hiçbir etkisi olmaz):

Ve sunucu tarafında, görünüşe göre hiçbir şey alınmadığını görebiliriz, ancak kesin olan tek şey, ekranda gösterilmediği ve test dosyasına kaydedildiğidir:

Başka bir örnekle devam edelim.

Örnek 3
Açık olup olmadıklarını anlamak için bir dizi bağlantı noktası olup olmadığını kontrol edeceğiz, bu örnekte aralık 80-90 olacaktır. İlk örnekte yaptığımız gibi port 80'de bir sunucu açıyoruz (böylece açıkken ve açıkken nasıl çalıştığını göreceğiz):

 sudo nc -l 87
Ve istemcide yürüteceğiz:
 nc -z -v yerel ana bilgisayar 80-90
Parametre -z tarama için kullanılır ve -v Daha önce bilgi göstermek için gördüğümüz gibi (bunu koymazsak, hangi portun açık hangisinin açık olduğunu göstermeyecektir), sonra istemcinin görüntüsü:

bir görmek için gidiyoruz UDP'deki örnek.

Örnek 4
Bu örnek de basit, 2016 portunda UDP'yi dinleyeceğiz ve onu bir IPv4 adresi olmaya zorlayacağız:

 sudo nc -l -u -4 2016
Ve şimdi istemcinin bağlanmasını sağlıyoruz:
 nc -u -4 2016
Yakalama örnek 1'dekiyle aynı olacağından, elbette komutun bir kısmını değiştirerek bir görüntü sağlamıyorum. Python kodunu kullandığımız bir örneğe geçelim.

Örnek 5
Python'a mümkün olduğunca basit bir kod koyacağız, böylece bir bağlantıyı dinler, bir veri alır ve biter.

 içe aktar soket s = socket.socket () s.bind ("192.168.56.1", 1987)) s.listen (1) bağlantı, adres = s.kabul () veri = bağlantı.recv (1024) .decode (" utf-8 ") yazdır (veri) 
Bu kodu Windows'ta çalıştıracağım ve ardından Linux'tan ona netcat üzerinden bağlanacağım, aşağıdaki resim Linux'ta istemci tarafını gösteriyor:

Ve Windows'ta nasıl görüneceği:

Kodu bir şeyi değiştirirsek, onun bir komut yürütmesini ve içeriğini bize göndermesini sağlayabiliriz, ancak birçok şeyi yapmamıza izin verecek bir kabuk da döndürebiliriz, bu yüzden bir sonraki örneğe geçelim.

Örnek 6
Bu örnekte bir çalıştıracağım piton kodu Aynı Linux makinesinde ve ben netcat ile bağlanacağım, bir Shell'in (/ bin / bash) bizi döndürüp döndürmediğini kontrol edeceğiz. Aşağıda sadece örnek olması için Python kodunu olabildiğince basit ve kısa bırakıyorum.

 alma soketi, alt işlem s = socket.socket (socket.AF_INET) s.setsockopt (socket.IPPROTO_IP, socket.SO_REUSEADDR, 1) s.bind (("", 1987)) s.listen (1) conn, addr = s .accept () p = subprocess.Popen (["/ bin / bash"], stdin = bağlantı, stdout = bağlantı, stder = bağlantı) 
Python kodu yürütülür ve aşağıdaki görülür (resim, netcat'ten bağlanırken nasıl göründüğünü gösterir):

Çalıştırdığımızda dinlediğini görüyoruz, ancak bir istemci bağlandığında bağlantı kapanıyor ve bizim için bir Shell'imiz var.

Ayrıca makinemize bağlanan, belirli bir bağlantı noktasında dinlemesi için koyacağımız bir kod da yapabiliriz, genel olarak birçok olasılık var, şimdi araştırmanız ve netcat ile "oynamanız" gerekiyor, gördüğünüz gibi yardımcı olabilir birçok an bizi.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave