Nmap 笔记

栏目: 编程工具 · 发布时间: 5年前

内容简介:转自:https://vxhly.github.io/2016/09/usage-of-nmap/又补充了点东西。Contents

转自:https://vxhly.github.io/2016/09/usage-of-nmap/

又补充了点东西。

Contents

Nmap 在渗透测试中经常用到,它不仅可以用来确定目标网络上计算机的存活状态,而且可以扫描各个计算机的操作系统、开放端口、服务,还有可能获得用户的证书。熟练掌握 Nmap 的用法,可以极大的提高渗透测试技术。

Nmap命令结构

Scanning Format:

nmap -[option] [IP or domain] -oN [fileName.txt]

Nmap 使用解释

识别系统

Scanning Format:

nmap -O -Pn [IP or domain]

使用 -O 选项,可以获取到被扫描的主机的系统。 -Pn 选项禁用 Nmap 网络发现功能,假定所有系统都是活动的。

完整全面的扫描

如果希望对某台主机进行完整全面的扫描,那么可以使用nmap内置的-A选项。使用了该选项,nmap对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统侦测及调用默认NSE脚本扫描。

nmap –T4 –A –v targethost

其中-A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。

Timing 模板

timing 参数可以指定 nmap 扫描的速度。其中各个选项如下:

* T0 => paranoid 慢速网络扫描,串行扫描,两次扫描间隔 5 分钟。扫描速度极慢。

* T1 => Sneky 慢速网络扫描,串行扫描,两次扫描间隔 15 秒,扫描速度较慢。

* T2 => Polite 中速网络扫描,串行扫描,两次扫描间隔 400 毫秒,扫描速度慢。

* T3 => Normal 中速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度正常。

* T4 => Aggressive 快速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度较快。

* T5 => Normal 快速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度极快。

Scanning Format:

nmap -T[0-5] [IP or domain]

扫描方式

TCP扫描

端口扫描中最稳定的,利用的是 TCP 三次握手。TCP 扫描通常用于收集有关目标的更多信息,但是会和目标主机建立一个完成的 TCP 连接。

nmap -sT -Pn [IP or domain]

-sT TCP 连接扫描(s ==> 哪种类型扫描;T ==> TCP 类型)

Nmap 笔记

SYN扫描

TCP 两次握手(隐藏扫描,速度快,nmap 缺省参数)

nmap -sS -Pn [IP or domain]

-sS SYN 连接扫描(s ==> 哪种类型扫描;S ==> SYN 类型)

Nmap 笔记

ACK 扫描

ACK 扫描,用于确定 TCP 端口是否被防火墙过滤。

nmap -sA -Pn [IP or domain]

-sA ACK 连接扫描(s ==> 哪种类型扫描;A ==> ACK 类型)

Nmap 笔记

UDP 扫描

DHCP,DNS,SNMP,TFTP 等都使用了 UDP 协议;UDP 扫描会评估目标系统上的 UDP 端口,可以确认 UDP 端口是开放还是被防火墙过滤。

nmap -sU -Pn [IP or domain]

-sU UDP 连接扫描(s ==> 哪种类型扫描;U ==> UDP 类型)

-sV UDP 扫描中添加版本扫描信息(V ==> 版本信息)

不存在 -Pn 参数(从 UDP 协议去理解,你发了就 ok 管他收没收到)

扫描IP段

For Example:

nmap 192.168.1.1-255    # 扫描 192.168.1.1-192.168.1.255 所有 IP
nmap 192.168.1.1/24     # 扫描 192.168.1.1-192.168.1.255 所有 IP
nmap -iL IPL.txt        # 扫描 IPL.txt 中保存的所有 IP

输出保存选项

* -oN => 保存为文本文件

* -oX => 保存为 XML 文件

* -oG => 保存为 GREPable 输出

* -oS => 脚本输出

其他更详细的扫描

主机发现

-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。

-sn: Ping Scan 只进行主机发现,不进行端口扫描。

-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。

-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。

-PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。

-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。

--dns-servers <serv1[,serv2],...>: 指定DNS服务器。

--system-dns: 指定使用系统的DNS服务器

--traceroute: 追踪每个路由节点

Nmap 扫描策略

# 适用所有大小网络最好的 nmap 扫描策略

