当前位置:网站首页>教程篇(5.0) 09. RESTful API * FortiEDR * Fortinet 网络安全专家 NSE 5
教程篇(5.0) 09. RESTful API * FortiEDR * Fortinet 网络安全专家 NSE 5
2022-07-02 17:53:00 【飞塔老梅子】

在本课中,你将学习如何使用FortiEDR RESTful API。

通过展示RESTful API方面的能力,你将能够使用RESTful API与FortiEDR管理控制台进行交互。

什么是API?你可以轻松地将FortiEDR的功能集成到组织的现有软件中。FortiEDR中央管理器支持基于REST http的API,用于访问安全和通信控制数据,以及设备和软件配置和操作。本质上,这是一种通过编程复制管理控制台功能的方法。你可以管理设备和软件配置、分析事件和修复设备,所有这些都不需要使用管理控制台。

RESTful API是如何工作的?它是基于HTTP的REST。它使用SSL加密,并以JSON格式返回协议信息。可以使用基于令牌的身份验证,也可以使用基于密码的身份验证。要使用基于密码的身份验证,你需要确保为用户分配了Admin和Rest API角色。你可以在USERS下的管理控制台的ADMINISTRATION选项卡中执行此操作。该API使用几个不同的方法—get来读取数据,POST或PUT来更新。它还有DELETE和其他一些命令。

报告的最常见问题之一是,当新用户第一次尝试使用API时,会出现未经授权的消息。原因是需要重置密码。新用户首次登录管理控制台时,会被强制修改密码。因为不能用API重置密码,所以会得到一条错误消息。解决方法很简单。要解决此问题,请在管理控制台中的ADMINISTRATION选项卡中单击USERS。在列表中找到用户并单击重置密码。打开“重置密码”对话框。清除“下次登录时要求更改密码”复选框,然后输入密码并单击“重置”。用户现在应该能够通过API登录。或者,你可以要求用户在使用API调用之前登录到管理控制台并重置他们的密码。

有两种方法可以访问API。第一种方法是使用CLI应用程序,比如Curl。上图展示了一个典型的Curl请求。如果为中央管理器使用自签名证书(这是默认设置),则使用-k绕过证书验证。输入-H,然后输入授权类型和凭证,然后输入URL参数。示例命令以JSON格式返回一个列表,其中包含组织名称、已分配的席位、正在使用的席位、过期日期等。
第二种方法是使用像Postman或Insomania这样的GUI应用程序。你将看到与刚才Curl格式的请求相同,但格式化为Postman格式。首先,选择GET方法,然后输入URL参数:https://<FortiEDRHOST>/management-rest/organizations/list-organizations。在上图的图像中,你可以看到应用程序本身中的一个命令。你可以在左上角看到GET,然后是URL参数—在本例中,你要求获得多租户环境中所有组织的列表。在它下面,可以看到Authorization选项卡。在“TYPE”下拉列表中选择“Basic Auth”,输入用户名和密码。这节课你会学到更多关于身份验证的知识。在底部,你可以看到从该请求返回的结果,一个列出所有组织的JSON文件。你可以看到组织名称、分配的席位、正在使用的席位、过期日期等。

上图展示了一些有用的API命令。你在FortiEDR RESTful API手册可以得到一个完整的列表和详细的说明。

为什么使用Postman?这是与API交互的一种非常简单的方式,它是一个干净和简单的界面,它保存API请求历史,因此你可以有一个以前所做的工作列表,你可以重用一个请求,从而不必再次输入所有信息。
以下是一些使用postman的技巧。首先,确保在屏幕左侧选择了正确的请求方法。在上图显示的示例中,你可以看到一个PUT请求。其次是URL参数。在本课后面,你会学到更多关于body参数的知识。你也可以参考FortiEDR RESTful API指南来获得完整的选项列表。有些请求类型需要正文参数。在这种情况下,选择Body选项卡,选择raw,然后从屏幕右侧的下拉列表中选择JSON (application/ JSON)格式。然后你可以在文本字段中输入你的body参数。上图显示的示例更改了事件51516的状态。

看一下使用API的示例工作流。在这个场景中,你将在FortiEDR环境中调查威胁。首先,你需要一个事件列表,将其分类为恶意或可疑的,并具有阻止或模拟阻止的操作。
此时,你检索的是信息,而不是更改任何东西,因此你使用的是GET方法。然后,输入URL参数。你已经看到了一些示例,但这次你要查找的是事件列表,因此从https开始,然后输入FortiEDR主机。你可以使用IP地址或名称(例如acme)。fortiedr.com。在主机地址之后,总是输入management-rest,然后是类别、事件,然后是call——在本例中是list-事件。然后添加搜索条件。通过在参数之间使用&号,可以一次搜索多个搜索参数。在本例中,你要搜索分类和操作。还可以为每个条件输入多个值,用逗号分隔。在本例中,我们寻找两种可能的分类和两种可能的操作。
此搜索返回JSON格式的列表。每个事件都有相当多的信息—事件ID、流程、路径、日期、状态、违反了哪些规则,等等。为了继续示例工作流,假设我们正在调查这上图显示的事件。注意事件ID, 46426。接下来,你将在新请求中使用该ID。


现在,获取刚刚复制的事件ID的原始事件详细信息。你将发送另一个GET请求,这次请求获取事件ID的原始数据项,然后添加fulldatarequed =true。
同样,你将收到一个JSON列表,这次显示关于原始项的详细信息。使用此信息检索可执行文件。为此,你将需要原始的Eventld、MainProcessld和Application路径。将这些值复制到一个单独的文本文件中,以便稍后使用它们来检索恶意软件的样本。有几件事需要记住。首先,这里的Eventld字段与你在上一张图片中复制的事件ID不同。这是原始事件ID,这是检索文件所需要的。必须将应用程序路径转换为URL编码格式。


