Cobalt Strike 4.8 用户指南-第五节-获取初始访问

2024-09-02 19:20

本文主要是介绍Cobalt Strike 4.8 用户指南-第五节-获取初始访问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Cobalt Strike 有多个选项,有助于在目标上建立初始访问。这些选项包括剖析潜在目标、创建payload和投放payload

# 5.1、客户端 System Profiler

System Profiler 是一个为客户端攻击提供的侦察工具。这个工具启动一个本地的 web 服务器,并对访问者进行指纹识别。System Profiler 提供通过用户浏览器发现的应用和插件的列表。System Profiler 也会尝试去发现代理服务器背后的用户的内网 IP 地址。

要启动system profiler,点击主菜单上的Attacks -> System Profiler。要启动system profiler,必须指定要绑定的 URI 和启动 Cobalt Strike Web 服务器的端口。

image-20230919101636583

image-20230919101707474

如果指定了一个 Redirect URL (重定向 URL),则一旦探针被访问,Cobalt Strike 会重定向浏览者(在此也就是受害者)到这个指定的 URL。单击 Launch 以启动 System Profiler

System Profiler 使用未签名的 Java Applet 来发现目标的内部 IP 地址并确定目标使用哪个版本的 Java。因为 Java 的点击运行安全特性,这可能会引起怀疑。取消勾选Use Java Applet to get information (使用 Java 小程序获取信息)框来从 System Profiler 中移除Java Applet

选中Enable SSL框以通过 SSL 为 System Profiler 提供服务。默认情况下是禁用的,除非使用 Malleable C2 指定有效的 SSL 证书,后续章节会详细说明。

Application Browser

要查看 System Profiler 的结果,点击 View -->Applications 。Cobalt Strike 将列出它在系统分析过程中发现的所有应用程序。

image-20230919103517940

提示

应用程序浏览器包含大量有用信息,可用于计划有针对性的攻击。下面介绍如何充分利用这一输出:

internal IP 地址字段是从未签名的Java Applet收集的。如果该字段显示未知,则表示该Java Applet可能没有运行。如果在这里看到一个 IP 地址,这意味着未签名的 Java 小程序运行了。

Internet Explorer 会报告用户安装的基本版本。当 Internet Explorer 更新时,报告的版本信息不会改变。Cobalt Strike 会使用 JScript.dll 版本来估算Internet Explorer的补丁级别。访问 support.microsoft.com,搜索JScript.dll的版本号(版本字符串中的第三个数字),将其映射到Internet Explorer更新。

应用程序旁边的*64表示它是 x64 应用程序。

# 5.2、Cobalt Strike Web服务

许多 Cobalt Strike 功能都在其自己的 Web 服务器上运行。这些服务包括system profilerHTTP Beacon 和 Cobalt Strike 的web drive-by攻击。可以在一台 Web 服务器上托管多个 Cobalt Strike 功能。

要管理 Cobalt Strike 的 web 服务,点击主菜单上的Site Management -> Manage

在这里,你可以复制任何 Cobalt Strike URL 到剪贴板或停止一个 Cobalt Strike web 服务。

image-20230919105149940

点击 View → Web Log来监视到你的Cobalt Strike web服务的访问。

image-20230919105337772

如果 Cobalt Strike 的Web服务器接收到来自 LynxWget 或 Curl 浏览器的请求,Cobalt Strike 将自动返回 404 页面。Cobalt Strike 这样做是为了防止蓝队探测。可使用 Malleable C2 ".http-config.block_useragents "选项进行配置。

# 5.3、用户驱动的攻击包

最好的攻击不是漏洞利用。相反,最好的攻击利用正常功能来执行代码。 Cobalt Strike 可以轻松设置多种由用户驱动的攻击。这些攻击利用你已经设置的监听器。

点击Payloads并选择下列选项之一:

image-20230919105901135

# 5.3.1、HTML Application

