安全界的“瑞士军刀”——Netcat工具简析

2024-03-15 04:10

本文主要是介绍安全界的“瑞士军刀”——Netcat工具简析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0,功能介绍,-h

1,端口扫描

2,获取网站banner

3,传输文本信息

4,传输文件和目录

5,加密传输文件

6,远程克隆硬盘  远程电子取证

7,远程控制(正反向shell)

8,新版nc和ncat简析(调整系统命令的默认值)

 

 

零   netcat介绍

netcat简称nc,著有网络安全界的“瑞士军刀”美称,因其体量小(传统版nc安装包才区区23KB),然而功能强大,具有网络测试工作中所包含的多种可组合功能,然而后来的nmap下的ncat继续完善nc的工作,被誉为“21世纪的瑞士军刀”。

nc -h

连接到某处:nc [-options]主机名端口[s] [端口] ...
侦听入站:nc -l -p端口[-options] [主机名] [端口]
选项:
-c shell命令为-e;使用/ bin / sh来执行[危险!!!
-e文件名程序在连接后执行[危险!!]
-b允许广播
-g网关源路由跳跃点,最多8个
-G num源路由指针:4、8、12,...
-h这个杂物
-i秒发送线路,扫描端口的延迟间隔-k在套接字上设置keepalive选项
-l侦听模式,用于入站连接
-n仅数字的IP地址,无DNS
-o文件流量的十六进制转储
-p端口本地端口号
-r随机化本地和远程端口
-q秒在标准输入法上发生EOF之后退出并延迟了几秒
-s addr本地源地址
-T tos set服务类型
-t回答TELNET协商
-u UDP模式
-v verbose [使用两次会更详细]
-w秒超时,用于连接和最终网络读取
-C发送CRLF作为行尾
-z零I / O模式[用于扫描]
端口号可以是单个的或范围内的:lo-hi(含);
端口名称中的连字符必须以反斜杠转义(例如'ftp \ -data')。

其中常用的参数有   n   v   z   l   p   q   c

 

 

 

壹   端口扫描

nc 用来进行端口扫描的命令是 nc -nvz ip 地址 端口号,z 参数翻译过来就是不进行 i/o,用来扫描。意思就是仅仅是去 ping 去探测目标是否开启指定端口,不进行任何的交互。

测试平台 :KaliLinux 2020.01    Ubuntu 18.04.4

    z 参数默认扫描的是 tcp 类型,如果需要扫描 udp,则需要使用一个新参数 u。

我在Ubuntu上开了一个Apache2的网站同时xshell连接,所以在1-100之间就是这两个端口是开放的

 

 

 

贰   获取网站banner

网站的banner就是网站开启某对外服务是在该服务的端口上所添加的 “ 欢迎类信息 ” ,之前是通过Telnet进行扫描,后来渐渐被ssh替代了。ssh和nc一样都是使用明文传输,只要数据包被拦截下来就完蛋。所以之后都逐渐被ncat取代,ncat后面会介绍,其是使用加密传输。

命令格式是 nc -nv ip port;根据返回的信息可以判断网站某端口运行服务的欢迎信息

 

 

 

叁   传输文本信息

nc可以实现在两台机器之间相互传递信息,首先要其中一台机器开启监听一个端口,另一台机器便可以通过访问这个端口,来实现两台机器间的无缝传输信息:

先开启一个监听端口

而后另一台机器便表示连接成功了

在两个机器上面同时敲下的字符会同时显示在两端的屏幕上,非常有意思

 

这种相互传输信息和渗透之间的关系是,电子取证的时候可以用。当机器被攻击后,为了不破坏现场,需要提出大量的信息和文件出来做分析,这时候可以用 nc 的这个机制,例如,需要一个命令的输出信息,首先在一台机器上监听一个端口,随后在被攻击的机器上执行相关的命令,然后以管道给 nc,指定另一台的地址和端口,这样输出结果就会到另一端:

首先一端先开启监听:

然后另一端上将shell命令通过管道符传送给nc命令集:

此时,另一端的控制台上就会出现被控制方的ll命令的结果:

 

我们还可以将控制台上的命令输送至txt文本文件中:

这是先开启监听的一端

 

 

 

肆   传输文件和目录

作为文件传输和目录这些功能,其实和文本信息传输类似,只不过是把文本信息换成了文件和目录。首先用一台机器监听一个端口,如果有人连接并传来信息时,则将信息使用 > 重定向到文件。另一台机器连接目标指定端口然后通过 < 输出要传送的文件即可。

其中需要说明一下的是这两个符号 : <    >

我们这边可以吧端口参数想象成一个文件传输程序的 “ 接口 ”,吧需要发送的文件指向( < )这个接口,接受到的文件重新命名文件格式和名称地址,从这个接口引出来 ( > ) 

同理,两端都可以发送和接收,但是nc的传输都是单双工类型的数据交换

要是需要传送目录的话,只需将目录压缩(tar,zip,rar)即可进行传输

 

 

 

伍   加密传输文件

加密传输文件需要使用 mcrypt 库,linux 系统默认是没有安装的,需要手动安装:

随后和传输文件类似,只需要在传输文件时使用 mcrypt 加密即可:

先设置监听端服务器:

然后配置发送端服务器:

  红色框内为配置信息:

mcrypt --flush -Fbq -a rijndael-256 -m ecb < 痛仰乐队\ -\ Rosemary.mp3 | nc -nv 192.168.1.137 666

再输入完配置信息以后,会有提示输入密码,需要连续输入两次,发送端的密码输入完成以后,接收端才会出现密码输入框:

命令用到的参数有,--flush 立即冲洗输出,-F 输出数据,-b 不保留算法信息,-q 关闭一些非严重的警告,-d 解密

rijndael-256 代表的是加密方式有256,128,和512三种,分别对应的应该是sh系列hash加密算法(我猜的)

传输过程可能较长,需要耐心等待......

 

 

 

陆   远程克隆硬盘

对于远程克隆硬盘,在远程电子取证时可以用,使用方法需要借助 dd 命令,首先通过 nc 监听一个端口,然后通过 dd 指定要克隆的分区,dd 的 of 参数相当于一个复制功能,然后再另一台机器通过 nc 连接此端口,dd 的 if 参数相当于粘贴的命令。格式如下:

nc -lp 6666 | dd of=/dev/sda
dd if=/dev/sda | nc -nv 192.168.228.128 6666 -q 1

 

 

 

柒   远程控制(正反向shell)

他的控制原理很简单,只不过传输的信息是bash信息,windows就是cmd;用法也很简单,只要在末尾加上 -c bash就可以了:

首先在被控制端开启一个监听端口

让控制端去主动链接:

 

然后神奇的事情就发生了:在控制端下,居然就直接获取了被控制端(首先打开监听端口的那一方)的shell?!

相当于打开端口时候shell的权限

软件都装上了.....

总结:正向 shell 是服务器开启一个端口指定 shell 让别人来连。但出于防火墙原因,一般都连不上。这时需要用反向 shell,让目标服务器指定 shell 后来连接自己。

这里会涉及到一个很典型的服务器端漏洞:反弹shell漏洞,等我什么时候研究清楚了一定会写一个总结博客,把整个实现原理田里去洗的阐述一遍

 

 

 

捌   新版nc和ncat简析(调整系统命令的默认值)

其中有一些朋友在一开始就会发现,自己的 nc -h 命令为什么和我的不一样??

这是因为,默认情况下,centos和kali默认安装传统版本的nc,然而Ubuntu一直是默认带有新版的nc,其中新版和老版的nc命令也是相差不少,可以安装自己需要的版本:

   其中第一个是新版,第二个是老板,再咋UN过完新老两个版本之后,需要去系统的命令配置里面修改一下 “ nc ”这个命令调用的到底是哪个版本的nc:

sudo update-alternatives --config nc 

即可选择

 

 

 

玖   nmap旗下插件:ncat

nc 也有不足之处,首先就是明文传输,可能会被嗅探。其次对于反向 shell,如果其他人通过网络扫描发现了这个端口,也就意味着任何人都可以去监听这个端口进行连接,缺乏身份验证功能。想使用ncat首先需要安装nmap;

ncat 则弥补了这些缺点,ncat 不是 linux 系统自带的命令,而是 nmap 中的。ncat 中很多参数和 nc 一样,其中可以通过 --alow 参数来指定允许连接的机器,通过 --ssl 进行数据的加密

 

这篇关于安全界的“瑞士军刀”——Netcat工具简析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/810754

相关文章

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图