nmap扫描主机参数详解

测试渗透 专栏收录该内容
10 篇文章 0 订阅

Nmap简介

Nmap(Network Mapper) 是一款支持各种操作系统的开源网络扫描工具。主要用来进行主机发现、端口扫描,并通过端口扫描推断运行系统以及运行软件版本。
-sL 简单扫描列表目标
-sP: Ping Scan - disable port scan
-n 取消域名解析
发送4种不同类型的包去探测,只要收到其中任何一种返回包,就可以判定主机是打开的
ICMP协议 请求回显包
TCP协议 SYN请求包
TCP协议 ACK请求包
ICMP协议 timestamp请求包
-sS (TCP SYN扫描)
半开放扫描,它只发送一个SYN报文然后等待回应,若SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者。因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN

-sT (TCP connect()扫描)
CPConnect()扫描是默认的TCP扫描,Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。

-sU (UDP扫描)
UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。 偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。 如果几次重试后还没有响应,该端口就被认为是open|filtered(开放|被过滤的)。

-sN; -sF; -sX (TCP Null,FIN,and Xmas扫描)
用来区分open(开放的)和 closed(关闭的)端口。利用了当端口关闭时,任何不包含SYN,RST,或者ACK位的报文会导致 一个RST返回,而当端口开放时,应该没有任何响应。

-sA (TCP ACK扫描)
ACK扫描探测报文只设置ACK标志位(除非您使用 --scanflags)。当扫描未被过滤的系统时, open(开放的)和closed(关闭的) 端口 都会返回RST报文。Nmap把它们标记为 unfiltered(未被过滤的),意思是 ACK报文不能到达,但至于它们是open(开放的)或者 closed(关闭的) 无法确定。不响应的端口 或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10, 或者13)的端口,标记为 filtered(被过滤的)。

-Pn 跳过第一步,直接开始端口扫描
nmap默认扫描过程是
主机是否开机
端口扫描
服务探测

Nmap常用命令

1.扫描单个主机:nmap 192.168.56.133
2.扫描整个子网:nmap 192.168.56.0/24(24表示子网掩码位数)
3.扫描某个范围:nmap 192.168.56.1-110
4.扫描除过某一个ip外的所有子网主机

nmap 172.16.96.1/24-exclude 172.16.96.1

5.扫描特定主机上的端口

nmap -p80,443,22,23 192.168.56.111

6.OS侦测
-O: 启用操作系统检测。
-osscan-guess; --fuzzy :推测操作系统检测结果

 nmap -O --osscan-guess 172.16.96.205

Nmap实现原理分析

