NMAP
1. 概要
nmap是一款用于网络管理员检测一个大的网络系统中哪些主机开启了哪些服务,以及这些服务的版本甚至漏洞信息。
2. nmap扫描出来机器的开放端口有3个状态
l open:开放了端口
l filtered:有防火墙在过滤该端口
l unfiltered:需要进一步查明
3. nmap的命令非常简单
nmap [option] $destip
$ip可以是单个IP,可以是子网,可以是IP段
4. 几个主要的扫描选项
-sP ping包扫描主机。nmap发送的是一个icmpecho和ACK包。
-sT TCP扫描端口。
-sS TCP半开放扫描,只用SYN包,可以防止在目标机器上留下连接日志。
-sU UDP扫描端口
-O 扫描操作系统类型。
-sF FIN包扫描,防止防火墙丢弃SYN包
-sV 检测端口所在进程的版本
-sI 匿名扫描技术,利用的是ident技术。
5. 检测脆弱性的漏洞(Nmap的脚本)
nmap脚本才是namp渗透测试中最重要的功能,namp脚本采用lua语言。NSE脚本库如今已经有400多个脚本,覆盖了各种不同的网络机制(从SMB漏洞检测到Stuxnet探测,及中间的一些内容)。NSE的强大,依赖它强大的功能库,这些库可以非常容易的与主流的网络服务和协议,进行交互。
调用参数为:
l -sC: 等价于--script=default,使用默认类别的脚本进行扫描。
l --script=<Lua scripts>: <Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述
l --script-args=<n1=v1,[n2=v2,...]>: 为脚本提供默认参数
l --script-args-file=filename: 使用文件来为脚本提供参数
l --script-trace: 显示脚本执行过程中发送与接收的数据
l --script-updatedb: 更新脚本数据库
l --script-help=<Lua scripts>: 显示脚本的帮助信息,其中<Lua scripts>部分可以逗号分隔的文件或脚本类别。
nmap按脚本分类:
l auth: 负责处理鉴权证书(绕开鉴权)的脚本
l broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
l brute: 提供暴力破解方式,针对常见的应用如http/snmp等
l default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
l discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
l dos: 用于进行拒绝服务攻击
l exploit: 利用已知的漏洞入侵系统
l external: 利用第三方的数据库或资源,例如进行whois解析
l fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
l malware: 探测目标机是否感染了病毒、开启了后门等信息
l safe: 此类与intrusive相反,属于安全性脚本
l version: 负责增强服务与版本扫描(Version Detection)功能的脚本
l vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
6. 示例
检测活在网络上的主机(主机发现)
>nmap $ip
比如我扫描10.67.3.*
检测主机上开放的端口(端口发现或枚举)
>nmap –p$port $ip
$port 可以是一个端口,可以是多个端口,多个端口以逗号相隔
比如我扫描10.67.166.166的443端口是否开放
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
nmap –O 检测操作系统版本,通过发送特定数据包,检测返回包的特定信息。
检测固定软件的漏洞
7. references
nmap官网:http://nmap.org/
乌云知识库:http://drops.wooyun.org/tips/2002,http://drops.wooyun.org/tips/2188
nmap脚本开发:http://blog.youkuaiyun.com/nixawk/article/details/39701019
内网论坛:http://bbs.intra.nsfocus.com/forums/thread/79766.aspx