一、nmap参数:

nmap扫描类型[设备地址]

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

**输出参数 i 字母开头,输出参数 o开头 //i/o

参数:

-iL //通过文件传地址

-iR //随机生成公网地址扫描 后跟随机生成的数目 特殊:后跟0 代表一直扫

--exclude //排除主机或者网段

--exclude //排除文件中的地址

输出的格式参数:

-o 标准 xml G 三种模式输出

-oN 内容输出到文件 == linux重定向到文件内

-oX xml 输出

-oS

-oG

-oA

输出详细和调试设置:

-v //输出详细信息 v /vv /vvv v越多信息越详细 上线3个v

-d[0-9] // 想输出debug内容的越多 数字就写高 最高9

--packet-trace //nmap发的包和收的包打印出来,报头也可打印出来

--open

--iflist

--log-errors

--reason

1,判断网络设备是否在线 ping

ping的类型

-sL //s:扫描 scan, L 列出 ,不做扫描 只完成DNS解析和网址的转换

-sP // ping 两个动作 1 ping ,2 发起ICMP请求 echo请求和TCP请求的ACK请求80端口 ,两个动作有一个返回就说明主机是在线的

-Pn //所有P开头都是ping ;不是sP ping动作的意思,是正常发起的ping

-PN //扫描时不用ping(不管防火墙是否禁止都是进行下一步,正常情况下ping不通不扫 换下一个地址,过。)

-PS //(TCP SYN Ping)发起TCP协议SYN标记的空包,默认扫描80端口

-PA (TCP ACK Ping)发起TCP协议ACK标记的空包,默认扫描80端口

-PU UDP 扫描 ,默认骚31338

-PO 支持多种协议,不加默认发组包

-PR //ARP ping,可查局域网,可查就局域网有多少台机器在线

其他设置项:

--traceroute

-n //不做DNS解析,默认会做DNS解析 反应慢,扫描后还会做DNS解析 解析玩才会扫第二个

-R //DNS解析所有地址,默认不解析不在线的IP

-system-dns //使用系统DNS

--dns-servers //指定其他DNS解析

2,udp扫描(-sU)

-sUV能增加udp扫描的准确性

返回值 端口状态

任何从udp返回的数据 open

没有任何返回(多次重传之后) open|filtered

ICMP端口为到达错误(类型3,代码3) closed

其他ICMP端口为到达的错误(类型3,代码1,2,9,10,或者13) filtered

3,-sO 获取服务器支持哪些协议

返回值 NMAP显示状态

任何来自目标主机的协议返回 open

ICMP协议为到达(类型3,代码2) close

其他ICMP端口为到达的错误(类型3,代码2) filtered

无响应(多次重复)

4,nmap优化,优化的具体内容

nmap -PN -T4 -A -d -vv scanme.nmap.org

-PN 默认扫描一台机器的top一千个端口

1.逐步分解任务

1.首先确定是否在线 -sP

2.UDP和TCP扫描不要同时进行

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

1.-F(快速扫描100个常用端口)

2.--top-port //扫描前多少个

3.-p

3.跳过高级扫描功能

1.-A

2.-sV //判断对应端口应用版本

3.-sC //调默认的脚本 大概20多个

4.-O //识别操作系统 识别协会栈 耗时,

5.--traceroute

6.可能的话关闭DNS解析 -n

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

功能 参数:

一次扫描多个主机(对主机探测有没有,-sP) --min-hostgroup,--max-hostgroup nmap把机器分成组扫

一次开多个并行扫描 --min-parallelism,--max-parallelism

主机在线和重传等待 --min-rtt-timeout,--max-rtt-timeout,

--initial-rtt-timeout(可以使用单位s,m,h)

最大重传次数 --max-retries

每个主机最大的耗时 --host-timeout(可以使用单位s,m,h)

nmap 扫描端口状态

1,open 端口开启,有程序监听次端口 //数据已经传给了主机,并且主机有明确的返回值

2,closed,端口关闭,数据能到达主机,但是没有程序监听次端口 //数据已经传给了主机,并且主机有明确的返回值

