Mr-AkshatBhatnagar/Malware-Scanner
GitHub: Mr-AkshatBhatnagar/Malware-Scanner
基于 Azure Defender for Storage 和可选 OpenAI 分析的 Web 恶意软件扫描应用,解决文件上传场景下的自动化威胁检测问题。
Stars: 0 | Forks: 0
# Defender 恶意软件扫描器
这是一个使用 **Microsoft Defender for Storage** 扫描上传文件以检测恶意软件的 Web 应用,并支持通过 Azure OpenAI 进行可选的 **AI 驱动的威胁分析**。
## 功能
* 上传文件并使用 Microsoft Defender for Storage 进行扫描
* 带有多阶段指示器的实时扫描进度
* 针对恶意检测结果提供 AI 生成的威胁分析
* 存储在 Azure Blob Storage 中的持久化扫描历史记录
* 简洁的深色主题 UI,带有严重程度颜色编码
* 唯一的 blob 命名方式防止重复上传时发生覆盖
## 前置条件
* 启用了 [Defender for Storage](https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-storage-introduction) 的 **Azure Storage Account**
* **两个 blob 容器:**
* 一个用于文件上传(配置生命周期策略以进行自动清理)
* 一个用于扫描历史记录(无生命周期策略)
* 对 Security Alerts 具有读取权限的 **Azure AD Service Principal**
* **(可选)** 用于 AI 威胁分析的 **Azure OpenAI** 部署
## 设置
1. 克隆此仓库
2. 安装依赖项:
```
pip install -r requirements.txt
```
3. 将 `.env.example` 复制到 `.env` 并填写您的凭据:
```
cp .env.example .env
```
4. 运行应用:
```
streamlit run scanner.py
```
## Azure 配置
### 存储帐户
1. 创建一个启用 Defender for Storage 的 Storage Account
2. 创建两个容器:
* `unscannedcontent`(或任意名称)- 用于文件上传
* `scanhistory` - 用于持久化扫描历史记录
3. 生成 SAS token:
```
# Upload SAS (read, write, create, list, tag)
az storage container generate-sas --account-name --name --permissions rwclt --expiry --output tsv
# Read SAS (read, list, tag)
az storage container generate-sas --account-name --name --permissions rlt --expiry --output tsv
# History container SAS tokens (same permissions)
az storage container generate-sas --account-name --name scanhistory --permissions rwclt --expiry --output tsv
az storage container generate-sas --account-name --name scanhistory --permissions rlt --expiry --output tsv
```
### 生命周期策略(可选)
在 12 小时后自动删除已扫描的文件:
```
az storage account management-policy create \\
--account-name --resource-group \\
--policy '{"rules":\[{"name":"auto-delete-12h","enabled":true,"type":"Lifecycle","definition":{"filters":{"blobTypes":\["blockBlob"],"prefixMatch":\["/"]},"actions":{"baseBlob":{"delete":{"daysAfterModificationGreaterThan":0.5}}}}}]}'
```
### Service Principal
在您的订阅中创建一个具有 `Security Reader` 角色的 Service Principal:
```
az ad sp create-for-rbac --name "defender-scanner" --role "Security Reader" --scopes /subscriptions/
```
### Azure OpenAI(可选)
在 Azure OpenAI 中部署一个 GPT 模型,并在 `.env` 中提供 endpoint、密钥和部署名称。
## 工作原理
1. **上传** - 文件以带有唯一时间戳的名称上传到扫描容器中
2. **轮询标签** - 应用轮询 blob 标签以获取 Defender 的扫描结果
3. **检查警报** - 如果检测到恶意内容,则从 Defender 获取详细的警报信息
4. **AI 分析** - (可选)生成人类可读的威胁摘要
5. **历史记录** - 结果将保存到持久化的历史记录容器中
## 许可证
MIT
标签:Azure, Kubernetes, Streamlit, 威胁分析, 恶意软件扫描, 自动化侦查工具, 访问控制, 逆向工具