**我们并不能根据端口的型号来判断所代表的服务类型、应用程序。**我们找到了活着的ip,然后找到了开放的端口,接下来我们就要查看开放的服务。我们查看运行的软件版本,如果使用的是老版本,那么在官方网站就可能展示出此版本的漏洞,根据这些信息我们就可以进行利用。有些操作系统也可能自带一些软件,根据这些软件我们就可以识别出目标主机的操作系统版本。
如何识别出目标系统是什么版本?端口的背后是什么服务?我们有一下几种方法:
1)Banner捕获,比如说我们连接一个应用端口21端口,目标给我们返回一个服务器的banner信息,这样的信息也可能是管理员给我们伪造的。而且目标系统的加固方案通常会修改banner。banner信息的获取可以作为识别目标系统、服务的一种手段,但是我们不能完全相信。
2)SNMP分析
3)防火墙识别。识别防火墙类型,查看过滤级制。
接下来我们详细的介绍一下相应的命令以及工具:
1)Banner能够识别出软件的开发商、版本、服务类型、版本号。我们连接端口之后可以根据不同的响应来分别不同的操作系统。
通过banner信息来识别目标端口号上的服务信息、版本号
root@kali:~# nc -nv 192.168.19.132 22 //连接目标主机的22端口
我们可以看到他给我们你反馈的banner信息:我们看到对方机器的操作系统、版本型号
我们查看一些80端口:get一下信息,得到了目标系统的账号,后期我们可以进行一些密码的猜解。
以上是手动获取banner信息。
接下来我们用python脚本来获取:
python中socket模块用于连接网络服务。
root@kali:~# python
Python 2.7.12+ (default, Aug 4 2016, 20:04:34)
[GCC 6.1.1 20160724] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> banner=socket.socket(socket.AF_INET,socket.SOCK_STREAM) //SOCK_STREAM的意思是建立tcp连接。
>>> banner.connect(("192.168.19.132",21)) //连接目标ip,目标端口号
>>> banner.recv(4096) //接受返回信息,然后指定返回信息的大小
'220 (vsFTPd 2.3.4)\r\n' //版本2.3.4
>>> banner.close() //关闭连接
>exit()
有些应用软件是不允许banner抓取的,而且banner抓取的信息是不准确的。
dmitry
root@kali:~# dmitry -pb 192.168.19.131
nmap扫描:
root@kali:~# nmap -sT 192.168.19.132 -p 22 --script=banner.nse //--script==banner.nse 脚本
root@kali:~# cd /usr/share/nmap/scripts //nmap脚本的存放目录
root@kali:~# nmap 192.168.19.132 -p1-100 -sV //-sV识别端口后面跑的是什么服务。
扫描返回的信息非常详细
有些公司可能会隐藏端口,不如说把http服务改为高位端口而不用80端口。但是我们使用nmap以就能够扫除对应端口的服务,
amap:
root@kali:~# amap -B 192.168.19.132 21 或者(1-100)
root@kali:~# amap 192.168.19.132 1-100 -q //-q使扫描结果更简洁
我们可以看到以上的结果并不太详细,没有给出服务的版本号。
root@kali:~# amap 192.168.19.132 1-100 -qb //我们可以加一个-b参数,使结果显示的更加详细。