πŸ•ΈοΈ CGNAT & IP Attribution β€” Carrier-Grade NAT, Logging, dan Dampaknya terhadap Forensik Jaringan

Hubungan ke Vault

Note ini membahas Layer 3 (Network) dari network-security. CGNAT adalah mekanisme ISP-level NAT yang mengaburkan identitas pengguna individu β€” tantangan utama dalam attribution forensik. Relevan dengan ids-ips-waf-nsm-comparison karena logging CGN adalah data source penting untuk NSM (Network Security Monitoring). Untuk contoh incident attribution di Layer 2, lihat arp-spoofing-incident-addendum.


Daftar Isi


1. Pendahuluan: Apa itu CGNAT?

Carrier-Grade NAT (CGNAT), juga dikenal sebagai NAT444 atau Large Scale NAT (LSN), adalah mekanisme network address translation yang diimplementasikan oleh ISP (Internet Service Provider) di level infrastruktur mereka. Tujuannya: memungkinkan ribuan pelanggan berbagi satu alamat IPv4 publik.

1.1 Mengapa CGNAT Ada?

IPv4 Address Exhaustion β€” Fakta:
 
- Pool IPv4: ~4,3 miliar alamat
- Populasi dunia: ~8+ miliar
- Perangkat terhubung: ~30+ miliar (IoT, smartphone, laptop, server)
- IANA menghabiskan pool terakhir: 3 Februari 2011
- APNIC (Asia-Pasifik): habis April 2011
- RIPE (Eropa): habis November 2019
- LACNIC (Amerika Latin): habis 2020
- AFRINIC: masih punya sisa kecil (~2025-2026 diperkirakan habis)
 
β†’ Solusi ISP: CGNAT + IPv6 deployment paralel

1.2 Arsitektur Dasar CGNAT (NAT444)

Traditional NAT (NAT44):
Pelanggan β†’ [CPE Router NAT] β†’ Internet (1:1 IP publik:pelanggan)
 
CGNAT (NAT444):
Pelanggan β†’ [CPE Router NAT] β†’ [CGN Gateway ISP] β†’ Internet
                                          ↑
                                   100.64.0.0/10 (RFC 6598)
                                      Shared IP Pool
 
Perbedaan utama:
- Tidak ada IP publik unik per pelanggan
- ISP menggunakan Shared Address Space 100.64.0.0/10 (RFC 6598)
- Logging terjadi di CGN Gateway β€” BUKAN di CPE router user

1.3 RFC yang Relevan

RFCJudulRelevansi ke CGNAT
RFC 1631The IP Network Address Translator (NAT)Origin NAT β€” dasar dari semua NAT
RFC 3022Traditional IP Network Address TranslatorNAT44 β€” NAT tradisional, pendahulu CGNAT
RFC 2663IP Network Address Translator TerminologyTerminologi: masquerade, binding, session
RFC 4787NAT Behavioral Requirements for UDPWajib dibaca untuk understanding NAT traversal
RFC 5382NAT Behavioral Requirements for TCPSama, untuk TCP β€” termasuk security implications
RFC 5508NAT Behavioral Requirements for ICMPICMP melalui NAT β€” penting untuk troubleshooting
RFC 6598IANA-Reserved IPv4 Prefix for Shared Address SpaceDefinisi 100.64.0.0/10 β€” ruang alamat CGNAT
RFC 6888Common Requirements for Carrier-Grade NATsSpesifikasi inti CGNAT β€” logging, port allocation, thresholds
RFC 7422Deterministic Address Mapping to Reduce LoggingAlternatif: mapping deterministik kurangi kebutuhan log
RFC 7596Lightweight 4over6: DS-LiteTransisi IPv6 with CGNAT element
RFC 7597Mapping of Address and Port (MAP-E)Alternatif CGNAT: encapsulation-based
RFC 7599Mapping of Address and Port using Translation (MAP-T)Alternatif CGNAT: translation-based

Kritis untuk Forensik

RFC 6888 Section 14 secara eksplisit menyatakan bahwa CGNAT harus menyediakan mekanisme logging untuk mendukung law enforcement. Ini bukan fitur opsional β€” ini adalah requirement dari standar IETF.


2. Perbandingan: CGNAT vs Traditional NAT vs IPv6

2.1 Tabel Perbandingan

AspekTraditional NAT (NAT44)CGNAT (NAT444)Native IPv6
LokasiCPE Router (rumah/kantor)CGN Gateway (infrastruktur ISP)End-to-end, no NAT
IP Publik per Pelanggan1:1 β€” satu IP penuhN:1 β€” ribuan user share satu IP1:1 atau lebih β€” setiap device punya alamat unik
Address SpacePrivate (RFC 1918) β†’ PublicPrivate β†’ 100.64.0.0/10 β†’ Public2000::/3 Global Unicast
Pool Size per GatewaySingle public IP/32 hingga /24 (~1-256 IP)Tak terbatas praktis
Port Limit per Customer~65.535 total (teoretis)Dibatasi per subscriber (RFC 6888: 2.000-8.000 port minimum)Tidak ada limit
Logging RequirementOpsional (jarang)Wajib (RFC 6888) untuk law enforcementTidak diperlukan
Application ImpactMinimal (NAT traversal sudah umum)Signifikan β€” P2P, VoIP, gaming, VPN bermasalahIdeal β€” no NAT issues
TraceabilityLangsung: IP publik = satu pelangganKompleks: butuh log ISP + timestamp sinkronLangsung: IP unik per device
DeploymentUniversal (setiap router)ISP Tier 1-3, mobile operators~35-45% global adoption (2025)
Latency Overhead~0,1-0,5ms (negligible)~1-5ms (extra hop)0ms (no translation)

2.2 Visual: Perbedaan Arsitektur

TRADITIONAL NAT (NAT44):
                         CPE Router
User A ──── 192.168.1.0/24 ────→ [NAT] ──── 203.0.113.1 ────→ Internet
                                                              (Unique IP)
User B ──── 192.168.2.0/24 ────→ [NAT] ──── 203.0.113.2 ────→ Internet
                                                              (Unique IP)
Logging: CPE mau-log atau tidak. ISP tidak punya visibility.
Attribution: IP publik β†’ satu rumah langsung.
 
 
CGNAT (NAT444):
                        CPE Router              CGN Gateway
User A ──── 192.168.1.0/24 ────→ [NAT] ──── 100.64.1.100 ────→ [CGN] ────→ Internet
                        CPE Router              β”‚              203.0.113.10
User B ──── 192.168.2.0/24 ────→ [NAT] ──── 100.64.1.200 ────→ [CGN] ────→ Internet
                                                β”‚
                                               CGNAT Logging:
                                                - Timestamp
                                                - Private IP:Port
                                                - Public IP:Port
                                                - Subscriber ID
                                                - NAT Session ID
 
Logging: WAJIB di CGN Gateway.
Attribution: IP publik saja TIDAK CUKUP. Butuh log CGN + 5-tuple.
 
 
NATIVE IPv6:
                                 No NAT
User A device ──── 2001:db8:1::a1 ────→ Internet
User B device ──── 2001:db8:2::b2 ────→ Internet
 
Logging: Tidak diperlukan untuk attribution.
Attribution: IP langsung = device spesifik.

2.3 Kenapa ISP Memilih CGNAT daripada IPv6 Saja?

Hambatan Adopsi IPv6:
 
1. Legacy Infrastructure:
   - Banyak CPE router lawas tidak support IPv6 dengan baik
   - ISP OSS/BSS system (billing, provisioning) belum siap IPv6
   - Content provider masih IPv4-only (long tail)
 
