Re: bilgisayar portlarının kullanılması ve çalışma yapısı örnkel

Elektrik ve elektronik konularında bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
yazgüneşi
Kilobyte4
Kilobyte4
Mesajlar: 670
Kayıt: 13 Şub 2007, 08:56

Re: bilgisayar portlarının kullanılması ve çalışma yapısı örnkel

Mesaj gönderen yazgüneşi »

bilgisayar portlarının kullanılması ve çalışma yapısı.
. Giriş
Bilindiği gibi internet üzerindeki cihazların birbirleriyle konuşmasını sağlayan protokol ailesi TCP/IP'dir. Bu protokol grubunu düşündüğünüzde, asla herkese açık bir ağ üzerinden gizli bilgiyi gönderilmek amacıyla tasarlanmadığını görülür. Tasarlandığı dönemde, her zaman iletişimin özel ve güvenli hatlar üzerinde olacağı düşünüldüğünden bu yönden her hangi bir geliştirme düşünülmemiştir.

Bilgisayar Güvenliği Enstitüsü (Computer Security Institute - CSI) ve Federal Araştırma Bürosu (FBI) tarafından geleneksel olarak gerçekleştirilen, Bilgisayar Suçları ve Güvenlik Araştırması’nın 2001 yılı raporuna göre bilişim suçları 1997- 2001 yılları arasında her yıl neredeyse ikiye katlanacak biçimde ( Şekil 1) artmıştır[1].

Resim
ŞEKİL 1



Bu çalışmada bu gerçeği en ustaca kullanan araçlardan biri, port tarayıcılar incelenmiştir. Ancak burada şunu belirtmek gerekir ki; konun çok geniş bir kapsamı olması sebebiyle makalede büyük ağların ve ana bilgisayarların değil, genel olarak son kullanıcıların ve kişisel sistemler ile küçük ağların bu tehdit karşısındaki durumları incelenmiştir.

Port tarayıcı kullanarak bilgisayar konusunda orta düzeyde bilgili bir kişinin, kaynaklarını yerel ağ üzerinde paylaşıma açmış bir kişiye verebileceği zararları basitçe örneklemek gerekirse; 1) Kredi kartı bilgileri çalınabilir. 2) Gizliliği hassas dokümanlar ( Yayınlanmamış bilimsel çalışmalar, sınav soruları, elektronik postalar ) çalınabilir tahrif edilebilir veya silinebilir. 3) Banka ve elektronik posta hesaplarına ait şifreler çalınabilir. 4) Bilgisayar başka bilgisayarlara zarar verilirken aracı olarak kullanılabilir ki, bu durumda yetkililerin elinde suçlunun bilgisayarının değil, kullanılan bilgisayarın, IP adresi bulunur.

Bu çalışma kişisel bilgisayar güvenliğine ilgi duyan, başlangıç ve orta düzeydeki kullanıcılara yönelik hazırlanmıştır. Bu sebepten dolayı temel bir takım ağ iletişim terimlerinin açıklanmasına gerek duyulmuştur.

Port: İnternet dünyasında kullanılan "port" kavramı soyut bir kavramdır. Bu anlamda "port” herhangi bir fiziksel bağlantı yeri değil, mantıksal bir bağlanma şeklidir. Şöyle ki: Günümüz dünyasında birçok işletim sistemi birden fazla programın aynı anda çalışmasına izin vermektedir. Bu programlardan bazıları dışarıdan gelen istekleri (istemci/client) kabul etmekte ve uygun gördüklerine cevap (sunucu/server) vermektedir. Bir ağ üzerindeki bütün bilgisayarlara birer adres verilir (bknz. IP adresleri) ve bu adresler kullanılarak istenilen bilgisayarlara ulaşılır. Peki, ulaşılan bir bilgisayar üzerindeki hangi sunucu programdan hizmet alınmak istendiği nasıl belirtilir? Bunun için bilgisayarlar üzerinde birtakım soyut bağlantı noktaları tanımlanır ve her birine, adresleyebilmek için pozitif bir sayı verilir (port numarası). Bazı sunucu programları, daha önce herkes tarafından bilinen portlardan hizmet verirken (örn: telnet->23. port) bazıları da sunucu programını çalıştıran kişinin isteğine göre değişik portlardan hizmet verir. Dolayısıyla, ağ üzerindeki herhangi bir sunucu programa bağlanmak istenildiğinde, programın çalıştığı bilgisayarın adresinin yanında, istekleri kabul ettiği "port" numarasını da vermek gerekir. Port kavramını örneklendirmek gerekirse, bir bilgisayarın IP adresini bir apartmanın adresi gibi düşünürsek port numaraları ise bu apartmandaki evlerin kapı numaraları olarak tasvir edilebilir[2].

