当前位置: 首页 > news >正文

以ATTCK为例构建网络安全知识图

ATT&CK(Adversarial Tactics, Techniques, and Common Knowledge )是一个攻击行为知识库和模型,主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。本文简单介绍ATT&CK相关的背景概念,并探讨通过ATT&CK构建知识图的思考。

前言

随着攻击工具、方法的逐渐升级和复杂化,安全数据的大规模融合,攻防对抗愈加激烈。安全团队如何在浩瀚数据中有效发现高级威胁的蛛丝马迹,如何把网络安全专家的经验、知识有效转化为可复制可扩展的数据分析能力,如何将对抗高级威胁的“炼金术”逐步升级为科学淘金指南,如何将安全从业者从繁重的体力劳动中解放出来,愈发成为安全能力亟需突破的难点和重点,也是我们正在探索的方向。

正如医疗行业中治疗疑难杂症依赖医疗专家,网络空间高级威胁的防护和处置也依赖安全专家的经验与知识。不过,即使是最顶尖的外科医生,也离不开高度自动化、精准化的医疗设备辅助其完成复杂高难度的医疗任务,网络空间亦需要自动化平台与工具辅助从业者进行持续的攻防对抗。

“针对网络空间智能威胁分析技术的研究,目的不是设计一个如何炫目的概念,也难以实现一个放之四海皆可用的AI安全模型。回归到攻防的战场上,我们希望也能够得到的,是一个能吞吐海量异构多源数据,快速检测、推理、响应、追踪威胁事件的高度自动化的统一平台及工具集,辅助人进行安全的运营、研究和对抗。”在《智能威胁分析之图数据构建》文中,基于对网络安全数据分析中常用数据源的重新审视,提出了构建智能安全平台的图模型所需的环境、行为、情报、知识四张关键数据图,以支撑“智能化”安全研究工作的进一步开展。构建自动化的威胁分析能力,需要对网络安全大规模、多源、多维数据进行系统的梳理和组织,以实现基于各类型数据的关联挖掘能力。图的组织形式能够充分发挥网络数据的图属性,从存储、分析、可视化等多个环节提升安全数据分析的效率。

在环境、行为、情报、知识四张图中,知识图具有可归纳、可推理、可建模的属性,通过知识图内部的关联和与其他类型的图间关联,能够有效拓展威胁事件分析的上下文,支持威胁的检测、响应、溯源等复杂任务。ATT&CK(Adversarial Tactics, Techniques, and Common Knowledge )是一个攻击行为知识库和模型,主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。本文简单介绍ATT&CK相关的背景概念,并探讨通过ATT&CK构建知识图的思考。

一、 ATT&CK相关背景

经过数年的知识积累,ATT&CK已经从针对企业内网的、Windows平台的、终端侧的、post-compromise行为分析模型,拓展为多场景(企业内网、移动环境等)、多平台(Windows、Linux、macOS等)、针对多源数据(终端、网络、文件等)、攻击链全生命周期的行为分析模型。兼具丰富的实战效用和可拓展的顶层模型设计,ATT&CK越发得到安全业界的重点关注。关于ATT&CK的介绍已有很多,在此,我们从多个关键词的角度来分析简单分析其特性。

1.    MITRE

MITRE是美国的一家非盈利组织,在美国国防部、国土安全部等政府组织的支持下,运营了多个技术研究中心,涉及网络安全等多方面国防高科技领域。MITRE发起或者运营了多个网络安全领域的标准如STIX/TAXII 1.0(STIX/TAXII 2.0目前已由OASIS运营),知识库如CAPEC,MAEC,CWE,CVE,ATT&CK等,针对网络安全领域的威胁建模、攻击分类、威胁情报等多方面研究构建了一个较为完整的安全生态。

2.    APT

APT(Advanced Persistent Threat,高级持续性威胁)逐渐成为安全行业谈论的热门话题,而ATT&CK正诞生于对已知APT组织的分析过程中:ATT&CK发起自MITRE的FMX(Fort Meade eXperiment)实验环境,旨在通过攻防对抗数据的采集和分析,提升对APT检测能力。ATT&CK归类的攻击技术大部分源于公开的APT组织活动,其主要的信息来源包括:

  • 威胁情报报告
  • 会议报告、研讨会、社交媒体、博客、开源代码库、恶意软件样本等

