Scanning is art - Nmap 扫描的艺术之常见的基本操作 技术文章
Nmap --- 软件名字Nmap是Network Mapper的简称,是渗透测试过程中必不可少的黑客工具之一,其他的更多的介绍请前往官网:https://nmap.org/ 或者是维基百科查看:https://zh.wikipedia.org/wiki/Nmap。在渗透测试中,如果我们在 WEB 应用层没有找到有用的信息,那么此时 Nmap 就派上用场了,利用它我们可以对单个目标主机或者是目标群进行扫描以此来获取基于 IP 的服务器主机信息,这也是信息刺探中的一部分,不过在实际渗透测试中,如果我们在 WEB 应用层找打了可以利用的点并且可以进一步获得权限足够大的时候我们就可以暂时不需要使用 Nmap ,转而在后期需要提权或者是横向移动的时候我们再使用它。这篇文章主要是将在使用 Nmap 的日常使用中的一些基本操作,还有些骚操作,暂时不多(主要是博主太菜了,哈哈哈哈,欢迎有骚姿势的朋友分享
下载地址:https://nmap.org/download.html
Github 项目主页地址:https://github.com/nmap/nmap
Nmap渗透测试思维导图(高清大图):我的 GitHub 仓库地址
我4年前还搞过CHM的手册:Nmap手册
初识Nmap
Nmap是被专业人员广泛使用的一款功能全面的端口扫描工具。它由Fyodor编写并维护。由 于Nmap品质卓越,使用灵活,它已经是渗透测试人员必备的工具。
除了端口扫描外,Nmap还具备如下功能:
主机探测:Nmap可査找目标网络中的在线主机。默认情况下,Nmap通过4种方式—— ICMP echo请求(ping)、向443端口发送TCP、SYN 包、向80端口发送TCP、ACK 包和 ICMP 时间戳请求——发现目标主机。 服务/版本检测:在发现开放端口后,Nmap可进一步检查目标主机的检测服务协议、应用 程序名称、版本号等信息。 操作系统检测:Nmap 向远程主机发送一系列数据包,并能够将远程主机的响应与操作系统 指纹数据库进行比较。如果发现了匹配结果,它就会显示匹配的操作系统。它确实可能无法 识别目标主机的操作系统;在这种情况下,如果您知道目标系统上使用的何种操作系统,可 在它提供的URL里提交有关信息,更新它的操作系统指纹数据库。 网络路由跟踪:它通过多种协议访问目标主机的不同端口,以尽可能访问目标主机。Nmap 路由跟踪功能从TTL的高值开始测试,逐步递减TTL,直到它到零为止。 Nmap脚本引擎:这个功能扩充了Nmap的用途。如果您要使用Nmap实现它(在默认情况 下)没有的检测功能,可利用它的脚本引擎手写一个检测脚本。目前,Nmap可检査网络服务 的漏洞,还可以枚举目标系统的资源。
安装Nmap
nmap的安装很简单,Windows的话直接去官网下载安装包直接安装就行了->下载链接
kali已经自带了nmap,centos如果没有安装的话,yum install nmap
就直接安装了
入门Nmap
刚开始使用的时候可能会因为信息量太大无从下手,最简单的使用就是nmap your-ip(域名)
就可以扫描出其对外开放的服务。
root@kali:~# nmap 192.168.31.13
Starting Nmap 7.70 ( https://nmap.org ) at 2018-08-12 23:02 CST
Nmap scan report for 192.168.31.13
Host is up (0.00038s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
8080/tcp open http-proxy
10010/tcp open rxapi
MAC Address: 00:0C:29:99:D3:E6 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 1.85 seconds
可以看出只开放了8080端口和10010端口
nmap -p 端口 IP(域名),判断ip是否开放指定端口
root@kali:~# nmap -p 8080 192.168.31.13 Starting Nmap 7.70 ( https://nmap.org ) at 2018-08-12 23:05 CST Nmap scan report for 192.168.31.13 Host is up (0.00045s latency). PORT STATE SERVICE 8080/tcp open http-proxy MAC Address: 00:0C:29:99:D3:E6 (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.36 secondsroot@kali:~# nmap -p 80 192.168.31.13 Starting Nmap 7.70 ( https://nmap.org ) at 2018-08-12 23:05 CST Nmap scan report for 192.168.31.13 Host is up (0.00049s latency). PORT STATE SERVICE 80/tcp closed http MAC Address: 00:0C:29:99:D3:E6 (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.42 seconds |
可以看出8080端口开放,80端口没有开放
也可以增加端口和网段 :
nmap -p 22,21,80 192.168.31.13
nmap -p 22,21,80 192.168.31.1-253
nmap 192.168.31.1/24 扫描整个子网(整个C段)的端口 ,这个过程可能会比较久
进阶Nmap
在继续讲之前,先介绍一下Nmap可以识别出的6种端口状态,默认情况下,Nmap会扫描1660个常用的端口,可以覆盖大多数基本应用情况。
常用选项
1.服务版本识别(-sV),Nmap可以在进行端口扫描的时候检测服务端软件的版本信息。版本信息将使后续的漏 洞识别工作更有针对性。
2.操作系统检测(-O),Nmap还能识别目标主机的操作系统。
3.禁用主机检测(-Pn),如果主机屏蔽了ping请求,Nmap可能会认为该主机没有开机。这将使得Nmap无法进行进一 步检测,比如端口扫描、服务版本识别和操作系统识别等探测工作。为了克服这一问题,就 需要禁用Nmap的主机检测功能。在指定这个选项之后,Nmap会认为目标主机已经开机并会 进行全套的检测工作
4.强力检测选项(-A),启用-A选项之后,Nmap将检测目标主机的下述信息
服务版本识别(-sV);
操作系统识别(-O);
脚本扫描(-sC);
Traceroute(–traceroute)。
TCP扫描选项
1.TCP连接扫描(-sT):指定这个选项后,程序将和目标主机的每个端口都进行完整的三次 握手。如果成功建立连接,则判定该端口是开放端口。由于在检测每个端口时都需要进行三 次握手,所以这种扫描方式比较慢,而且扫描行为很可能被目标主机记录下来。如果启动 Nmap的用户的权限不足,那么默认情况下Nmap程序将以这种模式进行扫描。
2.SYN扫描(-sS):该选项也称为半开连接或者SYN stealth。采用该选项后,Nmap将使用 含有SYN标志位的数据包进行端口探测。如果目标主机回复了SYN/ACK包,则说明该端口处 于开放状态:如果回复的是RST/ACK包,则说明这个端口处于关闭状态;如果没有任何响应 或者发送了ICMP unreachable信息,则可认为这个端口被屏蔽了。SYN模式的扫描速度非常 好。而且由于这种模式不会进行三次握手,所以是一种十分隐蔽的扫描方式。如果启动Nmap 的用户有高级别权限,那么在默认情况下Nmap程序将以这种模式进行扫描。
3.TCP NULL(-sN)、FIN(-sF)及XMAS(-sX)扫描:NULL 扫描不设置任何控制位; FIN扫描仅设置FIN标志位:XMAS扫描设置FIN、PSH和URG的标识位。如果目标主机返回 了含有RST标识位的响应数据,则说明该端口处于关闭状态;如果目标主机没有任何回应, 则该端口处于打开|过滤状态。
4.TCP Maimon扫描(-sM):Uriel Maimon 首先发现了TCP Maimom扫描方式。这种模式的 探测数据包含有FIN/ACK标识。对于BSD衍生出来的各种操作系统来说,如果被测端口处于 开放状态,主机将会丢弃这种探测数据包;如果被测端口处于关闭状态,那么主机将会回复 RST。
5.TCPACK扫描(-sA):这种扫描模式可以检测目标系统是否采用了数据包状态监测技术 (stateful)防火墙,并能确定哪些端口被防火墙屏蔽。这种类型的数据包只有一个ACK标识 位。如果目标主机的回复中含有RST标识,则说明目标主机没有被过滤。
6.TCP窗口扫描(-sW):这种扫描方式检测目标返回的RST数据包的TCP窗口字段。如果目 标端口处于开放状态,这个字段的值将是正值;否则它的值应当是0。
7.TCP Idle扫描(-sI):采用这种技术后,您将通过指定的僵尸主机发送扫描数据包。本机 并不与目标主机直接通信。如果对方网络里有IDS,IDS将认为发起扫描的主机是僵尸主机。
UDP扫描选项
Nmap有多种TCP扫描方式,而UDP扫描仅有一种扫描方式(-sU)。虽然UDP扫描结果没有 TCP扫描结果的可靠度高,但渗透测试人员不能因此而轻视UDP扫描,毕竟UDP端口代表着 可能会有价值的服务端程序。但是UDP扫描的最大问题是性能问题。由干Linux内核限制1秒内最多发送一次ICMP Port Unreachable信息。按照这个速度,对一台主机的65536个UDP端口进行完整扫描,总耗时必 定会超过18个小时。
优化方法主要是:
1.进行并发的UDP扫描; 2.优先扫描常用端口; 3.在防火墙后面扫描; 4.启用--host-timeout选项以跳过响应过慢的主机。 |
假如我们需要找到目标主机开放了哪些 UDP端口。为提高扫描速度,我们仅扫描 53端口 (DNS)和161端口(SNMP)。
可以使用命令nmap -sU 192.168.56.103 -p 53,161
目标端口选项
默认情况下,Nmap将从每个协议的常用端口中随机选择1000个端口进行扫描。其nmapservices文件对端口的命中率进行了排名。
可以自定义端口参数:
-p端口范围:只扫描指定的端口。扫描1〜1024号端口,可设定该选项为–p 1-1024。扫描1 〜65535端口时,可使用-p-选项。 -F(快速扫描):将仅扫描100 个常用端口。 -r(顺序扫描):指定这个选项后,程序将从按照从小到大的顺序扫描端口。 -top-ports :扫描nmap-services 里排名前N的端口。 |
输出选项
Nmap可以把扫描结果保存为外部文件。在需要使用其他工具处理Nmap的扫描结果时,这一 功能十分有用。即使您设定程序把扫描结果保存为文件,Nmap还是会在屏幕上显示扫描结果。
时间排程控制选项
Nmap可通过-T选项指定时间排程控制的模式。它有6种扫描模式。
paranoid(0):每5分钟发送一次数据包,且不会以并行方式同时发送多组数据。这种模式 的扫描不会被IDS检测到。
sneaky(1):每隔15秒发送一个数据包,且不会以并行方式同时发送多组数据。
polite(2):每0.4 秒发送一个数据包,且不会以并行方式同时发送多组数据。
normal(3):此模式同时向多个目标发送多个数据包,为 Nmap 默认的模式,该模式能自 动在扫描时间和网络负载之间进行平衡。
aggressive(4):在这种模式下,Nmap 对每个既定的主机只扫描5 分钟,然后扫描下一 台主机。它等待响应的时间不超过1.25秒。
insane(5):在这种模式下,Nmap 对每个既定的主机仅扫描75 秒,然后扫描下一台主 机。它等待响应的时间不超过0.3秒。
默认的扫描模式通常都没有问题。除非您想要进行更隐匿或更快速的扫 描,否则没有必要调整这一选项。
扫描IPv6主机
启用Nmap的-6选项即可扫描IPv6的目标主机。当前,只能逐个指定目标主机的IPv6地址。
nmap -6 fe80::a00:27ff:fe43:1518 |
同一台主机在IPv6网络里开放的端口比它在IPv4网络里开放的端口数量要 少。这是因为部分服务程序尚未支持IPv6网络。
脚本引擎功能(Nmap Scripting Engine,NSE)
最后但是同样重要的,Nmap本身已经很强大了,但是加上它的脚本引擎更加开挂了,NSE 可使用户的各种网络检査工作更为自动化,有助于识别应 用程序中新发现的漏洞、检测程序版本等Nmap原本不具有的功能。虽然Nmap软件包具有各 种功能的脚本,但是为了满足用户的特定需求,它还支持用户撰写自定义脚本。
规避检测的选项
在渗透测试的工作中,目标主机通常处于防火墙或 IDS 系统的保护之中。在这种环境中使用 Nmap 的默认选项进行扫描,不仅会被发现,而且往往一无所获。此时,我们就要使用Nmap 规避检测的有关选项。
nmap -sV -sT -Pn --open -v 192.168.3.23 //扫描常见端口服务 nmap --script=default 192.168.137.* 或者 nmap -sC 192.168.137.* nmap --script=auth 192.168.0.1 //对目标或网段进行应用弱口令检测 nmap --script=brute 192.168.0.105 //对数据库、smb、snmp进行简单密码暴力猜解 nmap --script=vuln 192.168.0.1//检测常见漏洞 nmap --script=realvnc-auth-bypass 192.168.0.0 //扫描vnc服务 可扫mysql、telnet、Rsync nmap -n -p 445 --script=broadcast 192.168.0.1 //探测局域网更多服务 nmap --script external.baidu.com //whois解析 nmap --script external 202.103.243.110 //跟whois解析同样的效果 nmap --script=realvnc-auth-bypass 192.168.137.4 //检查vnc bypass 检查vnc认证方式 nmap --script=vnc-auth 192.168.137.4 获取vnc信息 nmap --script=vnc-info 192.168.137.4 smb破解 nmap --script=smb-brute.nse 192.168.137.4 smb字典破解 nmap --script=smb-brute.nse --script-args=userdb=/var/passwd,passdb=/var/passwd192.168.137.4 smb已知几个严重漏洞 nmap --script=smb-check-vulns.nse --script-args=unsafe=1 192.168.137.4 nmap -p 445 --script smb-ls--script-args ‘share=e$,path=\,smbuser=test,smbpass=test’ 192.168.137.4 查看共享目录 查询主机一些敏感信息(注:需要下载nmap_service) nmap -p 445 -n –script=smb-psexec --script-args= smbuser=test,smbpass=test192.168.137.4 nmap -n -p445 --script=smb-enum-sessions.nse --script-args=smbuser=test,smbpass=test192.168.137.4 查看会话 系统信息nmap -n -p445 --script=smb-os-discovery.nse --script-args=smbuser=test,smbpass=test192.168.137.4 猜解mssql用户名和密码 nmap -p1433 --script=ms-sql-brute --script-args=userdb=/var/passwd,passdb=/var/passwd192.168.137.4 xp_cmdshell 执行命令 nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" 192.168.137.4 dumphash值 nmap -p 1433 --script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa 192.168.137.4 Mysql扫描: nmap -p3306 --script=mysql-empty-password.nse 192.168.137.4 扫描root空口令 列出所有mysql用户 nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root 192.168.137.4 支持同一应用的所有脚本扫描 nmap --script=mysql-* 192.168.137.4 Oracle扫描: oracle sid扫描 nmap --script=oracle-sid-brute -p 1521-1560 192.168.137PS:Nmap 在实际渗透测试的时候还可以在MSF里面调用配合MSF一起有时候别有用处!
参考资料如下:
Nmap 官方的在线版 Nmap参考指南(Man Page):https://nmap.org/man/zh/ Github仓库版(网络下载上传)
Nmap 中文域名网站:http://www.nmap.com.cn/doc/manual.shtm
GitBook 在线版 :https://legacy.gitbook.com/book/wizardforcel/nmap-man-page/details
看云在线版:https://www.kancloud.cn/wizardforcel/nmap-man-page/141685
crayon-xin 博客文章:nmap超详细使用指南
GitHub erasin :https://github.com/erasin/notes/blob/master/linux/safe/nmap.md
【原创】Nmap - 使用手册 免费资源
介绍一下:
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
Nmap 常被跟评估系统漏洞软件Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。
Nmap 在黑客帝国(The Matrix)中,连同SSH1的32位元循环冗余校验漏洞,被崔妮蒂用以入侵发电站的能源管理系统。
功能 其基本功能有三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。
我在空闲时间把官方原版的使用说明做成了小手册,方便大家查看。 后面会出Netsparker 的使用手册。请大家关注博客。
百度网盘:链接: http://pan.baidu.com/s/1mg02moC 密码: m35r
微云网盘:http://url.cn/UleH52
链接如有问题,请通知我,我会尽快补上的。