JA4 Fingerprint
Ja4 fingerprint konusunu ele almadan önce tls handshake mantığını, özellikle de cilienthello mesajının ne taşıdığını bilmemiz gerekiyor…
JA4 Fingerprint
Ja4 fingerprint konusunu ele almadan önce tls handshake mantığını, özellikle de cilienthello mesajının ne taşıdığını bilmemiz gerekiyor. Çünkü JA4 doğrudan bu katmandaki bazı özelliklerden üretilen bir fingerprint yapısına dayanıyor.
Ağ güvenliği tarafında bir istemciyi yalnızca IP adresiyle ya da görünen uygulama bilgileriyle tanımak çoğu zaman yeterli olmuyor. Bu nedenle istemcinin bağlantı sırasında bıraktığı teknik izler önem kazanıyor. TLS ClientHello mesajı da bu izlerin en dikkat çekici örneklerinden biri.
Bu yazıda JA4’ün ne olduğunu, neden ortaya çıktığını, ClientHello ile nasıl ilişkilendiğini ve JA3’e göre neden daha farklı bir yaklaşım sunduğunu kendi anladığım çerçevede toparlamaya çalışacağım.
Neden Fingerprinting Gerekli ?
Ağ güvenliğinde bir istemciyi tanımak, çoğu zaman görünen kimlik bilgilerinden daha fazlasını gerektirir. Çünkü görünen bilgiler değiştirilebilir, eksik olabilir ya da yeterince ayırt edici olmayabilir. Bu yüzden istemcinin bağlantı sırasında bıraktığı teknik izlerden yararlanmak gerekir. Fingerprinting tam da burada devreye girer.
Fingerprinting, bir istemcinin ağ üzerindeki teknik davranışını ayırt etmeye yardımcı olur. Böylece benzer istemciler gruplanabilir, alışılmadık bağlantılar tespit edilebilir ve görünürlük artırılabilir. Tek başına kesin hüküm vermese de, fingerprinting özellikle tehdit avcılığı, olay analizi ve anomali tespiti açısından önemli bir veri noktasıdır.
Özellikle TLS ClientHello mesajı, fingerprinting açısından dikkat çekici bir veri kaynağıdır.
TLS ve ClientHello Nedir?
TLS (Transport Layer Security), istemci ile sunucu arasındaki dinlemeyi, verinin değiştirilmesini ve sahteciliği zorlaştıracak şekilde güvenli iletişim kurmak için kullanılan prokoldür. Uygulama verisi aktarılmadan önce iki tarafın “nasıl güvenli konuşacağız?” sorusunu çözdüğü bir hazırlık sürecini içermektedir. Bu hazırlık süreci genel olarak TLS handshake olarak adlandırılır. Handshake sırasında istemci ve sunucu; hangi TLS sürümününün kullanılacağını, hangi şifreleme seçeneklerinin uygun olduğunu ve bağlantının hangi güvenlik parametreleriyle devam edeceğini kararlaştırır.
Başlangıç akışı kabaca istemcinin ClientHello göndermesiyle başlamaktadır. Ardından sunucu ServerHello ile yanıt verir ve devamında gerekli uzantılar, sertifika bilgileri ve finished mesajlarıyla güvenli oturum tamamlanır. Uygulama verisi ise bu aşamadan sonra aktarılır. Bu nedenle ClientHello mesajı fingerprinting açısından oldukça değerlidir. Çünkü istemci daha güvenli oturum tam kurulmadan önce hangi sürümleri desteklediğini, hangi şifreleme seçeneklerini tercih ettiğini ve hangi uzantılarla bağlantı kurmak istediğini göstermiş olur. Başka bir ifadeyle ClientHello, istemcinin “kim olduğunu” değilse bile “nasıl davrandığını” gösteren teknik bir iz bırakır. JA4 gibi yaklaşımlar da tam olarak bu izlerden yararlanır.
JA3 Fingerprint Nedir?
JA3, istemcinin gönderdiği TLS ClientHello içinden belirli alanları alır ve bunları tek bir metin dizisine dönüştürür. Salesforce’un açıklamasına göre bu alanlar şunlardır: TLS/SSL sürümü, cipher listesi, extension listesi, elliptic curve listesi ve elliptic curve point format listesi.
JA3 = SSLVersion, Cipher, SSLExtension, EllipticCurve, EllipticCurvePointFormat
Bu beş alan, aralarında virgül olacak şekilde birleştirilir; her alanın içindeki çoklu değerler ise tire ile ayrılır.
Örneğin;
769,47–53–5–10–49161–49162–49171–49172–50–56–19–4,0–10–11,23–24–25,0
İstemci ClientHello mesajında SSL uzantıları yoksa, alanlar boş bırakılır.
769,4–5–10–9–100–98–3–6–19–18–99,,,
Son aşamada ortaya çıkan bu metin MD5 ile hash’lenir ve 32 karakterlik JA3 değeri elde edilir. JA3, istemcinin gönderdiği TLS ClientHello içinden belirli alanları alır ve bunları tek bir metin dizisine dönüştürür.
769,47–53–5–10–49161–49162–49171–49172–50–56–19–4,0–10–11,23–24–25,0 → ada70206e40642a3e4461f35503241d5
769,4–5–10–9–100–98–3–6–19–18–99,,, →de350869b8c85de67a350c8d186f11e6
JA4 Fingerprint Nedir?

