一、信息搜集

1、外围信息搜集

  • 外围信息搜集又叫公开渠道信息搜集。
  • 搜索引擎,公共信息库,目标门户网站等等都是很好的入手点。
  • metasploit有一类“辅助模块”,可以帮助你进行信息搜集的工作,并且还集成了nmap等神器。

1.1通过DNS和IP挖掘目标网站的信息

(1)whois域名注册信息查询

          可以在MSF终端使用whois命令进行查询。
msf > whois baidu.com

注意:进行whois查询时去掉www等前缀,因为注册域名时通常会注册一个上层域名,子域名由自身的域名服务器管理,在whois数据库中可能查询不到。

(2)nslookup,dig域名查询

nslookup可以得到DNS解析服务器保存的Cache的结果,但并不是一定准确的。dig可以从官方DNS服务器上查询精确的结果

          msf > nslookup
[*] exec: nslookup
> set type=A
> baidu.com
msf > dig @dns.baidu.com baidu.com

dns.baidu.com为DNS服务器

(3)IP2Location 地理位置查询

www.maxmind.com

可以根据IP查询地理位置,需要翻墙、

(4)netcraft提供的信息查询服务

http://www.netcraft.com/

能获取到更多的更详细的信息。

(5)IP2反域名查询

通过IP反查到域名,即旁注的第一步。

http://www.ip-adress.com/reverse_ip/

可以通过该网站查询

国内的也可以用

http://www.7c.com/

进行查询,结果更准确。

1.2通过搜索引擎进行信息搜集

(1)Google Hacking

  • Google提供了高级搜索功能。GHDB数据库包含了大量使用Google从事渗透的搜索字符串,

  • http://www.exploit-db.com/google-dorks 可以在上述网址看GHDB的内容。

  • 一些自动化的工具,SiteDigger ,Search Diggity,Gooscan,具体用法自行百度。

(2)搜索网址目录结构

首先可以手工测试一些常见的目录名,如 admin,login等等。

用Google查询:parent directory site:XXX.com 来查找目录。一般对拓展名为inc,bak,txt,sql的文件要特别留意。

                  inc:可能包含网站的配置信息。
bak:通常是文本编辑器留下的备份文件。
txt or sql:包含网站运行的sql脚本。

自动化的工具:metasploit的brute_dirs,dir_listing,dir_scanner等辅助模块,主要是暴力猜解。以dir_scanner为例:

msf > use auxiliary/scanner/http/dir_scanner。

具体的辅助模块需要百度自行查找。

一些网站还会在根目录下放置robots.txt文件,用以告诉搜索引擎哪些目录和文件不被抓取。

(3)搜索特定类型的文件

有些网站会链接通讯录,订单等敏感的文件,可以进行针对性的查找,

如Google,site:XXX.com filetype:xls。

(4)搜索E-Mali

metasploit中有search_email_collector,进行针对性的搜集。

msf auxiliary(dir_scanner) > use auxiliary/gather/search_email_collector

(5)搜索存在sql注入的页面以及后台登陆的页面

Google:site:XXX.com inurl:login  site:XXX.com inurl:.php?id=1

(6)IP路由侦查

工具:traceroute

root@kali:~# traceroute www.baidu.com

2、主机探测和端口扫描

2.1活跃主机扫描

(1)ICMP Ping命令

ping www.baidu.com

(2)metasploit中的模块

位于modules/auxiliary/scanner/discovery 主要有 arp_sweep, ipv6_multicast_ping, ipv6_neighbor, ipv6_neighbor_router_advertisement, udp_probe,udp_sweep.

arp_sweep 使用ARP请求枚举本地局域网的活跃主机,即ARP扫描器

udp_sweep 使用UDP数据包探测。

(3)Nmap探测

metasploit中集成了nmap,nmap的用法,在第二部分详细讨论。

2.2操作系统辨别

Nmap -O 参数

2.3端口扫描与服务探测

扫描技术:TCP Connect ,TCP SYN, TCP ACK ,TCP FIN ,TCP IDLE

(1)metasploit的端口扫描模块

search portscan 找到相关模块

(2)Nmap端口扫描

一般用到的参数如下:

-sT  -sS -sF/-sX/-sN -sP -sU -sA -Pn -p -F

详见第二部分。

(3)探测详细服务信息

Nmap -sV 参数

3、服务扫描和查点

metasploit中有许多相关工具,大部分都在Scanner辅助模块,常以[service_name]_version(用以遍历主机,确定服务版本)和[service_name]_login(进行口令探测攻击)命名

