一 Nmap基础学习
- Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字Nmap是Network Mapper的简称。Nmap最初是由Fyodor在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。官网为:www.nmap.org。
- Windows下直接双击安装。下载地址:https://nmap.org/download.html
二 Nmap主机发现
基本扫描 nmap 192.168.42.101(可发现开放的端口及相关服务) 全面扫描 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样式表)
(完)