JA4, TLS istemcisinin gönderdiği ClientHello mesajına bakarak istemciye ait bir fingerprint üretir bu sayede şifrelemeyi bozmaya gerek kalmadan ağda nelerin konuşulduğunu anlamanıza olanak tanır. Temel amaç, istemcinin TLS bağlantısını nasıl başlattığını daha okunabilir, parçalanabilir ve analizde kullanılabilir bir formata dönüştürmektir. FoxIO’nun tanımına göre JA4,TLS ClientHello içindeki belirli öznitelikleri kullanır ve sonucu a_b_c biçiminde üç parçalı bir fingerprint olarak üretir.
JA4 Algoritması
(protokol) (TLS sürümü) (SNI var/yok) (cipher sayısı) (extension sayısı) (ALPN özeti)(cipher listesinin kısaltılmış SHA-256 özeti)(extension listesi+signature algorithms bilgisinin kısaltılmış SHA-256 özeti)
JA4_a Bölümü
Bu bölüm sırayla FoxIO dökümanında şu şekilde tanımlanır;
- Prokotol tipi >>> TCP için “t”, QUIC için “q”, DTLS için “d” kullanılır.
- TLS sürümü >>> TLS sürümü iki karakterle gösterilir. Örneğin; TLS 1.3 için 13, TLS 1.2 için 12 kullanılır.
- SNI (Server Name Indication) >>> (istemcinin hangi alan adına gitmek istediğini belirtir.) Eğer SNI uzantısı varsa fingerprint’te d, yoksa i yer alır. Bazı istemciler alan adı üzerinden bağlanır, bazıları doğrudan IP ye gider ya da SNI göndermez.
- Cipher suite sayısı >>> Şifreleme paketlerinin sayısı iki karakterli olmalıdır. Yani ClientHello paketinde 6 şifreleme paketi varsa, değer “06” olmalıdır.
- Extension sayısı >>> Şifreleme algoritmalarını saymakla aynıdır.
- ALPN (Application-Layer Protocol Negotiation) değerinden türetilen iki karakter >>> Bu, TLS anlaşması tamamlandıktan sonra uygulamanın iletişim kurmak istediği protokolü temsil eder.İlk ALPN değerinin ilk ve son karakteri alınır. Mesela h2, HTTP/2 yi işaret eder. (Wireshark’ta bu alan tls.handshake.extensions_alpn_str altında yer almaktadır.) “00”, ALPN’nin olmadığını gösterir.
QUIC, TLS 1.3 iletişimini UDP paketleri içinde taşıyan ve HTTP/3 tarafından kullanılan bir protokol olarak öne çıkar. Google kökenli olması sebebiyle, Google servislerinin yaygın kullanıldığı kurumsal yapılarda ağ trafiğinin büyük bir kısmı QUIC üzerinden gerçekleşebilir; bu nedenle bu trafiğin izlenmesi kritik kabul edilir.QUIC, TLS 1.3 iletişimini UDP paketleri içinde taşıyan ve HTTP/3 tarafından kullanılan bir protokol olarak öne çıkar. Google kökenli olması sebebiyle, Google servislerinin yaygın kullanıldığı kurumsal yapılarda ağ trafiğinin büyük bir kısmı QUIC üzerinden gerçekleşebilir; bu nedenle bu trafiğin izlenmesi kritik kabul edilir.
JA4_b Bölümü
Bu bölüm sırayla FoxIO dökümanında şu şekilde tanımlanır; İstemcinin sunduğu cipher suite listesinin kısa özetidir. FoxIO’ya göre burada önce cipher hex kodları alınır, GREASE değerleri çıkarılır, kalan liste hex sıraya göre sıralanır ve ardından bu listenin SHA-256 özeti alınır. Sonuç, 12 karaktere kısaltılarak JA4_b bölümüne yazılır.
İki istemcinin aynı ya da benzer cipher davranışı gösterip göstermediği hızlıca karşılaştırılabilir.
JA4_c Bölümü
Extension listesi ile signature algorithms bilgisinin kıs aözetidir. Teknik dökümantasyona göre burada extension hex kodları GREASE değerleri çıkarılarak ele alınır ve extension listesi sıralanır. Ardından bu veri, signature algorithms bilgisi ile birlikte işlenir ve sonuç tekrar kısaltılmış SHA-256 biçiminde üretilir.
JA4_C, istemcinin extension tarafındaki davranışını daha çok temsil eder. JA4_B data çok cipher tarafını tanımlarken, JA4_C extension ve imza algoritmaları tarafındaki profili yansıtır.
Özetle JA4, TLS ClientHello mesajındaki belirli özellikleri kullanarak istemcinin bağlantı davranışını üç parçalı bir fingerprint biçiminde temsil eder. İlk bölüm bağlantının temel karakteristiğini okunabilir şekilde sunarken, ikinci ve üçüncü bölümler cipher ve extension/signature algoritmaları tarafındaki davranışı özetler. Bu yapı sayesinde JA4 yalnızca teknik bir tanımlayıcı değil, aynı zamanda operasyonel analizde kullanılabilecek anlamlı bir veri noktası hâline gelir.
JA4 Neden Önemlidir?
JA4’ün önemli olmasının nedeni, yalnızca TLS istemcileri için yeni bir fingerprint üretmesi değildir. Asıl önemli nokta, istemcinin bağlantı davranışını daha okunabilir ve daha karşılaştırılabilir bir formata dönüştürmesidir. Bu da ağ görünürlüğünü artırma, benzer istemcileri gruplama, anomali tespiti yapma ve şüpheli istemci davranışlarını ayırt etme açısından güvenlik ekiplerine fayda sağlar. Özellikle TLS trafiğinin yoğun olduğu ortamlarda JA4, yalnızca IP adresi, domain veya user-agent gibi kolay değişebilen göstergelere bağlı kalmadan istemcinin teknik karakteristiğine dair ek bağlam sunabilir.
Birden Fazla İstemci Aynı JA4 Fingerprint Değerine Sahip Olabilir mi?
Evet, birden fazla istemcinin aynı JA4 fingerprint değerine sahip olması mümkündür. JA4, bir cihazı veya kullanıyı benzersiz şekilde tanımlamak için tasarlanmamıştır.Bunun yerine, istemci tarafından kullanılan TLS uygulama yığınını tanımlar.Bu, JA4'ün istemci yazılımı tarafından kullanılan belirli kütüphaneler ve yapılandırmalar için yüksek doğrulukta bir imza sağladığı anlamına gelir; bu da, iletim sırasında sonraki iletişim şifrelenmiş olsa bile, istemcinin yapılandırması hakkında kritik bilgiler sağlar.Bu, analistlerin oturum içeriğinin şifresini çözmeye gerek kalmadan kötü amaçlı veya anormal etkinlikleri belirlemelerine ve izlemelerine olanak tanır.
JA4 Fingerprint Ekipler İçin Önemi
CTI Ekipleri : JA4, IP veya domain gibi kolay değiştirilebilen göstergelerin ötesinde istemci davranışını ilişkilendirmek için kullanılabilir. Benzer JA4 değerleri, aynı TLS istemci profilinin farklı zamanlarda veya farklı altyapılar üzerinden tekrar ettiğini gösterebilir. Bu nedenle JA4, IOC’den çok davranışsal pivot olarak değerlidir.
SOC Ekipleri : JA4, bir olay sırasında görülen şüpheli TLS istemcilerini ayırmak ve aynı davranışı gösteren başka hostları bulmak için kullanılabilir. Analist, şüpheli bir JA4 değerini geriye dönük olarak aratarak aynı fingerprint’in başka hangi sistemlerde, hangi süreçlerle ve hangi hedeflere karşı tekrar ettiğini inceleyebilir. Böylece olayın kapsamı daha net anlaşılabilir.
Kötü Amaçlı Yazılım ve Bot Tespiti : Kötü amaçlı yazılımlar genellikle ağ iletişimi için benzersiz veya özel olarak oluşturulmuş kütüphaneler kullanır (örneğin, Komuta ve Kontrol (C2) trafiği). Bu özel kütüphaneler tutarlı ve benzersiz bir JA4 parmak izi oluşturur.
Tehdit Avcılığı : Bir tehdit avcısı, şüpheli bir JA4 parmak izinin tek bir örneğini keşfedebilir ve ardından aramasını tüm ağ günlüklerine yayarak aynı parmak izini paylaşan diğer tüm bağlantıları bulabilir.
Düşmanları ve Araçları Gruplandırma : Fingerprint, istemcinin temel yazılım yığınına (örneğin, programlama dili, işletim sistemi veya bir kütüphanenin belirli sürümü) bağlı olduğundan, görünüşte ilgisiz ağ bağlantılarını aynı tehdit aktörüne veya kötü amaçlı yazılım ailesine gruplandırabilir.
Analiz Örneği

