ATTCK v12版本战术介绍——提权(一)

news2024/11/29 2:47:00

一、引言

在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化战术理论知识及实战研究,通过实战场景验证行之有效的检测规则、防御措施,本期我们为大家介绍ATT&CK 14项战术中提权战术(一),包括提权前6项子技术,后续会介绍提权其他子技术,敬请关注。

二、ATT&CK v12简介

MITRE ATT&CK 是一个全球可访问的基于现实世界观察的对手战术和技术知识库。ATT&CK知识库被用作在私营部门、政府以及网络安全产品和服务社区中开发特定威胁模型和方法的基础。

2022年10月25日发布的ATT&CK v12版本更新了适用于企业、移动设备和 ICS(工业控制系统)框架的技术、组和软件。v12最大的变化是在ATT&CK中增加了ICS的检测,描述了检测各种ICS技术的方法,每种方法都与特定的数据源和数据组件相关联,检测功能既利用了传统的主机和基于网络的采集,也利用了ICS特定的来源,如资产和运营数据库等。

ATT&CK v12 for Enterprise包含14个战术、193个技术、401个子技术、135个组织、718个软件。

ATT&CK战术全景图(红框为提权战术)

三、提权战术

3.1 概述

权限升级是攻击者用来在系统或网络上获得更高级权限的技术。常见的方法是利用系统弱点、错误配置和漏洞。提升访问的示例包括:system/root账号、本地管理员、具有类似管理员访问权限的用户帐户、访问特定系统或功能的用户帐户。

提权战术包括13种技术,本期介绍前6种技术,逐一介绍如下:

3.2 利用提升控制权限机制(T1548)

攻击者可能会绕过控制提升权限的机制以获得更高级别的权限。攻击者可用多种方法来利用内置控制机制,以升级系统上的权限。

利用提升控制权限机制包含4项子技术,介绍如下:

3.2.1 setuid和setgid(T1548.001)

如果应用程序设置了setuid或setgid位,则攻击者可能会利用配置,以便运行恶意代码。任何用户都可以指定要为自己的应用程序设置的setuid或setgid标志(即文件和目录权限修改),攻击者可以在他们自己的恶意软件上使用此机制,以确保他们将来能够在提升的上下文中执行。或者可以选择查找和定位已启用setuid或setgid位的易受攻击的二进制文件,二进制文件可能会被利用。

3.2.2 绕过用户帐户控制(T1548.002)

Windows用户帐户控制(UAC)允许程序提升其权限,以便在管理员级别权限下执行任务,通过提示用户进行确认。攻击者可能会绕过UAC机制来提升系统上的进程权限。

3.2.3 Sudo和Sudo缓存(T1548.003)

攻击者可以执行sudo缓存或使用sudoers文件提升权限。Sudo命令允许系统管理员委派权限,使某些用户能够以root或其他用户身份运行某些命令,同时提供命令及其参数的审计跟踪。/etc/sudoers描述了哪些用户可以从哪些终端运行哪些命令,哪些命令用户可以作为其他用户或组运行。攻击者利用这些机制的不良配置来升级特权,而不需要用户的密码。

3.2.4 带提示的提权执行(T1548.004)

攻击者可以利用AuthorizationExecuteWithPrivileges API通过提示用户输入凭据来升级权限。此API的目的是为应用程序开发人员提供一种使用root权限执行操作的简单方法,例如用于应用程序安装或更新。API不会验证请求root权限的程序是否合法。

3.2.5 缓解措施

ID

缓解措施

描述

M1047

审计

检查windows系统上常见的uac绕过弱点

M1038

执行预防

系统设置可以阻止未从合法渠道下载的应用程序运行,不允许运行未签名的应用程序。

M1028

操作系统配置

具有已知漏洞的应用程序不应设置setuid或setgid位,设置setuid或setgid位的程序的数量应该在整个系统中最小化。

M1026

特权账户管理

从系统上的本地管理员组中删除用户。要求用户在每次执行sudo时输入其密码。

M1022

