ICMP Keşif (“Reconnaissance”) Saldırıları

ICMP Nedir?

ICMP (Internet Control Message Protocol) protokolü, IP protokol takımının bir parçasıdır. Hedef ve özellikleri RFC 792’de belirtilmiştir. ICMP protokolünün temelde iki çeşit görevi bulunmaktadır. Bu görevler;

  • Sürekli hata durumlarının bildirilmesi ve
  • Ağ ile ilgili genel özellikleri saptamak üzere, istek ve cevap mesajlarıyla ağın araştırılmasıdır.

Bu sebeple, ICMP mesaj çeşitleri de yerine getirdikleri görevleri yansıtacak şekilde ikiye ayrılmaktadır;

  • ICMP Hata Mesajları (Örneğin; “Destination Unreachable”, “Source Quench”, “Redirect”, vs.)
  • ICMP Sorgu Mesajları (Örneğin; “Echo Request & Reply”, “Timestamp Request & Reply”, vs.)

ICMP mesajları, IP paketleri içinde gönderilseler de, bu ICMP’nin daha üst seviye bir protokol olduğu için değil, IP’nin bir iç parçası olduğu içindir. ICMP mesajları aşağıdaki şekildeki gibi sarmalanarak gönderilirler.

icmp-pr555.png

Şekil-1 ICMP Mesajları gönderimi

ICMP Keşif Saldırıları

ICMP mesajlarını değiştirip, mesajın başlık (“header”) kısmında bulunan belirli alanlarda oynamalar yaparak veya bu mesajları asıl amaçları dışında kullanarak, hedef olarak seçilen sistemlere keşif (“reconnaissance”) saldırıları düzenlenebilir. Keşif saldırılarının amacı, yapılacak asıl saldırılar öncesinde, hedef sistemler hakkında gerekli bilgileri elde etmek ve bu bilgileri kullanarak hedef sistemlere etkin saldırılar düzenlemektir. Bu yazıda toplamda yedi çeşit keşif türü incelenecektir;

  1. Sunucu Tespiti
  2. Ağ Topolojisinin Tespiti
  3. Güvenlik Duvarı Kuralları Tespiti (“Firewalk”)
  4. Ters Eşleme (“Inverse Mapping”)
  5. Erişim Kontrol Listesi (“Access Control List”) Tespiti
  6. Protokol/Port Taraması
  7. İşletim Sistemi Tanıma (“OS Fingerprinting”)

1. Sunucu Tespiti

ICMP mesajları kullanılarak sunucu tespiti yapılması iki farklı yöntemle mümkün olmaktadır. Bu yöntemler; gönderilen ve alınan mesajlar olarak aynı olmakla birlikte, mesaj içeriğindeki hedef sunucu adresleri olarak farklılık göstermektedir.

ICMP/Ping  Taraması (“ICMP/Ping Sweep”)

ICMP mesaj çeşitlerinden “Echo Request” mesajı gönderilip, cevap olarak “Echo Reply” mesajı alınarak (daha bilinen bir şekilde “ping” komutuyla), yerel ağ veya İnternet üzerinden erişilebilir ve çalışmakta olan sunucuların tespit edilmesi mümkün olmaktadır. Bu yöntemde, ICMP mesajı doğrudan hedef sunucunun IP adresine gönderilir. Bu işlemin tek bir IP adresi yerine, belirli bir IP adres aralığı için yapılması ve bu aralıktaki sunucuların tespit edilmesi mümkün olmaktadır.

ICMP Yayınlama (“Broadcast ICMP”)

Bu yöntem, her bir sunucunun IP adresine tek tek “ICMP Echo Request” mesajı göndermekle uğraşmak yerine, hedef ağın yayın (“broadcast”) adresine bir tek “ICMP Echo Request” mesajı gönderilerek gerçekleştirilir. Bu sayede, toplu olarak ağdaki canlı sunucuların mesajı gönderen bilgisayara/saldırgana “ICMP Echo Reply” mesajları göndermesi sağlanılarak, tüm bir ağdaki çalışan sunucuların tespit edilmesi mümkün olmaktadır. Bu şekilde, tek bir mesajla tüm ağdaki çalışan sunucuların tespiti yapılabilmektedir.

Tüm kolaylığına rağmen, bazı Unix (Linux Kernel 2.2.x ve 2.4.x) ve Unix benzeri işletim sistemleri (Solaris 2.5.1, 2.6, 2.7 ve HP-UX v10.20) dışındaki diğer bir çok işletim sisteminin yayın adresinden gelen mesajlara cevap göndermemesi sebebiyle, bu tespit yöntemi yaygın olarak kullanılamamaktır (Örneğin, Windows işletim sistemi).

2. Ağ Topolojisinin Tespiti

