Sohbet2013
  Scoks
 

Socks Nedir ?

 

Türkçe İçerik

SOCKS

SOCKS, client-server uygulamalarının şeffafça network güvenlik duvarı servislerini kullanmasına izin veren bir internet protokolüdür. SOCKS , SOCKETS in kısaltılmış şeklidir.

Bu protokol MIPS Computer Systems sistem müdürü David Koblas tarafından geliştirilmiştir. MIPS firmasının Silicon Garphics tarafından 1992 yılında devralınmasından sonra Koblas aynı yılın Usenix Security sempozyumunda bir sunum gerçekleştirerek SOCKS kullanımı herkese açık hale geltirdi. Protokol, 4. versiyonuna NEC firmasından Ying-Da Lee tarafından getirildi.

SOCKS referans mimarisi ve clienti Permeo Technologies'e aittir. ( Not : Permeo Technologies , Blue Coat Systems tarafından satın alınmıştır ).   ( Blue Coat Systems , NEC firmasının bir türevidir ).

SOCKS , OSI modelinin 5. katmanında - (Session Layer : sunum ( presentation ) ve taşıma ( transport ) katmanları arasındaki orta katmandır.) işler. 

İçerik:


    * 1 SOCKS 4 protokol
          o 1.1 SOCKS 4a protokol
    * 2 SOCKS 5 protokol
    * 3 SOCKS yazılım
    * 4 Referanslar
    * 5 Harici linkler

 SOCKS 4 protokol

Tipik bir Socks 4 bağlanma isteği şuna benzerdir ( her rakam 1 byte olmak üzere ) :

Client'den SOCKS Server'a:

field ( Alan ) demek çevirme gereği duymadım.
   
 * field 1: SOCKS versiyon numarası , 1 byte, bu versiyon için 0x04 olmalıdır
    * field 2: komut kodu, 1 byte:
          o 0x01 = TCP/IP kurun , stream bağlantı
          o 0x02 = TCP/IP port binding kur
    * field 3: network byte order port numarası, 2 bytes
    * field 4: network byte order IP adresi, 4 bytes
    * field 5: kullanıcı adı (user ID), değişken uzunluğu, boş olarak sonlandırılmış (0x00)

Server'dan SOCKS client'e:

    * field 1: 0 (null) byte
    * field 2: status, 1 byte:
          o 0x5a = istek sağlandı
          o 0x5b = istek reddedildi ya da gerçekleştirilemedi
          o 0x5c = istek gerçekleştirilemedi çünkü client identd' ı çalıştırmıyor (ya da server tarafından ulaşılamıyor )
          o 0x5d = istek gerçekleştirilemedi çünkü client' in  identd'si istekteki kullanıcı adını  (user ıd ) onaylıyamadı  
    * field 3: 2 arbitrary bytes, görmezden gelinmeli
    * field 4: 4 arbitrary bytes, görmezden gelinmeli

Örnek Olarak:

Bu Fred'i 66.102.7.99:80 e bağlamak için bir SOCKS 4 bağlanma isteğidir , server "OK" ile cevaplar. 

    * Client: 0x04 | 0x01 | 0x00 0x50 | 0x42 0x66 0x07 0x63 | 0x46 0x72 0x65 0x64 0x00
          o The last field  'Fred' ASCII karakterlerle , takiben null byte.
    * Server: 0x00 | 0x5a | 0xXX 0xXX | 0xXX 0xXX 0xXX 0xXX
          o 0xXX herhangi bir byte değeri olabilir. Socks 4 protokolünün belirttiği bu byte değerleri görmezden gelinmeli.

Bu noktadan itibaren SOCKS client den SOCKS servera gönderilen her data 66.102.7.99 ile yer değiştirecektir ve bu işlem tersine de yapılabilir .
 "connect" için Komut alanı 0x01 ya da "bind"için  0x02 olabilir . "bind"  aktif FTP gibi protokoller için gelen bağlantılara izin verir .

SOCKS 4a protokolü

SOCKS 4a , hedefteki hostun domain ismini çözümleyemeyen clientlere ,hostun domain ismini belirlenmesine izin veren basit bir SOCKS4 protokol uzantısıdır 

Client, DSTIP nin ilk üç byte'ına null ve son byte'ada sıfırdan farklı bir değer atamalıdır ( Bu , x sıfırdan farklı olmak üzere 0.0.0.x şeklindeki IP adresine tekabül eder- uygun görülmeyen hedef adres ve eğerki client domain ismini çözebilirse böyle birşey asla meydana gelemez.) NULL byte'ın kullanıcı adını (USERID) sonlandırmasını takiben client hedefteki domain ismini göndermeli ve diğer bir NULL byte ile bunu sonlandırmalıdır. Bu olay hem "connect" hem de "bind" isteklerinde kullanılır.

