RameenMughal/bash-script-analyzer
GitHub: RameenMughal/bash-script-analyzer
基于 Flex 和 Bison 的 Bash 脚本静态安全分析器,可在执行前检测潜在的危险命令和恶意模式。
Stars: 1 | Forks: 0
# 基于 Lexical 和 Syntax 的 Bash 脚本安全分析器
Bash 脚本分析器是一个复杂计算问题 (CCP) 项目,它通过 Lexical 和 Syntax 分析对 Bash 脚本进行静态分析。它有助于在执行前检测潜在不安全或恶意的命令,从而提高脚本的安全性和可靠性。
该项目展示了如何将编译器设计概念应用于网络安全和静态代码分析。由于 Bash 被广泛用作 Linux 系统和关键服务器的默认 shell,该工具充当了一个安全的调试层,用于在错误和危险命令被执行之前识别它们。
## 🎯 目标
1. 使用 Flex 对 Bash 脚本进行 Lexical 分析
2. 使用 Bison 进行 Syntax 分析
3. 检测脚本中不安全或可疑的命令
4. 生成 Token 表和错误报告
5. 识别攻击中常用的恶意模式
## ⚙️ 功能特性
### 🔍 Lexical 分析
- 将 Bash 脚本标记化为有意义的组件
- 识别:
- 关键字 (`if`, `then`, `fi` 等)
- 命令 (`rm`, `wget`, `curl` 等)
- 运算符和符号
- 变量和字符串
### 🧠 Syntax 分析
- 验证 Bash 语法规则
- 检测脚本结构中的语法错误
- 确保正确的命令格式
### 🚨 威胁检测
分析器会标记潜在的危险命令,例如:
- `rm -rf /`
- `wget` / `curl` (可疑下载)
- `chmod 777`
- `eval`
- `fork 炸弹 (:(){:|:&};:)`
- `nc (netcat 滥用)`
- 基于重定向的攻击 (`> /dev/sda`)
## 🧰 技术栈
- Flex (Lexical 分析器生成器)
- Bison (Parser 生成器)
- Bash 脚本 (测试输入)
- Linux 环境 (推荐使用 WSL / Ubuntu)
## ▶️ 如何运行
1. 安装依赖
```
sudo apt update
sudo apt install flex bison gcc
```
2. 编译项目
```
flex lexer.l
bison -d parser.y
gcc lex.yy.c parser.tab.c -o analyzer
```
3. 运行分析器
由于源代码中已包含可执行文件,您可以跳过编译直接运行。
```
./analyzer test.sh
```
## 🔐 安全应用场景
本项目演示了如何将编译器设计技术应用于:
- shell 脚本的静态分析
- 执行前的安全验证
- 阻止不安全命令的执行
## ⚠️ 局限性
- Bash 是一门非常庞大且复杂的语言,但本分析器仅涵盖了其语法和命令的有限子集。
- 它主要侧重于静态模式,因此高级的 Bash 特性(如动态求值)可能无法被完全分析。
- 它无法可靠地检测高度混淆或编码过的恶意命令。
- 检测依赖于预定义的规则集,这可能会导致误报或漏报。
标签:AMSI绕过, Bison, Flex, GraphQL安全矩阵, 威胁检测, 安全扫描器, 客户端加密, 应用安全, 恶意命令检测, 编译原理, 网络安全, 脚本安全, 词法分析, 语法分析, 错误基检测, 隐私保护, 静态代码分析