TCP/IP: “İletişim Kontrol Protokolü/İnternet Protokolü” nün kısaltılmış halidir. Protokol belli bir işi düzenleyen kurallar dizisi demek. TCP/IP tek bir protokol değildir. Bir protokol kümesine verilen, genel isimdir. Daha ayrıntılı bir anlatımla TCP/IP bilgisayarların kendi aralarında nasıl iletişim kuracaklarını belirleyen kurallar topluluğudur.

IP: Bir ağa bağlı her bilgisayarın bir IP (Internet Protokol) adresi vardır. Tipik bir IP adresi, noktalarla ayrılan dört rakamdan oluşur; örneğin, 212.156.4.20. Bir bilgisayarın IP adresi varsa, ağ üzerindeki tüm bilgisayarlar bu adresi kolayca bulur. Bir bilgisayar bir ağa bağlandığında, bilgisayara bir IP adresi atanır. Ancak çoğu kullanıcının IP adresi dinamiktir, yani her bağlantıda değişir.

MAC Adresi: Ethernet ağ cihazlarına, tanınabilmeleri için, hexadecimal ve dünyada bir eşi daha olmayan seri numarası verilir. Bu numaralar, üretici firmalar tarafından fabrikada verilmektedir. Aslında bilgisayarlar arası haberleşme, IP adreslerinin MAC adreslerine çevrilmesi ile gerçekleşir.

NETBIOS ADI: Bilgisayar haberleşmesinde kullanılan, bilgisayarlara verilen ( “OGRENCI_ISLERI” gibi ) kullanıcı dostu isimlerdir.

TCP: TCP protokolü internette kullanılan ana protokoldür. TCP gönderilen verilerin, gönderildiği sırayla, karşı tarafa ulaşmasını sağlayarak güvenli veri iletimini sağlar. TCP iki makine arasında kurulan sanal bir bağlantı üzerinden çalışır. Şimdi bu bağlantının nasıl olduğuna bir bakalım. Öncelikle istemci sunucuya, kendi kimlik bilgilerini içeren bir bağlantı isteği gönderir. İsteği alan sunucu bu isteğe karşılık onay ve kendi kimlik verilerini içeren bir paket gönderir. En sonunda da istemci makine sunucuya bir onay paketi gönderir ve bağlantı sağlanmış olur ( Şekil 2 ).

Resim
TCP paket yapısı daha ayrıntılı incelenirse, her paketin içinde, söz konusu paketin paketin içeriğini belirten veriler bulunduğu görülür. Bu verilere bayrak adı verilir. Bu bayraklardan SYN ( synchronize ) her bağlantı isteğinin başında gönderilen paketlerde bulunur ve gönderen sistemin bağlantı isteğini ve kimlik bilgilerini içerir. ACK ( acknowledge ) bayrağı ise alınan bütün paketlerin ardından, alıcının paketi aldığını onaylamak için gönderilen paketlerde yer alır. FIN ( finish ) bayrağı taraflardan birinin bundan sonra veri göndermeyeceğini, ancak almaya devam edeceğini bildirir. RST ( reset ) bayrağı ise taraflardan birinin bağlantıyı tamamen sonlandırdığını bildirir.

UDP: TCP'nin tersine güvensiz bir protokoldür. Veri, karşı bilgisayara gönderilir ancak, onay paketi alınmasa da iletişim tamamlanmış kabul edilir. Ayrıca paket boyutu TCP’ ye oranla çok daha küçüktür. Bu sebeplerden dolayı çok hızlıdır.