Hedef sunucunun ağ topolojisindeki yerinin tespitinde “traceroute” (Windows işletim sistemleri için “tracert”) komutu kullanılmaktadır. Bu komutun gerçekleştiriminde (Windows işletim sistemi için), ICMP “Echo Request” mesajları ve ICMP paketi içerisinde yer alan TTL (Time-to-Live) alanı kullanılır. TTL değeri, paketin hedefe giderken yol boyunca uğradığı her bir yönlendirici tarafından bir azaltılarak bir sonrakine iletilir. Bu iletim sırasında TTL değeri sıfıra ulaşır ise, paket düşürülür ve gönderen sunucuya ICMP “Time Exceeded” mesajı gönderilerek paketin hedefe ulaşamadan düşürüldüğü bildirilir. Bu komut ile yapılan ise, hedefe giderken yol boyunca, ilk olarak TTL değeri bir olan ICMP paketinin gönderilmesi ve sonrasında ise ICMP paketindeki TLL değerinin sırayla birer arttırılarak yollanması, böylece her bir adımdaki sunucudan dönecek ICMP “Time Exceeded” mesajlarıyla yol üzerindeki sunucuların tespit edilebilmesidir.

Hedef sistemin bulunduğu ağ topolojisi bilgisinin elde edilmesi ise, anlatılan yöntemin bir ağdaki bütün bilgisayarlar için gerçekleştirilmesi sonucu olabilmektedir.

3. Güvenlik Duvarı Kuralları Tespiti (“Firewalk”)

Paket filtreleyen bir güvenlik duvarı üzerindeki açık olan portların tespit edilmesi, ağ topolojisinin tespitinde kullanılan yöntemin daha ileri götürülmesiyle mümkün olmaktadır. Bu sayede, güvenlik duvarı üzerindeki kurallar tespit edilebilmektedir.

Bu işlem, iki aşamada yapılmaktadır. İlk aşamada, saldırganla güvenlik duvarı arasındaki sunucu/yönlendiricilerin (“hop”) sayısı “traceroute” yapılarak tespit edilir. İkinci aşama olan tarama aşamasında ise, güvenlik duvarı arkasındaki bilinen bir sunucuya, TTL değeri güvenlik duvarından bir büyük olan TCP veya UDP segmentleri gönderilir. Bu işlem sonrası cevap olarak ICMP “Time Exceeded” mesajı geliyorsa, bu segmentin güvenlik duvarını geçebildiği anlaşılır (Segmentler güvenlik duvarını geçtikten sonra TTL değerleri sıfıra düşeceğinden dolayı). Cevap olarak herhangi bir mesajın geri dönmediği durumda ise segmentin güvenlik duvarı tarafından engellendiği sonucu çıkarılır. Bu işlemin olası bütün TCP/UDP port kombinasyonları için gerçekleştirilmesi durumunda, güvenlik duvarı üzerindeki açık olan portlar tespit edilebilir.

Ters Eşleme (“Inverse Mapping”)

Ters eşleme yöntemiyle, güvenlik duvarı arkasında bulunan sunucuların veya tüm bir ağın tespit edilmesi mümkün olabilmektedir.

Birçok güvenlik duvarında ICMP mesajları için, dinamik filtreleme / durum denetimli (“stateful”) engelleme uygulanmamaktadır. Bu sebeple, güvenlik duvarı arkasındaki bir iç ağın, sahip olduğu tahmin edilen bir IP adres aralığı için, ICMP “Echo Reply” mesajları gönderilebilmektedir. Bu ağdan ICMP “Echo Request” mesajı gönderilmediği halde, güvenlik duvarı durum bilgisini tutmadığı için, ICMP “Echo Reply”mesajları engellenmeden güvenlik duvarından geçebilirler. Güvenlik duvarını geçen ICMP “Echo Reply ” mesajları arasından hedef IP adresinde bir sunucu bulunmayan mesajlar için, iç ağdaki bir yönlendirici tarafından ICMP “Host Unreachable” mesajı gönderilir. Saldırgan gönderilen bütün bir IP aralığındaki adreslerden, ICMP “Host Unreachable” mesajı gelen adresleri elde eder. Bu sayede, ICMP “Host Unreachable” mesajı gönderilmeyen IP adreslerinde çalışan sunucular bulunduğu tespit edilerek, güvenlik duvarı arkasında bulunan iç ağ ortaya çıkarılabilir.

Erişim Kontrol Listesi (“Access Control List”) Tespiti

ICMP hata mesajlarını kullanarak, yönlendirici veya sunucu gibi filtreleme yapabilen cihazlarda bulunan erişim denetim listelerinin tespit edilmesi mümkün olmaktadır.

