文章目录
1、前言
1.0、常用工具
Msscan nmap goby
信息收集在实战之中会占很长的时间,一定要细心、耐心。
eg:
某公司:1000个ip
先熟悉对方业务 收集信息如下:
边缘业务:200ip 新开的业务:50ip 、、这都是要重点关注的对象
1.1、基本概念
基本流程:
1.由攻击者主动发起行为或请求
2.目标受到行为或请求影响并发出反馈
3.攻击者获得反馈并判断特征
1.2、主动信息收集的优缺点:
- 优点:
1.信息的针对性强
2.信息的准确度和时效性高
3.能收集到未公开的敏感信息
- 缺点:
1.容易暴露,被发现的风险高
2.收集的信息量和覆盖面比较少 、、比如一些业务与主业务的两个大B/C段
- 主动信息收集的应用场景:
主动信息收集通常是在被动信息收集之后分析出重要攻击面,
或者目标重要信息的时候再针对性地去做主动信息收集,
在主动信息收集的时候通常持续时间比较长而且会通过各种不同的方式与目标交互。
实战中最常用的手段是模拟或者伪装正常的业务流程与目标交互。
1.2、绕过cdn的常见方法:
cdn:
通过不同地理位置的缓存来加快访问速度,所以我们有可能访问的网页不是真实ip提供的网页
思路:
cdn是要钱的
cdn是基于解析的
- dns历史记录 找最早的那一条 以下几个网站来查询。
https://x.threatbook.cn
https://webiplookup.com
https://viewdns.info/iphistory
https://securitytrails.com/#search
https://toolbar.netcraft.com/site_report
举个栗子:www.gwfutures.cn
- 多地ping/国外ping
- 边缘业务的子域名
微信小程序 app客户端(将真实IP写到了客户端)
- 证书
https://search.censys.io/
https://crt.sh/
- 邮箱服务器
cdn是不支持邮箱的
eg:
ping www.beijing.gov.cn
ping mail.beijing.gov.cn
- FOFA查询网站标题找到真实IP
- 主站不好搞,调软柿子捏
2、主动信息收集的常见手段
2.1、通过暴力枚举的方法寻找目标存在的资产
基本原理:
1.工具通常带有字典等枚举的数据(字典自己写的时候该注意哪些东西:
构造完成的请求中哪些是不变 的,哪些是字典里的)
2.通过每一个枚举的数据构造请求或者交互(dns、http、ip、密码、参数)
3.判断这些请求中哪些交互的反馈是属于我们需要的(每一个对象的反馈特征)
4.存储这些反馈并处理数据
Ksubdomian的基本原理:
通过枚举每一个字母的子域名去查询cname解析记录,
如果dns的cname解析记录存在则返回结果
比如:
nslookup -q=cname map.baidu.com得到
然后在ping map.n.baidu.com得到其对应的IP:111.206.208.32
这个ping map.n.baidu.com与ping map.baidu.com效果是一样的。
Dirsearch的基本原理:
通过枚举字典中的每一个数据去请求http并判断返回值,
返回值为200则表示该目录存在。
当然像以上这种暴力破解的,自己写一些脚本也可以,比如最基础的这种,
2.2、通过爬虫爬取的方式收集信息
基本原理:
1.工具会模拟浏览器做请求
2.将收到的请求收集并筛选(筛选什么东西:链接、按钮、只能能跳转的)
3.筛选出来的数据做二次的请求并判断
4.将判断后的数据处理并输出
jsfinder原理:
通过请求页面并获得页面中的js文件,筛选js文件中的子域名,
这个工具并没有做判断,直接返回所有的子域名。
zap的spider基本原理:
通过浏览器请求页面的返回并筛选所有的标签,
并通过模拟浏览器的操作点击网页中的每 个动态链接并判断返回值。
对应的简洁版代码如下:
2.3、通过直接交互的方式收集目标反馈
基本原理:
1.工具会带有直接与目标交互的功能
2.通过判断目标反馈的不同判断出不同的信息
nmap脚本编写视频:
https://www.bilibili.com/video/BV1b7411Z7Ba
以nmap举例:
--script 使用脚本
-oN输出普通文本
-oX输出成xml
-sV 判断端口开放了哪些服务以及服务对应的版本
2.4、如何编写基本的主动信息收集工具
编写一个端口探测的脚本,
利用到三次握手
先发送一个syn到服务器,服务器返回一个 syn+ack,
端口未开放的话,返回一个rst
以scapy举例:
# -*- coding: utf-8 -*-
from scapy.all import *
dst_ip="121.196.151.60"
src_port=RandShort() #本机随机开启一个端口与服务器进行交互
dst_port=22
#向服务器发起请求
tcp_connect_scan_resp = sr1(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="S"),timeout=10)
#如果返回为空
if(str(type(tcp_connect_scan_resp))==""):
print "Closed"
elif(tcp_connect_scan_resp.haslayer(TCP)):
#0x12(表示“SYN+ACK”)那么表示端口没开
if(tcp_connect_scan_resp.getlayer(TCP).flags == 0x12):
send_rst = sr(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="AR"),timeout=10)
#完成三次握手
print "Open"
#0x14(表示RST)那么表示端口没开
elif (tcp_connect_scan_resp.getlayer(TCP).flags == 0x14):
print "Closed"
这个脚本仅仅扫描了22端口,实际中可以写1~65535,整个一个for循环。
-
基本思路和POC编写的思路一样分为2个部分:
1.请求的功能
2.判断的功能
2.5、工具之间的数据流动
实战之中建议先上一些成熟的工具,但是希望大家不要当一个脚本小子,
要理解一下工具使用的原理,比如子域名收集,
大家都知道oneforall比如好用,但是他好用在哪里,他的原理要了解一下:
稍微细究他的被动收集的原理就会发现他将我们之前提到的一些手段都用脚本实现了自动化,
被动的信息收集:
(SSL、dns解析查询、ip138这种在线平台的子域名记录、
微步这种情报分析平台、搜索引擎)+主动信息收集(暴力破解)
所以oneforall对子域名的收集,相对较为全面。
然后可以将oneforall收集到的子域名导入到goby之中跑一下端口,
当然,中间最好先排除一些存在cdn的域名,不然使用goby扫描的话,会跑很多cdn的端口。
之后在将goby的结果导出,如下图所示:
然后简单处理一下excel中的数据,去掉一些非http/s的数据,
在之后使用xray、awvs等等去跑,当然建议在工具扫描的时候,手动点开这些网站看看。
实际收集,
对于一些直接给域名的就可以按照上述的思路搞,对于一些仅仅给一个公司名的。
我们就可以,先去企查查等网站去查一下,比如以某X信为例子,
这里要说一下,hvv中,目标是A公司的话,不仅可以搞A公司,
还可以搞A公司的子公司(100%控股的)。
-
这里要关注的就是:
备案网站、APP、小程序、微信公众号。
这个备案网站查到的,都可以使用oneforall跑一边,这里边的每一个都可以当作主域名。
3、小结
3.1、常用工具
1,收集主域名 搜索引擎 备案网站
对于这个APP的信息收集可以使用工具,AppInfoScanner
针对企业信息查询可以使用,ENScan,
2,收集子域名 ssl dns记录 搜索引擎 威胁情报网站
3,端口扫描 msscan nmap goby
4,指纹识别 whatweb(http://whatweb.bugscaner.com/look/) Wappalyzer插件 goby 云悉
5,目录扫描 dirsearch 御剑
6,漏洞扫描 awvs xray vulmap
这里都是常规性的扫描测试,自己有一些day的时候,可以自己写脚本批量上。
3.2、目标员工信息收集
假设常规手段没有撕开口子,还没有day,就可以考虑收集目标企业的员工信息:
搜集员工信息,招标信息 github等 百度贴吧 新浪微博 手机号 支付宝转账 论坛
凌风云:https://www.lingfengyun.com/
蓝菊花:http://www.lanjuhua.com/
大力盘:https://www.dalipan.com/
猪猪盘:http://www.zhuzhupan.com/
PanSou:http://www.pansou.com/
盘飞飞:https://panfeifei.com/
通过这些网盘也可能收集到目标站点的一些报告,默认学号等。
对于收集到的信息,就是组成字典与社工钓鱼了。
当然,除了上述网盘之外还可以在github上搜集一些公司。
建议:
除了看一些文章,最重要的就是亲自手动试试,找一个中小型公司自己收集一下。
不建议小白上来直接用工具,最好手动来一遍,理解工具的原理。
(对目标做被动和主动的信息收集并整合处理信息成为一份信息收集报告,表现格式和文件格式不限,
但是一定要标注出哪些是主要业务、哪些是边缘业务、哪些是新开业务、哪些是外包业务)