ICMP Tünelleme

DNS Tünelleme’den daha önce bahsetmiştik. Şimdi de ICMP protokolünden faydalanarak tünelleme nasıl yaparızı göreceğiz.

İç ağınızdan dış ağdaki birine ping atmayı başarabiliyorsanız bilinki icmp dışarıya açık ve siz iç ağınızdan dış ağa icmp üzerinden data taşıyabilirsiniz.

# ICMP ile Data Transferi

Normalde bir ping attığımızda aşağıda da göreceğiniz üzere icmp request göndeririz. Gelen cevap ise icmp reply’dır.

pngg - ICMP Tünelleme

Ve bir icmp paketi aşağıdaki gibidir. Özellikle data kısmına dikkat edin. “abcd….vwabc…” şeklinde bir data gönderilmiş.

icm - ICMP Tünelleme

Data alanına istediğimizi yazabiliriz. Örneğin hping aracı ile gokhan kesici gönderelim icmp ile karşı tarafa.

hping3 -1 192.155.91.32 -e "gokhan kesici"

pg - ICMP Tünelleme

# Proof of Concept Çalışma – ICMP Tünelleme

ICMP üzerinden data transferi yapılabildiğini gördük. Şimdi de echo request ve echo reply üzerinden tünel oluşturmayı sağlayan bir araç ile proof of concept bir tünel oluşturalım.

Öncelikle github’dan icmptunnel aracı tünelin iki ucuna da (istemci ve sunucu) indirilir ve derlenir.

git clone https://github.com/DhavalKapil/icmptunnel /opt/icmptunnel
cd /opt/icmptunnel/
make

Sunucu ucunda ilgili derlenen yazılım da tun0 arayüzünün ip’si -s parametresi ile tanımlanarak çalıştırılır.

/opt/icmptunnel/icmptunnel -s 10.0.1.1

İstemci tarafında yazılım çalıştırılmadan önce routing işlemleri için server, gateway bilgileri doldurulur. Server bilgisi olarak yukarıda da belirttiğimiz 10.0.1.1 ‘i kullandık. Gateway için ise bilgisayarınızda varsayılan gatewayiniz.

tn - ICMP Tünelleme

Şimdi de bağlanılacak sunucu ip si belirtilerek istemci tarafında tun0 oluşacak şekilde ilgili yazılım çalıştırılır. client.sh içerisinde istemciye verilecek ip (10.0.1.2) de belirtilmiştir.

/opt/icmptunnel/icmptunnel -c 192.155.91.32

Artık yavaşta olsa bir tünel kuruldu. Sunucu tarafına paketler gidiyor olacaktır. Eğer gidemiyorsanız firewall vs. çeşitli kontrolleri gerçekleştirmelisiniz.

# Önlem:

  • İçeriden dışarıya (WAN’a) icmp’i isteklerini kapatın. ICMP protokolü hata çözmede faydalı bir protokol. Bu sebeple sadece içeriden içeriye (L2L) icmp paketlerine izin vermeniz önerilir.