Nmap教学视频笔记

1 nmap的安装和扫描的基本概念

扫描的原理:比如打电话(对方可以接听或者不接)

扫描的分解动作:

  1. 统一沟通语言
  2. 发出刺激
  3. 受到刺激的反馈(被扫描主机可能返回也可能不返回)
  4. 通过对比刺激和反馈完成扫描

2 如何找到网络上的设备

2.1 nmap的输入输出

找到设备地址:DNS解析,直接获取

如何将网络地址告知nmap:

nmap [扫描类型][设置]{设备地址}

地址类型:主机名,IP地址,网段等

-iL<文件名>:通过文件输入地址

-iR<ip地址数目>

--exclude<host1 [,host2],...>:排除主机或者网段

--exclude<exclude_file>:排除文件中的地址

nmap输出:

扫描二维码关注公众号,回复: 2602190 查看本文章

1. nmap输出的格式参数:

命名中使用时间%H, %M, %S,%m,, %d, %y

nmap输出的格式:

-oN

-oX

-oS

-oG

-oA

2. 输出详细和调试测试

-v

-d[0-9]

--reason

--packet-trace

--open 

--iflist

--long-errors

其他设置:用到再说 

2.2 确定网络设备

命令行参数:

Ping类型:

  • -sL(list scan)不做扫描,只完成DNS和网址的转换
  • -sP:(ping scan)默认发ICMP echo请求 和 TCP的ACK请求80端口
  • -PN:不使用ping,可能或比较慢,但是主机假如不在也会扫
  • -PS<端口号列表>(TCP SYN Ping)发TCP协议SYN标记的空包。默认扫描80端口
  • -PA<端口列表>(TCP ACK Ping)发TCP协议ACK标记的空包。默认扫描80端口
  • -PU<端口列表>(UDP Ping)默认31338
  • -PE;-PP;-PM(ICMP Ping)
  • -PO<协议列表>(IP协议Ping)在协议列表中指定使用什么样的协议,要注意语言的统一,你扫人家,你得懂人家的语言,其实就是知道对方使用的什么协议,PO支持好多协议
  • -PR(ARP Ping) 二层的,局域网扫描,不能出局域网

其他设置项:

  • --traceroute 跳数
  • -n 不要做DNS解析
  • -R DNS解析所有地址,默认不解析不在线的IP
  • -system-dns  使用系统DNS
  • --dns-servers<server1>[,<server>[,...]]使用其他DNS

3 端口扫描概要

nmap扫描的端口是什么

协议上的端口号---只是个标记

主机在线端口才有意义,主机相当于大楼,端口相当于房间

为什么扫描端口

端口(TCP,UDP其他)-推测--> 服务(http, ftp.其他)-推测--->程序(apache, Server_U,其他), 然后看程序有没有什么漏洞

我们扫描端口其实还是为了识别端口后面的程序

-p<端口列表>,如果不给出,就默认扫描1660个,常用的端口

扫描结果--Nmap如何描述端口状态

1. open 端口开启,有程序监听此端口(相当于食堂大妈在等你打饭吃)相当于主机开启,而且在跑着服务呢

2. closed 端口关闭,数据能到达主机,但是没有程序监听此端口

3. filtered 数据未能到达主机

4. Unfiltered,数据能到达主机,但是Nmap无法判断端口开启还是关闭。

5 Open | filtered,端口没有返回值,主要出现在UDP,IP,FIN,NULL和Xmas扫描

6. Closed | filtered. 只出现在IP ID idle扫描

4 端口扫描技术和算法

4.1 TCP标志位扫描

TCP建立连接和断开连接(三次握手和四次挥手)

TCP Header(Source Port; Destination Port; TCP Flags;)

TCP扫描(-sS)半连接

  • -sS
  • 匿名扫描
  • 默认扫描模式(不加类型)
  • 需要root模式
  • 扫描速度快

端口开启状态(open)

open    nmap -p22 scanme.nmap.org     本地发送SYN数据包   scanme服务器的返回值:TCP SYN/ACK

closed  nmap -p113 scanme.nmap.org   本地发送SYN数据包   scanme服务器的返回值:TCP RST

filtered  nmap -p139 scanme.nmap.org   本地发送SYN数据包   scanme服务器没有返回值(过滤掉了)或者是返回ICMP未达到错误

TCP全连接扫描(-sT)三次握手做完

  • -sT
  • TCP扫描的默认模式
  • 不需要特权用户权限
  • 端口状态和SYN相同

全连接过程:

其他扫描:

注意ACK返回状态没有closed状态

TCP Window扫描

TCP迈蒙尼德扫描

用户定制的TCP扫描(--scanflags)

  • --scanflags <URG,ACK,PSH,RST,SYN,FIN>
  • 数字标记
  • 字符标记

端口扫描技巧:

TCP idle扫描,比较复杂,前面的扫描都会暴露自己,idle扫描之后踏雪无痕!!!

IP Header:Fragment Id有规律就能利用,如递增)

如何利用ID规律

三个主角:nmap主机,僵尸服务器,目标服务器,具体实现步骤如下所示

注意这下面显示的是目标服务器是open状态的

1. 探测僵尸服务器IP ID

2.伪造以僵尸身份服务器IP ID