2. Cost & Complexity:
   - Migrasi IPv6 = investasi besar (hardware, training, testing)
   - Dual-stack = double routing table, double management overhead
   - CGNAT = "tambal ban" yang lebih murah dan cepat
 
3. Content Availability:
   - Β± 35-40% dari Alexa Top 1000 masih IPv4-reachable only
   - CDN dan cloud provider sudah IPv6-ready β†’ tapi long tail belum
 
β†’ Realita: CGNAT adalah solusi transisi yang menjadi permanen.
β†’ Banyak ISP Asia-Pasifik, Afrika, dan Amerika Latin 100% CGNAT.

3. Mekanisme Logging CGN

3.1 Arsitektur Logging CGNAT

[CPE Router]
    β”‚  β”Œβ”€β”€β”€ Syslog / RADIUS ───┐
    β–Ό  β–Ό                        β”‚
[CGN Gateway] ──── IPFIX/NetFlow ────→ [Central Log Collector]
    β”‚                                     β”‚ ELK / Splunk / custom
    β”‚  β”Œβ”€β”€β”€ Accounting Data ───┐          β”‚
    β–Ό  β–Ό                       β–Ό          β–Ό
[RADIUS Server]            [Syslog-ng/rsyslog]
    β”‚                          β”‚
    β–Ό                          β–Ό
[Billing DB]             [CGNAT Log DB]
                             β”‚
                             β–Ό
                    [Query Interface β€” API/CLI]
                         ↑ Untuk: Law Enforcement,
                           Incident Responder, Abuse Desk

3.2 Teknik Port Block Allocation (RFC 6888 Section 8)

CGNAT tidak mengalokasikan port secara acak. Ada beberapa strategi:

A. Random Port Allocation (default most CGNAT):
   - Setiap session baru diberi port acak dari pool
   - Logging: SETIAP session harus di-log
   - Kelebihan: sulit ditebak, fair sharing
   - Kekurangan: log volume BESAR (milyaran row/hari untuk ISP besar)
 
B. Port Block Allocation (Deterministic β€” RFC 7422):
   - Setiap pelanggan mendapat blok port tetap: misal 1024-2047
   - Mapping: subscriber_id β†’ port_range β†’ public_ip
   - Logging: cukup log alokasi blok (bukan per session)
   - Penghematan log: 99,9% lebih kecil dari random allocation
   - Kelemahan: predictable β€” attacker bisa spoof port range
 
C. Hybrid:
   - Blok port dialokasikan, tapi port dalam blok dipakai acak
   - Logging: alokasi blok + sampling session
   - Trade-off antara traceability dan privacy
 
Contoh Port Block per Subscriber:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  CGN Public IP: 203.0.113.10  (pool size: 1 IP)     β”‚
β”‚                                                      β”‚
β”‚  Subscriber A β†’ port block: 1024-3071  (2048 port)   β”‚
β”‚  Subscriber B β†’ port block: 3072-5119  (2048 port)   β”‚
β”‚  Subscriber C β†’ port block: 5120-7167  (2048 port)   β”‚
β”‚  Subscriber D β†’ port block: 7168-9215  (2048 port)   β”‚
β”‚  ...                                                  β”‚
β”‚  Total: ~32 subscriber per IP (@ 2048 port/sub)       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3.3 Log Entry CGNAT β€” Field Minimal (RFC 6888 Section 14)

RFC 6888 mensyaratkan log minimal berisi:

FieldContohDeskripsi
Timestamp2025-07-02T14:30:00.123ZWaktu session NAT dibuat (wajib UTC+NTP sync)
ProtocolTCP=6, UDP=17, ICMP=1L4 protocol (IP protocol number)
Inside (Private) IP100.64.1.100IP asli pelanggan di CGN space (RFC 6598)
Inside Port34512Source port asli dari pelanggan
Outside (Public) IP203.0.113.10IP publik yang dishare
Outside Port1024Port publik yang dialokasikan
Remote IP198.51.100.20IP tujuan eksternal (destination)
Remote Port443Port tujuan eksternal
Subscriber Identifieruser@isp.com / PPPoE session IDIdentitas pelanggan dari RADIUS/AAA

3.4 Cara Kerja 5-Tuple Binding di CGNAT

5-Tuple = {Source IP, Source Port, Dest IP, Dest Port, Protocol}
 
CGNAT Translation Process:
 
1. User (100.64.1.100:34512) β†’ Request ke server (198.51.100.20:443)
2. CGNAT Gateway terima:
   - Inside: {100.64.1.100, 34512, 198.51.100.20, 443, TCP}
3. CGNAT buat binding:
   - Outside: {203.0.113.10, 1024, 198.51.100.20, 443, TCP}
   - Simpan di session table (5-tuple mapping)
4. Buat log entry:
   - Timestamp: T1
   - Inside: 100.64.1.100:34512
   - Outside: 203.0.113.10:1024
   - Remote: 198.51.100.20:443
   - Subscriber: USER-A
5. Forward paket ke internet dengan source {203.0.113.10:1024}
6. Response balik ke 203.0.113.10:1024 β†’ CGNAT lookup session table
   β†’ Forward ke 100.64.1.100:34512
7. Saat session berakhir (FIN / timeout) β†’ optional END log
 
PENTING:
- 5-tuple harus UNIK dalam satu waktu di CGNAT
- Konflik port dicegah: jika port sudah dipakai, pilih port lain
- Total concurrent session per CGNAT gateway: jutaan
- Session timeout: TCP=~5 menit (idle), UDP=~2 menit (RFC 4787)

3.5 Sumber Logging Lain

Selain CGNAT Gateway sendiri, ada sumber data tambahan:

Sumber DataProtokol/FormatData yang DihasilkanDigunakan Untuk
RADIUS AccountingRADIUS (RFC 2866)PPPoE session start/stop, IP assignment, username, framing IP, session ID, NAS-IP-Address, Acct-Input/Output-OctetsKorelasi subscriber identity dengan CGN inside IP
DHCP Lease LogSyslogMAC β†’ IP binding, lease time, hostname, Option 82 (circuit ID, remote ID)Menentukan perangkat spesifik dalam satu rumah
PPPoE Session LogSyslogUsername, session ID, access concentrator, physical portKorreksi subscriber yang pindah CPE atau reconnect
Syslog dari CGN DeviceSyslog / RFC 5424NAT session create/delete, resource exhaustion, threshold crossingMonitoring CGN health, forensik tambahan
IPFIX / NetFlow v9/v10IPFIX (RFC 7011) / NetFlowFlow record lengkap: 5-tuple, bytes, packets, start/end time, TCP flagsThreat hunting detail, traffic analysis
CGNAT Connection Table DumpCLI/API per vendorCurrent session snapshot (bukan historis)Live forensik β€” cek siapa yang pakai port tertentu sekarang

4. Logging Compliance & Regulasi

4.1 Perbandingan Regulasi Global

RegulasiYurisdiksiPersyaratan Logging CGNATRetentionSanksi
GDPR + NGI (E-Privacy Directive / eIDAS)Uni EropaData retention directive: ISP wajib simpan log koneksi (termasuk CGNAT) minimal 6-12 bulan. Harus bisa korelasi IP β†’ subscriber atas permintaan otoritas.6-12 bulanDenda hingga €20 juta atau 4% revenue global
FCC CPNI (47 CFR Β§64.2001-2011)Amerika SerikatCustomer Proprietary Network Information protection. ISP boleh log untuk law enforcement. CALEA (Communications Assistance for Law Enforcement Act) β€” wajib provide intercept capability.Variatif per stateFCC fine, revoke license
UU ITE + Permenkominfo No. 12/2016IndonesiaPasal 15 UU ITE: penyelenggara jasa telekomunikasi wajib menyimpan data komunikasi (termasuk IP assignment log) minimal 1 tahun. Permenkominfo 12/2016: logging wajib untuk antisipasi kejahatan siber.Minimal 1 tahunPidana penjara, denda, pencabutan izin
Anti-Cybercrime LawGlobal (ITU model)Logging subscriber activity, IP assignment, timestamp for 6 months minimumVariabel per negaraAdministrative/criminal
Data Retention Directivebeberapa negara EU (sisa)Setelah Schrems II dan kasus Tele2 Sverige, beberapa negara tetap pertahankan data retention untuk law enforcement6-24 bulanConstitutional challenge (beberapa dibatalkan)