限制文件和目录权限

应该严格编辑sudoers文件,始终需要密码。

M1052

用户帐户控制

使用UAC的最高强制级别,减少DLL搜索顺序劫持等技术绕过机会。

3.2.6 检测

ID

数据源

数据组件

检测

DS0017

命令

命令执行

监控已执行的命令和参数。

DS0022

文件

文件元数据

监控文件系统中设置了setuid或setgid位的文件。

文件修改

sudo能够根据/etc/sudoers文件中的LOG_INPUT和LOG_OUTPUT指令记录所有输入和输出。监控/usr/libexec/security_auth执行,这可能表明正在执行AuthorizationExecuteWithPrivileges。

DS0009

进程

OS API执行

监视执行的OS API回调,可能存在进程注入行为。

进程创建

监控新创建的进程。

进程元数据

监控正在运行的进程的上下文数据,包括环境变量、用户等信息。

DS0024

Windows注册表

Windows注册表修改

监控注册表设置是否存在未经授权的更改。

3.3 操纵访问令牌(T1134)

攻击者可以修改访问令牌以在不同的用户或系统下执行操作并绕过访问控制。Windows使用访问令牌来确定正在运行的进程的所有权。

攻击者可以使用内置的Windows API函数从现有进程复制访问令牌,这被称为令牌窃取。

任何用户都可以使用runas命令和Windows API函数来创建模拟令牌;它不需要访问管理员帐户。还有其他机制,如Activedirectory字段,可用于修改访问令牌。

操纵访问令牌技术包含5项子技术,介绍如下:

3.3.1 令牌模拟/盗窃(T1134.001)

攻击者可能会复制另一个用户的令牌,然后模拟另一个用户的令牌,以升级权限并绕过访问控制。

3.3.2 使用令牌创建进程(T1134.002)

攻击者可能会使用不同的令牌创建一个新进程,以升级权限并绕过访问控制。创建具有不同令牌的进程可能需要目标用户的凭据、模拟该用户的特定特权或对要使用的令牌的访问权限。

3.3.3 制作和模拟令牌(T1134.003)

攻击者可以制作和模拟令牌以升级特权并绕过访问控制。如果攻击者拥有用户名和密码,但用户未登录到系统,则攻击者可以为用户创建登录会话。

3.3.4 父ID欺骗(T1134.004)

攻击者可能会欺骗新进程的父进程标识符(PPID),以提升特权。新进程通常直接从其父进程或调用进程生成。攻击者可能会利用这些机制来逃避防御,例如,攻击者可能会产生一个新进程,并将父进程分配为以系统运行的进程,导致通过继承的访问令牌提权。

3.3.5 SID-History注入(T1134.005)

攻击者可以使用SID-History注入来升级权限并绕过访问控制。Windows安全标识符(SID)是标识用户或组帐户的唯一值。 Windows security在安全描述符和访问令牌中都使用sid。一个帐户可以在Sid-History Active Directory属性中保存额外的Sid,允许在域之间进行可操作的帐户迁移。这种操作可能导致通过横向移动技术(如远程服务、SMB/Windows管理共享或Windows远程管理)提升对本地资源的访问权限或访问其他无法访问的域。

3.3.6 缓解措施

ID

缓解措施

描述

M1026

特权账户管理

限制权限,以便用户和用户组无法创建令牌。仅为本地系统帐户定义此设置。

M1018

用户账户管理

将用户和帐户限制为所需的最低权限。

3.3.7 检测

ID

数据源

数据组件

检测

DS0026

Active Directory

Active Directory对象修改

监控对AD设置所做的更改

DS0017

命令

命令执行

通过审核命令行活动监控已执行命令和参数。

DS0009

进程

OS API执行

通过分析用户网络活动、检查正在运行的进程以及与其他端点和网络行为的相关性,监控API调用。

进程创建

监控新创建的进程。

进程元数据

查询系统以获取进程和线程令牌信息,并查找不一致性,例如用户拥有模拟本地系统帐户的进程。

