态势感知 + DataV:安全可视化交互,这么玩儿

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
云安全中心 防病毒版,最高20核 3个月
云安全中心漏洞修复资源包免费试用,100次1年
简介: 在安全领域,“看见”的能力很大程度上影响着风险防御的有效性。将未知的风险以可视化的方式展示,让企业安全团队有“踏实感”和“存在感”。 在安全可视化上,阿里云首批MVP,千寻位置安全负责人傅奎想出了“跨界玩法”,用阿里云的两大产品:态势感知和DataV,实现交互式安全威胁发现。


image


在安全领域,“看见”的能力很大程度上影响着风险防御的有效性。将未知的风险以可视化的方式展示,让企业安全团队有“踏实感”和“存在感”。

在安全可视化上,阿里云首批MVP,千寻位置安全负责人傅奎想出了“跨界玩法”,用阿里云的两大产品:态势感知和DataV,实现交互式安全威胁发现。

Let's Make It True.

文章介绍的,是如何使用DataV大屏展现态势感知 DNS 会话日志,从而实现交互式安全威胁发现。

剧透一下最终效果,绝对值得试试:

所有 DNS 日志的节点(源地址、DNS服务器地址、要解析的域名)关系图。点选其中任一节点,关联点自动高亮,非关联节点则进入蒙版状态,要是有什么可疑的节点、关系、类目,一眼就看出来!


image
image

背景介绍

自打“态势感知”上线了新版的“日志”功能,团队成员就在摩拳擦掌寻思如何充分挖掘日志信息的价值,而不仅仅是用于故障诊断或事件调查。

其中,通过图形化展现不同网络资源节点的相互关系,进而实现交互式安全威胁发现,是最为理想的实现方式。此前尝试过 Graphviz、yEd、NetworkX 等方式,后来都因配置复杂,使用繁琐等问题放弃。

直到MVP 技术群里李文毅向大家推荐了 DataV,我想:是时候“make it true ”了!

产品介绍

以下材料援引自官方介绍,描述不准与我无关:

  • 态势感知

“态势感知提供的是一项SAAS服务,即在大规模云计算环境中,对那些能够引发网络安全态势发生变化的要素进行全面、快速和准确地捕获和分析,并提供一个体系化的安全解决方案。”

  • DataV 数据可视化

“DataV旨让更多的人看到数据可视化的魅力,帮助非专业的工程师通过图形化的界面轻松搭建专业水准的可视化应用。DataV提供丰富的可视化模板,满足您会议展览、业务监控、风险预警、地理信息分析等多种业务的展示需求。”

需求分析

态势感知的日志功能非常强大,目前支持查询:所有入站的7层数据、出入站栈的4层会话以及DNS双向日志。其中 DNS 日志有助于安全团队分析服务器是否遭受入侵,被植入木马病毒,存在异常请求等问题。

我们最关心的是:哪台服务器,通过哪个 DNS Server,解析了哪个域名?

针对该需求,如果有可视化的节点关系图辅助分析,那么威胁识别的效率将大幅提升。在没有使用 DataV 之前,通常的办法是使用一些图表工具进行展现,而且少不了定制化开发的工作量。DataV 的出现,大大解放了数据分析人员的双手,从而可以用于拖动进度条。仅仅通过少量的鼠标点击和基本的 API 配置,就能瞬间让你的数据充满活力,开口说话。DataV 自带节点关系图,并内嵌原生ECharts ,完全可以满足此类需求。

实现方法例

你一定很期待强劲的态势感知与性感的 DataV强强联合会是什么样子。期待不如行动,我们一起动手去实现吧。

导出态势感知 DNS 日志

登录阿里云控制台,进入安全(云盾)| 态势感知功能页,通过子菜单选择日志 new项目。


image


设置DNS 日志查询条件,分别是:

  • 日志源:DNS
  • 字段:qtype
  • 判断条件:包含(目前只能选包含)
  • 关键字:A

再设置好查询时间,点击搜索就可以啦。


image


系统很快就能返回查询结果,通过右上角导出结果将当前页(没错,,是当前页,,一次100条--)日志导出到Excel 中。如果需要更多数据,得依次翻页导出--。当然也有程序化解决方案,请往后看。


image

定制返回 JSON 串的数据源API

对导出的 Excel 文件进行数据抽取,关键是:

  • 源地址:src_ip
  • DNS Server:dst_ip
  • 尝试解析的域名:qname


