内容简介:转自: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 类型)
SYN扫描
TCP 两次握手(隐藏扫描,速度快,nmap 缺省参数)
nmap -sS -Pn [IP or domain]
-sS SYN 连接扫描(s ==> 哪种类型扫描;S ==> SYN 类型)
ACK 扫描
ACK 扫描,用于确定 TCP 端口是否被防火墙过滤。
nmap -sA -Pn [IP or domain]
-sA ACK 连接扫描(s ==> 哪种类型扫描;A ==> ACK 类型)
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 【每日笔记】【Go学习笔记】2019-01-04 Codis笔记
- 【每日笔记】【Go学习笔记】2019-01-02 Codis笔记
- 【每日笔记】【Go学习笔记】2019-01-07 Codis笔记
- vue笔记3,计算笔记
- Mysql Java 驱动代码阅读笔记及 JDBC 规范笔记
- 【每日笔记】【Go学习笔记】2019-01-16 go网络编程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!