3,filtered,数据未能到达主机,有SNMP返回但不是filtered主机可能是前面的路由器,或者是什么没有返回

4,unfiltered,数据能到达主机,但是Nmap无法判断端口开启还是关闭 //数据已经传给了主机,并且主机有明确的返回值

5,open|filtered,主机在,端口没有返回值,主要出现在UDP,IP,FIN,NUll和xmas扫描 //有点感觉

6,closed|filtered,只出现在IP ID idle扫描下(欺骗性扫描)通过百度扫淘宝 //有点感觉

-O :启动操作系统识别

--osscan-limit //限定只识别有端口开放的主机,提高-O和-A参数时的扫描速度

--osscan-guest //给nmap建议的操作系统。类似于sqlmap的参数 //如告诉nmap是linux nmap扫描时会往linux上靠,省略‘猜’过程 提高速度

--max-os-tries //设置重试次数(默认为5次),提高准确性或者是提高速度可改值

nmap输出

-oN 将标准输出直接写入指定的文件

-oX 输出xml文件

-oS 将所有的输出都改为大写

-oG 输出便于通过bash或者perl处理的格式,非xml

-oA BASENAME 可将扫描结果以标准格式、XML格式和Grep格式一次性输出

-v 提高输出信息的详细度

-d level 设置debug级别,最高是9

--reason 显示端口处于带确认状态的原因

--open 只输出端口状态为open的端口

--packet-trace 显示所有发送或者接收到的数据包

--iflist 显示路由信息和接口,便于调试

--log-errors 把日志等级为errors/warings的日志输出

--append-output 追加到指定的文件

--resume FILENAME 恢复已停止的扫描

--stylesheet PATH/URL 设置XSL样式表转换XML输出

--webxml 从namp.org得到XML的样式

--no-sytlesheet 忽略XML声明的XSL样式表

二、基础操作:

快速扫描:

nmap 10.9.54.1

快速扫描多个目标

nmap 10.9.54.51 10.9.54.52

nmap -iL iplist.txt //从文件中读取需要扫描的IP列表

详细输出扫描

nmap -vv 10.9.54.51

指定端口和范围扫描

nmap -p 8080,50-100 10.9.54.51

扫描某个IP的所有子网主机(存活主机发现)

nmap 10.9.54.1/24

扫描某个网段存活主机

nmap -sP 10.9.54.1/24 // nmap -sP 10.9.54.1-255

扫描除过某一个ip外的所有子网主机

nmap 10.9.54.1/24 -exclude 10.9.54.53

扫描除过某一个文件中的ip外的子网主机

nmap 10.9.54.1/24 -excludefile iplist.txt

扫描某个网段存活主机

nmap -sP 10.9.54.1/24

SYN半开放扫描 //之所以说半开放扫描因为这种技术使nmap不需要通过完整的三次握手就能获得远程主机的信息。Nmap发送SYN包到远程主机但是它不会产生任何会话,因此不会在目标主机上产生任何日志记录,如果Nmap命令中没有指出扫描类型, 默认的就是Tcp SYN.但是它需要root/administrator权限。

nmap -sS 10.9.54.51

sT TCP扫描

nmap -sT 10.9.54.51

sU UDP扫描 //这种扫描技术用来寻找目标主机打开的UDP端口,它不需要发送任何的SYN包因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机并等待响应,如果返回ICMP不可达的错误消息说明端口是关闭的如果得到正确的适当的回应说明端口是开放的.

nmap -sU 10.9.54.51

sV Version版本检测扫描

nmap -sV 10.9.54.53

O OS操作系统类型的探测

nmap -O 10.9.54.53

osscan-guess 猜测匹配操作系统 //–osscan-guess 猜测认为最接近目标的匹配操作系统类型。

nmap -O --osscan-guess 10.9.54.53

PN NO ping扫描 //在目标主机设置禁止ping的时候可用,-PN命令告诉Nmap不用ping远程主机。使用-PN参数可以绕过PING命令, 但是不影响主机的系统的发现。

nmap -O -PN 10.9.54.53

T 设置时间模板 //0,1 模式用于IDS躲避,2模式降低了扫描 速度以使用更少的带宽和目标主机资源。

