安全界的“瑞士军刀”——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实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功