İçeriğe geç
Glossary 7 dk okuma 1329 görüntülenme

JARM Parmak İzi

TLS sunucularını ve proxy'leri kendilerine özgü TLS el sıkışma özelliklerine göre belirleyen JARM parmak izi tekniğini inceleyin.

Security
JARM Parmak İzi

JARM parmak izi, bir sunucunun veya proxy'nin TLS yığınını, özel olarak hazırlanmış bir dizi TLS ClientHello sondasına verdiği yanıtı analiz ederek belirlemeye yarayan, istemci tarafında çalışan pasif bir TLS parmak izi yöntemidir. Salesforce tarafından geliştirilen JARM, bir sunucunun TLS uygulamasına ait benzersiz bir parmak izi üretir; böylece operatörler belirli sunucu yazılımlarını tanımlayabilir, proxy'leri tespit edebilir ve altyapıyı izleyebilir.

JARM parmak izlerini anlamak

JARM (Just Another Rather Marvelous) parmak izi çıkarma, hedef sunucuya 10 farklı TLS ClientHello paketi göndererek çalışır. Her ClientHello; desteklenen TLS sürümleri, cipher suite'ler, uzantılar ve eliptik eğriler gibi parametrelerinde belirli ve sıralı farklılıklar taşıyacak biçimde tasarlanmıştır. Sunucunun bu sondalara verdiği yanıtlar — seçtiği TLS sürümü, cipher suite, uzantılar ve diğer el sıkışma parametreleri dahil — birleştirilip özetlenerek (hash) 62 karakterlik bir parmak izi üretilir.

Bu süreç, farklı TLS yığınlarının (örneğin OpenSSL, Microsoft SChannel, Go'nun crypto/tls'i, BoringSSL, LibreSSL) TLS el sıkışmalarını nasıl müzakere ettiğine dair ince farklardan yararlanır. Küçük yapılandırma farkları veya yama seviyeleri bile farklı JARM parmak izlerine yol açabilir.

JARM sondalarının ayrıntıları

10 ClientHello sondası birkaç boyutta farklılık gösterir:
* TLS sürümleri: sondalar belirli TLS sürümlerini hedefler (örneğin TLS 1.0, 1.1, 1.2, 1.3).
* Cipher suite'ler: her sonda farklı bir cipher suite listesi ve sıralaması içerir.
* Uzantılar: farklı TLS uzantı kümeleri ve sıralamaları kullanılır (örneğin SNI, ALPN, renegotiation_info, supported_groups).
* Eliptik eğriler: desteklenen eliptik eğrilerde farklılıklar yer alır.

Sunucunun bu 10 sondanın her birine verdiği ServerHello yanıtı kaydedilir. Bu yanıtlardan çıkarılan başlıca alanlar şunlardır:
* Müzakere edilen TLS sürümü
* Seçilen cipher suite
* Mevcut uzantıların listesi
* SNI uzantısı yanıtının biçimi (varsa)

Çıkarılan bu alanlar tek bir dizede birleştirilir. Bu dize ardından MD5 ile özetlenir; bu özetin bir bölümü, tam yanıt dizesinin SHA-256 özetiyle birlikte 62 karakterlik nihai JARM parmak izini oluşturur. Parmak izi, 10 sondanın her birine verilen yanıtlara ilişkin bilgiyi kodlayacak biçimde yapılandırılmıştır.

JARM proxy hizmetleri için neden yararlı

JARM parmak izleri, proxy hizmetleri işleten veya bu hizmetlerle etkileşen kuruluşlar için birkaç pratik kullanım sunar.

Sunucu ve yazılım tespiti

JARM, bir sunucunun veya proxy'nin altında yatan TLS kütüphanesini ve yapılandırmasını tam olarak belirleyebilir. Bu şunlara olanak tanır:
* Yazılım sınıflandırması: Nginx, Apache HTTP Server, Microsoft IIS, Caddy gibi yaygın web sunucuları ile Tomcat, Jetty gibi uygulama sunucularını birbirinden ayırt etme.
* Sürüm tespiti: aynı yazılımın farklı sürümleri veya yama seviyeleri, TLS yığını uygulamasındaki değişiklikler nedeniyle çoğu zaman farklı JARM parmak izleri üretir.
* Hatalı yapılandırma tespiti: beklenmedik parmak izleri, standart dışı yapılandırmalara veya olası güvenlik sorunlarına işaret edebilir.

