3.Nmap端口扫描及应用
3.Nmap端口扫描及应用
Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具,软件名字Nmap是Network Mapper的简称。Nmap最初是由Fyodor在1997年开始创建的,它主要用来扫描网上计算机开放的网络连接端,确定运行的服务,并且可以推断计算机运行哪个操作系统(这是亦称 fingerprinting),系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,Nmap后续增加了漏洞发现和暴力破解等功能。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。
Nmap有linux版本和windows版本,可以单独安装,在kali以及pentestbox中默认都安装了nmap。Windows下Zenmap是Nmap官方提供的图形界面,通常随Nmap的安装包发布。Zenmap是用Python语言编写而成的开源免费的图形界面,能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS等)。Zenmap旨在为nmap提供更加简单的操作方式。简单常用的操作命令可以保存成为profile,用户扫描时选择profile即可;可以方便地比较不同的扫描结果;提供网络拓扑结构(NetworkTopology)的图形显示功能。
Web安全验证中,正面的安全验证是一种思路,横向和纵向安全验证也是一种思路,在安全验证过程中,目标主站的防护越来越严格,而子站或者目标所在IP地址的C段或者B端的安全验证相对容易,这种安全验证涉及目标信息的搜集和设定,而对这些目标信息收集最主要方式是子域名暴力破解和端口扫描。本节这里主要介绍在pentestbox中和windows系统中如何使用Nmap进行端口扫描以及漏洞利用的思路。
3.1安装与配置NMAP
Nmap可以运行在大多数主流的计算机操作系统上,并且支持控制台和图形两种版本。在Windows平台上,Nmap能够运行在Windows 2000/ Win2003/XP/Vista/Win7平台上,目前最新版本为7.60,官方下载地址:https://nmap.org/dist/nmap-7.60-setup.exe 。
1.Windows下安装
将nmap-7.60-setup.exe文件下载到计算机上,双击运行该程序按照默认设置即可。完成安装后,运行“Nmap - Zenmap GUI”即可,在Windows下面可以是命令行下,也可以使图形界面,如图1所示。Zenmap是Nmap官方提供的图形界面,通常随Nmap的安装包发布。Zenmap是用Python语言编写而成的开源免费的图形界面,能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS等)。Zenmap旨在为nmap提供更加简单的操作方式。简单常用的操作命令可以保存成为profile,用户扫描时选择profile即可;可以方便地比较不同的扫描结果;提供网络拓扑结构(NetworkTopology)的图形显示功能。
2.linux下安装
(1)基于RPM安装
rpm –vhU https://nmap.org/dist/nmap-7.60-1.x86_64.rpm
(2)基于yum安装
yum install nmap
(3)apt安装
apt-get install nmap
3.2端口扫描准备工作
1.准备好可用的nmap软件
可以在windows下安装nmap,也可以自行在linux下安装,kali及pentestbox默认安装了nmap。
(1)推荐下载pentestbox
pentestbox是一款Windows下集成的渗透测试平台,其官方网站地址:https://pentestbox.org/ ,最新版本为2.2版本,可以下载带有Metasploit程序,下载地址:
https://nchc.dl.sourceforge.net/project/pentestbox/PentestBox-with-Metasploit-v2.2.exe
下载完成后将该exe文件解压以后即可使用。
(2)下载nmap最新版本并升级pentestbox
例如nmap位于“D:\PentestBox\bin\nmap”文件夹下,则可以通过在windows下安装后将其nmap所有文件复制到该文件夹进行覆盖,使其升级到最新版本。在覆盖前最好最一个版本备份,防止因为覆盖后导致无法正常使用。pentestbox是一个在windows下加载的类linux平台,比较好用,可以实现一些需要在linux系统下的一些命令
2.整理并确定目标信息
通过子域名暴力破解,获取目前子域名的IP地址,对这些地址进行整理,并形成子域名或者域名地址所在的IP地址C端,例如192.168.1.1-254。如果是单个目标则可以ping或者域名查询等方法获取域名的真实IP地址。
3.3NMAP使用参数介绍
Nmap包含主机发现(Host Discovery)、端口扫描(Port Scanning)、版本侦测(Version Detection)
和操作系统侦测(Operating System Detection)四项基本功能。这四项功能之间相互独立又互相依赖,首先需要进行主机发现,随后确定端口状况,然后确定端口上运行具体应用程序与版本信息,然后可以进行操作系统的侦测。而在四项基本功能的基础上,Nmap提供防火墙与IDS(IntrusionDetection System,入侵检测系统)的规避技巧,可以综合应用到四个基本功能的各个阶段;另外Nmap提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展,其功能模块架构如图2所示。
1.nmap扫描参数详解
Usage: nmap [Scan Type(s)] [Options] {target specification}
nmap [扫描类型] [选项] {目标说明}
(1)目标说明
可以通过主机、IP地址和主机来进行扫描,例如: scanme.nmap.org, microsoft.com/24 , 192.168.0.1; 10.0.0-255.1-254,最简单的扫描就是nmap后跟目标主机名称、IP地址或者网络。
-iL <输入文件名称>:输入主机或者网络的列表,iL参数后跟输入文件的名称,文件内容为IP地址、IP地址范围或者网络地址。
-iR <num hosts>:随机选择目标进行扫描,0表示永远扫描。
--exclude <host1[,host2][,host3],...>: 排除主机/网络
--excludefile <exclude_file>: 从文件中排出主机或者网络
(2)主机发现
-sL: List Scan -简单列表扫描,一般很少用,就是发现主机的简单信息,不包含端口等信息。
-sn: Ping扫描 -不能端口扫描,主要发现主机列表,了解主机运行情况。
-Pn: 在线处理所有主机,略过主机发现
-PS/PA/PU/PY[portlist]: 使用TCP SYN/ACK, UDP 或者SCTP去发现给出的端口。
-PE/PP/PM: ICMP回声,时间戳,和子网掩码请求发现探针
-PO[protocol list]: IP 协议Ping,后跟协议列表
-n:不用域名解析,永不对它发现的活动IP地址进行反向域名解析。
-R:告诉Nmap 永远对目标IP地址作反向域名解析。
--dns-servers <serv1[,serv2],...>: 自定义指定DNS服务器
--system-dns:使用系统域名解析器,默认情况下,Nmap通过直接发送查询到您的主机上配置的域名服务器来解析域名。为了提高性能,许多请求(一般几十个)并发执行。如果您希望使用系统自带的解析器,就指定该选项。
--traceroute: 跟踪每个主机的跳路径
(3)扫描技术
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sS :TCP SYN扫描(半开放扫描),SYN扫描作为默认最受欢迎的扫描选项,它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口。
-sT :TCP connect()扫描, TCP连接扫描会留下扫描连接日志。
-sU :UDP扫描,它可以和TCP扫描如 SYN扫描(-sS)结合使用来同时检查两种协议,UDP扫描速度比较慢。
-sN: Null扫描,不设置任何标志位(tcp标志头是0)
-sF :FIN扫描,只设置TCP FIN标志位。
-sX :Xmas扫描,设置FIN,PSH,和URG标志位。
-sN; -sF; -sX (TCP Null,FIN,and Xmas扫描)扫描的关键优势是它们能躲过一些无状态防火墙和报文过滤路由器。 另一个优势是这些扫描类型甚至比SYN扫描还要隐秘一些。
--scanflags <flags>:定制的TCP扫描,--scanflags选项允许您通过指定任意TCP标志位来设计您自己的扫描。--scanflags选项可以是一个数字标记值如9 (PSH和FIN),但使用字符名更容易些。只要是URG,ACK,PSH,RST,SYN和 FIN的任何组合就行。
-sI <zombie host[:probeport]> (Idlescan),这种高级的扫描方法允许对目标进行真正的TCP端口盲扫描 (意味着没有报文从您的真实IP地址发送到目标)。相反,side-channel攻击利用zombie主机上已知的IP分段ID序列生成算法来窥探目标上开放端口的信息。 IDS系统将显示扫描来自您指定的zombie机。 除了极端隐蔽(由于它不从真实IP地址发送任何报文), 该扫描类型可以建立机器间的基于IP的信任关系。端口列表从zombie主机的角度。显示开放的端口。
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
-sO: IP协议扫描,确定目标机支持哪些IP协议 (TCP,ICMP,IGMP,等等)。协议扫描以和UDP扫描类似的方式工作。它不是在UDP报文的端口域上循环,而是在IP协议域的8位上循环,发送IP报文头。 报文头通常是空的,不包含数据,甚至不包含所申明的协议的正确报文头TCP,UDP,和ICMP是三个例外。它们三个会使用正常的协议头,因为否则某些系统拒绝发送,而且Nmap有函数创建它们。
-b <ftp relay host>:FTP弹跳扫描,FTP协议的一个有趣特征是支持所谓代理ftp连接。它允许用户连接到一台FTP服务器,然后要求文件送到一台第三方服务器。 这个特性在很多层次上被滥用,所以许多服务器已经停止支持它了。其中一种就是导致FTP服务器对其它主机端口扫描。 只要请求FTP服务器轮流发送一个文件到目标主机上的所感兴趣的端口。 错误消息会描述端口是开放还是关闭的。 这是绕过防火墙的好方法,因为FTP服务器常常被置于可以访问比Web主机更多其它内部主机的位置。Nmap用-b选项支持ftp弹跳扫描。参数格式是 <username>:<password>@<server>:<port>。<Server> 是某个脆弱的FTP服务器的名字或者IP地址。 您也许可以省略<username>:<password>, 如果服务器上开放了匿名用户(user:anonymous password:-wwwuser@)。 端口号(以及前面的冒号) 也可以省略,如果<server>使用默认的FTP端口(21)。
端口说明和扫描顺序:
-p <port ranges>:仅仅扫描指定的端口,例如-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)
--exclude-ports <port ranges>:从扫描端口范围中排除扫描端口。
-F:快速扫描,仅仅扫描top 100端口。
-r: 不要按随机顺序扫描端口,顺序对端口进行扫描
--top-ports <number>: 扫描number个最常见的端口,例如nmap -sS -sU -T4 --top-ports 300 scanme.nmap.org,参数-sS表示使用TCP SYN方式扫描TCP端口;-sU表示扫描UDP端口;-T4表示时间级别配置4级;--top-ports 300表示扫描最有可能开放的300个端口(TCP和UDP分别有300个端口)
(4)服务和版本信息探测
-sV:打开版本和服务探测,可以用-A同时打开操作系统探测和版本探测
--version-intensity <level>:设置版本扫描强度,设置从0到9,默认是7,值越高越精确,但扫描时间越长
--version-light:打开轻量级模式,扫描快,但它识别服务的可能性也略微小一点。
--version-all: 保证对每个端口尝试每个探测报文(强度9)
--version-trace: 跟踪版本扫描活动,打印出详细的关于正在进行的扫描的调试信息
(5)脚本扫描
-sC: 相当于--script=default,nmap脚本在线网站https://svn.nmap.org/nmap/scripts/
--script=<Lua scripts>: <Lua scripts> 是一个逗号分隔的目录、脚本文件或脚本类别列表,nmap常见的脚本在scripts目录下,例如ftp暴力破解脚本“ftp-brute.nse”
--script-args=<n1=v1,[n2=v2,...]>: 为脚本提供默认参数
--script-args-file=filename: 使用文件来为脚本提供参数
--script-trace: 显示所有发送和接收的数据
--script-updatedb: 在线更新脚本数据库.
--script-help=<Lua scripts>:显示脚本的帮助信息。
(6)服务器版本探测:
-O: 启用操作系统检测,也可以使用-A来同时启用操作系统检测和版本检测
--osscan-limit: 针对指定的目标进行操作系统检测
--osscan-guess: 推测操作系统检测结果
(7)时间和性能:
选项<time> 设置秒,也可以追加到毫秒,s-秒,ms-毫秒,m-分钟,h-小时
-T<0-5>: 设置时间扫描模板,T 0-5分别为paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)。T0,T1用于IDS躲避,Polite模式降低了扫描速度以使用更少的带宽和目标主机资源,默认为T3,Aggressive模式假设用户具有合适及可靠的网络从而加速 扫描。Insane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。
--min-hostgroup/max-hostgroup <size>: 调整并行扫描组的大小
--min-parallelism/max-parallelism <numprobes>: 调整探测报文的并行度
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>:调整探测报文超时 --max-retries <tries>:扫描探针重发的端口数
--host-timeout <time>: 多少时间放弃目标扫描
--scan-delay/--max-scan-delay <time>: 在探测中调整延迟时间
--min-rate <number>:每秒发送数据包不少于<数字>
--max-rate <number>: 每秒发送数据包不超过<数字>
(8)防火墙/ IDS逃避和欺骗:
-f; --mtu <val>:报文包,使用指定的MTU (optionally w/given MTU) 使用小的IP包分段。其思路是将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难
-D <decoy1,decoy2[,ME],...>: 使用诱饵隐蔽扫描
-S <IP_Address>:源地址哄骗
-e <iface>:使用指定的接口
-g/--source-port <portnum>:源端口哄骗
--proxies <url1,[url2],...>:通过HTTP / Socks4代理传递连接
--data <hex string>:向发送的包追加一个自定义有效负载
--data-string <string>:向发送的数据包追加自定义ASCII字符串
--data-length <num>:将随机数据追加到发送的数据包
--ip-options <options>:用指定的IP选项发送数据包
--ttl <val>: 设置IP的ttl值
--spoof-mac <mac address/prefix/vendor name>:欺骗你的MAC地址
--badsum: 发送数据包伪造TCP/UDP/SCTP校验
输出:
-oN/-oX/-oS/-oG <file>: 输出正常扫描结果,XML, 脚本小子,和Grep输出格式,指定定输出文件名
-oA <basename>:一次输出三种主要格式
-v: 增量水平(使用 -vv or more效果更好)
-d: 提高调试水平(使用 -dd or more 效果更好)
--reason: 显示端口处于某一特定状态的原因。
--open: 只显示打开(或可能打开)端口
--packet-trace: 显示所有数据包的发送和接收
--iflist: 打印主机接口和路由(用于调试)
--append-output: 附加到指定的输出文件,而不是乱码
--resume <filename>:恢复中止扫描
--stylesheet <path/URL>:设置XSL样式表,转换XML输出
--webxml: 参考更便携的XML 的Nmap.org样式。
--no-stylesheet: 忽略XML声明的XSL样式表,使用该选项禁止Nmap的XML输出关联任何XSL样式表
其它选项:
-6: 启用IPv6扫描
-A: 激烈扫描模式选项,启用OS、版本,脚本扫描和跟踪路由
--datadir <dirname>:说明用户Nmap数据文件位置
--send-eth/--send-ip: 使用原以太网帧或在原IP层发送
--privileged: 假定用户具有全部权限
--unprivileged: 假设用户没有原始套接字特权
-V: 打印版本号
-h: 使用帮助信息
3.4Zenmap扫描命令模板
Zenmap提供了10类模板,供用户进行扫描,它们分别是:
(1) Intense scan:该选项是扫描速度最快,最常见的TCP端口扫描。它主要确定操作系统类型和运行的服务。
nmap -T4 -A -v 192.168.1.0/24
(2)Intense scan plus UDP:除了跟Intense scan一样外还扫描UDP端口。
nmap -sS -sU -T4 -A -v 192.168.0.0/24
(3)Intense scan, all TCP ports:将扫描所有的TCP端口
nmap -p 1-65535 -T4 -A -v 192.168.0.0/24
(4)Intense scan, no ping:扫描假设主机都是存活的,对常见的TCP端口扫描
nmap -T4 -A -v -PN 192.168.0.0/24
(5)Ping scan:只进行ping扫描,不扫描端口。
nmap -sP -PE 192.168.0.0/24
(6) Quick scan 快速扫描
nmap -T4 -F 192.168.0.0/24
(7)Quick scan plus
nmap -sV -T4 -O -F 192.168.0.0/24
(8)Quick traceroute
nmap -sP -PE --traceroute 192.168.0.0/24
(9)Regular scan
nmap 192.168.0.0/24
(10) Slow comprehensive scan
nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 –script “default or (discovery and safe)” 192.168.0.0/24
3.5使用nmap中的脚本进行扫描
1.支持14大类别扫描
前面对script参数进行介绍过,在实际扫描过程中可以用其来进行暴力破解、漏洞等多达14大功能进行扫描,其脚本主要分为以下14类,在扫描时可根据需要设置--script=“类别”进行比较笼统的扫描:
(1)auth:负责处理鉴权证书的脚本
(2)broadcast:在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
(3)brute:提供暴力破解方式,针对常见的应用如http/snmp/ftp/mysql/mssql等
(4)default:使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
(5)discovery:对网络进行更多的信息,如SMB枚举、SNMP查询等
(6)dos:用于进行拒绝服务攻击
(7)exploit:利用已知的漏洞入侵系统
(8)external:利用第三方的数据库或资源,例如进行whois解析
(9)fuzzer:模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
(10)intrusive:入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
(11)malware:探测目标机是否感染了病毒、开启了后门等信息
(12)safe:此类与intrusive相反,属于安全性脚本
(13)version:负责增强服务与版本扫描(VersionDetection)功能的脚本
(14)vuln:负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
2.常见应用实例
(1)检测部分应用弱口令
nmap--script=auth 192.168.1.
(2)简单密码的暴力猜解
nmap--script= brute 192.168.1.
(3)默认的脚本扫描和攻击
nmap--script=default 192.168.1.或者nmap-sC 192.168.1.
(4)检查是否存在常见的漏洞
nmap--script=vuln 192.168.1.*
(5)在局域网内探查服务开启情况
nmap –n –p 445 --script=broadcast 192.168.1.1
(6)利用第三方的数据库或资源进行查询,可以获取额外的一些信息
nmap --script external 公网独立IP地址
3.密码暴力破解
(1) 暴力破解ftp
nmap -p 21 -script ftp-brute -script-arges mysqluser=root.txt,passdb=password.txt IP
(2) 匿名登录ftp
nmap -p 21 -script=ftp-anon IP
(3)http暴力破解
nmap -p 80 -script http-wordpress-brute -script-args -script-args userdb=user.txt passdb=password.txt IP
(3)joomla系统暴力破解
nmap -p 80 -script http-http-joomla-brute -script-args -script-args userdb=user.txt passdb=password.txt IP
(4)暴力破解pop3账号
nmap -p 110 -script pop3-brute -script-args userdb=user.txt passdb=password.txt IP
(5)暴力破解smb账号
nmap -p 445 -script smb-brute.nse -script-args userdb=user.txt passdb=password.txt IP
(6)vnc暴力破解
nmap -p 5900 -script vnc-brute -script-args userdb=/root/user.txt passdb=/root/password.txt IP
nmap--script=realvnc-auth-bypass 192.168.1.1
nmap--script=vnc-auth 192.168.1.1
nmap--script=vnc-info 192.168.1.1
(7)暴力破解mysql数据库
nmap - p 3306 --script mysql-databases --script-arges mysqluser=root,mysqlpass IP
nmap -p 3306 --script=mysql-variables IP
nmap -p 3306 --script=mysql-empty-password IP //查看MYSQL空口令
nmap -p 3306 --script=mysql-brute userdb=user.txt passdb=password.txt
nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root', \mysql-audit.password='foobar',mysql-audit.filename='nselib/dat/mysql-cis.audit'" IP
(8)oracle密码破解
nmap -p 1521 --script oracle-brute --script-args oracle-brute.sid=test --script-args userdb=/root/user.txt passdb=/root/password.txt IP
(9)MSSQL密码暴力破解
nmap -p 1433 --script ms-sql-brute --script-args userdb=user.txt passdb=password.txt IP
nmap -p 1433 --script ms-sql-tables --script-args mssql.username=sa,mssql.password=sa IP
xp_cmdshell执行命令:
nmap –p 1433 --script ms-sql-xp-cmdshell- -script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd= "netuser" IP
dumphash值:
nmap -p 1433 –script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa IP
(10)informix数据库破解
nmap --script informix-brute-p 9088 IP
(11)pgsql破解
nmap-p 5432 --script pgsql-brute IP
(12)snmp破解
nmap -sU --script snmp-brute IP
(13) telnet破解
nmap -sV --script=telnet-brute IP
4.CVE漏洞危害
在nmap的脚本目录中(D:\PentestBox\bin\nmap\scripts)有很多的各种漏洞利用脚本,如图3所示,打开该脚本文件,其中会有useage,例如测试cve2006-3392漏洞:
nmap -sV --script http-vuln-cve2006-3392 <target>
nmap -p80 --script http-vuln-cve2006-3392 --script-args http-vuln-cve2006-3392.file=/etc/shadow <target>
图3测试cve漏洞
3.6NMap扫描实战
1.使用实例
(1)nmap -v scanme.nmap.org
扫描主机scanme.nmap.org中所有的保留TCP端口(1000端口)。选项-v启用细节模式。
(2)nmap -sS -O scanme.nmap.org/24
进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。
(3)nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。
(4)nmap -v -iR 100000 -P0 -p 80
随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。
(5)nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20
扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。
(6)host -l company.com | cut -d -f 4 | nmap -v -iL -
进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。
2.常用扫描
(1)nmap -p 1-65535 -T4 -A -v 47.91.163.1-254 -oX 47.91.163.1-254.xml
扫描47.91.163.1-254段IP地址,使用快速扫描模式,输出47.91.163.1-254.xml
(2)nmap -v 47.91.163.1-254
扫描C端常见TCP端口
(3)nmap -O 47.91.163.1
探测47.91.163.1服务器OS版本和TCP端口开放情况
(4)nmap -sn 10.0.1.161-166
扫描存活主机
(5)nmap -e eth0 10.0.1.161 -S 10.0.1.168 -Pn
使用伪装地址10.0.1.168对10.0.1.161进行扫描
(6)nmap -iflist
查看本地路由和接口
(7)nmap --script smb-vuln-ms17-010.nse -p 445 192.168.1.1
nmap –script=samba-vuln-cve-2012-1182 -p 139 192.168.1.3
对主机192.168.1.1使用漏洞脚本smb-vuln-ms17-010.nse进行检测。
(8)nmap --script whois-domain.nse www.secbang.com
获取secbang.com的域名注册情况,该脚本对国外域名支持较好。
(9)nmap --script ftp-brute -p 21 127.0.0.1
暴力破解127.0.0.1的ftp账号
(10)nmap -sV –script=http-enum 127.0.0.1
枚举127.0.0.1的目录
3.命令行下实战扫描
对整理的IP地址段或者IP实施扫描:
(1)单一IP地址段扫描
nmap -p 1-65535 -T4 -A -v 47.91.163.1-254 -oX 47.91.163.1-254.xml
(2)IP地址段扫描
nmap -p 1-65535 -T4 -A -v -iL mytarget.txt -oX mytarget.xml
4.Windows下使用Zenmap扫描实例
Nmap Windows版本Zenmap有多种扫描选项,它对网络中被检测到的主机,按照选择的扫描选项和显示节点进行探查。
(1)设定扫描范围
在Zenmap中设置Target(扫描范围),如图4所示,设置扫描范围为C段IP地址106.37.181.1-254。Target可以是单个IP,IP地址范围,以及CIDR地址格式。
图4设置扫描对象
(2)选择扫描类型
在Profile中共有十种类型可供选择,根据实际情况进行选择。
(3)单击“Scan”,开始扫描,扫描结果如图5所示,可以单击标签Namp Output、ports/Hosts,Topology、Host Details、Scans进行查看。
图5查看扫描结果
3.7扫描结果分析及处理
1.查看扫描文件
有些情况,扫描是在服务器上进行,扫描结束后,将扫描结果下载到本地进行查看,如图6所示,又有XSL样式表解析导致出错。通常原因是由于nmap中的nmap.xsl文件位置不对,如图7所示,将正确的文件位置设置好即可。例如原nmap地址为:
C:/Program Files (x86)/Nmap/nmap.xsl
新的地址为:
E:\Tools\测试平台\PentestBox-with-Metasploit-v2.2\bin\nmap\nmap.xsl
在扫描结果的xml文件中进行替换即可,切记需要更换路径符号“\”为“/”。
图6查看xml显示错误
图7修改文件位置
2.分析并处理扫描结果
(1)从概览中查看端口开放主机
如图8所示,打开xml文件后,在文件最上端显示扫描总结,有底色的结果表示端口开放,黑色字体显示的IP表示未开放端口或者防火墙进行了拦截和过滤。
图8查看扫描概览
(2)逐个查看扫描结果
对浅绿色底的IP地址逐个进行查看,例如查看47.91.163.219,如图9所示,打开后可以看到IP地址以及端口开放等扫描结果情况,在open中会显示一些详细信息。
图9查看扫描结果具体扫描情况
(3)测试扫描端口开放情况
使用http://ip:port 进行访问测试,查看网页是否可以正常访问,例如本例中http://47.91.163.174:8080/ 可以正常访问,系统使用tomcat,如图10所示。
图10访问扫描结果
(4)技巧
在浏览器中使用Ctrl+F快捷键可以对想查看的关键字进行检索。对所有的测试结果要记录,便于后期选择安全验证方法。
3.进一步安全验证
通过对扫描结果进行分析整理,对服务器开放的服务以及可能存在的漏洞进行直接或者间接测试,例如对Java平台,可以测试是否存在struts系列漏洞,如图11所示。有的目标还需要进行暴力破解,工具扫描等工作,直到发现漏洞,获取权限为止。
图11直接测试是否存在漏洞
3.8扫描后期安全验证思路
在进一步安全验证中需要结合多个知识点,需要针对出现的问题进行相应的检索。其可供参考思路如下:
(1)整理目标的架构情况,针对架构出现的漏洞进行尝试。
(2)如果有登录管理界面,尝试弱口令登录后暴力破解。
(3)使用wvs等扫描器对站点进行漏洞扫描
(4)使用burpsuite对站点进行漏洞分析和测试。
(5)如果是陌生的系统,可以通过百度等搜索引擎进行搜索查看,网上是否曾经出现漏洞和利用方法。
(6)下载同类源代码搭建环境进行测试,了解系统存在漏洞,对存在漏洞进行测试总结和再现,并对实际系统进行测试。
(7)挖掘系统可能存在的漏洞
(8)利用XSS来获取管理员的密码等信息。
(9)若掌握邮箱,可以通过msf生成mu-ma/apk等进行社工危害
(10)所有方法不行,就等等,重新整理思路。
3.9本文参考文章
https://nmap.org/man/zh/
http://www.nmap.com.cn/doc/manual.shtm
http://www.51testing.com/html/69/n-3718769.html