September 3, 2015

Nmap 网络发现cli备忘指南

Nmap(网络映射器),用于网络发现的端口扫描程序之神,以及在渗透测试的初始阶段进行大多数安全枚举的基础。该工具由Fyodor AKA Gordon Lyon编写和维护。

Nmap显示目标计算机上的公开服务以及其他有用信息,例如verion和OS检测。

Nmap出现在了已上映的12部电影中,包括The Matrix Reloaded,Die Hard 4,Girl With the Dragon Tattoo和The Bourne Ultimatum。

Nmap Trinity

Nmap简而言之

  • 主机发现
  • 端口发现/枚举
  • 服务发现
  • 操作系统版本检测
  • 硬件(MAC)地址检测
  • 服务版本检测
  • 漏洞/利用漏洞检测,使用Nmap脚本(NSE)

Nmap示例

基本Nmap扫描示例,通常在枚举的第一阶段使用。

命令描述

nmap -sP 10.0.0.0/24

Ping扫描网络,列出响应ping的计算机。

nmap -p 1-65535 -sV -sS -T4 target

完整的TCP端口扫描使用服务版本检测 - 通常是我的第一次扫描,我发现T4比T5更精确,仍然“非常快”。

nmap -v -sS -A -T4 target

打印详细输出,运行隐形syn扫描,T4计时,操作系统和版本检测+ traceroute和针对目标服务的脚本。

nmap -v -sS -A -T5 target

打印详细输出,运行隐形syn扫描,T5计时,操作系统和版本检测+ traceroute和针对目标服务的脚本。

nmap -v -sV -O -sS -T5 target

打印详细输出,运行隐形同步扫描,T5计时,操作系统和版本检测。

nmap -v -p 1-65535 -sV -O -sS -T4 target

打印详细输出,运行隐形syn扫描,T4计时,操作系统和版本检测+全端口范围扫描。

nmap -v -p 1-65535 -sV -O -sS -T5 target

打印详细输出,运行隐形同步扫描,T5定时,操作系统和版本检测+全端口范围扫描。

激进的扫描时间更快,但可能会产生不准确的结果!

T5使用非常激进的扫描时序并可能导致错过端口,如果您需要快速结果,T4是更好的折衷方案。

Nmap从文件扫描

命令描述

nmap -iL ip-addresses.txt

扫描IP地址列表,您可以在之前/之后添加选项。

Nmap输出格式

命令描述

nmap -sV -p 139,445 -oG grep-output.txt 10.0.1.0/24

将“grepable”输出输出到文件,在此示例中为Netbios服务器。

例如,输出文件可以为“打开”格式化。

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

将nmap输出导出为HTML报告。

Nmap Netbios示例

命令描述

nmap -sV -v -p 139,445 10.0.0.1/24

查找子网上的所有Netbios服务器

nmap -sU --script nbstat.nse -p 137 target

Nmap显示Netbios名称

nmap --script-args=unsafe=1 --script
smb-check-vulns.nse -p 445 target

Nmap检查Netbios服务器是否容易受到MS08-067的攻击

--script-args = unsafe = 1有可能导致服务器/服务崩溃

运行此命令时很糟糕。

Nmap Nikto Scan

命令描述

nmap -p80 10.0.1.0/24 -oG - | nikto.pl -h -

扫描端口80上的http服务器,并通过管道进入Nikto进行扫描。

nmap -p80,443 10.0.1.0/24 -oG - | nikto.pl -h -

扫描端口80,443上的http / https服务器,并管道进入Nikto进行扫描。

Nmap Cheatsheet

目标规格

Nmap允许主机名,IP地址和子网。

例如blah.highon.coffee,nmap.org / 24,192.168.0.1; 10.0.0-255.1-254

命令描述

-iL

inputfilename:从主机/网络列表输入

-iR

num hosts:选择随机目标

--exclude

host1 [,host2] [,host3],...:排除主机/网络

--excludefile

exclude_file:从文件中排除列表

主机发现

命令描述

-sL

列表扫描 - 只列出要扫描的目标

-sn

Ping扫描 - 禁用端口扫描

-Pn

将所有主机视为在线 - 跳过主机发现

-PS/PA/PU/PY[portlist]

TCP SYN / ACK,UDP或SCTP发现到给定端口

-PE/PP/PM

ICMP echo,timestamp和netmask请求发现探测器

-PO[protocol list]

IP协议Ping

-n/-R

永远不要解析DNS /始终解决[默认:有时]

扫描技术

命令描述

-sS
-sT
-sA
-sW
-sM

TCP SYN扫描
连接扫描
ACK扫描
窗口扫描
Maimon扫描

-sU

UDP扫描

-sN
-sF
-sX

TCP空扫描
FIN扫描
Xmas扫描

--scanflags

自定义TCP扫描标志

-sI zombie host[:probeport]

空闲扫描

-sY
-sZ

SCTP INIT扫描
COOKIE-ECHO扫描

-sO

IP协议扫描

-b "FTP relay host"

FTP反弹扫描

端口规格和扫描顺序

命令描述

-p

指定端口,例如-p80,443或-p1-65535

-p U:PORT

使用Nmap扫描UDP端口,例如-p U:53

-F

快速模式,扫描比默认扫描更少的端口

-r

连续扫描端口 - 不要随机化

--top-ports "number"

扫描“号码”最常见的端口

--port-ratio "ratio"

扫描端口比“比率”更常见

服务版本检测

命令描述

-sV

探测开放端口以确定服务/版本信息

--version-intensity "level"

设置从0(亮)到9(尝试所有探针)

--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

在文件中提供NSE脚本args

--script-trace

显示发送和接收的所有数据

--script-updatedb

更新脚本数据库

--script-help="Lua scripts"

