真·Nmap用法大全

四大基本功能

  1. 主机发现
  2. 端口扫描
  3. 版本侦测
  4. 操作系统侦测

语法

Usage: nmap [Scan Type(s)] [Options] {target specification}

常用选项(options)

扫描选项名称功能
-g指定源端口使用特定源端口发送数据包
-spoofmacMac地址欺骗创建虚拟mac,随机化mac地址
-S源IP地址伪造IP,或指定源IP
-e选择网口选择发送和接收数据的网口
-F快速扫描Nmap-service文件中默认扫描减到100个端口
-p确定端口范围选择扫描端口
-NDNS解析执行反响lookup
-R反向lookup强制反向lookup
-A激进型启用许多扫描选项,版本扫描,脚本扫描等(慎用)
-v冗余信息表示显示冗余信息,在扫描过程中显示扫描细节,从而让用户了解当前的扫描状态
-T<0~5>定时可以加快或者减慢扫描速度,有六个级别,级别越高速度越快,也越容易被WAF或者IDS发现。

优化时间控制选项

优化时间控制选项的功能很强大也很有效但是有些用户会被迷惑。此外往往选择合适参数的时间超过了所需优化的扫描时间。因此Nmap提供了一些简单的方法使用6个时间模板使用时采用-T选项及数字(0~5)或名称。模板名称有paranoid(0)、sneaky(1)、polite(2)、normal(3)、aggressive(4)、insane(5)

  • paranoid、sneaky模式用于IDS躲避
  • polite模式降低了扫描速度及使用更少的带宽和目标主机资源
  • normal为默认模式因此-T3实际上为做任何优化
  • aggressive模式假设用户具有合适及可靠的网络从而加速扫描
  • nsane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性

1.主机发现

扫描局域网10.10.10.125~10.10.10.133范围内那些IP的主机是活动的

root@czx:~# nmap -sn 10.10.10.125-133
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-01 20:16 CST
Nmap scan report for 10.10.10.129
Host is up (0.00017s latency).
MAC Address: 00:0C:29:31:C1:C9 (VMware)
Nmap scan report for 10.10.10.130
Host is up (0.00026s latency).
MAC Address: 00:0C:29:1E:47:BC (VMware)
Nmap scan report for 10.10.10.128
Host is up.
Nmap done: 9 IP addresses (3 hosts up) scanned in 4.33 seconds

原理:发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。

选项功能
-sLList Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现
-snPing Scan 只进行主机发现,不进行端口扫描
-Pn将所有指定的主机视作开启的,跳过主机发现过程
-PS/PA/PU/PY[portlist]TCP SYN/ACK, UDP或SCTP发送到给定的端口
-PE/PP/PMICMP echo、timestamp和netmask请求发现探测
-PO[protocol list]使用IP协议包探测对方主机是否开启
-n/-R-n表示不进行DNS解析;-R表示总是进行DNS解析
–dns-servers<serv1[,serv2],…>指定DNS服务器
--system-dns指定使用系统的DNS服务器
--traceroute追踪每个路由节点

2.端口扫描

服务端口号
FTP21
SSH(安全登陆)、SCP(文件传输)、端口重定向22
Telnet23
SMTP25
HTTP80
POP3110
HTTPS443
MS SQL*SEVER数据库sever1433
Oracle数据库1521
MySQL数据库sever3306
win2003远程登陆3389
WebLogic7001
TOMCAT8080

默认情况下,Nmap会扫描1000个最有可能开放的TCP端口

扫描出端口的六个状态:

  1. open:端口是开放的
  2. closed:端口是关闭的
  3. filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态
  4. unfiltered:端口没有被屏蔽,但是是否开放需要进一步确定
  5. open|filtered:端口是开放的或被屏蔽
  6. closed|filtered:端口是关闭的或被屏蔽

