cloudsecnetwork/phishintel
GitHub: cloudsecnetwork/phishintel
一款开源的AI驱动钓鱼模拟工具,帮助组织通过逼真的网络钓鱼演练评估和提升员工安全意识。
Stars: 15 | Forks: 3
# PhishIntel: AI 驱动的网络钓鱼模拟工具
### 什么是 PhishIntel?
**[PhishIntel](https://phishintel.com)** 是一款开源、AI 驱动的网络钓鱼模拟工具,专为逼真的网络安全意识培训而设计。它通过模拟现实世界的钓鱼攻击来帮助组织评估其网络安全态势,从而提高用户意识并最大限度地降低风险。
使用 PhishIntel,您可以创建根据组织需求量身定制的自定义钓鱼活动。该工具提供有关用户行为的详细分析和洞察,帮助您了解培训计划的有效性并确定需要改进的领域。
### 主要功能
- **AI 驱动的活动**:利用人工智能制作高度逼真的钓鱼活动,这些活动模仿现实世界的攻击技术并适应您的组织环境。
- **用户意识跟踪**:分析用户如何响应模拟攻击,帮助识别高风险个人或群体以进行针对性的培训干预。
- **综合报告**:生成详细的报告,深入了解用户与钓鱼邮件的交互情况,包括点击率、提交模式和活动有效性指标。
- **自定义配置**:配置钓鱼内容、日程安排和活动参数,以符合您组织的培训目标和安全策略。
## 本地开发设置
### 前置条件
在本地设置项目之前,请确保已安装以下内容:
- **Node.js**(版本 16 或更高)
- **npm**(随 Node.js 一起提供)
- **Docker**(用于运行 MongoDB 容器)
- **Git**(用于克隆仓库)
### 第 1 步:克隆仓库
```
git clone https://github.com/cloudsecnetwork/phishintel.git
cd phishintel
```
### 第 2 步:使用 Docker 设置 MongoDB
#### 启动 MongoDB 容器
```
docker run -d --name mongodb -p 27017:27017 mongo:8.0
```
#### 验证 MongoDB 是否正在运行
```
docker ps
```
#### 停止 MongoDB(需要时)
```
docker stop mongodb
```
#### 启动 MongoDB(停止后)
```
docker start mongodb
```
### 第 3 步:配置环境变量
在根目录下创建一个 `.env` 文件:
```
NODE_ENV=development
DB_URL=mongodb://localhost:27017/phishintel
ADMIN_PASSWORD=admin123
SESSION_SECRET=your-unique-session-secret-here
PORT=8080
```
### 第 4 步:启动后端(API)
从项目根目录运行:
```
# 安装 backend dependencies
npm install
# 启动 MongoDB 后,初始化 root admin(仅限首次):
node scripts/initRootAdmin.js
# 启用 auto-reload 启动 backend
nodemon app.js
```
### 第 5 步:配置前端环境(可选)
如果您需要自定义 API 端点,请在 `client` 目录中创建一个 `.env` 文件:
```
REACT_APP_API_URL=http://localhost:8080
```
### 第 6 步:启动前端
在一个单独的终端中运行:
```
cd client
npm install
npm start
```
### 第 7 步:访问应用程序
- **管理控制台**: http://localhost:3000/console
- **后端 API**: http://localhost:8080
## 生产部署
对于生产部署,请考虑以下几点:
### 后端生产环境
```
# 安装 dependencies
npm install
# 将 NODE_ENV 设置为 production
export NODE_ENV=production
# 启动 application(不使用 nodemon)
npm start
```
### 前端生产构建
```
cd client
npm run build
```
优化后的构建将创建在 `client/build` 文件夹中,可以由您的 Web 服务器提供服务或与后端集成。
### 安全注意事项
- 为 `ADMIN_PASSWORD` 和 `SESSION_SECRET` 使用强且唯一的密码
- 在生产环境中配置 HTTPS
- 设置反向代理(nginx, Apache)以提高安全性和性能
- 对所有敏感配置使用环境变量
- 定期更新依赖项
## Docker 部署
您可以通过两种方式使用 Docker 运行 PhishIntel。**不要同时运行这两种方法,以避免容器和端口冲突。**
### 1. 使用 `docker-compose`(推荐大多数用户使用)
- **优点:** 最简单,管理应用程序和 MongoDB,通过 Docker 卷自动持久化数据,一键启动和关闭。
- **缺点:** 如果您想自定义端口或容器名称,设置会稍微复杂一点。
同时启动应用和 MongoDB:
```
docker-compose up
```
- MongoDB 数据持久化保存在 `phishintel_mongo_data` Docker 卷中。
- 停止并移除容器(但保留数据):
docker-compose down
- 停止并移除容器**并**删除所有 MongoDB 数据:
docker-compose down -v
### 2. 使用 `docker run`(手动,高级)
- **优点:** 控制力更强,可以单独运行应用或 DB,适用于高级场景。
- **缺点:** 您必须自己管理 MongoDB 和数据持久化。
启动 MongoDB(数据持久化保存在 Docker 卷中):
```
docker run -d --name mongodb -p 27017:27017 -v phishintel_mongo_data:/data/db mongo:8.0
```
启动 PhishIntel 应用(连接到正在运行的 MongoDB):
```
docker run --name phishintel \
-e NODE_ENV=development \
-e DB_URL="mongodb://host.docker.internal:27017/phishintel" \
-e ADMIN_PASSWORD=YourSecurePassword \
-e SESSION_SECRET=your-session-secret \
-e PORT=8080 \
-p 8080:8080 \
cloudsecnetwork/phishintel:latest
```
- 数据持久化保存在 `phishintel_mongo_data` Docker 卷中(与 compose 相同)。
- 停止并移除容器(但保留数据):
docker stop phishintel mongodb
docker rm phishintel mongodb
- 移除数据卷(危险:删除所有 MongoDB 数据):
docker volume rm phishintel_mongo_data
### **重要:避免冲突**
- **不要**同时运行这两种方法。两者使用相同的容器名称和主机端口。
- 使用 `docker ps` 查看正在运行的容器。
- 在切换方法之前,使用 `docker-compose down` 或 `docker stop`/`docker rm` 进行清理。
## 环境变量
PhishIntel 依赖多个环境变量进行正确配置。这些变量应在 `.env` 文件中定义以用于本地开发,或在 Docker 部署时在运行时传入。
| Variable | Description |
|------------------|-----------------------------------------------------------------------------|
| `NODE_ENV` | 定义环境模式。本地设置使用 `development`,实时部署使用 `production`。如果未设置 NODE_ENV,默认为 'production'。仅在需要开发日志和功能时将其设置为 'development'。 |
| `DB_URL` | MongoDB 连接字符串。可以指向本地 MongoDB 实例或像 MongoDB Atlas 这样的托管集群。示例:`mongodb://localhost:27017/phishintel` 或 `mongodb+srv://:@cluster.mongodb.net/phishintel`。 |
| `ADMIN_PASSWORD` | 默认 `admin` 用户的初始密码。**仅在设置期间使用一次,用于创建 root 管理员帐户。初始设置后,您可以通过 Web 界面更改管理员密码。** |
| `SESSION_SECRET` | 用于签名用户会话的安全随机字符串。请保密此值,尤其是在生产环境中。 |
| `PORT` | 后端服务器监听的端口。默认为 `8080`。如有需要,您可以更改此设置。 |
### 前端环境变量
前端(client)可能需要额外的环境变量。如有需要,在 `client` 目录中创建一个 `.env` 文件:
| Variable | Description | Default |
|-----------------------|------------------------------------------------|----------------------------|
| `REACT_APP_API_URL` | 后端 API 端点 URL | `http://localhost:8080` |
## 测试
### 后端测试
运行后端测试(如果可用):
```
npm test
```
### 前端测试
运行前端测试:
```
cd client
npm test
```
## 获取帮助
如果您在使用或设置 PhishIntel 时遇到任何问题,可以通过以下方式获取支持:
- **浏览现有问题**
首先检查 [GitHub Issues 部分](https://github.com/cloudsecnetwork/phishintel/issues),看看您的问题是否已被解决。
- **提交新问题**
如果找不到解决方案,请[提交一个新的 GitHub issue](https://github.com/cloudsecnetwork/phishintel/issues/new)。请务必包含:
- 对问题清晰简洁的描述
- 重现步骤
- 任何相关的错误消息或日志
- 您的环境详细信息(操作系统、Node.js 版本、MongoDB 版本等)
- **检查日志**
日志通常可以帮助识别问题:
- 对于后端问题,请检查运行应用程序的终端
- 对于 Docker 用户,请使用:
docker logs
- **验证您的环境**
仔细检查您的 `.env` 文件配置是否正确,以及 MongoDB 等服务是否正在运行且可访问。
- **需要直接支持?**
我们为贡献者和早期采用者维护了一个私有的 Discord 服务器。虽然尚未公开访问,但您可以通过 [hello@cloudsecnetwork.com](mailto:hello@cloudsecnetwork.com) 直接联系我们,我们将很乐意为您提供帮助或在适当情况下发出邀请。
您的反馈非常宝贵,我们将帮助您成功使用 PhishIntel!
标签:AI驱动, Docker, ESC8, GNU通用公共许可证, MITM代理, MongoDB, Node.js, PhishIntel, SecOps, 云安全架构, 企业安全, 威胁情报, 安全合规, 安全意识, 安全教育, 安全测试, 安全运营, 安全防御评估, 开发者工具, 开源安全工具, 意识培训, 扫描框架, 攻击性安全, 攻击模拟, 暗色界面, 社会工程学, 网络代理, 网络安全, 网络资产管理, 自定义脚本, 请求拦截, 逆向工程平台, 邮件安全, 隐私保护, 驱动签名利用