显示有关脚本的帮助

OS检测

命令描述

-O

启用OS检测

--osscan-limit

将OS检测限制为有希望的目标

--osscan-guess

更积极地猜测操作系统

时间和性能

采用TIME的选项以秒为单位,或者将“ms”(毫秒),“s”(秒),“m”(分钟)或“h”(小时)附加到值(例如30米)。

命令描述

-T 0-5

设置时序模板 - 更高更快(不太准确)

--min-hostgroup SIZE
--max-hostgroup SIZE

并行主机扫描组大小

--min-parallelism NUMPROBES
--max-parallelism NUMPROBES

探针并行化

--min-rtt-timeout TIME
--max-rtt-timeout TIME
--initial-rtt-timeout TIME

指定探测往返时间

--max-retries TRIES

端口扫描探测重传的上限数量

--host-timeout TIME

这么长时间后放弃目标

--scan-delay TIME
--max-scan-delay TIME

调整探针之间的延迟

--min-rate NUMBER

发送数据包的速度不低于每秒NUMBER

--max-rate NUMBER

发送数据包的速度不会超过每秒NUMBER

防火墙IDS Evasion和Spoofing

命令描述

-f; --mtu VALUE

片段包(可选择具有给定的MTU)

-D decoy1,decoy2,ME

用诱饵披露扫描

-S IP-ADDRESS

欺骗源地址

-e IFACE

使用指定的接口

-g PORTNUM
--source-port PORTNUM

使用给定的端口号

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

通过HTTP / SOCKS4代理中继连接

--data-length NUM

将随机数据附加到已发送的数据包

--ip-options OPTIONS

使用指定的ip选项发送数据包

--ttl VALUE

将IP时间设置为实时字段

--spoof-mac ADDR/PREFIX/VENDOR

欺骗NMAP MAC地址

--badsum

使用伪TCP / UDP / SCTP校验和发送数据包

Nmap输出选项

命令描述

-oN

输出正常

-oX

输出到XML

-oS

剧本Kiddie / 1337说...叹息

-oG

输出greppable - 易于grep nmap输出

-oA BASENAME

一次输出三种主要格式

-v

增加详细级别使用-vv或更高级别以获得更好的效果

-d

增加调试级别使用-dd或更多以获得更好的效果

--reason

显示端口处于特定状态的原因

--open

仅显示打开或可能打开的端口

--packet-trace

显示发送/接收的所有数据包

--iflist

打印主机接口和路由以进行调试

--log-errors

将错误/警告记录到普通格式的输出文件中

--append-output

附加到而不是clobber指定的输出文件

--resume FILENAME

恢复中止扫描

--stylesheet PATH/URL

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

--webxml

从Nmap.Org引用样式表以获得更多可移植XML

--no-stylesheet

防止与XML输出相关联的XSL样式表

其他Nmap选项

命令描述

-6

启用IPv6扫描

-A

启用操作系统检测,版本检测,脚本扫描和跟踪路由

--datedir DIRNAME

指定自定义Nmap数据文件位置

--send-eth
--send-ip

使用原始以太网帧或IP数据包发送

--privileged

假设用户具有完全特权

--unprivileged

假设用户缺少原始套接字权限

-V

显示nmap版本号

-h

显示nmap帮助屏幕

Nmap枚举示例

以下是Nmap枚举的真实示例。

枚举Netbios

以下示例枚举目标网络上的Netbios,可以通过修改端口/ NSE脚本将相同的进程应用于其他服务。

检测子网上所有公开的Netbios服务器。

Nmap找到暴露的Netbios服务器

root:〜# nmap -sV -v -p 139,445 10.0.1.0/24
启动Nmap 6.47(http://nmap.org)于2014-12-11 21:26 GMT
Nmap扫描报告,用于nas.decepticons 10.0.1.12
主机启动(延迟0.014秒)。
端口状态服务版本139 / tcp open netbios-ssn Samba smbd 3.X(工作组:MEGATRON)445 / tcp open netbios-ssn Samba smbd 3.X(工作组:MEGATRON)执行服务检测。请在http://nmap.org/submit/上报告任何不正确的结果。完成Nmap:在28.74秒内扫描256个IP地址(1个主机) </ p>







Nmap找到Netbios名称。

Nmap找到暴露的Netbios服务器

root:〜# nmap -sU --script nbstat.nse -p 137 10.0.1.12
启动Nmap 6.47(http://nmap.org)于2014-12-11 21:26 GMT
Nmap扫描报告,用于nas.decepticons 10.0.1.12
主机启动(延迟0.014秒)。
端口状态服务版本137 / udp open netbios-ns 主机脚本结果:| _nbstat:NetBIOS名称:STARSCREAM,NetBIOS用户:未知,NetBIOS MAC:未知(未知)完成Nmap:在28.74秒内扫描256个IP地址(1个主机) </ p>






检查Netbios服务器是否容易受到MS08-067的攻击

Nmap检查MS08-067

root:〜# nmap --script-args = unsafe = 1 --script smb-check-vulns.nse -p 44510.0.0.1
ie6winxp.decepticons(10.0.1.1)的Nmap扫描报告
主机已启动(延迟时间为0.00026秒)。
PORT STATE SERVICE
445 / tcp open microsoft-ds
主机脚本结果:
| smb-check-vulns:
| MS08-067:VULNERABLE
| Conficker:可能是CLEAN
| regsvc DOS:不容易
| SMBv2 DoS(CVE-2009-3103):非脆弱
| _ MS07-029:无服务(Dns服务器RPC服务无效)
Nmap完成:1个IP地址(1个主机)在5.45秒内扫描
</ p>

枚举期间收集的信息表明目标很容易受到MS08-067的攻击,开发将确认它是否容易受到MS08-067的攻击。