3 是默认参数 未做优化,4 模式假设用户具有合适及可靠的网络从而加速扫描

5 模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。

nmap -sS -T 10.9.54.51

路由跟踪扫描

nmap -traceroute www.baidu.com

-A ,OS识别,版本探测,脚本扫描和traceroute综合扫描

nmap -A 10.9.54.51

命令混合式扫描 //命令混合扫描可以做到类似参数-A所完成的功能但又能细化到我们所需特殊要求,比较灵活

nmap -vv -p1-100,3306,3389 -O -traceroute 10.9.54.51

输出格式

//扫描的结果输出到屏幕,同时会存储一份到grep-output.txt

nmap -sV -p 139,445 -oG grep-output.txt10.9.54.0/24

//扫描结果输出为html

nmap -sS -sV -T5 10.9.54.51 --webxml -oX - | xsltproc --output file.html

二、nmap高级用法之脚本使用:

nmap官方脚本文档: https://nmap.org/nsedoc/

脚本14大类

  • auth: 负责处理鉴权证书绕开鉴权的脚本
  • broadcast: 在局域网内探查更多服务开启状况如dhcp/dns/sqlserver等服务
  • brute: 提供暴力破解方式针对常见的应用如http/snmp等
  • default: 使用-sC或-A选项扫描时候默认的脚本提供基本脚本扫描能力
  • discovery: 对网络进行更多的信息如SMB枚举、SNMP查询等
  • dos: 用于进行拒绝服务攻击
  • exploit: 利用已知的漏洞入侵系统
  • external: 利用第三方的数据库或资源例如进行whois解析
  • fuzzer: 模糊测试的脚本发送异常的包到目标机探测出潜在漏洞
  • intrusive: 入侵性的脚本此类脚本可能引发对方的IDS/IPS的记录或屏蔽
  • malware: 探测目标机是否感染了病毒、开启了后门等信息
  • safe: 此类与intrusive相反属于安全性脚本
  • version: 负责增强服务与版本扫描Version Detection功能的脚本
  • vuln: 负责检查目标机是否有常见的漏洞Vulnerability如是否有MS08_067

常见参数:

-sC 根据端口识别的服务,调用默认脚本

--script=”Lua scripts” 调用的脚本名

--script-args=n1=v1,[n2=v2] 调用的脚本传递的参数

--script-args-file=filename 使用文本传递参数

--script-trace 显示所有发送和接收到的数据

--script-updatedb 更新脚本的数据库

--script-help=”Lua script” 显示指定脚本的帮助

扫描服务器的常见漏洞

nmap --script vuln

检查ftp是否开启匿名登录

nmap --script ftp-anon

扫描mysql是否有空密码

nmap -p 3306 --script mysql-empty-password.nse -v

暴力破解数据库密码

nmap -p 3306 --script mysql-brute.nse -v

nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt

nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL

nmap -p 5432 --script pgsql-brute

子域名暴力破解

nmap --script dns-brute www.baidu.com

......

yum安装的nmap脚本存放在 /usr/share/nmap/scripts/

防火墙/IDS躲避,哄骗

-f; --mtu value 指定使用分片、指定数据包的MTU.

-D decoy1,decoy2,ME 使用诱饵隐蔽扫描

-S IP-ADDRESS 源地址欺骗

-e interface 使用指定的接口

-g/ --source-port PROTNUM 使用指定源端口

--proxies url1,[url2],... 使用HTTP或者SOCKS4的代理

--data-length NUM 填充随机数据让数据包长度达到NUM

--ip-options OPTIONS 使用指定的IP选项来发送数据包

--ttl VALUE 设置IP time-to-live域

--spoof-mac ADDR/PREFIX/VEBDOR MAC地址伪装

--badsum 使用错误的checksum来发送数据包

10.1.1.0/24 = 10.1.1.1-10.1.1.255 #c段扫描

10.1.1.0/16 = 10.1.1.1-10.1.255.255 #b段扫描

10.1.1.0/8 = 10.1.1.1-10.255.255.255 #a段扫描