君は春の中にいる、かけがえのない春の中にいる.

你驻足于春色中,于那独一无二的春色之中.

nmap7完全指南

0x00 基本介绍

整合了官网和网上的一些资料,本来是有配图的,但是一想到可能会暴露一些敏感信息,就不摆在这了,不足之处,欢迎交流。

Nmap现在最新的版本是Nmap 7。主要是增加了IPV6和ssl方面的支持。

Nmap,全称Network Mapper,开源网络探测与审计框架。使用构造异常IP包的方式来探测主机服务。

完整的Namp套件包括界面图形化的Zenmap,数据传输、重定向与调试工具Ncat,扫描结果比较器Ndiff以及数据包生成与响应工具Nping。

最常规的Nmap组成指令为

nmap [扫描类型] [选项] [目标]

0x02 参数-【目标】

目标参数可以输入域名、IP、网络等
例如:

www.baidu.com
microsoft.com/24
192.168.0.1
10.0.0-255.1-254

另外还有如下参数可选:

  1. -iL <文件名>,从表单中读取扫描目标。
  2. -iR <主机数量>,选取随机扫描目标,私有段ip、多播ip、未分配使用的ip会被自动跳过,<0>可以指定一个无休止的扫描,如果在一个雨天的午后,你十分无聊的时候,可以运行。
    nmap -Pn -sS -p 80 -iR 0 --open
  3. –exclude <主机1>,<主机2>,跳过部分目标。
  4. –exclude <文件名>,从表单中读取跳过目标。

0x03 参数-【主机发现】

  1. -sL,列表扫描,通过访问DNS的方式得到目标主机的ip。
  2. -sn,不进行端口扫描,ping scan。
  3. -Pn,不进行ping,强行扫描。
  4. -PS <端口列表>,TCP SYN Ping扫描端口
  5. -PA <端口列表>,TCP ACK Ping扫描端口
  6. -PU <端口列表>,UDP Ping
  7. -PY <端口列表>,SCTP INIT Ping
  8. -PE;-PP;-PM,ICMP Ping Types
  9. -PO <协议号>,IP Protocol Ping
  10. -PR,ARP Ping
  11. –disable-arp-pin 不使用ARP ping
  12. –traceroute 探测到达主机的Trace路径
  13. -n 不使用DNS结果
  14. -R 始终使用DNS结果
  15. –system-dns 使用系统的DNS解析,不请求域名服务器
  16. –dns-servers <服务1>,<服务2> 查询的DNS服务器队列

https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers

0x04 参数-【端口扫描】

使用六种状态描述端口状态:

  • open,端口积极接收数据
  • closed,无应用程序监听此端口
  • filtered,端口难以抵达,无法准确判断
  • unfiltered,端口可以抵达,无法准确判断
  • open|filtered,两种状态不确定
  • closed|filtered,两种状态不确定

  1. -sS,TCP SYN scan,默认状态下的扫描模式,半开扫描,扫描快速,动静小。
  2. -sT,TCP connect scan,当没有原始数据包特权时使用,容易被发现。
  3. -sU,UDP scans,扫描UDP服务端口,DNS/SNMP/DHCP
  4. -sY,SCTP INIT scan,SCTP是一种较新的用来替代TCP和UDP的协议,类似于1
  5. -sN;-sF;-sX,TCP NULL, FIN, and Xmas scans,利用RFC 793的一些漏洞来判断端口状态。改变一些特殊标志的比特值。更加隐蔽,可以逃过一些防火墙,但是系统协议必须严格遵守RFC 793。
  6. -sA,TCP ACK scan,不用来判断端口是否打开,用来探测防火墙过滤规则
  7. -sW,TCP Window scan,类似ACK scan,增加不同系统的细节,但是结果不一定可信,甚至有可能正好相反。
  8. -sM,TCP Maimon scan,Uriel Maimon发现的一些BSD的系统在端口打开时会简单的终止包
  9. –scanflags,Custom TCP scan,自己通过TCP标志的设置构造自己的扫描,可以使用:
*URG,紧急指针有效*

*ACK,确认序号有效*

*PSH,接收方应该尽快将这个报文段交给应用层*

*RST,重建连接*

*SYN,同步序号用来发起一个连接*

*FIN,发送端完成发送任务*
  1. -sZ,SCTP COOKIE ECHO scan
  2. -sI :,idle scan,实现真正的盲扫,不会从你的真实IP发送包。使用边信道攻击实现僵尸机攻击。隐蔽性很好。
  3. -sO,IP protocol scan,ip协议扫描。
  4. -b,<主机>,FTP bounce scan,使用FTP代理扫描。因为使用FTP更容易绕过防火墙。

SCTP(Stream Control Transmission Protocol,流控制传输协议)