可输入 search name:_version查看所有服务查点模块

3.1网络服务扫描

(1)telent服务扫描

msf > use auxiliary/scanner/telent/telent_version

(2)SSH服务扫描

msf > use auxiliary/scanner/ssh/ssh_version

(3)Oracle数据库服务查点

msf auxiliary(ssh_version) > use auxiliary/scanner/oracle/tnslsnr_version

(4)开放代理探测

open_proxy模块

msf auxiliary(tnslsnr_version) > use auxiliary/scanner/http/open_proxy

3.2口令猜测与嗅探

(1)SSH口令猜测

msf auxiliary(open_proxy) > use auxiliary/scanner/ssh/ssh_login

(2)psnuffle口令探测

psnuffle是metasploit中的口令嗅探工具,只有在接入对方网络的初始访问点后才能进行嗅探。

msf auxiliary(ssh_login) > use auxiliary/sniffer/psnuffle

4、网络漏洞扫描

漏洞扫描器会向目标发送大量数据包,甚至会导致目标系统拒绝服务,而且会有很多误报或漏报,因此需要人工分析。

(1)OpenVAS漏洞扫描器

(2)查找特定服务漏洞

Nmap是针对性扫描工具之一,其拥有很多script的脚本可供使用。

5、渗透测试信息数据库共享

metasploit提供了对psrtgresql数据库的支持。并提供了db_namp命令,可以将Nmap扫描结果存入数据库中,还提供了db_import命令,支持多种扫描结果导入。

(1)使用网络数据库共享

(2)通过RPC 服务共享

二、NMAP

  • NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。
  • nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。
  • Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。
  • 基本功能有三个:一是探测一组主机是否在线;其次是扫描主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。
  • 语法格式:namp [空格] 【选项|多选项|协议】 【空格】
  • Nmap包含四项基本功能:主机发现(Host Discovery);端口扫描(Port Scanning);版本侦测(Version Detection);操作系统侦测(Operating System Detection)。另外Nmap提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。
  • 功能架构图

基本用法

  • 1.确定端口状况

如果直接针对某台计算的IP地址或域名进行扫描,那么Nmap对该主机进行主机发现过程和端口扫描。该方式执行迅速,可以用于确定端口的开放状况。

命令形式:

nmap targethost

可以确定目标主机在线情况及端口基本状况。

  • 2.对主机全面扫描

如果希望对某台主机进行完整全面的扫描,那么可以使用nmap内置的-A选项。使用了改选项,nmap对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统侦测及调用默认NSE脚本扫描。

命令形式:

nmap –T4 –A –v targethost

其中-A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。

下面详细讲解每个具体功能。

主机发现(Host Discovery)

1.默认情况下,Nmap会发送四种不同类型的数据包来探测目标主机是否在线。

1.  ICMP echo request
2. a TCP SYN packet to port 443
3. a TCP ACK packet to port 80
4. an ICMP timestamp request

依次发送四个报文探测目标机是否开启。只要收到其中一个包的回复,那就证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。

2.通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。而在某些特殊应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。

不管是作为辅助用法还是专门用途,用户都可以使用Nmap提供的丰富的选项来定制主机发现的探测方式。

-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。  

-sn: Ping Scan 只进行主机发现,不进行端口扫描。  

-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。  

-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。  

-PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。  

-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。  

--dns-servers <serv1[,serv2],...>: 指定DNS服务器。  

--system-dns: 指定使用系统的DNS服务器  

--traceroute: 追踪每个路由节点

其中,比较常用的使用的是-sn,表示只单独进行主机发现过程;

-Pn表示直接跳过主机发现而进行端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项);

-n,如果不想使用DNS或reverse DNS解析,那么可以使用该选项。

3.例子

(1)探测scanme.nmap.org

下面以探测scanme.nmap.org 的主机为例,简单演示主机发现的用法。

命令如下:

nmap –sn –PE –PS80,135 –PU53 scanme.nmap.org

(2)探测局域网内活动主机

扫描局域网192.168.1.100-192.168.1.120范围内哪些IP的主机是活动的。

命令如下:

nmap –sn 192.168.1.100-120

端口扫描(Port Scanning)

1.端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。

2.默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。

3.Nmap通过探测将端口划分为6个状态:

open:端口是开放的。
closed:端口是关闭的。
filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。
unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。
open|filtered:端口是开放的或被屏蔽。
closed|filtered :端口是关闭的或被屏蔽。

4.用法

