安全界的“瑞士军刀”——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

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

redis-cli命令行工具的使用小结

《redis-cli命令行工具的使用小结》redis-cli是Redis的命令行客户端,支持多种参数用于连接、操作和管理Redis数据库,本文给大家介绍redis-cli命令行工具的使用小结,感兴趣的... 目录基本连接参数基本连接方式连接远程服务器带密码连接操作与格式参数-r参数重复执行命令-i参数指定命

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

详解Python中通用工具类与异常处理

《详解Python中通用工具类与异常处理》在Python开发中,编写可重用的工具类和通用的异常处理机制是提高代码质量和开发效率的关键,本文将介绍如何将特定的异常类改写为更通用的ValidationEx... 目录1. 通用异常类:ValidationException2. 通用工具类:Utils3. 示例文

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只