image

将源地址、DNS 地址、域名三项都纳入节点范畴,同时将源地址->DNS 地址、DNS 地址->域名纳入关系范畴,通过 HTTP 将节点 nodes 和关系 links 输出为 JSON 就是一个可用的API数据输入源。

别着急,作为良心分享,怎么能少了技术细节呢?

为了不影响阅读,我把数据格式化和 API 相关的具体内容放在后面环节。

定制 DataV 大屏,指定 API 数据源

通过阿里云控制台大数据(数加)| DataV数据可视化进入定制界面,直接选择新建可视化。


image


创建大屏模板,设置一个你喜欢的名字。


image


向大屏图层添加数据展示组件, 这里可以选择关系网络或原生的 Echarts 网络图。


image


点选图表组件,进入右侧数据选项卡,修改默认的数据源类型静态数据为 API。


image


填写满足系统要求的 API ,鼠标离开输入框,左侧设计区会即时展现效果。


image

发布监控大屏,看效果

数据调试和预览成功后,可通过右上角的发布按钮,正式发布报表。DataV 考虑得很周到,为报表提供了密码和 Token 两种安全保护机制。


image

访问发布后的报表链接:http://datav.aliyun.com/share/ef9aa**********a3fd8 (这是他们的秘密不可访问的哈)

image


交互式发现

好吧,放一些我在测试环境模拟出来的数据。下面是一段时间内,所有 DNS 日志的节点(源地址、DNS服务器地址、要解析的域名)关系图。


image


点选其中任一节点,关联点自动高亮,非关联节点则进入蒙版状态,相当炫酷啊!


image

来,再看另外一组测试数据。要是有什么可疑的节点、关系、类目,一眼就看出来!

image


小提示:万一发现了什么神奇的域名或 IP 地址,可以直接上微步威胁情报查询,例如:https://x.threatbook.cn/domain/google.com 。是不是坏人立即遁形,这个库太全了……

补充说明

替你踩过的坑

  • 如果不打算使用服务器代理方式调用API,那么一定要设置好 API 的 HTTP 头部跨域参数
  • 如果使用了 HTTPS 访问DataV 监控大屏,那么 API 接口也必须是 HTTPS 形式
  • API 接口返回的数据要和静态数据输入框中的格式完全一样——JSON 串
  • 如果你遇到了一些神奇的 Bug,请把图层或组件删除后从头再来一遍(不要问我怎么知道的)
  • DataV 自带的关系图和内嵌的原生 ECharts 在数据格式上有一定的区别,要看仔细

Show you the code

下面这段代码可以帮助使用者在登录态势感知后,自动获取 DNS 会话日志,并按照 DataV 关系图所适配的数据格式生成 JSON 串。非专业开发人员的临时代码,写得比较丑,别太当真。

