Linux安全检测工具--运行即可抓到多数僵尸程序

摘要

随着网络攻击的日益猖獗,Linux 系统的安全性面临着严峻的挑战。为了及时发现和防范安全威胁,许多 Linux 安全检测工具应运而生。本文将详细介绍作者开发的 Linux 安全检测工具的功能,包括进程分析、网络分析、日志分析、文件分析、利用现有检测工具、容器分析、数据库分析、环境变量分析、启动脚本分析、启动服务分析、账号密码配置分析、账号权限配置分析、预加载库/动态链接器/动态链接库分析、内核模块分析、敏感目录下异常文件分析等,帮助用户更好地了解和选择合适的 Linux 安全检测工具。

1. 进程分析

进程分析是 Linux 安全检测工具的核心功能之一,主要用于检测系统中是否存在可疑或恶意的进程。主要分析方法包括:

  • 高 CPU/MEM 占用检测: 检测系统中 CPU 或内存占用率异常的进程,这些进程可能存在性能问题或被恶意软件利用。
  • 伪装内核进程检测: 检测系统中伪装成内核进程的可疑进程,这些进程可能试图隐藏其真实身份。
  • 隐藏路径进程检测: 检测系统中启动路径包含隐藏字符(如点号)的可疑进程,这些进程可能试图隐藏其启动位置。
  • 随机进程名检测: 检测系统中进程名包含随机字符串的可疑进程,这些进程可能试图隐藏其真实目的。
  • 带特征字符串进程检测: 检测系统中进程名或启动参数包含特定特征字符串(如 “scan”、“payload” 等)的可疑进程,这些进程可能涉及恶意行为。
  • 带恶意域名进程检测: 检测系统中进程连接到已知恶意域名或 IP 地址的可疑进程,这些进程可能试图与远程服务器通信或下载恶意软件。
  • 带可疑路径进程检测: 检测系统中进程启动路径包含特定可疑目录(如 “/tmp”、" /var/tmp/" 等)的可疑进程,这些进程可能试图在系统临时目录中执行恶意操作。
  • 带删除标识进程检测: 检测系统中进程关联的文件已被删除但进程仍在运行的异常情况,这可能是恶意软件为了隐藏自身而采取的手段。
  • memfd 无文件进程检测: 检测系统中使用 memfd 文件系统创建的无文件进程,这些进程可能试图隐藏其代码和数据。
  • 隐藏进程检测: 检测系统中在 /proc 目录下找不到对应进程信息的隐藏进程,这些进程可能使用 Rootkit 等恶意软件进行隐藏。
  • 异常启动用户检测: 检测系统中由非正常用户(如 “postgres”、“portalnav” 等)启动的可疑进程,这些进程可能被用于执行恶意操作。
  • 提权进程检测: 检测系统中以 root 权限运行的进程,这些进程可能存在安全隐患或被恶意软件利用。
  • 异常 shell 执行进程检测: 检测系统中使用非标准 shell(如 tcsh)执行的可疑进程,这些进程可能试图绕过安全限制。
  • 进程名伪造检测: 检测系统中进程名与实际执行程序不匹配的进程,这些进程可能被用于隐藏其真实目的。
  • 审计追踪异常行为检测: 通过审计系统调用来检测进程的异常行为,例如非法访问文件、创建隐藏进程等。
  • function check_process() {
        echo "Checking for suspicious processes..."
        # 高 CPU/MEM 占用检测
        high_mem_cpu_processes=$(ps -aux --sort=-%mem | awk '{if($4 > 80 || $3 > 80) print$0}')
        if [[ -n $high_mem_cpu_processes ]]; then
            echo "High mem/cpu占用进程:$high_mem_cpu_processes"
        fi

        # 伪装内核进程检测
        ps_output=$(ps -ef | awk '{if($2!="2"&&$3!="2"&&$NF~/^\[.*\]/)print$0}')
        if [[ -n $ps_output ]]; then
            echo "Suspicious process pretending to be a kernel process detected: $ps_output"
        fi

        # 带隐藏路径进程检测
        hidden_path_output=$(ps -ef | awk '{if($0~/(\/| )\./)print$0}')
        if [[ -n $hidden_path_output ]]; then
            echo "Process with hidden path detected: $hidden_path_output"
        fi

        # ... 其他进程分析代码 ...
    }
     

2. 网络分析