4.2 Implikasi GDPR Terhadap Logging CGNAT

TENSION: CGNAT Logging vs GDPR
 
GDPR Prinsip yang Terdampak:
β”œβ”€β”€ Art. 5(1)(c) β€” Data Minimisation
β”‚   └── Apakah logging SETIAP session NAT diperlukan?
β”‚       ⟢ RFC 6888 bilang iya. GDPR bilang "cukup yang perlu."
β”‚       ⟢ Solusi: Port Block Allocation (RFC 7422) β€” log hanya alokasi blok
β”‚
β”œβ”€β”€ Art. 5(1)(e) β€” Storage Limitation
β”‚   └── Berapa lama log CGNAT disimpan?
β”‚       ⟢ Umum 90 hari β€” 1 tahun (kompromi forensik vs privacy)
β”‚       ⟢ Permenkominfo: 1 tahun minimal
β”‚       ⟢ GDPR: harus ada justification β€” "legitimate interest" atau "legal obligation"
β”‚
β”œβ”€β”€ Art. 17 β€” Right to Erasure
β”‚   └── Pelanggan minta hapus data CGNAT log-nya?
β”‚       ⟢ Ditolak dengan dasar "legal obligation to retain"
β”‚       ⟢ Tapi harus ada retention policy yang jelas dan transparan
β”‚
└── Art. 5(2) β€” Accountability
    └── ISP harus bisa buktikan bahwa logging mereka:
        ⟢ Proporsional
        ⟢ Terbatas pada yang diperlukan
        ⟢ Diamankan dengan akses kontrol ketat

4.3 Regulasi Indonesia β€” Detail

RegulasiPasalIsi Relevan
UU 19/2016 (Perubahan UU ITE)Pasal 15Penyelenggara sistem elektronik wajib rekam dan simpan data transaksi minimal 5 tahun β€” BUKAN untuk CGNAT spesifik
UU 36/1999 TelekomunikasiPasal 31Operator wajib jaga kerahasiaan informasi pelanggan (tapi pengecualian untuk penegakan hukum)
Permenkominfo 12/2016Pasal 7, 8, 9Wajib log aktivitas pengguna termasuk IP assignment, timestamp, dan user identifier. Retention minimal 1 tahun
Permenkominfo 10/2017β€”Tata cara pemeriksaan sistem elektronik β€” termasuk permintaan data ke operator
UU ITE 2024 (revisi terbaru)Pasal 40Akses terhadap informasi elektronik untuk penegakan hukum β€” termasuk data komunikasi
PP 71/2019β€”Penyelenggaraan Sistem dan Transaksi Elektronik β€” perlindungan data pribadi

Catatan Praktisi

Di Indonesia, hampir semua ISP besar (Telkom, Indihome, First Media, MyRepublic, Biznet) menggunakan CGNAT untuk pelanggan rumah tangga. Attribution tanpa log CGNAT dari ISP hampir tidak mungkin di jaringan ini.


5. Attribution Challenges

5.1 Masalah Inti: Satu IP, Banyak User

Masalah Utama:
- Satu IP publik (203.0.113.10) bisa melayani 32-64 pelanggan
- Dalam 1 jam, ada ribuan concurrent session dari IP yang sama
- Port rotation membuat mapping stateless dari IP saja tidak berguna
- Waktu adalah dimensi kritis β€” "pukul berapa" sama pentingnya dengan "dari IP mana"
 
Ilustrasi:
203.0.113.10:1024  ─── Subscriber A ─── browsing, email, social media
203.0.113.10:3072  ─── Subscriber B ─── streaming Netflix
203.0.113.10:5120  ─── Subscriber C ─── torrenting
203.0.113.10:7168  ─── Subscriber D ─── mengakses situs ilegal
 
β†’ Dari IP publik saja: EMPAT user berbeda, SATU IP.
β†’ Bedanya: source port dan timestamp.
β†’ Tanpa log CGN: TIDAK BISA dibedakan.

5.2 Time-Based Correlation β€” Kompleksitas

Faktor yang Membuat Korelasi Waktu Sulit:
 
1. Clock Skew:
   - CGN Gateway, server target, dan log collector punya jam berbeda
   - Beda beberapa detik bisa menyebabkan salah attribution
   - Solusi: NTP sync dengan stratum yang sama
 
2. NAT Session Timeout:
   - Session TCP idle 5 menit β†’ log END bisa telat
   - UDP session lebih pendek β†’ mapping bisa hilang
   - Jika attacker cepat: session sudah selesai sebelum log tercatat
 
3. Concurrent Sessions:
   - Satu user bisa buka 50+ koneksi simultan
   - Membedakan mana koneksi "jahat" dari yang normal butuh pattern analysis
 
4. Port Randomization:
   - Random port allocation: tidak ada konsistensi port per user
   - Setiap session baru = port baru
   - Tidak bisa korelasi via port saja tanpa log
 
Contoh Kasus:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Waktu: 14:30:00.000 - 14:30:00.500                          β”‚
β”‚ Public: 203.0.113.10:2048 β†’ 198.51.100.1:443 (HTTPS bank)  β”‚
β”‚ Public: 203.0.113.10:2049 β†’ 198.51.100.2:80 (HTTP forum)   β”‚
β”‚ Public: 203.0.113.10:2050 β†’ 198.51.100.3:22 (SSH)          β”‚
β”‚                                                              β”‚
β”‚ Dua skenario:                                                β”‚
β”‚ A) Tiga koneksi = SATU user browsing web                     β”‚
β”‚ B) Tiga koneksi = TIGA user berbeda (CGNAT share)            β”‚
β”‚                                                              β”‚
β”‚ ⟢ Hanya CGNAT LOG yang bisa membedakan A vs B.              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5.3 ISP Cooperation Latency

Proses Attribution via ISP β€” Timeline Realistis:
 
T+0    β€” Incident detected (log dari server korban/third-party)
T+30m  β€” Analis forensik ekstrak 5-tuple: 203.0.113.10:34567 β†’ target:80
T+1h   β€” Permintaan resmi ke ISP (email/telepon/portal abuse)
T+4h   β€” ISP terima request, buka ticket internal
T+8h   β€” Tim NOC ISP cari log CGNAT (bisa lebih lama jika:
         - Ada beberapa CGN gateway
         - Log distributed di berbagai server
         - Rotasi log harian/mingguan
         )
T+12h  β€” Log ditemukan: subscriber ID = user@domain
T+18h  β€” RADIUS accounting: subscriber β†’ nama pelanggan β†’ alamat
T+24h  β€” Informasi diberikan ke peminta (jika sesuai regulasi)
T+48h+ β€” Jika waktu kejadian seminggu lalu: log mungkin sudah di-rotate
         Jika tidak ada: atribusi gagal total.
 
β†’ Latency tipikal: 6-24 jam untuk ISP yang siap (EU, US, JP).
β†’ Latency Indonesia: variatif β€” ada yang 2-3 hari.
β†’ Selama itu: attacker sudah move, IP bisa reuse.

