一、nmap探测主机是否存活
发送UDP包探测主机是否存活
判断依据:通过ICMP不可达判断主机是否开放(结果不是太准确可尝试多试几次)
以探测内网主机为例:
命令:nmap 192.168.0.1-200 -PU -sn
-PU 发送UDP包 -sn 探测主机 如图探测c段1到200的主机 开放8个
发送ACK包探测主机是否存活
命令: nmap 192.168.0.1-200 -PA -sn
-PA 发送ACK包 -sn 探测主机 如图探测c段1到200的主机 开放9个
二、探测某台主机端口开放
探测UDP端口开放情况
如:另一台主机ip为:192.168.0.108
命令:nmap -sU 192.168.0.108
默认进行端口扫描,时间较长途中可按回车查看进度及剩余时间
(也可使用命令 nmap -sU 192.168.0.108 -p1-65535 进行全端口扫描)
或nmap -sU 192.168.0.108 -p1- 进行全端口扫描
或指定端口进行扫描(如下图测试了两个UDP端口)命令分别为:
nmap -sU 192.168.0.108 -p161
nmap -sU 192.168.0.108 -p137
或使用命令: nmap -sU 192.168.0.108 -p161,137
探测TCP端口开放情况
隐蔽扫描
应用日志不会记录 流量日志会记录
原理:nmap默认使用SYN 扫描,收到SYN/ACK响应后意味着端口开放,
收到RST包意味着端口关闭。
命令:nmap 192.168.0.108
或:nmap 192.168.0.108 -sS (s:扫描,S:SYN)结果如下图:
过滤信息
如扫面三个端口过滤开放情况 --open
nmap -sS 目标地址 -p80,135,136 --open
(-sS可加可不加)
IP字典扫描
使用命令 :-iL放入字典
如:扫描字典中ip主机的80,135,136端口开放情况
命令:nmap -iL '字典路径' -p80,135,136 --open (z字典可直接拖入)
全连接扫描
命令:nmap -sT 192.168.0.108 -p-
该处所使用靶机地址 192.168.0.108 -p- 全端口扫描
僵尸扫描
发现僵尸机
如:命令: -p445 192.168.0.108 --script=ipidseq.nse
探测ip地址为192.168.0.108的主机是否可以做僵尸机(依据ipidseq参数是否递增)
如图所示 ipidseq: Incremental! 可做僵尸机
使用僵尸机扫描目标主机
如:目标主机ip: 192.168.0.110 僵尸机ip: 192.168.0.108
命令: nmap 192.168.0.110 -sI 192.168.0.108 -p1-1000
-sI 使用僵尸机扫描 -p1-1000 扫描目标主机1-1000的端口
三、nmap服务扫描
banner
命令: nmap -sT 192.168.0.98 -p22 --script=banner.nse
-sT:全连接扫描
-p22: 指定端口号22
--script=banner.nse :指定banner.nse插件
服务版本检测
命令:nmap 192.168.0.98 -p- -sV
-sV: 进行版本探测
-p- 全端口扫描
如下图各端口号及其版本信息
操作系统版本检测
例如:命令: nmap -O 192.168.0.98
-O 扫描主机操作系统版本
四、识别目标操作系统
smb协议,文件共享协议 默认开放 一般端口使用为139,445,
通过smb发现主机操作系统
命令:nmap 192.168.0.108 -p139,445 --script=smb-os-discovery.nse
-p139,445指定端口
五、nmap常用参数详解
-iL: 后加主机ip字典 批量扫描
-iR:选择随机目标主机进行扫描(如 -iR 100 扫描全网随机100个主机)
--exclude:白名单 指定不想扫的主机地址
--excludefile: 后加字典 批量指定白名单中的主机
-sL:列出目标 不进行主机发现
-sn:只ping主机 不扫端口
-Pn:扫描前不需要ping命令若防火墙禁止使用ping,可用此扫描
-PO:使用ip协议进行扫描
--dns-servers: 指定nmap的DNS服务器进行解析
--system-dns:指定系统DNS服务器
--traceroute:路由追踪
-sS:发送SYN包扫描目标主机
-sT:全连接扫描
-sA:ACK扫描 (可判断有无防火墙)
-sU:发送UDP包探测目标主机
-sI:僵尸扫描
--top-ports <number> :扫描开放概率最高的number个端口
--port-ratio <ratio> :扫描指定频率以上的端口 <radio>为频率
-sV: 进行版本探测
--version-intensity <level>: 指定版本侦测强度(0-9)
-O : 进行系统版本扫描
-T<0-5>:设置定时模板(越高越快)一般用4
--host-timeout <time>: 设置主机超时时间
--scan-delay/--max-scan-delay <time>: 调整扫描之间的延迟
--min-rate <number>: 发送数据包每秒不少于
--max-rate <number>:发送数据包每秒不多于
-D <decoy1,decoy2[,ME],...>:用诱饵掩盖扫描
-S <IP_Address>: 伪造源地址
-e 指定网卡
--data <hex string>:将自定义负载附加到已发送的数据包(十六进制)
--spoof-mac <mac address/prefix/vendor name>: mac地址/常量/供应商名称>:欺骗您的mac地址
--open: 仅显示打开(或可能打开)的端口
-v:增加详细等级(使用-vv或更多预期更多的效果)
-V:打印版本号
版权声明:本文为Jaasenyi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。