网络分析主要用于检测系统中是否存在可疑的网络连接和行为,主要分析方法包括:

  • 异常 SYN_SENT 数据包检测: 检测系统中大量发送 SYN_SENT 数据包的进程,这些进程可能进行端口扫描或分布式拒绝服务攻击 (DDoS)。
  • 会话连接数异常检测: 检测系统中单个进程或用户建立的会话连接数异常的情况,这可能是恶意软件进行横向移动或数据窃取的迹象。
  • 不同程序共用相同套接字检测: 检测系统中不同进程使用相同套接字的情况,这可能是恶意软件绕过安全限制的手段。
  • 异常远程服务连接检测: 检测系统中进程连接到非正常远程服务的可疑情况,这些进程可能被用于执行恶意操作或下载恶意软件。
  • 异常 rawsocket 发包进程检测: 检测系统中使用 rawsocket 发送数据包的可疑进程,这些进程可能进行网络攻击或绕过防火墙。
  • 孤岛外连检测: 检测系统中单个进程建立的孤立外连情况,这可能是恶意软件进行隐蔽通信的迹象。
  • 外连 IP 域名命中威胁情报检测: 检测系统中进程连接到已知恶意 IP 地址或域名的可疑情况,这些进程可能被用于执行恶意操作或下载恶意软件。
  • dns 解析域名命中威胁情报检测: 检测系统中 DNS 解析请求指向已知恶意域名的可疑情况,这些进程可能被用于执行恶意操作或下载恶意软件。
  • 查看组件监听端口定位入侵点: 检测系统中组件监听的端口,这些端口可能被用于攻击或入侵系统。
  • tcpdump 抓包分析: 使用 tcpdump 工具捕获网络数据包并进行分析,例如检测异常流量、恶意协议等。
  • audit 审计 connect 系统调用: 通过审计 connect 系统调用来检测进程的网络连接行为,例如检测异常端口连接、域名解析等。

    function check_network() {
        echo "Checking network connections..."
        # 异常 SYN_SENT 数据包检测
        syn_sent_packets=$(netstat -an | grep SYN_SENT | grep -v "127.0.0.1" | more)
        if [[ -n $syn_sent_packets ]]; then
            echo "Abnormal SYN_SENT packets detected: $syn_sent_packets"
        fi

        # 会话连接数异常检测
        abnormal_connections=$(netstat -an | awk '{print$6}' | sort | uniq -c | awk '$1 > 10 {print$0}' | more)
        if [[ -n $abnormal_connections ]]; then
            echo "Abnormal number of session connections detected: $abnormal_connections"
        fi

        # ... 其他网络分析代码 ...
    }
     

3. 日志分析