可以说,ATT&CK知识库的数据基础决定了其具有更贴近真实攻击者行为的实战效果,同时对APT攻击组织的分析和相关威胁情报的关联有得天独厚的优势。MITRE目前已发起的两轮基于ATT&CK的厂商能力评估中,也是以已知APT(APT3和APT29)作为攻击模拟的范本。

3.    威胁建模和知识库

威胁建模是网络安全威胁分析的一个重要环节,ATT&CK的概念抽象层次,是其区分与其他威胁模型、威胁知识库的关键。MITRE公司对威胁模型和威胁知识库的概念抽象层次进行了粗粒度的划分,如下所示。划分到不同层次的模型、概念没有优劣之分。区别在于不同的抽象层次决定了模型的表达能力和能够覆盖的概念的粒度。较高层抽象可谓高屋建瓴,从宏观的角度给威胁事件定性、给风险评级。较底层的概念更贴近细节,能够给威胁威胁事件更确切实际的解释、指导和评估。

图1 知识模型抽象分层[3]

ATT&CK被划分为中层次模型,相对的,Cyber Kill Chain和STRIDE威胁模型可以划分为高层次模型,可以用来表达和理解高层次的攻击者目标和防护系统风险。这些高层模型抽象层次高,自然难以表达具体的攻击行为和攻击行为关联的具体的数据、防护措施、配置资源等。例如,我们可将某一IOC或攻击行为对应到攻击链的“C&C”阶段,这提醒防御方需要采取必要的措施了,但采取怎样的措施,攻击链模型是难以表达的。而在ATT&CK中,该IOC可能对应到战术 “Command and Control”,同时采用的是“Multi-hop Proxy”的技术手段以达成战术目标,至此,我们可以进一步获取针对该技术手段的一些通用的防护措施。当然,中层次的ATT&CK所描述的仍然是TTP的抽象,具体到实例化的行为描述,仍然需要细粒度的划分。

漏洞库及漏洞利用模型划分为低层次概念。我们可以认为CAPEC、CWE属于这个抽象层次。CAPEC(Common Attack Pattern Enumeration and Classification)关注的是攻击者对网络空间脆弱性的利用,其核心概念是攻击模式Attack Pattern。从攻击机制的角度,CAPEC通过多个抽象层次对攻击进行分类和枚举。其目标是全面的归类针对已知的应用程序脆弱性的攻击行为。相对而言,ATT&CK的目标不是对不同攻击战术目标下技术的穷尽枚举,而是通过APT等攻击组织的可观测数据提取共性的战术意图和技术模式。战术意图是CAPEC枚举库难以表达的。从攻击检测的角度来看,只有明确攻击技术的战术意图,才能进一步推测攻击的关联上下文信息,以支持攻击威胁的评估和响应。此外,通过提供攻击组织(group)和软件(software)信息,ATT&CK还能够串联起威胁情报和事件检测数据,打通对威胁事件的理解链路。

4.    STIX 2.0

Structured Threat Information Expression (STIX)是MITRE发起的威胁情报交换语言和标准。Trusted Automated Exchange of Intelligence Information (TAXII) 则是用于威胁情报安全传输的应用层协议。STIX 2.0目前已转交OASIS的网络威胁情报技术委员会(CTI TC)维护。为了促进威胁情报的共享,STIX 2.0设计了12种域对象(SDOs,STIX Domain Objects)和两类关系对象(SROs,STIX Relationship Objects)。12种SDO如下所示。

图2 STIX 2.0对象[5]

为什么说STIX 2.0是ATT&CK的一个关键词呢?首先,ATT&CK本身就是建立在威胁情报的验证与抽象之上,在威胁检测应用中,能够自然打通外部威胁情报与内部的行为分析与检测结果,实现检测告警的上下文扩充。其次,将ATT&CK作为知识库构建知识图,需要通过本体库(实体种类、实体关系、实体属性、关系属性等)的设计,实现兼容性和拓展性。例如,与CAPEC、CWE、CVE等分类模型和枚举库的兼容。STIX 2.0提供了描述网络空间威胁情报的对象构成方案,也同样对安全知识库的本体设计有参考价值。当然,STIX 2.0的对象构成可能难以适应不同的应用场景中实体的描述粒度,不过以其当前的使用范围和接纳程度来看,定制化的知识图架构也最好能够兼容该方案。