端口扫描用法比较简单,Nmap提供丰富的命令行参数来指定扫描方式和扫描端口。

具体可以参见如下描述。

(1)扫描方式选项

-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 <flags>: 定制TCP包的flags。  

  -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)  

  -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。  

  -sO: 使用IP protocol 扫描确定目标机支持的协议类型。  

  -b <FTP relay host>: 使用FTP bounce scan扫描方式

(2)端口参数与扫描顺序

-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协议)  

-F: Fast mode – 快速模式,仅扫描TOP 100的端口  

-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。  

--top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)  

--port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。

5.例子

这里,我们以扫描局域网内192.168.1.100主机为例。

命令如下:

nmap –sS –sU –T4 –top-ports 300 192.168.1.100

参数-sS表示使用TCP SYN方式扫描TCP端口;-sU表示扫描UDP端口;-T4表示时间级别配置4级;--top-ports 300表示扫描最有可能开放的300个端口(TCP和UDP分别有300个端口)。

版本侦测(Version Detection)

1.版本侦测,用于确定目标主机开放端口上运行的具体的应用程序及版本信息。

2.版本侦测主要分为以下几个步骤:

(1)首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
(2)如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
(3)如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
(4)如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
(5)如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
(6)如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务

3.版本侦测的用法

-sV: 指定让Nmap进行版本侦测  

--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。  

--version-light: 指定使用轻量侦测方式 (intensity 2)  

--version-all: 尝试使用所有的probes进行侦测 (intensity 9)  

--version-trace: 显示出详细的版本侦测过程信息。

4.例子

命令:

nmap –sV 192.168.1.100

对主机192.168.1.100进行版本侦测。

操作系统侦测(Operating System Detection)

1.操作系统侦测用于检测目标主机运行的操作系统类型及设备类型等信息。

2.Nmap拥有丰富的系统数据库nmap-os-db,目前可以识别2600多种操作系统与设备类型。

3.OS侦测用法

-O: 指定Nmap进行OS侦测。  

--osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。  

--osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。

4.例子

命令:

nmap –O 192.168.1.100

ex6教程的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  3. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  4. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  5. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  6. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  7. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  8. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  9. Virtual Box配置CentOS7网络(图文教程)

    之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...

随机推荐

  1. Python 基于python实现的http接口自动化测试框架(含源码)

    基于python实现的http+json协议接口自动化测试框架(含源码) by:授客 QQ:1033553122      欢迎加入软件性能测试交流 QQ群:7156436  由于篇幅问题,采用百度网 ...

  2. Android - Android Studio 解决访问被墙的问题

    socks代理配置 项目代理:根目录下的gradle.properties文件 org.gradle.jvmargs=-DsocksProxyHost= 2.全局代理:用户根目录下的.gradle\g ...

  3. Android Studio 关联 JDK Java 源码

    Android Studio 关联 Android 源码比较方便,一般下载后可自动关联,但是 Android Studio 默认使用的 JDK 是内嵌的,是不带源码的.所以在查看 JDK 源码时,看到 ...

  4. springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本 get请求报400 异常信息为 The valid characters are defined in RFC 7230 and RFC 3986

    1.springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本而之前用的是tomcat7    get请求报400 异常信息为 The valid characters are ...

  5. MySQL 性能监控4大指标——第二部分

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分介绍了前两个指标:查询吞吐量与查询执行性能.本文将继续介绍另两个指标:MySQL 连接与缓冲池 ...

  6. SqlServer为字段创建索引

    语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名) 创建索引实例: 聚簇索引 create clustered index index_name on table_name (c ...

  7. Azure 门户中基于角色的访问控制入门

    面向安全的公司应侧重于向员工提供他们所需的确切权限. 权限过多,可能会向攻击者公开帐户. 权限太少意味着员工无法有效地完成其工作. Azure 基于角色的访问控制 (RBAC) 可通过为 Azure ...

  8. 转:queue

    数据结构C#版笔记--队列(Quene)   队列(Quene)的特征就是“先进先出”,队列把所有操作限制在"只能在线性结构的两端"进行,更具体一点:添加元素必须在线性表尾部进行, ...

  9. Linux内核参数基础优化

    web 服务负载均衡器常规网站服务器优化的基本配置: net.ipv4.tcp_fin_timeout =2 net.ipv4.tcp_tw_reuse =1 net.ipv4.tcp_tw_recy ...

  10. 调用webservice 的时候没法输入参数

    在web.config的<system.web></system.web>中间加入如下配置节内容<webServices> <protocols> &l ...