27 Ocak 2018 Cumartesi

Netcat Kullanımı

Portlarda networkler arasında TCP ve UDP protokollerini kullanarak gerçekleşen veri okuma yazma işlemlerini taramak (port taramak) kullanılır.

Linux sistemde kurulu ise Netcat’in komut halini “nc” olarak kullanıyoruz. Bu komutun temel amacı networkler arasındaki veri okuma / yazma işlemlerine dair işlemlerdir.
Genel Kullanımı;
nc [parametre] uzakPc portNo
uzakPc : Hedefin IP adresidir.
portNo: Hedefin port numarası ya da numaralarıdır. Yani birden fazla port dinlenebilir.
parametre:
-l: (listen mode) dinleme modu
-L: (Listen harder) Netcat’in sadece windows için hazırlanan sürümlerinde geçerlidir. Client tarafı connection’ı sonlandırsa bile dinleme modunu tekrar başlatır.
-u: (UDP mode) ön tanımlı olarak TCP gelir. Bunun yerine UDP kullanmak için bu opsiyonu kullanabiliriz.
-p:(Local port) Listen modundayken dinlenen portun, client modundayken tüm paketlerin gönderileceği kaynak portun belirtildiği opsiyondur.
-e: Eğer connection olursa sonrasında program çalıştığında STDIN ve STDOUT ile iletişim kurmak için kullanılan opsiyondur.
-n: DNS lookup’larda diğer tarafın makinelerinin isimlerinde değişikliklik/oynama olamaması için kullanılacak opsiyon.
-z: Zero-I/O modudur. Herhangibir datanın yollanmamasıdır. Sadece payload dışında bir paketin yollanması için kullanılan opsiyondur.
-wN: Connection’ın timeout olması yani süresinin dolması halinde STDIN kapandıktan sonra N saniye daha beklenir. Bir Netcat client ya da listener’ı bu opsiyon ile yeni bir connection açmak için N saniye bekleyecektir. Eğer bu süre içinde yeni bir connection oluşmazsa Netcat çalışmayı durduracaktır.
-v: (Be verbose) Connection sırasında Standard Error’da olan mesajların ayrıntılı biçimde yazılmasını söyleyen opsiyondur.
-vv: (Be very verbose) Standard Errror’da -v opsiyonundan daha daha fazla detaylı yazılmasının söylendiği opsiyonel durumdur.
Kulanımları;
nc -h ;Yardım Görüntülenir.
nc -v google.com 80 ;En temel kullanımı telnet gibi bir sunucu portuna bağlantı kurmaktır.
nc -vz 127.0.0.1 22 ; Bir portun açık olup olmadığını görebilirsiniz.
echo "Hello world" | nc -lp 9998 ; Sunucu tarafında oluşturulan bir mesajı istemci tarafında görüntülemek isterseniz aşağıdaki komut kullanılabilir. Sunucu tarafında oluşturulan mesaj 9998 portunda dinlenmektedir.
nc 192.168.1.10 9998 ; İstemci tarafında nc komutu ile bu mesaj görüntülenebilir.
nc -v -n 192.168.1.20 -z 1-1024 ; bir port aralığındaki port numaralarının erişebilirliğini test etmek için kullanımı.
Dosya transferi;
Sunucu tarafında oluşturulan bağlantı ile dosya.txt isimli dosyaya yönlendirilerek, istemci tarafında aktarılacak olan dosya içeriğinin alınması sağlanabilir. Sunucu tarafında oluşturmuş olduğumuz bağlantı netstat komutu kullanılarak doğrulanabilir.
1.
Client’dan Listener’a dosya göndermek için; nc -l -p [Local Port] > [Gönderilen Dosya]
[Port] üzerindeki [Hedef IP Adresi]ne [InFile] ı göndermek için; nc -w3 [Hedef IP Adresi] [Port] < [InFile]
Listener haldeyken Client tarafından gelen dosyaları çekmek için:
( [InFile] ın gönderilmesine hazırlanılan [Local Port] dinleniyor.); nc
-l -p [Local Port] < [InFile]
nc -nlp 9998 > dosya.txt ; Sunucu nc ile üzerinde 9998 portu ile bağlantı oluşturur ve dosya.txt adlı dosyaya yönlendirme yapar.
2.
[Port] üzerindeki [Hedef IP Adresi] ile bağlantı kurulup verinin [OutFile] ile çekilmesi: nc -w3 [Hedef IP Adresi] [Port] > [OutFile]
cat /etc/passwd | nc 192.168.100.227 9998 ; İstemci tarafında aşağıdaki komut kullanılarak /etc/passwd dosyanın içeriğini sunucu tarafında oluşturulan dosya.txt adlı dosyanın içerisine aktarılmıştır.
3.
cat dosya.txt ; Sunucu tarafında CTRL+C kombinasyonuna basarak oluşturduğumuz bağlantıyı sonlandırdıktan sonra yönlendirme yaptığımız dosyayı cat, nano, ee, vi, vim, vb. araçlar ile görüntülediğimiz zaman istemci tarafında yollamış olduğumuz /etc/passwd dosyasının içeriği görmüş olacağız.

