读书笔记——商广明《Nmap渗透测试指南》

一 Nmap基础学习

1.简介及安装

  • Nmap是一款由C语言编写的、开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字Nmap是Network Mapper的简称。Nmap最初是由Fyodor在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。
  • Nmap是一个开源的网络连接端扫描软件,用来扫描计算机开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统,它是网络管理员必用的软件之一,以及用于评估网络系统安全。
  • Nmap可以快速地安装到Windows、Linux、Mac等操作系统中。Nmap的安装包可以从https://nmap.org/download.html进行下载。Windows下直接双击安装。
  • 如今Nmap更是增加许多实用的插件,可以用来检测SQL注射、网页爬行、数据库密码检测等,号称扫描之王。欲了解更多信息请登录官网:https://nmap.org/。
  • Nmap官方参考指南:https://nmap.org/man/zh/index.html

2.Nmap常用命令

Nmap最常用的参数总结如下:

读书笔记——商广明《Nmap渗透测试指南》

Nmap扫描案例:

基本扫描             nmap 192.168.126.131
注意:Nmap默认仅扫描主机1000个高危端口,若需要全面检测端口,则需要加入-p 1-65536或者-p-
扫描所有端口 nmap -p 1-65535 192.168.126.131
或者 nmap -p- 192.168.126.131
扫描指定端口 nmap -p 80,443 192.168.126.131
或者nmap -p 100-200 192.168.126.131
扫描指定IP所开放端口 nmap -sS -p 1-65536 -v 192.168.1.106(表示使用半开扫描,指定端口为1到65536,并且显示扫描过程)
扫描www.xxx.com C段存活主机 nmap -sP www.xxx.com/24
指定端口扫描 nmap -p 80,1433,22,1521 www.xxx.com
探测主机操作系统 nmap -o www.xxx.com
全面系统扫描 nmap -A -v www.xxx.com
穿透防火墙进行扫描 nmap -Pn -A www.2cto.com

3.Nmap Script

  • Nmap不单单用于端口扫描、服务检测,它还有强大的脚本引擎。Nmap Script是Nmap最好的功能之一,利用Nmap Script可以快速地探测服务器。
  • 在Nmap的安装目录,存在Script文件夹,Script文件夹中存在许多以“.nse”后缀结尾的文本文件,即Nmap自带的脚本引擎。并且你也可以自己编写Nmap Script。Nmap Script实现许多不同的功能,包括漏洞扫描、漏洞利用、目录扫描等使用功能。
  • 使用Nmap Script脚本引擎,只需要添加命令“--script=脚本名称”。Nmap Script有500多个,下面为读者介绍经常使用的脚本,如需了解更多,请参照:https://nmap.org/nsedoc/
扫描Web敏感目录        nmap -p 80 --script=http-enum.nse www.xxx.com
扫描SQLInjection nmap -p 80 --script=sql-injection.nse www.xxx.com
使用所有脚本进行扫描 nmap --script all 127.0.0.1(使用此命令非常耗时,最好把记录保存到文档里面)
使用通配符扫描 nmap --script "http-*" 127.0.0.1(使用所有以“http-”开头的脚本扫描,值得注意的是,脚本的参数必须用引号引起来,以保护从shell的通配符)
Nmap也可以用来检测主机是否存在漏洞、密码暴力破解等。更多扫描方式请参照:https://nmap.org/book/man-nse.html。

二 Nmap主机发现

基本扫描            nmap 192.168.42.101(可发现开放的端口及相关服务,只会扫描它认为高危的1000个端口)
全面扫描 nmap -A 192.168.42.101
扫描指定段 nmap 192.168.42.1-200
Ping扫描 nmap -sP 192.168.126.131/24(高效,不易被发现)
无Ping扫描 nmap -P0 192.168.126.131(常用于防火墙禁止ping时)
nmap -p0 --package-trace scanme.nmap.org(查看协议如何判断主机是否存活)
nmap -p06,17,2 --package-trace scanme.nmap.org(指定TCP、UDP、IGMP协议向目标主机发送包来判断是否在线)
TCP SYN Ping扫描 nmap -PS -v 192.168.126.131(-v 显示详细信息)
或者 nmap -PS80,100-200 -v 192.168.126.131(指定端口)
TCP ACK Ping扫描 nmap -PA -v 192.168.126.131
或者 nmap -PA -PS -v 192.168.126.131(同时使用-PA和-PS)
UDP Ping扫描 nmap -PU -v 192.168.126.131
或者 nmap -PU80,110 -v 192.168.126.131(指定端口)
ICMP Ping Types扫描 nmap -PE -v 192.168.126.131(使用ICMP Echo扫描方式)
nmap -PP -v 163.com(使用ICMP时间戳Ping扫描)
nmap -PM -v 192.168.126.131(使用ICMP地址掩码Ping扫描)
ARP Ping扫描 nmap -PR 192.168.126.131
扫描列表 nmap -sL 192.168.126.131/24
禁止反向域名解析 nmap -n -sL 192.168.126.131/24
反向域名解析 nmap -R -sL *.168.126.131/24
使用系统域名解析器 nmap --system-dns 192.168.126.2 192.168.126.131
扫描IPv6地址 nmap -6 fe80:20c:29ff:fee0:2e76
路由跟踪 nmap --traceroute -v www.163.com
SCTP INIT Ping扫描 nmap -PY -v 192.168.126.131