Görsel kaynağı:blog.cloudflare.com/ja4-signals
- Protokol :
TLS 1.3 sürümünü temsil etmektedir. Bu istemcinin güvenli protokolü kullandığını doğrulamaktadır.
- SNI Bilgisi :
Domain barındırmaktadır. (IP adresi, SNI’nın yokluğunu gösterir.)
- Extension Sayısı :
Bu örnekte 16 olarak görünmektedir.
Not : Extension sayısı, istemci ile ilgili desteklenen işlevsellik özelliğini belirlemeye yardımcı olur. Extension sayısı ne kadar fazlaysa istemci daha modern ve daha özelliklidir diyebiliriz. Tarayıcı trafiğinde extension sayısı çoğu zaman daha zengin görünür. Düşük extension sayısı, sade ve daha dar amaçlı istemci profili yansıtmaktadır. Bu değer tek başına zararlı veya meşru ayrımı yapmak için yeterli değildir. Düşük extension sayısı bazı özel kurumsal uygulamalarda, ajanlarda veya sadece TLS kullanan istemcilerde de görülebilir.
- ALPN Değeri :
HTTP/2'dir. (Web performansı için istemcinin protokol tercihlerini gösterir.)
- Cipher Hash :
8daaf6152771 (Onaltılık düzende sıralanmış şifreleme paketleri listesinin kısaltılmış bir SHA256 özetidir.)
- Extension Hash :
02713d6af862 (Bu özet değerlerden ham listeyi geri çıkaramayız. Aynı cipher veya extension davranışını paylaşıp paylaşmadığını karşılaştırmak için kullanılır.)
Örneği Değerlendirme
Bu örnekte dikkat çeken asıl nokta, JA4 değerinin tek başına varlığı değil; aynı JA4 fingerprint’inin birden fazla hostta, benzer zaman aralıklarında ve alışılmış tarayıcı süreçleri dışında kalan süreçlerle birlikte görülmesidir. Özellikle powershell.exe, rundll32.exe, mshta.exe ve curl.exe gibi süreçlerin aynı JA4 ile tekrar etmesi, analist açısından bu davranışın araştırılmaya değer olduğunu düşündürebilir.
Ayrıca loglarda hedefin doğrudan IP adresi olması, SNI alanının boş görünmesi ve ALPN bilgisinin bulunmaması, bu trafiğin tipik bir modern browser HTTPS davranışına benzemediğini düşündürebilir. Bu durum tek başına zararlı anlamına gelmez; ancak ek bağlamla birlikte değerlendirildiğinde anlamlı bir inceleme başlangıcı oluşturur.
Bu nedenle JA4 her zaman süreç bilgisi, hedef, kullanıcı, sertifika, DNS, proxy ve EDR logları ile birlikte değerlendirilmelidir.
Sorulabilecek Sorular
- Aynı JA4 değeri başka hangi hostlarda görülüyor?
- Bu fingerprint hangi süreçlerle birlikte ortaya çıkmaktadır?
- Hep aynı hedef IP veya benzer hedeflere mi gidiyor?
- Bu hostlarda yakın zamanda şüpheli komut çalıştırılmış mı?
- Aynı hostlarda DNS, proxy veya EDR telemetrisi tarafında ek bir anomali var mı?
JA4, daha geniş bir fingerprint ailesinin yalnızca TLS istemci tarafına odaklanan parçasıdır. Farklı protokol ve katmanlar için geliştirilen JA4 türleri de bulunmaktadır. Bu yazının odak noktası TLS istemci fingerprinting olduğu için, diğer JA4 türlerine kısa bir çerçeve sunmak daha doğru olacaktır.