3.再次探测僵尸服务器IP ID 这时候僵尸服务器根据Fragmnet ID递增的特点,应该回的就是31339,于是nmap就推测出来目标服务器可能给僵尸服务器发的是SYN/ACK,然后推测出来目标服务器对应的目标端口是开着的,原理就是这样子滴。

注意这下面显示的是目标服务器是closed状态的

1. 探测僵尸服务器IP ID

2. 伪造以僵尸服务器身份的SYN包,这时候目标服务器给僵尸服务器发送RST或者没有响应,僵尸服务器就不会再给目标服务器发送数据包

3. 再次探测僵尸服务器IP ID,nmap发现僵尸服务器返回的ip id是31338,就推测目标服务器可能是关着的

注意这下面显示的是目标服务器是filtered状态的
1.前两步相同

2.

3.

可以看出来nmap其实不能识别端口是closed还是filtered的,所以注意idle扫描特点

总结:

主要了解思维:只要看到有规律可循,就能利用

tcp idle扫描的参与者一共有三个,nmap, 僵尸服务器和目标服务器

这种扫描是建立在TCP三次握手的基础上,但是扫描成功的前提是找到一台僵尸服务器(特点就是IP Header头的Fragment ID有自增的特点,这台设备可能不是公共的服务器,可能是一台打印机等等)


端口扫描技巧——其他扫描模式

这一小节我们聊一下UDP的扫描:-sU,尽量不要将TCP扫描和UDP扫描一起使用,效率比较低

注意:UDP就像是寄信一样,只要有了地址就直接寄出去,TCP更像是打电话,UDP因为含有的信息比较少,所以很难像TCP一样使用TCP idle扫描这种复杂的扫描方式。

-sO:协议扫描;获取服务器支持哪些协议,这里已经不是端口扫描了。

FTP反弹扫描

-b

ftp代理扫描

大总结:

  • TCP标志位扫描--修改各个标志位
  • TCP idle扫描,找僵尸服务器
  • 其他扫描:UDP 协议扫描(用协议去试端口)FTP扫描

5 优化Nmap的性能

  nmap本身的一些东西讲了80%,优化就是控制扫描速度,提高扫描准确率 。也不一定快了就好,有时候防止被防火墙发现,就得慢下来,防止被拉进黑名单。有时候网络环境不好,假如我们发包太快的话,丢包率就会很高。

参数不同,决定了扫描的速度的不一样

优化的具体内容:不做无用功

1 逐步分解任务

  • -sP    首先确定是否在线,  
  • UDP和TCP扫描不要同时进行,nmap是并行的,如果协议的话就更好的并行

2. 控制扫描的端口,默认nmap扫描1000多个端口

  • -F:快速Fast扫描100个常用端口,nmap对端口做了一个排序,默认排了1000个,加了F之后100个
  • --top-ports<端口个数>
  • -p  想扫哪个就最好指定

3. 跳过高级扫描功能:

  • -A:动作相对于比较详细,要做好多事,是nmap提供的一个扫描模板,识别操作系统
  • -sV:判断对应端口上跑的程序的版本的,需要调用应用层协议
  • -sC:(--script=default)加了之后就会调用默认的脚本,也会调用20多个
  • -O:用来识别操作系统的,识别操作系统十分耗时,要识别协议栈
  • --traceroute:
  • 可能的话关闭DNS解析 -n 不需要的话就把DNS关掉

优化nmap性能02

--top-ports<端口个数> 具体影响细节

默认-F就能达到70%多

优化具体内容:优化时间参数和并行: 

1. 对主机分组

2. 对nmap分组

3. 新手在使用等待时间越长,越容易被蜜罐等防火墙拖住,故意返回很慢。 

4. 最大重传多少次

5. 每个主机最大的耗时,主要是防止因为网络条件不好的情况下,某个主机占用的时间太多

....

都是能够加速时间

Nmap提供的时间和并行模板:

越慢越准,越不好识别出来。

总结上面所讲内容:

端口扫描的参考步骤:

1. 明确目标(主机发现,端口扫描,服务确定,etc)

2. 确定网络(带宽,质量, etc)

3. 计算和测试扫描时间(独立主机,整体,etc)

4. 确定各个参数(使用模板,自行设计参数)


6 服务和应用程序版本的识别

NMAP的高级版本

1. 确定服务和服务程序的版本

操作参数

端口扫描,,nmap给出的服务准确吗?

端口扫描,nmap是如何得出应用版本的?-sV

服务和版本相关的参数:

1. -sV 探测开放端口的服务和版本信息

2, --version-intensity<0-9>:设置探测深度,数越大越多

3. --version-light:相当于0-2

4. --version-all:相当于0-9

5. --version-trace:显示版本扫描详细(用于调试)打印出来状态

服务版本探测细节?附录2

比较像男女谈恋爱,给她一些东西,看她反馈

深入学习两个文件:

1. 安装目录

2. 编译安装/usr/local/share/nmap

3.rpm安装/usr/share/nmap

4. nmap-services

5. nmap-service-probes


7 远程操作系统识别

8 Nmap脚本引擎

9 识别和绕过防火墙和IDS

10 防御nmap的扫描

11 nmap的图形化程序Zenmap(windows)linux不需要

12 格式化Nmap的输出内容

13 理解和设置Nmap的数据文件

14 总结

猜你喜欢

转载自blog.csdn.net/Mr_XiaoZ/article/details/81312852