5.4 CGNAT Case: Skenario Attribution Gagal

SCENARIO: Serangan DDoS dari Jaringan CGNAT
 
Korban menerima DDoS dari IP publik 203.0.113.50.
 
Analisis:
1. 203.0.113.50:34512 β†’ SYN flood ke korban port 80
2. 203.0.113.50:34513 β†’ SYN flood
3. 203.0.113.50:34514 β†’ SYN flood
4. ... (ribuan port dari IP yang sama)
 
Masalah:
- 203.0.113.50 adalah IP CGNAT β€” milik 50+ pelanggan
- Semua port = dari pelanggan yang SAMA atau BEDA?
- Jika botnet: masing-masing port bisa dari device berbeda
- Jika single attacker: satu komputer, tapi port random
 
Solusi:
- CGNAT log: cek inside IP dari masing-masing port
- Jika semua port β†’ 100.64.5.10 (satu inside IP) β†’ satu komputer
- Jika port134512β†’100.64.5.10, port34513β†’100.64.5.11 β†’ duakomputerberbeda
- Tapi: 100.64.5.10 dan 100.64.5.11 masih bisa dari rumah berbeda
- Butuh RADIUS log: subscriber identity masing-masing inside IP
 
β†’ Attribution gagal jika:
- Log sudah di-rotasi (>90 hari)
- RADIUS accounting tidak matching
- Subscriber menggunakan VPN/Tor di atas CGNAT

6. Mapping CGNAT Logs

6.1 Anatomi Log CGNAT β€” Format Vendor Berbeda

Format CGNAT Log β€” Cisco ASR 1000 Series (Syslog):
<134>2025-07-02T14:30:00.123Z CGN-GW-01: %CGNAT-6-SESSION: NAT
  inside=100.64.1.100:34512
  outside=203.0.113.10:1024
  remote=198.51.100.20:443
  protocol=TCP(6)
  subscriber=USER-A@telkom.net.id
  session-id=0x8A3F2C1B
  flags=NEW
 
Format CGNAT Log β€” Juniper MX Series (Syslog):
<14>Jul 2 14:30:00 CGN-GW-02 cgnat[1234]:
  CGNAT_SESSION_CREATE:
  subscriber="user-a@isp.net",
  inside_addr=100.64.1.100,
  inside_port=34512,
  outside_addr=203.0.113.10,
  outside_port=1024,
  remote_addr=198.51.100.20,
  remote_port=443,
  proto=6,
  nat_rule=CGN-POOL-01
 
Format CGNAT Log β€” Nokia/Alcatel-Lucent 7750 SR (Syslog):
<133>2025-07-02T14:30:00.123Z SR-01 LSN[5678]:
  LargeScaleNAT: Session Event
  Sub = "pppoe:user-a@telkom"
  Inside = 100.64.1.100:34512
  Outside = 203.0.113.10:1024
  Remote = 198.51.100.20:443
  Protocol = TCP
  Direction = Forward
  Policy = LSN_POLICY_1
 
Format IPFIX Record (Template-based, binary):
+---------+-----------+----------+-----------+----------+---------+----------+
| SRC_IP  | SRC_PORT  | DST_IP   | DST_PORT  | PROTOCOL | BYTES   | PACKETS  |
+---------+-----------+----------+-----------+----------+---------+----------+
| 100.64. | 34512     | 198.51.  | 443       | 6 (TCP)  | 1042    | 12       |
| 1.100   |           | 100.20   |           |          |         |          |
+---------+-----------+----------+-----------+----------+---------+----------+
| 203.0.  | 1024      | 198.51.  | 443       | 6 (TCP)  | 1042    | 12       |
| 113.10  |           | 100.20   |           |          |         |          |
+---------+-----------+----------+-----------+----------+---------+----------+

6.2 Proses Mapping β€” Dari IP Publik ke Individu

Chain of Attribution:
 
Langkah 1: Korban/Server mencatat IP publik
    ⟢ 203.0.113.10:1024 β†’ 198.51.100.20:443  (Timestamp T1)
 
Langkah 2: Cari di CGNAT Log
    Query: WHERE outside_ip='203.0.113.10'
           AND outside_port='1024'
           AND timestamp β‰ˆ T1 (Β± tolerance)
 
    Result: inside_ip='100.64.1.100'
            subscriber='USER-A@telkom.net.id'
            private_port='34512'
 
Langkah 3: Cari di RADIUS Accounting
    Query: WHERE framed_ip='100.64.1.100'
           AND acct_start <= T1
           AND acct_stop β‰₯ T1 OR acct_stop IS NULL
 
    Result: username='USER-A'
            calling_station_id='AA:BB:CC:DD:EE:FF'
            nas_port='Gi0/1/0:123'
            circuit_id='RT01-OLT02-PON1-ONU5'
 
Langkah 4: Cari di Database Pelanggan
    Query: WHERE username='USER-A'
           OR mac_address='AA:BB:CC:DD:EE:FF'
 
    Result: Nama = "Budi Santoso"
            Alamat = "Jl. Merdeka No. 42, Jakarta"
            ID Pelanggan = "TEL-12345678"
            Status = "Active β€” Fiber 50Mbps"
 
Langkah 5: Verifikasi (jika perlu)
    - Apakah ada pelanggan lain di IP yang sama pada T1?
    - Apakah ada anomaly di log yang bisa invalidate korelasi?
    - Cross-check dengan DHCP log untuk device spesifik
 
β†’ Hasil: IP publik + source port + timestamp β†’ Identitas pelanggan
β†’ Confidence: Tinggi (jika log CGN lengkap dan akurat)

6.3 Tantangan Implementasi Log Join

Masalah yang Sering Muncul saat Join CGNAT Log + RADIUS:
 
Γ— Time mismatch: CGNAT log pakai UTC, RADIUS pakai local time +7
Γ— IP reuse: 100.64.1.100 bisa dipakai user A pagi, user B sore
Γ— Subscriber ID tidak konsisten: "USER-A" vs "user-a@telkom.net.id" vs "TEL-12345678"
Γ— RADIUS session overlap: user reconnect sebelum session lama timeout
Γ— Log loss: CGNAT gateway overload β†’ drop log packet (syslog UDP)
Γ— CGNAT pool rotation: IP publik berganti karena pool tired
Γ— NAT keepalive: koneksi idle tetap di table β†’ log create tanpa matching log end
Γ— Multi-vendor: format log berbeda antara CGN tier 1 dan tier 2
 
Best Practice:
β”œβ”€β”€ NTP sync semua device ke source yang sama (ntp.isp.net)
β”œβ”€β”€ Subscriber ID format standar: username@realm (dari RADIUS)
β”œβ”€β”€ Syslog over TCP/TLS (RFC 5425, 5426) β€” jangan UDP untuk critical log
β”œβ”€β”€ Log buffer di CGN device β†’ kirim ke collector secara reliable
β”œβ”€β”€ Correlation ID yang join CGNAT + RADIUS + DHCP (session-id yang sama)
└── Retention policy yang align dengan regulasi (min 1 tahun untuk Indonesia)

6.4 Query Manual β€” Contoh Pencarian Attribution

Skenario: Anda adalah analis forensik. Ada serangan dari 203.0.113.10:2048
ke server korban pada 2025-07-02 pukul 14:30:00 UTC.
 
Query di Log Collector (ELK/Splunk β€” pseudo):
 
# Langkah 1: Cari di CGNAT log
index=cgnat_logs
outside_ip="203.0.113.10"
outside_port="2048"
timestamp>="2025-07-02T14:29:55Z" AND timestamp<="2025-07-02T14:30:05Z"
| table timestamp, inside_ip, inside_port, subscriber_id, remote_ip, remote_port
 
