关于渗透测试信息收集阶段

#前言

经过一段时间的学习,对信息收集方面,课程上也只是基础理论,很多在实战情况下还会遇到很多各种各样的问题,这些都需要自己看文章,请教大佬,自己一步一步摸索出来的。趁着今天有点空闲时间记录一下自己对信息收集的一点点认识。本着分享学习经验,请大家遵守国家网络安全法,未经授权的渗透测试都是非法入侵。不懂的请移步——>网络安全法

# 信息收集

## 1. 简介

### 1.1什么是信息收集

信息收集也称作踩点,毋庸置疑就是尽自己的全力收集目标的各类信息,包括目标IP,DNS信息,端口开放信息等等,一些看似不起眼的信息,比如目标内部员工邮箱都算是信息收集,信息收集的全面与否关系到接下来的渗透测试阶段的成功或失败。

### 1.2信息收集的重要性

看过许多的文章,大佬们对渗透测试的总结总说一句话“渗透测试的本质就是信息收集”,可见信息收集是渗透测试最重要的阶段,信息收集占据渗透测试工作中的60%,根据收集到的可用信息,可以大大提高我们渗透测试的成功率。

### 1.3信息收集内容

>1 whois信息 (http://whois.chinaz.com/)查询网站

>2 程序构架

>3 dns信息

>4 子域名收集

>5 旁站与c段查询

>6 端口开放情况

>7 备案信息

>8 waf类型

>9 敏感信息泄露

>........

## 2.信息收集基本流程

### 2.1 获取ip地址

首先拿到一个网址做信息收集的时候第一步就是获得目标服务器的IP地址,这是渗透测试的基础。

我常用的查询ip网站 http://tool.chinaz.com/ ,网站上有许多功能,whois信息查询,DNS信息查询等都可以在上面查询,在获取服务器真实ip时最常遇到的问题 网站为了增加访问速度以及隐藏真实ip会做CDN的服务或反向代理服务,CDN即内容分发网络,也就是缓存服务器。反向代理服务器是存在客户端与目标服务器之间的一台服务器,其目的是为了负载均衡,关于CDN与反向代理详解具体解释自行百度.。

### 获取真实ip方法

1 通过子域名进行查询,经常一些网站只对主站点做CDN服务,毕竟CND费用也是不便宜。

2 通过国外冷门DNS查询域名,国内部分CDN只针对国内,对国外的访问不做CDN服务。

3通过查询 历史解析记录,在CDN之前所使用的ip极有可能就是真实ip。

4 通过邮件查询,有些网站带有邮件服务,通过收到的邮件右键源代码查看就能看到发出邮件服务器的真实ip。

++++当获得几个ip之后如何确认其真实性

1 直接ip地址访问,看响应页面是不是和对应域名返回一样

2 修改本地host文件域名对应解析地址,在访问对应网站看是否能正常访问。

### 2.2整站分析

#### 服务器类型判定(Windows/Linux)

1: 判断是Windows还是linux最简单粗暴的方法就是大小写判断,通过在url上面更改大小写,Windows大小写不敏感,linux反之。

2: 还可以通过ping来探测,Windows返回的TTL只一般都是128,linux是64。

3: 使用工具进行扫描如nmap扫描工具 使用方法自行百度

...

#### 站点容器判定(apache/iis/nginx/...)

1: 通过网页开发者工具查看数据包,server项

2: 通过暗黑搜索引擎也可探测到目标容器及其他信息

3: 使用火狐插件Wappalyzer也可查看服务器一些信息

4: 使用工具进行探测

...

#### 脚本判定(php/asp/jsp/...)

1:  直接根据url来判断

2:通过火狐插件进行判断

3:通过抓包工具如burpsuite查看数据包内容判定

...

#### 数据库判定(mysql/oracle/accees/...)

1:通过查询常见脚本和数据库搭配

2:通过开放端口判定

...

## 2.3敏感信息

1:直接通过目录扫描工具进行扫描

2:通过搜索语法进行搜索

3:通过站点查询 如whatweb查询网站是否使用了某种cms

...

## 2.4旁站及C段扫描

1:旁站是指在同一台服务器上的其他网站,很多时候对目标站点不是那么容易入侵的,这时候就可以考虑从旁站入手,可以先拿下旁站的webshell然后再提权得到整个服务器的权限,那么目标站点也就沦陷。

2:C段是指在同一网段的其他服务器 比如192.168.1.2,其中192为A段,168为B段,1为C段。2为D段,通过拿下同一网段的服务器进而向目标服务器进行渗透工作,当然工作量也是非常大的,不到万不得已一般也不会采用这种方法。

3:旁站与C段都可以使用工具根据或者网站进行查询这里不再累赘。

....

## 3关于信息收集的waf绕过

1: 上面所诉都是理论知识,而在实战过程中信息收集也是有waf进行阻碍的。

2: 对目标站点进行扫描探针等操作时,一些扫描工具都是会被waf拦截的,轻则几个小时无法对目标站点进行访问,重则将ip拉进黑名单。

3:大众的扫描工具,waf指纹库中是有工具的特征信息的,当你使用工具进行扫描时会触发waf的警报,最实用的办法就是自己搭建IP代理池修改请求头进行绕过,从而不使自身ip被封,IP代理池项目网上也有,自己有开发能力的可以根据自身需求进行开发。

下面展示使用python3编写的 `ip代理池代码`。

import requests

import time

headers={

'Connection': 'keep-alive',

'Cache-Control': 'max-age=0',

'Upgrade-Insecure-Requests': '1',

'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)',

'Sec-Fetch-Dest': 'document', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',

'Sec-Fetch-Site': 'none',

'Sec-Fetch-Mode': 'navigate',

'Sec-Fetch-User': '?1',

'Accept-Encoding': 'gzip, deflate, br',

'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',

'Cookie': 'www.xxx.com',

}

for paths in open('php_b.txt',encoding='utf-8'):

    url='http://www.xxx.com/'

    paths=paths.replace('\n','')

    urls=url+paths

    proxy = {

         'http': 'xxx.xxx.xxx:端口号',

}

try:

     code=requests.get(urls,headers=headers,proxies=proxy).status_code

    print(urls+'|'+str(code))

     if code==200 or code==403:

        print(urls+'|'+str(code))

 except Exception as err:

    print('connecting error')

    time.sleep(3)


以上需要注意的几个相关参数cookie,url,porxy中的http,按自身需要进行更改。代码缩进问题自己修改一下,文章不好引用代码块。

总结一点,主动式扫描都是可以通过编写脚本利用IP代理池技术进行绕过的,讲究灵活运用各种工具,思路的转变,通过几款工具的联动达到自身想要达到的目的。

文中不足之处还请各位见谅,其中不足会在后续文章中慢慢补足,尽请期待 !

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容