8 Örneklerle Netcat (nc) Komutu


Netcat (ya da kısaca nc), Linux'ta TCP ile ilgili herhangi bir işlemi gerçekleştirmek için kullanılan basit ama güçlü bir ağ komut satırı aracıdır. Strong>UDP veya UNIX-alanı yuvaları.

Netcat bağlantı noktası tarama, bağlantı noktası yeniden yönlendirme ve bağlantı noktası dinleyicisi olarak (gelen bağlantılar için) kullanılabilir; aynı zamanda uzak bağlantıları ve daha birçok şeyi açmak için de kullanılabilir. Ayrıca hedef sunucuya erişim sağlamak için bunu arka kapı olarak kullanabilirsiniz.

Bu yazımızda Netcat kullanım komutlarını örneklerle açıklayacağız.

Linux'ta Netcat Nasıl Kurulur ve Kullanılır

Netcat paketini sisteminize yüklemek için Linux dağıtımınıza yönelik varsayılan paket yöneticisini kullanın.

yum install nc                  [On CentOS/RHEL]
dnf install nc                  [On Fedora 22+ and RHEL 8]
sudo apt-get install Netcat     [On Debian/Ubuntu]

Netcat paketi yüklendikten sonra, aşağıdaki örneklerde netcat komutunun kullanımını öğrenmek için daha fazla ilerleyebilirsiniz.

Bağlantı Noktası Tarama

Netcat, bağlantı noktası taraması için kullanılabilir: hedef makinede hangi bağlantı noktalarının açık olduğunu ve hizmetleri çalıştırdığını bilmek. Tek veya birden fazla veya bir dizi açık bağlantı noktasını tarayabilir.

Burada bir örnek var: -z seçeneği, nc'yi onlara herhangi bir veri göndermeden yalnızca dinleme sunucularını tarayacak şekilde ayarlar. -v seçeneği ayrıntılı modu etkinleştirir ve -w kurulamayan bağlantı için bir zaman aşımı belirtir.

nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Linux Sunucuları Arasında Dosya Aktarımı

Netcat, iki Linux bilgisayar veya sunucu arasında dosya aktarmanıza olanak tanır ve bu sistemlerin her ikisinde de nc yüklü olmalıdır.

Örneğin, bir ISO görüntü dosyasını bir bilgisayardan diğerine kopyalamak ve aktarımın ilerlemesini izlemek için (pv yardımcı programını kullanarak), gönderen/sunucu bilgisayarda (ISO dosyasının bulunduğu yerde) aşağıdaki komutu çalıştırın.

Bu, nc'yi 3000 bağlantı noktasında dinleme modunda (-l flag) çalıştıracaktır.

tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

Ve alıcı/istemci bilgisayarda dosyayı almak için aşağıdaki komutu çalıştırın.

nc 192.168.1.4 3000 | pv | tar -zxf -

Komut Satırı Sohbet Sunucusu Oluşturun

Anında basit bir komut satırı mesajlaşma sunucusu oluşturmak için Netcat'i de kullanabilirsiniz. Önceki kullanım örneğinde olduğu gibi, sohbet odası için kullanılan her iki sistemde de nc kurulu olmalıdır.

Bir sistemde, 5000 bağlantı noktasını dinleyen sohbet sunucusunu oluşturmak için aşağıdaki komutu çalıştırın.

nc -l -vv -p 5000

Diğer sistemde, mesajlaşma sunucusunun çalıştığı bir makinede sohbet oturumu başlatmak için aşağıdaki komutu çalıştırın.

nc 192.168.56.1 5000

Temel Web Sunucusu Oluşturma

Öğrenme amacıyla statik web dosyaları sunmak üzere basit, güvenli olmayan bir web sunucusu oluşturmak için nc komutunun -l seçeneğini kullanın. Bunu göstermek için gösterildiği gibi bir .html dosyası oluşturun.

vim index.html

Aşağıdaki HTML satırlarını dosyaya ekleyin.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Değişiklikleri dosyaya kaydedin ve çıkın.

Daha sonra aşağıdaki komutu çalıştırarak yukarıdaki dosyayı HTTP üzerinden servis edin, bu HTTP sunucusunun sürekli çalışmasını sağlayacaktır.


while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

Daha sonra bir web tarayıcısı açın ve aşağıdaki adresi kullanarak içeriğe erişebilirsiniz.

http://localhost:8080
OR
http://SERVER_IP:8080

Netcat HTTP sunucusunu [Ctrl+ C] tuşlarına basarak durdurabileceğinizi unutmayın.

Linux Sunucu Bağlantısı Sorunlarını Giderme

Netcat'in bir başka yararlı kullanımı da sunucu bağlantı sorunlarını gidermektir. Burada, istemci tarafından verilen komutlara yanıt olarak sunucunun hangi verileri gönderdiğini doğrulamak için Netcat'i kullanabilirsiniz.

Aşağıdaki komut example.com'un ana sayfasını getirir.

printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

Yukarıdaki komutun çıktısı, web sunucusu tarafından gönderilen ve sorun giderme amacıyla kullanılabilecek başlıkları içerir.

Bağlantı Noktasında Çalışan Bir Hizmet Bulun

Bağlantı noktası banner'larını edinmek için Netcat'i de kullanabilirsiniz. Bu durumda size belirli bir bağlantı noktasının arkasında hangi hizmetin çalıştığını söyleyecektir. Örneğin, belirli bir sunucuda 22 bağlantı noktasının arkasında ne tür bir hizmetin çalıştığını öğrenmek için aşağıdaki komutu çalıştırın (192.168.56.110 yerine hedef sunucunun IP adresini yazın). -n bayrağı, DNS veya hizmet aramalarını devre dışı bırakmak anlamına gelir.

nc -v -n 192.168.56.110 80

Akış Yuvaları Oluşturma

Netcat ayrıca UNIX etki alanı akış yuvalarının oluşturulmasını da destekler. Aşağıdaki komut bir UNIX etki alanı akış soketi oluşturacak ve dinleyecektir.

nc -lU /var/tmp/mysocket &
ss -lpn | grep "/var/tmp/"

Arka Kapı Oluşturun

Netcat'i arka kapı olarak da çalıştırabilirsiniz. Ancak bu daha fazla çalışmayı gerektiriyor. Netcat bir hedef sunucuya kuruluysa, bunu bir arka kapı oluşturmak ve uzaktan komut istemi almak için kullanabilirsiniz.

Arka kapı görevi yapmak için Netcat'in hedef sunucuda seçilen bağlantı noktasını (ör. 3001 bağlantı noktası) dinlemesi gerekir ve ardından makinenizden bu bağlantı noktasına aşağıdaki gibi bağlanabilirsiniz.

Bu, -d seçeneğinin stdin'den okumayı devre dışı bıraktığı ve -e'nin hedef sistemde çalıştırılacak komutu belirttiği uzak sunucuda çalıştırılması amaçlanan komuttur.

nc -L -p 3001 -d -e cmd.exe 

Son olarak, Netcat, aralarında HTTP, SSH ve çok daha fazlasının da bulunduğu farklı hizmetler/protokoller için proxy olarak kullanılabilir. Daha fazla bilgi için man sayfasına bakın.

man nc

Bu yazımızda 8 pratik Netcat komut kullanım örneğini anlattık. Başka pratik kullanım durumları biliyorsanız, aşağıdaki geri bildirim formunu kullanarak bizimle paylaşın. Siz de soru sorabilirsiniz.