EK OLARAK ; VirusTotal platformunun blog sayfasında açıklayıcı bir örneğe denk geldim ve paylaşmak istedim.
Örnek Arama: Diyelim ki VirusTotal’ın davranışsal analizi sırasında “t10d070600_c50f5591e341_1a3805c3aa63” JA4 parmak izini gösteren şüpheli bir dosyayla karşılaştınız.

behavior_network:t10d070600_c50f5591e341_1a3805c3aa63 arama sorgusunu kullanarak aynı fingerprint’e sahip diğer dosyaları bulabilirsiniz. Bu arama sizi aynı JA4 paylaşan ek örneklere yönlendirecek ve bunların ilişkili olabileceğini gösterecektir. Bu, bu dosyaların aynı kötü amaçlı yazılım ailesinin parçası olduğunu, ortak bir geliştiriciye sahip olduğunu veya ortak bir TLS kütüphanesini paylaştığını gösterebilir.
REFERANSLAR
- FoxIO — JA4 Technical Details
- FoxIO — JA4+ Technical Details
- FoxIO — JA4+ for Zeek
- FoxIO — JA4+ for Wireshark
- FoxIO — JA4+ Network Fingerprinting
- FoxIO — JA4T: TCP Fingerprinting
- AWS WAF — JA4Fingerprint
- Cloudflare — JA4 Signals
- RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3
- RFC 8701 — Applying GREASE to TLS Extensibility
- Salesforce — JA3 — A method for profiling SSL/TLS Clients
- GoogleCloud Community — JA4 Fingerprinting in GTI: Deep Dive
- VirusTotal Blog — JA4 Client Fingerprinting on VirusTotal
메타데이터
- post_id
- 1cd3441fc016
- slug
- ja4-fingerprint-1cd3441fc016
- url
- https://medium.com/@nurfeyzabektas/ja4-fingerprint-1cd3441fc016
- canonical_url
- https://medium.com/@nurfeyzabektas/ja4-fingerprint-1cd3441fc016
- author_url
- https://medium.com/@nurfeyzabektas
- status
- ok
- fetched_at
- 2026-06-22 05:41:33