HTML Application是用 HTML 和Internet Explorer支持的脚本语言编写的 Windows 程序。该程序包生成一个运行 Cobalt Strike 监听器的 HTML 应用程序。

点击Payloads -> HTML Application,打开HTML Application Attack配置面板

image-20230919110439688

参数

  • Listener:按...按钮,选择要输出payload的 Cobalt Strike 监听器。

  • Method :使用下拉列表选择以下方法之一来运行选定的监听器

    image-20230919111138232

    • Executable:该方法将可执行文件写入磁盘并运行
    • PowerShell:使用 PowerShell 单行代码来运行payload stager
    • VBA:此方法使用 Microsoft Office 宏将payload注入内存。VBA 方法需要目标系统上安装有 Microsoft Office
# 5.3.2、MS Office Macro

Microsoft Office 宏工具可生成一个宏,嵌入到 Microsoft Word 或 Microsoft Excel 文档中。

点击Payloads -> MS Office Macro,打开MS Office Macro配置面板

image-20230919112101334

选择一个监听器,然后点击Generate按钮,会弹出一个如何将恶意宏嵌入到 Microsoft Word 或 Excel 文档中的说明。点击Copy Macro将宏代码复制到剪贴板。

image-20230919112505935

如果你能说服用户在打开文档时运行宏,那么这种攻击就会很有效。

# 5.3.3、Payload Generator(Payload生成器)

Cobalt Strike 的payload生成器(Payload Generator)可以生成多种格式的stager将 Cobalt Strike 监听器安装到主机上。可以将其视为 Cobalt Strike 版本的 msfvenom

点击Payloads -> Stager Payload Generator打开Payload Generator面板:

image-20230919120825585