Shell açma

nc -e /bin/bash -lp 9998 ;  Sunucu üzerinde nc komutu ile istemci tarafından komut çalıştırılması sağlanabilir. Aşağıdaki birinci komut ile sunucu tarafında nc komutu ile 9998 portunda /bin/bash kabuğu çalıştırılmıştır.
nc 192.168.1.20 9998 ; İstemci tarafında aşağıdaki gibi nc komutu kullanarak sunucuya bağlantı sonrası sunucu sistem üzerinde çalıştırılan ifconfig, ls vb. komutların çıktısı aşağıdaki gibi gözükmektedir.
– Temel Netcat Client:
nc [Hedef IP adresi] [Port]
Burada client modda hedef IP üzerindeki istenilen portta bir connection başlatmış oluruz.
– Temel Netcat Listener
nc -l -p [Local Port]
Burada listener modunda istenilen yerel portta bir Netcat Listener’ı oluşturmuş oluruz.
  • TCP Port Tarama:
– [Hedef IP Adresi] ndeki portlardaki iletişimi taramak için:
( [end_port] dan [start_port] a kadar tek tek bağlantı kurup tarar. )
UDP Portları Dinlemeye Almak
UDP portları dinlemeye almak tcp’den farklı olacaktır.UDP portlar için araya -u parametresi konulmalıdır.
nc -l -v -u -p <portnumarası> şeklinde udp portu dinlemeye alabilirsiniz.
Porta Bağlantı Sağlama
nc -v <hedefadres> <portnumarası> ile porta bağlantı sağlanabilir.(Telnet).Gönderilen veriler sunucu ve istemcide belirecektir.
nc -v - u <hedefadres> <portnumarası> --> UDP Porta bağlantı sağlama
Netcat ile Port Tarama
nc -v -z <host> <port aralığı> şeklinde port taraması yapılabilir. -z parametresini kullandığımızdan ekrana sadece açık portları listeler.
Netcat ile dosya transferi
nc -lvp 8888 > dosyadı -->portu dinlemeye aldık.Dosya dahil edildi.
nc -w 1 <host> 8888 < dosyadı -->Porta bağlanan dosyayı çekti.
Uzak bağlantı ve Komut Çalıştırma
Bazı durumlarda bağlantı sağlayınca shell’e yani kabuğa erişim sağlayıp komut çalıştırmak isteyebilirsiniz.Bu durumlarda -e parametresimden faydalanılır.
Linux İçin;
nc -l -v -p 8888 -e /bin/bash --> 8888 no’lu portu dinlemeye aldık.Porta erişim sağladığımızda kabuk üzerinde komut çalıştırabilicez.
nc -v localhost 8888 -->Portumuza bağlantı sağladık artık komutlarımızı çalıştırabiliriz.(id,ls vb)
Windows İçin;
nc -lvp 8888 -e cmd.exe --> Aynı şekilde 8888 nolu portu dinlemeye aldık bu porta bağlantı sağlanırsa cmd ekranına düşcez.
nc -v localhost 8888 --> Porta bu şekilde bağlanarak komut çalıştırabiliriz.
Netcat kullanımı ile ilgili örnekler – Linux
  • Port Kontrol;
