28- NTP ATTACK
NTP NEDİR ?
Ağ Zaman Protokolü (NTP), paket anahtarlamalı, değişken gecikmeli veri ağları üzerinde bilgisayar sistemleri arasında saat senkronizasyonu için kullanılan bir ağ protokolüdür.
NTP'nin amacı, katılan tüm bilgisayarları birkaç milisaniye içinde Koordineli Evrensel Saat (UTC) içinde senkronize etmektir. Marzullo algoritmasının değiştirilmiş bir versiyonu olan kesişim algoritmasını kullanarak doğru zaman sunucularını seçer ve değişken ağ gecikmesinin etkilerini azaltmak için tasarlanmıştır. NTP, genel İnternet üzerinden genellikle zamanı onlarca milisaniyeye kadar tutabilir ve ideal koşullar altında yerel alan ağlarında bir milisaniyeden daha iyi doğruluk elde edebilir. Asimetrik rotalar ve ağ tıkanıklığı 100 ms veya daha fazla hatalara neden olabilir.
Protokol genellikle istemci-sunucu modeliyle tanımlanır, ancak her iki eşin de diğerini potansiyel bir zaman kaynağı olarak gördüğü eşler arası ilişkilerde de kolaylıkla kullanılabilir. Uygulamalar, 123 numaralı bağlantı noktasında Kullanıcı Datagram Protokolü'nü (UDP) kullanarak zaman damgaları gönderir ve alır. Ayrıca, istemcilerin ilk turdan sonra zaman güncellemelerini pasif olarak dinlediği yayın veya çoklu yayını da kullanabilirler. NTP, yaklaşan herhangi bir artık saniye ayarlaması konusunda uyarı sağlar, ancak yerel saat dilimleri veya yaz saati uygulaması hakkında hiçbir bilgi iletilmez.
Geçerli protokol sürümü 4'tür (NTPv4) ve sürüm 3 ile geriye dönük olarak uyumludur.
SNTP
NTP, eski Zaman Protokolü kullanımının yerini alırken, bazı kullanım durumları hala tüm protokolü çok karmaşık buldu. Bu boşluğu doldurmak için 1992 yılında Basit Ağ Zaman Protokolü (SNTP) tanımlandı. SNTPv3 standardı, NTPv3'ü kullanmanın bir yolunu açıklar; böylece uzun süreler boyunca durumun depolanmasına gerek kalmaz. Topoloji, yalnızca bir sunucu kullanıldığı için esas olarak Zaman Protokolü ile aynı hale gelir. 1996 yılında SNTP, o zamanlar geliştirilmekte olan NTPv4'ün bazı özellikleriyle birlikte SNTPv4'e güncellendi. SNTPv4'ün mevcut sürümü 2010 yılında ana NTPv4 standardıyla birleştirildi. SNTP, yeni bir protokol tanımlamadığından NTP ile tamamen birlikte çalışabilir. Bununla birlikte, basit algoritmalar daha düşük doğrulukta zamanlar sağlar ve bu nedenle zamanı bir SNTP kaynağından senkronize etmek tavsiye edilmez.
Saat Katmanları
NTP, hiyerarşik, yarı katmanlı bir zaman kaynakları sistemi kullanır. Bu hiyerarşinin her düzeyine tabaka adı verilir ve en üstteki referans saati için sıfırdan başlayan bir sayı atanır. Stratum n sunucusuna senkronize edilmiş bir sunucu, stratum n + 1'de çalışır. Sayı, referans saatine olan mesafeyi temsil eder ve hiyerarşideki döngüsel bağımlılıkları önlemek için kullanılır. Stratum her zaman kalitenin veya güvenilirliğin bir göstergesi değildir; diğer stratum 2 zaman kaynaklarından daha kaliteli olan stratum 3 zaman kaynaklarının bulunması yaygındır.
Stratum 0
Bunlar atom saatleri, GNSS (GPS dahil) veya diğer radyo saatleri veya PTP ile senkronize edilmiş saatler gibi yüksek hassasiyetli zaman tutma cihazlarıdır. Bağlı bir bilgisayarda bir kesintiyi ve zaman damgasını tetikleyen, saniyede çok doğru bir darbe sinyali üretirler. Stratum 0 cihazları aynı zamanda referans saatleri olarak da bilinir. NTP sunucuları kendilerini katman 0 olarak tanıtamazlar. NTP paketinde 0'a ayarlanan katman alanı, belirtilmemiş bir katmanı belirtir.
Stratum 1
Bunlar, sistem zamanını stratum 0 aygıtlarına birkaç mikrosaniye içinde senkronize edilen bilgisayarlardır. Stratum 1 sunucuları, sağlıklılık kontrolü ve yedekleme için diğer Stratum 1 sunucularıyla eşleşebilirler. Aynı zamanda birincil zaman sunucuları olarak da adlandırılırlar.
Stratum 2
Bunlar bir ağ üzerinden katman 1 sunucularına senkronize edilen bilgisayarlardır. Genellikle bir katman 2 bilgisayarı birkaç katman 1 sunucusunu sorgular. Stratum 2 bilgisayarları aynı zamanda eş gruptaki tüm cihazlar için daha istikrarlı ve sağlam bir zaman sağlamak amacıyla diğer stratum 2 bilgisayarlarıyla da eşleşebilirler.
Stratum 3
Bunlar katman 2 sunucularıyla senkronize edilmiş bilgisayarlardır. Eşleme ve veri örnekleme için katman 2 ile aynı algoritmaları kullanırlar ve kendileri de katman 4 bilgisayarları için sunucu görevi görebilirler.
Tabaka için üst sınır 15'tir; katman 16 ise bir cihazın senkronize olmadığını belirtmek için kullanılır. Her bilgisayardaki NTP algoritmaları, tüm istemciler için katman 1 sunucularına birikmiş gidiş-dönüş gecikmesini en aza indirmek amacıyla Bellman-Ford en kısa yol kapsayan ağacı oluşturmak için etkileşime girer.
0'lar ana kaynak olarak geçmektedir.
Stratum 2 ve altındaki sunucular için refid, yukarı akış zaman sunucusunun IP adresinin kodlanmış bir biçimidir. IPv4 için bu yalnızca 32 bitlik adrestir; IPv6 için ise kaynak adresin MD5 karmasının ilk 32 biti olacaktır. Refid'ler, zamanlama döngülerinin birinci derecede tespit edilmesine ve önlenmesine hizmet eder.
Zaman Damgaları
NTP tarafından kullanılan 64 bitlik ikili sabit nokta zaman damgaları, saniyeler için 32 bitlik bir bölümden ve kesirli saniye için 32 bitlik bir bölümden oluşur. Bu zaman damgaları, her 2^32 saniyede (yaklaşık 136 yıl) dönen bir zaman ölçeği ve teorik bir çözünürlük sağlar, bu da 2^-32 saniye (yaklaşık 233 pikosaniye) olarak ifade edilir. NTP, 1 Ocak 1900 dönemini kullanır. Bu nedenle ilk döngü taşıma işlemi 7 Şubat 2036'da gerçekleşir.
NTPv4, 128 bitlik bir tarih formatı sunar: saniye için 64 bit ve kesirli saniye için 64 bit. Bu formatın en önemli 32 biti, çoğu durumda rollover belirsizliğini çözen Era Numarasıdır. Mills'e göre, "Kesir için 64 bitlik değer, bir fotonun bir elektronu ışık hızında geçmesi için gereken süreyi çözmek için yeterlidir. 64 bitlik ikinci değer, kesir için kesin zaman temsili sağlamak için yeterlidir. Evren kararmaya başlar."
Güvenlik Endişeleri
NTP'nin kendisi, istemcilere sunucuların kimlik doğrulamasını yapma desteğini içerir. NTPv3, MITM'ye karşı kullanışlı olmayan simetrik anahtar modunu destekler. IPSec'ten uyarlanan NTPv4'te "otomatik anahtar" olarak bilinen genel anahtar sistemi kullanışlı kimlik doğrulama sunar, ancak meşgul bir sunucu için pratik değildir. Otomatik anahtarın daha sonra çeşitli tasarım kusurlarına sahip olduğu da tespit edildi, mesaj kimlik doğrulama kodundaki bir değişiklik dışında herhangi bir düzeltme yayınlanmadı.
Ağ Zaman Güvenliği (NTS), NTPv4'ün TLS ve AEAD içeren güvenli bir sürümüdür. Önceki girişimlere göre ana gelişme, ayrı bir "anahtar oluşturma" sunucusunun, yalnızca bir kez yapılması gereken ağır asimetrik şifrelemeyi yönetmesidir. Sunucu çökerse, önceki kullanıcılar MITM korkusu olmadan zamanı almaya devam edebilecekler. NTS şu anda birkaç zaman sunucusu tarafından desteklenmektedir; Cloudflare dahil. NTPSec ve chrony tarafından da desteklenir.
Microsoft ayrıca, MS-SNTP olarak bilinen bir Windows etki alanı kimliğini kullanarak NTPv3/SNTPv4 paketlerinin kimliğini doğrulamaya yönelik bir yaklaşıma sahiptir. Bu sistem, etki alanı bağlantısı için samba kullanılarak ntpd ve chrony referansında uygulanır.
NTP Nasıl Çalışır ?
NTP zaman senkronizasyonu işleminde aşağıdaki üç adım yer alır:
NTP istemcisi, NTP sunucusuyla bir zaman isteği alışverişi başlatır.
İstemci daha sonra bağlantı gecikmesini ve yerel sapmasını hesaplayabilir ve yerel saatini sunucunun bilgisayarındaki saatle eşleşecek şekilde ayarlayabilir.
Kural olarak, başlangıçta saatin ayarlanması için yaklaşık beş ila 10 dakikalık bir süre boyunca altı değişim gerekir.
Senkronize edildikten sonra istemci, istemci-sunucu senkronizasyonuna ek olarak genellikle yalnızca tek bir mesaj alışverişi gerektiren, yaklaşık her 10 dakikada bir saati günceller. Bu işlem, 123 numaralı bağlantı noktasındaki Kullanıcı Datagram Protokolü (UDP) aracılığıyla gerçekleşir. NTP aynı zamanda eş bilgisayar saatlerinin yayın senkronizasyonunu da destekler.
NTP Özellikleri Nelerdir?
Dünya çapında binlerce NTP sunucusu var. Bu sunucular, son derece hassas atom saatlerine ve Küresel Konumlandırma Sistemi saatlerine erişim sağlar. Bu zaman hizmetlerine erişim için özel alıcıların doğrudan NTP sunucularıyla iletişim kurması gerekir. Ancak her bilgisayarı bu alıcılardan biriyle donatmak pratik ya da uygun maliyetli değildir. Bu nedenle, birincil zaman sunucusu olarak belirlenen bilgisayarlar alıcılarla donatılır. Ağa bağlı bilgisayarlar, saat zamanlarını senkronize etmek için NTP gibi protokolleri kullanırlar.
NTP, bilgisayar saat zamanlarını son derece hassas bir şekilde senkronize etmek için Koordineli Evrensel Saati (UTC) kullanır. Daha küçük ağlarda, yerel alan ağında (LAN) 1 milisaniyeye kadar ve internet üzerinden onlarca milisaniyeye kadar daha yüksek doğruluk sunar. NTP saat dilimlerini hesaba katmaz. Bunun yerine, bu tür hesaplamaları gerçekleştirmek için ana bilgisayara güvenir.
NTP'nin Avantajları:
Cihazlar arası internet senkronizasyonunu sağlar.
Tesis içi güvenliğin arttırılmasını sağlar.
Kerberos gibi kimlik doğrulama sistemlerinde kullanılır.
Sorunların giderilmesine yardımcı olan ağ hızlandırma sağlar.
Ağ senkronizasyonunun zor olduğu dosya sistemlerinde kullanılır.
NTP'nin dezavantajları:
Sunucular kapalı olduğunda, çalışan bir iletişimde senkronizasyon süresi etkilenir.
Sunucular çeşitli saat dilimleri nedeniyle hataya açıktır ve çakışmalar meydana gelebilir.
Zaman doğruluğunda minimum azalma.
NTP paketleri artırıldığında senkronizasyon çakışır.
Manipülasyon senkronize olarak yapılabilir.
NTP'nin Uygulamaları:
Canlı sesin kaydedildiği bir prodüksiyon sisteminde kullanılır.
Yayın altyapılarının geliştirilmesinde kullanılır.
Senkronize saat zamanlarına bağlı olarak dosya sistemi güncellemelerinin birden fazla bilgisayarda gerçekleştirilmesi gereken yerlerde kullanılır.
Ağ üzerinde tutarlı zaman tutulmasına dayanan güvenlik mekanizmasını uygulamak için kullanılır.
Performansı hesaplamak için zaman damgası doğruluğuna dayanan ağ hızlandırma sistemlerinde kullanılır.
Precision Time Protocol (PTP)
Bir bilgisayar ağı boyunca saatlerin senkronizasyonunu destekleyen bir protokoldür. Bu protokol, farklı türdeki cihazların saatlerini senkronize etmek için kullanılır. PTP'nin standardizasyonu 1588 yılında John Edison tarafından yürütüldü ve 2002 yılında yayınlandı. Bu, senkronize bir ortamda iletişim ortamı üzerinden mesaj alışverişinin sağlanması için gereklidir.
NTP Modları:
Sunucu Modu : NTP sunucuları istemci taleplerine yanıt vererek zaman verilerini verir.
İstemci Modu: İstemci modundaki araçlar, NTP sunucularından etkili bir şekilde zaman verilerini arar.
Eş Modu: Eş modundaki araçlar, zaman verilerini çift yönlü olarak değiştirir ve genellikle sunucular arasında kullanılır.
NTP Örnek Konfigürasyonu
Ayrıntılara bakıldığında, zaman damgası olarak kendisini kullandığını görebiliriz.
Görüldüğü gibi sistemle iletişim kurulmuş ve sistem çalışır durumdadır.
Yıldız şeklinde ise sistemle başarılı bir şekilde iletişim kurulduğu anlamına gelmektedir.
NTP Attack
Versiyon ve stratum değerini öğrendik ve saldırılarımızı buna göre şekillendirmemiz gerekebilir. Çünkü bilgi toplama aşaması, saldırı planını kalem çizmek gibi düşünülebilir ve ona göre şekillenebilir.
Burada NTPv4 sürümü şu ana kadar güvenilir bir sektör standardı olarak kabul görmüştür ve ortaya çıkan zafiyetlerin çoğu Unix, Linux ve Windows istemcilerinde kullanılan üçüncü parti yazılımlardan kaynaklanmaktadır. Kendi NTP ham sürümlerinde ise güvenlik açığı nadiren meydana gelmektedir.
Buna en büyük örnek, monlist kullanarak istemcilerden çekilen host sayısından söylenebilir. Bu zafiyet NTPv2 ve NTPv3 sürümlerinden kaynaklanmaktadır.
ntpq -c readlist <IP_ADDRESS>
: Belirtilen NTP sunucusunun 'readlist' komutunu kullanarak NTP sunucuları listesini okur.ntpq -c readvar <IP_ADDRESS>
: Belirtilen NTP sunucusunun 'readvar' komutunu kullanarak değişkenleri okur, yani sunucunun mevcut durumu ve yapılandırma bilgilerini getirir.ntpq -c peers <IP_ADDRESS>
: Belirtilen NTP sunucusunun 'peers' komutunu kullanarak NTP sunucularıyla ilişkili olan ve senkronizasyon durumunu gösteren bilgileri getirir.ntpq -c associations <IP_ADDRESS>
: Belirtilen NTP sunucusunun 'associations' komutunu kullanarak NTP sunucusuyla ilişkili olan herhangi bir kuruluş veya senkronizasyon kaynağını listeler.ntpdc -c monlist <IP_ADDRESS>
: Belirtilen NTP sunucusunun 'monlist' komutunu kullanarak izleme (monitoring) listesini döndürür, yani sunucunun izin verilen istemcileri listeler.ntpdc -c listpeers <IP_ADDRESS>
: Belirtilen NTP sunucusunun 'listpeers' komutunu kullanarak NTP sunucusuna bağlı diğer sunucuları ve onlarla olan ilişkileri listeler.ntpdc -c sysinfo <IP_ADDRESS>
: Belirtilen NTP sunucusunun 'sysinfo' komutunu kullanarak sistem bilgilerini getirir, yani sunucunun saat senkronizasyonu hakkında sistem düzeyinde bilgiler sağlar.
Sızma testlerinde nadiren karşılaşılan eski sistemlerde eski protokolün ortaya çıkması durumunda, bunun üzerinden bir örnek alıntı yapılarak kullanım gösterimi için bir örnek olarak kullanılabilir.
Ve işte NMAP komut dosyası isteğinin paket yakalaması:
Ve işte yanıtın paket yakalaması:
NTP sunucusunu bu tür saldırılardan korumanın bir yolu;
Koruma olan sistemde çıktı böyle olarak alınabilir.
NTP Amplification Attack
UDP kullanan NTP protokolü, TCP'den farklı olarak el sıkışma prosedürlerine ihtiyaç duymadan işlem yapılmasına olanak sağlar. Bu özellik, NTP DDoS güçlendirme saldırılarında istismar edilir. Burada saldırganlar sahte kaynak IP'ye sahip paketler oluşturarak saldırı isteklerinin kurbandan geliyormuş gibi görünmesini sağlar. Başlangıçta küçük olan bu paketler, NTP sunucusunun çok daha büyük veri hacimleriyle yanıt vermesini sağlayarak saldırıyı güçlendirir. MONLIST komutu nadir kullanımına rağmen NTP servisine bağlı son 600 istemciyi raporlayabilir. Komutun kendisi basit olsa da bu tür saldırılarda yanlış kullanımı kritik güvenlik açıklarını ortaya çıkarıyor
İsteyenler, bu saldırının artık nadir görüldüğü sızma testlerinde yer almasından dolayı güncel olmadığını belirtebilir. Ancak ilgilenenler, konuyu anlatan güzel bir paylaşımı linkten inceleyebilirler.
NTP Amplification Saldırılarına Karşı Alınabilecek Önlemler
Diğer birçok DDoS tehdidinde olduğu gibi, NTP Amplication saldırılarının tamamen engellenmesi zordur, çünkü NTP sunucularından gelen yanıtlar geçerli sunucularda yasal trafik olarak görünür. Yine de alınabilecek bazı önlemler bulunmaktadır:
DDoS trafiği muazzam hacmi sayesinde en dayanıklı ağ yapılarını bile kolayca çökertebilir. Uygun filtreler kullanılarak belirlenmiş miktarın üzerinde trafik oluşturan kullanıcılar sistem dışında bırakılabilir.
NTP Amplification saldırıları da dahil olmak üzere çoklu 10Gbps DDoS tehditlerini saptırmak için isteğe bağlı olarak ölçülen global scrubbing networkten (DDoS saldırılarını temizleme ağı) yararlanarak hacimsel DDoS tehditlerine karşı koruma sağlanabilir.
Kaynak IP doğrulaması yapılarak, ağa gelen sahte paketler önlenebilir. Eğer ağın içinden, ağın dışında gibi gözüken kaynak IP adresinden bir paket yönlendiriliyorsa paketin sahte olduğu anlaşılır ve engellenir.
NTP sunucularında monlist komutunun devre dışı bırakılması ve sahte IP’lere izin veren ağlara giriş filtrelemesinin uygulanması ile birlikte amplification saldırıları engellenebilir.
Monlist komutunu destekleyen NTP sunucuların sayısı azaltılabilir veya bu komut devre dışı bırakılabilir. Monlist güvenlik açığından etkilenmemek için 4.2.7 sürümünden önceki NTP yazılımları kullanılmamalıdır. 4.2.7 sürümden önceki yazılımların güncelleştirilmesi gerekir.
NTP Amplification gibi saldırılara karşı önlem almak için düzenli olarak DDoS testi yaptırılması gerekmektedir.
Paket Yapısı
Flags (Bayraklar):
0x23: Mesaj türü (istemci modu) ve iletim modunu (simetrik aktif) gösteren onaltılık sayı.
Leap Indicator (Artık Sıçraması Göstergesi):
no warning (uyarı yok): Yaklaşan bir artık saniye ayarlaması olmadığını gösterir.
Version number (Sürüm numarası):
NTP Version 4 (NTP Sürüm 4): Kullanılan NTP protokolünün sürümünü gösterir.
Mode (Mod):
client (istemci): Zaman isteyen cihazın modunu gösterir.
Peer Clock Stratum (Eş Saat Katmanı):
secondary reference (ikincil referans): Eş saatin, birincil referans kaynağından bir atlama uzakta olduğunu gösterir.
Peer Polling Interval (Eş Yoklama Aralığı):
8 (256 saniye): Sunucu güncellemelerinin her 256 saniyede bir gönderileceğini gösterir.
Peer Clock Precision (Eş Saat Hassasiyeti):
-16 (0,000015259 saniye): Eş saatin hassasiyetini gösterir.
Root Delay (Kök Gecikme):
0,011917 saniye: İsteğin birincil referans kaynağına ulaşması için geçen süreyi gösterir.
Root Dispersion (Kök Dağılımı):
0,048553 saniye: Birincil referans kaynağındaki tahmini maksimum hatayı gösterir.
Reference ID (Referans Kimliği):
1.1.1.2: NTP sunucusunun IP adresini gösterir.
Reference Timestamp (Referans Zaman Damgası):
Mar 2, 2024 20:54:40.858447634 UTC: Zaman sunucusunun isteği aldığı zamanı gösterir.
Origin Timestamp (Kaynak Zaman Damgası):
Mar 2, 2024 21:38:56.839149219 UTC: Cihazınızın isteği gönderdiği zamanı gösterir.
Receive Timestamp (Alma Zaman Damgası):
Mar 2, 2024 21:38:56.851752251 UTC: Zaman sunucusunun isteğinizi aldığı zamanı gösterir.
Transmit Timestamp (İletim Zaman Damgası):
Mar 2, 2024 21:38:58.839751478 UTC: Zaman sunucusunun yanıtı gönderdiği zamanı gösterir.
Genel olarak, bu çıktı zaman senkronizasyonu için NTP sunucusuyla başarılı bir iletişimi gösterir.
NTP ATTACK Önlemler
Yazı içerisinde buna biraz değinmiştik, şimdi ise bir hash veya benzeri koruma sistemleri kullanarak kimsenin araya girmesini engelleyip M2M sistemlerinin iletişimini sağlayabiliriz.
Tekrardan haberleşmeye başlandı ve paket boyutu da değişmiş oldu.
Last updated