Client'den Socks Server'a  :

    * field 1: SOCKS versiyon numarası, 1 byte, bu versiyon için 0x04 olmalı. 
    * field 2: komut kodu, 1 byte:
          o 0x01 = Bir TCP/IP stream bağlantı kurun
          o 0x02 = Bir TCP/IP port binding kurun 
    * field 3: port numarasına göre sınırlandırılmış network byte , 2 bytes
    * field 4: geçersiz IP adresi üzerinde dur, 4 bytes,  ilk üçü 0x00 olmalı ve sonuncusu 0x00 dan farklı olmalı.
    * field 5: kullanıcı adı , değişken uzunluğu , null ile sonlandırılmış (0x00)
    * field 6: iletişim kurmak istenilen hostun domain ismi, değişken uzunluğu, null ile sonlandırılmış (0x00)

Server 'dan SOCKS client'e :

    * field 1: null byte
    * field 2: status, 1 byte:
          o 0x5a = istek sağlandı
          o 0x5b = istek reddedildi yada gerçekleştirilemedi
          o 0x5c = istek gerçekleştirilemedi çünkü client identd yi çalıştırmıyor (ya da server tarafından ulaşılamaz durumda)
          o 0x5d = istek gerçekleştirilemedi çünkü clientin identd si istekteki kullanıcı adını (user ID) doğrulamadı.
    * field 3: port numarasına göre sınırlandırılmış network byte , 2 bytes
    * field 4: IP adrese göre sıralandırılmış network byte, 4 bytes

4A protokolü kullanan bir server DSTIP yi istek paketinde kontol etmelidir. Eğerki adresi x sıfırdan farklı olmak suretiyle 0.0.0.x şeklinde gösteriyorsa, server clientin gönderdiği paketteki domain ismini okumalıdır. Server domain ismini çözmeli ve yapabilirse host istikametine bağlantıyı gerçekleştirmelidir   


SOCKS 5 protokolü

SOCKS 5 protokolü, daha fazla doğrulama seçeneği sunan , RFC 1928 de tanımlanmış bir  SOCKS 4 protokolü uzantısıdır. İlk anlaşma aşağıdaki gibidir: 
   
    * Client bağlar ve desteklenen doğrulama metodlarını içeren bir karşılama gönderir.
    * Server birini seçer (ya da eğerki metodlar kabul edilemez nitelikte ise gerçekleştirilemediğine dair bir cevap gönderir)
    * Birkaç mesajın seçilen doğrulama methoduna dayanarak client ve server arasında geçişi sağlanır.
    * Client SOCKS 4 e benzer bir bağlanma isteği gönderir.
    * Server  SOCKS 4 e benzer olarak cevaplar.

Desteklenen Doğrulama Metodları aşağıda numaralandırılmıştır: 

    * 0x00 - Doğrulama yok
    * 0x01 - GSSAPI [6]
    * 0x02 - Kullanıcı Adı / Şifre [7]
    * 0x03-0x7F - metodlar  IANA tarafından atanır [8]
    * 0x80-0xFE - methodlar özel kullanım için rezerv edilmiştir.

Clientten gelen ilk karşılama şöyledir:

    * field 1: SOCKS versiyon numarası ( bu versiyon için 0x05 olmalıdır )
    * field 2: desteklenen doğrulama metodu adedi, 1 byte
    * field 3: doğrulama metodları, değişken uzunluğu , desteklenen her metod için 1 byte

Serverın seçimi şöyle ifade edilir:

    * field 1: SOCKS versiyon, 1 byte ( bu versiyon için 0x05 )
    * field 2: seçilen doğrulama metodu, 1 byte, ya da  0xFF eğerki hiç bir metod kabul edilemez durumda ise.

Sonraki doğrulama metoda dayalıdır ve RFC 1929 da tanımlanmıştır:

Clientin doğrulama isteği şöyledir:


    * field 1: versiyon numarası, 1 byte ( 0x01 olmalı )
    * field 2: kullanıcı adı uzunluğu , 1 byte
    * field 3: kullanıcı adı
    * field 4: şifre uzunluğu , 1 byte
    * field 5: şifre

Doğrulamak için Serverın cevabı şöyledir:


    * field 1: versiyon, 1 byte
    * field 2: status kodu, 1 byte.
          o 0x00 = başarılı
          o herhangi başka değer  = başarısız, bağlantı kapatılmalıdır