ICMP: ICMP protokolü iki yada daha fazla bilgisayar arasında veri transferi sırasında meydana gelebilecek hataları ve kontrol mesajlarını idare eder. ICMP protokolünde bilinen en yaygın ağ aracı ping'dir. Ping programı karşıdaki bir bilgisayarın çalışır durumda olup olmadığını kontrol etmek için kullanılır. Çalışma mantığı çok basittir, karşı bilgisayara echo paketleri gönderir ve geri gelmesini bekler. Eğer paketler geri gelmezse ping hata mesajı verir ve karşı bilgisayarın ağa bağlı veya çalışır durumda olmadığı anlaşılır [3].

Güvenlik Duvarı:İnternet güvensiz bir ağdır , onu güvensiz kılan paylaşımın fazlalığı ve insanın doğal yok etme içgüdüsüdür. Yerel ağdaki veya kişisel bir bilgisayardaki özel bilgiler, internetin getirdiği risklerden yalıtmak isteniyorsa kullanılabilecek sistemlere güvenlik duvarı (firewall ) denir. Birden fazla ağ parçası arasına kurulan Firewall sistemleri bu ağların yalıtılması işlemini gerçekleştirir. Bu ağlar arası geçiş için çeşitli kural zincirleri ve erişim yetkileri belirlenir, böylece söz konusu ağlardaki kötü niyetli insanlardan etkilenme oranı büyük ölçüde düşer.

2. PORT TARAYICI NEDİR?
Bir program için port tarayıcı tanımlamasını yapabilmemiz, programın bir hedef IP için “ Bu IP’ ye sahip çalışan bir bilgisayar var mı ? ” sorusunu ( evet/hayır biçiminde ) yanıtlaması gerekir. Bu anlamda ping programı, en basit tarayıcı programdır. Ancak aslında port tarayıcılar hedef sisteme ait bilgileri ( işletim sistemi, açık portlar gibi ) tespit etmek, hedef sistemdeki zayıflıkları bulmak, bu zayıflıklardan yararlanarak hedef sisteme bağlanmak ve bu bağlantı denemelerini istenilen sayıda sistem için otomatik olarak gerçekleştirebilecek şekilde programlanırlar.

Tarayıcıları üç grupta toplayabiliriz. Bunlar, ağ tarayıcıları, zayıflık tarayıcıları, saldırı tarayıcılarıdır. Ağ tarayıcıları bir ağ üzerindeki bilgisayarların ve üzerlerinde çalışan servislerin varlığını doğrulamak ve bu servislere ait zayıflıkları bulmak için kullanılan programlardır. Genellikle güvenlik duvarının işlevlerini test etmek amacıyla kullanılırlar. En yaygın Örnekleri: SATAN, NMAP, RETINA’dır. Zayıflık tarayıcıları ağ tarayıcıları gibi hedefin zayıflıklarını bulmanın yanında bu zayıflıkların nasıl kullanılacağını da rapor ederler. En yaygın kullanım alanı yerel sistemlerin zayıflıklarını raporlamaktır. COPS ve TIGER bu türün örnekleri arasında sayılabilir. Saldırı tarayıcıları hedef sistemdeki zayıflıkları belirlemenin yanında imkan varsa bu sisteme girmeniz için gerekli işlemleri başlatırlar. Bu tip tarayıcılar diğer iki türe oranla çok daha dinamik bir yapıya sahip olabilirler. Örnek olarak Nessus standart bir servisin standart bir portta çalıştığını varsaymaz. Eğer telnet sunucunuz 23 değil de 46 numaralı portta çalışıyorsa Nessus bunu bulacak ve buradan sisteme girmek için zayıflık taraması yapacaktır. Bir başka tarayıcı Cheop, ağın bütün özelliklerini ve zayıflıklarını grafiksel olarak haritalamaktadır. Bu türün tanınmış örnekleri: NESSUS, CHEOP, SAINT, BASS’ dır.

3. PORT TARAYICILAR NASIL ÇALIŞIR ?
Bir port tarama işleminin değişik kademeleri olmakla beraber ( işletim sisteminin saptanması, zayıflıkların belirlenmesi vb. ) iki temel aşamadan söz edilebilir. Bunlar: a) Çalışan sistemlerin belirlenmesi. b) Portların taranmasıdır.

