17bdw
威胁情报收集之资产收集
从乙方威胁情报角度通过漏扫探测C2主机指纹,结合内部威胁情报做数据关联,可以找出更多的样本,分析样本找到网络特征和主机特征。而一套探测过程对于渗透测试来说来说往往提到的就是高危端口暴露,信息收集。
0x1 什么是漏洞扫描
- 漏洞扫描是完成风险评估的一种手段。很多专业者都搞出了很自动化、工程化的系统出来,从子域收集,ip 提取,字典定制化生成,新业务监控,威胁情报收集,漏洞扫描、告警,甚至自动生成报告,提交至 zdi、hackerOne 及各大 SRC 平台,实现技术套现……
- 威胁情报角度,一个C2可以扫描子域名、C段服务器端口、banner、证书几个角度结合,在自研发监控系统中部署监控规则获取更多样本,找出攻击事件。
0x2 为什么要做网段的探测
针对某些特定网段做同源确实会有威胁情报挖掘的价值。参考《那些和185.244.25.0/24网段有关的Botnet》
通过收集特定网段的端口信息结合当前掌握C2主机信息。资产收集的作用如下:
-
情报搜集:ip段搜索存活主机,域名、ip是否与apt组织活动有关联
-
情报关联:通过关联的ip、域名开放的端口与掌握的数据进行匹配判断C2主机实际作用
-
数据挖掘:通过内部威胁情报数据挖掘受控主机范围、样本数据
-
数据关联:分析样本,关联样本与主机的关系。入库主机的远程端口开放规则、已经掌握的远控端口、端口banner、SSL证书。
0x3 资产收集
很多扫描器都可以做资产收集,通过大数据做收集的平台也开始增加起来。
但是这些平台多少会有查询数量的限制。如果可以仿照一个技术信息库,把资产按照标签收集起来,每当出现一个漏洞就可以很容易检索出特定标签的网站了。
3.1 数据库设计
为了测试,扫描的目标最初从几个地方收集而来,中文网站总排名、补天、hackerone。从排名顶端的src大神常挖的目标抠出来关键字去百度搜索。最初觉得目标收集越多越好,还尝试从被黑统计zone-h收集被黑过的站点。后来发现范围太广反而容易把自己淹没,把原先目标给忘掉。
数据库表设计头疼了一段时间,以下是数据库表设计的最初版。分别为目标站点表、二级域名搜集、IP、端口。
- 目标存储表 target
存储目标的数据,id主键,type标签类型,domain或ip;创建时间和修改时间是为了关注目标状态改变的时间。
id int // 主键自增长ID
source varchar // 资产来源
yys varchar // 运营商
domain varchar // 运营商域名
ioc_domain varchar // ioc域名
ioc_ip varchar // ioc ip
dq varchar // 地区
type varchar // 保存的是IP还是domain
target varchar // 目标组织
create_time datetime // 创建时间
update_time datetime // 更新时间
- 子域名收集 result_siblings
存储子域名数据
id int // 主键自增长ID
host varchar // ip做主要索引
title varchar // 网站标题
ip varchar // ip
domain varchar // 运营商域名
port varchar // 当前域名访问的端口
country varchar // 国家代码
province varchar // 省份
city varchar // 城市
country_name varchar // 国家名字
header varchar // 网络回显
cert varchar // 证书信息
isp varchar // ISP信息
as_number varchar
as_organization varchar
data_source varchar // 数据来源
app_name varchar // app指纹识别
create_time datetime // 创建时间
update_time datetime // 更新时间
- IP收集 result_ip
把域名中的IP提炼出来,批量扫描ip。
id int // 主键自增长ID
taskid int // 任务ID
create_time datetime // 创建时间
update_time datetime // 更新时间
domain varchar // 域名
address varchar // IP地址
is_up varchar // 存活状态
os varchar // 操作系统版本
- 端口收集 result_ports
采用多任务扫描
id int // 主键自增长ID
taskid int // 任务ID
create_time datetime // 创建时间
update_time datetime // 更新时间
address varchar // IP地址
port int // IP开放的端口
service varchar // 服务
state varchar // 状态
protocol varchar // 协议
scripts_results varchar // 脚本扫描结果
3.2 入库整理
入库整理是有一段进步的,最开始Excel做初始数据库整理。
后来数据量增大改用MySQL,Python2的第三方库是使用的MySQLdb。再然后弃用Python2改用Python3操作MySQL代码全改选用PyMySQL。
0x4 漏洞扫描的影响
对于威胁情报收集来说一定不可避免会遇到如下问题。
4.1 网络影响
请求网络包的频率、数量,对网络和应用造成影响,交换机/路由器可能因此宕机,引发连锁反应,QPS过高可能超出服务的性能极限,导致业务中断;
4.2 异常处理影响
业务无法正确处理请求包里的特殊输入,引发异常宕机,比如一个私有协议的服务也许只是碰巧监听在了TCP 80端口,收到一个HTTP Get请求就直接挂了;
4.3 日志影响
请求公网的业务时,每一个URL的探测,都可能造成一个40x或者50x的错误日志。而业务的正常监控逻辑正是用Access Log里的状态码来进行的。不做任何处理的话,突然40x猛增,业务的SRE和RD必然要进行响应
0x5 探测安全问题
不同于执法机构,安全公司是没有权力去入侵网站来获取流量和服务器权限的。但是对于情报挖掘来说,不入侵不等同于不探测,必须要通过人肉挖掘和分析的方式判断C2主机然后尝试关联攻击事件,内部数据库收集样本。
-
对于APT组织,打草惊蛇
-
对于合法组织,业务受损害
-
对于安全公司,容易惹上不必要争论
0x6 改进
信息探测对于威胁情报挖掘也是必要引入的手段之一,通过流量还原大量PE,通过PE结构获取到C2,通过C2扩展信息。但是可以结合规则调整扫描策略。
-
变更计划: 扫描的时间、IP/URL/端口范围、QPS、测试用例集(有DoS的测试用例选择、有Delete/Update相关的资产选择、有POST隐蔽接口的选择)
-
变更风险评估:交换机路由器的流量和容量、业务的QPS、业务/网络挂掉的最极端风险评估
-
变更知会:业务的管理者、RD、SRE、DBA、QA甚至网络维护方、有关部门,是否知道上述所有关键信息,并授权同意进行扫描
-
回滚计划:如果出了问题,怎么最快速的停止扫描和恢复业务(有些动作要上面的变更知情范围的关键干系人配合)
-
变更观察:执行扫描的时候,判断业务是否正常,判断APT组织的警惕性,以便在出问题的第一时间响应;
-
变更总结:灰度执行过程中总结不到位的地方,在下一次工作中改进
参考
漏洞扫描的一些运营常识
https://zhuanlan.zhihu.com/p/85736793
资产收集