Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!
借助 Amazon GuardDuty,您可以监控自己的 AWS 账户和工作负载以检测恶意活动。我们于近日在 GuardDuty 中增加了检测恶意软件的功能。恶意软件用于危害工作负载、重新调整资源用途或未经授权访问数据。启用 GuardDuty 恶意软件保护之后,当 GuardDuty 检测到您在 EC2 上运行的 EC2 实例或容器工作负载之一正在执行可疑操作时,就会启动恶意软件扫描。例如,当 EC2 实例与已知恶意的命令和控制服务器进行通信时,或者正在对其他 EC2 实例执行拒绝服务 (DoS) 或蛮力破解攻击时,就会触发恶意软件扫描。
GuardDuty 支持许多文件系统类型,该工具会扫描已知用于传播或包含恶意软件的文件格式,包括 Windows 和 Linux 可执行文件、PDF 文件、存档、二进制文件、脚本、安装程序、电子邮件数据库和普通电子邮件。
识别出潜在的恶意软件后,将生成可操作的安全调查结果,其中包含威胁和文件名、文件路径、EC2 实例 ID、资源标签以及(如果是容器)容器 ID 和使用的容器映像等信息。GuardDuty 支持在 EC2 上运行的容器工作负载,包括客户管理的 Kubernetes 集群或个别 Docker 容器。如果容器由 Amazon Elastic Kubernetes Service (EKS) or Amazon Elastic Container Service (Amazon ECS) 管理,则调查结果还包括集群名称和任务或 pod ID,因此应用程序安全团队可以快速找到受影响的容器资源。
与所有其他 GuardDuty 调查结果一样,恶意软件检测将发送到 GuardDuty 控制台,通过 Amazon EventBridge 推送,路由到 AWS Security Hub,然后在 Amazon Detective 中提供以开展事件调查。
++GuardDuty 恶意软件保护的工作原理++
启用恶意软件保护后,您将设置一个 Amazon Identity and Access Management (IAM) 服务相关角色,该角色授予 GuardDuty 执行恶意软件扫描的权限。对 EC2 实例启动恶意软件扫描时,GuardDuty 恶意软件保护使用这些权限拍摄小于 1 TB 的附加 Amazon Elastic Block Store (EBS) 卷快照,然后在同一 Amazon 区域内的 Amazon 服务账户中恢复 EBS 卷,以对它们进行恶意软件扫描。您可以使用标记,从这些权限和扫描中包括或排除 EC2 实例。这样,您无需部署安全软件或代理来监控恶意软件,扫描卷的操作也不会影响正在运行的工作负载。扫描完成后,将删除服务账户中的 EBS 卷和您账户中的快照。或者,您可以在检测到恶意软件时保留快照。
服务相关角色授予 GuardDuty 访问用于加密 EBS 卷的 Amazon Key Management Service (Amazon KMS) 密钥的权限。如果对附加到可能遭到入侵的 EC2 实例的 EBS 卷使用客户托管式密钥进行加密,则 GuardDuty 恶意软件保护也会使用相同的密钥来加密副本 EBS 卷。如果这些卷未加密,GuardDuty 将使用自己的密钥来加密副本 EBS 卷并确保隐私。不支持使用 EBS 托管式密钥加密的卷。
云中的安全是您与 Amazon 共同承担的责任。作为防护机制,GuardDuty 恶意软件保护使用的服务相关角色如果具有 GuardDutyExcluded 标签,则无法对您的资源(例如 EBS 快照和卷、EC2 实例和 KMS 密钥)执行任何操作。在将 GuardDutyExcluded设置为 true 的情况下标记快照后,GuardDuty 服务将无法访问这些快照。GuardDutyExclud 标签将取代任何包含标记。权限还会限制 GuardDuty 修改快照的方式,以便在与 GuardDuty 服务账户共享时无法将其公开。
由 GuardDuty 创建的 EBS 卷始终是加密的。GuardDuty 只能在具有 GuardDuty 扫描 ID 标签的 EBS 快照上使用 KMS 密钥。在获得 EC2 检测结果后创建快照时,GuardDuty 会添加扫描 ID 标签。无法从除 Amazon EBS 服务之外的任何其他上下文调用与 GuardDuty 服务账户共享的 KMS 密钥。扫描成功完成后,将撤销 KMS 密钥授予并删除 GuardDuty 服务账户中的卷副本,从而确保 GuardDuty 服务在完成扫描操作后无法访问您的数据。
++为 Amazon 账户启用恶意软件保护++
如果您尚未使用 GuardDuty,则在为自己的账户激活 GuardDuty 时,默认情况下会启用恶意软件保护。我已经在使用 GuardDuty,因此需要从控制台启用恶意软件保护。如果您正在使用 Amazon Organizations,您的代理管理员账户可以为现有成员账户启用此功能,并配置是否应自动注册组织中的新 Amazon 账户。
在 GuardDuty 控制台中,我选择导航窗格中 Settings(设置)下的 Malware Protection(恶意软件保护)。在其中,我选择 Enable(启用),然后选择 Enable Malware Protection(启用恶意软件保护)。