Çalışan sistemlerin belirlenmesi aşamasında, dört temel yöntemden söz edilebilir. Bunların ilki “ ICMP Echo / Echo Reply “ dır. Bu yöntem bir sistemin aktif olduğunu anlamanın en basit yoludur. Basitçe ping komutu yardımıyla ICMP echo/echo reply paketleri kullanılarak bu test yapılabilir. Ancak söz konusu olan, bir ağdaki tüm IP adreslerine ping atmak olduğunda ping komutu pekte yeterli olmamaktadır.

Bu durumda diğer alternatifleri değerlendirmek zorunlu olmaktadır. Windows platformunda Pinger , posix ( Unix ve türevleri ) platformunda ise Nmap, Fping , Gping diğer kullanılabilir alternatiflerdendir. Temel fikir bir alt ağa yada bir IP aralığına sırayla ping atmak ve cevap beklemektir. Gönderilen bir ICMP Echo (type 8) isteğine ICMP Echo Reply (type 0) cevabı gelmesi durumunda sistemin aktif olduğu saptanacaktır.

Kullanılan bir diğer metot ise “Broadcast Ping” dir. Bu yöntem ise tüm ağa gönderilen paketlere, tüm bilgisayarların cevap verebileceğini esas alır. 'ping –b 192.168.100.255' komutu ile 192.168.100.0 ağındaki tüm bilgisayarların cevap vermesi beklenir ; ancak windows işletim sistemleri bu istekleri görmezden gelmektedirler. Hedef sistemler tarafından gönderilecek her ICMP Echo Reply cevabı o sistemin aktif durumda olduğunu anlamayı sağlayacaktır.

Peki hedef sistem ( veya içinde bulunduğu ağ ), bir firewall tarafından korunuyor ve ICMP paketleri engelleniyorsa, sistem güvende midir ? Bu sorunun cevabı “TCP Ping Taraması” ve “UDP Taraması” yöntemlerinde bulunabilir. TCP ping taraması, daha önce gönderilen ICMP paketleri yerine TCP paketleri gönderilerek yapılmaktadır. Amaç ICMP paketlerinin bir güvenlik duvarı aracılığıyla engellendiği ağlarda erişim kontrol listelerine uygun paketlerle ağdaki aktif sistemleri belirlemektir. Böyle bir durumda paketlerde tek ve basit bir şekilde olmayacaktır. Genellikle kullanılacak portlara ve paketlerde kullanılacak bayraklara bağlı olarak, sonuçlar değişecektir.

SYN bayraklı paketlerle yapılacak taramalarda, SYN paketinin karşılığında SYN/ACK paketi geldiğinde portun açık olduğu anlaşılır ve RST paketi gönderilerek oturum kapatılır, port kapalı ise hedef zaten direk RST cevabı gönderir.

SYN/ACK bayrağı ise oturumu başlatan tarafı saptayamayan güvenlik duvarları tarafından, sanki gönderilen bir paketin cevabıymış gibi yorumlanarak paketin içeriye geçişine izin verilmesini sağlar. Buradaki hile bizim makinamız tarafından gönderilen paketin bayrağını SYN/ACK olarak değiştirip bu paketi sanki, güvenlik duvarının içindeki bir bilgisayar tarafından başlatılmış TCP iletişiminin ( Şekil 3 ) onay mesajıymış gibi göstermemizdir. Bu pakete gelecek ACK bayraklı cevap paketi bu sistemin aktif olduğunu anlamamızı sağlar.
Resim[/img]
ACK bayrağı bazı güvenlik duvarlarının onaylanmış bağlantıları kabul etmesi durumunda, paketin içeriye geçebilmesini sağlar. Durumu daha ayrıntılı olarak tanımlamak gerekirse, ACK bayraklı paket normal şartlar altında TCP iletişiminin üçüncü aşamasında güvenlik duvarının içinde kalan bir bilgisayarı,n kabul ettiği bir bağlantının onayı için dışarıdan gönderilebilir ( Şekil 4 ). Buradaki hile de bizim normalde böyle onaylanmış bir bağlantı kurmamamıza rağmen TCP paketinin bayrağını değiştirerek, güvenlik duvarının bizim paketimizin onaylanmış bir bağlantının parçası olduğunu varsayarak, içeri girişine izin vermesindedir. Bu pakete gelecek RST bayraklı cevap paketi sistemin aktif
Resim[/img]
TCP taramalarında bir önemli noktada hangi porttan yapılacağıdır ; çünkü güvenlik duvarları tarafından korunan bir ağda bazı paketlerin girişine izin verilmekte bazılarının girişine ise izin verilmemektedir. Genel olarak izin verilen bir port olması tercih edilmelidir, örneğin 80/tcp tüm güvenlik duvarlarında açık olması muhtemel bir porttur, 53/tcp'de yine aynı durumdaki bir porttur.

