Vegan-可以防护BeEF进犯的Chrome扩展插件
阅读器运用结构(BeEF)是一个易于运用的开源东西,许多安全职业的从业人员和黑客都可以运用它来对网页阅读器进行进犯。现在,已知的可以抵挡BeEF进犯的办法十分的少,所以我决议开发一个Chrome阅读器插件来防护这种进犯。我将这个插件称为”Vegan”。
Chrome插件-Vegan可以在这里下载。这个插件是开源的概念验证,在此发布给咱们,该东西的运用彻底取决于用户的个人志愿。
为了让BeEF取得阅读器的操控权,它有必要对阅读器进行诈骗,并让阅读器履行歹意JavaScript脚本代码。这种工作会发作在任何一个受进犯者操控的网站上,乃至有的时分会直接在网站上放置歹意广告,并以此来影响用户。这种JavaScript脚本代码会重连至BeEF的操控面板,这种操控面板是一种交互性极强的指令操控台。这样进犯者便可以挑选运转许多的进犯东西以及信息搜集东西了。
寻觅现存的办法
我开端寻觅一种可以检测BeEF的办法,可是我并没有找到许多。
我发现了一种Snort规矩(来自EmergingThreats.net)。下面是该规矩的缩写版:
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (flow:to_server,established; content:"Cookie|3a 20|BEEFSESSION=";)关于哪些不熟悉Snort的人来说,这是一种侵略检测和防护体系,它可以对网络流量进行监控和测验,并检测这些数据是否契合规矩。这是一个十分有用的东西,我以为每一个安全防护人员都应该运用这种东西。这种特别的Snort规矩指的是它会查询本地网络一切HTTP客户端与其他恣意长途HTTP服务器的通讯数据,假如HTTP客户端发送了名为BEEFSESSION的cookie,那么它便会宣布正告。假如咱们感染一个客户端,咱们是无法检查到这个cookie的设置信息,但咱们可以看到BEEFHOOK。
研讨之后发现,BEEFSESSION cookie仅在阅读器赋权给BeEF网页操控面板的时分被设置了,而不是在方针主机中。假如该规矩改为寻觅BEEFHOOK,那么功率或许会进步许多。
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (flow:to_server,established; content:"Cookie|3a 20|BEEFHOOK=";)咱们以默许装备的BeEF为例,只需这些遭到BeEF感染的阅读器运用了未经过加密的HTTP进行通讯,那么就可以被检测出来。
“要么出去,要么进来。我仅仅一个标志,而不是差人”
这句话引证自“辛普森一家”,这是我近几年十分喜爱的一句话,即使这仅仅一句写在警示牌上的话。我以为关于安全实践较差的网站来说,这是一个十分好的警示。我觉得Snort规矩就与这个警示相同,它告知用户这个网站可以抵挡BeEF进犯,可是只要进犯者当即抛弃侵略才干够。
从BeEF的装备文件中,咱们发现咱们不只可以修正其cookie的称号,并且还可以修正其他的值,包含其他cookie的称号。
由于我是Snort的一名用户,并且也是一名粉丝,所以我对它可以抵挡BeEF进犯的发展前景并不感到十分的激动。其间一个原因便是,BeEF的功用是根据HTTPS的,所以仅靠明文检测是不行的。另一个原因便是在我游览的时分,在任何一个不受我操控的网络中,我有必要为我一切的计算机装置Snort来维护我自己。经过这种程度的尽力来防备一种并不常见的进犯,好像有一些剩余了。
开发我自己的维护办法
在这里我引证了一种哲学的观念,为了尽或许地维护互联网的安全,咱们有必要坚持进攻研讨和防护研讨两者之间的平衡联系。假如其间一个超过了另一个,咱们将会失掉对日益增长和不断改动的安全要挟的操控。假如咱们的尽力都会集在进攻端,咱们就无法开发更多的防护办法来维护自己。假如尽力过多地会集在了防护端,咱们对网络和软件等设备的模仿进犯将会变得落后,这样就会使防护体系中呈现大规模的缝隙,这种缝隙有或许会被歹意行为所运用,也有或许被不负责任的人发表。
正是由于这种理念,所以我解说了我的观念和研讨,期望其他情投意合的人可以参加咱们。
开发Chrome插件不失为一种挑选
我决议将我的维护措施参加到Chrome阅读器中,这样我就可以不受操作体系的约束,很简略的将其布置到设备上了,并可以一起操作HTTPS和HTTP,并且这样也可以从源头处理这个问题。
Chrome阅读器供给了一些相关的Chrome API,所以插件的开发十分简略。最小的插件仅包含一个manifest文件(manifest.json)和一个Javascript脚本文件。假如插件有用户接口,那么插件相同可以包含HTML文件,图标,以及其他类型的文件。
下面,我给咱们展现一下插件代码:
manifest.json
{ "manifest_version": 2, "name": "Vegan", "description": "This extension detects BeEF hooks and blocks the offending domain, effectively stopping the attack.", "version": "1.0", "background": { "scripts": ["popup.js"] }, "permissions": [ "cookies", "*://*/*" ] }popup.js
// Detect bad cookies chrome.cookies.onChanged.addListener(function(changeInfo) { console.log(changeInfo); } );这个插件将会记载一切阅读器发送至这个插件的cookie事情。
在这里,咱们可以看到许多设置了的和未设置的cookies。这些cookie中包含了BEEFHOOK cookie。现在,咱们将把BEEFHOOK cookie按咱们的装备进行修正,然后调查会发作什么改动。
咱们可以看到,cookie的称号现已被设置了,装备也进行了修正。咱们还可以看到,一个名为”cookie”的cookie,它的值在不断的改动,它可以作为一个很好的查询标志器。
等等,这些cookie是从哪里来的?
幸而BeEF项目是开源的,咱们可以轻易地发现这些cookie的方针。
研讨发现,这些cookie的创立和毁掉是为了测验阅读器创立不同类型cookie的才干。除此之外,这些cookie的姓名和值是不行装备的。
防护是宗旨
已然检测办法十分的重要,防护办法才是真实有价值的,由于只要咱们让用户认识到了进犯,并可以阻挠他们成为进犯者的“盘中餐”,这样才干算得上是真实的维护。
为了向这个Chrome插件中增加一个防护机制,咱们将会阻挠cookie被设置。这样将会阻挠阅读器与BeEF操控器进行通讯。
manifest.json
{ "manifest_version": 2, "name": "Vegan", "description": "This extension detects BeEF hooks and blocks the offending domain, effectively stopping the attack.", "version": "1.0", "background": { "scripts": ["popup.js"] }, "permissions": [ "cookies", "*://*/*", "webRequest", "webRequestBlocking" ] }假如咱们测验改写页面,咱们便会看到插件阻挠了一切的歹意拜访。
假如咱们检查BeEF的操控面板,咱们可以看到咱们的阅读器并没有以活泼方针主机的身份呈现。
鉴于这点,咱们可以以为这种办法可以经过Chrome阅读器,然后有用地防护BeEF进犯。BeEF的开发者相同会注意到这一点,假如他们乐意,他们可以修正这个程序来逃避该插件的检测。
结束语
阅读器运用结构(BeEF)关于安全研讨人员来说是一个十分有用的东西,研讨人员可以运用这个东西来对阅读器进行进犯和浸透测验。这个东西是众所周知的,但防护这种进犯的办法却否则。作为一名安全研讨人员,我期望咱们可以坚持进犯研讨和防护研讨两者之间的平衡,即使是此类小型的项目可以给你带来收益。假如可以有更多的安全研讨人员可以致力于开源的防护项目以及防护研讨,咱们便可以将安全界的天平从头扶正。