三 探索网络

时序选项       nmap -T0 192.168.126.131(T0-T5,由慢到快,默认T3)
常用扫描方式 nmap -p 445 192.168.126.131(指定端口)
nmap-sS -p T:111,U:445 192.168.126.131(扫描111TCP端口,445UDP端口)
nmap -F 192.168.126.131(-F快速扫描有限的端口)
nmap -top-ports 100 192.168.126.131(扫描100个开放率最高的端口)
TCP SYN扫描 nmap -sS 192.168.126.131
TCP 连接扫描 nmap -sT 192.168.126.131
UDP扫描 nmap -sU -p 80-500 192.168.126.131
隐蔽扫描 nmap -sN 192.168.126.131(Null扫描)
nmap -sF 192.168.126.131(FIN扫描)
nmap -sX 192.168.126.131(Xmas扫描)
TCP ACK扫描 nmap -sA -v 192.168.126.131
TCP 窗口扫描 nmap -sW -v -F 192.168.126.131
TCP Maimon扫描 nmap -sM -T4 192.168.126.131
自定义TCP扫描 nmap -sT --scanflags SYNURG 192.168.126.131(设置SYN、URG标志位扫描)
空闲扫描 nmap -sI www.0day.co:80 192.168.126.131(利用僵尸主机www.0day.co对192.168.126.131进行空闲扫描)
IP协议扫描 nmap -sO -T4 192.168.126.131
FTP Bounce扫描 -b选项,已经很少被支持了

四 指纹识别与探测

版本探测          nmap -sV 192.168.126.131
nmap -sV -A 192.168.126.131
全端口版本探测 nmap -sV --allports 192.168.126.131
设置扫描强度 nmap -sV --version-intensity 1 192.168.126.131(0-9,由弱到强,默认为7)
轻量级扫描 nmap -sV --version-light 192.168.126.131(等价于--version-intensity 2)
重量级扫描 nmap -sV --version-all 192.168.126.131(等价于--version-intensity 9)
获取详细版本信息 nmap -sV --version-trace 192.168.126.131
RPC扫描(-sR) nmap -sS -sR --version-all 192.168.126.131
启用操作系统探测 nmap -O -A 192.168.126.131
对指定的目标进行操作系检测 nmap -O --osscan-limit 192.168.126.131/24
推测系统并识别 nmap -O --osscan-guess 192.168.126.131

五 伺机而动

调整并行扫描组的大小     nmap --min-hostgroup 30 192.168.126.1/24
nmap --max-hostgroup 10 192.168.126.1/24
调整探测报文的并行度 nmap --min-parallelism 100 192.168.126.1/24
nmap --max-parallelism 100 192.168.126.1/24
调整探测报文超时 nmap --initial-rtt-timeout 1000ms 192.168.126.1/24
nmap --max-rtt-timeout 500ms 192.168.126.1/24
nmap --min-rtt-timeout 500ms 192.168.126.1/24
放弃缓慢的目标主机 nmap --host-timeout 1000ms 192.168.126.1/24
调整探测报文的时间间隔 nmap --scan-delay 1s 192.168.126.131
nmap --max-scan-delay 30s 192.168.126.131

六 防火墙/IDS逃逸

