nmap用法详解

   日期:2024-12-11    作者:vic9j 移动:http://ljhr2012.riyuangf.com/mobile/quote/7264.html

目录

nmap用法详解

用法:nmap [扫描类型] [选项] {目标指定内容}

一、目标指定

-iL <输⼊⽂件名>

-iR <主机数量>

--exclude <主机 1 [, 主机 2][, 主机 3],...>

--excludefile <排除⽂件>

二、主机发现

-sL

-sn

-Pn

-PS/PA/PU/PY [端⼝列表]

-PE/PP/PM

-PO [协议列表]

-n/-R

--dns-servers <服务器 1 [, 服务器 2],...>

--system-dns

--traceroute

三、扫描技术

-sS/sT/sA/sW/sM

-sU

-sN/sF/sX

--scanflags <标志>

-sI <僵⼫主机 [: 探测端⼝]>

-sY/sZ

-sO

-b

四、端口指定及扫描顺序

-p <端⼝范围>

--exclude-ports <端⼝范围>

-F

-r

--top-ports <数量>

--port-ratio <⽐例>

五、服务 / 版本检测

-sV

--version-intensity <级别>

--version-light

--version-all

--version-trace

六、脚本扫描

-sC

--script=

--script-args==v1,[n2=v2,...]>

--script-args-file=filename

--script-trace

--script-updatedb

--script-help=

七、操作系统检测

-O

--osscan-limit

--osscan-guess

八、定时与性能

-T<0 - 5>

--min-hostgroup/max-hostgroup <⼤⼩>

--min-parallelism/max-parallelism <探测数量>

--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间>

--max-retries <尝试次数>

--host-timeout <时间>

--scan-delay/--max-scan-delay <时间>

--min-rate <数量>

九、防火墙 / 入侵检测系统规避与欺骗

-f; --mtu <值>

-D <诱饵 1, 诱饵 2 [, 我⾃⼰],...>

-S

-e <接⼝>

-g/--source-port <端⼝号>

--proxies ,[url2],...>

--data <⼗六进制字符串>

--data-string <字符串>

--data-length <数字>

--ip-options <选项>

--ttl <值>

--spoof-mac

--badsum

十、输出

-oN/-oX/-oS/-oG <⽂件>

-oA <基本名>

-v

-d

--reason

--open

--packet-trace

--iflist

--append-output

--resume <⽂件名>

--noninteractive

--stylesheet <路径 / URL>

--webxml

--no-stylesheet

十一、其他

-6

-A

--send-eth/--send-ip

--privileged

--unprivileged

-V

-h

十二、示例

nmap -v -A scanme.nmap.org

nmap -v -sn 192.168.0.0/16 10.0.0.0/8

nmap -v -iR 10000 -Pn -p 80

# ⽤例

 ⼀、红队渗透步骤

主机发现

端口扫描

详细信息扫描

# 原理

一、没有nmap进行主机发现(Linux bash命令为例)

二、没有nmap进行端口扫描

1. 使用进行旧版nc端口扫描


可以传入主机名、IP 地址、网络等。

例如scanme.nmap.org microsoft.com/24 、192.168.0.1;10.0.0 - 255.1 - 254

-iL <输⼊⽂件名>

:从主机 / ⽹络列表中读取输⼊内容。

-iR <主机数量>

:随机选择⽬标主机。

--exclude <主机 1 [, 主机 2][, 主机 3],...>

:排除指定的主机 / ⽹络。

--excludefile <排除⽂件>

:从⽂件中的列表排除相关内容。

-sL

:列表扫描 - 仅列出要扫描的⽬标。

-sn

:Ping 扫描 - 禁⽤端⼝扫描。

-Pn

:将所有主机视为在线状态 - 跳过主机发现步骤。

-PS/PA/PU/PY [端⼝列表]

:对给定端⼝进⾏ TCP SYN/ACK、UDP 或 SCTP 发现操作。

-PE/PP/PM

:ICMP 回显、时间戳和⼦⽹掩码请求发现探测。

-PO [协议列表]

:IP 协议 Ping。

-n/-R

:从不进⾏ DNS 解析 / 总是进⾏ DNS 解析(默认:有时进⾏)。

--dns-servers <服务器 1 [, 服务器 2],...>

:指定⾃定义 DNS 服务器。

--system-dns

:使⽤操作系统的 DNS 解析器。

--traceroute

:追踪到每个主机的跃点路径。

-sS/sT/sA/sW/sM

:TCP SYN/Connect ()/ACK/Window/Maimon 扫描。

-sU

:UDP 扫描。

-sN/sF/sX

:TCP Null、FIN 和 Xmas 扫描。

--scanflags <标志>

:⾃定义 TCP 扫描标志。

-sI <僵⼫主机 [: 探测端⼝]>

:空闲扫描。

-sY/sZ

:SCTP INIT/COOKIE-ECHO 扫描。