Proxy tespiti ve niteleme

Bir proxy hizmeti için ara proxy'leri tespit etmek, ağ yollarını ve güvenlik duruşunu anlamak açısından kritiktir.
* Ters proxy'ler ve CDN'ler: bir istemci, ters proxy, yük dengeleyici veya Content Delivery Network (CDN) arkasındaki bir sunucuya bağlandığında, JARM parmak izi origin sunucusunun değil, proxy/CDN uç düğümünün TLS yığınını yansıtır. Bu sayede Cloudflare, Akamai, AWS CloudFront ya da ters proxy olarak çalışan Nginx/HAProxy gibi hizmetler tespit edilebilir.
* İleri (forward) proxy'ler: bir ileri proxy, TLS araya girme (MITM) yaparken kendi TLS yığınını sunabilir. İstemcinin bağlantısı araya girilerek kesiliyorsa, istemcinin elde ettiği JARM parmak izi hedef sunucuya değil ileri proxy'ye ait olur. Araya girmeyen ileri proxy'ler genellikle ClientHello'yu olduğu gibi iletir ve origin sunucusunun JARM'ını korur.
* WAF'ler (Web Application Firewall): birçok WAF ters proxy olarak çalışır ve kendi JARM parmak izini sunar.

Güvenlik ve tehdit istihbaratı

JARM, güvenlik operasyonlarında değerli bir araçtır:
* Zararlı yazılım C2 tespiti: tehdit aktörleri, komuta ve kontrol (C2) altyapılarında çoğu zaman aynı TLS yığınlarını yeniden kullanır. JARM bu C2 sunucularının parmak izini çıkarabilir; böylece farklı IP adresleri veya alan adları üzerinden bunlar tespit edilip izlenebilir.
* Altyapı haritalama: güvenlik araştırmacıları JARM'ı, saldırgan altyapısını haritalamak, paylaşılan bileşenleri belirlemek ve birbiriyle ilgisiz görünen kampanyaları ilişkilendirmek için kullanır.
* Phishing tespiti: meşru alan adları için beklenmedik JARM parmak izleri görülmesi, saldırganın farklı bir altyapı kullandığı bir phishing girişimine işaret edebilir.

Ağ görünürlüğü

JARM, bir proxy'nin etkileşimde bulunduğu TLS ekosistemine dair daha derin bir kavrayış sağlar:
* Referans değer oluşturma: bilinen hizmetler ve iş ortakları için beklenen JARM parmak izlerinden bir referans (baseline) oluşturmak, anormallikleri tespit etmeye yardımcı olur.
* Hizmet keşfi: uygulama düzeyinde etkileşime gerek kalmadan hizmetlerin altındaki teknolojiyi belirleme.

JARM parmak izi üretme

JARM parmak izi üretmek, belirli sondaları göndermeyi ve yanıtları işlemeyi gerektirir. Bu amaçla araçlar ve kütüphaneler mevcuttur.

Örnek: Python jarm kütüphanesini kullanma

jarm Python kütüphanesi, parmak izi üretmenin doğrudan bir yolunu sunar.

import jarm

def get_jarm_fingerprint(host, port=443):
    """
    Verilen host ve port için bir JARM parmak izi üretir.
    """
    try:
        fingerprint = jarm.string_fingerprint(host, port, timeout=5)
        return fingerprint
    except Exception as e:
        return f"Error generating JARM for {host}:{port}: {e}"

if __name__ == "__main__":
    target_host_1 = "www.example.com"
    target_host_2 = "cloudflare.com" # Çoğunlukla Cloudflare'in kendi TLS yığını üzerinden sunulur
    target_host_3 = "nginx.org"

    print(f"JARM for {target_host_1}: {get_jarm_fingerprint(target_host_1)}")
    print(f"JARM for {target_host_2}: {get_jarm_fingerprint(target_host_2)}")
    print(f"JARM for {target_host_3}: {get_jarm_fingerprint(target_host_3)}")

Bu betik, belirtilen host ve porta bağlanır, JARM sondalarını gönderir ve elde edilen 62 karakterlik parmak izini yazdırır.

