基于日志的安全分析实战
背景
越来越多的企业开始重视构建基于日志的安全分析与防护系统。我们会讲述如何使用日志服务从0到1收集海量日志,并从中实时筛选、甄别出可疑操作并快速分析,进一步构建安全大盘与可视化。并通过实战方式,演练覆盖几个典型安全分析场景。
目标
- 了解日志服务对于安全日志分析的场景的支持。
-
通过演练,了解如何使用日志服务进行典型安全场景的威胁识别与分析,包括:
- 场景一:主机被暴力破解与异常登录识别
- 场景二:数据库被SQL攻击与拖库识别
- 场景三:Web服务被CC攻击的行为分析
- 了解如何构建安全大盘与可视化。
议程
- 现场产品介绍(5~8分钟)
- 准备工作(2分钟)
- 实战练习与问答(~20分钟)
准备工作
- 您需要一台能够上网的笔记本
-
现场会发送【测试账号】给各位
- 注意:每一个独立的测试账号,都已经预先准备好了环境数据和部分参考配置,以便大家更高效的完成实战。
- 打开浏览器(推荐Chrome),跳转到日志服务控制台,根据提示,输入账号信息登录即可。
-
跳转到预先准备好的项目
yq201809-阿里云ID
- 直达链接(需要替换掉阿里云ID):https://sls.console.aliyun.com/#/project/yq201809-阿里云ID/categoryList
-
跳转到预先准备好的日志库
yq-demo
的查询页面即可:- 直达链接(需要替换掉阿里云ID):https://sls.console.aliyun.com/next/project/yq201809-阿里云ID/logsearch/yq-demo
- 直达链接(需要替换掉阿里云ID):https://sls.console.aliyun.com/next/project/yq201809-阿里云ID/logsearch/yq-demo
步骤
场景一:主机被暴力破解与异常登录识别
1. 查看登录日志
在查询界面输入如下,即可看到主机登录的日志:
__topic__ : winlogin
日志的结构如下:
__topic__: winlogin // 日志主题:登录日志为winlogin
client_ip: 197.210.226.56 // 登录客户端IP
result: success // 登录结果:success / fail
target: host4.test.com // 被登录的机器
target_type: server // 机器类型 server(服务器), normal
type: ssh // 登录方式:ssh, rdp
user: admin // 登录账户
2. 识别暴力破解
任务:通过SQL关联分析,识别暴力破解
逻辑:特定服务器被连续失败登录后有一个成功登录
关键步骤:
2.1. 输入【查询分析语句】如下(双击全选后复制):
__topic__: winlogin and target_type: server | select date_format(max_by(__time__, __time__), '%m-%d %H:%i:%s') as "最近时间", target as "服务器", 4 as "破解次数", count(1) as "事件次数" FROM (select __time__, target, result, lag(result, 1, '未知') over ( PARTITION by target order by __time__) as pre1, lag(result, 2, '未知') over ( PARTITION by target order by __time__) as pre2 , lag(result, 3, '未知') over ( PARTITION by target order by __time__) as pre3 , lag(result, 4, '未知') over ( PARTITION by target order by __time__) as pre4 from log) where result='success' and pre1='fail' and pre1='fail' and pre2='fail' and pre3='fail' and pre4='fail' group by target
这里的SQL大致分为3个部分:
2.1.1 过滤:选择目标是服务器类型的登录日志:
__topic__: winlogin and target_type: server
2.1.2 通过窗口函数lag
,给每条日志增加上下文信息:前面几次登录的成功与否:
__topic__: winlogin and target_type: server | select __time__, target, result, lag(result, 1, '未知') over ( PARTITION by target order by __time__) as pre1, lag(result, 2, '未知') over ( PARTITION by target order by __time__) as pre2 , lag(result, 3, '未知') over ( PARTITION by target order by __time__) as pre3 , lag(result, 4, '未知') over ( PARTITION by target order by __time__) as pre4 from log
2.1.3 通过子查询和分组,找出所有当前登录成功,但前面几次是失败的登录日志,并使用窗口函数max_by
等,记录最近和最远时间:
__topic__: winlogin and target_type: server | select date_format(max_by(__time__, __time__), '%m-%d %H:%i:%s') as "最近时间", target as "服务器", 4 as "破解次数", count(1) as "事件次数" FROM (select __time__, target, result, lag(result, 1, '未知') over ( PARTITION by target order by __time__) as pre1, lag(result, 2, '未知') over ( PARTITION by target order by __time__) as pre2 , lag(result, 3, '未知') over ( PARTITION by target order by __time__) as pre3 , lag(result, 4, '未知') over ( PARTITION by target order by __time__) as pre4 from log) where result='success' and pre1='fail' and pre1='fail' and pre2='fail' and pre3='fail' and pre4='fail' group by target
2.2. 【时间选择】选择1小时,可以看到暴力破解的事件列表:
2.3. 将表格【添加到仪表盘】:选择现有仪表盘我的安全大盘
,并命名为【暴力破解事件】。
参考:可以参考预先配置好的【快速查询】:暴力破解
3. 识别异常登录并配置IP下钻
任务:通过SQL地理函数与安全函数分析登录地址,识别异常登录。并配置下钻进一步查看登录的IP信息。
逻辑:平时服务器都是从中国区或者美国(VPN)登入,出现了从其他国外登入的IP,且改IP为感染IP。
关键步骤:
3.1. 输入【查询分析语句】如下(双击全选后复制):
__topic__: winlogin and result: success and target_type: server | select date_format(min_by(__time__, __time__), '%m-%d %H:%i:%s') as "最早时间", date_format(max_by(__time__, __time__), '%m-%d %H:%i:%s') as "最近时间", target as "服务器", count(1) as "登录次数", arbitrary(client_ip) as "可疑客户端(样例)" , '查看IP信息' as "操作" where ip_to_country(client_ip) <> '中国' and security_check_ip(client_ip) = 1 group by target order by "登录次数" DESC
3.2. 【时间选择】选择1小时,可以看到异常登录的事件列表
3.3. 配置下钻:点击列表【操作】旁边的【+】,打开【下钻】,选择【自定义http链接】,配置为www.ip138.com/ips138.asp?ip=${可疑客户端(样例)}&action=2
,如下:
3.4. 将表格【添加到仪表盘】:选择现有仪表盘我的安全大盘
,并命名为【异常登录事件】。
参考:可以参考预先配置好的【快速查询】:异常登录
4. 完善登录安全大屏
任务:通过地图图表构建登录仪表盘,将潜在风险加入仪表盘,并完善大盘布局。
关键步骤:
4.1. 输入【查询分析语句】如下(双击全选后复制):
__topic__: winlogin and result: success | select ip_to_country(client_ip) as country, count(1) as "成功登录次数" group by country
4.2. 【时间选择】选择1小时,可以看到基于来源国家的登录事件分布,选择【图表类型】中的【地图】下的【世界地图】:
4.3. 将表格【添加到仪表盘】:选择现有仪表盘我的安全大盘
,并命名为【登录事件分布】。
4.4 在视图中进入【我的安全大盘】,并点击按钮【编辑】对布局进行调整:
参考:可以参考预先配置好的【仪表盘】:场景一:....
场景二:数据库被SQL攻击与拖库识别
1. 查看登录日志
在查询界面输入如下,即可看到mysql的SQL执行日志:
__topic__ : mysql
日志的结构如下:
__topic__: mysql // 日志主题:SQL执行日志为mysql
sql: SELECT * FROM accounts WHERE id >= 20000
and id < 30000 limit 10000 // 执行的SQL
target: db1.abc.com // 数据库服务器
db_name: crm_system // 数据库
table_name: accounts // 表格
sql_type: select // SQL类型: select, update, delete等
user: op_user1 // 执行SQL的用户
client_ip: 1.2.3.4 // 连接执行的客户端IP
affected_rows: 10000 // 影响的函数,例如返回的行数
response_time: 1210 // 执行的响应时间(毫秒)
2. 识别SQL攻击
任务:通过SQL解析,识别SQL攻击
逻辑:黑客通过获取了数据库账户(或者通过SQL注入),执行了一系列的SQL语句,将病毒写入服务器磁盘。(例如dumpfile into
)
关键步骤:
2.1. 输入【查询分析语句】如下(双击全选后复制):
__topic__: mysql | select date_format(__time__, '%m-%d %H:%i:%s') as "时间", '文件写入' as "攻击类型", client_ip as "客户端", concat(db_name, table_name) as "数据库", target as "服务器", sql as "攻击SQL" where regexp_like(sql, '(?i).+into\s+dumpfile\b.+')
2.2. 【时间选择】选择1小时,可以看到SQL攻击的事件列表:
2.3. 将表格【添加到仪表盘】:选择现有仪表盘我的安全大盘
,并命名为【SQL攻击事件】。
参考:可以参考预先配置好的【快速查询】:SQL攻击
3. 识别拖库
任务:通过SQL统计,识别SQL拖库
逻辑:黑客通过获取了数据库账户,执行了一系列的SELECT的SQL语句,将重要表格(例如账户、订单信息)拖出。
关键步骤:
3.1. 输入【查询分析语句】如下(双击全选后复制):
__topic__: mysql and sql_type: select | SELECT date_format(min_by(__time__, __time__), '%m-%d %H:%i:%s') as "拖库开始时间", max_by(__time__, __time__)-min_by(__time__, __time__) as "拖库耗时(秒)", db_name as "数据库", table_name as "表格", sum(affected_rows) as "拖库行数",arbitrary(sql) as "拖库SQL(样例)", arbitrary(client_ip) as "客户端(样例)" group by db_name, table_name HAVING "拖库行数" > 200
3.2. 【时间选择】选择1小时,可以看到数据库拖库的事件列表:
3.3. 将表格【添加到仪表盘】:选择现有仪表盘我的安全大盘
,并命名为【数据库拖库事件】。
参考:可以参考预先配置好的【快速查询】:数据库拖库
4. 构建数据库安全大屏
任务:结合前面的规则,调整【我的安全大盘】的布局
参考:可以参考预先配置好的【仪表盘】:场景二:....
场景三:Web服务被CC攻击的行为分析
1. 查看登录日志
在查询界面输入如下,即可看到DDoS高防的访问与攻击日志:
__topic__ : ddos_access_log
参考DDoS高防访问日志格式.
2. 识别CC攻击规则
任务:查看CC攻击目标站点与特点
逻辑:CC攻击的日志通过cc_blocks > 0
可以获得
参考:可以参考预先准备好的场景三:... DDoS的运营中心
与访问中心
仪表盘.
3. 查看DDoS安全大盘
查看现有仪表盘,修改并调整DDoS安全大盘:
预览:
进一步参考
- 扫码加入官方钉钉群 (11775223):