Clientin bağlanma isteği şöyledir:

    * field 1: SOCKS versiyon numarası, 1 byte ( bu versiyon için 0x05 olmalı )
    * field 2: komut kodu, 1 byte:
          o 0x01 = bir TCP/IP stream bağlantısı kur
          o 0x02 = bir TCP/IP port binding kur
          o 0x03 = bir UDP portu birleştir
    * field 3: rezerv edilmiştir,  0x00 olmalıdır
    * field 4: adres şekli, 1 byte:
          o 0x01 = IPv4 adresi
          o 0x03 = Domain ismi
          o 0x04 = IPv6 adresi
    * field 5: Hedef adres :
          o  IPv4 adresi için 4 byte
          o Domain name için ismi takiben isim uzunluğu 1 byte 
          o IPv6 adresi için 16 byte
    * field 6:  network byte sıralanışıyla port numarası , 2 bytes

Server cevabı:

    * field 1: SOCKS protokol versiyonu, 1 byte (bu versiyon için 0x05)
    * field 2: status, 1 byte:
          o 0x00 = istek sağlandı
          o 0x01 = genel başarısızlık
          o 0x02 = kurallara dayanarak bağlantıya izin verilmedi
          o 0x03 = network ulaşılamaz durumda
          o 0x04 = host ulaşılamaz durumda
          o 0x05 = bağlantı hedefteki host tarafından reddedildi
          o 0x06 = TTL zaman aşımına uğradı
          o 0x07 = komut desteklenmiyor / protokol hatası
          o 0x08 = adres tipi desteklenmiyor 
    * field 3: rezerv edildi, 0x00 olmalı
    * field 4: adres tipi, 1 byte:
          o 0x01 = IPv4 adresi
          o 0x03 = Domain name
          o 0x04 = IPv6 adresi
    * field 5: Hedef adres:
          o IPv4 adresi için 4 byte
          o Domain name için ismi takiben isim uzunluğu 1 byte 
          o IPv6 adresi için 16 byte
    * field 6: network byte sıralanışıyla port numarası , 2 byte

Herhangi bir network yazılımının SOCKS vasıtasıyla harici networklere bağlanmasında adaptasyonu sağlayan  Client Programları vardır.


 SOCKS yazılımı

    * Kernel SOCKS Bouncer ksb26 (Kernel Socks Bouncer) TCP bağlantılarını socks 4/5 zinciri yoluyla yeniden yönlendiren (kullanıcı tanımlı hedef hostlara ) bir  Linux Kernel 2.6.x Yüklenebilir Kernel Modulüdür.
    * SS5 Socks Server , açık kaynaklı bir SOCKS4/SOCKS5 serverıdır.
    * Dante, Inferno Nettverk A/S tarafından geliştirilmiş açık kaynaklı ve ticari destekli bir SOCKS4/SOCKS5 uygulamasıdır. 
    * OpenSSH , SSH tünelinden uzaktan kontrollü servera SOCKS isteklerinin gönderilmesini destekler.
    * WinSocks , Proxy Labs tarafından geliştirilmiş küçük ama işlevsel bir SOCKS4/SOCKS5 serverıdır. 
    * SOcat Multipurpose relay (SOcket CAT): SOCKS4 ve SOCKS4a fonksiyonelliğini içerir.(Linux / Mac)
    * FreeCap Socksifyer ( Windows için ),  herhangi bir uygulama kendi network trafiğini SOCKS veya HTTP proxy vasıtasıyla şeffafça gerçekleştirebilir. 
    * Simple Socks Server ( Perl için)  - SSS -Simple SOCKS Server  perl dilinde yazılmış ve SOCKSS v5 protokolünü tamamlar.

Referanslar

   1. ^ Hummingbird SOCKS FAQ
   2. ^ Darmohray, Tina. "Firewalls and fairy tales". ;LOGIN:. Vol 30, no. 1.
   3. ^ http://www.socks.permeo.com/ (broken link as of July 2008)
   4. ^ News Release from Bluecoat
   5. ^ Article from infosecurityproductsguide.com
   6. ^ RFC 1961
   7. ^ RFC 1929
   8. ^ http://www.iana.org/assignments/socks-methods

Harici Linkler

    * draft-ietf-aft-socks-chap Challenge-Handshake Authentication Protocol for SOCKS V5
    * RFC 3089 - SOCKS tabanlı bir IPv6/IPv4 Geçit Mekanizması
    * RFC 1961 - SOCKS Version 5 için GSS-API doğrulama metodu. 
    * RFC 1929 - SOCKS V5 için kullanıcı adı / şifre doğrulaması 
    * RFC 1928 - SOCKS Protocol Version 5
    * SOCKS: TCP proxy için bir protokol  - SOCKS Protokol Versiyon 4 (NEC)
 
  Bugün 7 ziyaretçi (11 klik) kişi burdaydı!  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol