Nmap在实战中的高级用法(详解)


Nmap详细介绍

Nmap(Network Mapper)中文名字:网络映射器/安全扫描器,是免费开放源代码的实用程序,用于网络发现和安全审核。许多系统和网络管理员还发现它对于诸如网络清单,管理服务升级计划以及监视主机或服务正常运行时间之类的任务很有用。

Nmap以新颖的方式使用原始IP数据包来确定网络上可用的主机,这些主机提供的服务(应用程序名称和版本),它们正在运行的操作系统(和OS版本),包过滤器/防火墙的类型。正在使用中,还有许多其他特性。它旨在快速扫描大型网络,但可以在单个主机上正常运行。

Nmap可在所有主要的计算机操作系统上运行,并且官方二进制软件包可用于Linux,Windows和Mac OSX。除了经典的命令行Nmap可执行文件之外,Zenmap),灵活的数据传输,重定向和调试工具(Ncat),用于比较扫描结果的实用程序(Ndiff)以及数据包生成和响应分析工具(Nping)。

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。 “所感兴趣的端口表格”是其中的关键。那张表列出端口号,协议,服务名称和状态。状态可能是 open(开放的),filtered(被过滤的), closed(关闭的),或者unfiltered(未被过滤的)。

Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是 open(开放的) 还是 closed(关闭的)。closed(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。

当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是 unfiltered(未被过滤的) 如果Nmap报告状态组合 open|filtered 和 closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议扫描时 (-sO),Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。

除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。

此外
Nmap在很多电影中都出现过,
在2013年的科幻电影《极乐世界》、
2015年大型预算超级英雄电影《神奇四侠》、
2014年德国的网络惊悚片
《我是谁-没有绝对安全的系统》、
2007年《Bourne Ultimatum》、
2009年瑞典惊悚电影《龙纹身的女孩》
......


《神奇四侠》电影画面(图片来自于网络)


《我是谁-没有绝对安全的系统》电影画面(图片来自于网络)


《龙纹身的女孩》电影画面(图片来自于网络)


《Bourne Ultimatum》电影画面(图片来自于网络)

Nmap主要功能

1.主机发现
2.端口扫描
3.操作系统识别
4.服务版本识别
5.硬件地址检测
6.漏洞扫描,使用nmap自带脚本

如何使用Nmap

主机发现:

原理:
本机地址向网段内发广播包,
如有ARP回应,就是存活主机。

扫描一个IP
Nmap 192.168.1.1
探测局域网存活的主机
nmap -sP 192.168.0.*
对主机名进行扫描
Nmap www.xxxxx.com
扫描一系列IP
Nmap 192.168.1.1-20
扫描子网
Nmap 192.168.1.0/24
从文本文件扫描目标
Nmap -iL '文本名称'.txt

端口扫描:

什么是端口?
端口是网络通信中很重要的部分,它相当于是两台设备之间通信的"大门"。它是由计算通信协议TCP/IP协议定义的。

端口的分类?
按照互联网通信协议端口可以分成两类,分别是TCP端口和UDP端口,两个协议是独立的。

端口扫描的原理是什么?
它是通过向目标主机发送探测数据包(主要针对TCP/IP服务端口),并通过探测数据包反馈回来的数据判断服务端口的状态。

端口扫描技术主要分三类:
开放扫描"connect()"、隐蔽扫描、半开放扫描"SYN"。

开放扫描:容易被防火墙发现和屏蔽(需要3次握手),不需要任何权限,但其可靠性高。
实现原理:通过调用socket函数connect()连接到目标计算机 上,完成一次完整的三次握手过程。如果端口处于侦听状态, 那么connect()就能成功返回。否则,这个端口不可用,即没有提供服务。

半开放扫描:介于开放扫描和隐蔽扫描之间,需要相应的权限。
实现原理:扫描器向目标主机端口发送SYN包。如果应答是RST包,那么说明端口是关闭的;如果应答中包含SYN和ACK包,说明目标端口处于监听状态, 再传送一个RST包给目标机从而停止建立连接。由于在SYN扫描时,未建立全连接尚,所以这种技术通常被称为半连接扫描。

隐蔽扫描:可以避开系统和防火墙的检测(不需要3次握手),但其可靠性低。

端口的状态:

open(开放的)
closed(关闭的):PC管理员使用了防火墙或者把端口关闭了
filtered(被过滤的):被防火墙设备过滤,阻止探测报文到达端口
unfiltered(未被过滤的)
open|filtered(开放或者被过滤的)
closed|filtered(关闭或者被过滤的)

用法:

对全端口进行扫描
Nmap -p- 192.168.1.1
指定探测端口范围为a-n之间的端口(小范围)
Nmap -p 1-1000 192.168.1.1
指定探测端口
Nmap -p 23,445 192.168.1.1
指定协议探测端口
Nmap -p T:23,U:53 192.168.1.1
通过指定协议扫描端口
Nmap -p ssh 192.168.1.1
扫描协议名称范围
Nmap -p s* 192.168.1.1
 参数可以停止探测之前的icmp请求,避免触发防火强
Nmap -Pn 192.168.1.1
技巧:扫描端口时,最好减少扫描的端口数量或仅扫描您需要的端口

操作系统识别

探测目标主机的操作系统和版本
nmap -O 192.168.1.3
探测服务和版本
nmap -v 192.168.1.3

综合案例:

伪装源ip地址去扫描机器
nmap -e eth0 10.0.1.161 -S 10.0.1.167
进行全面扫描,比较慢
nmap -A 192.168.1.5
半开放扫描
nmap  -sS 192.168.1.5

脚本扫描

脚本扫描的分类:

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=default 192.168.1.5
探测是否存在常见的漏洞
nmap --script=vuln 192.168.1.5
进行第三方whois解析
nmap --script external 192.168.1.5

常见端口号

温馨提示:建议使用【Ctrl】+【F】查找阅读

21端口:FTP 文件传输服务
22端口:SSH 端口
23端口:TELNET 终端仿真服务
25端口:SMTP 简单邮件传输服务
53端口:DNS 域名解析服务
80端口:HTTP 超文本传输服务
110端口:POP3 “邮局协议版本3”使用的端口
443端口:HTTPS 加密的超文本传输服务
1433端口:MS SQL*SERVER数据库 默认端口号
1521端口:Oracle数据库服务
1863端口:MSN Messenger的文件传输功能所使用的端口
3306端口:MYSQL 默认端口号
3389端口:Microsoft RDP 微软远程桌面使用的端口
5000端口:MS SQL Server使用的端口
5432端口:postgresql数据库端口
5631端口:Symantec pcAnywhere 远程控制数据传输时使用的端口
5632端口:Symantec pcAnywhere 主控端扫描被控端时使用的端口
6379端口:Redis数据库端口
8000端口:QQ 腾讯默认
8080端口:TCP服务端默认端口
8888端口:Nginx服务器的端口
9200端口:Elasticsearch服务器端口
22122端口:fastdfs服务器默认端口
27017端口:mongoDB数据库默认端口

注:端口号的范围是从1~65535。

UNIX特有的端口

512/tcp exec 用于对远程执行的进程进行验证
512/udp biff [comsat] 异步邮件客户(biff)和服务(comsat)
513/tcp login 远程登录(rlogin)
513/udp who [whod] 登录的用户列表
514/tcp shell [cmd] 不必登录的远程 shell(rshell)和远程复制(rcp)
514/udp syslog UNIX 系统日志服务
515 printer [spooler] 打印机(lpr)假脱机
517/udp talk 远程对话服务和客户
518/udp ntalk 网络交谈(ntalk),远程对话服务和客户
519 utime [unixtime] UNIX 时间协议(utime)
520/tcp efs 扩展文件名服务器(EFS)
520/udp router [route, routed] 选路信息协议(RIP)
521 ripng 用于互联网协议版本6(IPv6)的选路信息协议
525 timed [timeserver] 时间守护进程(timed)
526/tcp tempo [newdate] Tempo
530/tcp courier [rpc] Courier 远程过程调用(RPC)协议
531/tcp conference [chat] 互联网中继聊天
532 netnews Netnews
533/udp netwall 用于紧急广播的 Netwall
540/tcp uucp [uucpd] Unix 到 Unix 复制服务
543/tcp klogin Kerberos 版本5(v5)远程登录
544/tcp kshell Kerberos 版本5(v5)远程 shell
548 afpovertcp 通过传输控制协议(TCP)的 Appletalk 文件编制协议(AFP)
556 remotefs [rfs_server, rfs] Brunhoff 的远程文件系统(RFS

相关资料:
https://tool.oschina.net/commons?type=7#famous_
https://nmap.org/
http://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8

声明:ByTeam|路人|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Nmap在实战中的高级用法(详解)


且听风吟,等待花开