# Result:
# 14:30:00.100 | 100.64.1.100 | 34512 | USER-A | 198.51.100.20 | 443
# 14:30:00.150 | 100.64.1.100 | 34513 | USER-A | 198.51.100.20 | 443
 
# Langkah 2: Verifikasi tidak ada overlap
index=cgnat_logs
outside_ip="203.0.113.10"
timestamp>="2025-07-02T14:29:00Z" AND timestamp<="2025-07-02T14:31:00Z"
| stats count by inside_ip
| sort -count
 
# Result:
# 100.64.1.100 β†’ 142 sessions
# 100.64.1.150 β†’ 5 sessions (beda user, sama IP publik)
 
# Langkah 3: Cari subscriber detail di RADIUS
index=radius_accounting
framed_ip="100.64.1.100"
timestamp>="2025-07-02T00:00:00Z" AND timestamp<="2025-07-02T23:59:59Z"
| table username, acct_start, acct_stop, calling_station_id, nas_port
 
# Result:
# USER-A | 2025-07-02T06:00:00Z | 2025-07-02T23:00:00Z | AA:BB:CC:DD:EE:FF | Gi0/1/0:123
# (Active session covers 14:30 UTC β†’ confirmed)

7. Tools & Data Sources

7.1 Perbandingan Tools untuk Analisis CGNAT Log

ToolFungsiData SourceKelebihanKekurangan
ELK Stack (Elasticsearch + Logstash + Kibana)Centralized log search + dashboardSyslog CGNAT, IPFIX, RADIUSQuery cepat, visualisasi, scale horizontalResource heavy, butuh dedicated team
SplunkLog aggregation + SIEMSemua logEnterprise-grade, correlation search, alertingMahal (license per GB/day)
SILK (SiLK β€” System for Internet-Level Knowledge)NetFlow/IPFIX analysisFlow data dari routerEfisien, billion-record scale, command-line, open sourceTidak bisa baca syslog, flow-only
flow-tools (flow-capture, flow-print)Legacy NetFlow collectorNetFlow v5/v9Ringan, stabil, matureTidak support CGNAT-specific fields, outdated
nfdump / nfsenNetFlow analysisNetFlow v5/v9/v10, IPFIXnfdump cepat filtering, nfsen punya web UITidak handle syslog format
Logstash + filter CGNATParse syslog CGNAT ke structuredSyslog dari berbagai vendorCustom parsing fleksibel, grok filterButuh konfigurasi manual per vendor
Custom Python/Go scriptQuery CGNAT log + join RADIUSFlat file atau API CGN loggerFull control, bisa handle format non-standarMaintenance burden, no built-in dashboard
Grafana + LokiLog aggregation + visualisasiSyslog (via Promtail)Lebih ringan dari ELK, grafana dashboardQuery tidak sekuat Elasticsearch
Wireshark / tsharkPacket-level analysisPCAP dari mirror port CGNDetil maksimalTidak scalable untuk jutaan session
Zeek (dengan CGNAT plugin)Network monitoring + structured loggingTraffic dari mirror portLog terstruktur otomatisTidak inline, perlu span port

7.2 Arsitektur Referensi β€” Centralized Log Collector

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚          CGNAT Gateways               β”‚
                    β”‚  [Cisco ASR1K] [Juniper MX] [Nokia]   β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚              β”‚
                    Syslog TCP β”˜              └── IPFIX/NetFlow v9
                               β”‚              β”‚
                               β–Ό              β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚         Log Collector Layer           β”‚
                    β”‚  [rsyslog] [syslog-ng] [nfcapd]       β”‚
                    β”‚  β†’ Buffer: Kafka / Redis              β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚       Processing / Parsing Layer       β”‚
                    β”‚  Logstash / Vector / Fluentd           β”‚
                    β”‚  β†’ Grok filter CGNAT                   β”‚
                    β”‚  β†’ Normalize ke unified schema         β”‚
                    β”‚  β†’ Enrich dengan RADIUS data           β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚        Storage / Indexing Layer        β”‚
                    β”‚  Elasticsearch / Loki / ClickHouse     β”‚
                    β”‚  β†’ Index: timestamp, IP, port, sub ID  β”‚
                    β”‚  β†’ Retention: hot 30d, warm 90d,       β”‚
                    β”‚    cold archive 1yr+                   β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚        Query / Visualization           β”‚
                    β”‚  Kibana / Grafana / custom API         β”‚
                    β”‚  β†’ Dashboard monitoring CGNAT          β”‚
                    β”‚  β†’ Incident Response search            β”‚
                    β”‚  β†’ Law enforcement query portal        β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚      RADIUS / AAA Integration          β”‚
                    β”‚  [RADIUS Server]                       β”‚
                    β”‚  β†’ Accounting data sync                β”‚
                    β”‚  β†’ Subscriber identity lookup          β”‚
                    β”‚  β†’ MAC β†’ username β†’ pelanggan          β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

7.3 Informasi yang Diekstrak dari NetFlow/IPFIX untuk CGNAT

IPFIX adalah evolusi NetFlow v9 yang bisa membawa field spesifik CGNAT:

IPFIX Field IDField NameTipeDeskripsi CGNAT
8sourceIPv4AddressIPv4Inside IP (100.64.x.x)
12destinationIPv4AddressIPv4Remote server IP
7sourceTransportPortuint16Inside source port
11destinationTransportPortuint16Remote port
4protocolIdentifieruint8TCP/UDP/ICMP
2packetDeltaCountuint64Paket dalam flow
1octetDeltaCountuint64Bytes dalam flow
152flowStartSecondstimestampSession start
153flowEndSecondstimestampSession end
346natInsideSrcAddrIPv4Post-NAT private IP (CGN specific)
347natInsideSrcPortuint16Post-NAT private port
348natOutsideSrcAddrIPv4Pre-NAT public IP (yang dishare)
349natOutsideSrcPortuint16Pre-NAT public port
350natInsideDstAddrIPv4Post-NAT private dest (jarang)
351natInsideDstPortuint16Post-NAT private dest port
384subscriberIdstringSubscriber identity (vendor-specific IE)

7.4 Contoh Konfigurasi Parsing CGNAT β€” Logstash Grok

# Cisco ASR 1000 CGNAT syslog β†’ Logstash grok pattern
# Raw log example:
# <134>2025-07-02T14:30:00.123Z CGN-GW-01: %CGNAT-6-SESSION: NAT
#   inside=100.64.1.100:34512 outside=203.0.113.10:1024
#   remote=198.51.100.20:443 protocol=TCP(6)
#   subscriber=USER-A@telkom.net.id session-id=0x8A3F2C1B flags=NEW
 
grok {
  match => {
    "message" => [
      "<%{NUMBER:facility_severity}>%{TIMESTAMP_ISO8601:timestamp}
       %{HOSTNAME:cgw_hostname}: %%{DATA:cgntag}:
       NAT inside=%{IP:inside_ip}:%{NUMBER:inside_port}
       outside=%{IP:outside_ip}:%{NUMBER:outside_port}
       remote=%{IP:remote_ip}:%{NUMBER:remote_port}
       protocol=%{DATA:protocol_name}\(%{NUMBER:protocol_number}\)
       subscriber=%{DATA:subscriber}
       session-id=%{DATA:session_id}%{DATA:flags}"
    ]
  }
}
 