-sO

:IP 协议扫描。

-b <FTP 中继主机>

:FTP 反弹扫描。

-p <端⼝范围>

:仅扫描指定的端⼝。

例如:-p22;-p1 - 65535;-p U:53,111,137,T:21 - 25,80,139,8080,S:9

--exclude-ports <端⼝范围>

:从扫描中排除指定的端⼝。

-F

:快速模式 - 扫描的端⼝⽐默认扫描的要少。

-r

:按顺序扫描端⼝ - 不随机排列。

--top-ports <数量>

:扫描 <数量> 个最常⻅的端⼝。

--port-ratio <⽐例>

:扫描⽐ <⽐例> 更常⻅的端⼝。

-sV

:探测开放端⼝以确定服务 / 版本信息。

--version-intensity <级别>

:设置从 0(轻度)到 9(尝试所有探测)的强度。

--version-light

:限制为最有可能的探测(强度为 2)。

--version-all

:尝试每⼀个单独的探测(强度为 9)。

--version-trace

:显⽰详细的版本扫描活动(⽤于调试)。

-sC

:等同于 --script=default。

--script=<Lua 脚本>

:<Lua 脚本> 是⼀个由逗号分隔的⽬录、脚本⽂件或脚本类别列表。

--script-args=<n1=v1,[n2=v2,...]>

:为脚本提供参数。

--script-args-file=filename

:在⽂件中提供 NSE 脚本参数。

--script-trace

:显⽰所有发送和接收的数据。

--script-updatedb

:更新脚本数据库。

--script-help=<Lua 脚本>

:显⽰关于脚本的帮助信息。

<Lua 脚本> 是⼀个由逗号分隔的脚本⽂件或脚本类别列表。

-O

:启⽤操作系统检测。

--osscan-limit

:将操作系统检测限制在有希望的⽬标上。

--osscan-guess

:更积极地猜测操作系统。