#!/usr/bin/python# -*- coding:utf8 -*-import json# pip install requestsimport requests# 成功登录态势感知后,通过 Chrome 复制当前会话的 Cookie。cookie_str = 'aliyun_country=CN; aliyun_site=CN;'\             'UM_distinctid=***; JSESSIONID=***; '\             'consoleNavVersion=1.1.1; _yundun_session0=***; '\             'aliyun_choice=CN; isg=***E-'nodes_client = []  # 客户端 IPnodes_server = []  # DNS Server IPnodes_domain = []  # 解析的域名def get_yundun_DNS_log(http_session=None, page_num = 1):
    """
    访问阿里云后台,请求 DNS 日志
    :param http_session: requests.session()
    :param page_num: page number
    :return: HTTP Response
    """
    global cookie_str
    url = 'https://yundun.console.aliyun.com/sas/slssearch/'\          'getLogList.json?__preventCache=1500********2&_timeScope=1800000'\          '&currentPage=%d&endTime=2017-07-19+19:00:00'\          '&pageSize=100&query=dns@qtype:A&reverse=true'\          '&startTime=2017-07-19+12:30:00'
    req = http_session.request('GET', url=(url % page_num), 
                                headers={
   'cookie': cookie_str})
    if req.status_code == 200:
        return req.text    return {
   }def get_group_name(node):
    """
    根据不同的节点类型,返回不同的类目组。相同组的节点将使用相同的颜色显示。
    :param node: node_name
    :return: group_name
    """
    global nodes_client, nodes_server, nodes_domain    if node in nodes_client:
        return 'group1'
    if node in nodes_domain:
        if 'ali' in node:
            return 'group2'
        return 'group3'
    if node in nodes_server:
        if node in ('114.114.114.114'):
            return 'group4'
        if node.startswith('192'):
            return 'group5'
    return 'group6'def get_DNS_log_json_list():
    """
    返回所有 DNS 日志记录 JSON
    :return:
    """
    dns_log_json = []
    sessionX = requests.session()
    # 翻页10for i in range(10):
        res = get_yundun_DNS_log(sessionX, i+1)
        log_json = json.loads(res)
        dns_log_json += log_json['data']['list']
    return dns_log_jsondef geenrate_nodes_and_links():
    """
    生成所有节点和关系的List
    :return: (nodes[], links[])
    """
    global nodes_client, nodes_server, nodes_domain
    nodes = []  # 所有节点
    links = []  # 所有关系
    for log in get_DNS_log_json_list():
        (client, domain, server) = ('','','')
        for mContent in log['mContents']:
            if mContent['mKey'] == 'src_ip':
                client = mContent['mValue']
            if mContent['mKey'] == 'qname':
                domain = mContent['mValue']
            if mContent['mKey'] == 'dst_ip':
                server = mContent['mValue']
        if client == '' or domain == '' or server =='':
            continue
        #print (client, domain, server)

        if domain == 'shcmsproxy.aliyun.com':
            continue

        if client not in nodes_client:
            nodes_client.append(client)
        if client not in nodes:
            nodes.append(client)

        if domain not in nodes_domain:
            nodes_domain.append(domain)
        if domain not in nodes:
            nodes.append(domain)

        if server not in nodes_server:
            nodes_server.append(server)
        if server not in nodes:
            nodes.append(server)

        if (client, server) not in links:
            links.append((client, server))
        if (server, domain) not in links:
            links.append((server, domain))
    return (nodes, links)def get_datav_json():
    (nodes, links) = geenrate_nodes_and_links()
    graph = {
   'nodes':[], 'links':[]}

    for node in nodes:
        graph['nodes'].append({
   
                "imgPath": "",
                "name": node,
                "type": get_group_name(node)
        })
    for link in links:
        graph['links'].append({
   
                "source": link[0],
                "target": link[1],
                "value": 10
        })
    return '[%s]' % json.dumps(graph)if __name__ == '__main__':
    print get_datav_json()

以下是API输出结果示例:

[
  {
   
    "nodes": [
      {
   
        "imgPath": "",
        "name": "192.168.1.1",
        "type": "group1"
      },
      {
   
        "imgPath": "",
        "name": "114.114.114.114",
        "type": "group2"
      },
      {
   
        "imgPath": "",
        "name": "taobao.com",
        "type": "group3"
      }
    ],
    "links": [
      {
   
        "source": "192.168.1.1",
        "target": "114.114.114.114",
        "value": 10
      },
      {
   
        "source": "114.114.114.114",
        "target": "taobao.com",
        "value": 15
      }
    ]  }
]

将上述内容作为企业自身 API 接口的输出,同时设置 HTTP HEAD 相关的参数,即可通过 DataV 大屏调用并展现啦!

self.set_header('Access-Control-Allow-Origin', '*.aliyun.com')self.set_header('Content-Type', 'application/json;charset=UTF-8')

关于“交互式”

这篇文章的标题中有两个字我很喜欢:“交互”。

除了视图上的交互,实际上使用者还花了很长的时间用在态势感知日志查询、 导出和格式化上。

这也算是一种“交互”,一种比较笨的交互。希望未来阿里云能在多个产品之间的数据引用、内部接口交互上再做些升级,让我们这样的使用者少发挥技能,直到我们彻底“自废武功”。

来源:阿里云安全
原文链接