# Output ke Elasticsearch:
# {
#   "inside_ip": "100.64.1.100",
#   "inside_port": 34512,
#   "outside_ip": "203.0.113.10",
#   "outside_port": 1024,
#   "remote_ip": "198.51.100.20",
#   "remote_port": 443,
#   "protocol": "TCP",
#   "subscriber": "USER-A@telkom.net.id",
#   "session_id": "0x8A3F2C1B",
#   "flags": "NEW",
#   "timestamp": "2025-07-02T14:30:00.123Z"
# }

8. Case Studies

8.1 E-Crime Takedown β€” IP Convergence Analysis (Europol)

Konteks: Operation Icarus (Europol 2023-2024)
Target: Dark web marketplace yang menggunakan bot CGNAT proxy untuk
        menyembunyikan identity admin.
 
Metode Attribution:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 1. Analis ekstrak semua IP yang mengakses panel admin       β”‚
β”‚    selama 3 bulan via server access log.                    β”‚
β”‚                                                              β”‚
β”‚ 2. IP publik = 64 IP berbeda dari 12 ISP di 5 negara.       β”‚
β”‚    Semua IP adalah CGNAT IP β€” tidak bisa langsung traced.    β”‚
β”‚                                                              β”‚
β”‚ 3. Teknik: IP Convergence β€”                                β”‚
β”‚    a. Ambil semua IP publik yang muncul                       β”‚
β”‚    b. Cari CO-OCCURRENCE pattern:                            β”‚
β”‚       IP mana saja yang muncul bersamaan dalam waktu singkat β”‚
β”‚    c. Gunakan graph analysis: node=IP, edge=co-occurrence    β”‚
β”‚                                                              β”‚
β”‚ 4. Hasil: dari 64 IP, 52 IP adalah noise (user biasa),       β”‚
β”‚    tapi 12 IP menunjukkan pola aneh:                          β”‚
β”‚    - Mereka muncul dari CGNAT pool yang SAMA terus           β”‚
β”‚    - Dalam 1 jam, multiple IP dari pool yang sama            β”‚
β”‚    - Ini adalah teknik: admin paksa reconnect β†’ dapat IP baruβ”‚
β”‚                                                              β”‚
β”‚ 5. Setelah IP convergence: 12 IP β†’ 2 subscriber dari         β”‚
β”‚    ISP Nordik (melalui CGNAT log).                           β”‚
β”‚    - Satu subscriber = admin marketplace                     β”‚
β”‚    - Satu subscriber = hosting server                        β”‚
β”‚                                                              β”‚
β”‚ 6. Takedown: 2 pelaku ditangkap, marketplace seized.         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 
Key Takeaway: CGNAT bukan penghalang absolut. Dengan analisis
co-occurrence dan convergence, pola tersembunyi bisa diungkap.

8.2 APT C2 Identification via CGNAT Correlation (Volexity 2022)

Konteks: APT group (diyakini China-linked) menggunakan compromised
home router di Indonesia sebagai C2 proxy.
 
Latar Belakang:
- Volexity menemukan beacon dari IP publik Indonesia (180.240.x.x)
  ke server C2 di Rusia
- IP adalah CGNAT IP milik ISP besar Indonesia
- Target: perusahaan financial di Singapura
 
Tantangan:
- Satu IP publik dipakai 48 pelanggan
- Beacon traffic tidak konsisten β€” muncul 5-10 menit, hilang berjam-jam
- Tidak bisa bedakan mana beacon dan mana traffic normal
 
Pendekatan:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 1. Analisis timing:                                        β”‚
β”‚    - Traffic beacon terjadi setiap Selasa & Kamis jam 14:00 β”‚
β”‚    - Tidak pernah di weekend                                 β”‚
β”‚    β†’ BUKAN pola bot biasa (bot 24/7)                        β”‚
β”‚    β†’ Curigakan: compromised device indoor                    β”‚
β”‚                                                              β”‚
β”‚ 2. CGNAT log analysis:                                      β”‚
β”‚    - Extraksi semua session dari IP publik saat beacon       β”‚
β”‚    - Filter: yang connect ke IP Rusia saja                   β”‚
β”‚    - Dapatkan inside IP: 100.64.3.45                        β”‚
β”‚    - Cek: apakah inside IP yang SAMA untuk semua beacon?     β”‚
β”‚    ⟢ Ya! Semua beacon dari 100.64.3.45                       β”‚
β”‚    β†’ Bisa dipastikan satu device                             β”‚
β”‚                                                              β”‚
β”‚ 3. RADIUS + DHCP:                                           β”‚
β”‚    - 100.64.3.45 β†’ subscriber "FULLNAME@domain"             β”‚
β”‚    - MAC = TP-Link router murah                              β”‚
β”‚    - Tidak ada VPN atau Tor di sisi subscriber               β”‚
β”‚    β†’ APT compromise router CPE user biasa                     β”‚
β”‚                                                              β”‚
β”‚ 4. Remediasi:                                               β”‚
β”‚    - ISP disconnect subscriber                              β”‚
β”‚    - Notifikasi ke pemilik: router compromised               β”‚
β”‚    - C2 server sinkhole oleh CERT                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 
Key Takeaway: CGNAT log + timing correlation adalah kunci untuk
mengidentifikasi beacon APT di belakang shared IP.

8.3 Kasus Indonesia β€” Keterbatasan Attribution di Jaringan Nasional

Skenario Disadur dari Berita Publik (2023-2024):
 
Seorang pelaku mengirimkan ancaman pembunuhan via email
anonymous (ProtonMail β†’ Tor β†’ CGNAT WiFi publik).
 
Alur Forensik:
1. Email header: IP publik 36.68.x.x (Telkomsel)
2. Timestamp: 2024-01-15 10:23 WIB (UTC+7)
3. Request ke ISP (Telkomsel):
   - "Tolong cari log CGNAT dari IP 36.68.x.x pada jam 10:23"
4. Respon ISP:
   - "Data perlu waktu. Dasar hukum? Surat?"
   - "Format permintaan harus melalui Data Protection Officer"
   - "Diarsipkan, kami cek dulu"
 
Hasil Forensik (setelah 2 minggu):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ βœ“ Log CGNAT ditemukan:                                      β”‚
β”‚   36.68.x.x: 45000 β†’ 10.0.0.1:34567                        β”‚
β”‚   βœ“ Subscriber ID = "ANONYM"                                 β”‚
β”‚   Γ— Nama asli: TIDAK ADA (prepaid card, registrasi fiktif)  β”‚
β”‚   Γ— Lokasi: TIDAK AKURAT (BTS triangulation = Β±500m)       β”‚
β”‚   Γ— Device: TIDAK TAHU (hidden di dalam CGNAT)              β”‚
β”‚   Γ— WiFi publik: hotspot di mall β€” tidak ada login system   β”‚
β”‚                                                              β”‚
β”‚ ⟢ Dead end: CGNAT + prepaid + WiFi publik + Tor             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 
Key Takeaway: CGNAT sendirian sudah menyulitkan. Ditambah
anonimisasi berlapis (Tor, prepaid, public WiFi) β†’ attribution
mendekati impossible tanpa intelijen tambahan.

8.4 Insider Threat β€” Attribution via Port Block Consistency

Konteks: Perusahaan mendeteksi data exfiltration dari employee
yang menggunakan corporate VPN (which then goes through CGNAT
from home ISP).
 
Kasus:
- Employee melakukan exfil via corporate VPN β†’ dari rumah pribadi
- VPN log menunjukkan: session dari IP publik 114.124.x.x
- IP publik = CGNAT milik Indihome
- 50+ pelanggan di IP yang sama β†’ siapa?
 