DS0002

用户账户

用户账户元数据

监控有关帐户的上下文数据,其中可能包括用户名、用户ID、环境数据等。

3.4 利用自动启动执行登录(T1547)

攻击者可以将系统设置配置为在系统登录期间自动执行程序,以保持持久性或提权。利用自动启动执行引导或登录技术包含14项子技术,介绍如下:

3.4.1 注册表运行键/启动文件夹(T1547.001)

攻击者可以通过将程序添加到启动文件夹或使用注册表运行项引用它来实现持久性。

3.4.2 认证包(T1547.002)

当系统启动时,攻击者可能会利用身份验证包来执行Dll。Windows身份验证包Dll由LSA进程在系统启动时加载,为操作系统的多个登录进程和多个安全协议提供支持。

3.4.3 时间提供程序(T1547.003)

当系统启动时,攻击者可能会利用时间提供程序来执行Dll。Windows时间服务(W32Time)启用跨域和域内的时间同步,负责从硬件或网络资源中检索时间戳,并将这些值输出到其他网络客户端。攻击者可以通过将恶意DLL注册并启用为时间提供程序。

3.4.4 Winlogon帮助程序DLL(T1547.004)

当用户登录时,攻击者可能会利用Winlogon的功能来执行Dll或可执行文件。对注册表项的恶意修改可能会导致Winlogon加载和执行恶意Dll或可执行文件。如下子项可能容易被利用:

  • Winlogon\Notify-指向处理Winlogon事件的通知包Dll

  • Winlogon\Userinit-指向用户登录时执行的用户初始化程序

  • Winlogon\Shell-指向用户登录时执行的系统shell

攻击者可能会利用这些特性来重复执行恶意代码并建立持久性。

3.4.5 安全支持提供程序(T1547.005)

当系统启动时,攻击者可能会利用安全支持提供程序(SSPs)来执行Dll。Windows SSP Dll在系统启动时加载到LSA进程中。一旦加载到LSA中,SSP Dll就可以访问存储在Windows中的加密和明文密码。

3.4.6 内核模块和扩展(T1547.006)

攻击者可能会修改内核以在系统引导时自动执行程序。可加载内核模块(Loadable Kernel Modules,LKMs)是可以根据需要加载和卸载到内核中的代码片段,它们扩展了内核的功能,而不需要重新启动系统。

恶意使用时,LKMs可以是一种以最高操作系统特权(环0)运行的内核模式Rootkit。基于LKM的rootkit的常见功能包括:隐藏自身,选择性隐藏文件、进程和网络活动,以及日志篡改,提供经过身份验证的后门,并允许对非特权用户进行root访问。

3.4.7 重新开启申请(T1547.007)

攻击者可以修改plist文件,以便在用户登录时自动运行应用程序。攻击者可以通过向com添加恶意应用程序路径来建立持久性。

3.4.8 LSASS驱动程序(T1547.008)

攻击者可以修改或添加LSASS驱动程序以获得对受损系统的持久性。LSA是Windows负责本地安全策略和用户身份验证的主要组件。LSA包括与各种其他安全功能相关联的多个动态链接库(Dll)。通过替换或添加非法驱动程序,攻击者可以使用LSA操作来持续执行恶意代码。

3.4.9 快捷键修改(T1547.009)

攻击者可以创建或修改可在用户登录期间执行程序的快捷方式。攻击者利用启动文件夹中的快捷方式来执行他们的工具并实现持久性,也可以编辑目标路径或完全替换现有的快捷方式,以便执行恶意软件。

3.4.10 端口监视器(T1547.010)

攻击者可以使用端口监视器在系统引导期间运行恶意DLL,以便建立持久性或特权升级。可以通过AddMonitor API调用设置端口监视器,以设置要在启动时加载的DLL。

3.4.11 打印处理器(T1547.012)

攻击者可能会利用打印处理器在系统引导期间运行恶意Dll以实现持久性或特权升级。攻击者通过添加在启动时加载恶意Dll的打印处理器来滥用打印后台处理程序服务。

3.4.12 XDG自启动(T1547.013)

攻击者可以修改XDG自启动项目以在系统引导期间执行程序或命令,通过在桌面环境启动期间执行恶意命令和有效负载来保持持久性。

3.4.13 ActiveSetup(T1547.014)

攻击者可通过将注册表项添加到本地计算机的ActiveSetup来实现持久性。ActiveSetup程序是一种Windows机制,用于在用户登录时执行程序。存储在注册表项中的值将在用户登录到计算机后执行。

3.4.14 登录项目(T1547.015)

攻击者可以添加登录项以在用户登录时执行,以获得持久性或升级权限。登录项是在用户登录时自动启动的应用程序、文档、文件夹或服务器连接。登录项目可以通过共享文件列表或服务管理框架添加。

3.4.15 检测

ID

数据源

数据组件

检测

DS0017

命令

命令执行

监控已执行的命令和参数

DS0027

驱动

驱动负载

监控异常的内核驱动程序安装活动

DS0022

文件

文件创建

监控新建立的文件

文件修改

监控文件所做的更改

DS0008

内核

内核模块加载

监控异常的内核驱动程序安装活动

DS0011

模块

模块负载

通过进程监控DLL加载,专门查找无法识别或通常未加载到进程中的Dll,查找可能是由于加载恶意DLL的进程导致的异常进程行为。

DS0009

进程

OS API执行

监控API调用。

进程创建

监控新创建的进程。

DS0024

Windows注册表

Windows注册表项创建

监控新创建的注册表项。

Windows注册表项修改

监控修改的注册表项。

3.5 利用初始化脚本引导或登录(T1037)

攻击者可以使用在引导或登录初始化时自动执行的脚本来建立持久性。初始化脚本可用于执行管理功能,包括执行其他程序或将信息发送到内部日志记录服务器。

利用初始化脚本引导或登录技术包含5项子技术,介绍如下:

3.5.1 登录脚本(Windows)(T1037.001)

攻击者可以使用在登录初始化时自动执行的Windows登录脚本来建立持久性。Windows允许在特定用户或用户组登录系统时运行登录脚本。根据登录脚本的访问配置,可能需要本地凭据或管理员帐户。

3.5.2 登录钩子(T1037.002)

攻击者可以使用登录钩子来建立在用户登录时执行的持久性。登录钩子是一个plist文件,它指向一个特定的脚本,在用户登录时以root权限执行。

攻击者可以在com中添加或插入恶意脚本的路径,恶意脚本在下次用户登录时执行。如果登录钩子已经存在,攻击者可以向现有的登录钩子添加其他命令,一个系统上一次只能有一个登录和注销挂钩。

3.5.3 网络登录脚本(T1037.003)

攻击者可以使用在登录初始化时自动执行的网络登录脚本来建立持久性。可以使用Active Directory或组策略对象分配网络登录脚本。这些登录脚本以分配给它们的用户的特权运行。根据网络内的系统,初始化其中一个脚本可能适用于多个系统或所有系统。

3.5.4 RC脚本(T1037.004)

攻击者可以通过修改RC脚本来建立持久性。这些文件允许系统管理员在启动时针对不同的运行级别映射和启动自定义服务。攻击者可以通过向rc添加恶意二进制路径或shell命令来建立持久性,重新启动后,系统以root身份执行脚本的内容,从而产生持久性。

3.5.5 启动项(T1037.005)

攻击者可以使用在引导初始化时自动执行的启动项来建立持久性。启动项在启动过程的最后阶段执行,并包含shell脚本或其他可执行文件以及系统用于确定所有启动项的执行顺序的配置信息。

3.5.6 缓解措施

ID

缓解措施

描述

M1022

限制文件和目录权限

将登录脚本的写入访问权限限制为特定管理员。

M1024

限制注册表权限

确保为注册表配置设置适当的权限,防止用户修改登录脚本的密钥。

3.5.7 检测

ID

数据源

数据组件

检测

DS0026