图3 ATT&CK与STIX 2.0映射

上图展示了ATT&CK Tactic(战术)、Technique(技术)、Group(组织)及Software(软件)所覆盖的STIX 2.0对象。与STIX 2.0的对应能帮助我们更好的理解ATT&CK对象的内涵,例如Group对应的是Intrusion Set这个对象。

  • ATT&CK Technique -> STIX Attack-Pattern
  • ATT&CK Tactic -> STIX Attack-Pattern.Kill-Chain-Phase, STIX Tool.Kill-Chain-Phase, STIX Malware.Kill-Chain-Phase
  • ATT&CK Group -> STIX Intrusion-Set
  • ATT&CK Software -> STIX Malware (OR) STIX Tool
  • ATT&CK Mitigation -> STIX Course-of-Action

目前ATT&CK知识库已可以通过STIX 2.0进行完整的表达。具体的内容可以查阅MITRE官方Github的cti项目[6]。

二、 安全知识图构建思考

通过图模型组织安全大数据,能够充分发挥网络数据的“图基因”,提升多源、异构安全数据分析的效率,例如能够大幅缩短多跳关联数据检索的时间,能够根据新的关键“链接”构建新的知识链条等等。通过威胁模型和安全知识库,构建网络安全知识图,能够在网络环境图、行为图、情报图之外,提供可推理、可拓展、可关联的威胁上下文,促进数据细节的多跳关联,支持威胁事件的检测、响应、溯源等任务。

图4 行为图与ATT&CK知识图的关联

上图是一个图数据构建实例化的简单示例。ATT&CK作为知识库内容以及威胁建模的框架,能够在一些核心节点上,将告警数据、漏洞扫描数据及威胁情报数据进行碰撞融合。大规模的数据所能够组成的数据将是一个复杂的网络结构,能够提供数据的多跳检索分析的数据基础,能够通过图算法模型进行综合的评估。

当然,实际环境下所构建的数据结构及关联远比上图复杂。环境、行为、情报、知识图的关联需要对各个图结构进行系统性的设计。以下讨论基于ATT&CK的内容构建知识图的几个关键问题思考。

1.    本体库设计

图结构设计的一个关键任务,就是设计合理的本体库。本体包括了图中实体(节点)类型、实体的属性类型以及实体间的关系类型,即表示图结构的抽象概念结构“类”。本体库的构建既要讲科学也要讲艺术。讲科学是指需要遵循一定的规范标准,同时契合适当的威胁模型和描述模型;讲艺术则指的是概念的抽取很多时候是一个仁者见仁,智者见智的过程,并且要符合特定应用场景下的指定需求。

ATT&CK知识库提供了四个核心的实体(战术, 技术, 软件, 组织)及其之间的关系;CAPEC则主要覆盖TTP、防护手段、脆弱性等概念;如果直接参照STIX 2.0,则需要覆盖十余种对象。攻防模拟、威胁狩猎、合规检查、风险评估、检测响应、APT演练分析等等不同的业务场景,ATT&CK本身所提供的概念类型是不可能完全覆盖的。因此,ATT&CK在知识图构建中可作为威胁检测行为模型的知识源和建模方法,而不是一个完备的网络安全知识图。构建可用、可拓展的知识图,在顶层本体结构系统设计的基础上,一方面需要整合吸收所需的公开知识库,另一方面,需要通过知识图谱的手段主动进行知识拓展和延伸。

2.    知识库的关联

以MITRE生态下多个知识库为例,包括CAPEC、CWE、ATT&CK等,有密切的联系,同时有不同的应用场景。CAPEC针对基于应用脆弱性的攻击,通过攻击模式的抽象和分类,构造了攻击行为的可查询词典[7]。CAPEC和ATT&CK是两种不同的攻击建模方式, ATT&CK更贴近威胁检测的实战。在下图中,我们通过STIX 2.0架构对比一下两者所处的位置。可以看出两大知识库在概念的表达上有交叉,又各具特点。

图5 ATT&CK、CAPEC、CWE与STIX 2.0映射对比