Metode:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Analisis Port Block:                                        β”‚
β”‚                                                              β”‚
β”‚ Dari VPN log:                                                β”‚
β”‚  114.124.x.x: 14320 β†’ VPN server 443 (setiap hari jam 18:00) β”‚
β”‚  114.124.x.x: 14322 β†’ VPN server 443                          β”‚
β”‚  114.124.x.x: 14325 β†’ VPN server 443                          β”‚
β”‚  (port range 14320-14350 konsisten)                          β”‚
β”‚                                                              β”‚
β”‚ Cek CGNAT log:                                                β”‚
β”‚  Port 14320-14350 adalah dalam satu port block               β”‚
β”‚  Port block milik: inside IP 100.64.2.50                     β”‚
β”‚  Subscriber: employee_nik@company.com                        β”‚
β”‚  β†’ Konfirmasi: employee tertentu                             β”‚
β”‚                                                              β”‚
β”‚ Tambahan:                                                     β”‚
β”‚  - VPN session di jam kerja = employee sedang WFH            β”‚
β”‚  - Volume exfil = 2GB/hari β†’ tidak wajar                     β”‚
β”‚  - CGNAT log juga menunjukkan akses ke cloud storage         β”‚
β”‚    (Google Drive pribadi) via port lain dalam blok yang sama β”‚
β”‚  β†’ Pattern: exfil terjadi setiap hari selama 3 minggu        β”‚
β”‚                                                              β”‚
β”‚ ⟢ Attribution sukses karena port block consistency.          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 
Key Takeaway: Port Block Allocation (RFC 7422) MEMUDAHKAN attribution
karena port range konsisten per subscriber.

9. Privacy Dual-Use

9.1 CGNAT sebagai Privacy Layer (Accidental Privacy)

CGNAT secara tidak sengaja memberikan privacy benefit:
 
βœ… Identitas tersembunyi secara default
   - Satu IP publik = puluhan/tibuan user
   - Tidak bisa dibedakan dari log server target saja
   - Efek: CGNAT = NAT anonimitas built-in
 
βœ… Anti-tracking alami
   - Pelacak (ad networks, analytics) melihat IP publik yang dishare
   - Tidak bisa fingerprint individu dari IP saja
   - Catatan: masih bisa via cookie, browser fingerprint, dll
 
βœ… Mempersulit data broker
   - Data broker (seperti jumlah, lokasi dari IP) tidak akurat untuk user CGNAT
   - Lokasi geografis di level BTS/kota, bukan rumah spesifik
 
βœ… Cross-session isolation
   - Setiap reconnect CPE bisa dapat port block berbeda
   - Pelacakan jangka panjang lebih sulit via IP saja
 
❌ TAPI: Ini adalah privacy yang rapuh
   - Hanya IP-based tracking yang terhalang
   - Cookie, browser fingerprint, email tracking tetap jalan
   - ISP masih tahu SEMUA aktivitas (karena punya CGNAT log)
   - Law enforcement dengan otoritas masih bisa trace

9.2 CGNAT sebagai Hambatan Incident Response

❌ IR Teams:
 
➊ Waktu adalah musuh
   - Setiap jam yang terbuang = attacker lebih jauh
   - ISP memiliki SLA 6-24 jam untuk log CGNAT
   - Log mungkin sudah di-rotate (90 hari β†’ tidak ada untuk kasus lama)
 
βž‹ Tidak semua ISP punya CGNAT logging
   - ISP kecil mungkin tidak mengaktifkan logging (biaya storage besar)
   - Beberapa ISP menggunakan CGNAT appliance murah tanpa fitur log
   - β†’ Forensik tidak bisa dilanjutkan
 
➌ Format log tidak standar
   - Setiap vendor punya format berbeda
   - Join antara CGNAT log + RADIUS + DHCP sering bermasalah
   - Enterprise SIEM mungkin tidak punya parser CGNAT
 
➍ Permission & Legal Barrier
   - Di beberapa negara, ISP tidak bisa berikan data tanpa surat resmi
   - Proses legal bisa memakan waktu berhari-hari
   - Incident window: attack terjadi, attribution datang setelah damage
 
➎ Overhead Storage
   - ISP besar: 10-50 milyar log entry per hari
   - Storage cost tinggi β†’ retention diperpendek
   - Kompresi lossy (sampling) β†’ data tidak lengkap

9.3 Tabel: Keseimbangan Privacy vs Forensik

AspekPrivacy Advocate ViewLaw Enforcement/IR View
CGNAT loggingMass surveillance β€” ISP catat semua aktivitas wargaEssential for attribution β€” tanpa log, kejahatan tidak bisa dilacak
Data retention (90-365 hari)Pelanggaran privacy, chilling effectMinimal waktu untuk investigasi kejahatan kompleks
Port Block AllocationPredictable β†’ memudahkan fingerprintingMemudahkan attribution tanpa log per-session
Deterministic mappingIdentitas permanen tersembunyi di IP publikKorelasi lebih cepat untuk repeat offender
Real-time CGNAT queryPrivacy nightmare β€” ISP bisa lacak real-timeWajib untuk incident response yang responsif
Anonymization layer (Tor/VPN di atas CGNAT)Hak fundamental untuk privacy digitalTanda merah aktivitas kriminal β€” semakin banyak lapisan anonim, semakin mencurigakan

9.4 Rekomendasi Keseimbangan

Pendekatan yang Seimbang:
 
1. Logging Proporsional:
   - Log minimal: cukup untuk attribution (IP, port, timestamp, subscriber)
   - Jangan log payload atau konten komunikasi
   - Anonimisasi agregat untuk analisis non-forensik
 
2. Retention Terbatas:
   - 90 hari untuk data detail (session-level)
   - 1 tahun untuk data minimal (subscriber ↔ IP mapping, tanpa port)
   - Hapus otomatis setelah masa retention
 
3. Akses Ketat:
   - Log CGNAT hanya bisa diakses oleh:
     a. Tim NOC/abuse ISP (untuk operational)
     b. Law enforcement dengan surat resmi
     c. Incident responder dengan NDA dan SLA
   - Audit trail untuk setiap akses log
 
4. Transparansi:
   - Pelanggan berhak tahu bahwa ISP melakukan logging
   - Privacy policy yang jelas tentang retention dan akses
   - Opsi untuk menggunakan VPN/Tor jika menginginkan privacy ekstra
 
5. Alternatif Teknis:
   - Port Block Allocation (RFC 7422) sebagai pengganti full logging
   - NAT64/DNS64 untuk mengurangi ketergantungan pada IPv4 CGNAT
   - IPv6 native β†’ eliminasi kebutuhan CGNAT sama sekali

10. Alternatif & Evolusi Teknologi

10.1 Perbandingan Alternatif CGNAT

TeknologiMekanismeIPv6 SupportLogging RequirementAdoption
CGNAT (NAT444)PAT/shared IP β€” translationTidak langsungWAJIB (RFC 6888)Dominan di Asia, Afrika, LATAM
NAT64 + DNS64IPv6-only client β†’ IPv4 internet via translationSide-by-sideSama dengan CGNATOperator mobile (T-Mobile US, Telstra)
DS-Lite (RFC 7596)IPv6 tunnel + CGNAT elementIPv6 native, IPv4 via tunnelSama dengan CGNATEuropean operators (Deutsche Telekom, Free FR)
MAP-E (RFC 7597)Encapsulation β€” IPv4-in-IPv6 tunnelIPv6 nativeLebih rendah (deterministic mapping)Softbank JP, Comcast US
MAP-T (RFC 7599)Translation β€” IPv4 ↔ IPv6 (similar NAT64)IPv6 nativeLebih rendah (deterministic)Emerging β€” belum banyak deployed
LISP (RFC 6830)Locator/ID separation β€” routing overlayBisa dual-stackBerbeda: LISP mapping systemEnterprise/Campus, bukan residential
Pure IPv6No NAT at all β€” every device has global addressNATIFTidak diperlukanNordics (DK, SE), US mobile, India (Reliance Jio)
464XLAT (RFC 6877)CLAT+PLAT β€” client-side NAT64IPv6-only clientSama dengan CGNAT (PLAT side)Android default, T-Mobile US massive deployment