Güvenlik duvarlarını aşabilecek bir diğer yöntem, “UDP Taraması” yöntemidir. TCP taraması gibi bu yöntemde de port belirtmek gerekmektedir. Hedefe belirlenen port üzerinden ulaşmaya çalışırken, güvenlik duvarında engellenmemesi için uygun bir port numarası seçme zorunluluğu vardır. Hedefe paketlerin ulaşması durumunda “ICMP Port Unreachable” cevabı gelirse yada port cevap gönderirse sistemin aktif olduğu anlaşılmış olur.

Çalışan sistemlerin belirlenmesinin ardından portların taranması aşamasına geçilebilir. Bir önceki aşamada olduğu gibi bu aşamada da bir çok yöntem bulunmaktadır. Bu bölümde bu yöntemlerden en yaygın kullanılan altı tanesi incelenmiştir.

TCP Bağlantı Taraması: En basit anlamda çalışan tarama tekniğidir, hedef porta bağlanmak için SYN paket gönderir, karşılığında SYN/ACK paketi gelirse ACK paketi göndererek porta bağlanır ve portun açık olduğunu rapor eder, eğer SYN paketine RST cevabı gelirse portun kapalı olduğunu rapor eder. Bu tarama türünün iyi yanı, oturumun açık olduğunu bire bir test etmesi olduğu gibi, kötü tarafı da karşı sistemin açılan bütün oturumları kaydetmesi, durumunda IP bilgisinin karşı sistemin veri tabanında yerini almış olmasıdır. Sadece zorunlu durumlarda yada emin olunması gereken durumlarda risk alınarak yapılan bir tarama türüdür.

TCP SYN Taraması: TCP Bağlantı Taraması’nda bahsi geçen riski almamak için, oturumu açmadan taramak gerekir. Bu tarama türü yarı-açık tarama olarak da anılır. Sebebi yukarıda anlatılan oturum açma işleminin ilk iki aşaması olan SYN bayraklı paketi gönderme ve SYN/ACK bayraklı paketi alma işleminin başarıyla yapılmasına rağmen, ardından RST/ACK bayraklı bir paket gönderilerek oturumun açılmasının reddedilmesidir. Portun açık olduğu sonucuna SYN/ACK bayraklı paket alındığında karar verilir. RST/ACK bayraklı paket oturumun sıfırlanması için gönderilen pakettir. Böylece oturum açılmadığından kayıtlara geçme ihtimali azalır. Bu noktada bir dipnot vermeden geçilmemelidir; eğer RST/ACK bayraklı paket gönderilmezse karşı sistem oturumun açılmasını beklemeye devam eder. Bu şekilde, bağlantı isteğinde bulunup cevap vermeme işlemi çok sayıda tekrarlanırsa SYN Flood ( SYN seli ) denilen DoS ( Denial of Service ) saldırısı oluşur ve karşı sistemin kilitlenmesine sebep olur. Yeni güvenlik duvarlarının oturum açmada bekleme süresi sınırı koyarak bunu önlediği ve bütün saldırıların kaydını tuttuğu da unutulmamalıdır.