# 主机发现,生成存活主机列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 端口发现,发现大部分常用端口
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 端口发现,发现全部端口,但 UDP 端口的扫描会非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 显示 TCP\UDP 端口
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 侦测服务版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 扫做系统扫描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系统和服务检测
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 扫描 B 段的存活主机
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."

Nmap 躲避防火墙

# 分段
nmap -f

# 修改默认 MTU 大小,但必须为 8 的倍数(8,16,24,32 等等)
nmap --mtu 24

# 生成随机数量的欺骗
nmap -D RND:10 [target]

# 手动指定欺骗使用的 IP
nmap -D decoy1,decoy2,decoy3 etc.

# 僵尸网络扫描, 首先需要找到僵尸网络的IP
nmap -sI [Zombie IP] [Target IP]

# 指定源端口号
nmap --source-port 80 IP

# 在每个扫描数据包后追加随机数量的数据
nmap --data-length 25 IP

# MAC 地址欺骗,可以生成不同主机的 MAC 地址
nmap --spoof-mac Dell/Apple/3Com IP

Nmap 进行 Web 漏洞扫描

cd /usr/share/nmap/scripts/
wget https://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar xzf nmap_nse_vulscan-2.0.tar.gz
nmap -sS -sV --script=vulscan/vulscan.nse target
nmap -sS -sV --script=vulscan/vulscan.nse –script-args vulscandb=scipvuldb.csv target
nmap -sS -sV --script=vulscan/vulscan.nse –script-args vulscandb=scipvuldb.csv -p80 target
nmap -PN -sS -sV --script=vulscan –script-args vulscancorrelation=1 -p80 target
nmap -sV --script=vuln target
nmap -PN -sS -sV --script=all –script-args vulscancorrelation=1 target

Nmap 端口扫描

# 使用诱饵隐蔽扫描 nmap -D RND:10 [target] (生成随机数量的诱饵)
# fargement
# data packed – like orginal one not scan packet
# 使用 auxiliary/scanner/ip/ipidseq 来在僵尸网络中查找IP并使用这些IP进行扫描 — nmap -sI ip target
# nmap –source-port 53 target

nmap -sS -sV -D IP1,IP2,IP3,IP4,IP5 -f –mtu=24 –data-length=1337 -T2 target (随机使用不同的IP进行扫描)
nmap -Pn -T2 -sV –randomize-hosts IP1,IP2
nmap –script smb-check-vulns.nse -p445 target (使用 NSE 脚本)
nmap -sU -P0 -T Aggressive -p123 target (攻击式扫描 T1-T5)
nmap -sA -PN -sN target
nmap -sS -sV -T5 -F -A -O target (版本检测)
nmap -sU -v target (Udp)
nmap -sU -P0 (Udp)
nmap -sC 192.168.31.10-12 (全部使用默认配置)

Nmap参数

# 目标说明

`-iL` 从已有的ip列表文件中读取并扫描

`-iR+扫描数量` 随机选择目标进行扫描

`--exclude+ip` 不扫描此ip

# 主机发现

`-sL` 列出要扫描的ip

`-sn` 不进行端口扫描

`-Pn` 将所有主机都默认为在线,跳过主机发现

`-PS/PA/PU/PY` 使用TCP、SYN/ACK、UDP或SCTP协议去发现端口

`-PE/PP/PM`:使用ICMP响应(echo)、时间戳或子网掩码请求来发现探测

`-PO` 使用IP协议的ping

`-n` 不做DNS解析

`-R` 总是做DNS反向解析

`--dns-servers`指定自定义的DNS服务器

`--system-dns` 使用操作系统的DNS

`--traceroute` 追踪每台主机的跳转路径

# 扫描技术

`-sS/sT/sA/sW/sM`:使用SYN、TCP、全连接Connect()、ACK、Window、Maimon来进行扫描

`-sU` UDP扫描

`-sN/sF/sX` 使用TCP Null(无flag)、FIN、Xmas(FIN+Push+Urgent)扫描

`--scanflags +flags` 自定义TCP扫描的flags

`-sI` 僵尸机扫描

`-sY/sZ` 使用SCTP协议的INIT/COOKIE-ECHO扫描

`-sO` 进行IP协议扫描

