#前言
经过一段时间的学习,对信息收集方面,课程上也只是基础理论,很多在实战情况下还会遇到很多各种各样的问题,这些都需要自己看文章,请教大佬,自己一步一步摸索出来的。趁着今天有点空闲时间记录一下自己对信息收集的一点点认识。本着分享学习经验,请大家遵守国家网络安全法,未经授权的渗透测试都是非法入侵。不懂的请移步——>网络安全法
# 信息收集
## 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代理池技术进行绕过的,讲究灵活运用各种工具,思路的转变,通过几款工具的联动达到自身想要达到的目的。
文中不足之处还请各位见谅,其中不足会在后续文章中慢慢补足,尽请期待 !