Nmap命令详解

Nmap(Network mapper)命令详解

一、Nmap工作原理

Nmap使用TCP/IP协议栈指纹准确地判断目标主机的操作系统类型。

Nmap TCP/IP 协议栈指纹:

T1	发送TCP数据包(Flag=SYN)到开放TCP端口
T2	发送一个空的TCP数据包到开放的TCP端口
T3	发送TCP数据包(Flag=SYN,URG,PSH,FIN)到开放的TCP端口
T4	发送TCP数据包(Flag=ACk)到开放的TCP端口
T5	发送TCP数据包(Flag=SYN)到关闭的TCP端口
T6	发送TCP数据包(Flag=ACk)到开放的TCP端口
T7	发送TCP数据包(Flag=URG,PSH,FIN)到开放的TCP端口

Nmap对主机进行一系列的测试,利用测试结果建立相应主机的Nmap指纹,然后Nmap会对指纹进行匹配,最终住处相应的结果。

二、语法

Nmap 【空格】 【选项|多选项|协议】 【空格】【目标】

所有选项和命令以及选项参数都是用空格分割,有时候选项和参数可以不用空格分隔,如-p80

三、Nmap命令

1、主机发现

nmap -A 【目标】 #全面扫描

nmap 192.168.1.1-100 #扫描指定网段

nmap -sP #ping扫描

nmap -P0 【协议1,协议2】 #无ping扫描(数字0,而不是字母O),无ping扫描可以在目标主机禁ping时使用。

Nmap支持的协议编号:
①TCP:对应协议编号6
②ICMP:对应协议编号1
③IGMP:对应协议编号2
④UDP:对应协议编号17

nmap -PS #TCP SYN ping扫描,用于目标防火墙拦截ACK包

nmap -PA #TCP ACK ping扫描,用于目标防火墙拦截SYN包

nmap -PU #UDP ping扫描,发送一个空的UDP包,默认端口40125.如果目标主机响应则返回ICMP端口不可达错误,如果目标主机不存活则返回各种ICMP错误信息

nmap -PE;-PP;-PM #ICMP ping types 扫描。Nmap发送一个ICMP type8(回显请求)报文到目标IP,从运行的主机得到一个type 0(回显响应)报文。-PE选项简单来说是通过向目标发送ICMP Echo数据包来探测主机是否在线,因为许多主机的防火墙禁止这些报文,所以仅仅ICMP扫描对于互联网上的目标通常是不够的。但对于系统管理员监视一个内部往来,它可能是一个有效的途径。-PE打开回显请求功能。-PP选项是ICMP时间戳ping扫描,虽然大多数防火墙配置不允许ICMP Echo请求,但由于配置不当可能回复ICMP时间戳请求,所以可以使用ICMP时间戳来确定主机是否存活。-PM选项可以进行ICMP地址掩码Ping扫描。这种扫描会试图用备选的ICMP登机ping指定主机,通常有不错的穿透防火墙的效果。

nmap -PR #ARP ping扫描,在内网中最高效

nmap -n #禁止DNS反向解析,如果单纯扫描一段IP,该选项可以大幅度减少目标主机响应时间

nmap -R -sL *.172.156.75/24 #反向解析域名,该选项多用于绑定域名的服务器主机上。例如在扫描一个C段的时候,我们可以更清楚在那一段IP是哪个存在哪些网站。

nmap -system-dns #使用系统域名解析器

nmap -sL #列表扫描

nmap -traceroute #路由跟踪

nmap -PY #SCTP INIT ping扫描

nmap -6 #扫描IPv6地址

2、端口扫描

Nmap 6个端口状态:

OPEN:开放
Close:关闭
Filtered:被过滤,通常被防火墙或路由规则拦截,也有可能因为网络堵塞造成
Unfiltered:未过滤,可以访问,但无法判断开启还是关闭。换一种扫描方式,进一步确认
Openfiltered:开放还是过滤的。换一种扫描方式,进一步确认
Closefiltered:不确定是关闭的还是被过滤的。只出现在IPID idle扫描中

-T #时序选项,通常配合-F选项。0~5选项,速度由快到慢

-T0	非常慢的扫描,用于IDS逃避
-T1	缓慢的扫描,用于IDS逃避
-T2	降低速度以降低对带宽的消耗,不常用
-T3	默认,根据目标反应自动调整时间
-T4	快速扫描,常用,需要在很好的网络环境下进行,请求可能淹没目标
-T5	极速扫描,牺牲准确度来提高速度