`-b <FTP relay host>`:指定FTP中继主机进行FTP反弹扫描 
端口说明和扫描规则 
`-p` 只扫描指定的端口

`--exclude-ports` 不对此端口进行扫描

`-F` 快速模式,扫描比默认端口数量更少的端口

`-r` 有序地扫描端口而不是随机地扫描

`--top-ports <number>` 扫描排名指定的数字前几位的最常用的端口

`--port-ratio <ratio>` 扫描比输入的比例更常用的端口

# 服务、版本探测

`-sV`:探测开启的端口来获取服务、版本信息

`--version-intensity <level>`:设置探测服务、版本信息的强度

`--version-light`:强度为2的探测强度

`--version-all`:强度为9的探测强度

`--version-trace`:将扫描的具体过程显示出来

# 脚本扫描

`-sC`:等同于–script=default

`--script=<Lua scripts>`:指定使用 Lua 脚本进行扫描

`--script-args=<n1=v1,[n2=v2,...]>`:指定脚本的参数

`--script-args-file=filename`:指定提供脚本参数的文件

`--script-trace`:显示全部发送和收到的数据

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

`--script-help=<Lua scripts>`:显示脚本的相关信息

# 系统探测

`-O`:进行系统探测

`--osscan-limit`:限制系统探测的目标,如只探测[Linux系统](https://www.baidu.com/s?wd=Linux%E7%B3%BB%E7%BB%9F&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd)

`--osscan-guess`:更侵略性地猜测系统

# 定时和性能

`-T<0-5>`:设置时序模块,越高越快

`--min-hostgroup/max-hostgroup <size>`:指定最小、最大的并行主机扫描组大小

`--min-parallelism/max-parallelism <numprobes>`:指定最小、最大并行探测数量

`--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>`:指定最小、最大的扫描往返时间

`--max-retries <tries>`:指定最大的重发扫描包的次数

`--host-timeout <time>`:指定超时时间

`--scan-delay/--max-scan-delay <time>`:指定每次探测延迟多长时间,即两次探测之间间隔多少时间

`--min-rate <number>`:最小的发包速率

`--max-rate <number>`:最大的发包速率

# 防火墙、IDS绕过和欺骗

`-f; --mtu <val>`:设置MTU最大传输单元

`-D <decoy1,decoy2[,ME],...>`:伪造多个IP地址和源地址一同发送包,从而隐藏在众多的IP地址中而不易被发现

`-S <IP_Address>`:伪造源地址

`-e <iface>`:使用指定的接口

`-g/--source-port <portnum>`:使用指定的源端口

`--proxies <url1,[url2],...>`:指定代理服务器进行扫描

`--data <hex string>`:在发送包的数据字段中追加自定义的十六进制字符串

`--data-string <string>`:在发送包的数据字段中追加自定义的ASCII字符串

`--data-length <num>`:在发送包的数据字段中追加随机的数据

`--ip-options <options>`:使用指定的IP选项发送包

`--ttl <val>`:设置TTL值

`--spoof-[mac](https://www.baidu.com/s?wd=mac&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd) <mac address/prefix/vendor name>`:伪造源Mac地址

`--badsum`:发送伪造TCP/UDP/SCTP校验和Checksum的数据包

# 输出

`-oN/-oX/-oS/-oG <file>`:分别输出正常、XML、s|

# 杂项

`-6`:扫描IPv6的地址

`-A`:一次扫描包含系统探测、版本探测、脚本扫描和跟踪扫描

`--datadir <dirname>`:指定自定义的[nmap](https://www.baidu.com/s?wd=nmap&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd)数据文件位置

`--send-eth/--send-ip`:使用原始以太网帧或IP数据包发送

`--privileged`:假设用户有全部权限

`--unprivileged`:假设用户缺少原始套接字权限

`-V`:输出版本号

`-h`:输出帮助信息

Referer


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Concurrency on the JVM

Programming Concurrency on the JVM

Venkat Subramaniam / The Pragmatic Bookshelf / 2011-6-1 / USD 35.00

Concurrency on the Java platform has evolved, from the synchronization model of JDK to software transactional memory (STM) and actor-based concurrency. This book is the first to show you all these con......一起来看看 《Programming Concurrency on the JVM》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器