博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nmap在pentest box中的扫描及应用
阅读量:5990 次
发布时间:2019-06-20

本文共 8799 字,大约阅读时间需要 29 分钟。

   最近一直在思考,Web***中,正面的***是一种思路,横向和纵向***也是一种思路,在***过程中,目标主站的防护越来越严格,而子站或者目标所在IP地址的C段或者B端的***相对容易,这种***涉及目标信息的搜集和设定,而对这些目标信息收集最主要方式是子域名暴力破解和端口扫描。子域名暴力破解,会在下一篇文章中专门介绍,本文主要介绍端口扫描以及应用的思路。

 

一.端口扫描准备工作

1.下载pentestbox

  pentestbox是一款Windows下集成的***测试平台,其官方网站地址:https://pentestbox.org/,最新版本为2.2版本,可以下载带有Metasploit和不带Metasploit的程序,下载地址:

https://sourceforge.net/projects/pentestbox/files/

https://nchc.dl.sourceforge.net/project/pentestbox/PentestBox-with-Metasploit-v2.2.exe

下载完成后将该exe文件解压以后即可使用。

2.下载nmap最新版本并升级pentestbox

   目前nmap最新的稳定版本为7.6版本(https://nmap.org/dist/nmap-7.60-win32.zip),将其下载到本地,解压后,找到PentestBox 安装目录,例如:E:\PentestBox\bin\nmap,将nmap-7.60-win32.zip解压后的所有文件覆盖该目录,升级pentestbox中的nmap到最新版本。

3.整理并确定目标信息

    通过子域名暴力破解,获取目前子域名的IP地址,对这些地址进行整理,并形成子域名或者域名地址所在的IP地址C端,例如192.168.1.1-254。如果是单个目标则可以ping或者域名查询等方法获取域名的真实IP地址。

二、使用NMAP进行扫描

1.nmap扫描参数详解

Usage:nmap [Scan Type(s)] [Options] {target specification}

TARGETSPECIFICATION:

  Can pass hostnames, IP addresses, networks,etc.

  Ex: scanme.nmap.org, microsoft.com/24,192.168.0.1; 10.0.0-255.1-254

  -iL <inputfilename>:输入主机或者网络的列表,iL参数后跟输入文件的名称,文件内容为IP地址、IP地址范围或者网络地址

  -iR <num hosts>:随机选择目标进行扫描,0表示永远扫描。

  --exclude <host1[,host2][,host3],...>: 排除主机/网络

  --excludefile <exclude_file>: 从文件中排出主机或者网络

主机发现:

  -sL: List Scan -简单列表扫描,一般很少用,就是发现主机的简单信息,不包含端口等信息。

  -sn: Ping扫描 -不能端口扫描,主要发现主机列表,了解主机运行情况。

  -Pn: 在线处理所有主机,略过主机发现

  -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK, UDP 或者SCTP去发现给出的端口。

  -PE/PP/PM: ICMP回声,时间戳,和子网掩码请求发现探针

  -PO[protocol list]: IP 协议Ping,后跟协议列表

  -n:不用域名解析,永不对它发现的活动IP地址进行反向域名解析。

  -R:告诉Nmap 永远对目标IP地址作反向域名解析。

  --system-dns:使用系统域名解析器,默认情况下,Nmap通过直接发送查询到您的主机上配置的域名服务器来解析域名。为了提高性能,许多请求 (一般几十个 ) 并发执行。如果您希望使用系统自带的解析器,就指定该选项。

  --traceroute: 跟踪每个主机的跳路径

扫描技术:

  -sS/sT/sA/sW/sM: TCPSYN/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扫描,设置FINPSH,和URG标志位。

-sN;-sF; -sX TCP NullFINand Xmas扫描)扫描的关键优势是它们能躲过一些无状态防火墙和报文过滤路由器。另一个优势是这些扫描类型甚至比SYN扫描还要隐秘一些。

  --scanflags <flags>:定制的TCP扫描,--scanflags选项允许您通过指定任意TCP标志位来设计您自己的扫描。--scanflags选项可以是一个数字标记值如9 (PSHFIN)但使用字符名更容易些。只要是URG ACKPSH RSTSYNand FIN的任何组合就行。

-sI<zombie host[:probeport]> (Idlescan),这种高级的扫描方法允许对目标进行真正的TCP端口盲扫描 (意味着没有报文从您的真实IP地址发送到目标)。相反,side-channel***利用zombie主机上已知的IP分段ID序列生成算法来窥探目标上开放端口的信息。 IDS系统将显示扫描来自您指定的zombie机。除了极端隐蔽(由于它不从真实IP地址发送任何报文)该扫描类型可以建立机器间的基于IP的信任关系。端口列表从zombie主机的角度。显示开放的端口。

  -sY/sZ: SCTP INIT/COOKIE-ECHO scans

  -sO: IP协议扫描,确定目标机支持哪些IP协议 (TCPICMPIGMP,等等)。协议扫描以和UDP扫描类似的方式工作。它不是在UDP报文的端口域上循环,而是在IP协议域的8位上循环,发送IP报文头。报文头通常是空的,不包含数据,甚至不包含所申明的协议的正确报文头TCPUDP,和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:anonymouspassword:-wwwuser@)端口号(以及前面的冒号) 也可以省略,如果<server>使用默认的FTP端口(21)

