Netcat详解

news/2024/7/16 6:13:36 标签: netcat, 渗透测试, kali, ncat, nc

0x00:介绍

netcat 简称 nc,安全界叫它瑞士军刀。ncat>ncat 也会顺便介绍,弥补了 nc 的不足,被叫做 21 世纪的瑞士军刀。nc 的基本功能如下:

  • telnet / 获取系统 banner 信息
  • 传输文本信息
  • 传输文件和目录
  • 加密传输文件
  • 端口扫描
  • 远程控制 / 正方向 shell
  • 流媒体服务器
  • 远程克隆硬盘

0x01:端口扫描

首先应该知道的一个参数是 - h,这是最基本的一个命令,nc 长跟的参数有两个,一个是 n 一个是 v,帮助文档解释如下:

请输入图片描述

v 参数就是列出执行过程的详细信息,n 参数翻译过来就是只接收 ip 地址,没有 dns。之所以使用 n 参数,是因为使用命令的过程中只去传入 ip,减少了 nc 把域名解析为 ip 的过程,这样可以节省时间提高效率。

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

请输入图片描述

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

0x02:Telnet/Banner

telnet 使用率大不如以前了,基本被 ssh 取代了,最大的弊端在于其明文传输。nc 也是明文方式传输的数据,所以后续需要使用 nmap 下的 ncat>ncat 工具来结合一下,弥补其不足。nc 在这里可以获取服务器的 banner 信息。例如 163 的 smtp,命令格式是 nc -nv ip port,如下图:

请输入图片描述

根据返回的信息可以知道,其使用的是 coremail 邮件系统。

0x03:传输文本信息

nc 可以在两台机器之间相互传递信息,首先需要有一台机器进行监听一个端口,另一台以连接的方式去连接其指定的端口,这样两台机器之间建立了通信后,相互之间可以传输信息。l 参数是监听模式的意思,p 是指定一个端口(为了区分,一个机器发送字母,一个机器发送数字),如下图:

请输入图片描述

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

请输入图片描述

如果输出内容过多,则可以将内容定向输出到文件中,如下图:

请输入图片描述

0x04:传输文件和目录

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

请输入图片描述

上面这个是正向传输的,同样的也有一个反向传输,这个需要理解一下,因为和经常用到的正反向 shell 原理一样。原先是我打开指定端口,等待别人连我,给我传文件。现在是我打开指定端口把文件准备好,别人连我,我传给他文件。

请输入图片描述

这里需要理解两个重定向符号 <和>,> 是将文件进行输出。<是将文件进行输入。

对于传输目录其实和传输文本信息传输文件一样,当作文件处理即可,传输时将目录进行压缩进行传输,随后另一台机器接收后进行解压,这样就完成了目录的传输。例如使用 tar 命令,cvf 进行压缩,xvf 进行解压,c 是压缩的意思,v 是显示详细过程,f 是文件名,x 是解压。

请输入图片描述

0x05:加密传输文件

加密传输文件需要使用 mcrypt 库,linux 系统默认是没有安装的,需要手动安装。随后和传输文件类似,只需要在传输文件时使用 mcrypt 加密即可。

命令用到的参数有,--flush 立即冲洗输出,-F 输出数据,-b 不保留算法信息,-q 关闭一些非严重的警告,-d 解密,首先在接收端监听一个端口,等待另一台进行连接传送文件,随后在要传送的机器上把要传送的文件进行加密使用 nc 连接指定的地址和 ip,如下图:

请输入图片描述

第一次需要输入加密的密码,然后回车再次确认密码,接收端输入相应的密码就会收到传输的文件,如下图:

请输入图片描述

请输入图片描述

0x06:流媒体服务

对于直播的功能就类似于流媒体,就是对方把视频通过流的方式进行传输,传输多少,对方就会实时的播放多少。

首先,需要在要传送文件的机器上把文件通过管道给 nc,然后监听一个端口。在接收端,连接此端口然后通过管道给 mplayer 进行实时播放,mplayer 默认 linux 不安装,需要手动安装。其中 vo 参数是选择驱动程序,cache 是每秒要接收的播放帧。

请输入图片描述

0x07:远程克隆硬盘

对于远程克隆硬盘,在远程电子取证时可以用,使用方法需要借助 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

0x08:远程控制 / 正反向 shell

原理和传输 xin'xi 传输文件一样,只不过传输得是 bash,windows 系统是 cmd,正向是目标机器主动指定 bash,然后通过别人连接自己的端口,别人连接自己后,执行的命令就是自己的机器,如下图(左边是目标服务器,右边是客户端):

请输入图片描述