现在使用刚刚获得的信息,使用GET命令检索可执行文件。然后输入URL参数。在本例中,你要查找存储在取证中的信息,因此将参数更改为取证,然后是get-event-file命令。然后使用刚刚复制的信息—原始事件ID、进程ID和应用程序路径—告诉系统你正在查找的确切文件。
如果你单击Send,你的结果将类似于你在屏幕的右上角所看到的。它看起来像胡言乱语,但它实际上是一个密码保护的压缩文件,包含你请求的文件。要获得可用格式的文件,可以使用Send和Download。使用“发送”下拉菜单选择“发送”和“下载”。现在你可以在本地保存zip文件。要提取可执行文件,输入密码enCrypted,大写C。


接下来,从用户的设备中删除恶意可执行文件。你可以使用PUT请求来完成此操作。这是一个取证功能,因此进入取证/补救设备。然后,使用这里看到的格式指定设备名称、要删除的可执行文件的名称和路径。该文件应该从设备中消失,正如上图的例子所示。


在检索到可执行文件之后,通过在安全的沙盒环境中测试来评估它。例如,假设你验证该文件是恶意的。你可能希望将受影响的收集器放入高安全性收集器组中,以遏制感染,直到你完全修复设备为止。为此,发送一个PUT命令。你正在发送与库存相关的信息,所以输入库存/移动收集器。然后输入采集器名称和目标组——在本例中为高安全采集器组。你可以在管理控制台中对结果进行验证。上图中的示例向你展示了你成功地将cwin7-32从默认收集器组移动到高安全性收集器组。


在修复设备或创建异常之后,将该事件标记为Handled,以便其他管理控制台用户知道你已经处理了它。你也可以将其标记为Read。要更改事件状态,请发送一个PUT请求。你需要修改事件类别中的事件。然后,必须指定事件ID。这一次,你必须完成body字段。将read设置为true,将handle设置为false,表示不再处理该事件。添加注释解释如何处理事件和其他相关信息总是一个好主意。你可以在管理控制台的EVENT VIEWER选项卡中验证你的更改。在上图的图片中,你可以看到事件已处理,并且你的评论已添加到event HANDLING窗口。如果你仔细观察,可以在背景中看到一个浅色的标志,它表明事件已被处理,并且事件是纯文本的,这意味着它被标记为已读。


上图展示了另一种方案。假设你检查了触发警报的文件,发现它不是恶意软件。在这种情况下,你可能想要创建一个异常。你也可以通过API来实现这一点。使用POST命令。在事件类别中,在URL参数中输入events/create-exception。然后,你必须指定异常参数,它应用于的事件ID,然后是你想要应用异常的收集器组,在上图显示的示例中,是Sales组,而不是所有收集器组。我们还可以指定目的地。上图显示的示例显示,异常应用于收集器组、所有目的地和所有用户。


答案:A


答案:A


通过掌握本课涉及的目标,你学习了如何在FortiEDR中使用RESTful API。

边栏推荐
猜你喜欢

Exness in-depth good article: dynamic series - Case Analysis of gold liquidity (V)

聊聊电商系统中红包活动设计

How can retail enterprises open the second growth curve under the full link digital transformation
![[100 cases of JVM tuning practice] 02 - five cases of virtual machine stack and local method stack tuning](/img/59/6c776e0607a52962b72fbea2e64c8e.png)
[100 cases of JVM tuning practice] 02 - five cases of virtual machine stack and local method stack tuning

新手必看,点击两个按钮切换至不同的内容

Hongmeng's fourth learning

消息队列消息丢失和消息重复发送的处理策略

彻底搞懂基于Open3D的点云处理教程!

Redis (6) -- object and data structure

M2DGR:多源多场景 地面机器人SLAM数据集(ICRA 2022 )
随机推荐
R language ggplot2 visualization: visualize the line chart and add customized X-axis label information to the line chart using labs function
Hongmeng's fourth learning
Thoroughly understand the point cloud processing tutorial based on open3d!
Talk about the design of red envelope activities in e-commerce system
Leetcode (154) -- find the minimum value II in the rotation sort array
R语言使用epiDisplay包的cox.display函数获取cox回归模型汇总统计信息(风险率HR、调整风险率及其置信区间、模型系数的t检验的p值、Wald检验的p值和似然比检验的p值)、汇总统计
R语言ggplot2可视化分面图(facet):gganimate包基于transition_time函数创建动态散点图动画(gif)
ICDE 2023|TKDE Poster Session(CFP)
仿京东放大镜效果(pink老师版)
R语言dplyr包filter函数筛选dataframe数据、如果需要筛选的数据列(变量)名称中包含引号则需要使用!!sym语法处理、否则因为无法处理引号筛选不到任何数据
彻底搞懂基于Open3D的点云处理教程!
PyTorch函数中的__call__和forward函数
新手必看,点击两个按钮切换至不同的内容
Redis (7) -- database and expiration key
新加坡暑假旅游攻略:一天玩转新加坡圣淘沙岛
材质UV遮罩的技巧
UML 类图
Exness in-depth good article: dynamic series - Case Analysis of gold liquidity (V)
Progress progress bar
Introduction to the paper | analysis and criticism of using the pre training language model as a knowledge base