端口说明和扫描顺序:

  -p <port ranges>:仅仅扫描指定的端口,例如-p22;-p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

  --exclude-ports <port ranges>:从扫描端口范围中排除扫描端口。

  -F:快速扫描(有限的端口)

  -r: 不要按随机顺序扫描端口,顺序对端口进行扫描

  --top-ports <number>: 扫描number个最常见的端口

服务和版本信息探测:

  -sV:打开版本和服务探测,可以用-A同时打开操作系统探测和版本探测

  --version-intensity <level>:设置版本扫描强度,设置从09,默认是7,值越高越精确,但扫描时间越长

  --version-light:打开轻量级模式,扫描快,但它识别服务的可能性也略微小一点。

  --version-all:  保证对每个端口尝试每个探测报文(强度 9)

  --version-trace: 跟踪版本扫描活动,打印出详细的关于正在进行的扫描的调试信息

脚本扫描:

  -sC: 相当于--script=default

  --script=<Lua scripts>: <Luascripts> 是一个逗号分隔的目录、脚本文件或脚本类别列表,nmap常见的脚本在scripts目录下,例如ftp暴力破解脚本“ftp-brute.nse

  --script-args=<n1=v1,[n2=v2,...]>: 提高扫描的参数

  --script-args-file=filename: 在文件中提供NSE 脚本参数

  --script-trace: 显示所有发送和接收的数据

  --script-updatedb: 在线更新脚本数据库.

  --script-help=<Lua scripts>:显示脚本的帮助信息。

  服务器版本探测:

  -O: 启用操作系统检测,也可以使用-A来同时启用操作系统检测和版本检测

  --osscan-limit: 针对指定的目标进行操作系统检测

  --osscan-guess: 推测操作系统检测结果

时间和性能:

  选项<time> 设置秒,也可以追加到毫秒,s-秒,ms-毫秒,m-分钟,h-小时

  -T<0-5>: 设置时间扫描模板,T 0-5分别为paranoid(0)sneaky (1)polite (2)normal(3) aggressive (4)insane (5)T0T1用于IDS躲避,Polite模式降低了扫描速度以使用更少的带宽和目标主机资源,默认为T3Aggressive模式假设用户具有合适及可靠的网络从而加速扫描。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>: 每秒发送数据包不超过<数字>

防火墙/ IDS逃避和欺骗:

  -f; --mtu <val>:报文包,使用指定的MTU (optionallyw/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>: 设置IPttl

  --spoof-mac <mac address/prefix/vendorname>:欺骗你的MAC地址

  --badsum: 发送数据包伪造TCP/UDP/SCTP校验

输出:

  -oN/-oX/-oS/-oG <file>: 输出正常扫描结果,XML 脚本小子,Grep输出格式,指定定输出文件名

  -oA <basename>:一次输出三种主要格式

  -v: 增量水平(使用 -vv ormore效果更好)

  -d: 提高调试水平(使用 -dd ormore 效果更好)

  --reason: 显示端口处于某一特定状态的原因。

  --open: 只显示打开(或可能打开)端口

  --packet-trace: 显示所有数据包的发送和接收

  --iflist: 打印主机接口和路由(用于调试)

  --append-output: 附加到指定的输出文件,而不是乱码

  --resume <filename>:恢复中止扫描

  --stylesheet <path/URL>:设置XSL样式表,转换XML输出

  --webxml:  参考更便携的XML Nmap.org样式。

  --no-stylesheet:忽略XML声明的XSL样式表,使用该选项禁止NmapXML输出关联任何XSL样式表

其它选项:

  -6: 启用IPv6扫描

  -A: 激烈扫描模式选项,启用OS、版本,脚本扫描和跟踪路由

  --datadir <dirname>:说明用户Nmap数据文件位置

  --send-eth/--send-ip: 使用原以太网帧或在原IP层发送

  --privileged: 假定用户具有全部权限

  --unprivileged: 假设用户没有原始套接字特权

  -V: 打印版本号

  -h: 使用帮助信息

2.使用实例

1nmap -vscanme.nmap.org

扫描主机scanme.nmap.org中所有的保留TCP端口(1000端口)。选项-v启用细节模式。

2nmap -sS -Oscanme.nmap.org/24

  进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描和操作系统检测,这个扫描需要有根权限。

3nmap -sV -p22531101434564 198.116.0-255.1-127

  进行主机列举和TCP扫描,对象为B188.116网段中2558位子网。这 个测试用于确定系统是否运行了sshdDNSimapd4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。

4nmap -v -iR100000 -P0 -p 80

   随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因此使用-P0禁止对主机列表。

5nmap -P0-p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20

扫描4096IP地址,查找Web服务器(ping),将结果以GrepXML格式保存。

6host -lcompany.com | cut -d -f 4 | nmap -v -iL -

进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux-- 其它系统进行区域传输时有不同的命令。

3.常用扫描

(1)nmap -p 1-65535 -T4 -A -v 47.91.163.1-254  -oX 47.91.163.1-254.xml

扫描47.91.163.1-254IP地址使用快速扫描模式输出47.91.163.1-254.xml

2nmap  -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

nmapscript=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的域名注册情况,该脚本对国外域名支持较好。

9nmap--script ftp-brute -p 21 127.0.0.1

暴力破解127.0.0.1的ftp账号

10nmap -sV–script=http-enum 127.0.0.1

枚举127.0.0.1的目录

4.实战扫描

    对整理的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 -iLmytarget.txt -oX mytarget.xml

三.扫描结果分析及处理

1.查看扫描文件

  有些情况,扫描是在服务器上进行,扫描结束后,将扫描结果下载到本地进行查看,如图1所示,又有XSL样式表解析导致出错。通常原因是由于nmap中的nmap.xsl文件位置不对,如图2所示,将正确的文件位置设置好即可。例如原nmap地址为:

C:/Program Files (x86)/Nmap/nmap.xsl

新的地址为:

E:\Tools\测试平台\PentestBox-with-Metasploit-v2.2\bin\nmap\nmap.xsl

在扫描结果的xml文件中进行替换即可,切记需要更换路径符号“\”为“/”。

图1查看xml显示错误

图2修改文件位置

2.分析并处理扫描结果

(1)从概览中查看端口开放主机

    如图3所示,打开xml文件后,在文件最上端显示扫描总结,有底色的结果表示端口开放,黑色字体显示的IP表示未开放端口或者防火墙进行了拦截和过滤。

图3查看扫描概览

(2)逐个查看扫描结果

   对浅绿色底的IP地址逐个进行查看,例如查看47.91.163.219,如图4所示,打开后可以看到IP地址以及端口开放等扫描结果情况,在open中会显示一些详细信息。

图4查看扫描结果具体扫描情况

3)测试扫描端口开放情况

    使用http://ip:port进行访问测试,查看网页是否可以正常访问,例如本例中http://47.91.163.174:8080/可以正常访问,系统使用tomcat,如图5所示。

