如何做攻击溯源自动化
时间:2022-07-28
本文章向大家介绍如何做攻击溯源自动化,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
入侵排查中,如何攻击溯源是一个很关键的环节,是一个收尾阶段,如何做到自动化攻击溯源,则更是技术能力的体现点。
在日常处理入侵事件过程中,用户或者客户主要核心关心两个点:
- 入侵事件解决了吗?(CPU、内存占用率下降了吗?木马清理干净了吗?业务恢复了吗?)
- 黑客是怎么攻击入侵的?(攻击时间轴是什么?)
同时在2B行业中,一份完整的攻击溯源报告交给客户必不可少的。
那么如何在海量的主机、日志和事件报警中寻找蛛丝马迹,去解放人力,去自动化关联分析等,是我们需要去思考的一个方向。当然高级的APT攻击不在此次思考范畴。
0x01 攻击溯源的价值
攻击溯源的价值是什么? 是抓黑客吗?作为企业或者公有云服务商,攻击溯源能带给什么价值?
其实,攻击溯源的主要价值不在于追捕黑客(当然不排查有大规模的黑客组织)。 溯源更大的价值在于:
- 掌握对手,不局限于已知漏洞,发现未知的0day等新型网络攻击行为;比如在野的;
- 掌握攻击者的意图、实力等,针对性采取合适的对策;
- 帮助大客户以及自身梳理和明确下一步安全体系建设的优先级,知道下一步该做什么;
- 掌握大客户以及自身安全体系的薄弱点,做PDCERF模型,从应急到响应,更好地进行防御。
简要来讲:解决攻击从哪来?到哪去?干了什么?
0x02 主机日志收集
/var/log/auth.log
/var/log/lastlog
/var/log/secure
/var/log/cron
/var/log/wtmp
/var/log/message
#定时任务
/var/spool/root
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/root/.bash_history
/root/.ssh/*
/etc/hosts
等
将登陆日志、应用日志、服务日志、进程端口网络、恶意命令等收集,海量大量日志可以通过ELK系统做快速匹配分析。
0x03 自动关联分析
- 多种云产品日志(waf、云镜、云防火墙、堡垒机等)
- 裸奔机(云镜)
- 安全组
- 开放端口快速应用匹配定位
- 主机应用对应日志扫描匹配
- 最新以及历史严重高危漏洞匹配
- 多维数据加工、聚合、可视化,形成攻击者入侵的链路图
0x04 过程还原
- 完整攻击链分类
- WEB入侵
- 勒索病毒
- 挖矿木马
- 后门权限维持
- 主动连接恶意下载源行为
- 黑客视角还原攻击细节
- 攻击时间轴还原攻击过程
- 攻击链路聚合可视化
0x05 黑客画像
- 关联威胁情报
- 识别黑客工具、手段、特征等
- 分析黑客背景、身份、目的等
- 网络侧溯源
- C2
- Whois、DNS解析记录、域名注册信息、特点组织机构
- 网络连接数据
难点和问题:
- 跨国追溯
- 隐私保护、暗网
2.样本侧溯源
- 样本采集
- 代码细节、同源分析
- 时区分析、语言分析
难点和问题:
- 攻击者主动规避可以追溯的点
- 无法验证证据的可信程度
0x06 自动化溯源报告
思考:
威胁分析成熟模型:
level 0:主要依靠自动警报,很少或没有常规数据收集。
level 1:结合威胁情报指标搜索,中等或高水平的常规数据收集。
level 2:遵循他人创建的数据分析程序,高或非常高水平的常规数据收集。
level 3:创建新的数据分析流程,高或非常高水平的常规数据收集。
level 4:自动化大多数可成功分析的业务流程,高或非常高水平的常规数据收集。
要达到level 4,当然这需要一些前提条件:
- 拥有完整的网络基础数据,包括netflow、LB/VPC fow log、pcap等精准的基础网络连接数据
- 拥有完整的端点基础数据,包括进程、网络、软件安装、账号数据等。
- 拥有完整的安全数据,包括主机报警、SOC、防火墙/IDS告警数据,威胁情报告警数据、端点威胁数据等。
对于公有云环境来说,存在以下几个困难:
- 突发事件、资产不稳定
- 海量日志和大流量,投入产出比不高
- 大量的裸奔机
任重而道远
- 经典面试问题: Top K 之 -- 海量数据找出现次数最多或,不重复的
- Java多线程详解4【面试+工作】
- Java多线程详解5【面试+工作】
- Java多线程详解6【面试+工作】
- MySQL备份恢复第二篇(r5笔记第6天)
- SpringMVC 中配置 Swagger 插件.
- MySQL和Oracle对比学习之事务(r5笔记第4天)
- 【面试宝典】Java如何打印数组
- MySQL数据导入导出牛刀小试(r5笔记第3天)
- SpringMVC 异常处理.
- 一条简单的sql在11g和12c中的不同(r5笔记第2天)
- 浅析 SpringMVC 原理和配置.
- 使用impdp不当导致的数据丢失问题(r5笔记第1天)
- MySQL数据库 Event 定时执行任务.
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 设计模式之抽象工厂模式
- 微信小游戏的环境搭建
- 威胁事件告警分析技巧及处置(一)
- docker数据卷备份恢复以及配置桥接网络
- ES对磁盘的要求都有哪些,大部分你可能不知道
- docker通过模板创建镜像以及容器、仓库和数据管理
- Form表单类组件与Map地图组件
- 转录组分析 | 使用Hisat2进行序列比对
- 最后一个页面:构建电影详情页面
- 安装docker以及通过容器创建镜像
- 转录组分析 | 使用trim-galore去除低质量的reads和adaptor
- 设计模式之工厂方法模式
- Ubuntu上安装TensorFlow(python2.7版)
- 转录组分析 | fastqc进行质控与结果解读
- playbook管理配置文件