0x00 前情提要
在 alias 后门 | Linux 后门系列一文中,我们为了让后门完美一些,修改了后门文件的 atime、mtime,但是 ctime 一直没有办法修改,今天我们来把这一块补齐,让后门更加完美
atime -> access time, 访问时间
mtime -> modify time,修改时间
ctime -> change time, 状态变化时间
最新版 Linux 中多了一个属性,文件创建时间,在 Centos Stream 中叫做 created time,在 Ubuntu中叫 Birth time
0x01 ctime 简介
文件状态变化,ctime 就会变化,例如以下信息变化:
-
文件内容变化
-
文件属性变化
-
文件权限变化
-
...
也就是说我们手动修改 atime 或者 mtime 的时候, ctime 会自动更新为当前时间。ctime是随着改变而改变的
0x02 修改 ctime 的理论方法
由于ctime的特性,我觉得这个问题可以从三个角度去考虑
-
改变更新文件时间戳的应用运行状态
-
改变当前时间
-
改变展示系统时间戳的应用以及属性
1. 改变更新文件时间戳的应用运行状态
从字面意思看,我们可以找到维护Linux文件时间戳的应用,之后对应用本身进行修改,这听起来就是一个十分困难和危险的操作
简单一点,就是停止运行系统,通过较为底层的层面去修改目标文件的ctime,这应该是可行的,只要我们掌握足够的知识,但是不适合在APT场景中使用
2. 改变当前时间
系统的ctime 更改采用的时间是当前系统时间,那么也就是说如果把系统时间手动设置为 2008年1月1日,再对文件状态进行更改,那么最终留下的 ctime 就是 2008年1月1日的了
但是改变系统时间可不是一件小事,可能导致某些程序出现错误,所以需要有效的恢复手段
3. 改变展示系统时间戳的应用以及属性
一般大家都用 stat
来查看文件的完整时间戳,修改 stat 命令来改变展示的 ctime 不是一件难事
但是,可以获取文件 ctime 的应用不止 stat 一款,加上自行通过系统调用获取等。所以可以查看 stat 的源代码,看一下 stat 应用是如何获取和管理 ctime 的,针对其调用的方法进行系统性地修改应该也是可以实现修改文件 ctime 的
0x03 系统时钟与硬件时钟
Linux 时间系统分为系统时钟和硬件时钟,系统时钟存在于Linux 内核中,而硬件时钟存在于硬件主板上
从两种时钟的命名上可以看出,硬件时钟肯定是要比系统时钟更加持久,毕竟系统时钟系统关机就没了嘛
硬件时钟靠着BIOS电池供电,一直维持的一个时间,硬件都是按照这个时间来作为主要依据,每次开机会将计算机硬件时钟的时间的值作为系统时间
为了保证时间的准确性,操作系统一般会有时间同步的服务,也就是NTP服务,来让系统时间更加准确
详细知识可以查看鸟哥的网站
http://cn.linux.vbird.org/linux_server/0440ntp.php
查看系统时钟
date
查看硬件时钟
sudo hwclock --show