报文分段         nmap -f -v 192.168.126.1
指定偏移大小 nmap --mtu 16 192.168.126.1(偏移量必须是8的倍数)
IP欺骗 nmap -D RND:11 192.168.126.131(使用RDN随机生成11个地址欺骗目标主机)
nmap -D 192.168.0.1,192.168.0.2,192.168.0.254 192.168.126.131(指定机构IP对目标实施扫描)
nmap -D 192.168.0.1,192.168.0.254,ME 192.168.126.131(ME指定自己的真实IP)
源地址欺骗 nmap -sI www.oday.co:80 192.168.126.131(-sI指定发包的接口IP地址)
源端口欺骗 nmap --source-port 53 192.168.126.131
指定发包长度 nmap --data-length 30 192.168.126.131
目标主机随机排序 nmap --randomize-host 192.168.126.1-200
MAC地址欺骗 nmap -sT -PN --spoof-mac 0 192.168.121.131(0表示随机生成一个MAC地址)

七 信息搜索

IP信息搜索         nmap --script ip-geolocation-* www.0day.co
WHOIS查询 nmap --script whois www.0day.co
nmap --script whois --script-args whois.nofollow www.0day.co
nmap -sn --script whois -v -iL host.txt
搜集E-mail信息 nmap --script http-email-harvest www.0day.co
IP反查 nmap -sn --script hostmap-ip2hosts www.0day.co(显示所有绑定到该IP的域名)
DNS信息搜集 nmap --script dns-brute www.xxx.com
检索系统信息 nmap -p 445 192.168.126.131 --script membase-http-info
后台打印机服务漏洞 nmap --script smb-security-mode.nse -p 445 192.168.126.128
系统漏洞扫描 nmap --script smb-check-vulns.nse -p 445 192.168.126.128
扫描Web漏洞 nmap -p80 --script http-stored-xss.nse www.xxx.com
通过SNMP列举Windows服务/账户 nmap -sU -p 161 --script=snmp-win32-services 192.168.126.128
枚举DNS服务器的主机名 nmap --script dns-brute --script-args dns-brute.domain=baidu.com(枚举baidu.com的子域名)
HTTP信息搜集 nmap -sV -p 80 www.0day.com(探测HTTP版本)
nmap -p 80 --script=http-headers baidu.com(探测HTTP头信息)
nmap -p 80 --script=http-sitemap-generator www.baidu.com(探测HTTP目录结构)
枚举SSL密钥 nmap -p 443 --script=ssl-enum-ciphers www.baidu.com
SSH服务密钥信息探测 nmap -p 22 --script ssh-hostkey --script-args ssh_hostkey=full 127.0.0.1

八 数据库渗透测试

列举mysql数据库 	  nmap -p 3306 --script mysql-databases --script-args mysqluser=root,mysqlpass 192.168.84.1
列举mysql变量 nmap -p 3306 --script=mysql-variables 192.168.84.1
或者 nmap -sV --script=mysql-variables 192.168.84.1
检查mysql密码 nmap -p 3306 --script=mysql-empty-password 192.168.84.1
或者 nmap -sV --script=mysql-empty-password 192.168.84.1
审计mysql密码 nmap --script=mysql-brute 192.168.84.1(扫描所有端口用于查找mysql端口)
或者 nmap -p 3306 --script=mysql-brute 192.168.84.1(-p选项指定端口)
或者 nmap -p 3306 --script=mysql-brute userdb=/root/passdb.txt passdb=/root/pass.txt 192.168.84.1(自定义账号密码字典)
审计mysql安全配置 nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root',\mysql-audit.password='',mysql-audit.filename='nselib/data/mysql-cis.audit'" 192.168.84.1(如果无法确定目标端口可用-sV进行扫描)
审计Oracle密码 nmap -script oracle-brute -p 1521 --script-args oracle-brute.sid=test 192.168.84.1
审计msSQL密码 nmap -p 1433 --script ms-sql-brute --script-args userdb=name.txt,passdb=pass.txt 192.168.84.1
检查msSQL空密码 nmap -p 1433 --script ms-sql-empty-password 192.168.84.1
读取msSQL数据 nmap -p 1433 --script ms-sql-tables --script-args mssql.username=sa,mssql.password=sa 192.168.84.1
ms-sql执行系统命令 nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="ipconfig" 192.168.84.1
审计PgSQL密码 nmap -p 5432 --script pgsql-brute 192.168.84.1

九 渗透测试