端口扫描技术主要包括以下三大类:

  1. 开放扫描:会产生大量的审计数据,容易被对方发现,但其可靠性高;例如:TCP Connect类。
  2. 隐蔽扫描:能有效的避免入侵检测系统和防火墙的检测,但扫描使数据包容易被丢弃从而产生错误的探测信息;例如:TCP FIN类。
  3. 半开放扫描:隐蔽性和可靠性介于前两者之间。例如:TCP SYN类。
扫描类型描述总结
-sSTP SYN 扫描比较隐蔽,效率高,适用广泛
-sTTCP Connect 扫描由于建立完整的TCP连接会在靶机上留下记录,不隐蔽
-sATCP ACK 扫描只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况
-sFTCP FIN 扫描到达关闭的端口,数据包会被丢弃,并且返回一个RST数据包,到达打开的端口则没返回
-sUUDP扫描收到回复说明端口关闭,没有收到回复则UDP端口可能开放
其他扫描选项功能
-p <port ranges>只扫描指定端口eg:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
-F扫描比默认扫描更少的端口
-rdon’t randomize
--top-posts <number>扫描<number>最常见的端口
--post-ratio <ratio>扫描比<ratio>更常见的端口
eg:

nmap -sS -sU -T4 -top-posts 200 10.10.10.129

  • -sS 表示使用TCP SYN方式扫描TCP端口;
  • -sU 表示扫描UDP端口;
  • T4 表示时间级别配置4级;
  • --top-posts 200表示扫描最有可能开放的200个端口(TCP和UDP分别有200个端口)

3.版本侦测

nmap -sV 10.10.10.129
不是进行一个端口扫描,而是通过相应的端口对应相应的服务,根据服务指纹识别出相应的版本

PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.2.2
22/tcp   open  ssh         OpenSSH 5.3p1 Debian 3ubuntu4 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http        Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch mod_python/3.3.1 Python/2.6.5 mod_perl/2.0.4 Perl/v5.10.1)
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
143/tcp  open  imap        Courier Imapd (released 2008)
445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5001/tcp open  java-rmi    Java RMI
8080/tcp open  http        Apache Tomcat/Coyote JSP engine 1.1

4.操作系统侦测

原理:Nmap有一个名为nmap-OS-DB数据库,该数据库包含超过2600操作系统的信息。Nmap把TCP和UDP数据包发送到目标机器上然后检查结果和数据库对照

常见的操作系统侦测

  1. 利用TTL(数据包的存活时间)来进行探测
  2. TCP数据包探测:根据不同OS对特定TCP的不同反应来进行识别区分(不同OS处理ACK序号时是不一样的)
  3. ICMP报文响应进行识别
选项含义
-O设置nmap进行操作系统侦测
--osscan-guess猜测目标主机的操作系统类型,nmap会给出可能性的比率,用户可以根据提供的比率综合判断操作系统类型

nmap -O --osscan-guess 10.10.10.128-135

漏洞扫描

nmap-vulners的安装
root@czx:/usr/share/nmap/scripts# git clone http://github.com/vulnersCom/nmap-vulners.git

nmap --script nmap-vulners -sV 10.10.10.130
在这里插入图片描述
防火墙关闭情况下:
nmap --script smb-vuln-ms17-010 10.10.10.130
在这里插入图片描述

实用的脚本

在这里插入图片描述

  1. smb-enum-domains.nse
    对域控制器进行扫描,获得主机信息、用户信息、密码、资料
  2. smb-enum-users.nse
    在进行域渗透的时候,有了域内某台主机的权限,但是权限有限,不能获取更多的域用户信息的时候,可以借助这个脚本对域控制器进行扫描
  3. smb-enum-processes.nse
    通过smb对主机的系统进程进行遍历,通过这些信息,可以知道目标主机上运行软件信息,选择合适的漏洞或规避防火墙及杀毒软件
  4. smb-os-discovery.nse
    通过smb协议来收集目标主机的操作系统,计算机名,域名,全程域名,域名系统,NetBIOS机器名,NetBIOS域名,工作组,系统时间。

逃逸FW/IDS

