beagle是一个事件响应和数字取证工具,它将数据源和日志转换为图形

pybeagle的Python项目详细描述


比格犬

生成状态slack安装

  1. 码头工人
  2. python包
  3. 配置
  • 网络接口
    1. 上传数据
    2. 浏览现有图表
    3. 图形接口
      1. 检查节点和边缘
      2. 扩展邻居
      3. 隐藏节点
      4. 运行mutators
      5. 切换节点和边缘类型
      6. 撤消/重做操作并重置
      7. 图表透视图
  • python库
  • 文档
  • 关于比格犬

    beagle是一个事件响应和数字取证工具,可以将数据源和日志转换为图形。支持的数据源包括FireEye HX Triages、Windows EVTX文件、Sysmon日志和原始Windows内存映像。生成的图形可以发送到neo4j或dgraph等图形数据库,也可以作为pythonnetworkx对象保存在本地。

    beagle可以直接用作python库,也可以通过提供的web界面使用。

    <;居中>; <;/居中>;

    库可以用作函数调用序列。

    啊!

    或者通过严格调用数据源的每个中间步骤来绘制流程。

    啊!

    图表以个人活动为中心处理,主要是帮助分析人员调查主机上的活动,而不是主机之间的活动。

    安装

    码头工人

    beagle可用作docker文件:

    docker pull yampelo/beagle
    mkdir -p data/beagle
    docker run -v "$PWD/data/beagle":"/data/beagle" -p 8000:8000 yampelo/beagle
    

    python包

    它也可以作为图书馆使用。完整的API文档可在https://beagle-graphs.readthedocs.io rel="nofollow">https://beagle graphs.readthedocs.io上获得

    pip install pybeagle
    

    注意:当前仅支持Python3.6+。

    Rekall不会自动安装。要安装rekall,请执行以下命令:

    pip install pybeagle[rekall]
    

    配置

    可以使用以下格式的环境变量修改配置文件中的任何条目:。例如,要更改使用Docker映像时使用的virustotal API键,可以使用-e参数并设置beagle\u virustotal\u API键变量:

    docker run -v "data/beagle":"/data/beagle" -p 8000:8000 -e "BEAGLE__VIRUSTOTAL__API_KEY=$API_KEY" beagle
    

    使用docker compose可以轻松定义环境变量和目录

    version: "3"
    
    services:
        beagle:
            image: yampelo/beagle
            volumes:
                - /data/beagle:/data/beagle
            ports:
                - "8000:8000"
            environment:
                - BEAGLE__VIRUSTOTAL__API_KEY=$key$
    

    Web界面

    Beagle的Docker图片提供了一个Web界面,可以将数据转换为图形,并使用它们来调查数据。

    上传数据

    <;居中>; <;/居中>;

    上载表单环绕图形创建过程,并自动使用networkx作为后端。根据数据源所需的参数,表单将提示文件上载或文本输入。例如:

    • VT API沙盒报告要求绘制哈希图。
    • FireEye HX需要HX分类。

    创建的任何图形都存储在配置中storage部分的dir键下定义的文件夹中。可以通过设置环境变量来修改此设置。

    也可以将注释添加到任何图形中,以更好地帮助描述它。

    每个数据源将自动从提供的参数中提取元数据。查看数据源的现有图表时,元数据和注释稍后将可见。

    浏览现有图表

    单击侧栏上的一个数据源将呈现该数据源的所有已分析图形的表。

    <;居中>; <;/居中>;

    检查节点和边

    图中的节点显示特定字段的前15个字符。例如,对于流程节点,这将是流程名称。

    边缘只显示边缘类型。

    单击一个节点或边将聚焦该节点并显示其信息。在右侧栏的"节点信息"面板中。

    聚焦于节点
    <;居中>; <;/居中>;
    聚焦于边缘
    <;居中>; <;/居中>;

    扩大邻国

    双击节点将拉入任何相邻节点。相邻节点是通过边连接到单击的节点的任何节点。如果没有要拉入的邻居,则在图中看不到任何更改。

    • 这与方向无关。这意味着双击节点时,父进程或子进程可以被拉入。
    • beagle一次只能拉入25个节点。
    <;居中>; <;/居中>;

    隐藏节点

    在节点上单击一次长时间将隐藏它,使其不显示在图形中,也不显示依赖于它的任何边。

    <;居中>; <;/居中>;

    运行变异器

    右键单击一个节点会显示一个上下文菜单,允许您运行图形变换器。变换器是接受图形状态并返回新状态的函数。

    两个非常有用的变异器是:

    1. 回溯节点:查找导致创建此节点的节点和边的序列。
      • 回溯流程节点将显示其流程树。
    2. 展开所有子节点:从当前节点,显示具有此节点作为父节点的每个节点。
      • 展开流程节点将显示它生成的每个子流程节点、它可能接触过的任何文件,以及几乎所有由此节点发生的活动。
    3. < > >
      回溯节点

      回溯节点非常有用,类似于在日志文件中执行根本原因感染。

      <;居中>; <;/居中>;
      展开节点子体

      展开节点的子体可以立即查看由于该节点而发生的所有事情。此操作将显示以选定节点为根的子图。

      <;居中>; <;/居中>;

      切换节点和边类型

      有时,节点或边可能与当前事件无关,可以打开或关闭边和节点类型。切换类型后,该类型的节点或边将从可见图形中移除。

      关闭节点类型可防止在使用变异器或拉入邻居时使用该节点类型。

      <;居中>; <;/居中>;

      撤消/重做操作并重置

      图中的任何动作都是立即可逆的!使用"撤消/重做"按钮可以还原执行的任何操作。重置按钮将图形状态设置为加载时的状态,从而为您保存刷新。

      <;居中>; <;/居中>;

      图形透视不可译

      使用上述操作更改图形的当前状态时,您可能还希望在不同的透视图中查看可见节点和边的当前集。图形屏幕顶部的选项卡允许您将数据转换为各种视图:

      • 图形(默认透视)
      • 时间线
      • 降价

      每个透视图都支持通过单击节点来聚焦节点。

      <;居中>; <;/居中>;

      python库

      图形生成过程可以使用python库以编程方式执行。图形生成过程由三个步骤组成:

      1. 数据源类逐个分析并生成事件。
      2. transformer类接受这些输入并将它们转换为各种节点类,如进程
      3. 后端类获取节点数组,将它们放入图形结构中,并将它们发送到所需的位置。
      4. < > >

        python包可以通过pip安装:

        pipinstallpybeagle

        创建一个图需要将这些链接在一起。您可以使用to_graph()函数完成此操作。

        frombeagle.datasourcesimportHXTriage# By default, using the to_graph() class uses NetworkX and the first transformer.G=HXTriage('test.mans').to_graph()<networkx.classes.multidigraph.MultiDiGraphat0x12700ee10>

        它也可以在每一步显式地完成。使用函数调用,您还可以定义要使用的后端,例如,将数据发送到dgraph

        >>>frombeagle.datasourcesimportSysmonEVTX>>>graph=SysmonEVTX("malicious.evtx").to_graph()>>>graph<networkx.classes.multidigraph.MultiDiGraphat0x12700ee10>
        0

        当调用to_graphto_transformer方法时,可以向这些类传递任何参数:

        >>>frombeagle.datasourcesimportSysmonEVTX>>>graph=SysmonEVTX("malicious.evtx").to_graph()>>>graph<networkx.classes.multidigraph.MultiDiGraphat0x12700ee10>
        1

        您还可以手动调用上述过程中的每个步骤,访问中间输出

        >>>frombeagle.datasourcesimportSysmonEVTX>>>graph=SysmonEVTX("malicious.evtx").to_graph()>>>graph<networkx.classes.multidigraph.MultiDiGraphat0x12700ee10>
        2

        如果要手动调用每个步骤,则需要确保transformer类实例与提供的数据源类的输出兼容。

        • 所有后端均与所有变压器兼容。

        每个数据源都定义了与之兼容的转换器的列表,可以通过访问该列表。transformers属性:

        >>>frombeagle.datasourcesimportSysmonEVTX>>>graph=SysmonEVTX("malicious.evtx").to_graph()>>>graph<networkx.classes.multidigraph.MultiDiGraphat0x12700ee10>
        3

        控制边生成

        默认情况下,边不会压缩,这意味着如果进程节点u写入文件节点v5000次,则这些节点之间将有5000条边。有时,尤其是在试图可视化数据时,这可能会使分析师不知所措。

        对于这种类型的操作(在本例中编写),您可以将所有5000条边压缩为一条边,方法是向后端类传递consolidate\u edges=true参数,例如:

        >>>frombeagle.datasourcesimportSysmonEVTX>>>graph=SysmonEVTX("malicious.evtx").to_graph()>>>graph<networkx.classes.multidigraph.MultiDiGraphat0x12700ee10>
        4

        默认情况下,Web界面将合并边缘。

        文档

        欢迎加入QQ群-->: 979659372 Python中文网_新手群

        推荐PyPI第三方库


    热门话题
    在数据库中存储密码的java加密方法   java正则表达式否定整个正则表达式   java为什么要得到这个Hashmap输出?   看不到玻璃鱼爪哇SE 6   类对象包装器中的Java基本数据字段   java从文本文件中读取整数并存储到单独的变量中?(扫描仪)   优化大型Java数据阵列的处理和管理   如何使用Java XML包装类创建对象   java为ExecutorService invokeAll()创建包装器   java如何在Android Studio 1.0.0中设置Facebook SDK?获取SDK位置未找到错误   java在尝试从线程启动动画时调用了FromErrorThreadException   java根据哈希确认文件内容   通过java在neo4j中获取索引值相同的所有节点?   java为什么我的Validare邮政编码(布尔)程序返回false?   java会话自动从servlet/jsp生成,尽管存在以下条件:<%@page session=“false”%>   创建新LANsocket时拒绝java连接   java如何多线程更新由sql代码更新的数据库?   安卓 Java使用类作为集合来添加项   安卓为什么我的清单文件不声明java包?