JARM parmak izlerini yorumlama

JARM parmak izi tek başına anlamsız bir dizedir. Değeri, bilinen hizmetler veya tehdit aktörleriyle karşılaştırılmasından ve ilişkilendirilmesinden gelir.
* Veritabanı sorgulama: kamuya açık ve özel veritabanları (örneğin JARM.info, Shodan, Censys) JARM parmak izlerini toplar ve bilinen yazılım, hizmet ve kuruluşlarla ilişkilendirir.
* Örüntü tanıma: belirli JARM parmak izleri çoğu zaman belirli TLS kütüphaneleri veya sunucu yazılımlarıyla ilişkilidir. Örneğin:
* 27d40d40d27d40d00045d40d00041d01dd2d4000000000494a000000000000 Nginx için yaygın bir parmak izidir.
* 07d14d14d07d14d00041d14d0000000d1d2d00000000000000000000000000 çoğunlukla Apache HTTP Server (OpenSSL) ile görülür.
* 07d07d07d07d07d00041d07d0000000d1d2d00000000000000000000000000 Cloudflare'e işaret edebilir.
* Anormallik tespiti: bilinen bir hizmet için beklenen parmak izinden herhangi bir sapma incelenmelidir.

JARM ve proxy davranışı

JARM ile proxy hizmetleri arasındaki etkileşim, JARM'ın işlevselliğinin merkezindedir.

İleri (forward) proxy'ler

  • Araya girmeyen ileri proxy'ler: bu proxy'ler istemcinin ClientHello'sunu doğrudan hedef sunucuya iletir. Bu durumda istemcinin gözlemleyeceği JARM parmak izi (istemci sunucu için bir JARM üretiyor olsaydı) origin sunucusuna ait olurdu. Ancak proxy hizmetinin kendisi istemci olarak davranıp bir hedef için JARM üretse bile, yine origin sunucusunun JARM'ını elde ederdi.
  • Araya giren ileri proxy'ler (TLS denetimi): bir ileri proxy TLS denetimi yaptığında (örneğin güvenlik taraması veya politika uygulaması için) Man-in-the-Middle (MITM) gibi davranır. İstemcinin TLS bağlantısını sonlandırır ve origin sunucusuyla yeni bir bağlantı kurar. Bu durumda istemcinin gözlemlediği JARM parmak izi ileri proxy'nin TLS yığınına ait olur. Aynı şekilde, origin sunucusunun gözlemlediği JARM parmak izi de ileri proxy'nin TLS yığınına ait olur. Bu davranış, TLS denetimini tespit etmek için kilit bir göstergedir.

Ters proxy'ler, yük dengeleyiciler ve CDN'ler

Bu hizmetler bir veya daha fazla origin sunucusunun önünde konumlanır ve gelen istemci bağlantılarını karşılar.
* Ters proxy, yük dengeleyici veya CDN arkasındaki bir hizmete bağlanan istemcinin elde ettiği JARM parmak izi her zaman bu ara katmanın TLS yığınını yansıtır.
* Origin sunucusunun JARM parmak izi dışarıdan gözlemlenemez biçimde maskelenir. Bu, söz konusu hizmet türlerini tespit etmenin başlıca yoludur. Örneğin google.com adresine bağlanmak, isteği işleyen arka uç sunucusunun değil, Google'ın uç altyapısının JARM parmak izini verir.

Sınırlamalar ve dikkat edilmesi gerekenler

JARM güçlü olsa da bazı sınırlamaları vardır:
* Aktif sondalama: JARM, hedefe aktif sonda göndermeyi gerektirir; bu her ortamda mümkün veya izin verilebilir olmayabilir.
* Dinamik değişimler: sunucu yapılandırmaları, yazılım güncellemeleri veya yük dengeleyici değişiklikleri JARM parmak izini değiştirebilir; bu da sürekli izleme ve yeniden parmak izi çıkarma gerektirir.
* Taklit (spoofing): gelişmiş saldırganlar TLS yığınlarını bilinen JARM parmak izlerini taklit edecek şekilde yapılandırabilir, ancak bu özel bir çaba gerektirir.
* Kapsam: JARM, TLS el sıkışmasının belirli yönlerini yakalar ancak tüm TLS yapılandırma ayrıntılarının eksiksiz bir resmini vermez.