-F #快速扫描,只扫描有效的端口。在nmap-services包含了默认扫描的端口。用–datadir指定自己的nmap-services文件。

-r #排序

-top-ports #开发概率最高的1000个TCP端口(nmap -top-ports 100 192.168.1.1 扫描100个高概率端口)

-port-ratio #与-top-ports类似

-p #端口扫描顺序。注意,既扫描TCP又扫描UDP,必须指定-sU以及至少一个TCP扫描类型(-sS,-sF,-sT)

-sS #TCP SYN扫描。SYN扫描比较隐蔽,一般很难被防火墙发现,因为不会进行TCP连接。通常称为半开放扫描,因为不会完全的TCP连接即3次握手。(原理:目标端口开放,Nmap向目标主机发送一个SYN包,请求连接,目标主机接收后响应一个SYN/ACK包,当Nmap收到响应后,向目标发送一个RST代替ACK包,连接结束,此时3次握手并没有完成)(RST:异常连接终止)

-sT #TCP连接扫描

-sU #UDP扫描

-sN;-sF;-sX #隐蔽扫描。-sN是NULL扫描,端口关闭响应一个RST包,端口开放,不响应任何信息。-sF是FIN扫描,有更好的穿透效果,端口关闭响应一个RST包,端口开放,不响应任何信息。-sX是Xmas扫描,数据包FIN、PSH、URG标记位置打开,即标志为1,根据RFC 793规定如果目标主机端口开放则会响应一个RST包。如果系统不遵循RFC 793,不管端口开放还是关闭,都会响应RST。(PSH表示有 DATA数据传输,URG表示紧急指针有效)(RFC 793是IETF制定的传输控制协议)

-sM #Maimon扫描。探测报文为FIN/ACK。与上一致

-sA #TCP ACK扫描。缺点:不能确定端口是否开放还是被过滤。

-sW #TCP窗口扫描

–scanflags URGACKPSHRSTSYNFIN #自定义TCP扫描。标志位之间没有空格,默认SYN扫描。

-sl #空闲扫描。不使用自己的IP发送数据包。利用不活跃的僵尸主机反弹给攻击者一个旁通信道,从而进行端口扫描,IDS会把僵尸主机当作攻击者。nmap -sl www.0day.co:80 192.168.1.1

-sO #IP协议扫描(大写字母O)

-b #FTP Bounce扫描。很少被支持,用来躲避防火墙。

端口:断口

3、指纹识别

-sV #版本探测。与-A配合使用更佳

–allports #全端口版本探测

–version-intensity #设置扫描强度。强度0-9,默认7。0最低,9最强

–version-light #轻量级扫描,强度2的快捷方式

–version-all #重量级扫描,强度9的快捷方式

–version-trace #获取详细版本信息

-sR #RCP扫描

-O #操作系统探测。基于TCP/IP协议栈fingerprinting。

–osscan-limit #对指定目标进行操作系统检测,需要配合-O或者-A

–osscan-guess;–fuzzy #推测系统识别,两个选项不一起使用

4、调整报文时间/并行度

–min-hostgroup #调整并行扫描组的大小

–max-hostgroup

–min-parallelism #调整探测报文的并行度。-max设为1,防止对同一主机同一时间多次发送报文

–max-parallelism

—min-rtt-timeout #调整探测报文超时。一般情况下100-1000毫秒。要加单位ms

–max-rtt-timeout

–initial-rtt-timeout

–host-timeout #放弃低速目标主机

–scan-delay #调整探测报文的时间间隔

–max-scan-delay

5、防火墙/IDS逃逸

-f #报文分段

–mtu #指定偏移大小,偏移量必须是8的倍数(MTU最大传输单元)

-D #IP欺骗

语法:nmap -D 【ip1,ip2……|RND:num】 【目标】
	 RND随机生成num个诱饵主机地址
注意:在版本检测或TCP扫描时诱饵无效。
	 诱饵主机必须处于工作状态,否则会导致目标主机的SYN洪水攻击

-sl #源地址欺骗

–source-port #源端口欺骗。同-g

–data-length #指定发包长度。通常TCP包40个字节,ICMP Echo包28个字节,附加随机数据规避防火墙

–randomize-hosts #目标主机随机排序

–spoof-mac #MAC地址欺骗。数字0随机生成一个MAC地址,Vendor Name指定厂商,MAC Address手动指定