$ nc -vn 192.168.233.208 5000
nc: connect to 192.168.233.208 5000 (tcp) failed: Connection refused
$ nc -v 192.168.233.208 22
Connection to 192.168.233.208 22 port [tcp/ssh] succeeded!
SSH-2.0-OpenSSH_6.0p1 Debian-4
  • Uzak Bilgisayara Mesaj Gönderme; 1 sn zaman aşımlı UDP paketi gönderir.
$ echo -n “Hello” | nc -u -w 1 192.168.1.8 5000
  • Uzak Host Port aralıklarını Dinleme;
$ nc -vnz -w 1 192.168.233.208 1-1000 2000-3000
  • HostA dan HostB ye dosya Gönderme;
hostB(alma):
$ nc -lp 5000 > dosya.jpg
hostA (gönderme):
$ nc hostB.com 5000 < dosya.jpg
  • HostA dan HostB ye Dizin(klasör) Gönderme;
hostB (alma):
$ nc -l 5000 | tar xvf –
hostA (gönderme):
$ tar cvf – /path/to/dir | nc hostB.com 5000
  • Uzak makinede UDP Portlarını tarama;
$ nc -vnzu 192.168.1.8 1-65535
  • UDP portundan gelen  verileri metin olarak dinleme;.
$ nc -u localhost 5000
  • Gelen verileri sürekli dinleme için (döngü ile)(üstteki mesaj aldığında kesilir)
$ while true; do nc -u localhost 5000; done
  • Sabit disk imajını uzak sunucuya yükleme;
Sunucuda:
$ nc -lp 5000 | sudo dd of=/backup/sdb.img.gz
imaj alınacak makinede:
$ dd if=/dev/sdb | gzip -c | nc remote_server.com 5000
  • Disk imajını sabit diske geri yükleme;
Yerel Makinede:
$ nc -lp 5000 | gunzip -c | sudo dd of=/dev/sdb
uzak sunucudaki yedek imajı:
$ cat /backup/sdb.img.gz | nc my_local_host.com 5000


  • İki makine arasında bağlantı.
1 makine (192.168.233.203):
$ nc -lp 5000
Diğer makine de dinleme:
$ nc 192.168.233.203 5000

  • Uzak makinede komut satırını yerel bilgisayardan çalıştırma
uzak makine (192.168.233.208):
$ nc -lp 5000 -e /bin/bash
yerel makine
$ nc 192.168.233.208 5000
 
  • Bir web sitesi için web proxy oluşturma.
$ mkfifo proxypipe $ while true; do nc -l 5000 0<proxypipe | nc www.google.com 80 1> proxypipe; done
http://127.0.0.1:5000 adresine giderek Google'a erişebilirsiniz.
  • Bir web sitesi için SSL Proxy oluşturma
$ mkfifo proxypipe $ mkfifo proxypipe2 $ nc -l 5000 -k > proxypipe < proxypipe2 & $ while true do; openssl s_client -connect www.google.com:443 -quiet < proxypipe > proxypipe2; done
 
  • Video sunucudan video izleme
video sunucu (192.168.233.208):
$ cat video.avi | nc -l 5000
istemci makine:
$ nc 192.168.233.208 5000 | mplayer -vo x11 -cache 3000 –
  • IPv6 adreslerini dinleme. IPv6  test.
$ nc -6 -l 5000
$ sudo netstat -nap | grep 5000

http://www.kadinyazilimci.com/netcat-ii/
http://ucribrahim.blogspot.com.tr/2015/03/linux-sistemlerde-netcat-nc-aracnn.html
http://www.turkhackteam.org/bilgisayar-guvenligi/1047593-netcat-kullanimi.html
http://www.ozkantan.com/netcat-kullanimi-ile-ilgili-ornekler-linux/

Hiç yorum yok :

Yorum Gönder