Netcat network için isviçre çakısı gibidir.
Netcat temel olarak verilen porttan ilgili sunucuya bağlanır, input olarak verilen bilgiyi bu sunucuya gönderir, sunucunun cevabını ise ekrana (stdout’a) basar.
Örneğin google.com sunucusuna bağlanalim.
[xxx@xxxxx ~]$ nc www.google.com 80 HEAD / HTTP/1.0 [enter] HTTP/1.0 302 Found Cache-Control: private Content-Type: text/html; charset=UTF-8 Location: http://www.google.com.tr/?gfe_rd=cr&ei=Z-uCU8XoI4Pe8geRnoG4Aw Content-Length: 262 Date: Mon, 26 May 2014 07:21:11 GMT Server: GFE/2.0 Alternate-Protocol: 80:quic
Aynı işi aşağıdaki gibi de yapabiliriz.
[xxxx@xxxxxx ~]$ echo -e "HEAD / HTTP/1.0\n" | nc www.google.com 80 HTTP/1.0 302 Found Cache-Control: private Content-Type: text/html; charset=UTF-8 Location: http://www.google.com.tr/?gfe_rd=cr&ei=POuCU5_5I9Da8ge8_ICIDw Content-Length: 262 Date: Mon, 26 May 2014 07:20:28 GMT Server: GFE/2.0 Alternate-Protocol: 80:quic
Netcat’i dinleyici servis olarak çalıştırmak için “-l ” kullanılabilir.
Böylece çift yönlü olarak sunucunun ilgili portuna direct edilmiş bilgiler bağlanan sunucunun ekranına basılılır.
# IP adresi 10.10.10.10 olan bilgisayarda [xxxx@xxxxxx ~]# uptime| nc -l 6666 # şimdi başka bir bilgisayardan, 10.10.10.10 bilgisayarının 6666 portuna bağlanalim: [xxxx@xxxxxx ~]$ nc 10.10.10.10 6666 10:44:26 up 37 min, 4 users, load average: 0.00, 0.02, 0.07
Bunun güzel bir uygulaması olan chat server olarak netcat kullanmak için
# IP adresi 10.10.10.10 olan bilgisayarda $ nc -l -p 12345 veya $ nc -l 12345 # şimdi dinleyen 10.10.10.10 bilgisayarının 12345 portuna bağlanalim: $ nc 10.10.10.10 12345
İki bilgisayar arasında dosya göndermek
# Dinleyen sunucu -> bağlanan sunucu yönüde transfer # IP adresi 192.168.1.10 olan bilgisayarda $ cat file | nc -l -p 6666 # Başka bir bilgisayardan $ nc 192.168.1.10 6666 > file # Bağlanan sunucu -> Dinleyen sunucu yönüde transfer # 192.168.1.10 adresli bilgisayardan $ nc -l -p 6666 -q 10 >output.txt # Başka bir bilgisayardan $ cat input.txt| nc 192.168.1.10 6666 -q 10 ile 10 saniye sonra kapanması isteniyor.
A bilgisayarındaki /data dizinindeki dosyaları B bilgisayarına göndermek
# IP adresi 192.168.1.10 olan bilgisayarda $ tar -cf - /data | nc -l -p 6666 # 192.168.1.10 ipli bilgisayara bağlanalim $ nc 192.168.1.10 6666 | tar -xf -
# Diğer bilgisayardan 10.10.10.2 ipli bilgisayara erişip 12345 portundan veri gönderilip 12346 porundan veri alınabilir.
# 10.10.10.2 ipli bilgisayarda $ nc -l 12345 | nc www.linuxwiki.net 80 | nc -l 12346 # Başka bir bilgisayardan $ nc 10.10.10.2 12345 linux ^C $ nc 10.10.10.2 12346 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>501 Method Not Implemented</title> </head><body> <h1>Method Not Implemented</h1> <p>GET to /default.shtml not supported.<br /> </p> <p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p> <hr> <address>Apache Server at just135.justhost.com Port 80</address> </body></html>
Netcat ile herhangi bir process sunucu görevi görebilir.
Bunu sağlamak için -e kullanmak yeterli
$ nc -l -p 12345 -e /bin/bash $ nc localhost 12345 ls -las total 4288 4 drwxr-xr-x 15 pkrumins users 4096 2009-02-17 07:47 . 4 drwxr-xr-x 4 pkrumins users 4096 2009-01-18 21:22 .. 8 -rw------- 1 pkrumins users 8192 2009-02-16 19:30 .bash_history 4 -rw-r--r-- 1 pkrumins users 220 2009-01-18 21:04 .bash_logout ...
Netcat ile ilgili portu dinleyen program hakkında bilgi edinebiliriz.
[XXXX@XXXX ~]$ nc -vvv localhost 22 Connection to localhost 22 port [tcp/ssh] succeeded! SSH-2.0-OpenSSH_5.3 Protocol mismatch.
Aynı mantıkla netcat port scanner olarak da kullanılabilir.
[XXXX@XXXX ~]$ nc -vvv -z targetip 1-65535
Not: Netcat için bazı paketlerde kısıtlamalar getirilmiştir.
Orjinal kaynaktan yüklemek için
* Microsoft
http://www.vulnwatch.org/netcat/nc111nt.zip
* Linux/Unix/BSD
http://www.vulnwatch.org/netcat/nc110.tgz
* GNU
http://netcat.sourceforge.net/
Bir cevap yazın