Nmap学习笔记

Nmap基础知识

Nmap是一个免费开放的网络扫描嗅探工具包,也叫网络映射器(Network Mapper)。Nmap工具可以用来扫描电脑上开放的端口,确定哪些服务运行在哪些端口,并推断出计算机运行的操作系统。

概述

nmap支持各种操作系统,如Windows、Linux、Mac OS等。

什么是Nmap

Nmap是一种开源免费的网络发现安全审计工具。最初由Fypodor在1997年创建的。
其优点有:

  1. 灵活:支持数十种不同的扫描方式,支持多种目标对象的扫描。
  2. 强大:Nmap可以用于扫描互联网上大规模的计算机群。
  3. 可移植:支持主流的操作系统;其源码开放,方便移植。
  4. 简单:提供的默认操作能覆盖大部分功能,如基本端口扫描、全面扫描。
  5. 自由
  6. 文档丰富:Nmap官网提供了详细的文档描述。
  7. 流行:目前Nmap已经被成千上万的安全专家列为必备的工具之一。

Nmap的功能

主要是四个方面的功能:

  • 主机发现
  • 端口扫描
  • 应用与版本侦测
  • 操作系统侦测
    四个功能之间存在大致依赖关系。
    来自大学霸
    以上各个功能之间的依赖关系
    1)首先用户需要进行主机发现,找出活动的主机。然后确定活动主机上的端口状况。
    2)根据端口扫描,确定端口上运行的应用程序和版本信息
    3)对版本信息侦测后,对操作系统进行侦测。
    在这四项基本功能的基础上,Nmap提供防火墙与IDS(入侵检测系统)的规避技巧,可以综合应用到四个基本功能的各个阶段;另外Nmap提供强大的NSE(Nmap Scriping Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。

Nmap工作原理

Nmap使用TCP/IP协议栈指纹准确地判断目标主机的操作系统类型。首先,Nmap通过对目标主机进行端口扫描,找出有哪些端口在目标主机上监听。
Nmap探测能力最强的时候:目标主机有一个TCP端口开放、一个TCP端口关闭、一个UDP端口关闭。

Nmap扫描类型

● ping扫描
● 端口扫描
● TCP SYN扫描
● UDP扫描
● 操作系统识别
● 隐蔽扫描

Nmap实验(172.16.41.220)

在这里插入图片描述

实验目的

1、通过对设备或者防火墙的探测来审计它的安全性。
2、探测目标主机所开放的端口。
3、网络存储、网络映射、维护和资产管理。
4、通过识别新的服务器审计网络的安全性。
5、探测网络上的主机。

A 实验原理(nmap之侦测版本和系统)

nmap使用tcp/ip协议栈指纹来识别不同的操作系统和设备。

A 实验内容

● 主机探测:探测网络上的主机,例如找出响应TCP和ICMP请求,ICMP请求、开放特别端口的主机。
● 端口扫描:探测目标主机所开放的端口。
● 版本检测:探测目标主机的网络服务,判断其服务名称及版本号。
● 系统探测:探测目标主机的操作系统及网络设备的硬件特性。
● 支持脚本的编写:使用Nmap的脚本引擎(NSE)Lua编程语言

A 实验环境描述

● 靶机带有环境,用户名密码为: admin 123456
● 攻击机带有nmap工具,用户名密码为 root toor

A 实验步骤

1、进入H004006001win701虚拟机,开启桌面上xampp工具,开启Apache、和MySQL服务,然后输入ipconfig和ifconfig查看靶机和攻击机的IP地址。
靶机:172.16.1.252
攻击机:172.16.1.243
2、在攻击机中输入nmap 172.16.1.252,用Nmap进行简单的扫描。Nmap默认发送一个ARP的ping数据包,来探测目标主机在1-10000范围内所开放的端口。
在这里插入图片描述
3、输入nmap -vv 172.16.1.252,用Nmap进行简单扫描,并对返回结果详细描述输入。
● -vv 参数设置,对结果的详细输出。
在这里插入图片描述
4、输入nmap -sV 172.16.1.252 进行版本侦测。
在这里插入图片描述
5、输入nmap -version-intensity 3 172.16.1.252 指定版本侦测强度为3,侦测强度范围为0-9,数值越高,探测出的服务越准确,但是运行时间比较长。
在这里插入图片描述
6、输入nmap -version-trace 172.16.1.252显示出版本侦测过程信息。
在这里插入图片描述
7、输入nmap -O 172.16.1.252 通过目标主机开放的端口探测主机所运行的操作系统类型。这是信息收集中很重要的一步,它可以帮助你找到特定操作系统上含有漏洞的服务
在这里插入图片描述
8、输入nmap osscan-guess 172.16.1.252 大胆猜测对方的主机的系统类型,由此准确性会下降不少,但会尽可能为用户提供给潜在的操作系统。
在这里插入图片描述

B 实验原理(Nmap之主机发现)

与ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启。
支持十种不同的主机探测方式。

B 实验内容

● -sL :List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
● -sn :Ping Scan 只进行主机发现,不进行端口扫描。
● -Pn:将所有指定的主机视为开启,跳过主机发现的过程。
● -PS/PA/PU/PY[postlist]:使用TCP SYS/ACK或SCTP INIT/ECHO方式进行发现。
● -PE/PP/PM:使用ICMP echo,timestamp,netmask请求包发现主机。
● -PO:使用IP协议包探测对方主机是否开启。
● -n/-R:-n表示不进行DNS解析,-R表示总进行DNS解析。
● -dns-servers:指向DNS服务器。
● -system-dns:指向使用系统的DNS服务器。
● -traceroute:追踪每个路由节点。

其中比较常用的是-sn,表示只单独进行发现过程(主机发现);-Pn表示直接跳过主机发现而进行端口扫描等高级操作(如果已经明确确定目标主机已经开启,可用该选项);-n表示不使用DNS或revesr DNS解析。

B 实验步骤

1、进入H004006002win701进入靶机里面,开启桌面上的xampp,手工开启Apache、MySQL服务,然后输入ipconfig和ifconfig查看靶机和攻击机的ip地址。
靶机:172.16.1.175
攻击机:172.16.1.174
2、输入nmap -sn 172.16.1.175只进行主机发现,不进行端口扫描。
3、输入nmap -Pn 172.16.1.175,将所有指定的主机视作开启,跳过主机发现的过程,进行端口扫描。
4、输入nmap -Pn -v 172.16.1.175,将所有指定主机视为开启,跳过主机发现的过程,并详细显示所有结果。
5、输入nmap -PS 172.16.1.175 使用TCP-SYS方式扫描。
6、输入nmap -Pn -n 172.16.1.175 使用TCP-SYS方式扫描,且不进行DNS解析。
7、输入nmap -A 172.16.1.175 此选项设置包含了1-10000的端口ping扫描、操作系统扫描、脚本扫描、路由跟踪、服务探测。
8、输入nmap -sV -v -O -Pn 172.16.1.175,-sV 表示版本侦测;-O 表示进行OS侦测;-Pn 表示将所有指定的主机视作开启,跳过主机发现的过程;-v 详细显示所有结果。
9、输入***nmap -sP 172.16.1.0/24 或者 nmap -sP 172.16.1.1-255*** 进行网段扫描。

C 实验原理(Nmap之端口扫描)

★ Half-open scanning

这是nmap默认的扫描方式,通常被称作半开放扫描(Half-open scanning )。该方式发送SYN到目标端口,

  1. 如果收到SYN/ACK回复,那么判断端口是开放的;
  2. 如果收到RST包,说明该端口是关闭的;
  3. 如果没有收到回复,那么判断端口是被屏蔽的(Filtered)。

因为该方式仅发送SYN包对目标主机的特定端口,但不建立的完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。

★ tcp-connect

使用系统网络API connect向目标主机的端口发起连接。如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标机上留下记录信息,不够隐藏。
所以TCP connect是TCP SYN无法使用才考虑选择的方式。

★ tcp ACK scanning

向目标主机的端口发送ack包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有RST包,说明被屏蔽,该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

★ tcp FIN /Xmas/NULL scanning

这三种扫描方式称为秘密扫描(Stsalthy Scan),因为相对比较隐藏,FIN扫描向目标主机的端口发送的TCP FIN包或Xmas tree包/Null包,如果收不到对方RST回复包,那么说明该端口是关闭的,没有收到RST包说明端口可能是开放的或被屏蔽的(其中Xmas tree包是指flags中FIN URG PUSI设置为1的tcp包;NULL包是指所有flags都为0的tcp包)。

C实验内容

● -sS/sT/sA/sW:指定使用TCP。
● SYN/CONNECT()/ACK/window/Maimon Scans方式来对目标主机进行扫描。
● -sU:指定使用UDP扫描方式确定目标主机的UDP端口状态。
● -sN/sF/sX:指定使用TCP-Null。FIN 和 Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
● -ssanflags:定制TCP包的flags。
● -sl:指定使用idle scan方式来扫描目标主机(前提是需要找到合适的zombie-host [僵尸主机])
● -sY/sZ:使用SCTP INIT/cookie-ECHO来扫描协议端口开放的情况。
● -s0 ip扫描:使用IP Protocol扫描确定目标支持的歇息类型
● -b:使用FTP bounce scan方式(反射扫描方式)。
● -p:扫描指定端口【port range:端口范围】。
例如:-p 22;
-p 1-65535;
-p U:53,111,137,T:21-192.168.1.18080,S:9
( T代表TCP,U 代表UDP,S代表SCTP协议)
● -F (Fast mode):快速模式,仅扫描TOP 100的端口。
● -r:不进行端口随机打乱的操作,(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方的防火墙检测到)
● -top-ports:扫描开放概率最高的number个端口,默认情况下,nmap会扫描最有可能的1000个TCP端口。
● -port-ratio< ratio>:扫描指定频率以上的端口
● -sS表示使用TCP SYN方式扫描TCP端口
● -sU表示扫描UDP端口
● -T4表示时间级别配置4级
● -top-ports 300表示扫描最有可能开放的300个端口(tcp和udp分别有300个端口)

C 实验环境描述

1、靶机 用户名密码为:admin 123456
2、攻击机 用户名密码为:root toor

C 实验步骤

1、首先进入到H004006003win701虚拟里面,然后打开桌面上xampp软件,开启Apache、MySQL服务,然后,查看IP地址。
靶机:172.16.1.183
攻击机:172.16.1.182
2、在H004006003kali02中输入nmap -sS 172.16.1.183,使用SYN方式进行扫描。
3、输入nmap -sU 172.16.1.183,使用UDP扫描方式确定目标主机的UDP端口状态.。
4、输入nmap -F 172.16.1.183,使用快速扫描方式,仅扫描TOP 100的端口。
5、输入nmap -v -sS -A -T4 172.16.1.183, 使用SYN扫描,在insane(5)的时间模板下,探测操作系统的类型和版本【-A 包含os,version,script和traceroute的组合】。
6、输入nmap -p1-10000 172.16.1.183 nmap 默认扫描目标1-10000范围内的端口号。我们则可以通过参数-p 来设置我们将要扫描的端口号
7、输入nmap -p80,443,21,22,8080,25,35 172.16.1.183 ,只对80,443,1000,65534这几个特殊的端口进行扫描
8、输入nmap --traceroute 172.16.1.183,跟踪详细路由信息。
9、输入nmap -sV -p139,445 -oG 1.txt 192.168.11.128,其中-sV代表让nmap进行版本侦测,-p代表指定端口,-oG代表输出为1.txt文件
10、输入. nmap -v -p1-65535 -sV -O -sS -T4 traget 192.168.11.128,用SYN的方法对全端口进行扫描,同时对开放的端口进行端口识别,在insane(5)的时间模板下,探测操作系统的类型,还有显示traceroute的结果,结果输出较为详细。

D 实验原理(nmap之规避防火墙/IDS)

● 分片(Fragmentation)

将可疑的探测包进行分片处理(例如将TCP包拆分成多个IP包发送过去)某些简单的防火墙为了加快处理速度可能不会进行重组检查,以此避开其检查。

● IP诱骗(IP decoys)

在进行扫描时,将真实的ip地址和其他主机的ip地址(其他主机需要在线,否则目标主机将uifu大量数据包到不存在的主机从而实质构成了拒绝服务攻击) 混合使用。以此让目标主机的防火墙或IDS追踪检查大量的不同ip地址的数据包,降低其追查到自身的概率,注意,某些 高级的IDS系统通过统计分析仍然可以追踪出扫描者的真实IP地址。

● IP伪装(IP Spoofing)

把自己发送数据包的ip地址伪装成其他主机的地址,从而目标认为是其他主机在与之通信,需要注意如果希望接收到目标主机的回复包,那么伪装的ip需要位于同一局域网内
另外,如果即希望隐藏自己的ip地址,又希望收到目标主机的回复包,那么可以尝试使用idle scan或匿名代理如(TOR)等网络技术

● 指定源端口

某些目标只允许来自特定端口的数据包通过防火墙,例如FTP服务器配置为:允许源端口为21号的TCP包通过防火墙与FTP服务器通信,但是源端口为其他端口的数据包被屏蔽,所以,在此类情况下,可以指定你,nmap将发送的数据包的源端口都设置特定的端口。

● 扫描延时

某些防火墙针对发送过于频繁的数据包会进行严格的侦查,而且某系统限制错误报文产生的频率,(如Solars系统通常会限制每秒钟只能产生一个ICMP消息回复给UDP扫描),所以,定制该情况下发包的频率和发包延时可以降低目标主机的审查强度、节省网络带宽

D 实验内容

● -f -mtu:指定使用分片,指定数据包的MTU(最大传输单元)。
● -D<.D…【ME】,D…>:用一组ip地址掩盖真实地址。其中ME填写自己的ip地址。
● -S:伪装成其他的IP地址。
● -e:使用特定额的网络接口。
● -g/source-post:使用指定源端口。
● -data-length:填充随机数据让数据包长度达到NUM。
● -ip-options:使用指定的Ip选项来发送数据包。
● -TTL:设置time-live时间。
● -spoof-mac:伪装MAC地址。
● -badsum:使用错误的checksum来发送数据包(正常情况下该类数据包被抛弃,如果收到回复,说明来自防火墙或IDS/IPS)。

D 实验环境描述

1、靶机 用户名密码为:admin 123456
2、攻击机 用户名密码为:root toor
(靶机上面安装了测试环境,攻击机上面有nmap工具)

D 实验步骤

1、首先打开桌面上的xampp工具,手动开启Apache、MySQL服务,然后在H004006004win701和H004006004kali02查看IP地址
靶机:172.16.1.165
攻击机:172.16.1.107
2、输入nmap -sV -v -sS -f -mtu500 172.16.1.165,其中-sV表示让nmap进行版本侦测,-v表示显示详细信息,-sS进行SYN扫描,-f表示设置mtu的最大传输单元为500。
3、输入nmap -D172.16.1.163,172.16.1.164,ME -e eth1 172.16.1.165,用ip地址172.16.1.163和172.16.1.174来掩盖真实地址。其中ME为自己的ip地址,通过wirshak可以观察到我们指定的ip地址发送的数据包。
4、输入nmap -S 172.16.1.164 -e eth1 172.16.1.165,-S将地址伪造成172.16.1.164,-e表示指定网卡。通过wirshak抓包,可以观察到我们伪造的ip。
5、输入nmap -g 21 -e eth1 172.16.1.165,-g表示指定源端口,-e表示指定网卡,通过抓包可以观察到我们指定的端口。
6、nmap -v -F -Pn -D172.16.1.163,172.16.1.164,ME-e ech9 -g 3355 172.16.1.165 其中-F 表示快速扫描100个端口,-pn表示不使用ping扫描,-D表示使用ip欺骗的方式掩盖自己真实的ip,-e eth9表示使用eth9网卡发送数据包,-g 3355表示自己源端口使用3355, 172.16.1.165是被扫描的目标ip地址。使用wirshak抓包可以观察到我们伪造的ip和指定的源端口信息。

E 实验原理(Nmap之NSE脚本引擎)

NSE脚本引擎(Nmap Scripting Engine)是Nmap最强大最灵活的功能之一,允许用户自己编写脚本来执行自动化的操作或者扩展Nmap功能。 NSE使用Lua脚本语言,并且默认提供了丰富的脚本库,目前已经包含14个类别的30多个脚本。

NSE设计初衷主要考虑一下几个方面: 网络发现、 更加复杂的版本侦测、 漏洞侦测、后门侦测、漏洞利用。

E 实验内容

● -sC:根据端口识别的服务,调用默认脚本。
● -script=“Lua scripts”:调用的脚本名。
● -script-args=n1=v1,[n2=v2]:调用脚本传递的参数。
● -script-args-file=filename:使用文本传递参数。
● -script-trace:显示所有发送和接受到的数据。
● -script-updatedb:更新脚本的数据库。
● -script-help=“Lua script”:显示指定的帮助。

E 实验环境描述

1、靶机 用户名密码为:admin 123456
2、攻击机 用户名密码为:root toor

E 实验步骤

1、进入到H004006005win701虚拟机,首先打开桌面上的xampp工具,手动开启Apache、MySQL服务,然后查看H004006005win701和H004006005kali02IP地址。
靶机:172.16.1.5
攻击机:172.16.1.6
2、输入nmap --script=vuln 172.16.1.5,检查是否存在常见的漏洞。
3、输入nmap --script=auth 172.16.1.5,负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令。
4、输入nmap --script=brute 172.16.1.5,提供暴力破解的方式,可对数据库smb、snmp等进行暴力猜解。
5、输入nmap --script=default 172.16.1.5或者 nmap -sC -O 172.16.1.5,默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后可再针对具体的服务进行攻击。
6、输入nmap --script=broadcast-netbios-master-browser 172.16.1.5 使用脚本发现网关。【netbios:网络基本输入输出系统;browser:浏览器】

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值