TCP FIN Taraması: Eğer bir port oturum açma işlemleri kullanılmadan taranmak isteniyorsa, kullanılabilecek yöntemlerden biri FIN taramadır. Eğer bir sistemin portlarından birine FIN bayraklı bir paket gönderilirse RFC793'e göre sistem kapalı olan portlar için RST cevabı gönderir. Geriye açık olan portların bilgisi kalır.

TCP Null Taraması: Bu tarama türü ise FIN’in tersine hiçbir bayrak taşımayan bir paket gönderir. RFC 793'e göre sistemin kapalı olan portlarından RST bayraklı cevap paketi gelir.

TCP ACK Taraması: Çalışan sistemlerin belirlenmesi bölümünde anlatılan mantıkla çalışır. Temel mantık statik yada dinamik paket filtreleme yapan güvenlik duvarlarının bağlantıyı ilk başlatan tarafı hatırlayamamasıdır.

UDP Taraması: Bu teknik hedef porta UDP paketi gönderilerek kapalı olan porttan "ICMP port unreachable" mesajının alınması temeline dayanır. Eğer bu mesaj gelmezse portun açık olduğu anlaşılır. Bu işlem yapılırken oldukça yavaş davranmak gerekir. Özellikle de yoğun işlemlerin olduğu bir güvenlik duvarının üzerinden tarama yapılırken.

Bu port tarama işlemlerinde kullanılabilecek araçlar içerisinde en popüler olanları yine Nmap ve Hping2'dir. Ayrıca windows platformunda Nmap'in Eeye Digital tarafından yazılmış versiyonu, Fscan, Ipeye ve Netscan Tools'da kullanılabilir. Posix platformunda ise Strobe bir diğer alternatiftir[4].

İncelenen bütün bu yöntemleri, port tarayıcıları ve nasıl çalıştığına dair kavramları somutlaştırmak için aşağıda bulunan, bir port tarama programının basit bir takım işlemleri nasıl gerçekleştirdiğini gösteren algoritma şeması ( Şekil 5 ) yararlı olacaktır.



Resim
Şekil 5 hakkında açıklamalar. 1) Bu aşamada program kullanıcı tarafından girilen IP adresine ICMP ( Type 8 ) paketi göndermektedir. Bu paket ve karşılığı olan ICMP ( Type 0 ) paketi “Ping” programı tarafından da hedef sistemin Aktif olup olmadığını anlamak için kullanılmaktadır. 2) Bu aşamada program gelen paketin ICMP ( Type 0 ) olup olmadığını kontrol etmektedir. Eğer gelen paket ICMP ( Type 0 ) ise bir sonraki aşamada port bağlantısı açılmaya çalışılacaktır, değilse bu hedef sistemin aktif olmadığı şeklinde yorumlanacak ve kullanıcıdan başka bir IP adresi girmesi istenecektir. 3) Bu aşamada port# değişkenine atanmış, olan port ile bağlantı kurulmaya çalışılmaktadır. 4) Bu aşamada belirlenen port numarası ile bağlantı kurulup kurulmadığı kontrol edilmektedir. Eğer bağlantı kurulmuş ise sonuç ekrana yazdırılacak, ardından port numarası bir artırılarak port# değişkenine atanacak, ve işlem başa dönecektir. Eğer bağlantı kurulamamış ise hedef sistemin aktif olup olmadığı kontrol edilecek ve buna göre takip eden işlemler şekilde görüldüğü gibi sonuçlanacaktır.
Kullanıcı avatarı
modestus
Gigabyte4
Gigabyte4
Mesajlar: 3081
Kayıt: 23 Nis 2008, 15:57
cinsiyet: Erkek
Teşekkür edildi: 1 kez

Re: bilgisayar portlarının kullanılması ve çalışma yapısı örnkel

Mesaj gönderen modestus »

programı buldum linki aşağıda :

Resim

Kod: Tümünü seç

http://www.uploadjockey.com/download/1679668/Paralel_Port_LPT_Test_XP.zip
Kullanıcı avatarı
yazgüneşi
Kilobyte4
Kilobyte4
Mesajlar: 670
Kayıt: 13 Şub 2007, 08:56

Re: bilgisayar portlarının kullanılması ve çalışma yapısı örnkel

Mesaj gönderen yazgüneşi »

teş
Cevapla