JARM ile JA3 karşılaştırması

JARM ve JA3'ün ikisi de TLS parmak izi teknikleridir, ancak farklı amaçlara hizmet ederler.

Özellik JARM JA3
Hedef Sunucu (bir sunucunun veya proxy'nin TLS yığınını belirler) İstemci (bir istemci uygulamasının TLS yığınını belirler)
Yöntem Özel olarak hazırlanmış 10 farklı ClientHello sondası gönderir ve sunucunun ServerHello yanıtlarını özetler. İstemcinin gönderdiği tek bir ClientHello paketini analiz eder; TLS sürümü, cipher suite'ler, uzantılar, eliptik eğriler ve eliptik eğri nokta biçimlerinin sıralı listelerini çıkarır ve bunları özetler.
Parmak izi türü Birden fazla ServerHello yanıtından türetilen 62 karakterlik dize. Birleştirilmiş bir dizenin MD5 özeti (örneğin TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats).
Kullanım alanı Sunucu yazılımını belirleme, proxy/CDN tespiti, C2 altyapısını izleme, ağ haritalama. Belirli istemci uygulamalarını belirleme (örneğin web tarayıcıları, zararlı yazılımlar, IoT cihazları), botnet tespiti, uygulama profilleme.
Gözlem noktası Hedef sunucuya bağlantı başlatan bir istemci gerektirir. İstemciden gelen ClientHello'yu gözlemleyen bir sunucu veya ağ cihazı gerektirir.
Kaynak Salesforce (2020) Salesforce (2017)

JARM, sunucunun yanıt davranışına odaklanır; bu da onu proxy hizmetleri dahil olmak üzere TLS bağlantılarını sonlandıran bileşenleri belirlemek için ideal kılar.

Güncellendi: 04.03.2026
Kategoriye dön

Bunları da okuyun

Glossary 3 dk

Mobil proxy nedir? 4G/5G proxy'ler açıklandı

Mobil proxy, trafiği gerçek bir 4G/5G cihaz üzerinden yönlendirir ve size binlerce gerçek kullanıcının paylaştığı bir operatör IP'si verir — engellenmesi en zor tür. Nasıl çalıştıklarını ve ne zaman kullanılacağını anlatıyoruz.

Glossary 3 dk

ISP proxy nedir? Statik residential proxy'ler açıklandı

ISP proxy, veri merkezinde barınan ama residential bir ISP'ye kayıtlı statik bir IP'dir — residential güveni, veri merkezi hızı ve sabit IP. Nasıl çalıştıklarını ve ne zaman kullanılacağını anlatıyoruz.

Glossary 3 dk

HTTP ve HTTPS Proxy: Fark Nedir?

HTTP proxy web trafiğinizi okuyabilir; HTTPS proxy onu CONNECT ile şifreli tüneller. Gerçek fark, proxy'nin ne gördüğü ve hangisini seçmeniz gerektiği.

Glossary 4 dk

Proxy nedir? Yeni başlayanlar için eksiksiz rehber

Proxy sunucusu, trafiğinizi farklı bir IP üzerinden yönlendirerek gerçek IP adresinizi gizleyen bir aracıdır. Proxy'lerin nasıl çalıştığını, temel türlerini ve doğru olanı nasıl seçeceğinizi anlatıyoruz.

Glossary 4 dk

SOCKS5 ile HTTP Proxy: Farkları, Hızı ve Hangisi Ne Zaman Kullanılır

SOCKS5 ve HTTP proxy'ler farklı sorunları çözer. HTTP proxy web trafiğini anlar, önbelleğe alabilir veya filtreleyebilir; SOCKS5 ise herhangi bir TCP/UDP bağlantısını körlemesine iletir — yalnızca gezinmeyi değil, torrentleri, oyunları, e-postayı da. İkisi de kendi başına trafiği şifrelemez. Hangisinin ne zaman kazandığını burada bulacaksınız.

Glossary 1 dk

CDN ve proxy'ler: Nasıl çalışır

CDN ve proxy'ler — birlikte nasıl çalışır — proxy ve ağ teknolojileri alanına ait bir terim.

Proxy'lerimizi deneyin

100+ ülkede 20,000+ proxy

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.