10.2 Visual: Perbedaan Arsitektur Alternatif

DS-Lite:
[CPE] ─── IPv6-only WAN ───→ [AFTR (ISP)] ─── IPv4 Internet
   β”‚                            β”‚
   └──‒ IPv4 traffic β†’ tunnel ke AFTR
      β€’ AFTR melakukan CGNAT
      β€’ Logging: AFTR side (sama dengan CGNAT)
   └──‒ IPv6 traffic β†’ langsung ke IPv6 internet
 
 
MAP-E:
[CPE] ─── IPv6-only WAN ───→ [BR (ISP)] ─── IPv4 Internet
   β”‚                            β”‚
   └──‒ Port mapping DETERMINISTIK
      β€’ Setiap CPE dapat blok port tetap (PSID = Port Set ID)
      β€’ Tidak perlu session-level logging
      β€’ Cukup log alokasi PSID
   └──‒ Contoh: PSID = 4 (port range 4096-6143)
      β€’ 100 pelanggan dalam satu IP publik
      β€’ Tapi setiap pelanggan punya port range tetap
 
 
NAT64 + DNS64:
[Client IPv6-only] ──→ [NAT64 Gateway] ──→ IPv4 Internet
   β”‚                      β”‚
   └──‒ DNS64: A query β†’ synthesizes AAAA from IPv4 β†’ client dpt IPv6
      β€’ Client kirim packet ke IPv6 prefix NAT64 (64:ff9b::/96)
      β€’ NAT64 translate IPv6 β†’ IPv4
      β€’ Logging: NAT64 gateway (mirror CGNAT)
 
 
464XLAT:
[Client] ──→ [CLAT (mobile/CPE)] ──→ [PLAT (ISP)] ──→ IPv4 Internet
   β”‚            β”‚                      β”‚
   └──‒ CLAT: translate IPv4 β†’ IPv6 (via NAT46)
      β€’ PLAT: translate IPv6 β†’ IPv4 (via NAT64)
      β€’ Overall: client experience seperti NAT saja
      β€’ BUT: CLAT di device, PLAT di ISP
      β€’ Logging: PLAT side β€” sama dengan CGNAT

10.3 Mengapa IPv6 adalah Solusi Final

IPv6 = Address Abundance = No NAT Needed
 
Mengapa CGNAT tidak ideal:
Γ— Single point of failure β€” jika CGN gateway down, ribuan pelanggan offline
Γ— Performance bottleneck β€” semua traffic harus melalui NAT processor
Γ— Logging overhead β€” storage, processing, compliance
Γ— Application breakage β€” P2P, VoIP, gaming, VPN (IPsec, IKE)
Γ— Troubleshooting complexity β€” menentukan "siapa" dari "IP mana"
Γ— Privacy paradox β€” ISP punya log lengkap, tapi IR team tidak bisa akses cepat
 
IPv6 mengeliminasi semua masalah ini:
βœ“ Setiap device punya global unique address (2001:db8::/32 range)
βœ“ No NAT table, no port sharing, no logging untuk attribution
βœ“ End-to-end connectivity β€” P2P, VoIP, gaming work natively
βœ“ Troubleshooting β€” IP langsung = device langsung
βœ“ Privacy via Privacy Extensions (RFC 4941, RFC 8981):
  - Temporary addresses: berubah setiap 24 jam
  - Mencegah tracking via MAC-based IPv6 (EUI-64)
 
Tapi IPv6 punya masalah sendiri:
Γ— Monitoring: IPv6 address space sangat besar β†’ scanning attack surface besar
Γ— Security: filter incoming connection harus lebih ketat (no NAT firewall)
Γ— Transition: dual-stack selama bertahun-tahun
Γ— Logging tetap diperlukan untuk law enforcement β€” bedanya lebih sederhana
 
Realisasi Industri (2025):
[         CGNAT dominant         ]──────→[      CGNAT + IPv6 dual      ]──────→[     IPv6 dominant    ]
  Asia, Afrika, LATAM now               Europe, US now             Nordics, Jio, T-Mobile US
 
β†’ Target: IPv6-only world β†’ CGNAT hanya kenangan.
β†’ Realita: 10-20 tahun lagi sebelum itu terjadi.

10.4 Tabel: Dampak Setiap Alternatif terhadap Forensik

AlternatifAttribution ComplexityLog VolumeIR SpeedPrivacy Impact
CGNAT (NAT444)Tinggi β€” butuh join CGN log + RADIUSSangat tinggi (miliaran/hari)Lambat β€” 6-24 jamRendah β€” ISP tahu semuanya
CGNAT + Port BlockSedang β€” cukup cek port rangeRendah (hanya alokasi blok)Sedang β€” 1-4 jamSedang β€” predictable range
DS-LiteTinggi β€” AFTR log + RADIUSTinggiLambatRendah
MAP-ERendah β€” deterministic port mapping (PSID)Rendah (hanya PSID allocation)Cepat β€” 30 menitSedang β€” PSID tetap
MAP-TRendah β€” sama dengan MAP-ERendahCepatSedang
NAT64Tinggi β€” gateway NAT64 logTinggiLambatRendah
464XLATSedang β€” PLAT side logSedangSedangRendah
Pure IPv6Sangat rendah β€” IP langsung = deviceMinimal (DHCPv6 log saja)Cepat β€” real-timeSedang β€” privacy extension
CGNAT + VPN/TorSangat tinggi β€” CGNAT hanya layer 1 dari banyakCGNAT log tidak berguna sendiriSangat lambatTinggi β€” user anonim

11. Bottom Line

Bottom Line

CGNAT adalah realita pahit yang harus dihadapi praktisi keamanan jaringan. Di satu sisi, CGNAT memperpanjang umur IPv4 dan memungkinkan konektivitas global di tengah kelangkaan alamat IP. Di sisi lain, CGNAT adalah musuh terbesar attribution forensik β€” mengaburkan identitas pelaku di balik IP publik yang dishare oleh puluhan pelanggan.

Takeaway Kunci untuk Threat Hunter & Analis Forensik:

  1. IP publik saja TIDAK CUKUP untuk attribution di era CGNAT. Selalu butuh 5-tuple lengkap (IP:port source & destination + protocol + timestamp).
  2. Log CGNAT adalah sumber truth β€” tanpa akses ke CGNAT log ISP, attribution berhenti di IP publik.
  3. Waktu adalah musuh β€” setiap jam delay mengurangi probabilitas log masih tersedia.
  4. Port Block Allocation (RFC 7422) adalah teman terbaik forensik β€” port range konsisten per subscriber memudahkan korelasi tanpa log super-detail.
  5. Regulasi retention bervariasi per negara β€” 90 hari sampai 5 tahun. Kenali yurisdiksi ISP yang berurusan dengan kasus kamu.
  6. IPv6 adalah solusi final β€” CGNAT hanya tambal ban. Native IPv6 menghilangkan masalah attribution sama sekali.
  7. VPN/Tor di atas CGNAT = attribution wall yang sangat sulit ditembus tanpa intelijen tambahan.

Referensi & Cross-References Vault

Lihat Juga


Note ini adalah living document. CGNAT terus berkembang seiring migrasi IPv6 dan munculnya regulasi baru. Last updated: 2025-07-02