6、信息收集

–script 【以下命令】

ip-geolocation-* #IP信息收集。注意CDN。获取IP地址,开放端口等

whois #who is查询。

http-email-harvest #收集email信息

hostmap-ip2hosts #IP反查。获取同IP域名

dns-brute #查询目标域名所有地址,基于暴力破解。默认线程5,dns-brute.threads=10,设置10线程。dns-brute.hostlist指定列表

membase-http-info #检索系统信息

smb-security-mode.nse #后台打印机服务漏洞,需要收到指定端口

smb-check-vulns.nse #SMB漏洞扫描,可以使用U:或T:配合

http-stored-xss.nse #扫描目标网站的xss漏洞

http-sql-injection #扫描目标网站的sql注入漏洞

snmp-win32-services #通过snmp列举windows服务

snmp-win32-users #通过snmp列举windows账户

dns-brute #枚举dns服务器的主机名、

nmap --script dns-brute --script-args dns-brute.domain=baidu.com	#子域名枚举
dns-brute.threads=线程数
dns-brute.hostlist=./hostfile.txt指定需要枚举的列表

http-headers/http-sitemap-generator #http信息收集

nmap -sV -p 80 baidu.com	对http版本进行探测
nmap -p 80 --script=http-headers baidu.com 进行HTTP头信息探测
nmap -p 80 --script=http-sitemap-generator	爬行web目录结构

ssl-enum-ciphers #枚举SSL密钥

ssh-hostkey #拆开SSH服务的密钥信息

nmap -p 22 --script ssh-hostkey --script-args ssh_hostkey=full 127.0.0.1
ssh_hostkey密钥输出格式full、bubble、visual、all。

7、数据库渗透测试

nmap -p3306 --script 【选项】

mysql-databases #列举数据库

nmap -p3306 --script mysql-databases --script-args mysqluser=root,mysqlpass 192.168.1.1

mysql-variables #列举mysql变量

mysql-empty-password #检查空密码

mysql-brute #审计密码

mysql-audit #审计安全配置

oracle-brute #审计Oracle密码

ms-sql-brute #审计msSQL密码

ms-sql-empty-password #检查mssQL空密码

ms-sql-tables #读取mssQL数据

ms-sql-xp-cmdshell #mssQL执行系统命令

nmap -p1433	--script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.passqord=sq,ma-sql-xp-cmdshell.cmd="ipconfig"	192.168.1.1
需要知道端口和账号密码

pgsql-brute #审计PgSQL密码

8、渗透测试

**nmap --script 【选项】 -p 【端口】【目标】

http-brute #审计HTTP身份验证。可以简单破解用户名密码

ftp-brute #审计FTP服务器。暴力破解FTP

nmap --script ftp-brute --script-args userdb=user.txt,passdb=pass.txt -p 21 192.168.1.1
nmap --script=ftp-anon 192.168.1.1	检测是否允许匿名登陆

http-wordpress-brute #审计wordpress程序

http-joomla-brute #审计Joomla程序

pop3-brute #审计邮件服务器

smb-brute.nse #审计SMB口令

vnc-brute #审计VNC服务器

smtp-brute #审计SMTP服务器

stuxnet-detect #检测Stuxnet蠕虫

stuxnet是专门针对工业控制系统编写的破坏性病毒,针对windows和西门子的SIMATIC WinCC系统的7个漏洞,主要通过U盘和局域网传播

snmp-netstat #SNMP服务安全审计

snmp-processes

snmp-win32-services

snmp-brute

四、Zenmap

nmap图形界面,python编写,开源免费

五、Nmap技巧

–send-eth #发送以太网数据,数据链路层

–send-ip #网络层发送

–privileged #假定拥有所有权

–interactive #在交互模式中启动

-V #查看Nmap版本号

-d #设置调试级别,1~9,由低到高

–packet-trace #跟踪发送接受的报文

–iflist #列举端口和路由

-e #指定网络接口

-oG #中断扫描

–resume #继续中断扫描

firewalk #探测防火墙

nmap --script=firewalk --traceroute 192.168.1.1	对目标防火墙规则进行探测

vmauthd-brute #VMWare认证破解

六、Nmap保存和输出

-oN #标准保存

-oX #XML保存

-oS #133t保存

-oG #Grep保存

-oA #保存到所有格式

–append-output #补充保存文件

-oX #转换XML保存

-oX #忽略XML声明的XSL样式表

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在北京敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值