屏幕截图在扫描后会自动删除。在 General settings(常规设置)中,我可以选择将检测到恶意软件的屏幕截图保留在我的 Amazon 账户中,并将其用于进一步分析。

在 Scan options(扫描选项)中,我可以配置包含标签的列表,以便只扫描带有这些标签的 EC2 实例;或者排除标签,以便跳过列表中包含标签的 EC2 实例。

++测试恶意软件保护 GuardDuty 检测结果++
为了生成几个 Amazon GuardDuty 检测结果,包括新的恶意软件保护检测结果,我克隆了 Amazon GuardDuty Tester 存储库:
$ git clone https://github.com/awslabs/amazon-guardduty-tester
首先,我使用 guardduty-tester.template 文件创建一个 Amazon CloudFormation 堆栈。堆栈准备就绪后,我会按照说明将 SSH 客户端配置为通过堡垒主机登录到测试器实例。然后,我连接到测试器实例:
$ ssh tester
从测试器实例中,我启动guardduty_tester.sh 脚本来生成检测结果:
$ ./guardduty_tester.sh *********************************************************************
* Test #1 - Internal port scanning *
* This simulates internal reconaissance by an internal actor or an *
* external actor after an initial compromise.This is considered a *
* low priority finding for GuardDuty because its not a clear indicator*
* of malicious intent on its own. *
*********************************************************************Starting Nmap 6.40 ( http://nmap.org ) at 2022-05-19 09:36 UTC
Nmap scan report for ip-172-16-0-20.us-west-2.compute.internal (172.16.0.20)
Host is up (0.00032s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
5050/tcp closed mmcc
MAC Address: 06:25:CB:F4:E0:51 (Unknown)Nmap done: 1 IP address (1 host up) scanned in 4.96 seconds-----------------------------------------------------------------------*********************************************************************
* Test #2 - SSH Brute Force with Compromised Keys *
* This simulates an SSH brute force attack on an SSH port that we *
* can access from this instance.It uses (phony) compromised keys in *
* many subsequent attempts to see if one works.This is a common *
* techique where the bad actors will harvest keys from the web in *
* places like source code repositories where people accidentally leave*
* keys and credentials (This attempt will not actually succeed in *
* obtaining access to the target linux instance in this subnet) *
*********************************************************************2022-05-19 09:36:29 START
2022-05-19 09:36:29 Crowbar v0.4.3-dev
2022-05-19 09:36:29 Trying 172.16.0.20:22
2022-05-19 09:36:33 STOP
2022-05-19 09:36:33 No results found...
2022-05-19 09:36:33 START
2022-05-19 09:36:33 Crowbar v0.4.3-dev
2022-05-19 09:36:33 Trying 172.16.0.20:22
2022-05-19 09:36:37 STOP
2022-05-19 09:36:37 No results found...
2022-05-19 09:36:37 START
2022-05-19 09:36:37 Crowbar v0.4.3-dev
2022-05-19 09:36:37 Trying 172.16.0.20:22
2022-05-19 09:36:41 STOP
2022-05-19 09:36:41 No results found...
2022-05-19 09:36:41 START
2022-05-19 09:36:41 Crowbar v0.4.3-dev
2022-05-19 09:36:41 Trying 172.16.0.20:22
2022-05-19 09:36:45 STOP
2022-05-19 09:36:45 No results found...
2022-05-19 09:36:45 START
2022-05-19 09:36:45 Crowbar v0.4.3-dev
2022-05-19 09:36:45 Trying 172.16.0.20:22
2022-05-19 09:36:48 STOP
2022-05-19 09:36:48 No results found...
2022-05-19 09:36:49 START
2022-05-19 09:36:49 Crowbar v0.4.3-dev
2022-05-19 09:36:49 Trying 172.16.0.20:22
2022-05-19 09:36:52 STOP
2022-05-19 09:36:52 No results found...
2022-05-19 09:36:52 START
2022-05-19 09:36:52 Crowbar v0.4.3-dev
2022-05-19 09:36:52 Trying 172.16.0.20:22
2022-05-19 09:36:56 STOP
2022-05-19 09:36:56 No results found...
2022-05-19 09:36:56 START
2022-05-19 09:36:56 Crowbar v0.4.3-dev
2022-05-19 09:36:56 Trying 172.16.0.20:22
2022-05-19 09:37:00 STOP
2022-05-19 09:37:00 No results found...
2022-05-19 09:37:00 START
2022-05-19 09:37:00 Crowbar v0.4.3-dev
2022-05-19 09:37:00 Trying 172.16.0.20:22
2022-05-19 09:37:04 STOP
2022-05-19 09:37:04 No results found...
2022-05-19 09:37:04 START
2022-05-19 09:37:04 Crowbar v0.4.3-dev
2022-05-19 09:37:04 Trying 172.16.0.20:22
2022-05-19 09:37:08 STOP
2022-05-19 09:37:08 No results found...
2022-05-19 09:37:08 START
2022-05-19 09:37:08 Crowbar v0.4.3-dev
2022-05-19 09:37:08 Trying 172.16.0.20:22
2022-05-19 09:37:12 STOP
2022-05-19 09:37:12 No results found...
2022-05-19 09:37:12 START
2022-05-19 09:37:12 Crowbar v0.4.3-dev
2022-05-19 09:37:12 Trying 172.16.0.20:22
2022-05-19 09:37:16 STOP
2022-05-19 09:37:16 No results found...
2022-05-19 09:37:16 START
2022-05-19 09:37:16 Crowbar v0.4.3-dev
2022-05-19 09:37:16 Trying 172.16.0.20:22
2022-05-19 09:37:20 STOP
2022-05-19 09:37:20 No results found...
2022-05-19 09:37:20 START
2022-05-19 09:37:20 Crowbar v0.4.3-dev
2022-05-19 09:37:20 Trying 172.16.0.20:22
2022-05-19 09:37:23 STOP
2022-05-19 09:37:23 No results found...
2022-05-19 09:37:23 START
2022-05-19 09:37:23 Crowbar v0.4.3-dev
2022-05-19 09:37:23 Trying 172.16.0.20:22
2022-05-19 09:37:27 STOP
2022-05-19 09:37:27 No results found...
2022-05-19 09:37:27 START
2022-05-19 09:37:27 Crowbar v0.4.3-dev
2022-05-19 09:37:27 Trying 172.16.0.20:22
2022-05-19 09:37:31 STOP
2022-05-19 09:37:31 No results found...
2022-05-19 09:37:31 START
2022-05-19 09:37:31 Crowbar v0.4.3-dev
2022-05-19 09:37:31 Trying 172.16.0.20:22
2022-05-19 09:37:34 STOP
2022-05-19 09:37:34 No results found...
2022-05-19 09:37:35 START
2022-05-19 09:37:35 Crowbar v0.4.3-dev
2022-05-19 09:37:35 Trying 172.16.0.20:22
2022-05-19 09:37:38 STOP
2022-05-19 09:37:38 No results found...
2022-05-19 09:37:38 START
2022-05-19 09:37:38 Crowbar v0.4.3-dev
2022-05-19 09:37:38 Trying 172.16.0.20:22
2022-05-19 09:37:42 STOP
2022-05-19 09:37:42 No results found...
2022-05-19 09:37:42 START
2022-05-19 09:37:42 Crowbar v0.4.3-dev
2022-05-19 09:37:42 Trying 172.16.0.20:22
2022-05-19 09:37:46 STOP
2022-05-19 09:37:46 No results found...-----------------------------------------------------------------------*********************************************************************
* Test #3 - RDP Brute Force with Password List *
* This simulates an RDP brute force attack on the internal RDP port *
* of the windows server that we installed in the environment. It uses*
* a list of common passwords that can be found on the web.This test *
* will trigger a detection, but will fail to get into the target *
* windows instance. *
*********************************************************************Sending 250 password attempts at the windows server...
Hydra v9.4-dev (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-05-19 09:37:46
[WARNING] rdp servers often don't like many connections, use -t 1 or -t 4 to reduce the number of parallel connections and -W 1 or -W 3 to wait between connection to allow the server to recover
[INFO] Reduced number of tasks to 4 (rdp does not like many parallel connections)
[WARNING] the rdp module is experimental.Please test, report - and if possible, fix.
[DATA] max 4 tasks per 1 server, overall 4 tasks, 1792 login tries (l:7/p:256), ~448 tries per task
[DATA] attacking rdp://172.16.0.24:3389/
[STATUS] 1099.00 tries/min, 1099 tries in 00:01h, 693 to do in 00:01h, 4 active
1 of 1 target completed, 0 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-05-19 09:39:23-----------------------------------------------------------------------*********************************************************************
* Test #4 - CryptoCurrency Mining Activity *
* This simulates interaction with a cryptocurrency mining pool which *
* can be an indication of an instance compromise.In this case, we are*
* only interacting with the URL of the pool, but not downloading *
* any files.This will trigger a threat intel based detection. *
*********************************************************************Calling bitcoin wallets to download mining toolkits-----------------------------------------------------------------------*********************************************************************
* Test #5 - DNS Exfiltration *
* A common exfiltration technique is to tunnel data out over DNS *
* to a fake domain. Its an effective technique because most hosts *
* have outbound DNS ports open. This test wont exfiltrate any data, *
* but it will generate enough unusual DNS activity to trigger the *
* detection. *
*********************************************************************Calling large numbers of large domains to simulate tunneling via DNS*********************************************************************
* Test #6 - Fake domain to prove that GuardDuty is working *
* This is a permanent fake domain that customers can use to prove that*
* GuardDuty is working. Calling this domain will always generate the *
* Backdoor:EC2/C&CActivity.B!DNS finding type *
*********************************************************************Calling a well known fake domain that is used to generate a known finding; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> GuardDutyC2ActivityB.com any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11495
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;GuardDutyC2ActivityB.com. IN ANY;; ANSWER SECTION:
GuardDutyC2ActivityB.com.6943 IN SOA ns1.markmonitor.com. hostmaster.markmonitor.com.2018091906 86400 3600 2592000 172800
GuardDutyC2ActivityB.com.6943 IN NS ns3.markmonitor.com.
GuardDutyC2ActivityB.com.6943 IN NS ns5.markmonitor.com.
GuardDutyC2ActivityB.com.6943 IN NS ns7.markmonitor.com.
GuardDutyC2ActivityB.com.6943 IN NS ns2.markmonitor.com.
GuardDutyC2ActivityB.com.6943 IN NS ns4.markmonitor.com.
GuardDutyC2ActivityB.com.6943 IN NS ns6.markmonitor.com.
GuardDutyC2ActivityB.com.6943 IN NS ns1.markmonitor.com.;; Query time: 27 msec
;; SERVER: 172.16.0.2#53(172.16.0.2)
;; WHEN: Thu May 19 09:39:23 UTC 2022
;; MSG SIZE rcvd: 238*****************************************************************************************************
预期的 GuardDuty 检测结果测试 1:内部端口扫描
预期的检测结果:EC2 实例 i-011e73af27562827b 正在对远程主机执行出站端口扫描。172.16.0.20
检测结果类型:Recon:EC2/Portscan测试 2:使用泄露密钥的 SSH 蛮力攻击
预期有两个检测结果 - 一个用于出站检测,另一个用于入站检测
出站:i-011e73af27562827b 正在对 172.16.0.20 进行 SSH 蛮力攻击
入站:172.16.0.25 正在对 i-0bada13e0aa12d383 进行 SSH 蛮力攻击
检测结果类型:UnauthorizedAccess:EC2/SSHBruteForce测试 3:使用密码列表的 RDP 蛮力攻击
预期有两个检测结果 - 一个用于出站检测,另一个用于入站检测
出站:i-011e73af27562827b 正在对 172.16.0.24 进行 RDP 蛮力攻击
入站:172.16.0.25 正在对 i-0191573dec3b66924 进行 RDP 蛮力攻击
检测结果类型:UnauthorizedAccess:EC2/RDPBruteForce测试 4:加密货币活动
预期的检测结果:EC2 实例 i-011e73af27562827b 正在查询与比特币活动相关的域名
检测结果类型:CryptoCurrency:EC2/BitcoinTool.B!DNS测试 5:DNS 渗透
预期的检测结果:EC2 实例 i-011e73af27562827b 正在尝试查询与泄露数据相似的域名
检测结果类型:Trojan:EC2/DNSDataExfiltration测试 6:C&C 活动
预期检测结果:EC2 实例 i-011e73af27562827b 正在查询与已知命令与控制服务器关联的域名。
检测结果类型:Backdoor:EC2/C&CActivity.B!DNS
几分钟后,检测结果将显示在 GuardDuty 控制台中。在顶部,我看到了新的恶意软件保护功能发现的恶意文件。其中一个检测结果与 EC2 实例相关,另一个与 ECS 集群相关。

首先,我选择与 EC2 实例相关的检测结果。在面板中,我看到有关实例和恶意文件的信息,例如文件名和路径。在 Malware scan details(恶意软件扫描详细信息)部分中,Trigger finding ID(触发检测结果 ID)指向触发恶意软件扫描的原始 GuardDuty 检测结果。就我而言,最初的检测结果是此 EC2 实例正在对另一个 EC2 实例执行 RDP 蛮力攻击。

在此处,我选择 Investigate with Detective(使用 Detective 调查),然后直接从 GuardDuty 控制台转到 Detective 控制台,从中可视化 EC2 实例、Amazon 账户和受检测结果影响的 IP 地址的 Amazon CloudTrail 和 Amazon Virtual Private Cloud (Amazon VPC) 流数据。使用 Detective,我可以分析、调查和确定 GuardDuty 发现的可疑活动的根本原因。

选择与 ECS 群集相关的检测结果时,我将获得有关受影响资源的更多信息,例如 ECS 集群、任务、容器和容器映像的详细信息。

使用 GuardDuty 测试器脚本可以更轻松地测试 GuardDuty 与您使用的其他安全框架的整体集成,以便在检测到真正的威胁时做好准备。
++将 GuardDuty 恶意软件防护保护与 Amazon Inspector 进行比较++
此时,您可能会问自己 GuardDuty 恶意软件保护与 Amazon Inspector 有何关系,Amazon Inspector 是一项扫描 AWS 工作负载的软件漏洞和意外网络暴露的服务。这两种服务相辅相成,提供不同的保护层:
Amazon Inspector 通过识别和修复已知软件和应用程序漏洞提供主动防护,这些漏洞是攻击者入侵资源和安装恶意软件的入口点。
GuardDuty 恶意软件保护可检测到活跃运行的工作负载中存在的恶意软件。此时,系统已经受损,但是 GuardDuty 可以限制感染的时间,并在系统受损导致影响业务的事件之前采取措施。
++可用性和定价++
Amazon GuardDuty 恶意软件保护现已在所有提供 GuardDuty 的 Amazon 区域推出,不包括 AWS 中国(北京)、Amazon 中国(宁夏)、Amazon GovCloud(美国东部)和 Amazon GovCloud(美国西部)区域。
在发布时,GuardDuty 恶意软件保护已与以下合作伙伴产品集成:
BitDefender
CloudHesive
Crowdstrike
Fortinet
Palo Alto Networks
Rapid7
Sophos
Sysdig
Trellix
使用 GuardDuty,您无需部署安全软件或代理来监控恶意软件。您只需为文件系统中扫描的 GB 量(而不是 EBS 卷的大小)和 EBS 快照保存在您账户中的时间付费。除非您在发现恶意软件时启用快照保留功能,否则 GuardDuty 创建的所有 EBS 快照都会在扫描后自动删除。有关更多信息,请参阅 GuardDuty 定价和 EBS 定价。请注意,GuardDuty 仅扫描小于 1 TB 的 EBS 卷。为了帮助您控制成本并避免重复警报,同一卷的扫描频率不会超过每 24 小时一次。
使用 Amazon GuardDuty 检测恶意活动并保护您的应用程序免受恶意软件侵害。
— Danilo
相关文章:

Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏…...
YOLOv7 pytorch
yolov7主干部分结构图:yolov7主干 yolov7数据集处理代码:yolov7数据集处理代码 yolov7训练参数解释:yolov7训练参数【与本文代码有区别】 yolov7训练代码详解:yolov7训练代码详解 目录 训练自己的训练集 训练自己的训练集 此…...

JDK自带JVM分析工具
一、JDK自带工具盘点: jstat:性能分析-查看gc情况; jmap:内存分析-堆信息; jstack:线程分析-栈信息; jinfo:参数查看及配置; jstatd:启动jvm监控服务。它…...

IO多路复用--[select | poll | epoll | Reactor]
因为在简历上写了netty的项目,因此还是将网络底层的那点东西搞清楚。 首先希望明确的是,BIO、NIO、IO多路复用这是不同的东西, 我会在本文中详细讲出来。 本文参考资料: JAVA IO模型 IO多路复用 select poll epoll介绍 从BIO到epo…...
pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas
前言 环境:k8s-v1.22.17 docker-20.10.9 centos-7.9 目录前言什么是可计算资源CPU、Memory计量单位pod资源请求、限额方式pod定义requests、limits查看节点资源情况pod使用request、limits示例LimitRange限制命名空间下的pod的资源配额Qos服务质量等级资源配额管理…...
R语言基础(六):函数
R语言基础(一):注释、变量 R语言基础(二):常用函数 R语言基础(三):运算 R语言基础(四):数据类型 R语言基础(五):流程控制语句 7. 函数 函数是一组完成特定功能的语句。 7.1 内置函数 R语言系统中提供许多内置函数&…...
[C++] 简单序列化
前言 序列化(Serialization) 是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 使用 序列化 std::array&…...
Autosar Configuration(十三)SomeIP之配置TCP/IP
本系列教程是根据实际项目开发中总结的经验所得,如发现有不对的地方,还请指正。 目录Autosar Configuration(一)Davinci Developer-工具介绍 Autosar Configuration(二)Davinci Developer-SWC配置 Autosar Configuration(三) Security之Crypto配置 Autosar Configurat…...

滤波算法 | 无迹卡尔曼滤波(UKF)算法及其Python实现
文章目录简介UKF滤波1. 概述和流程2. Python代码第一个版本a. KF滤波b. UKF滤波第二个版本简介 上一篇文章,我们介绍了UKF滤波公式及其MATLAB代码。在做视觉测量的过程中,基于OpenCV的开发包比较多,因此我们将UKF的MATLAB代码转到python中&a…...

IMU 积分的误差状态空间方程推导
文章目录0. 前言1. 离散时间的IMU运动学方程2. 状态变量定义3. 补充公式4. IMU误差状态空间方程推导4.1. 旋转误差 δr^i1\delta\hat{\mathbf{r}}_{i1}δr^i14.2. 速度误差 δv^i1\delta\hat{\mathbf{v}}_{i1}δv^i14.3. 平移误差 δpi1\delta \mathbf{p}_{i1}δpi14.4. …...

VirtualBox的克隆与复制
快照太多,想整合成1个文件怎么办? 最近,我就遇到一个问题。快照太多了。比较占用空间怎么办? 错误做法 一开始,我是这么操作的,选中某个快照,然后选择删除…然后我登录虚拟机后,发…...

每天5分钟玩转机器学习算法:逆向概率的问题是什么?贝叶斯公式是如何解决的?
本文重点 前面我们已经知道了贝叶斯公式,以及贝叶斯公式在机器学习中的应用,那么贝叶斯公式究竟解决了一个什么样的问题呢?贝叶斯是为了解决逆向概率的问题。 正向的概率和逆向的概率 正向概率:假设袋子里面有N个白球,有M个黑球,你伸手一摸,那么问题就是你摸出黑球的概…...
游戏闲聊之游戏是怎么赚钱的
其实一般情况下不太爱写这种文章,简单说就一点,这个行业的人我惹不起。 1、外挂 所谓外挂,是指通过技术手段,提供辅助游戏的工具,方便玩家获得一些额外的能力; 这事我特意咨询过律师,外挂分两…...

Redis高频面试题汇总(下)
目录 1.Redis中什么是Big Key(大key) 2.Big Key会导致什么问题 3.如何发现 bigkey? 4.为什么redis生产环境慎用keys *命令 5.如何处理大量 key 集中过期问题 6.使用批量操作减少网络传输 7.缓存穿透 8.缓存击穿 9.缓存雪崩 10.缓存污染(或满了…...

Windows修改Docker安装目录修改Docker镜像目录,镜像默认存储位置存放到其它盘
Windows安装Docker,默认是安装在C盘,下载镜像后会占用大量空间,这时需要调整镜像目录;场景:不想连服务器或者没有服务器,想在本地调试服务,该需求就非常重要。基于WSL2安装docker后,…...

376. 摆动序列——【Leetcode每日刷题】
376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如, [1, 7, 4, 9, 2, 5] 是一个…...

mgre实验
实验思路 1、首先根据拓扑结构合理分配IP地址,并对各个路由器的IP地址和R5环回接口的IP地址进行配置。 2、让私网中的边界路由器对ISP路由器做缺省路由。 3、根据实验要求,对需要配置不同类型认证的路由器进行认证配置,和需要不同封装的协议…...
一文彻底了解Zookeeper(介绍篇)
zookeeper 是什么? zookeeper是一个分布式协作框架,提供高可用,高性能,强一致等特性 zookeeper 有哪些应用场景? 分布式锁:分布式锁是指在分布式环境中,多个进程或线程需要互斥地访问某个共享…...

1. ELK Stack 理论篇之什么是ELK Stack?
ELK Stack 理论篇之什么是ELK Stack?1.1 什么是 ELK Stack?1.2 ELK Stack的发展史1.2.1 Elasticsearch1.2.2 引入 Logstash 和 Kibana,产品更强大1.2.3 社区越来越壮大,用例越来越丰富1.2.4 然后我们向 ELK 中加入了 Beats1.2.5 那么&#x…...

两道有关链表的练习
目录 一、分割链表 二、奇偶链表 一、分割链表 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1: 输…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...