F5 BIG-IP Cookie Tespiti ve Deşifreleme

Web sunucuları F5 BIGIP yük dengeleme cihazları arkasına ise, F5 cihazı kullanıcıya bir tanımlama bilgisi(Cookie) atayarak, aynı kullanıcının sonraki isteklerini içerideki ilgili web sunucusuna yönlendirmektedir.

F5 tarafından atanan bu Cookie değeri, bilinen bir algoritmayla kodlandığından, aynı kodlama yöntemi tersine uygulanarak F5 arkasındaki web sunucusunun gerçek IP adresini ve web sunucu port numarasını öğrenmek mümkün olabilmektedir. 

F5 cihazı arkasındaki web sunucusu Internet üzerinden ulaşılabilir bir IP adresine sahipse, bu durum DoS saldırılarında F5’i egale edip direk arkadaki web sunucusuna saldırma amaçlı kullanılabilir. Veya yapılan denetimler sırasında F5’in aradan çıkartılmasına ve direk hedef sistemin denetlenmesine imkan sağlar.
F5 cihazı arkasındaki web sunucusu yerel IP adresine sahipse, bu bilgiler diğer saldırıları destekleme amaçlı kullanılabilir.
Bunların dışında F5 tarafından atanan Cookie değerleri web denetim yazılımlarına girilerek, bu yazılımların sadece belirtilen web sunucusunu taraması sağlanabilir.

Kodlanmış IP adreslerini farklı iç IP adresleriyle değiştirerek bunlarda bulunan servislere ulaşmak, veya kodlanmış TCP port bilgisini farklı portlarla değiştirerek port tarama veya diğer portlar üzerindeki servislere ulaşmak mümkün gözükmüyor. Veya benim test ettiğim hedeflerdeki konfigürasyonlarda şu ana kadar mümkün olmadı.

En sık karşılaşılan kalıcı Cookie değeri nasıl kodlanıyor inceleyelim (Tüm detaylar Overview of BIG-IP persistence cookie encoding makalesinde bulunabilir).

Örneğin 192.168.10.1 IP adresi ve 8080 port numarası üzerinden servis veren web sunucumuzu F5 Big-IP ile dışarıya açtığımızda oluşturulacak tanımlama bilgisi şu şekilde olacaktır:
17475776.36895.0000

Noktalarla ayrılmış bu değerde ilk bölüm IP adresini, ikinci bölüm ise port numarası bilgisini içermektedir. Üçüncü bölüm 4 tane 0’dan oluşmaktadır. Aşağıdaki gibi hesaplanır.

IP adresindeki her bir oktet, hex değerine çevrilir
192.168.10.1 = 0xC0 . 0xA8 . 0x0A . 0x01
Reverse byte order ile birlestirilir (0x010AA8C0)
0x010AA8C0 = 17475776

Veya şu şekilde hesaplanabilir:
192+168×256+10×(256^2)+1×(256^3) = 17475776

Port bilgisi ise
8080 = 0x1F90
Reverse byte order = 0x901F
0x901F = 36895

 

Özetle, Windows hesap makinesini bilimsel moda getiren herhangi birisi bile, bu değerlere bakarak içerideki sunucuların IP adreslerini öğrenebilir.

F5 kullanıyorsanız ve bu durum hoşunuza gitmiyorsa Overview of cookie encryption makalesine göz atın.

 

Aktardığım haliyle eski bir konu ve Nessus dahil bir çok yazılım bu problemi kontrol edebiliyor. F5 firması Haziran 2011’de cookie encoding makalesini güncellemiş. Bahaneyle uzun zamandır kullandığım script’i de, IPv4 Route Domain ve IPv6 kalıcı cookie değerlerini de deşifre edecek şekilde güncelledim ve paylaşmak istedim.

Örnek kullanım aşağıdaki gibidir, dilediğiniz kadar cookie değerini parametre olarak verip, içlerinde F5 BigIP cookie’si bulunuyorsa gerçek değerlerine çevrilmelerini sağlayabilirsiniz. Buradan indirebilirsiniz.

$ ./decode_bigip.py  "Set-Cookie: PCOOKIE1=2741283008.20480.0000; path=/ BIGipServer<pool_name>=rd5o00000000000000000000ffffc0000201o80 BIGipServer<pool_name>=vi20010db8000000000000ffff0a140574.20480"

Found IPv4 Cookie: 2741283008.20480.0000
Decoded IP/port: 192.168.100.163:80

Found IPv4 Cookie with root domain: rd5o00000000000000000000ffffc0000201o80
Root domain ID: 5
Decoded IP/port: 192.0.2.1:80

Found IPv6 Cookie: vi20010db8000000000000ffff0a140574.20480
Decoded IPv6/port: [2001:db8::ffff:a14:574]:80

$

 

2 Responses to “F5 BIG-IP Cookie Tespiti ve Deşifreleme”

  1. […] F5 Cookie değerinin nasıl decode edilebileceği bilgisini bir önceki yazıda bulabilirsiniz. […]

  2. Hakan says:

    Serkan bey, bu faydalı yazı için teşekkürler.
    F5 Hakkında bir sorum olacak, bu konu hakkında yardımcı olursanız çok sevinirim Şöyle ki;

    F5 arkasında 5 makinemiz, ve bu makinelerde çalışan bir web uygulamamız var. Session’ ı SQL’ de tutuyoruz. Bu 5 makine F5 arkasına girdiği zaman sessionlar unutluyor ve farklı farklı yerlerde hatalar alıyoruz. En fazla aldığımız hata, ” object variable or with block variable not set ”

    Hatayı nerede aramalıyız.

    NOT: Bu 5 Makine F5 arkasında çıkartılıp tek makine olarak kullanıldı zaman uygulama sorunsuz çalışıyor. Ne zaman F5 in arkasına dahil edilse hata alıyoruz? Kod tarafında yada F5 tarafında ekstra yapılması gereken bir şey var mı?

    Teşekkürler.

Leave a Reply

Your email address will not be published. Required fields are marked *