Active Directory

Active Directory对象修改

监控Active Directory中所做的更改。

DS0017

命令

命令执行

监控执行的命令和参数。

DS0022

文件

文件创建

监控新创建的文件。

文件修改

监控对文件所做的更改。

DS0009

进程

进程创建

监控新执行的进程。

DS0024

Windows注册表

Windows注册表项创建

监控新创建的windows注册表项。

3.6 创建或修改系统进程(T1543)

攻击者可以创建或修改系统级进程,以重复执行恶意攻击。当操作系统启动时,它们可以启动执行后台系统功能的进程。

攻击者可以安装新的或修改现有的服务、守护进程或代理程序,配置为在启动时或定时执行,以建立持久性。服务、守护进程或代理可以使用管理员权限创建,在系统权限下执行。攻击者可以利用此功能创建或修改系统进程,以便升级权限。

创建或修改系统进程技术包含4项子技术,介绍如下:

3.6.1 启动代理(T1543.001)

攻击者可以创建或修改启动代理以重复执行恶意攻击。当用户登录时,将启动每个用户launchd进程,通常安装启动代理来执行程序更新、在登录时启动用户指定的程序或执行其他开发人员任务,启动代理也可以使用Launchctl命令执行。启动代理名称可以通过使用相关操作系统或合法软件中的名称来伪装。启动代理使用用户级别权限创建,并使用用户级别权限执行。

3.6.2 Systemd服务(T1543.002)

攻击者可以创建或修改systemd服务以重复执行恶意攻击。Systemd服务管理器通常用于管理后台守护进程和其他系统资源。

3.6.3 Windows服务(T1543.003)

攻击者可以创建或修改Windows服务以重复执行恶意攻击。当Windows启动时,它会启动服务以执行后台系统功能。Windows服务配置信息,包括服务可执行或恢复程序的文件路径,存储在Windows注册表中。攻击者可以安装新服务或修改现有服务以在启动时执行,也可能使用服务来安装和执行恶意驱动程序。

3.6.4 启动守护进程(T1543.004)

攻击者可以创建或修改启动守护进程以执行恶意攻击。启动守护进程需要提升的权限才能安装,在登录之前为系统上的每个用户执行,并在后台运行,而不需要用户交互。启动守护进程通常用于提供对共享资源的访问、软件更新或执行自动化任务。守护进程名称可以通过使用来自相关操作系统或合法软件的名称来伪装。

3.6.5 缓解措施

ID

缓解措施

描述

M1047

审计

使用审计工具审计特权及服务。

M1040

端点上的行为防御

启用攻击面减少(ASR)规则及易受攻击的驱动程序阻止列表。

M1045

代码签名

强制注册和执行仅合法签名的服务驱动程序。

M1033

限制软件安装

将软件安装限制为最小授权。

M1028

操作系统配置

确保启用驱动程序强制签名机制。

M1022

限制文件和目录权限

将对系统级进程文件的读写访问限制为合法的特权用户。

M1018

用户账户管理

限制用户帐户和组的权限,只有经过授权的管理员才能对进程和服务配置修改。

3.6.6 检测

ID

数据源

数据组件

检测

DS0017

命令

命令执行

检测异常进程调用行为,例如命令行调用能够修改服务的工具。

DS0027

驱动

驱动负载

监控不属于已知软件更新的新服务驱动程序安装和加载(例如:Sysmon事件ID6)。

DS0022

文件

文件创建

监控新创建的文件。

文件修改

监控对文件的更改。

DS0009

进程

OS API执行

监控可能创建或修改系统级进程的API调用。

进程创建

监控新创建的进程。

DS0019

服务

服务创建

监控新创建的服务。

服务修改

监控异常的服务修改。

DS0024

Windows注册表

Windows注册表项创建

监控新创建的windows注册表项。

Windows注册表项修改

监控对windows注册表项的更改。

3.7 利用组策略修改(T1484)