下图展示了ATT&CK与CAPEC攻击模式分类的关联关系。其中ATT&CK以战术目标为列组织成矩阵结构,CAPEC通过攻击模式的抽象组织成树形结构。以Discovery战术下的System Owner/User Discovery技术为例,与该技术关联的CAPEC攻击模式为Owner Footprinting,同时该攻击模式关联的CWE为Information Exposure。

图6 ATT&CK与CAPEC的映射关系例子

威胁检测的实践不断证明基于行为的检测更能够适应动态环境下的高级威胁分析,不过,特征+行为的组合检测能力,是当前威胁检测效率提升的关键。从知识库构建的角度讲,CAPEC+CWE和ATT&CK都是不可或缺的。MITRE生态的持续完善能够充分降低各个知识库之间建立关联的难度,例如,CAPEC和ATT&CK目前都能够纳入STIX 2.0的表达体系;同时,两大知识库之间也已建立了知识的关联引用,当前ATT&CK Enterprise对应的244个Attack Pattern中与CAPEC关联的有44个。

图7 MITRE针对金融服务机构的威胁事件模型[8]

在威胁建模和知识库积累方面,无论是基于已有的知识库还是通过知识图谱算法抽取知识,构建知识图,一方面需要兼容已有的标准和架构,另一方面,也需要根据实际的应用场景选定合适的知识范围。MITRE于2018年提出过一个针对金融服务机构的增强威胁模型[8]。该模型虽然采用了较老版本的ATT&CK和CAPEC知识库,但也为我们展示了两个模型知识库联合使用枚举攻击能力的案例。在这里我们简单看一下该拓展模型的事件归类方式。从上述表格的最后一列可以看到,该模型以CAL (Cyber Attack Lifecycle) 模型(与Kill Chain模型一致)为基础,把ATT&CK和CAPEC统一纳入到事件模型中,将Exploit阶段及其前后阶段进行了细粒度的扩充。具体设计细节可以参考相关文章。

3.    威胁模型升级

不同威胁检测方案、设备提供商对威胁事件的理解层次和粒度不一样,输出的事件日志也难以打通。ATT&CK的出现,为促进统一的知识抽象带来曙光,为提供商自身能力的验证、不同提供商之间检测能力的横向对比、技术能力的共享提供了全新的视角。在此,我们重点关注的是使用ATT&CK作为知识图,增强数据关联、提升威胁行为检测能力的应用场景。

无论是基于静态特征特征还是基于机器学习的异常行为检测,各个威胁检测能力提供商往往有自成体系的威胁分析模型和事件命名体系。除非企业方案设计之初即采用了最新的威胁模型,本地化的检测能力要想和ATT&CK等知识库进行关联,需要合理的映射机制。很多企业已将Kill Chain攻击链模型作为威胁建模的基础,因此转向全新威胁模型体系的过程必然会给整个企业的威胁检测架构带来一定的冲击。威胁模型的升级对相对成熟的安全能力提供商更不友好,因为这些企业往往已具备大规模的IOC库、异常行为库,并且对应着各种自定义的命名规范。专家校验和归类自然是必不可少的过程,同时也需要自动化的关联和归类手段。在统一的威胁模型和命名体系下,多源行为图、环境图、情报图才能够有效关联威胁知识图,获取理解行为模式、分析推理的基础知识,打通各类数据间的检索壁垒。

4.    攻击模拟与知识拓展

ATT&CK矩阵的构建,不是简单的抽取APT情报和相关报告。各种行为的提取依赖的是在特定的场景下复杂、真实网络环境下的攻击模拟与对抗的不断验证、补充、完善。此外,ATT&CK知识库也远未成熟,针对不同场景、不同领域的威胁行为的知识需要整个社区不断的积累和贡献。因此,将ATT&CK知识库转化成企业自身的知识图并用于威胁分析,能够提升企业自身的检测能力,但更重要的是需要企业建立自己的攻击模拟环境,验证、精炼、修正知识结构,发现新的知识关联,以适应指定场景下的威胁分析任务。目前,支持ATT&CK的攻击模拟或渗透工具已有不少,如MITRE Caldera[9],Endgame RTA[10]等开源项目。

搭建攻击模拟环境的要点,基于ATT&CK验证流程、设计分析算法以及创建新的ATT&CK知识概念,相关经验和手段我们可以通过官方文档深入研究。

三、 总结