相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
相关文章
|
1月前
|
云安全 人工智能 自然语言处理
|
1月前
|
云安全 安全 数据安全/隐私保护
带你读《阿里云安全白皮书》(十八)——云上安全重要支柱(12)
随着数智化发展,企业面临复杂的资产管理需求。阿里云提供全链路身份管控与精细化授权方案,涵盖细粒度权限管理和身份凭证保护,确保数据资产安全。支持多因素认证和最小权限原则,减少风险暴露,提升企业安全效率。详情见《阿里云安全白皮书(2024版)》。
|
1月前
|
云安全 安全 网络安全
带你读《阿里云安全白皮书》(十一)——云上安全重要支柱(5)
阿里云通过内部红蓝对抗体系,常态化模拟真实场景下的APT攻击,持续提升平台安全性。蓝军团队采用MITRE ATT&CK框架,系统模拟外部攻击,红军团队则进行持续防守。整个过程包括攻击规划、执行和复盘修复阶段,确保及时发现并修复安全漏洞,提升整体防御水平。
|
1月前
|
存储 云安全 人工智能
带你读《阿里云安全白皮书》(二十四)——云上安全建设最佳实践(2)
本文介绍了阿里云在AI大模型云上安全方面的最佳实践,涵盖数据安全、模型安全、内容安全和合规性四大关键挑战。阿里云通过数据加密、私有链接传输、机密计算等技术手段,确保数据和模型的安全性;同时,提供内容安全检测、Prompt问答护栏等功能,保障生成内容的合法合规。此外,阿里云还帮助企业完成算法及模型备案,助力客户在AI大模型时代安全、合规地发展。
|
1月前
|
云安全 安全 数据可视化
带你读《阿里云安全白皮书》(十二)——云上安全重要支柱(6)
阿里云构建了7x24小时全自动化红蓝对抗平台,通过深度整合内外部攻防案例,进行高频次、自动化的演练,提升对复杂攻击的应对能力,确保安全防护体系持续优化。平台具备全自动化演练、随机性与多样化、可视化输出、节点负载智能控制、日志追踪与审计、应急场景秒级熔断等特性,确保演练过程稳定高效。
|
1月前
|
存储 云安全 安全
带你读《阿里云安全白皮书》(二十一)——云上安全重要支柱(15)
阿里云安全白皮书(2024版)详细介绍了其在面对线上威胁时的快速响应与恢复能力。通过一体化的安全运营能力,阿里云帮助客户在极端威胁下快速感知、响应风险并恢复数据及服务。白皮书还涵盖了全面的资产梳理、及时的威胁情报分析、高效的风险识别与治理、专业的安全服务等内容,旨在为企业提供全方位的安全保障。
|
1月前
|
云安全 存储 运维
带你读《阿里云安全白皮书》(十七)——云上安全重要支柱(11)
阿里云提供了《阿里云安全白皮书(2024版)》,介绍客户数据安全保护技术能力。针对敏感行业,阿里云推出了专属区域和云盒两种形态,确保数据本地存储和合规要求,同时提供标准的公有云产品。此外,阿里云数据安全中心提供敏感数据识别、细粒度数据审计、数据脱敏/列加密、数据泄露检测与防护等四大功能,全面保障数据安全。
|
1月前
|
云安全 安全 测试技术
带你读《阿里云安全白皮书》(十三)——云上安全重要支柱(7)
阿里云通过全方位红蓝对抗反向校验,引入国内外优秀的第三方渗透测试服务,确保云平台及产品的安全性达到国际领先水平。同时,通过外部安全生态建设,与白帽社区合作,建立阿里安全响应中心(ASRC)和先知平台,提升整体安全水位。
|
1月前
|
云安全 监控 安全
带你读《阿里云安全白皮书》(二十三)——云上安全建设最佳实践
淘宝作为全球最大规模、峰值性能要求最高的电商交易平台,基于阿里云成功通过了多年“双11”峰值考验。淘宝的安全体系涵盖了系统安全、网络安全、账号与凭据安全、云资源安全等多个方面,通过阿里云提供的多种安全产品和服务,确保了业务的稳定运行和数据的安全。淘宝的安全实践不仅为自身业务提供了坚实的保障,也为其他行业的云上安全建设提供了宝贵的经验和参考。
|
1月前
|
云安全 存储 安全
带你读《阿里云安全白皮书》(二十二)——云上安全重要支柱(16)
在全球化背景下,阿里云高度重视云平台的安全合规建设,确保客户在不同地区和行业能够满足监管要求。阿里云通过140多项安全合规认证,提供全面的专业安全合规服务和便捷高效的安全合规产品,帮助企业高效且低成本地实现安全合规目标。更多详情可参见阿里云官网“阿里云信任中心 - 阿里云合规”。

相关产品

  • 云安全中心
  • 下一篇
    DataWorks