端口扫描之王——nmap入门精讲(二)
接着讲上节的内容,上节中提到了一个时间优化的问题是使用参数-n,通过不解析地址来进行优化时间的,但是优化时间的方法还有很多,比如说我们可以通过时间优化(0-5),指定单位时间内的探针数,设置组的大小
时间优化(0-5)
时间优化的参数是(-T0~5),最快的扫描速度为-T5,最慢的扫描速度为-T0,实现的原理:通过设置各个端口的扫描周期,从而来控制整个扫描的时间,比如说T0各个端口的扫描周期大约为5分钟,而T5各个端口的扫描周期为5ms,但是过快的扫描也是有缺点的,扫描的周期过快,会很容易被防火墙和IDS发现并记录,因为防火墙大多数会将端口周期过段识别为扫描从而屏蔽掉,如果不对其进行设置的话,默认值为T4
--min-hostgroup/--max-hostgroup size 设置组的大小
--min-parallelism/--max-parellelism time指定时间内的探针数
具体的使用方法就不做介绍了,有兴趣的话,可以试一试研究一下变知道怎样使用了
在上节中还讲漏了一个知识点获取指定端口的参数(-p),这个参数的意义在于对于我们有时候只想监控某个特定的端口的状态,这个参数是即为有用的,可以节约了不少的时间
例如:监控nmap.org的80端口的状态
命令:nmap -p 80 nmap.org
接下来就进行这一节的主要内容,如果上节没有了解清楚的同学,建议返回上节理解清楚再开始这一节
这一节我们就来讲讲怎样规避被防火墙或IDS发现的风险以及操作的步骤
上节中我们假设的是在一个网络安全较为薄弱的情况下就可以正常进行的,但是正常的网站或者个人都是对安全有一定的防范的,网站中基本上都会存在安全狗、防火墙等规避风险的措施,个人电脑也会安装各种安全软件,所以对于做扫描工作的人来说,我们不知道通过扫描获取相关的信息,同时也要保护好自己的隐私,比如IP等信息,防止被防火墙或者是网络日志所记录下来
在讲这节之前我们来了解一下什么事防火墙?
防火墙的原理图:
防火墙是通过在客户端与服务器端之间搭建一个监控(运行的原理有点像Fiddler),通过对特定开放的端口进行屏蔽掉,从而达到网络安全的作用,防火墙在其功能上也会有一些其他的功能,这个要看防火墙的实际情况
规避的基本思路是:
1、通过伪造访问的IP地址
2、通过对发送信息进行处理
3、将风险进行嫁接
4、其他的技术
伪造IP地址
伪造IP地址有很多种方法,可以通过下面的这几种方法是我认为比较常见的希望大家能喜欢
一、诱饵扫描(-D)
诱饵扫描的工作原理是:通过伪造大量的IP与自己真实的IP一起访问网站,从而混淆管理员的判断,其中问你们使用ME来代表自己的真实地址
例子:虚构一个IP为203.88.163.34与自己的真实地址去扫描nmap.org
命令:nmap -F -D 203.88.163.34,ME nmap.org
运行的结果如下:
但是在使用伪造的IP的同时,我们要注意要对伪造的IP进行主机发现,来判断主机是否存在,是否开启,因为有些防火墙策略是有这样规定的:如果访问的IP主机是关闭或者是为空的话,就讲所有的返回内容过滤掉。试想一下,如果主机关闭或者是不存在,那么怎么可能会发送扫描的命令给目标主机呢?
要找到开启的目标主机理论上是没有什么要求的,但是为了节约时间,我建议是直接使用某个网站的IP地址,这样有一下的几个好处
1、IP地址容易获得,一般的网站是通过ping参数就可以直接获取该网站的IP地址,除了一些不让进行Ping操作的网站除外
2、容易保证IP的正常开启,因为谁家的网站会经常关闭服务器,服务器一般是总是开启的
二、源地址欺骗(-S)
源地址欺骗的原理是:通过将自己的IP伪装成为其他的IP去扫描目标主机从而骗过目标主机的追踪
假设要伪装成为1.1.1.1:参数-S 1.1.1.1 使用1.1.1.1进行扫描,让防火墙误以为是来自1.1.1.1的扫描行为
在使用的时候要注意与-e进行使用,因为除了制定要伪装成为的对象IP外,还要指定返回的IP地址
三、时间优化(-T)
通过时间优化也提高通过防火墙和IDS的通过率
发送信息处理
指定使用分片(-f)
分片的工作原理是:将可疑的探测包进行分片处理(例如将TCP包拆分成多个IP包发送过去),某些简单的防火墙为了加快处理速度可能不会进行重组检查,以此避开其检查。
将风险责任进行嫁接
空闲扫描(-sI):
这里有一篇比较全面的文章http://www.2cto.com/Article/201505/396631.html 再次就不多做介绍
其他的相关技术:
有MAC伪造技术等
防火墙/IDS躲避和哄骗
-f; --mtu value 指定使用分片、指定数据包的MTU.
-D decoy1,decoy2,ME 使用诱饵隐蔽扫描
-S IP-ADDRESS 源地址欺骗
-e interface 使用指定的接口
-g/ --source-port PROTNUM 使用指定源端口
--proxies url1,[url2],... 使用HTTP或者SOCKS4的代理
--data-length NUM 填充随机数据让数据包长度达到NUM
--ip-options OPTIONS 使用指定的IP选项来发送数据包
--ttl VALUE 设置IP time-to-live域
--spoof-mac ADDR/PREFIX/VEBDOR MAC地址伪装
--badsum 使用错误的checksum来发送数据包