T
imestomping jest powszechną techniką, która odnosi się do zmiany sygnatur czasowych plików (czasu modyfikacji, dostępu, utworzenia i ostatniej zmiany) na systemie plików. Taktyka ta jest powszechnie wykorzystywana przez cyberprzestępców do ukrywania swoich narzędzi w systemie plików ofiary. Osiąga się to, sprawiając wrażenie, iż pliki zostały utworzone poza ramami czasowymi incydentu (znacznie wcześniej niż nastąpiło naruszenie systemu) lub naśladowania plików znajdujących się w tym samym folderze, gdzie nastąpiła infekcja. W ten sposób takie obce pliki będą trudniejsze do znalezienia lub całkowicie pominięte przez śledczych lub przez różne narzędzia do analizy.
W systemie Linux technikę tę można bardzo prosto przeprowadzić dzięki polecenia touch. Na przykład wydając polecenie:
Minusem tego podejścia jest to, iż nie jest w stanie zmodyfikować czasu zmiany (ang. change time). Jednak ten fakt możemy uzupełnić poprzez stosowne polecenia z poziomu debugfs:
agresor@darkstar:~$ touch -a -m -t 200001011103.09 elemelek.txt agresor@darkstar:~$ ls -al elemelek.txt -rw-r--r-- 1 agresor agresor 0 Jan 1 2000 elemelek.txt agresor@darkstar:~$ stat elemelek.txt File: elemelek.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fc01h/64513d Inode: 2519403 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1485/agresor) Gid: ( 1002/agresor) Access: 2000-01-01 11:03:09.000000000 +0100 Modify: 2000-01-01 11:03:09.000000000 +0100 Change: 2022-12-19 20:25:07.999231050 +0100 Birth: -Możemy także odwołać się do innego pliku jako odniesienie dla sygnatur czasu i zaktualizować je dla innego pliku, tak aby oba pliki zawierały ten sam czas:
agresor@darkstar:~$ touch wrobelek.txt -r elemelek.txt agresor@darkstar:~$ ls -al wrobelek.txt elemelek.txt -rw-r--r-- 1 agresor agresor 0 Jan 1 2000 elemelek.txt -rw-r--r-- 1 agresor agresor 0 Jan 1 2000 wrobelek.txtInnym podejściem jest modyfikacja daty systemowej, wgranie plików, a następnie przywrócenie poprawnej daty systemowej:
root@darkstar:~# timedatectl set-ntp 0 root@darkstar:~# timedatectl set-time '2000-02-01' root@darkstar:~# date Tue Feb 1 00:00:02 CET 2000 root@darkstar:~# touch elemelek.txt -rw-r--r-- 1 root root 0 Feb 1 2000 elemelek.txt root@darkstar:~# stat elemelek.txt File: elemelek.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fc01h/64513d Inode: 16000 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2000-02-01 00:00:35.508062549 +0100 Modify: 2000-02-01 00:00:35.508062549 +0100 Change: 2000-02-01 00:00:35.508062549 +0100 Birth: - root@darkstar:~# timedatectl set-ntp 1 root@darkstar:~# timedatectl Local time: Mon 2022-12-19 21:49:50 CET Universal time: Mon 2022-12-19 20:49:50 UTC RTC time: Mon 2022-12-19 20:49:51 Time zone: Europe/Warsaw (CET, +0100) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: noPodobne działanie jest używane w skrypcie timestomp.sh:
var=`find . -type f | shuf -n1` echo "$var" new=`stat -c "%z" "$var"` now=$(date) sudo date --set="$new" touch $1 -r "$var" sudo date --set="$now"Wykrywanie tego rodzaju technik przy dużej skali serwerów może generować dużo fałszywych alarmów, ponieważ opierają się one na nadużywaniu normalnych funkcji systemowych (tworzenie plików / ustawianie daty. Warto jednak mieć na uwadzę tego rodzaju zachowanie przy szukaniu powiązanych zdarzeń.
Więcej informacji: Indicator Removal: Timestomp, Detecting Linux Anti-Forensics: Timestomping