参数选项:

  • Listener :点击...选择一个监听器。

  • Output:选择payload输出格式。(大多数选项都会提供格式化为该语言的字节数组形式的 shellcode

    • C:字节数组格式的Shellcode
    • C#:字节数组格式的Shellcode
    • COM Scriptlet:运行监听程序的.sct文件
    • Java:字节数组格式的Shellcode
    • Perl:字节数组格式的Shellcode
    • PowerShell:执行 shellcode 的 PowerShell 脚本
    • PowerShell Command:用于运行Beacon stagerPowerShell单行代码。
    • Python:字节数组格式的Shellcode
    • Raw:位置无关的 shellcode 的 blob
    • Ruby:字节数组格式的Shellcode
    • Veil:适合与 Veil Evasion Framework 一起使用的自定义 shellcode
    • VBA:字节数组格式的Shellcode
  • x64 :选中该复选框可为所选监听器生成 x64 stager

image-20230919122130943

设置好ListenerOutput后,点击Generate生成payload

**Payload Generator (stageless)**无阶段payload生成器

Cobalt Strike 的payload生成器可以生成无阶段的payload

点击Payloads -> Stageless Payload Generator

image-20230919122745503

image-20230919122847429

参数选项:

  • Listener:点击...选择一个监听器。

  • Guardrails:同前

  • Output:选择payload输出格式。(大多数选项都会提供格式化为该语言的字节数组形式的 shellcode

    • C:字节数组格式的Shellcode
    • C#:字节数组格式的Shellcode
    • Java:字节数组格式的Shellcode
    • Perl:字节数组格式的Shellcode
    • Python:字节数组格式的Shellcode
    • Raw:位置无关的 shellcode 的 blob
    • Ruby:字节数组格式的Shellcode
    • VBA:字节数组格式的Shellcode
  • Exit Function:该函数决定执行退出命令时 Beacon 使用的方法/行为。

    • Process:终止整个进程
    • Thread:仅终止当前线程
  • System Call:从 Cobalt Strike UI 或支持的攻击者功能生成无阶段Beacon payload有时,选择在执行时使用以下系统调用方法之一:

    • None:使用标准Windows API函数
    • Direct:使用 Nt* 版本的函数。
    • Indirect:跳转到 Nt* 版本函数中的相应指令。
  • x64:选中该复选框可为所选监听器生成 x64 stager

点击Generate生成payload

# 5.3.4、Windows Executable

该程序包生成一个 Windows 可执行 Artifact,用于传送一个 payload stager

点击Payloads -> Windows Stager Payload打开Windows Executable面板

image-20230919124403892

image-20230919124423660

参数选项:

  • Listener :选择一个监听器

  • Output:选择一个输出格式

    • Windows EXE :一个windows可执行程序

    • Windows Service EXE:可以响应 Service Control Manager命令的 Windows 可执行文件。可以使用此可执行文件通过 sc 创建 Windows 服务,或使用 Metasploit Framework 的 PsExec 模块创建自定义可执行文件。

    • Windows DLL:导出与 rundll32.exe 兼容的 StartW 函数的 Windows DLL。使用 rundll32.exe从命令行加载 DLL

      rundll32 foo.dll,StartW
      
  • x64:生成与 x64 stager 配对的 x64 artifact。默认情况下,此对话框导出 x64 payload stagers

  • sign:使用代码签名证书签署 EXE 或DLL文件。必须在 Malleable C2 配置文件中指定证书。

点击Genetate创建一个payload stager artifact

Cobalt Strike 使用其 Artifact Kit 来生成此输出。

# 5.3.5、Windows Executable (Stageless)

将 Beacon 导出为不带 stager的可执行文件、服务可执行文件、32 位DLL 或 64 位 DLL,不使用 stager 的payload Artifact被称为无阶段 Artifact。还可以使用PowerShell选项将 Beacon导出为 PowerShell 脚本,或 raw 选项导出与位置无关的 beacon 代码。

点击 Payloads -> Windows Stageless Payload打开Windows Executable(Stageless)面板

image-20230919130334226

image-20230919130348587

参数选项:

  • Listener :选择一个监听器

  • Guardrails :同前

  • Output :选择输出格式

    • PowerShell:将无阶段 Beacon 注入内存的PowerShell脚本
    • Raw:位置无关的 beacon 代码
    • Windows EXE:一个Windows可执行程序
    • Windows Service EXE:可以响应 Service Control Manager命令的 Windows 可执行文件。可以使用此可执行文件通过 sc 创建 Windows 服务,或使用 Metasploit Framework 的 PsExec 模块创建自定义可执行文件。
    • Windows DLL:导出与 rundll32.exe 兼容的 StartW 函数的 Windows DLL。使用 rundll32.exe从命令行加载 DLL。(rundll32 foo.dll,StartW
  • Exit Function:该函数决定执行退出命令时 Beacon 使用的方法/行为。

    • Process:终止整个进程
    • Thread:仅终止当前线程
  • System Call:从 Cobalt Strike UI 或支持的攻击者功能生成无阶段Beacon payload有时,选择在执行时使用以下系统调用方法之一:

    • None:使用标准Windows API函数
    • Direct:使用 Nt* 版本的函数。
    • Indirect:跳转到 Nt* 版本函数中的相应指令。
  • x64:生成与 x64 payload 配对的 x64 artifact。默认情况下,此对话框导出 x64 payload

  • sign:使用代码签名证书签署 EXE 或DLL文件。必须在 Malleable C2 配置文件中指定证书。

点击Genetate创建一个stageless artifact

Windows Executable (Stageless) Variants

此选项为所有配置的监听器生成所有格式类型的stageless payload( x86 和 x64)。

点击 Payloads -> Windows Stageless Generate All Payloads

image-20230919131656469

image-20230919131721125

参数选项:

  • Folder :设置保存的目录

  • System Call :从 Cobalt Strike UI 或支持的攻击者功能生成无阶段Beacon payload有时,选择在执行时使用以下系统调用方法之一:

    • None:使用标准Windows API函数
    • Direct:使用 Nt* 版本的函数。
    • Indirect:跳转到 Nt* 版本函数中的相应指令。
  • Sign:使用代码签名证书签署 EXE 或DLL文件。必须在 Malleable C2 配置文件中指定证书。

点击Genetate创建stageless artifact

# 5.4、Hosting Files(托管文件)

Cobalt Strike 的 Web 服务器可以托管用户驱动的软件包。从主菜单中,点击Site Management -> Host File

image-20230919132556081

1、选择要托管的文件,2、选择一个任意URL,3、然后选择文件的 MIME 类型。

image-20230919132754236

托管文件这个功能本身意义不大。但是,接下来,你将学习如何将 Cobalt Strike 的 URL 嵌入到鱼叉式网络钓鱼电子邮件中。当你这样做的时候,Cobalt Strike 就能将访问文件的访客与电子邮件进行交叉对比,并将这些信息纳入社交工程报告中。

选中Enable SSL以通过 SSL 提供此内容。当在 Malleable C2 配置文件中指定有效的 SSL 证书时,此选项可用。

# 5.5、用户驱动的 Web Drive-by 攻击

Cobalt Strike 提供了多种工具来设置web drive-by攻击。要快速启动攻击,请点击Attacks菜单并选择以下选项之一:

image-20230919133743590

# 5.5.1、Java Signed Applet Attack

这种攻击会启动一个托管自签名 Java 小程序的Web服务器。访问者会被要求允许该小程序运行。当访问者授予该权限时,你就获取了他们的系统访问权限。

image-20230919134029266

Java Signed Applet 攻击使用 Cobalt Strike 的 Java 注入器。在 Windows 系统中,Java 注入器会将 Windows 监听器的 shellcode 直接注入内存。

参数选项:

  • Local URL/Host/Path:设置本地 URL 路径、主机和端口以配置 Web 服务器。

  • Listener :选择一个监听器

  • SSL :选中Enable SSL以通过 SSL 提供此内容。当在 Malleable C2 配置文件中指定有效的 SSL 证书时,此选项可用。

点击Launch 启动攻击。

# 5.5.2、Java Smart Applet Attack

Cobalt Strike 的 "智能小程序攻击"(Smart Applet Attack)将几种可禁用 Java 安全沙箱的漏洞整合到一个软件包中。这种攻击会启动一个托管Java小程序的Web服务器。最初,该小程序在 Java 安全沙箱中运行,无需用户批准即可启动。

这个 applet 会分析它的环境并决定使用哪个 Java 漏洞利用。如果 Java 版本是有漏洞的,此applet 会禁用安全沙箱,并使用 Cobalt StrikeJava注入器执行 payload

点击Attacks -> Smart Applet Attack,打开Smart Applet Attack面板

image-20230919135434778

设置本地 URL 路径、主机和端口以配置 Web 服务器,选择监听器。点击Launch 启动攻击。

# 5.5.3、Scripted Web Delivery (S)

此功能会生成stageless Beacon payload artifact,将其托管在 Cobalt Strike 的Web服务器上,并提供下载和运行该artifact的单行代码。

点击Attacks -> Scripted Web Delivery (S) 打开配置面板

image-20230919140207709

参数选项:

  • Local URL/Host/Path:设置本地 URL 路径、主机和端口以配置 Web 服务器。确保Host字段与你的 SSL 证书的 CN 字段匹配。这将避免由于这些字段之间不匹配而导致此功能失败的情况。

  • Listener :选择一个监听器

  • Type:类型

    • bitsadmin:此选项托管可执行文件并使用bitsadmin 下载它。 Bitsadmin 方法通过 cmd.exe 运行可执行文件。
    • exe:此选项生成一个可执行文件并将其托管在Cobalt Strike的 Web 服务器上。
    • powershell:此选项托管 PowerShell 脚本并使用 powershell.exe 下载脚本并对其进行评估。
    • powershell IEX:与上述 Powershell 选项类似,但它提供了更短的Invoke-Execution单行命令。
    • python:选项托管一个 Python 脚本并使用 python.exe 来下载该脚本并运行它。
  • x64:选中该框可为所选监听器生成 x64 stager

  • SSL:选中Enable SSL以通过 SSL 提供此内容。当在 Malleable C2 配置文件中指定有效的 SSL 证书时,此选项可用。

# 5.6、客户端漏洞利用

你可以使用 Metasploit Framework 漏洞来提供 Cobalt Strike Beacon Cobalt Strike 的 Beacon 与Metasploit框架的分阶段协议兼容。要使用 Metasploit 漏洞利用提供 Beacon

  • 使用 windows/meterpreter/reverse_http[s] 作为 PAYLOAD,设置LHOSTLPORT指向你的Cobalt Strike监听器。在这里,你并不是在真正交付 Meterpreter,而是告诉 Metasploit Framework 从指定的LHOST/LPORT下载payloadHTTP[s] stager
  • DisablePayloadHandler 设置为True。此选项会让MSF 避免在 MSF 内起一个handler 来处理你的payload连接。
  • 将 PrependMigrate 设置为 True。该选项会告诉 Metasploit Framework 在另一个进程中预置运行payload stager的 shellcode。如果被利用的应用程序崩溃或被用户关闭,这将有助于你的 Beacon 会话存活。

下面是 msfconsole 的屏幕截图,该屏幕截图利用 Flash 漏洞来传送托管在 192.168.1.5 端口 80 上的 Cobalt Strike HTTP Beacon

null

# 5.7、网站克隆

在向目标发送漏洞利用程序之前,进行伪装会有所帮助。Cobalt Strike 的网站克隆工具可以帮助此目标。网站克隆工具制作一个网站的本地的复制,使用一些增加的代码来修复连接和图像这样它们可以如预期一样工作。

要克隆一个网站,点击Site Management -> Clone Site,打开Clone site面板

image-20230919143906743

image-20230919143942072

可以将攻击嵌入到克隆网站中。在绑定字段中写入攻击的 URLCobalt Strike 就会以 IFRAME的形式将其添加到克隆网站中。点击...按钮选择一个运行的客户端漏洞利用程序。

克隆网站也可以捕捉键盘记录。勾选 Log keystrokes on cloned site。这将在克隆网站中插入 JavaScript 键盘记录器。

image-20230919144952407

要查看记录的按键或克隆网站的访客,点击View -> Web Log查看。

选中Enable SSL 以通过 SSL 提供此内容。当你在 Malleable C2 配置文件中指定有效的 SSL 证书时,此选项可用。确保主机字段与你的 SSL 证书的 CN 字段匹配。这将避免由于这些字段之间不匹配而导致此功能失败的情况。

# 5.8、鱼叉式网络钓鱼

现在你已经了解了客户端攻击,我们来谈谈如何对用进行攻击。进入组织网络的最常见方式是通过鱼叉式网络钓鱼。 Cobalt Strike 的鱼叉式网络钓鱼工具允许你使用任意消息作为模板发送像素完美的鱼叉式网络钓鱼消息。

# 5.8.1、目标

在发送钓鱼信息之前,你应该收集目标列表。Cobalt Strike 接受的格式是用文本文件组织的目标。该文件的每一行包含一个目标。目标可以是一个电子邮件地址。你可以使用一个电子邮件地址、标签或一个名字。如果提供了名称,则有助于 Cobalt Strike 定制每个网络钓鱼。

# 5.8.2、模板

接下来,你需要一个网络钓鱼模板。模板的好处是可以在不同任务之间重复使用。Cobalt Strike使用保存的电子邮件作为模板。Cobalt Strike 会剥离附件,处理编码问题,并为每次网络钓鱼攻击重写每个模板。

如果你想创建自定义模板,请撰写邮件并发送给自己。大多数电子邮件客户端都有查看原始邮件代码的功能。在Gmail 中,点击回复旁边的向下箭头,选择显示原文。将此信息保存到文件中,这样就制作好了一个 Cobalt Strike 网络钓鱼模板。

你可能想使用 Cobalt Strike 的token自定义你的模板。Cobalt Strike 在你的模板里会自动替换如下一些 token :

TokenDescription
%To%The email address of the person the message is sent to(收件人邮箱)
%To_Name%The name of the person the message is sent to.(收件人名字)
%URL%The contents of the Embed URL field in the spear phishing dialog.(鱼叉式网络钓鱼对话框中嵌入 URL 字段的内容。)
# 5.8.3、发送消息

现在已经有了目标和模板,就可以开始网络钓鱼了。要启动鱼叉式网络钓鱼工具,请点击Attacks -> Spear Phish启动Spear Phish面板:

image-20230919150517598

null

要发送一封钓鱼邮件,你必须首先导入你的目标。点击Targets字段旁边的文件夹图标来导入你的目标文件。导入包含一个电子邮件地址和姓名的文件,并用制表符或逗号分隔,以实现更强大的消息自定义。

将模板设置为电子邮件信息模板。Cobalt Strike 的邮件模板只是一个已保存的邮件信息。Cobalt Strike 会删除不必要的标题,移除附件,重写 URL,重新编码邮件,并为你重写邮件。点击Template字段旁边的文件夹,选择一个模板。

你可以选择增加一个附件。这是使用我们前面讨论过的社会工程程序包的好机会之一。CobaltStrike 会将你的附件增加到发出的钓鱼邮件中。

Cobalt Strike 不提供撰写信息的功能。请使用电子邮件客户端,撰写信息并发送给自己。然后保存邮件原文。

你还可以要求 Cobalt Strike 使用你选择的 URL 重写模板中的所有 URL。设置Embed URL以使 Cobalt Strike 重写消息模板中的每个URL以指向嵌入的 URL。以这种方式添加的 URL 将包含一个令牌,该令牌允许 Cobalt Strike 追踪任何访问者直至此特定的鱼叉式网络钓鱼攻击。 Cobalt Strike 的报告和网络日志功能利用了该令牌。按 ... 选择已启动的 Cobalt Strike 托管站点之一。

当你嵌入一个 URLCobalt Strike 将对其附加 ?id=%TOKEN% 。每一封发出的邮件都会被分配自己的令牌(token)。Cobalt Strike 使用这个令牌(token)将网站访问者映射到已发送到的电子邮件上。如果你要写报告,请务必保留此值。

将邮件服务器设置为目标的开放中继或邮件交换记录。如有必要,你可能还会向邮件服务器进行身份验证以发送你的网络钓鱼邮件。

点击Mail Server字段旁边的...以配置其他服务器选项。你可以指定一个用户名和密码来进行身份验证。随机延迟"(Random Delay)选项会让 Cobalt Strike 随机延迟每封邮件的时间,最多不超过你指定的秒数。如果不设置该选项,Cobalt Strike 将不会延迟发送邮件。

null

 Bounce To设置为退回邮件的电子邮件地址。此值不会影响目标收件人看到的邮件。按Preview 查看发送给其中一个收件人的组合邮件。如果预览效果良好,点send即可发送攻击信息。

Cobalt Strike 通过团队服务器发送网络钓鱼邮件。

# 说明

本文由笔者在Cobalt Strike官方用户指南原文(https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/welcome_main.htm)基础上编译,如需转载请注明来源。

这篇关于Cobalt Strike 4.8 用户指南-第五节-获取初始访问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130841

相关文章

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

vcpkg子包路径批量获取

获取vcpkg 子包的路径,并拼接为set(CMAKE_PREFIX_PATH “拼接路径” ) import osdef find_directories_with_subdirs(root_dir):# 构建根目录下的 "packages" 文件夹路径root_packages_dir = os.path.join(root_dir, "packages")# 如果 "packages"