一、信息搜集

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. php实现头像预览上传功能

    最近在做php第二阶段的项目,需要用到头像上传的功能 我们要完成头像上传功能,一共要写两个php页面,第一个页面我们叫做touxiang.php,第二个页面我们叫做upload.php 1.touxi ...

  2. Echarts柱状图百分比显示

    option = { tooltip: { trigger: 'item', formatter:'{c}%' //这是关键,在需要的地方加上就行了 }, grid: { borderWidth: 0 ...

  3. python新生类和经典类简单说明

    经典类: #!/usr/bin/env python #*-* coding:utf-8 *-* class A(): def __init__(self): print 'my name is GF ...

  4. postgresql排序分页时数据重复问题

    当同时排序又分页时,如果排序的字段X不是唯一字段,当多个记录的X字段有同一个值时顺序是随机的. 这个有可能造成分页时数据重复的问题.某一页又把上一页的数据查出来了,其实数据库只有一条记录. 解决办法: ...

  5. Python脚本性能分析

    来自:http://www.cnblogs.com/btchenguang/archive/2012/02/03/2337112.html def foo(): sum = 0 for i in ra ...

  6. ElasticStack系列之十八 & ElasticSearch5.x XPack 过期新 License 更新

    摘要 当你某一天打开 Kibana 对应的 Monitoring 选项卡的时候,发现提示需要下载新的 license,旧的 license 已经过期了,试用期为30天,如果不是很需要其他的复杂监控.报 ...

  7. IIS 部署SSL证书

    1.导入证书 打开IIS服务管理器,点击计算机名称,双击‘服务器证书 双击打开服务器证书后,点击右则的导入 选择证书文件,点击确定 2.站点开启SSL 选择证书文件,点击确定 点击网站下的站点名称,点 ...

  8. November 02nd, 2017 Week 44th Thursday

    Knowledge is weightless, a treasure you can always carry easily. 知识没有重量,她是我们可以很容易携带的珍宝. Knowledge is ...

  9. Priority Queue

    优先队列 集合性质的数据类型离不开插入删除这两操作,主要区别就在于删除的时候删哪个,像栈删最晚插入的,队列删最早插入的,随机队列就随便删,而优先队列删除当前集合里最大(或最小)的元素.优先队列有很多应 ...

  10. Beta 冲刺 (7/7)

    Beta 冲刺 (7/7) 队名:洛基小队 峻雄(组长) 已完成:人物释放技能部分的实现 后两天计划:整合脚本,测试内容 剩余任务:整合各部分脚本 困难:尽快完善整合出β版的内容 非易 已完成:商店功 ...