nmap
title: nmap
tags: nmap
abbrlink: 96512c85
date: 2022-07-28 16:59:38
端口扫描之王----------NMAP
- Nmap是一款非常强大的实用工具,可用于:检测活在网络上的主机(主机发现)检测主机上开放的端口(端口发现或枚举)检测到相应的端口(服务发现)的软件和版本检测操作系统,硬件地址,以及软件版本检测脆弱性的漏洞(Nmap的脚本)Nmap是一个非常普遍的工具,它有命令行界面和图形用户界面。本人包括以下方面的内容:介绍Nmap扫描中的重要参数操作系统检测Nmap使用教程Nmap使用不同的技术来执行扫描,包括:TCP的connect()扫描,TCP反向的ident扫描,FTP反弹扫描等。所有这些扫描的类型有自己的优点和缺点,我们接下来将讨论这些问题。 Nmap的使用取决于目标主机,因为有一个简单的(基本)扫描和预先扫描之间的差异。我们需要使用一些先进的技术来绕过防火墙和入侵检测/防御系统,以获得正确的结果。
主机探测
扫描单个主机
nmap 192.168.1.2
扫描整个子网,命令如下:
nmap 192.168.1.1/24
扫描多个目标,命令如下:
nmap 192.168.1.2 192.168.1.5
扫描一个范围内的目标,如下:
nmap 192.168.1.1-100 (扫描IP地址为192.168.1.1-192.168.1.100内的所有主机)
如果你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的所有主机,命令如下:
nmap -iL target.txt
如果你想看到你扫描的所有主机的列表,用以下命令:
nmap -sL 192.168.1.1/24
扫描除过某一个ip外的所有子网主机,命令:
nmap 192.168.1.1/24 -exclude 192.168.1.1
扫描除过某一个文件中的ip外的子网主机命令
nmap 192.168.1.1/24 -excludefile xxx.txt(xxx.txt中的文件将会从扫描的主机中排除)
端口扫描
常用命令:
nmap -F -sT -v nmap.org
-F:扫描100个最有可能开放的端口 -v 获取扫描的信息 -sT:采用的是TCP扫描 不写也是可以的,默认采用的就是TCP扫描
-p: 指定要扫描的端口
-p: 80,90,3306,10-100
扫描端口状态
-
Open:端口处于开放状态,例如:当nmap使用TCP SYN对目标主机某一范围的端口进行扫描时,我们知道 TCP SYN报文是TCP建立连接的第一步,所以,如果目标主机返回SYN+ACK的报文,我们就认为此端口开放了并且使用了TCP服务。
-
Closed:端口处于关闭状态。例如:TCP SYN类型的扫描,如果返回RST类型的报文,则端口处于管理状态。这里我们值得注意的是关闭的端口也是可访问的,只是没有上层的服务在监听这个端口,而且,只是在我们扫描的这个时刻为关闭,当我们在另一个时间段进行扫描的时候,这些关闭的端口可能会处于open的状态。
-
Filtered(过滤的):由于报文无法到达指定的端口,nmap不能够决定端口的开放状态,这主要是由于网络或者主机安装了一些防火墙所导致的。当nmap收到icmp报文主机不可达报文(例如:type为3,code为13(communication administratively prohibit)报文)或者目标主机无应答,常常会将目标主机的状态设置为filtered。
-
Unfiltered(未被过滤的):当nmap不能确定端口是否开放的时候所打上的状态,这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没就没能够被nmap访问。端口被定义为Unfilterd只会发生在TCP ack扫描类型时当返回RST的报文。而端口被定义为filtered 状态的原因是是报文被防火墙设备,路由器规则,或者防火墙软件拦截,无法送达到端口,这通常表现为发送NMAP的主机收到ICMP报错报文,如:TYPE为3,code为13的报文(通信被认为的禁止 communication administratively prohibited),或者主机通过多次重复发送没有收到任何回应)。
-
Open|filtered状态,这种状态主要是nmap无法区别端口处于open状态还是filtered状态。这种状态只会出现在open端口对报文不做回应的扫描类型中,如:udp,ip protocol ,TCP null,fin,和xmas扫描类型。
-
Closed|filtered状态,这种状态主要出现在nmap无法区分端口处于closed还是filtered时。此状态只会出现在IP ID idle scan(这个类型我现在也不太理解,过段时间进行总结一些)中。
TCP扫描(-sT)
-
这是一种最为普通的扫描方法,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现
-
运行的原理:通过建立TCP的三次握手连接来进行信息的传递
-
Client端发送SYN
-
Server端返回SYN/ACK,表明端口开放
-
Client端返回ACK,表明连接已建立
-
Client端主动断开连接。
SYN扫描(-sS)
- 这是一种秘密的扫描方式之一,因为在SYN扫描中Client端和Server端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会再目标主机上留下任何的痕迹,但是这种扫描是需要root权限(对于windows用户来说,是没有root权限这个概念的,root权限是linux的最高权限,对应windows的管理员权限)
端口扫描
使用UDP ping探测主机:
nmap -PU 192.168.1.0/24
服务版本探测
nmap -sV 192.168.1.1
精准地确认端口上运行的服务
nmap -sV --script unusual-port 192.168.1.1
探测目标主机的操作系统
- OS操作系统类型的探测
nmap -O 192.168.1.19
- osscan-guess 猜测匹配操作系统 (猜测认为最接近目标的匹配操作系统类型。)
nmap -O --osscan-guess 192.168.1.180
- 如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会阻止掉ping请求.-PN命令告诉Nmap不用ping远程主机。使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现。
nmap -O -PN 192.168.1.180
- 全面扫描
nmap -A 192.168.1.19
nmap 信息收集脚本
对目标进行IP反查
nmap -sn --script hostmap-ip2hosts www.hao123.com
对目标DNS信息的收集
nmap --script dns-brute www.test.com
nmap --script dns-brute dns-brute.threads=10 www.test.com
了解目标系统的详细信息
nmap -p 445 192.168.23.1 --script membase-http-info
nmap 信息收集
检查打印服务漏洞
nmap --script smb-security-mode.nse -p 445 192.168.21.3
扫描目标的xss漏洞
nmap -p80 --script http-stored-xss.nse www.test.com
扫描目标的SQL注入漏洞
nmap -p8001 --script http-sql-injection.nse 192.168.0.200
对目标地址进行HTTP头信息探测
nmap -p 80 --script=http-headers test.com
爬行web目录结构
nmap -p 80 --script=http-sitemap-generator www.test.com
Snmp服务获取目标正在运行着的服务,通过Snmp服务对目标系统的服务或账户进行列举
nmap -sU -p 161 --script=snmp-win32-services 192.168.87.129
密码破解
暴力破解VNC
nmap --script vnc-brute --script-args brute.guesses=6,brute.emptypass=true,userdb=/root/dictionary/user.txt,brute.useraspass=true,passdb=/root/dictionary/pass.txt,brute.retries=3,brute.threads=2,brute.delay=3 42.96.170.128
破解telnet
nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst --script-args telnet-brute.timeout=8s 192.168.1.1
ftp弱口令暴力破解
nmap --script ftp-brute --script-args brute.emptypass=true,ftp-brute.timeout=30,userdb=/root/dirtionary/usernames.txt,brute.useraspass=true,passdb=/root/dirtionary/passwords.txt,brute.threads=3,brute.delay=6 192.168.1.1
漏洞探测
扫描系统漏洞
nmap --script vuln 192.168.1.1
IIS 短文件泄露
nmap -p 8080 --script http-iis-short-name-brute 192.168.1.1
拒绝服务
nmap --max-parallelism 800--script http-slowloris www.xxxxx.com
验证http 中开启了put 方法
nmap --script http-put --script-args http-put.url=/uploads/testput.txt,http-put.file=/root/put.txt 218.19.141.16
验证MySQL 匿名访问
nmap --script mysql-empty-password 203.195.139.153
防火墙躲避
-f 分片绕过
-D 使用诱饵隐蔽扫描
NMAP -D 1.1.1.1,222.222.222.222 www.xxxxx.com
--source-port 源端口欺骗
高级用法
侦测服务版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt
扫做系统扫描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt
系统和服务检测
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect-iL LiveHosts.txt
修改默认MTU 大小,但必须为8 的倍数(8,16,24,32等等)
nmap --mtu 24
生成随机数量的欺骗
nmap -D RND:10 [target]
手动指定欺骗使用的IP
nmap -D decoy1,decoy2,decoy3 etc.
僵尸网络扫描,首先需要找到僵尸网络的IP
nmap -sI [Zombie IP] [Target IP]
指定源端口号
nmap --source-port 80 IP
在每个扫描数据包后追加随机数量的数据
nmap --data-length 25IP
MAC 地址欺骗,可以生成不同主机的MAC 地址
nmap --spoof-mac Dell/Apple/3Com IP
导出格式
-oS (ScRipT KIdd|3oUTpuT)保存扫描结果输出。
-oN 按照人们阅读的格式记录屏幕上的输出,如果是在扫描多台机器,则该选项很有用。
-oX 以xml格式向指定的文件记录信息
-oG 以一种易于检索的格式记录信息,即每台主机都以单独的行来记录所有的端口和0s信息。-oS 把输出进行傻瓜型排版
-oA 导出所有格式。普通格式(-oN)、XML格式(-oX)和易于检索的格式(-oG)jilu xinxi