5访问扫描结果

4)技巧

    在浏览器中使用Ctrl+F快捷键可以对想查看的关键字进行检索。对所有的测试结果要记录,便于后期选择***方法。

3.进一步***

   通过对扫描结果进行分析整理,对服务器开放的服务以及可能存在的漏洞进行直接或者间接测试,例如对Java平台,可以测试是否存在struts系列漏洞,如图6所示。有的目标还需要进行暴力破解,工具扫描等工作,直到发现漏洞,获取权限为止。

6直接测试是否存在漏洞

  在进一步***中需要结合多个知识点,需要针对出现的问题进行相应的检索。其可供参考思路如下:

1)整理目标的架构情况,针对架构出现的漏洞进行尝试。

2)如果有登录管理界面,尝试弱口令登录后暴力破解。

3)使用wvs等扫描器对站点进行漏洞扫描

4)使用burpsuite对站点进行漏洞分析和测试。

5)如果是陌生的系统,可以通过百度等搜索引擎进行搜索查看,网上是否曾经出现漏洞和利用方法。

6)下载同类源代码搭建环境进行测试,了解系统存在漏洞,对存在漏洞进行测试总结和再现,并对实际系统进行测试。

7)挖掘系统可能存在的漏洞

8)利用XSS来获取管理员的密码等信息。

9)若掌握邮箱,可以通过msf生成***/apk等进行社工***。

10)所有方法不行,就等等,重新整理思路。

参考文章:

https://nmap.org/man/zh/

http://www.nmap.com.cn/doc/manual.shtm

转载地址:http://nujlx.baihongyu.com/

你可能感兴趣的文章
mysql@5.7 去掉严格模式
查看>>
浅谈百度是如何将关键词进行排序的
查看>>
Auditing with Hibernate Envers
查看>>
利用excel生成sql插入语句
查看>>
Delphi 与 DirectX 之 DelphiX(11): TPictureCollectionItem.DrawAdd、DrawSub
查看>>
ActiveMQ(07):ActiveMQ结合Spring开发--建议
查看>>
数据库设计范式的理解
查看>>
Delphi 中的 XMLDocument 类详解(21) - 暂停
查看>>
UIScrollView内容偏移的问题
查看>>
微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具...
查看>>
Unity3D 网络通信_HTTP协议:获取网络图片、内容
查看>>
脏读、幻读和不可重复读 + 事务隔离级别
查看>>
微软加速Windows Azure开发云计算应用
查看>>
在Facebook工作实践中总结的十点经验
查看>>
gulp使用
查看>>
xlrd解析xls文件
查看>>
线程访问
查看>>
全球信息产业的云转型浪潮
查看>>
我的友情链接
查看>>
浅谈JavaScript 面向对象编程
查看>>