什么是端口扫描
端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关),但是端口扫描不但可以为黑客所利用,同时端口扫描还是网络安全工作者的必备的利器,通过对端口的扫描,了解网站中出现的漏洞以及端口的开放情况,对网站安全方面有着不可或缺的贡献,是网络安全中的基础认知。
目前在市面上主要的端口扫描工具是X_Scan、SuperScan、nmap,其中在这里主推的是nmap,因为nmap具有以下的这一些优点:
-
多种多样的参数,丰富的脚本库,满足用户的个人定制需求,其中脚本库还提供了很多强大的功能任你选择
-
强大的可移植性,基本上能在所有的主流系统上运行,而且代码是开源的
-
详细的文档说明,和强大的社区团队进行支持,方便新人上手
Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具,但是nmap也是有一些缺点的,比如说上手较难,但是难上手是相对的,与其他达到这种功能性的软件产品相比,还是比较容易上手的,但是这也不妨碍nmap成为世界千万安全专家列为必备的工具之一,在其中的一些影视作品中《黑客帝国2》、《特警判官》中都有亮相。
Nmap功能介绍
Centos Install:
# yum -y install nmap
Ubuntu Install:
# apt-get install nmap -y
Nmap包含四项基本功能:
-
主机发现(Host Discovery)
-
端口扫描(Port Scanning)
-
版本侦测(Version Detection)
-
操作系统侦测(Operating System Detection)
下面我们介绍一下主机发现,主机发现顾名思义就是发现所要扫描的主机是否是正在运行的状态,接下来就来一个简单例子:获取http://baidu.com 的主机是否开启, 命令:nmap -F -sT -v baidu.com
-
-F:扫描100个最有可能开放的端口
-
-v 获取扫描的信息
-
-sT:采用的是TCP扫描 不写也是可以的,默认采用的就是TCP扫描
运行结果如下:
如上图所示1,我们可以发现对URL进行解析花了0.01秒,如果是国外网站这个地方花费的时间较多,可以进行优化的,优化的方法会稍后介绍
图中所示2,是总共的运行时间
图中的3是说明有98个端口被屏蔽了,也就是说明了网站的防火墙是开启的,因为没有开启防火墙是不会对端口进行屏蔽的。
端口的状态,一般有如下几种:
图中的4是本次返回的关键信息,其中我们要主要关注的是端口号,端口状态,端口上的服务。
那你可能就会要问为什么要关注这些端口呢?那这个问题就要转到探讨为什么要进行扫描?
扫描对于黑客和安全人员来说,大致流程都是如下所示:
从这个图中我们不难发现,我们主要关注的区域就是这些内容,接下来就来讨论下,上面提出来的问题?怎样对URL解析的时间进行优化,在Nmap重提供了不进行解析的参数(-n),这样就不会对域名进行解析了
其中关于域名解析的相关参数还有:
-
-R 为所有的目标主机进行解析
-
--system-dns 使用系统域名解析器进行解析,这个解析起来会比较慢
-
--dns-server 服务器选择DNS解析
说到-R注释的意思你会有所体会,其实nmap的扫描解析不止是对一个目标主机进行解析,还可以对一定范围内的目标主机群进行解析
例如:查找180.149.132.151-152的主机的状态以及端口状态,分析如下:
1、虽然查找的主机的数量不多,但是这样查找起来也是很浪费时间的, 所有我们可以通过使用快速查找的方法来节约时间
快速查找端口方法的原理如下:
默认的情况下,我们的查找是查找最有可能开放的1000端口,但是使用快速端口查找(参数 -F )会查找最有可能开放的100个端口,这样也就节约了10倍的时间
2、这里我们需要获取端口的状态,所以就不能使用参数(-sn),这个参数是可以跳过端口扫描,直接进行主机发现的
输入命令:nmap -F -sT -v -n 180.149.132.151-152 180.149.132.151:baidu.com的IP地址
PS:1、-sn参数只能扫描的主机,不能扫描端口,另一个参数也要特别注意的是(-PE)通过ICMP echo判定主机是否存活
运行情况如下:
图片中的1处指的是,采用sT的扫描方法,这种扫描方法准确,速度快,但是这样的扫描容易被防火墙和IDS发现并记录,所以这种方法,实际中并不多用
由图中的3处我们可以知道在不进行解析的情况下扫描用时为4.53秒,比解析的时候用的时间节约了不少
图中的4说明了扫描了2个主机
提示:
在nmap运行的时候,如果我们可以像其他编程一样打“断点”,直接按键盘的d键就行了,如果想知道运行的进度可以按下X键
扫描方法
好了,示例也讲完了,下面我们就来分析一下扫描的各种方法:
一、端口扫描
1、TCP扫描(-sT)
这是一种最为普通的扫描方法,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现
运行的原理:通过建立TCP的三次握手连接来进行信息的传递
2、SYN扫描(-sS)
这是一种秘密的扫描方式之一,因为在SYN扫描中Client端和Server端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会再目标主机上留下任何的痕迹,但是这种扫描是需要root权限(对于windows用户来说,是没有root权限这个概念的,root权限是linux的最高权限,对应windows的管理员权限)
运行的原理图如下:
3、NULL扫描
NULL扫描是一种反向的扫描方法,通过发送一个没有任何标志位的数据包给服务器,然后等待服务器的返回内容。这种扫描的方法比前面提及的扫描方法要隐蔽很多,但是这种方法的准确度也是较低的, 主要的用途是用来判断操作系统是否为windows,因为windows不遵守RFC 793标准,不论端口是开启还是关闭的都返回RST包
但是虽然NULL具有这样的一些用处,但是本人却认为不宜使用NULL
-
NULL方法的精确度不高,端口的状态返回的不是很准确
-
要获取目标主机的运行系统,可以使用参数(-O),来获取对于一些操作系统无法准确判断的,可以加上参数(-osscan-guess)
-
NULL扫描易被过滤
4、FIN扫描
FIN扫描的原理与NULL扫描的原理基本上是一样的在这里就不重复了
5、ACK扫描
ACK扫描的原理是发送一个ACK包给目标主机,不论目标主机的端口是否开启,都会返回相应的RST包,通过判断RST包中的TTL来判断端口是否开启
运行原理图:
TTL值小于64端口开启,大于64端口关闭
大致上主要的扫描方法就是这些,除了我们可以按照这样些参数去执行扫描外,还可以自己定义一个TCP扫描包
6、自定义TCP扫描包的参数为(--scanflags)
例如:定制一个包含ACK扫描和SYN扫描的安装包
命令:nmap --scanflags ACKSYN baidu.com
Starting Nmap 7.00 ( https://nmap.org ) at 2016-09-19 23:57 CST Nmap scan report for baidu.com (220.181.57.217) Host is up (0.010s latency). Other addresses for baidu.com (not scanned): 180.149.132.47 123.125.114.144 111.13.101.208 Not shown: 998 filtered ports PORT STATE SERVICE 80/tcp open http 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 5.41 seconds
接下来还有各种扫描方法的端口列表参数:
-
-PS 端口列表用,隔开[tcp80 syn 扫描]
-
-PA 端口列表用,隔开[ack扫描](PS+PA测试状态包过滤防火墙【非状态的PA可以过】)【默认扫描端口1-1024】
-
-PU 端口列表用,隔开[udp高端口扫描 穿越只过滤tcp的防火墙]
其他的常见命令
输出命令
-oN 文件名 输出普通文件
-oX 文件名 输出xml文件
错误调试:
--log-errors 输出错误日志
--packet-trace 获取从当前主机到目标主机的所有节点
网络安全工程师企业级学习路线
很多小伙伴想要一窥网络安全整个体系,这里我分享一份打磨了4年,已经成功修改到4.0版本的《平均薪资40w的网络安全工程师学习路线图》对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
如果你想要入坑黑客&网络安全工程师,这份282G全网最全的网络安全资料包!
学习资料工具包
压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。
网络安全源码合集+工具包
视频教程
视频配套资料&国内外网安书籍、文档&工具
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
黑客/网安大礼包:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
好了就写到这了,大家有任何问题也可以随时私信问我!希望大家不要忘记点赞收藏哦!
特别声明:
此教程为纯技术分享!本文的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。!!!