BSD (Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统

0x05 参数-【端口号】

  1. -p <端口范围>
  2. –exclude-ports <端口范围>
  3. -F,快速扫描常用端口,比默认的端口更少
  4. -r,按顺序扫描,默认情况下Nmap是随机扫描所指定的端口号的
  5. –port-ratio <比例>0-1之间,大于给的比例扫描servuces文件中的端口。
  6. –top-ports <数量>扫描指定数量的熟知端口

    0x06 参数-【服务和版本检测】

  7. -sV,服务版本检测
  8. –allports,版本检测不跳过任何端口,默认情况下会跳过TCP端口9100,因为一些打印机会打印传送到该端口的任何信息。
  9. –version-intensity <强度> 0-9,修改版本扫描检测强度。
  10. –version-light,强度2
  11. –version-all,强度9
  12. –version-trace,显示Nmap的版本识别过程

    0x07 参数-【系统检测】

  13. -O 开启系统检测
  14. –osscan-limit,只检查一定条件的系统,有一个检测到的端口
  15. –osscan-guess,百分比显示可能的系统选项
  16. –max-os-tries,在未能匹配系统时,Nmap会重复检测5次,这个次数可以设置

    0x08 参数-【NSE】

    NSE,Nmap脚本引擎,Nmap里最强大最灵活的特性,允许用户编写LUA语言脚本实现各种测试任务。

目前的脚本类别目录有:


auth,认证-目标系统身份验证
broadcast,广播-广播发现目标
brute,爆破-爆破身份验证
default,缺省-默认调用
discovery,发现-积极发现更多公共注册服务
dos,拒绝服务-DOS攻击
exploit,利用-利用一些漏洞
external,外部-会将数据发送给第三方
fuzzer,模糊测试-随机字段发送包,可以发现一些未被发现的漏洞
intrusive,侵入-风险过高的脚本
malware,恶意程序-测试目标是否被恶意程序感染
safe,安全-风险很低的脚本
version,版本-扩展版本检测功能,不能显式调用
vuln,漏洞-检测特定的已知漏洞

  1. -sC,缺省脚本执行
  2. –script <文件名>|<类别>|<目录>|<表达式>…,可以使用+来强制脚本运行,也可以用 all 来遍历所有脚本,这两个选项要慎重使用

    nmap –script “http-*” 加载所有http前缀的脚本

    nmap –script “not intrusive”

    nmap –script “default or safe”

    nmap –script “default and safe”

  3. –script-args <脚本>=<参数>,给脚本提供参数

  4. –script-args-file <文件名>,从文件提供参数
  5. –script-help <脚本名>,帮助
  6. –script-trace 打印脚本执行过程
  7. –script-updatedb,升级脚本库

    0x09 参数-【时间与性能】

    时间单位:ms s m h

  8. –min(max)-hostgroup <主机数>,调整并行扫描组主机数。

  9. –min(max)-parallelism <探针数>,调整并行探针数。
  10. –min(max,initial)-rtt-timeout <时间>,调整探针超时时间
  11. –max-retries <数量>,指定端口扫描探针最大值,最大重试次数
  12. –host-timeout <时间>,放弃超时主机目标
  13. –scan-delay <时间>,调整探针之间的延迟时间
  14. –min(max)-rate <数字>,调整扫描速率,每秒发送的包数
  15. -T <0-5>时间模板,越大越快

    0x10 参数-【防火墙IDS逃逸】

  16. -f,分隔包碎片
  17. -mtu,指定偏移量分隔包碎片
  18. -D <诱饵><,ME>,使用诱饵掩盖IP
  19. -S < IP >,伪造源地址IP
  20. -e < interface >,使用特定接口发送接收包
  21. –source-port < portnum >,伪造源端口号
  22. –data < hex string >,添加自定义二进制数据到发送包
  23. –data < string >,添加自定义字符串到发送包
  24. –data-length < num >,添加随机数据到发送包
  25. –ip-option < hex string >,用指定的IP选项发送数据包
  26. –ttl < value >,设置存活时间
  27. –randomize-hosts,随机主机目标顺序
  28. –spoof-mac < MAC,prefix,… >伪造MAC地址
  29. –proxies < URL >,通过代理链中继TCP连接
  30. –badsum,发送虚假校验和
  31. –adler32,使用另一种校验和代替CRC32C

    0x11 参数-【输出】

  32. -oN < file >,正常输出
  33. -oX,XML输出
  34. -oS,脚本输出
  35. -oG,已弃用
  36. -oA,全格式
  37. -v < level >,增加Nmap输出普通信息水平
  38. -d < level >,增加调试信息输出水平
  39. –reason,给出原因
  40. –stats-every < time >,每过固定时间打印一次数据
  41. –packet-trace,数据包路径
  42. –open,显示打开的端口
  43. –iflist,列表接口和路径
  44. –append-output,结果添加到输出
  45. –resume ,恢复终止的扫描

    0x12 参数-【混合选项】

  46. -6,开启IPv6扫描
  47. -A,积极扫描策略(-O,-sV,-sC,–traceroute)
  48. –datadir < directoryname > 指定Nmap数据文件
  49. –servicedb < services file >,指定Nmap服务库
  50. –versiondb < service probes file >,指定版本库
  51. –release-memory,推出前释放内存
  52. -V,显示版本号
    参考:

http://nmap.org

实战高级用法

绕过防火墙与脚本使用

原创文章,转载请注明: 转载自零の杂货铺