攻击者可以修改域的配置,以升级特权。对域设置的修改可能包括更改域组策略对象或更改域的信任设置。攻击者可以临时修改域策略,执行恶意操作,然后恢复更改以清除痕迹。

利用组策略修改技术包含2项子技术,介绍如下:

3.7.1 组策略修改(T1484.001)

攻击者可能会修改组策略对象(Gpo)以修改访问控制实现特权提升。组策略允许集中管理Active Directory(AD)中的用户和计算机设置。与AD中的其他对象一样,Gpo具有与其关联的访问控制。默认情况下,域中的所有用户帐户都有权读取Gpo,可以将GPO访问控制权限委派给域中的特定用户或组。恶意GPO修改可用于实施许多其他恶意行为,例如计划任务、禁用或修改工具、创建帐户、服务执行等。

3.7.2 域信任修改(T1484.002)

攻击者可以添加新的域信任或修改现有域信任的属性,以提升特权。域信任详细信息允许在域之间应用身份验证和授权属性,以便访问共享资源。这些信任对象可能包括帐户、凭据和应用于服务器、令牌和域的其他身份验证信息。攻击者可以操纵域信任来添加自己的签名证书,还可以将域转换为联合域,这可能会启用恶意信任修改。

3.7.3 缓解措施

ID

缓解措施

描述

M1047

审计

使用审计工具识别并纠正GPO权限恶意利用。

M1026

特权账户管理

使用最低权限保护域控制器和Active Directory联合身份验证服务器的管理访问。禁止创建具有管理权限的服务帐户。

M1018

用户账户管理

实施WMI和安全过滤筛选,确定GPO应用的白名单用户和计算机。

3.7.4 检测

ID

数据源

数据组件

检测

DS0026

Active directory

Active directory对象创建

监控新创建的active directory对象,如Windows EID5137.

Active directory对象删除

监控active directory对象的意外删除,如Windows EID5141.

Active directory对象修改

监控对AD设置所做的更改。.

DS0017

命令

命令执行

监控已执行的命令和参数,以修改域信任设置,例如用户或应用程序修改域上的联合身份验证设置。

四、总结

本期主要介绍了提权战术(一)及技术/子技术原理,下期将给大家介绍提权战术(二)涉及的剩余提权技术原理。敬请关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机图形学09:二维观察之点的裁剪

作者:非妃是公主 专栏:《计算机图形学》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、二维观察基本…

设计模式4——行为型模式

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它设计算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为&…

[洛谷-P1272] 重建道路(树形背包DP)

[洛谷-P1272] 重建道路(树形背包DP)一、题目重建道路题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示样例解释限制与约定二、思路1、状态表示2、转移方程3、循环设计4、初末状态三、代码一、题目 重建道路 题目描述 一场可怕的地震后&…

计算机Ping命令使用详解

计算机Ping命令使用详解 在网络中 ping 是一个十分强大的 TCP/IP 工具。它的作用主要为: 1、用来检测网络的连通情况和分析网络速度 2、根据域名得到服务器 IP 3、根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。 我们通常会用它来直接 ping ip 地…

uni-app api 获取系统信息(高、宽)用法及封装

uni-app提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息 uniapp 官网解析地址 uni.getSystemInfo 异步获取系统信息 参数名类型必填说明successFunction是接口调用成功的回调failFunction否接口调用失败的回调函数completeFunction否接口…

腾讯混元AI大模型训练技术揭秘——太极AngelPTM

编者按:秉承“技术提效”理念,腾讯广告不断探索技术能力边界,全面升级广告系统,基于“一大平台、两大模型”持续精进创新研发,提升投放效率与投放效果,助力广告主实现高效的全域经营与生意增长。本篇文章是…

请介绍类加载过程,什么是双亲委派模型?

第23讲 | 请介绍类加载过程,什么是双亲委派模型? Java 通过引入字节码和 JVM 机制,提供了强大的跨平台能力,理解 Java 的类加载机制是深入 Java 开发的必要条件,也是个面试考察热点。 今天我要问你的问题是&#xff0…

ESP32驱动-红外寻迹传感器驱动

