ICMP tüneli

Bir **ICMP tüneli**, ICMP yankı istekleri ve yanıt paketlerini kullanarak iki uzak bilgisayar (istemci ve vekil) arasında  bir bağlantı kurar. Bu tekniğin bir örneği ping istekleri ve yanıtları üzerinden tüm TCP trafiğini tünellemektir.

## Teknik detaylar
ICMP tüneli uzaktaki bir bilgisayara gönderilen bir yankı paketinin içerisine rastgele veri enjekte ederek çalışır. Uzaktaki bilgisayar başka bir ICMP paketine cevap enjekte edip geri göndererek aynı şekilde yanıt verir. İstemci tüm iletişiminde  ICMP yankı istek paketlerini kullanarak gerçekleştirirken vekil (proxy) yankı yanıt paketlerini kullanır.

Teoride, vekilin yankı istek paketlerini kullanması mümkündür (bu uygulamayı çok daha kolay hale getirir) ancak bu paketlerin istemciye iletilmesi gerekmez çünkü istemci çevrilmiş bir adresin (NAT) arkasında olabilir. Bu çift yönlü veri akışı sıradan bir seri hat ile soyutlanabilir.

ICMP paketlerinin yapısını tanımlayan RFC 792, herhangi bir tip 0 (yankı yanıtı) veya 8 (yankı mesajı) ICMP paketleri için rastgele bir veri uzunluğuna izin verdiği için ICMP tünellemesi mümkündür.

## Kullanımları
ICMP tüneli, gerçek trafiğin  yoluyla güvenlik duvarı kurallarını atlamak için kullanılabilir. ICMP tünelleme yazılımının uygulanmasına bağlı olarak bu tip bağlantılar, iki bilgisayar arasında  kanalı olarak da sınıflandırılabilir. Uygun derin paket inceleme veya iz kayıtlarının incelemesi olmadan ağ yöneticileri kendi ağları üzerinde bu tip trafiği tespit edemeyecektir.

## Hafifletme
Bu tür tünellemeyi önlemenin bir yolu, insanların genellikle önemsemediği bazı ağ işlevlerini kaybetme pahasına ICMP trafiğini engellemektir (örneğin, bir eşin çevrimdışı olduğunu neredeyse hemen belirlemek yerine onlarca saniye sürebilmesi gibi). Bu tür saldırıyı azaltmanın başka bir yöntemi, güvenlik duvarlarından yalnızca sabit boyutlu ICMP paketlerine izin vermektir. Bu işlem bu tür davranışları engelleyebilir veya ortadan kaldırabilir.

ICMP tünelleri bazen LAN ile dış dünya arasındaki trafiği engelleyen güvenlik duvarlarını atlatmak için kullanılır. Kullanıcının kullanım için ödeme yapmasını gerektiren ticari wifi hizmetleri veya kullanıcının ilk önce bir web portalında oturum açmasını gerektiren bir kütüphane örnek verilebilir. Ağ yöneticisi yalnızca TCP ve UDP gibi normal taşıma protokollerini engellemenin yeterli olduğunu hatalı şekilde varsayar ve ICMP gibi çekirdek protokolleri engellemezse, sonrasında ağ erişimi için yetki olmamasına rağmen İnternet'e erişmek için bir ICMP tünelinin kullanılması bazen mümkün olur. Kullanıcıların ICMP paketlerini (belki IEEE 802.1X kullanarak diğer tüm paket türleri) harici eşlerle değiştirmesine izin vermeyen şifreleme kuralları ve her bir kullanıcı kuralları yetkilendirmeden önce bu problemi çözer.

## Ayrıca bakınız

* ICMPv6 
* 

## Kaynakça

## Dış bağlantılar

* RFC 792, *Internet Control Message Protocol* 
* itun  Simple IP over ICMP tunnel 
* Hans ICMP tunnel for Linux (server and client) and BSD MacOSX (client only) 
* ICMP-Shell , a telnet-like protocol using only ICMP 
* PingTunnel Tunnel TCP over ICMP 
* ICMP Crafting  by Stuart Thomas 
* Using the ICMP tunneling tool Ping Tunnel  
* Project Loki  Article on ping tunneling in *[[Phrack]]* 
* ICMP tunnel with C# source code 
* icmptunnel  IP over ICMP tunnel by Dhaval Kapil