通常情况下,一般的服务器都会有防火墙,很少会允许其他外在的机器来连接自己的某一个端口,只有某些指定端口可能会允许访问,例如 web 服务的 80 端口。这时正向的 shell 就不不起作用了,而防火墙一般都会禁止外在机器来连接自己机器的其他端口,但自己的机器访问外面的端口一般不会做限制,这时候就可以使用反向 shell,也就是攻击者指定一个端口和 bash,让目标服务器来连接自己,这样就可以写一个脚本放到目标服务器的开机启动中,只要目标服务器运行就会连接自己。当然,有些管理员安全意思比较好的话,也会限制自己的服务器访问外在的一些端口,这种情况很少见,但也有,这时可以指定常用的端口,例如服务器要使用 dns 服务的 53 端口,这时候自己就可以监听 53 让目标服务器来连接自己。

下图(左边是目标服务器,右边是客户端)。

请输入图片描述

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

0x09:ncat>ncat

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

ncat>ncat 则弥补了这些缺点,ncat>ncat 不是 linux 系统自带的命令,而是 nmap 中的。ncat>ncat 中很多参数和 nc 一样,其中可以通过 --alow 参数来指定允许连接的机器,通过 --ssl 进行数据的加密,如下图(左边是服务器,右边是客户端):

请输入图片描述

通过 allow 参数即可指定允许连接的机器,这时如果其他人即使扫描到了这个端口也无法进行连接,如下图:

请输入图片描述

客户端 ip 是 128,当服务器只允许 111 时,再连接就会提示失败。

0x10:总结

nc 小巧功能强大,所以被成为瑞士军刀,不足之处是明文传输,也没有相关的身份验证,而 ncat>ncat 在 nc 基础上弥补了其不足,nc 可以做的 ncat>ncat 也可以做到,所以 ncat>ncat 被成为 21 世纪的瑞士军刀。


                                                                      公众号推荐:aFa攻防实验室

                         分享关于信息搜集、Web安全、内网安全、代码审计、红蓝对抗、Java、Python等方面的东西。

                                                                         


http://www.niftyadmin.cn/n/1148099.html

相关文章

git clone 提示 warning

warning: remote HEAD refers to nonexistent ref, unable to checkout. git clone 时提示wraning, 并且Contacts模块的代码并没有下载到工作区。 原因&#xff1a; git目录下.git/refs/heads不存在HEAD指向的文件&#xff0c;这个时候可以用git show-ref命令查看获得如下打印&…

Google证实去年7月向康盛创想注资一百万美元

北京时间3月26日消息&#xff0c;据国外媒体报道&#xff1a;在周二提交给美国证券交易委员会的一份文件中&#xff0c;美国搜索引擎Google证实&#xff0c;已经向中国社交网站康盛创想投资了一百万美元。康盛创想旗下网站包括Discuz&#xff01;、SupeSite和ECShop。 Google…

信息搜集-nslookup

0x00&#xff1a;前言 被动信息搜集中&#xff0c;可以使用nslookup工具来搜集目标的ip以及各种解析记录&#xff0c;这个命令在win和linux中都是自带的&#xff0c;可以直接使用。 0x01&#xff1a;常见的记录 a记录&#xff1a;将域名解析为ipv4地址。 cname记录&#xff…

MySQL学习(八)

连接查询 1 集合的特点&#xff1a;无序性&#xff0c;唯一性 集合的运算&#xff1a;求并集&#xff0c;求交集&#xff0c;求笛卡尔积 表和集合的关系 一张表就是一个集合&#xff0c;每一行就是一个元素 疑问&#xff1a;集合不能重复&#xff0c;但我有可能两行数据完全一样…

什么推动了食品价格上涨(图)

南方周末发表了一篇文章《食品涨价主因来自劳动力与地租等上涨推动》&#xff0c;其中以一个完整的食品加工供应链中4个主要的参与者进行分析&#xff0c;包括食品加工销售商新亚大包&#xff0c;面条以及面食品提供商瑞怡食品&#xff0c;面粉加工商维维六朝松&#xff0c;以及…

信息搜集 - DNS

0x00&#xff1a;前言 在搜集域名相关的信息时&#xff0c;除了使用上一篇记录的 nslookup 命令外&#xff0c;dig 也是经常用的一个工具比 nslookup 更强大。 0x01&#xff1a;dig dig 也是用来查询域名的相关信息的&#xff0c;和 nslookup 相似&#xff0c;但更强大&…

【SRH】------mongoose,增、删、改、查

mongoose中文文档https://cn.mongoosedoc.top/docs/guide.html mongodb与mongoose的区别 mongodb非关系型数据库&#xff0c;可自定义字段类型一个mongodb中可以建立多个数据库mongodb的默认数据库为db&#xff0c;该数据库存储在data目录中mongodb的单个实例可以容纳多个独立的…

中国赛丁俊晖关键局斯诺克显威力 淘汰劲敌进16强

新浪体育讯 北京时间3月25日晚上七点半&#xff0c;世界斯诺克中国公开赛继续在北京大学生体育馆进行&#xff0c;在争夺16强的比赛中&#xff0c;丁俊晖5比3击败英国选手乔-佩里&#xff0c;晋级16强。 本赛季丁俊晖的表现中规中矩&#xff0c;目前临时排名位居第8位。佩里本…