审计HTTP身份验证	  nmap --script http-brute -p 80 www.0day.com(暴力破解账号密码)
审计ftp服务器 nmap --script ftp-brute -p 21 192.168.84.1(暴力破解账号密码)
或者 nmap --script ftp-brute --script-args userdb=user.txt,passdb=pass.txt -p 21 192.168.84.1(字典爆破)
或者 nmap --script=ftp-anon 192.168.84.1(检测FTP是否允许匿名登录)
审计Wordpress程序 nmap -p 80 --script http-wordpress-brute 192.168.84.1(暴力破解账号密码)
或者 nmap -p 80 --script http-wordpress-brute --script-args userdb=user.txt passdb=passwd.txt 192.168.84.1(指定字典爆破)
或者 nmap -p 80 --script http-wordpress-brute --script-args http-wordpress-brute.threads.10 192.168.84.1(设置线程数,减少破解时间)
审计Joomla程序 nmap -p 80 --script http-joomla-brute 192.168.84.1(暴力破解账号密码)
或者 nmap -p 80 --script http-joomla-brute --script-args userdb=user.txt,passdb=pass.txt 192.168.84.1(字典爆破)
或者 nmap -p 80 --script http-joomla-brute --script-args userdb=user.txt,passdb=pass.txt,http-joomla-brute.threads=5 192.168.84.1(设置线程数,高效破解,默认线程数是3)
审计邮件服务器 nmap -p 110 --script=pop3-brute 192.168.84.1
审计SMB口令 nmap --script smb-brute.nse -p445 192.168.84.1
或者 nmap --script smb-brute.nse --script-args userdb=user.txt,passdb=pass.txt -p445 192.168.84.1(指定字典破解)
审计VNC服务器 nmap --script vnc-brute -p 5900 192.168.84.1
审计SMTP服务器 nmap -p 25 --script smtp-brute 192.168.84.1(暴力破解账号密码)
或者nmap -p 25 --script=smtp-enum-user.nse smtp.xx.com(枚举用户)
检测Stuxnet蠕虫 nmap --script stuxnet-detect -p 445 192.168.84.131
SNMP安全审计 nmap -sU -p 161 --script=snmp-netstat 192.168.84.131(获取目标主机网络连接状态)
或者 nmap -sU -p 161 --script=snmp-processes 192.168.84.131(枚举运行的系统进程)
或者 nmap -sU -p 161 --script=snmp-win32-services 192.168.84.131(获取Windows服务器的服务)
或者 nmap -sU -p 161 --script=snmp-brute 192.168.84.131(口令审计)

十 Nmap技巧

查看详细信息		nmap -v 192.168.84.131
发送以太网数据包 nmap --send-eth 192.168.84.131(数据链路层发送报文)
网络层发送报文 nmap --send-ip 192.168.84.131
假定拥有所有权 nmap --privileged 192.168.84.131
在交互模式中启动 nmap --interactive
查看Nmap版本号 nmap -V 或者 nmap --version
设置调试级别 namp -d 1 192.168.84.131(级别1-9,9为*别,产生的数据非常多)
跟着发送接收的报文 nmap --pcakage-trace -p 20-30 192.168.84.131
列举接口和路由 nmap --iflist www.0day.co
指定网络接口 nmap -e eth0 192.168.84.131(指定从eth0发送数据)
继续中断扫描 nmap -oG 1.txt -v 192.168.84.1/24(使用-oG将扫描结果保存为txt,在扫描过程中按下Ctrl+C终止扫描)
nmap --resume 1.txt(继续扫描)
nmap的分布式实现——Dnmap
编写Nse脚本
探测防火墙规则 nmap --script=firewalk --traceroute 192.168.84.131
VMWare认证破解 nmap -p 902 --script vmauthd-brute 192.168.84.131

十一 Nmap保存和输出

标准保存(-oN)		nmap -F -oN test1.txt 192.168.84.131(-F选项为快速扫描)
XML保存(-oX) nmap -F -oX test1.xml 192.168.84.131
133t保存(-oS) nmap -F -oS test2.txt 192.168.84.131
Grep保存(-oG) nmap -F -oG test3.txt 192.168.84.131 (适用于继续中断扫描,不推荐)
保存到所有格式(-oA) nmap -F -oA testA 192.168.84.131
(以标准格式、XML格式和Grep格式一次性保存,分别存放在testA.nmap,testA.xml和testA.gnmap文件中)
补充保存文件 nmap -F --append-output -oN test1.txt 192.168.84.131(XML格式不支持)
转换XML保存(-oX) nmap -F -oX testB.xml --stylesheet http://www.insecure.org/nmap/data/nmap.xsl 192.168.84.131(将XSL样式表转换为XML并保持)
忽略XML声明的XSL样式表 nmap -oX testC.xml --no-stylesheet 192.168.84.131(禁止Nmap的XML保存关联任何XSL样式表)

(完)

上一篇:python中HTMLParser简单理解


下一篇:python——生成器