Nmap功能的实现基于TCP/IP协议,下面将曾从协议层面分析Nmap的实现原理。

  1. 主机发现

    主机发现通常在端口扫描以前,确定目标主机是否在线,也可以单独运行构建局域网拓扑。Nmap主机发现的实现分为两个阶段:地址解析阶段+实际探测阶段。地址解析主要负责从主机表达式中解析出目标主机地址,将之存放在hostbatch中,并配置该主机所需的路由、网口、MAC地址、源IP等信息。实际发现分别对解析出来的目标主机,进行实际的探测以及获取RDNS相关信息,例如采用ARP包发现局域网内主机是否在线。

    Nmap从主机表达式中获取主机地址,若取得的不是IP需要进行DNS解析,获取域名对应的IP。在实际主机发现过程中,根据所利用的协议的不同,分为以下两种:

    (1)利用IP层协议的方式:1)ARP方式。ARP方式一般用于Nmap对局域网进行扫描的情况下,因为基于RFC1918私有地址范围的网络中在一个给定的时间内绝大部分IP地址都是不使用的。当Nmap试图发送一个原始IP报文如ICMP回声请求时,操作系统必须确定对应于目标IP的硬件地址(需要使用ARP),所以直接放弃IP报文阶段,在得到ARP回应时就可以知道目标主机处于活跃状态。2)Ping扫描。仅仅进行ping扫描,发送ICMP数据包,将作出响应的主机进行打印。发扫描只是用来。

    (2)利用运输层协议的方式:1)发送SYN数据包、发送ACK数据包、发送UDP数据包。前两种分别利用了TCP三次握手中的第一次握手与第二次握手。让对方觉得正在试图建立一个TCP连接,从而做出回应,根据回应得出主机状态。UDP则是发送一个UDP数据包,得到端口不可达、主机网络不可达的回应。

  2. 端口扫描

    Nmap提供的10多种类型的端口扫描方法,如TCPSYN/ACK/FIN/Xmas/NULL/ Windows/Connect,FTP Bounce, Idle scan, UDP portunreachable/ UDP recv_from, IP protocol,SCTPINIT/SCTP COOKIE ECHO等扫描方式。这些技术全部是基于运输层与应用层的协议,原理都是基于网络数据包的特征或者网络编程API来判定端口的状态。以TCP SYN方式(Nmap的默认的TCP扫描方式)为例来简单地回顾端口扫描原理。

    第一种情况表示端口处于关闭状态,第二种情况表示端口处于开放状态。

    端口扫描功能会用到nmap-services数据库文件,此文件描述互联网上常见的注册端口对应的服务名称,以及该端口开放的频率和注释信息。端口开放的频率是Nmap项目组对互联网上大量的计算机进行扫描,统计出的每个端口开放的概率值,所以根据此概率可以很方便指定扫描覆盖的范围。

  3. 版本侦测

    扫描原理是服务指纹(或称签名)对比匹配。Nmap内部包含了几千种常见服务指纹的数据库(nmap-service-probes),对目标端口进行连接通信,产生当前端口的服务指纹,再与指纹数据库对比,寻找出匹配的服务类型。

    服务与版本侦测主要分为以下几个步骤:
    1) 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
    2)如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中ProbeTCP NULLq||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner与nmap-services-probes中NULLprobe中的签名进行对比。查找对应应用程序的名字与版本信息。
    3)如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
    4)如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
    5)如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
    6)如果探测到应用程序是SunRPC,调用brute-forceRPCgrinder进一步探测具体服务。

最后,引用一句王者荣耀游戏中达摩的一句话:走不通的路,就用拳头去打开。加油,路一定会通…

  • 0
    点赞
  • 0
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

namp 2011-06-25 02:13:43| 分类: Linux | 标签:namp |字号大中小 订阅 . 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):   nmap -sP 192.168.1.0/24   仅列出指定网络上的每台主机,不发送任何报文到目标主机:   nmap -sL 192.168.1.0/24   探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   nmap -PS 192.168.1.234 nmap -PS 127.0.0.1 -p 100-700   使用UDP ping探测主机:   nmap -PU 192.168.1.0/24   使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:   nmap -sS 192.168.1.0/24   当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:   nmap -sT 192.168.1.0/24   UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:   nmap -sU 192.168.1.0/24   确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):   nmap -sO 192.168.1.19   探测目标主机的操作系统:   nmap -O 192.168.1.19   nmap -A 192.168.1.19   另外,nmap官方文档中的例子:   nmap -v scanme.   这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。   nmap -sS -O scanme./24   进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。   nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127   进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。   nmap -v -iR 100000 -P0 -p 80   随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。   nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20   扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。   host -l | cut -d -f 4 | nmap -v -iL -   进行DNS区域传输,以发现中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。   其他选项:   -p (只扫描指定的端口)   单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。   -F (快速 (有限的端口) 扫描)namp 2011-06-25 02:13:43| 分类: Linux | 标签:namp |字号大中小 订阅 . 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):   nmap -sP 192.168.1.0/24   仅列出指定网络上的每台主机,不发送任何报文到目标主机:   nmap -sL 192.168.1.0/24   探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   nmap -PS 192.168.1.234 nmap -PS 127.0.0.1 -p 100-700   使用UDP ping探测主机:   nmap -PU 192.168.1.0/24   使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全
©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值