选项中涉及的 <时间> 单位为秒,或者可以在数值后附加 'ms'(毫秒)、's'(秒)、'm'(分钟)或 'h'(小

(例如 30m)。

-T<0 - 5>

:设置定时模板(数值越⾼速度越快)。

--min-hostgroup/max-hostgroup <⼤⼩>

:并⾏主机扫描组的⼤⼩。

--min-parallelism/max-parallelism <探测数量>

:探测并⾏化。

--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间>

:指定探测往返时间。

--max-retries <尝试次数>

:限制端⼝扫描探测的重传次数。

--host-timeout <时间>

:在经过这段时间后放弃对⽬标的扫描。

--scan-delay/--max-scan-delay <时间>

:调整探测之间的延迟。

--min-rate <数量>

:每秒发送数据包的速度不低于 <数量>。

-f; --mtu <值>

:对数据包进⾏分⽚(可指定 MTU 值)。

-D <诱饵 1, 诱饵 2 [, 我⾃⼰],...>

:⽤诱饵掩盖扫描。

-S <IP 地址>

:伪造源地址。

-e <接⼝>

:使⽤指定的接⼝。

-g/--source-port <端⼝号>

:使⽤给定的端⼝号。

--proxies <url1,[url2],...>

:通过 HTTP/SOCKS4 代理转发连接。

--data <⼗六进制字符串>

:在发送的数据包上附加⾃定义负载。

--data-string <字符串>

:在发送的数据包上附加⾃定义 ASCII 字符串。

--data-length <数字>

:在发送的数据包上附加随机数据。

--ip-options <选项>

:发送带有指定 IP 选项的数据包。

--ttl <值>

:设置 IP ⽣存时间字段。

--spoof-mac <MAC 地址 / 前缀 / ⼚商名称>

:伪造你的 MAC 地址。

--badsum

:发送带有错误 TCP/UDP/SCTP 校验和的数据包。

-oN/-oX/-oS/-oG <⽂件>

:分别以普通、XML、脚本⼩⼦、可搜索格式将扫描结果输出到给定的⽂件名 中。

-oA <基本名>

:同时以三种主要格式输出。

-v

:提⾼详细程度级别(使⽤ -vv 或更⾼级别可获得更强效果)。

-d

:提⾼调试级别(使⽤ -dd 或更⾼级别可获得更强效果)。

--reason

:显⽰端⼝处于特定状态的原因。

--open

:只显⽰开放(或可能开放)的端⼝。

--packet-trace

:显⽰所有发送和接收的数据包。

--iflist

:打印主机接⼝和路由(⽤于调试)。

--append-output

:追加到指定的输出⽂件⽽不是覆盖它们。

--resume <⽂件名>

:恢复⼀个中断的扫描。

--noninteractive

:禁⽤通过键盘进⾏的运⾏时交互。

--stylesheet <路径 / URL>

:将 XML 输出转换为 HTML 的 XSL 样式表。

--webxml

:参考 Nmap.org

上的样式表以获得更具可移植性的 XML。

--no-stylesheet

:防⽌将 XSL 样式表与 XML 输出关联。

-6

:启⽤ IPv6 扫描。

-A

:启⽤操作系统检测、版本检测、脚本扫描和追踪路由。--datadir <⽬录名>

:指定⾃定义 Nmap 数据⽂件的位置。

--send-eth/--send-ip

:使⽤原始以太⽹帧或 IP 数据包发送。

--privileged

:假设⽤⼾具有完全的特权。

--unprivileged

:假设⽤⼾没有原始套接字特权。

-V

:打印版本号。

-h

:打印此帮助概要⻚⾯。

nmap -v -A scanme.nmap.org

:详细地对 scanme.nmap.org

进⾏操作系统检测、版本检测、脚

本扫描和追踪路由。

nmap -v -sn 192.168.0.0/16 10.0.0.0/8

:详细地对 192.168.0.0/16 和 10.0.0.0/8 ⽹段进⾏ Ping 扫描

(不进⾏端⼝扫描)。

nmap -v -iR 10000 -Pn -p 80

:详细地随机选择 10000 个⽬标,将所有⽬标视为在线状态,只扫描端⼝ 80。

更多选项和示例请参阅手册页 https://nmap.org/book/man.html

使用nmap进行分阶段分任务的扫描,避免流量过大,让目标服务器发现

主机发现

nmap -sn 127.0.0.0/24

端口扫描

nmap -sT --min-rate 10000 -p- 127.0.0.1 -oA nmapsc/ports

1.扫描⽅式:-sS与-sT

-sS以SYN包的形式,-sT以TCP三次握⼿的形式

-sS扫描速度更快但不稳定,-sT相对较慢但是稳定

2.--min-rate 指定最⼩发包速率

3.-p 指定ip 后⾯的-是 1-65535端⼝的缩写,不写的话就会扫描nmap默认的⼏个端⼝

4.-o 格式化输出 后⾯的A是all的缩写,或将所有形式输出 但是⼀般的不会有多种形式输出

详细信息扫描

nmap -sT -sV -sC -O -p22,80,443 127.0.0.1 -oA nmapsc/detail

该扫描是比较重的扫描所以指定发现端口。

1.-sV 扫描各服务的版本2.-sC 使⽤nmap默认脚本进⾏扫描

3.-O 扫描⽬标机器的操作系统

udp扫描

namp -sU --top-ports 20 127.0.0.1 -oA nmapsc/udp

该扫描是对UDP协议进行发现,避免遗漏信息丢失攻击面

1.-sU 使⽤UDP的扫描⽅式

2.--top-ports 20 针对常⻅的20个端⼝进⾏扫描

脚本扫描

nmap --script=vuln -p22,80,443 127.0.0.1 -oA nmapsc/vuln

使用脚本进行漏洞扫描,vuln是nmap中默认扫描漏洞的一个常用脚本。

nmap -sn 192.169.3.0/24 其实是封装的系统的ping命令

for i in {1..254};do ping -c 1 -W 1 192.168.3.$i;done

解析:-c ->count数量 1 -W ->超时时间 1

bash循环语法: for i in {};do 命令;done

执行后发现Ctrl+c并不能停止,这里涉及到控制台信号的知识

可以按下Ctrl+z让这些命令放到后台去执行

然后输入命令 kill -9 %1 (%1是指最近执行的命令,结束进程)

进一步进行筛选优化执行(使用grep进行特征筛选)

for i in {1..254};do ping -c 1 -W 1 192.168.3.$i | grep from;done

1. 使用进行旧版nc端口扫描

nmap --min-rate 1000 -p- 192.168.3.100

使用旧版nc进行端口扫描

kali中旧版nc使用 (并用来进行端口扫描) (1-65535中找就相当于大海捞针所以就必须对信息进行过滤)

nc.teaditional -vv -z 192.168.3.120 1-65535

解析: -vv 详细信息输出 -z 零数据传输

所以需要搜索出一些开放的端口和一些未开放的端口,筛选出文本特征,然后利用grep进行筛选

nc.teaditional -vv -z 192.168.3.120 1-65535 2>&1| grep -v refused

解析: grep 后面的 -v ,是反向的意思,就是将匹配到refused的数据删除。

2>&1 是⼀个重定向操作,它的作⽤是将标准错误输出 2 )重定向到标准输出 1 )的位置。这样做的⽬的是把原本会输出到标准错误输出(通常是显⽰错误信息等)的内容也合并到标准输出流中,以 便后续可以统⼀进⾏处理。

2.使用伪设备进行端口扫描

for i in {1..65535};do (echo < /dev/tcp/192.168.3.120/$i) &>/dev/null && printf " [+]The Open Port is:%d " "$i" || printf ".";done

解析:&& 需要前面的命令成功执行才会执行后面的命令


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号