Bu yöntem, IP paketi başlığı içinde yer alan, toplam uzunluk (“Total Length”) alanının gerçek değerinden daha büyük bir değer ile değiştirilmesi ilkesine dayanmaktadır. Toplam uzunluk alanı değiştirilen paket hedef sunucuya ulaştığında,  hedef sunucu tarafından paket açılacaktır. Fakat toplam uzunluk değerine göre olması gereken ama gerçekte olmayan alandaki veriye ulaşılamaması sonucunda, hedef sunucu tarafından ICMP “Parameter Problem Code 2” mesajı oluşturulacak ve saldırgana yollanacaktır. Gönderilen paketin karşılığında, ICMP parametre sorunu mesajının alınması, saldırgana pakette kullanılan protokol ve servisin filtreleme cihazı tarafından engellenmediğini göstermektedir. Başlık kısmı değiştirilen IP paketi içinde, ICMP veya daha üst seviye protokoller olan TCP veya UDP protokolleri sarmalanmış olabilir.

Bu işlemin, tüm olası protokol ve servis kombinasyonları ile bütün bir ağ için tekrarlanması durumunda, filtreleme cihazında yer alan erişim listelerinin tamamını elde etmek mümkün olabilmektedir.

Protokol/Port Taraması

ICMP “Protocol/Port Unreachable” mesajlarını kullanarak, hedef sunucu üzerinde hangi protokol veya portların kullanıldığını tespit etmek mümkündür.

Bu yöntemde, IP başlığı içinde yer alan sekiz bitlik protokol alanın tüm kombinasyonları (toplamda 256 değişik protokol) kullanılarak hazırlanan paketler hedef sunucuya gönderilir, cevap olarak ICMP “Protocol Unreachable” mesajı gelen protokol veya portların kapalı olduğu, cevap gelmeyenlerin ise açık olduğu anlaşılabilmektedir. Bu sayede, hedef sunucunun kullanımda olan açık protokol veya portlarının bir listesi elde edilebilmektedir.

İşletim Sistemi Tanıma (“OS Fingerprinting”)

Farklı işletim sistemi geliştiricilerinin, ağ trafiğini yönetme anlamında  birbirlerine göre az da olsa farklı yolları benimsemiş olmaları sebebiyle, aktif veya pasif olarak hedef sunucunun işletim sisteminin tespit edilmesi mümkün olmaktadır.

Aktif Tanıma

İşletim sisteminin aktif olarak tanınması, hedef sunucuya doğrudan ICMP hata/sorgu mesajları gönderilmesi ve sonrasında gelen cevapların analiz edilmesi ile gerçekleştirilir. Dönen ICMP mesajlarının başlık kısmındaki belirli alanlar, işletim sistemlerine göre farklılık gösterebildiğinden dolayı, bir veya birden fazla mesaj alış verişi ile işletim sistemlerinin tespit edilmesi mümkün olabilmektedir (Herhangi bir cevabın dönmemesi de tanıma işleminde kullanılır). Gönderilen farklı türdeki ICMP mesajlarına dönülen/dönülmeyen cevapların işletim sistemlerine göre değişebilmesi sayesinde, aşağıdaki örneklerdeki gibi hedef sistemlerin işletim sistemleri ve bu işletim sistemlerinin versiyonları tespit edilebilmektedir.

icmp_lin.jpg

Şekil – 2 Linux işletim sistemleri için ICMP mesajlarıyla tanıma

icmp_win.jpg

Şekil – 3 Windows işletim sistemleri için ICMP mesajlarıyla tanıma

Pasif Tanıma

Pasif tanıma, hedef sunucuya doğrudan ICMP mesajları göndermek yerine, hedef sunucunun ağ trafiğinin dinlenmesi sonucu elde edilen bilgilerin (gelen/giden ICMP mesajlarının) analiz edilmesiyle gerçekleştirilir. Pasif tanımanın aktif tanımaya göre pozitif yönleri olarak; herhangi bir ağ trafiği oluşturmadığından zor fark edilebilmesi, tüm trafiğin kaydedilmesinden dolayı daha fazla mesajın incelenebilmesi, trafik analizinin çevrimdışı olarak yapılabilmesi, iç veya dış ağın farklı noktalarının dinlenerek (ağı dinleyen sensörler yardımıyla), farklı ağ trafik bilgilerine erişilebilmesi gibi özellikleri sayılabilir.

Referanslar

[1] SANS Institute, ICMP Attacks Illustrated, 2001

[2] Ofir Arkin, ICMP Usage in Scanning, Haziran 2001

[3] KoonYaw Tan, Intrusion Detection FAQ: How can attacker use ICMP for reconnaissance?, http://www.sans.org/security-resources/idfaq/icmp_misuse.php (Ağustos 2010’da erişildi)

This entry was posted in Network Security and tagged , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

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