mateocallec/security-awareness

GitHub: mateocallec/security-awareness

一个基于 BadUSB 的安全意识研究平台,通过物理投放 USB 设备来研究人们面对未知设备时的行为反应,并收集匿名问卷数据以评估和改进安全培训。

Stars: 0 | Forks: 0

# 安全意识 本项目的目的是研究人类在面对基于物理 USB 的社会工程学攻击时的行为反应。BadUSB 设备会被故意放置在公共或办公环境中。当有人将其插入电脑时,他们的浏览器会被重定向到一个意识提醒页面,该页面会解释可能发生的后果,并邀请他们填写一份匿名问卷。随后将对收集到的数据进行分析,以更好地理解人们为什么会插入未知的 USB 设备,以及如何改进安全意识培训。 ## 技术栈 | 层级 | 技术 | |---|---| | **后端** | NestJS · TypeScript · Prisma ORM · MariaDB · JWT (httpOnly cookie) · AES-256-CBC (电子邮件加密) · CSRF双重提交 | | **前端** | React · TypeScript · Vite · Tailwind CSS · shadcn/ui · React Router | | **基础设施** | Docker · Docker Compose · nginx (反向代理 + SPA路由) | ## 快速开始 ### 前置条件 - Docker 和 Docker Compose v2 ### 1. 克隆 ``` git clone https://github.com/mateocallec/security-awareness.git cd security-awareness ``` ### 2. 配置环境 ``` cp .env.template .env ``` 编辑 `.env` 并填写所有值: | 变量 | 描述 | |---|---| | `DB_ROOT_PASSWORD` | MariaDB root 密码 | | `DB_NAME` | 数据库名称 (例如 `security_awareness`) | | `DB_USER` | 应用程序数据库用户 | | `DB_PASSWORD` | 应用程序数据库密码 | | `JWT_SECRET` | 用于 JWT 签名的随机密钥 — `openssl rand -hex 64` | | `DASHBOARD_PASSWORD` | 访问控制面板的密码 | | `ENCRYPTION_KEY` | 32字节 AES 密钥 (十六进制) — `openssl rand -hex 32` | | `HTTP_PORT` | 前端的主机端口 (默认为 `80`) | ### 3. 构建并运行 ``` docker compose up -d --build ``` 应用程序将在 `http://localhost` (或配置的 `HTTP_PORT`) 上可用。 ### 4. 使用应用程序 | URL | 描述 | |---|---| | `http://localhost/dashboard` | 管理控制面板 (受密码保护) | | `http://localhost/login` | 控制面板登录 | | `http://localhost/badusb-hit?id=` | 插入 USB 设备时显示的意识提醒页面 | `` 值是在控制面板中创建时分配给每个 BadUSB 设备的 8 字符标识符。 ## 使用预构建镜像 Docker 镜像已发布到 GitHub Container Registry: ``` docker pull ghcr.io/mateocallec/security-awareness:latest ``` ## 本地开发 ### 后端 ``` cd backend cp .env.template .env # fill in values npm install npx prisma migrate dev npm run start:dev ``` ### 前端 ``` cd frontend npm install npm run dev ``` 在 `frontend/.env.local` 中设置 `VITE_API_URL=http://localhost:3000`,以便开发服务器代理到本地后端。 ## 仓库结构 ``` security-awareness/ ├── backend/ # NestJS REST API │ ├── prisma/ # Schema and migrations │ └── src/ ├── frontend/ # React SPA │ └── src/ ├── nginx.conf # nginx config for the frontend container ├── Dockerfile # Multi-stage build (frontend + backend targets) ├── docker-compose.yml └── .env.template ``` ## 许可证 查看 [LICENSE](LICENSE)。 ## 作者 **Matéo Florian Callec** — [mateo@callec.net](mailto:mateo@callec.net)
标签:AES-256, BadUSB, CSRF防护, Docker, Docker Compose, JWT, MariaDB, NestJS, Nginx, Prisma ORM, React, shadcn/ui, Syscalls, Tailwind CSS, TypeScript, USB社会工程学, Vite, 人类行为研究, 反向代理, 安全插件, 安全教育平台, 安全防御评估, 数据加密, 漏洞评估, 物理安全, 社会工程学防御, 网络安全实验, 自动化攻击, 请求拦截, 问卷调查系统