Senaryo: Firewall ve Web Proxy (/Content Filter) ile tüm internet trafiği engellenmiş bir kullanıcı/hacker internete ulaşmak istiyor. Yerel ağdan internete giden tüm port ve protokoller Firewal tarafından engellenmiştir. Web erişimi için hizmet veren proxy ise yalnızca yetkili kulllanıcılara internet erişimi sağlamaktadır. Bu sistemlere takılmadan sınırsız ve kayıt altına alınamaz internet trafiği nasıl elde edilebilir?
DNS Tunnel
Bir protokol içerisinde başka bir protokole ait veri taşıma işlemine protokol tünelleme denir. DNS paketleri içersinden herhangi bir tcp/udp paketini (örneğin, http,ftp, ssh vb.) taşıma işlemi de DNS Tünnelleme olarak isimlendirilir.
DNS sunucu kendisinden sorgulanan bir dns isteğine önce önbelleğini kontrol ederek yanıt vermek ister eğer alan adı dns önbelleğinde yoksa, sorgulanan alan adından sorumlu dns sunucuyu bulur ve ona sorar. Sorgulanan alan adından yetkili dns sunucu ilgili dns kaydı için yanıt verir ve DNS sunucu bu yanıtı istemciye iletir.
Örnek:
Kullanıcı, tunnel.bga.com.tr alan adını sorgulamak istediğinde yerel ağındaki dns sunucu bu kayıt önbelleğinde yoksa bu isteğe doğrudan yanıt veremez. tunnel.bga.com.tr alan adından sorumlu dns sunucuyu bulur dns.bga.com.tr ve ona tunnel A kaydını sorar aldığı yanıtı istemciye iletir.
Tcp-Over-Dns Çalışma Prensibi
tcp-over-dns client, dns verisini encode ederek ISP’nin dns sunucusuna iletir. ISP’nin dns sunucuyu bu isteğe yanıt veremez ve dns isteğini tcp-over-dns server a iletir. tcp-over-dns server gelen isteği decode eder ve ilgili isteğe yanıtı client a geri gönderir. DNS isteklerinin, dns sunucu tarafından önbelleğe alınma ihtimaline karşı her dns sorgusunda rastgele bir subdomain kullanılır.
Ön Gereksinimler:
- Dns isteklerinize yanıt alabildiğinizi doğrulamalısınız. Örneğin; ‘nslookup google.com.tr’ komutu ile google ip adreslerini öğrenebiliyorsanız. DNS isteklerinize yanıt veriliyordur.
- İnternet dünyasında sizin kontrolünüzde olan bir sunucu.Administrator veya root yetkilerine sahip olmalısınız. UDP 53 portu farklı bir uygulama tarafından kullanılmıyor olmalı ve erişim problemi yaşanmamalıdır.
- Kullandığınız işletim sistemine göre tcp-over-dns yazılımı. Mutlaka java kurulu olmalıdır.
http://analogbit.com/software/tcp-over-dns/
Tcp-Over-Dns Server Yapılandırması
Bu işlem için bir alan adına ve bu alan adından sorumlu dns sunucuya ihtiyaç vardır. Bu örnekde aşağıdaki dns kayıtları oluşturup, kullanılmıştır.
NS = dns.bga.com.tr
A = tunnel.bga.com.tr
tcpoverdns, multi platform çalışmaktadır (Windows,Linux,*BSD). Bu örnekde dns sunucu FreeBSD istemci ise Windows 7 işletim sisteminde kurulmuştur.
Not: Tcp-Over-Dns server, gelen trafiği port 443 (ssh servisine) yönlendirecektir.
Tcp-Over-Dns Client Yapılandırması
İstemci bilgisayarda client-example.bat dosyası düzenlenerek DOMAIN değeri bu iş için oluşturulan alan adı ile değiştirilir.
client-example.bat dosyası çalıştırıldığında tünel için 127.0.0.1:8080 portu dinleme alınacaktır.
Tcp-Over-Dns Client, yerel bilgisayarda 8080 portunu dinleme açtı ve bu porta yapılan bağlantıları tunnel.bga.com.tr makinasının 443 (ssh) portuna iletecektir. Test için, putty aracı ile 127.0.0.1:8080 portuna bağlantı isteği başlatıldığında bga.com.tr adresinin 443 portuna erişim kurulacaktır.
SSH trafiği Firewall tarafından engellenmiş olsada, DNS paketleri ile ssh trafiği internete kaçırıldı. Bu yöntem ile birçok yerde bulunan Hotspot sistemleri de atlatılabilmek mümkündür.
2 Yorum
linuxta internete erişmeye çalışıyorsanız nc ile de karşıdaki ssh sunucusu üzerinden socks proxy’si açıp tünelleyebilirsiniz. ör.
mkfifo piped
nc -u host 53 piped
ssh -vD 8080(socks sunucu adresi) k.adi@localhost -p 2222
ile açabilirisiniz ör.
Servis sağlayıcınının dns sunucusu cevap veremiyorsa, server'a nasıl iletiliyor?