红外寻迹传感器驱动 1、红外寻迹传感器介绍 红外寻迹传感器具有一对红外线发射管与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,输出接口会输出一个数字信号(低电平或高电平,取决于电路…

JVM篇之内存及GC

目录一、JVM内存区域1.1程序计数器1.2虚拟机栈1.3本地方法栈1.4堆1.5方法区二、JVM运行时内存2.1新生代(轻量级GC)2.2老年代(重量级GC)一、JVM内存区域 JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法栈】、线程共享区域【JAVA 堆、…

蓝桥杯嵌入式PWM_IN(打开中断)

1.原理图 2.配置 3.代码 关键函数 HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1) HAL_TIM_IC_CaptureCallback(TIM_HandTypeDef *htim)//回调函数 HAL_TIM_GET_COUNTER(&htim3) __HAL_TIM_SetCounter(&htim3,0)void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef …

spring5源码篇(4)——beanFactoryPostProcessor执行/注解bean的装配

spring-framework 版本:v5.3.19 前面研究了beanDefinition的注册,但也仅仅是注册这一动作。那么在spring容器启动的过程中,是何时/如何装配的?以及装配的bean是如何注入的? (考虑到xml方式基本不用了以及篇…

探秘MySQL——全面了解索引、索引优化规则

文章目录0.什么是索引1.常用索引分类逻辑维度底层数据结构维度物理维度(InnoDB)2.为什么底层是B树平衡二叉查找树红黑树B树(多叉)B树(多叉)3.MySQL索引优化SQL性能分析之explainQ.MySQL如何查看查询是否用到…

fastdfs提高系统连接数

1.操作系统 vi /etc/systemd/system.conf 修改后重启系统。 ulimit -n 验证是否生效。 2.tracker ①docker exec -it trackerID bin/bash ②vi /etc/fdfs/tracker.conf 一般性能测试场景可配置10000 3.storage ①docker exec -it storageID bin/bash ②vi /etc/fdfs/st…

k8s-Pod域名学习总结

k8s-Pod域名学习总结 大纲 k8s内置DNS服务 配置Pod的域名服务 CornDNS配置 默认Pod的域名 自定义Pod的域名 实战需求 1 Pod有自己的域名 2 集群内部的Pod可以通过域名访问其他的Pod 基础准备: 1 k8s 集群版本1.17 k8s内置DNS服务 k8s1.17安装完成后自动创建…

保姆级使用PyTorch训练与评估自己的MixMIM网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址:https://github.com/Fafa-DL/Awesome-Backbones 操作教程:https://www.bilibili.co…

【python】如何用canvas在自己设计的软件上作画

文章目录前言Canvas组件Canvas画布界面画长方体画多边形PhotoImage组件展示gif的图片展示gif法2总结前言 python学习之路任重而道远,要想学完说容易也容易,说难也难。 很多人说python最好学了,但扪心自问,你会用python做什么了&a…

数据结构——线性数据结构(C语言实现顺序表详解)

1.什么线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串等… 在讲顺序表之前,我们先大致了解一下线性表。…

qt .pro文件 qmake编译过程

#:注释一行 QT:此项目中使用的Qt modules列表 CONFIG:此项目中使用的配置选项 TARGET:目标输出文件的名字 TEMPLATE:当生成二进制文件时项目的模版,例如app,lib 平台下使用 windows { SOURCES SysInf…

剑指 Offer II 024. 反转链表

题目链接 剑指 Offer II 024. 反转链表 easy 题目描述 给定单链表的头节点 head,请反转链表,并返回反转后的链表的头节点。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:h…

不用费劲,这5款效率工具为你解决学习工作烦恼

今天我要向大家推荐5款超级好用的效率软件,无论是在学习还是办公中都能够极大地提高效率。这些软件可以帮助你解决许多问题,而且每个都是真正的神器。 1.键盘仿真鼠标——NeatMouse NeatMouse 是一个小型的工具能够使用鼠标光标控制指针。当你的鼠标不…