选项功能
-f要求在扫描时(包括ping扫描)使用小的IP包分段,将TCP头分段在几个包中,使得包过滤器、IDS及其它工具的检测更加困难
–data-length指定发包长度(通常情况下TCP包是40字节,ICMP Echo为28字节)
-mtu(使用指定的MTU)偏移量必须是8的倍数
-S<IP_Address>源地址欺骗,时的目标认为是另一个地址在进行扫描
-sI<IP_Address>源地址欺骗
–souce-port<port>源端口欺骗
–spoof-macMAC地址欺骗,可使用字符串”0“随机分配一个MAC地址进行欺骗

探测防火墙

nmap -sA 10.10.10.129
一个简单的ACK扫描意味着攻击者只有较低几率检测到受害机,但是有较高几率发现防火墙
防火墙的四种响应:

  1. open port(防火墙允许少数端口打开)
  2. closed port(由于防火墙的缘故,大部分的端口都被关闭)
  3. filtered(nmap不能确定端口是否打开或者关闭)
  4. unfiletered(nmap能够访问这个端口,但是不清楚这个端口打开的状态)
root@czx:/usr/share/nmap/scripts# nmap -sA 10.10.10.129
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-02 16:23 CST
Nmap scan report for 10.10.10.129
Host is up (0.00037s latency).
All 1000 scanned ports on 10.10.10.129 are unfiltered
MAC Address: 00:0C:29:31:C1:C9 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 14.32 seconds

nmap --traceroute -v www.baidu.com
使用路由跟踪功能,查出本地计算机到目标计算机之间经过的网络节点
在这里插入图片描述

空闲扫描

? Nmap利用空闲主机欺骗目标主机ip并且隐藏本机真实IP

  • Nmap存在一个致命的缺点就是在进行探测过程中会发送大量的数据包,产生大量的流量,这样极其容易引起目标警觉,甚至追踪到渗透测试者的真实IP
  • 空闲主机是一台可用作欺骗目标IP地址且具有可预设的IP ID序列号的机器
  • nmap -Pn -sI <zombie host><target>(-sI选项调用空闲扫描,-Pn关闭主机发现操作)

空闲扫描工作流程:

  1. 确定僵尸主机的IP ID序列号
  2. Nmap将伪造的SYN数据包发送到目标,就好像它是由空闲主机发送的一样
  3. 如果端口是打开的,则目标发送SYN/ACK数据包并增加其IP ID序列号给空闲主机
  4. Nmap分析空闲主机的IP ID序列号的增量以及查看是否收到来自目标的SYN/ACK数据包并确定端口状态

Lua语言和NSE脚本

Nmap脚本主要分为以下几类:

选项宫嗯那个
-sC等价于 --script=default,使用默认类别的脚本进行扫描
–script=<Lua scripts><Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述
–script-args=<n1=v1[,n2=v2,…]>为脚本提供默认参数
–script-args-file=filename使用文件来为脚本提供参数
—script-trace显示脚本执行过程中发送与接收的数据
–script-updatedb更新脚本数据库
–script-help=<Lua script>显示脚本的帮助信息,其中<Lua script>部分可以逗号分隔的文件或脚本类别
    auth: 负责处理鉴权证书(绕开鉴权)的脚本  
    broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务  
    brute: 提供暴力破解方式,针对常见的应用如http/snmp等  
    default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力  
    discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等  
    dos: 用于进行拒绝服务攻击  
    exploit: 利用已知的漏洞入侵系统  
    external: 利用第三方的数据库或资源,例如进行whois解析  
    fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽  
    malware: 探测目标机是否感染了病毒、开启了后门等信息  
    safe: 此类与intrusive相反,属于安全性脚本  
    version: 负责增强服务与版本扫描(Version Detection)功能的脚本  
    vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067

nmap --script=auth 10.10.10.129

负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令

nmap --script=brute 10.10.10.129

提供暴力破解的方式,可对数据库,smb,snmp等进行简单密码的暴力破解

nmap --script=vuln 10.10.10.129

检查是否存在常见漏洞

  • 19
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值