日志分析主要用于检测系统中是否存在可疑的日志记录和行为,主要分析方法包括:

  • 常见安全相关关键字检测: 检测系统中日志文件中是否包含 “failed password”、“authentication failure” 等常见安全相关关键字,这些关键字可能指示系统受到攻击或存在安全漏洞。
  • bash 操作日志检测: 检测系统中 bash 命令操作日志,这些日志可能包含恶意命令或可疑行为。
  • 定时任务日志检测: 检测系统中定时任务日志,这些日志可能包含恶意定时任务或可疑行为。
  • 用户登录信息检测: 检测系统中用户登录日志,这些日志可能包含非法登录尝试或可疑用户行为。
  • 密码修改信息检测: 检测系统中密码修改日志,这些日志可能包含密码泄露或被篡改的情况。
  • secure 日志检测: 检测系统中 secure 日志,这些日志可能包含系统安全事件记录。
  • dmesg 日志检测: 检测系统中 dmesg 日志,这些日志可能包含系统硬件或驱动程序错误信息。
  • 组件日志检测: 检测系统中应用程序或服务组件日志,这些日志可能包含错误或异常行为信息。
  • 已安装安全检测工具日志检测: 检测系统中已安装安全检测工具的日志,这些日志可能包含安全警报或检测结果。
  • 数据库操作日志检测: 检测系统中数据库操作日志,这些日志可能包含 SQL 注入或数据泄露情况。
  • 堡垒机操作日志检测: 检测系统中堡垒机操作日志,这些日志可能包含非法登录尝试或可疑用户行为。
  • 防火墙日志检测: 检测系统中防火墙日志,这些日志可能包含网络攻击或入侵尝试信息。
  • 网络流量日志检测: 检测系统中网络流量日志,这些日志可能包含异常流量或恶意行为信息。
  • audit 审计日志检测: 检测系统中 audit 审计日志,这些日志可能包含系统安全事件记录。
  • 容器日志检测: 检测系统中容器日志,这些日志可能包含容器内部安全事件或异常行为信息。
  • function check_logs() {
        echo "Checking system and application logs..."
        # bash 操作日志检测
        bash_logs=$(grep -E "bash" /var/log/* | more)
        if [[ -n $bash_logs ]]; then
            echo "Bash operation logs detected: $bash_logs"
        fi

        # 定时任务日志检测
        cron_logs=$(grep -E "cron" /var/log/* | more)
        if [[ -n $cron_logs ]]; then
            echo "Cron task logs detected: $cron_logs"
        fi

        # ... 其他日志分析代码 ...
    }
     

4. 文件分析

文件分析主要用于检测系统中是否存在可疑的文件或目录,主要分析方法包括:

  • 高 CPU/MEM 占用文件检测: 检测系统中占用大量 CPU 或内存的文件,这些文件可能存在性能问题或被恶意软件利用。
  • 伪装内核文件检测: 检测系统中伪装成内核文件的恶意文件,这些文件可能试图隐藏其真实身份。
  • 隐藏路径文件检测: 检测系统中路径包含隐藏字符(如点号)的可疑文件,这些文件可能试图隐藏其位置。
  • 随机文件名检测: 检测系统中文件名包含随机字符串的可疑文件,这些文件可能试图隐藏其真实目的。
  • 带特征字符串文件检测: 检测系统中文件内容包含特定特征字符串(如 “scan”、“payload” 等)的可疑文件,这些文件可能涉及恶意行为。
  • 带恶意域名文件检测: 检测系统中文件内容包含已知恶意域名或 IP 地址的可疑文件,这些文件可能被用于与远程服务器通信或下载恶意软件。
  • 带可疑路径文件检测: 检测系统中文件路径包含特定可疑目录(如 “/tmp”、" /var/tmp/" 等)的可疑文件,这些文件可能试图在系统临时目录中执行恶意操作。
  • 样本分析: 对可疑文件进行内存转储、字符串分析、脱壳和反编译等操作,以提取文件特征和功能信息。
  • 利用现有检测工具: 使用现有的恶意软件检测工具和规则对可疑文件进行扫描和分析。

5. 其他功能

除了上述功能外,一些 Linux 安全检测工具还提供以下功能:

  • 容器分析: 检测容器镜像和容器内部是否存在恶意文件或配置。
  • 数据库分析: 检测数据库目录下是否存在加密文件或可疑操作。
  • 环境变量分析: 检测环境变量中是否存在恶意或可疑的值,例如路径篡改、注入恶意代码等。
  • 启动脚本分析: 检测系统启动脚本中是否存在恶意或可疑的命令或脚本,例如启动恶意程序、修改系统配置等。
  • 启动服务分析: 检测系统启动服务中是否存在恶意或可疑的服务,例如监听非法端口、执行恶意操作等。
  • 账号密码配置分析: 检测账号密码配置文件中是否存在恶意或可疑的配置,例如弱密码、默认密码、异常用户权限等。
  • 账号权限配置分析: 检测账号权限配置文件中是否存在恶意或可疑的配置,例如过度授权、异常用户组等。
  • 预加载库/动态链接器/动态链接库分析: 检测系统预加载库、动态链接器和动态链接库中是否存在恶意或可疑的库,例如注入恶意代码、修改系统函数等。
  • 内核模块分析: 检测系统中加载的内核模块中是否存在恶意或可疑的模块,例如 Rootkit、木马等。
  • 敏感目录下异常文件分析: 检测系统敏感目录(如 /etc、/bin、/sbin 等)下是否存在恶意或可疑的文件或目录,例如隐藏文件、异常脚本、临时文件等。

6. 选择合适的 Linux 安全检测工具

选择合适的 Linux 安全检测工具需要考虑以下因素:

  • 功能需求: 根据系统的安全需求选择功能全面或专注于特定安全领域的工具。
  • 性能影响: 选择性能开销较小的工具,避免对系统正常运行造成影响。
  • 易用性: 选择操作简单、易于理解的工具,方便用户使用和管理。
  • 更新频率: 选择更新频率较高的工具,及时获取最新的安全威胁信息和检测规则。
  • 社区支持: 选择社区活跃、支持完善的工具,方便获取帮助和解决使用过程中遇到的问题。

7. 总结

Linux 安全检测工具是保障 Linux 系统安全的重要工具,作者的脚本可以帮助用户及时发现和防范安全威胁。运行可发现绝大多数系统被入侵的迹象和僵尸恶意程序, 选择该工具并合理使用,可以有效提升 Linux 系统的安全性。有兴趣的网络安全工程师可以留言评论。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值