[TOC]
## namp
Nmap是一个网络连接端口扫描软件,用来扫描网上电脑开放的网络连接端口。确定哪些服务运行在哪些连接端口,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
功能介绍:http://blog.sina.com.cn/s/blog_811d9fdd0101ey07.html
10种扫描方式解释:http://www.cnblogs.com/c4isr/archive/2012/12/07/2807491.html
详细教程及下载方式参见:http://nmap.org/
**Nmap的优劣势**
优势:
* 功能灵活强大,支持多种目标,大量计算机的同时扫描;
* 开源,相关帮助文档十分详细;
* 流行,由于其具有强大的扫描机探测功能,,已被成千上万安全专家使用。
劣势:
* Nmap参数众多,难以一一记忆;
### 1.主机发现
**主机发现原理:**
主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。
**主机发现基本用法**
~~~sh
-sL List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sn Ping Scan 只进行主机发现,不进行端口扫描。
-Pn 将所有指定的主机视作开启的,跳过主机发现的过程。
-n/-R -n表示不进行DNS解析;-R表示总是进行DNS解析。
--system-dns 指定使用系统的DNS服务器
--traceroute 追踪每个路由节点
-PE/PP/PM 使用ICMP echo, timestamp, and netmask 请求包发现主机。
-PO[protocollist] 使用IP协议包探测对方主机是否开启。
-PS/PA/PU/PY[portlist] 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
--dns-servers <serv1[,serv2],…> 指定DNS服务器。
#例:扫描局域网10.1.1.1-10.1.1.100范围内哪些IP的主机是活动的。
nmap –sn 10.1.1.1-100
~~~
### 2.端口扫描
端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。Nmap通过探测将端口划分为6个状态:
| 状态 | 意义 |
| ---------- | ---------------------------------------- |
| open | 端口是开放的 |
| closed | 端口是关闭的 |
| filtered | 端口被防火墙IDS/IPS屏蔽,无法确定其状态 |
| unfiltered | 端口没有被屏蔽,但是否开放需要进一步确定 |
|`open|filtered` | 端口是开放的或被屏蔽 |
|`closed|filtered` | 端口是关闭的或被屏蔽 |
端口扫描方面非常强大,提供了很多的探测方式:
* TCP SYN scanning
* TCP connect scanning
* TCP ACK scanning
* TCP FIN/Xmas/NULL scanning
* UDP scanning
* 其他方式
端口扫描用法:
~~~sh
-sS/sT/sA/sW/sM 指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
-sU 指定使用UDP扫描方式确定目标主机的UDP端口状况。
-sN/sF/sX 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
--scanflags 定制TCP包的flags。
-sI <zombiehost[:probeport]> 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
-sY/sZ 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
-sO 使用IP protocol 扫描确定目标机支持的协议类型。
-b 使用FTP bounce scan扫描方式
nmap -sS -sU -T4 -top-ports 300 1.1.1.100
# -sS表示使用TCP SYN方式扫描TCP端口;
# -sU表示扫描UDP端口;
# -T4表示时间级别配置4级;
# –top-ports 300表示扫描最有可能开放的300个端口(TCP和UDP分别有300个端口)。
~~~
### 3.版本探测:
版本侦测主要分为以下几个步骤:
* 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
* 如果是TCP端口,尝试建立TCP连接。
尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。
通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。
nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
* 如果通过“Welcome Banner”无法确定应用程序版本,再尝试发送其他的探测包(从nmap-services-probes中挑选合适的probe)
将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
* 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。
根据结果对比分析出UDP应用服务类型。
* 如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
* 如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。
版本侦测用法
~~~bash
-sV 指定让Nmap进行版本侦测
--version-intensity 指定版本侦测强度(0-9),默认为7。数值越高越准确,但运行时间越长。
--version-light 指定使用轻量侦测方式 (intensity 2)
--version-all 尝试使用所有的probes进行侦测 (intensity 9)
--version-trace 显示出详细的版本侦测过程信息。
# 对主机10.1.1.100进行版本侦测。
nmap –sV 10.1.1.100
~~~
### 4.os探测
OS侦测原理
Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。
OS侦测用法
~~~
-O 指定Nmap进行OS侦测。
--osscan-limit 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
--osscan-guess 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统
nmap –O 10.1.1.100
~~~~
### 5.漏洞扫描
~~~sh
# 扫描端口并且标记可以爆破的服务
nmap 目标 --script=ftp-brute,\
imap-brute,\
smtp-brute,\
pop3-brute,\
mongodb-brute,\
redis-brute,\
ms-sql-brute,\
rlogin-brute,\
rsync-brute,\
mysql-brute,\
pgsql-brute,\
oracle-sid-brute,\
oracle-brute,\
rtsp-url-brute,\
snmp-brute,\
svn-brute,\
telnet-brute,\
vnc-brute,xmpp-brute
# 判断常见的漏洞并扫描端口
nmap 目标 --script=auth,vuln
# 精确判断漏洞并扫描端口
nmap 目标 --script=dns-zone-transfer,\
ftp-anon,ftp-proftpd-backdoor,\
ftp-vsftpd-backdoor,\
ftp-vuln-cve2010-4221,\
http-backup-finder,\
http-cisco-anyconnect,\
http-iis-short-name-brute,\
http-put,http-php-version,\
http-shellshock,\
http-robots.txt,\
http-svn-enum,\
http-webdav-scan,\
iis-buffer-overflow,\
iax2-version,\
memcached-info,\
mongodb-info,\
msrpc-enum,\
ms-sql-info,\
mysql-info,\
nrpe-enum,\
pptp-version,\
redis-info,\
rpcinfo,\
samba-vuln-cve-2012-1182,\
smb-vuln-ms08-067,\
smb-vuln-ms17-010,\
snmp-info,sshv1,\
xmpp-info,\
tftp-enum,\
teamspeak2-version
~~~
- src导航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查询
- 备案信息查询
- 信用信息查询
- IP反查站点的站
- 浏览器插件
- 收集子域名信息
- 在线平台
- 工具枚举
- ssl与证书透明度
- DNS历史解析
- DNS域传送漏洞
- C段探测
- JS文件域名&ip探测
- 搜索引擎&情报社区
- google黑客
- 威胁情报
- 钟馗之眼
- 收集相关应用信息
- 微信公众号&微博
- APP收集&反编译
- 收集常用端口信息
- 常见端口&解析&总结
- 扫描工具
- 网络空间引擎搜索
- 浏览器插件
- nmap扫描
- 收集敏感信息
- 源码泄露
- 邮箱信息收集
- 备份文件泄露
- 目录&后台扫描
- 公网网盘
- 历史资产
- 指纹&WAF&CDN识别
- 指纹识别
- CDN识别
- 绕过CDN查找真实IP
- WAF识别
- 漏洞资源和社工
- 漏洞公共资源库
- 社会工程
- 资产梳理
- 各种对渗透有帮助的平台
- 扫描器
- 扫描器对比
- AppScan(IBM)_web和系统
- AWVS_web扫描
- X-Scan_系统扫描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_绿盟_web
- 安恒明鉴
- Nessus_系统
- nexpose_系统
- 启明天镜_web_系统
- SQL注入
- 常用函数
- sql注入步骤
- union注入和information_schema库
- 函数和报错注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解决方案
- Access数据库注入
- MSSQL数据库注入
- MYSQL数据库注入
- 神器SQLmap
- xss跨站脚本攻击
- xss原理和分类
- xss案例和修复
- xss绕过技巧
- xss案例
- 文件上传下载包含
- 常有用文件路径
- 文件上传漏洞
- 文件下载漏洞
- 文件包含漏洞
- upload-labs上传漏洞练习
- XXE、SSRF、CSRF
- SSRF原理基础
- SSRF案例实战
- CSRF原理基础
- CSRF案例及防范
- XXE之XML_DTD基础
- XXE之payload与修复
- XXE结合SSRF
- 远程命令执行与反序列化
- 远程命令和代码执行漏洞
- 反序列化漏洞
- 验证码与暴力破解
- 爆破与验证码原理
- CS架构暴力破解
- BS架构暴力破解
- WEB编辑器漏洞
- 编辑器漏洞基础
- Ewebeditor编辑器
- FCKeditor编辑器
- 其他编辑器
- web中间件漏洞
- 中间件解析漏洞
- Tomcat常见的漏洞总结
- Jboss漏洞利用总结
- Weblogic漏洞利用总结
- WEB具体步骤
- 旁注和越权
- CDN绕过
- 越权与逻辑漏洞
- WEB应用常见其他漏洞
- WEB登陆页面渗透思路
- 获取WEBshell思路
- 社工、钓鱼、apt
- 社工和信息收集
- 域名欺骗
- 钓鱼邮件
- 一些钓鱼用的挂马工具
- 代码审计
- 代码审计工具
- WAF绕过
- WAF基础及云WAF
- 各种WAF绕过方法
- 绕过WAF上传文件
- 系统提权
- windows系统提权
- linux系统提权
- 数据库提权操作系统
- 内网横向渗透
- 内网穿透方式
- 一些内网第三方应用提权
- ARP与DOS
- ARP欺骗
- DOS与DDOS
- 一些DOS工具