网络安全大数据的分析给威胁的检测与响应带来机遇,也同样带来挑战。我们需要更加有效的数据收集,合理的数据组织,准确的数据分析以及丰富的可视化能力,支撑分析任务中的模拟、关联、知识沉淀等过程,进而逐步自动化安全防御能力。随着ATT&CK行为知识的积累和相关技术的日益完善,不止在攻击模拟、红蓝对抗领域,更多的检测响应、用户实体行为分析、威胁狩猎、防病毒等威胁分析产品和方案逐渐向战术-技术矩阵靠拢、对齐。以ATT&CK进行威胁建模并建立行为分析的知识库,并以图数据形式组织,能够打通数据间壁垒,加速威胁情报、原始日志、检测数据、扫描数据、威胁知识库等多源数据的融合分析。ATT&CK不仅仅是一个模型,一个字典矩阵,一个标尺,ATT&CK所促成的生态,将促进生态下组织内外部的数据交互和共享。本文从ATT&CK的相关概念出发,介绍了基于ATT&CK构建安全知识图的思考,不成熟之处,烦请专家指正。

相关文章:

以ATTCK为例构建网络安全知识图

ATT&CK(Adversarial Tactics, Techniques, and Common Knowledge )是一个攻击行为知识库和模型,主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。本文简单介绍ATT&CK相关的背景概念,并探讨通过ATT&a…...

Qt初识_对象树

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Qt初识_对象树 收录于专栏【Qt开发】 本专栏旨在分享学习Qt的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 什么是对象树 为什么要引…...

规范秩相关信息搜集Day2

系列博客目录 文章目录 系列博客目录1.A Survey on Tensor Techniques and Applications in Machine Learning2.有没有研究低秩矩阵有利于分类的计算机方面的论文呢3.Image classification based on low-rank matrix recovery and Naive Bayes collaborative representatio 基于…...

【unity小技巧】分享vscode如何进行unity开发,且如何开启unity断点调试模式,并进行unity断点调试(2024年最新的方法,实测有效)

文章目录 前言一、前置条件1、已安装Visual Studio Code,并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号],2、在Visual Studio Code扩展中搜索Unity,并安装3、同时注意这个插件下面的描述,需要根…...

交换瓶子(图论 贪心)

1224. 交换瓶子 - AcWing题库 把每一个瓶子看成一个点,从每个瓶子向他应该在的那个位置的瓶子连一条边 通过这个方式,我们就可以连出n条边 观察可以发现这些图有特点: n个点 连成n条边 因为每个点会指向它应该在的位置的那个点&#xff…...

汽车升级到底应不应该设置“可取消“功能

最近,汽车OTA(Over-the-Air)升级频频成为车主讨论的热点。有些车主反映,一些升级增加了实用功能,而另一些却让体验变得复杂甚至带来不便。于是,大家不禁发问:汽车升级功能究竟应不应该允许“可取…...

Mac电脑钓鱼到拿下核心权限

目录 一. 前言 二. PKG后门制作阶段 2.1 环境准备 2.2 制作过程 2.3 成功上线 三 . 浏览器密码抓取 四. 权限维持 1. 手动权限维持 2. MSF自动化维持 五. 参考文章 一. 前言 攻防对抗强度和难度日益演进,传统的渗透测试思路成本逐渐提高,钓鱼已经成为当下攻击者最常…...

Docker多架构镜像构建踩坑记

背景 公司为了做信创项目的亮点,需要将现有的一套在X86上运行的应用系统迁移到ARM服务器上运行,整个项目通过后端Java,前端VUEJS开发通过CICD做成Docker镜像在K8S里面运行。但是当前的CICD产品不支持ARM的镜像构建,于是只能手工构…...

docker 架构详解

Docker架构是基于客户端-服务器(C/S)模式的,包含多个关键组件,以确保容器化应用的高效构建、管理和运行。以下是对Docker架构的详细解析: Docker 架构概述 Docker 架构采用客户端-服务器(C/S)…...

05-标准库开发-STM32-IIC协议

七、STM32中IIC协议 概述 Inter-Integrated Circuit (IIC),也常称为I2C(I squared C),是一种同步、串行、半双工通信总线协议。它主要用于连接低速外围设备到处理器或微控制器上,如MPU6050姿态传感器、OLED显示屏、存…...

vue 封装全局过滤器

1.找到utils下创建fifilter.js 一些常用的过滤方法 export const filters {//url解码urlCode: value > {if (!value) return let v decodeURIComponent(value)let bigIndex v.lastIndexOf(/)let endIndex v.lastIndexOf(.)let url v.substring(bigIndex 1, endIndex)…...

【PlantUML系列】流程图(四)

目录 目录 一、基础用法 1.1 开始和结束 1.2 操作步骤 1.3 条件判断 1.4 并行处理 1.5 循环 1.6 分区 1.7 泳道 一、基础用法 1.1 开始和结束 开始一般使用start关键字;结束一般使用stop/end关键字。基础用法包括: start ... stopstart ...…...

MATLAB中的合并分类数组

目录 创建分类数组 串联分类数组 创建具有不同类别的分类数组 串联具有不同类别的数组 分类数组的并集 此示例演示了如何合并两个分类数组。 创建分类数组 创建分类数组 A,其中包含教室 A 中的 25 个学生的首选午餐饮料。 rng(default) A randi(3,[25,1]); …...

流编辑器sed(stream editor)

一.sed简介 sed是一种流编辑器,处理时,把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed命令处 理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复&…...

R语言的数据结构--矩阵

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言医学数据分析实践-R语言的数据结构-CSDN博客 矩阵是一个二维数组,矩阵中的元素都具有相…...

使用 Python 爬取某网站简历模板(bs4/lxml+协程)

使用 Python 爬取站长素材简历模板 简介 在本教程中,我们将学习如何使用 Python 来爬取站长素材网站上的简历模板。我们将使用requests和BeautifulSoup库来发送 HTTP 请求和解析 HTML 页面。本教程将分为两个部分:第一部分是使用BeautifulSoup的方法&am…...

19 go语言(golang) - 通过反射手动实现json序列化

一、json 在 Go 语言中,JSON 序列化和反序列化通常通过标准库 encoding/json 来实现。这个包提供了简单易用的接口来将 Go 数据结构转换为 JSON 格式字符串(序列化),以及从 JSON 字符串解析出 Go 数据结构(反序列化&a…...

Scala:隐式转换

隐式转换的定义 //隐式转换:编译器自动滴,偷偷滴,把数据A->B object test04 {def main(args: Array[String]): Unit {val i:Int1//把Int类型,转化成Double类型//Int -> Double//隐式转换失败val b:Double1//隐式转换失败v…...

UVM之寄存器模型生成

1.采用python脚本生成寄存器模型 首先用excel表格做好寄存器描述 然后编写脚本生成.ralf文件 (1)首先通过openpyxl读取EXCEL表格, workbook openpyxl.load_workbook(reg.xlsx) # 返回一个workbook数据类型的值 (2&#xff…...

PL/SQL批量生成数据

在PL/SQL中生成大量模拟数据,特别是当你需要生成大量记录(如1亿条)时,有几种常见的方式可以提高生成数据的效率和性能。以下是一些常用的方法和最佳实践: 1. 使用PL/SQL块批量生成数据 PL/SQL块可以通过循环生成大量…...

Xcode模拟器运行报错:The request was denied by service delegate

Xcode模拟器运行报错:The request was denied by service delegate 造成的原因: (1)新的苹果M系列芯片的Mac电脑 (2)此电脑首次安装启动Xcode的应用程序 (3)此电脑未安装Rosetta 2 解决方法: …...

2024小迪安全基础入门第十课

目录 一、传输格式&数据-类型&编码&算法 1. 传输格式: 2. 传输数据: 3. 影响与渗透测试: #传输格式 #传输数据 二、密码存储&混淆-不可逆&非对称性 1. 密码存储: 2. 密码存储的影响: 3.…...

Redisson分布式限流器

Redisson分布式限流器 一、使用1.1、方法1.2、示例 二、原理2.1、设置限流器2.2、获取令牌 三、总结 最近有需求在做分布式限流,调研的限流框架大概有: 1、spring cloud gateway集成redis限流,但属于网关层限流 2、阿里Sentinel,功能强大、带监控平台 …...

xvisor调试记录

Xvisor是一种开源hypervisor,旨在提供完整、轻量、移植且灵活的虚拟化解决方案,属于type-1类型的虚拟机,可以直接在裸机上启动。 启动xvisor步骤: 1、搭建riscv编译环境 首先从github上下载riscv-gnu-toolchain很费劲,建议直接从国内的源下载 git clone https://gitee…...

Android问题记录 - Inconsistent JVM-target compatibility detected for tasks

文章目录 前言开发环境问题描述问题分析解决方案补充内容最后 前言 前段时间升级Android Studio后修复了一堆问题,详情请看:Android问题记录 - 适配Android Studio Ladybug/Java 21/AGP 8.0(持续更新)。我以为问题已经全部解决了…...

【Python系列】使用 `psycopg2` 连接 PostgreSQL 数据库

???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...

家庭路由器跑PCND的优点

在当今数字化的时代,PCDN(Peer-to-Peer Content Delivery Network)技术逐渐走入人们的视野,有人考虑在家庭路由器上跑PCDN,下面是优点: 1.资源利用最大化 家庭网络在很多时候存在闲置的带宽和计算资源。通…...

ASP.NET Core API + MySql

环境 数据库: mysql8.0 后端: vs2022 ASP.NET Core API .net 8 前端: Hbuilderx bootstrap 5.3.0 jquery v3.7.1 bootstrap-table 1.23.5 创建项目 添加资源包 AutoMapper Microsoft.EntityFrameworkCore.Tools 8.0.0 Pomelo.EntityFramew…...

torch.optim.lr_scheduler.ReduceLROnPlateau

torch.optim.lr_scheduler.ReduceLROnPlateau 是 PyTorch 中的一种学习率调度器,主要用于在模型训练过程中根据某些指标(如验证损失)动态调整学习率。它是一种基于性能指标动态调整学习率的策略,而不是预定义的固定时间调整。 主要…...

Dubbo

官方文档: Java SDK 手册 | Apache Dubbo 一 RPC及Dubbo 1 什么是RPC dubbo是⼀款⾼性能的rpc框架。什么是rpc呢? rpc是⼀种协议:是⼀种远程过程调⽤(remote procudure call)协议 rpc协议是在应⽤层之上的协议&…...

算法1(蓝桥杯18)-删除链表的倒数第 N 个节点

问题: 给你一个链表,删除链表的倒数第 n 个节点,并且返回链表的头节点。 输入:head 1 -> 2 -> 3 -> 4 -> 5 -> null, n 2 输出:1 -> 2 -> 3 -> 5 -> null输入:head 1 ->…...

SEC_ASA 第一天作业

拓扑: 实验需求: 注意:在开始作业之前必须先读“前言”,以免踩坑!!!(☞敢点我试试) 按照拓扑图配置VLAN连接。 注意:ASA防火墙的 Gi0/1口需要起子接口&#x…...

《C语言程序设计现代方法》note-8 指针和数组的关系

文章目录 助记提要12章 指针和数组12.1 指针的算术运算12.2 指针用于数组处理结合使用*和运算符 12.3 数组名作为指针数组名可以用作指针指针也可以当做数组名数组型实参 12.4 指针和多维数组处理每个元素处理行处理列多维数组名做指针 12.5 指针和变长数组 助记提要 指针支持…...

安科瑞电能质量治理产品在分布式光伏电站的应用-安科瑞黄安南

1.概述 随着全球对可再生能源需求的增加,分布式光伏电站的建设和发展迅速。然而,分布式光伏电站的运行过程中面临着一系列问题,比如导致企业关口计量点功率因数过低、谐波污染等。这些问题不仅影响光伏电站自身的运行效率,还会对…...

JavaScript 的原生数组方法和 Vue 的响应式系统之间的差异

发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 JavaScript 的原生数组方法和 Vue 的响应式系统之间的差异主要体现在 Vue 如何追踪数组的变化,以及 Vue 如何处理数组…...

项目组件框架介绍[bRPC]

文章目录 前言bRPC安装bRPC的简单使用protobuf简单使用Echo服务远程调用Echo服务 与etcd关联 前言 bRPC是百度开源的一款工业级RPC框架,功能强大, 常用于搜索、存储、机器学习、广告、推荐等高性能系统。 bRPC安装 使用源码安装即可, 在安装前要确认依赖 sudo apt…...

基于MobileNetV3架构动物声音分类识别与应用系统实现

1.摘要 本文主要实现了一个基于MobileNetV3架构的深度学习模型用于动物声音分类识别任务。该MobileNetV3是一种轻量级的卷积神经网络,旨在实现高效分类性能,本章在猫、狗、海豚等三个动物声音(.wav数据集)上进行了训练和测试,即在…...

ragflow连ollama时出现的Bug

ragflow和ollama连接后,已经添加了两个模型但是ragflow仍然一直warn:Please add both embedding model and LLM in Settings > Model providers firstly.这里可能是我一开始拉取的镜像容器太小,容不下当前添加的模型,导…...

[大数据]Hudi编译集成

1. 编译环境准备 相关组件版本如下: Hadoop3.3.1Hive3.1.3Flink1.13.6,scala-2.12Spark3.3.1,scala-2.12 1)安装Maven (1)上传apache-maven-3.6.1-bin.tar.gz到/opt/software目录,并解压更名…...

rk3588-ubuntu22.04系统网关实现路由器功能:

rk3588-ubuntu22.04系统网关实现路由器功能: 场景需求描述: 需求背景: 场景一:通过网线eth0/(路由器wlan0)访问外网: 如果网关 和 设备所处的环境可以通过网线联网或者路由器联网,那么不需要将网关配置成…...

Python部署教程-Python项目怎样在Pycharm中运行

大家好,我是程序员徐师兄,今天为大家带来的是Python部署教程-Python项目怎样在Pycharm中运行。Python安装部署教程,包括软件的下载,软件的安装。该系统采用 Python语言开发,flask、Django 框架,MySql 作为数…...

代码随想录算法训练营第51期第14天 | 226. 翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

226. 翻转二叉树 226. 翻转二叉树https://leetcode.cn/problems/invert-binary-tree/1.昨天忘了声明,如果都用C的话,我大概率写不完,所以思路方面,我可能考虑用pyhon先写,后续会用文心一言转换成C 2.这里可以直接用层…...

C/C++常见符号与运算符

C/C常见符号与运算符对照表 符号用法与意义与Java类比:在条件运算符中 (cond ? x : y) 表示条件为假的分支;在 switch-case 中如 case 1:表示标签结束点;在自定义标签如 label: 中用于 goto 跳转Java中? :三元运算相同;switch-case中也有:…...

maven报错“找不到符号“

问题 springboot项目 maven编译打包过程,报错"找不到符号" 解决 很多网上方法都试过,都没用 换jdk,把17->21...

开源数据同步中间件(Dbsyncer)简单玩一下 mysql to mysql 的增量,全量配置

一、什么是Dbsyncer 1、介绍 Dbsyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景,支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警…...

【Kubernetes理论篇】容器集群管理系统Kubernetes(K8S)

Kubernetes集群部署基本管理实战 这么好的机会,还在等什么! 01、Kubernetes 概述 K8S是什么 K8S 的全称为 Kubernetes (K12345678S),PS:“嘛,写全称也太累了吧,写”。不如整个缩写 K8s 作为缩写的结果…...

鸿蒙ArkTS语言基础语法详解

文章目录 鸿蒙ArkTS语言基础语法详解一、引言二、ArkTS语言概述1. ArkTS语言特点2. TypeScript基础语法2.1 类型注解2.2 接口2.3 泛型2.4 类的继承2.5 类的访问修饰符 三、ArkTS的基本组成3.1 装饰器3.2 UI描述3.3 自定义组件3.4 系统组件3.5 属性方法和事件方法 四、自定义组件…...

两条链表相同位数相加

优质博文IT-BLOG-CN 一、题目 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这…...

C语言单元总结

黑色加粗表示刷题刷到这样的题 红色加粗表示可能重要 单元一 程序设计宏观认识 C语言程序框架 C语言程序最基本的程序框架由两部分构成,分别是 1) 编译预处理 2) 函数组 C语言程序构成 C程序最大的特点就是所有的程序都是用函数来装配的,函数是构成…...

【Golang】Go语言编程思想(六):Channel,第二节,使用Channel等待Goroutine结束

使用 Channel 等待任务结束 首先回顾上一节 channel 这一概念介绍时所写的代码: package mainimport ("fmt""time" )func worker(id int, c chan int) {for n : range c {fmt.Printf("Worker %d received %c\n",id, n)} }func crea…...