Siber Güvenlik

Hack ve Crack Hakkında Genel Bilgiler

Hack, Crack ve Siber Mevzular

Bir şekilde bu dosyaya ulaşan herkese merhaba! Yıllar önce haftalık yayımlanan bir bilim / teknoloji dergisinde Linux adında bir işletim sistemi hakkında bir yazı okudum. Doğrusunu söylemek gerekirse Linux’un hikayesinden bayağı etkilenmiştim.
Linux’un hikayesi kısaca şöyle: Her şey Finlandiya’da Linus Torvalds adında bir öğrencinin Minix adlı küçük bir Unix kopyası işletim sistemini kendi çapında biraz geliştirmeye çalışması ile başlıyor. Belirli bir süre geliştirdikten sonra Linux’u internette yayınlıyor. Ve yayımladığı bu sistem sanal alemde bomba etkisi yaratıyor. Linux inanılmaz bir ilgi görüyor ve dünya üzerinde belki de çoğu birbirini daha önce hiç görmemiş bir çok programcı tarafından geliştirilmeye başlanıyor. Hiç bir fayda ve kar amacı gütmeden!

İşte aslında her şey benim için Linux’la başladı. Bir bilgisayar dergisinin CD’sinde Slackware Linux sürümünü vermesiyle yola koyuldum. Önce Linux kurmayı öğrendim. Evet inanın birçok şeyi Linux’u kurarken öğrendim. Daha sonra hafta sonları Linux’la ilgili internet sitelerinde sörf yaparken şunu anladım: Ben Hacker’ların işletim sistemini kullanmaya başlamıştım.


Internet=UNIX

Aslında sanal âlemin kuralının “Internet=UNIX” olduğunu öğrendim. Yıllardır insanların bu konular üzerinde ne kadar uğraştıklarını anladım. Tonlarca kitap, doküman ve program yazılmıştı bu konuda. Ve biz Türkiye olarak çok geç keşfetmiştik İnternet’i…

Hacking ilginç bir konuydu ve doğal olarak benim de ilgimi çekti. Ve herkesin en başta yaptığı gibi büyük bir heves ile ne bulursam indirmeye başladım. Ancak indirdiğim dokümanların büyük bir çoğunluğunda genelde şu sorunlarla karşılaşıyordum.

  1. Çok eski tarihli olmaları(Hala 1980’lerin başlarında yazılmış birçok dokümanı internette bulabilirsiniz.)
  2. Farkını anlamadan Phreak(telefon hacking diyebiliriz) veya Anarchy dosyalarını da toplamaya başlamış olabilirsiniz(ki bunlar tamamen farklı konular özellikle Anarchy)
  3. Bu dokümanların hiç birisi bir bütün olarak konuyu ele almıyordu. Yani her şeyi en başından anlatan bir doküman bulmak olanaksızdı.

Evet; ya konuları çok yüzeysel anlatan, iki paragraf uzunluğundaki dosyalar çıkıyordu karşıma, ya da neden bahsettiği konusunda en ufak bir fikir bile yürütemediğim aşırı üst seviyeli yazıları okumak zorunda kalıyordum. Bu işi öğrenmeye çalışan birçok insanın karşılaştığı bir sorundur bu bence. Aslında bu şekilde de belirli bir süre sonra işi çözmeye başlarsınız ama kaybedilen zaman çok önemlidir.


Evvel Zaman İçinde

Yine bir gün internette gezinirken gerçekten çok güzel bir site buldum (eğer halen oradaysa:  http://hakkerz.home.ml.org).
Sitenin sahibi sayfanın en başına şöyle yazmıştı: “Lütfen artık bana hacking öğretir misin? diye mail atmayın. Gidin, yandaki kitabı okuyun ve öğrenin”. Yanda da amazon.com’dan linklenmiş bir kitap reklamı vardı=”Maximum Security”. Sitenin içeriği o kadar kaliteliydi ki sahibi böyle diyorsa bu kitapta kesin iş vardır diyordum. Ancak doğal olarak o kitap Türkiye’de yoktu. Amazon.com’dan alışveriş yapacak kredi kartım da yoktu. Ben bu kitabın aşkıyla yana durayım gene bir gün internette sürekli kontrol ettiğim sitelerden birisinde (http://www.insecure.org) SAMS publishing-Free computer books online! (http://www.mcp.com/personal) diye bir link buldum. Tıkladım ve gözlerime inanamadım çünkü yüzlerce bilgisayar kitabı HTML formatında karşımda duruyordu. Ve tahmin ettiğiniz gibi Maximum Security-A Hacker’s Guide to Protecting Your Internet Site and Network’da bunların içindeydi.

Kitap gerçekten tam tahmin ettiğim gibi her şeyi en başından başlayarak anlatıyordu. İşte bu esnada benim aklıma bu Türkçe dokümanı hazırlama fikri geldi. Çünkü bu çok büyük bir eksiklikti ve bence birisinin (belki ben olmamalıydım ama) artık bir şeyler yazması gerekiyordu. Daha önce okuduğum dokümanlardan da faydalanarak Türkçe güzel bir şeyler hazırlayabileceğime karar verdim, konuları anlatırken de kitaptaki sıradan faydalanabilirdim. Bu arada yeri gelmişken şunu da ekleyelim, doküman boyunca her Türkçe kelimenin çevirisini yapmayacağım, bir kelimenin uygun bir karşılığı yoksa onun İngilizce halini kullanacağım.


Kimin İçin ve Neden?

Bu dokümandan birçok insan faydalanabilir. Zaten ne zaman Network güvenliği ile ilgili bir tool veya doküman çıksa hep bunun tartışması yapılır. Bu bilgilerin ve araçların cracker’lara (hacker’la arasındaki farkı birazdan anlatacağım) fayda sağladığı söylenir hep.

Savunma olarak da sadece bu şekilde internetteki güvenliğin geliştirilebileceğinden bahsedilir. Evet, sonuçta bir güvenlik deliği varsa bunun bilinmesi için açıklanması gerekir ve bu açıklamaları kötü niyetli insanlardan daha önce öğrenip gerekli önlemi almak da o network’ün güvenliği ile ilgilenen kişinin sorumluluğundadır. Ancak genelde bunun tam tersine cracker’lar adminlerden hep bir adım daha öndedirler. Mesela genellikle üniversiteler bu konularla yakından ilgilenen insanlara sahip oldukları için cracker’lar için tercih edilen bir hedef değildirler. Tabii zoru seven cracker’lar olduğu da kesin.

Örneğin son olarak süper bir exploit (anlamadıysanız dert etmeyin) kaynağı olan Rootshell’i ziyaret ettiğimde onların bile ana sayfasının bir grup cracker tarafından değiştirildiğini öğrendim. Rootshell bile tam olarak kendini koruyamıyorsa internete bağlı herkes tehlikede demektir.

Evet bu doküman öncelikli olarak bir cracker için yazıldı. Ancak bu dokümandan savunucu tarafın da kendine pay çıkartabileceğine inanıyorum. En azından neyle karşı karşıya olduğunu anlayacaktır. Nasıl saldırıldığını bilmeden savunma yapamazsınız.

Peki neden bu kadar yaygın ve dikkat çeken bir konu bu. Bence en büyük sebebi gizlilik ve kişisel tatmin. Yani bir şeyler öğrenerek, deneyerek keşfediyorsunuz ve gizlice erişim sağlıyorsunuz. Bayağı heyecan verici öyle değil mi? Bu büyük bir zevk bence. Ayrıca bilgisayar ve iletişim teknolojilerini öğrenmek için mükemmel bir yol. Eğer cracker’lar olmasaydı internet kesinlikle bu kadar gelişim gösteremezdi. (En azından güvenlik konusunda.)


Hacker vs Cracker

Hacker ve Cracker arasındaki farkı çok uzatmadan örneklerle kısaca açıklamaya çalışacağım. Hacker aslında bu işin uzmanı, yani en ince detayına kadar bilen kişidir.

Genellikle üstün yetenekli programcılar hacker olarak adlandırılırlar. Benim bildiğim ve hacker olarak örnek verebileceğim kişiler ise şunlar:

  • Dennis Ritchie ve Ken Thompson: Bu adamlar inanılmaz insanlar. Onlarsız internet falan olmazdı sanırım. Bell labaratuarlarında UNIX’i ve C programlama dilini keşfettiler!
  • Dan Farmer: COPS ve SATAN programlarının geliştirilmesinde yer aldı.
  • Wietse Venema: SATAN(Dan Farmer ile birlikte) ve TCP Wrapper’ı yazdı.
  • Linus Torvalds: Linux’u yazdı! (Sağolsun. J )
  • Bill Gates: Bütün dünyayı tekeline alacak kadar (siyasi açıdan bu tartışılabilir) yaygınlaşan ve (bence) bir o kadar da işe yaramaz olan işletim sistemlerini hazırlayan şirketi yarattı ve şu an bütün dünyayı sömürüyor.

Evet sanırım hacker’ın ne olduğunu anladınız. Şimdi bir de cracker’ın tarifini yapalım. Crackerlar kanun dışı bir şekilde bir sisteme izinsiz olarak erişen kişilere verilen isimdir. Benim ismen tanıdığım tek cracker:

Kevin Mitnik: Dünyanın en tanınmış cracker’ı. Önceleri phreak ile uğraşmış. Daha sonra aklınıza gelebilecek her türlü siteyi(askeri, ticari, yazılım geliştirici) kırdı. Daha bir çocukken North American Aerospace Defense Command’ı crack etmeyi becermişti. Ancak en sonunda bir security uzmanı tarafından yakalattırıldı. Şu an hala davası görüşülüyor. İnternet üzerinde FREE KEVIN 🙂 şeklinde bir çok banner ve yazıya denk gelebilirsiniz. Ancak günümüzde bu terimler gerçek anlamında kullanılmıyor. Bunda medyanın bu terimleri yanlış kullanmasının çok büyük payı var. Bilgisayarlara izinsiz erişen kişilere cracker yerine hacker deniyor. Cracker veya cracking dendiğinde ise akla debugger’ları kullanarak (reverse engineering) genelde ticari programları kıran kişiler geliyor.


Tarihçe

1969 yılında Amerikan Defense Advanced Research Projects Agency (DARPA) Rusların Nükleer saldırı tehdidine karşı merkezi bir kontrol olmadan bilgisayarların birbirleriyle haberleşebileceği bir network geliştirmeye karar verdi. Böylece eğer network’ün bir parçası yok olursa kalan kısımlar iletişime devam edebilecekti. Çalışmalar çabuk sonuç verdi ve 1962-1963 yılında ARPANET adında bir ilk örnek ortaya çıktı. 1970’lerin ortalarına doğru TCP/IP geliştirildi. TCP/IP diğer protokollere oranla uygulamaya konması daha ucuz ve sistem kaynaklarını daha etkili kullanabilen bir protokol olması dolayısıyla büyük bir ilgi gördü. 1983 yılında ilk olarak Berkeley Software Distribution(BSD) UNIX (release 4.2)’ye eklendi ve kısa bir süre sonra diğer bütün UNIX’lerde de kullanılmaya başlandı ve günümüze kadar ulaştı.(Neden Internet=UNIX olduğunu sanırım şimdi daha iyi anlıyorsunuz.)

TCP/IP’nin en büyük özelliği platformdan bağımsız olmasıdır. Şu an neredeyse bütün platformlar TCP/IP’yi desteklemektedir ve aynı network üzerinde Macintosh’lar, IBM uyumlular, Sun Sparcstation’lar birbirleriyle haberleşebilmektedir.


Temel Bölümleme

TCP/IP (Tranmission Control Protocol / Internet Protocol) şu an İnternet üzerinde bilgisayarların birbirleriyle iletişim kurduğu protokoldür. İleride bu protokollerle çok karşılaşacaksınız ve bunlar hakkında kesinlikle iyi seviyede bir bilgi birikimine ihtiyacınız olacak. Eğer bu protokollere çok yabancıysanız bu konu hakkında yazılmış birçok kitap bulunmaktadır, bunlardan birisini okumanızı tavsiye ederim.

İlk bölümde bahsettiğim Macmillan Computer Publishing (http://www.mcp.com/personal) adresinde bu konu ile ilgili bir kitap (Teach Yourself TCP/IP in 14 Days) bulabilirsiniz. Sonraki bölümler için bir giriş olması için TCP/IP’nin temel bölümlenmesinden burada bahsetmek istiyorum. TCP/IP süitinde iki sınıf protokol vardır.

  1. Network Level Protokoller: Bu protokoller kullanıcı tarafından görülmezler ve sistemin derinliklerinde işlerler. Mesela IP(Internet Protocol) kullanıcı ile diğer makineler arasındaki paket dağıtımını sağlar. IP bu işi birçok bilgi sayesinde gerçekleştirir (örneğin iki bilgisayarında IP adreslerini bilmeli) ve bu esnada diğer network level protokollerle iletişim halindedir. Ama IP’nin yaptığı bu işlerin hiçbirisi kullanıcı tarafından görülmez.(Eğer bir sniffer kullanmıyorsa!-daha sonra detaylı olarak inceleyeceğiz-)
  2. Application Level Protokoller: Bunlar ise kullanıcı tarafından gözlenebilen protokollerdir. Örneğin FTP’yi(File Transfer Protocol) ele alalım. Bir bilgisayara FTP isteğinizi gönderirsiniz, kabul edilirse bağlanırsınız ve transfer başlar. Bu esnada transfer ile ilgili hata mesajlarını, durum raporlarını, ne kadar zamanda ne kadar byte gönderme yapıldığı gibi bilgileri kullanıcı olarak gözleyebilirsiniz.

TCP/IP Nasıl Çalışıyor?

TCP/IP bir protokol yığını üzerinden çalışır. Bu stack (yığın) iki bilgisayar arasında iletişim kurulabilmesi için gerekli olan protokollerin toplamıdır. Bu yığın katmanlara(layer) ayrılmıştır ve biz bunlardan 5 tanesini inceleyeceğiz.

  • Server Application
    Application Bir kullanıcı data transferini başlattığında bu katman isteği Transport Layer’e iletir.
  • Transport
    Bu katman dataya bir header ekler ve Network’e gönderir.
  • Network
    Bu katmanda routing amaçlı kullanılmak üzere dataya source ve destination IP’leri eklenir.
  • DataLink
    Yukarıdaki katmanlar ve Physical arasındaki data akışı üzerinde hata kontrolünü yapar.
  • Physical
    Bu katman kullanılan ortam(modem veya ethernet üzerinden datayı gönderir/kabul eder.

Sonuç olarak göndermek istediğiniz data bu katmanlardan geçer ulaştığı makinede de bunun tam tersi işleme tabi tutulur. Bu işlemler esnasında yoğun bir hata kontrolü yapılmaktadır. Her katman altındaki veya üstündeki katmandan data alıp ona data gönderebilir. Her katman birçok protokol ile ilişkilidir.


Protokoller

Yukarıda TCP/IP üzerinden protokol yığınını kullanarak bir datanın nasıl transfer edildiğini gördünüz. Şimdi bu katmanlarda kullanılan bazı belli başlı protokolleri yakından inceleyelim. İlk olarak yukarıda temel bölümleme ile ayırdığımız network-level protokollere bir göz atalım:

  • ARP (ADDRESS RESOLUTION PROTOCOL)

Bir network üzerindeki iki bilgisayar haberleşirken datalar paketlere ayrılarak gönderilirler. Bu paketlerin içinde datanın geldiği ve gideceği bilgisayarların IP adresleri saklanmaktadır. Ancak iletişimin kurulabilmesi için bu 32 bitlik IP adreslerinin 48 bitlik hardware adreslerine çevrilmesi gerekir. İşte bu çevrim işini gerçekleştiren protokole ARP denmektedir. ARP bunu gerçekleştirirken bir cache mekanizması kullanır. Yani hangi IP’nin hangi adrese denk geldiğini saklar. Bu da zamandan ve network kaynaklarından tasarruf sağlar.

  • ICMP (INTERNET CONTROL MESSAGE PROTOCOL)

ICMP’nin görevi kısaca iki bilgisayar arasındaki bir transfer esnasında hata kontrolünü yapmaktır. Böylece karşıdaki bilgisayarın durumunu anlayabilirsiniz(hala bağlı mı değil mi gibi). En çok bilinen ICMP uygulaması ping adındaki programdır. Bu program karşıdaki makineye bir paket gönderir ve echo olarak bir cevap dönmezse karşıdaki bilgisayarın koptuğunu anlayabilirsiniz.

Ayrıca bu utility sayesinde gönderdiğiniz packetlerin ne kadar sürede karşıya ulaştığını da öğrenebilirsiniz. Bir çok IRC client’inde bu program dahil edilmiştir ve böylece yazdığınız mesajların karşıdaki kişiye ne kadar süre sonra gittiğini öğrenebilirsiniz. Eğer bu süre bayağı büyükse IRC kullanıcılarının LAG olarak tabir ettikleri durum ortaya çıkar.

  • IP (INTERNET PROTOCOL)

IP Network Layer’e bağlıdır. IP’nin görevi kısaca TCP/IP suitindeki bütün protokoller için packet dağıtımını sağlamaktır. IP’nin ilginç yanlarından birisi de şudur. Bazı networkler daha küçük paketler istiyor olabilirler. Bu durumda paketler parçalara ayrılırlar ve bilgisayara ulaştıkları sıraya bağımlı olmaksızın tekrar bütünleştirilebilirler. Header’da saklanan diğer bilgilerden de biraz bahsedelim. Burada hangi protokolün kullanıldığı, header checksum’ı(checksum’ın ne olduğunu sonraki konularımızda bahsedeceğim) ve time-to-live belirteci gibi bilgiler bulunmaktadır. Time-to-live bir paketin ne kadar süre internette dolaşacağını belirler. Sayısal bir değerdir ve zaman geçtikçe birer birer azaltılır, 0 olduğunda ise packet ölür.

  • TCP (TRANSMISSION CONTROL PROTOCOL)

TCP internet üzerinde dosya transferi ve remote session gibi önemli görevleri yerine getiren en önemli protokoldür. TCP bunu (güvenilir) reliable data transfer denilen bir metod ile gerçekleştirir. Yani biraz daha teknik söylersek TCP bize reliable stream delivery’i sağlar ve bunun sayesinde datamızın aynı sırayla ve aynı içerikle gönderildiğinden emin oluruz. TCP bunu, 3 bölümle incelenebilen sanal bir devre üzerinden gerçekleştirir.  Devre açıldıktan sonra data aynı anda her iki yönde de transfer edilebilir ki buna fullduplex transmission path denir. Bu sayede data transferi esnasında oluşan hatalar istemci (client) makinaya bildirilir. Buna ek olarak TCP çok güçlü bir hata-kontrol mekanizmasına sahiptir. Gönderilen her data bloğu için bir numara üretilir. Client makina da kendisine başarılı bir şekilde ulaşan her blok için server’a transferin temiz olduğuna dair bir mesaj gönderir ve böylece transfer başarıyla gerçekleştirilmiş olur.

Eğer transfer başarısız olursa ne olur? Bu durumda iki ihtimal ortaya çıkmaktadır:

  1. Client makina bir hata mesajı alır.
  2. Client makinaya hiç bir şey ulaşmaz.

Birinci durumda hayati (bağlantının düşmesi ya da iletişimin kapatılması gibi) bir hata olmadığı müddetçe data yeniden gönderilir. Aynı şekilde eğer client’tan belirli bir süre alındı mesajı gelmezse de data yeniden gönderilir. Bu göndermeler transfer tamamlanıncaya kadar devam eder.

Şimdi yukarıdaki şeklin ilk basamağında bahsettiğimiz portlardan ve nasıl kullanıldıklarından, bir client request gönderdiğinde server’da neler olduğunu biraz daha yakından inceleyelim.


İnetd Daemon

Şimdi ilk olarak daemon nedir onu bir açıklayalım. Daemonlar arka planda çalışan ve başka process’leri dinleyen programlardır. Bunları DOS’taki TSR(Terminate and Stay Resident) programlara benzetebilirsiniz. Burada bizim dinlediğimiz processler connection request’lerdir. Şimdi herşeyi kısaca toplamak gerekirse; siz bir server’a bağlanmak istersiniz. Ancak bağlanırken bir port numarası da belirtmeniz gerekir. Çünkü her portu dinleyen başka bir process bulunmaktadır. Bu da -birazdan göreceğiz- aslında hangi protokolle haberleşmek istediğinizi belirtmektedir. Bütün bu processlerin ayrı ayrı çalışması server’ın kaynaklarını bitirebilir. O yüzden bu processlerin hepsinin kendi portunu dinlemesindense bir tane ana daemon yapılmış ve dışarıdan gelen bütün istekleri dinlemesi sağlanmıştır. Bu daemon kendisine bir istek geldiği zaman isteği inceler ve onunla ilgili olan process’i çalıştırıp iletişimin kurulmasını sağlar. Yani inetd aslında bir nevi trafik polisliği yapmaktadır. Bunun için inetd server’ın açılması ile beraber çalıştırılır ve ancak kapatılırken durdurulur. UNIX’de /etc dizinin altındaki inetd.conf dosyası ile inetd daemonunun hangi process’leri çalıştıracağını ayarlayabilirsiniz.


Portlar

Sanırım yukarıdaki açıklamalardan portların ne olduğu hakkında bir fikriniz oldu. Son bir örnek vererek bu konuyu da kapatalım. Bir server üzerinde binlerce port bulunur. Server üzerinde çalışan ve network üzerinden iletişim sağlayacak olan programlar kendilerine atanmış özel portları dinlerler. Bir kullanıcı da bu server üzerindeki bir servise erişmek istiyorsa o server’ın IP adresini ve o servisin dinlediği port numarasını gönderir. Böylece o servisle iletişim kurmuş olur. Örneğin web server’lar genel olarak 80 numaralı portu dinlerler. Hepimizin kullandığı web browser’lar (yani burada client programlar) aslında adresini yazdığımız server’ın 80. portuna bir istek göndermektedir. Aşağıda şu an günümüzde standart olmuş belli başlı servislerin dinlendiği port numaralarını veriyorum.

  • FTP (File Transfer Protocol) -> 21
  • Telnet -> 23
  • SMTP (Simple Mail Transfer Protocol) -> 25
  • Gopher (Artık kalmadı ya neyse -> 70
  • Finger -> 79
  • Hypertext Transfer Protocol -> 80
  • Network News Transfer Protocol -> 119

Evet, şimdi konuyu şöyle bir toparlayalım. TCP/IP süitini iki ana bölüme ayırmıştık. Öncelikle belli başlı network level protokolleri inceledik. TCP protokolünde portların tanımını yaptık ve bu portları bazı servislerin dinlediğinden bahsettik. İşte yukarıdaki bahsedilen bütün servisler application level protokollerdir. Yani kullanıcının gözlemleyebildiği protokollerdir.

Şimdi yukarıdaki tablodaki protokolleri kısaca inceleyelim.

  • Telnet

Telnet genellikle UNIX makinelerde yaygın olarak kullanılmaktadır. Kullanıcıya bir terminal ara yüzü sunar. Bu protokol sayesinde uzaktaki bir server’a login olabilir ve o makine üzerinde sanki o makineyi siz kullanıyormuş gibi komutlar çalıştırabilirsiniz. Genelde BBS (Bulletin Board System)’lerin ara yüzüne çok benzemektedir. Ayrıca databaselere çok mükemmel bir terminal tabanlı arayız sağlamaktadır. Şu an ABD’deki üniversitelerin %80’nin kütüphane kayıtlarına telnet üzerinden ulaşılabilmektedir. Günümüzde GUI (Graphical User Interface) genelde ön plana çıksa da bir çok sebepten dolayı telnet uzun yıllardır kullanılmaktadır. Bu sebeplerden bir tanesi text-temelli olduğu için network kaynaklarından çok az harcamaktadır. Ayrıca telnet’in güvenliğini sağlamak da çok basit bir iştir. Secure Shell gibi bu işi gerçekleştiren programlar mevcuttur.

  • FTP (File Transfer Protocol)

FTP bir bilgisayardan diğer bir bilgisayara dosya transferi için standart protokoldür. FTP sayesinde dosyaları download ve upload edebilirsiniz.

NOT: Bu protokollerin daha fazla açıklamaya ihtiyacı olduğunu zannetmiyorum çünkü internetle uğraşan herkesin bu konuda temel bilgisi vardır. FTP ve diğer protokoller de yukarıda temellerini anlattığımız client/server tipinde çalışmaktadır.

  • GOPHER

Gopher ilk çıkan prokollerden birisidir ve aslında HTTP’den sonra unutuldu denilebilir. Genellikle dosya sistemi şeklinde bir ara yüze sahiptir.

  • HTTP (HYPERTEXT TRANSFER PROTOCOL)

Herhalde en çok bilinen protokol budur. Öncelikle HTTP ve Gopher’ın Telnet’ten farkını söylemek istiyorum. Bir server’la telnet bağlantısı kurduğunuz zaman sanki gerçekten o bilgisayarın başında oturuyormuşsunuz gibi o bilgisayara login olursunuz ve çalıştırdığınız her komut server’ın kaynaklarından bir miktar harcar. Ancak HTTP ve Gopher’da durum farklıdır, login olan bir user yoktur. Server kendisine istek geldiği zaman client’a gerekli datayı gönderir o kadar, sadece bu esnada server’ın kaynakları kullanılmış olur. Bu sayede kullanıcı ile server’ın arasına bir mesafe koyulmuş olunur.

  • NNTP (NETWORK NEWS TRANSFER PROTOCOL)

USENET’i sanırım hepiniz duymuşsunuzdur. İşte bu protokol sayesinde bir haber grubuna bağlanabilir ve oradan dilediğiniz konuyu okuyabilirsiniz. Dilerseniz sizde bir mesaj postalayabilirsiniz.

Sanırım artık siz de anladınız. TCP/IP=internet demek. Bu bölümde TCP/IP’nin temel bölümlemesini yaptık. Bunları teker teker inceledik. Unutmayın ki burada sadece belli başlı protokollerden bahsettik, daha yüzlerce protokol mevcut ve bunların birçoğunda da hatalar var.


Scanner Nedir?

Scanner’lar bir hacker’ın ilk olarak kullandığı programların başında gelir ve en önemli silahlarından birisi sayılabilir. Scannerlar gerçekte TCP/IP portlarına ve servislerine saldırırlar ve onlardan gelen cevapları kaydederler (Belli başlı servislerin bazı belli portları dinlediğini önceki bölümde anlatmıştık). Bu sayede hedefiniz hakkında birçok önemli bilgiye ulaşırsınız. Ayrıca scannerlar hedefteki bazı güvenlik açıklarını da ortaya koyabilirler. Scannerların kontrol ettiği çeşitli güvenlik açıkları vardır. Bu Açıklarıyamamamış sistemleri bulmak için çok büyük domainler taranabilir. Tabii deliği bulduktan sonra içeri sızmayı becermek size kalıyor. Bir scanner karşıdaki hedef bilgisayarı ya da networku bulabilmeli ve üzerinde hangi servislerin çalıştığını çıkartabilmelidir. Son basamak olarak da bu servisleri bilinen açıklar için test etmelidir. Burada size detaylı olarak scannerları anlatmayacağım genel olarak ne yaptıklarından, hangi amaçlar için kullanılabileceklerinden en son olarak da en ünlü bir kaç scanner’ı tanıtmaya çalışacağım. Sonuçta bu programları internetten indirip kendi içindeki readme’lerini okuyorak öğrenmeniz gerekiyor.


Hedefi Nasıl Bulacağız?

1995 yılında Silicon Graphics (SGI) WebForce modeli adında bir bilgisayar piyasa sürdü. SGI’ların üzerinde bir çeşit UNIX olan IRIX çalışmaktadır. Bu makinaları özel kılan ise DEFAULT olarak bazı temel print işlerinin yapılması için şifre gerektirmeden “lp” olarak login olabilmenizdir. Eğer bir makineye login olup shell’e düştüyseniz zaten işin büyük kısmı bitmiş demektir. Böylece internetteki crackerler WebForce makinalarını aramaya başladılar. WebForce adminlerinin çoğu sistem güvenliğinden pek anlamadığından ftp dizinlerini (world readable) bırakıyorlardı. Yani bu da kolayca sistem loginlerinin ve şifrelerin tutulduğu /etc/passwd dosyalarına erişebilmeniz demek. altavista.digital.com gibi arama motorları bu dosyaları da listelemektedir. WebForce modeline özel bazı kelimeleri veya program adlarını kullanan sorgular ile bu makinelerin bir listesini elde edebilirsiniz. Bu bir yöntem, bazıları da internic.net’deki whois servisini kullanarak bilgisayarların kayıtlı olduğu database’i araştırdı. Ancak en güvenilir yöntem bir scanner kullanmak. Scannerımızın yapacağı iş kendisine parametre olarak verilen ip numaralarına telnet bağlantısı yapmaya çalışmak ve eğer bağlantı kurabilirse karşı taraftan gelen cevabı bir text dosyasına saklamak. Bu çok özel bir durum ancak scannerların muhtemel bir hedefi bulmakta sağladığı kolaylığı göstermesi açısından güzel.


Network Utilities

UNIX’lerdeki bazı komutlar size çok önemli bilgiler sağlayabilirler. Aşağıdakilerin hepsi temel olarak UNIX programlarıdır ancak bu komutların diğer işletim sistemleri için olan çevrimleri (porting) de vardır. Webde küçük bir araştırma ile bu tip birçok programa ulaşabilirsiniz. UNIX kullanıyorsanız bu komutların manuel page’lerini okuyarak parametrelerini öğrenmenizi ve herhangi bir domain üzerinde deneyip neler elde ettiğinizi kontrol etmenizi tavsiye ederim.

İlk olarak host komutunu ele alalım. Bu komutla bir networkle ilgili bir çok bilgiye sahip olabilirsiniz. Mesela hangi işletim sistemleri hangi makineler üzerinde çalışıyor bunu öğrenebilirsiniz. Traceroute komutu ise bir makinenin yerini belirlemek için kullanılır. İsminden de anlaşılacağı gibi traceroute gönderilen datanın karşı makineye ulaşmak için dolaştığı domainlerin adını gösterir. Böylece sonuç olarak elimizde sadece IP varsa bunu coğrafik olarak konumlandırmak traceroute ile mümkün olmaktadır. Rusers ve finger komutları bir network üzerindeki kullanıcılar hakkında bilgiler verir.

Böylece finger’ladığınız bir kullanıcının o an bağlı olup olmadığını da öğrenebilirsiniz. Eğer hedefin exported dizinleri varsa showmount komutu -e parametresi ile kullanılarak bu dizinler mount edilebilir.


Scannerlar

Şimdi belli başlı scannerlara kısaca bir göz atalım:

  • NSS(NETWORK SECURITY SCANNER)

NSS’yi diğer scannerlardan ayıran en büyük özelliği Perl’de yazılmış olmasıdır. Bu da C derleyicisine ihtiyacınız olmadığı anlamına geliyor. Birçok yerde C derleyicisine erişim hakkınız kısıtlanmış olabilir. Birçok scanner programı da C kodu şeklinde dağıtılıyor. Yani kullanabilmek için önce compile etmeniz gerekiyor. Perl ise CGI programlamasında çok kullanılan bir program olduğundan genelde erişim izni verilir. Bu yüzden NSS çok popüler bir seçimdir. NSS aslında DEC platformu için yazıldığı söyleniyor. Ancak üzerinde Perl 4 veya daha yukarısı olan bilgisayarlarda küçük değişiklikler yaparak çalıştırılabiliyor.

NSS’nin en büyük özelliği çok hızlı olması. Yaptığı genel kontroller şunlar:

  • sendmail
  • Anon FTP
  • TFTP
  • Host.equiv (root olmanız gerek)
  • Xhost

NSS genellikle tar.gz olarak sıkıştırılmış dağıtılmaktadır. Ancak açtığınız direk çalıştıramazsınız bazı enviroment variable’ları ayarlamanız gerekiyor.

Ayrıca scan işlemini ağ üzerinde birçok makineye yayabilirsiniz.

  • STROBE(THE SUPER OPTIMIZED TCP PORT SURVEYOR)

Adından da anlaşılacağı gibi Strobe bir makinenin TCP portlarını scan edip bütün açık portları bildirmektedir ve bayağı hızlıdır. Strobe bir makinede hangi servislerin çalıştığını söylemektedir.

  •  SATAN(SECURITY ADMINISTRATOR’S TOOL FOR ANALYZING NETWORKS)

SATAN büyük ihtimalle en ünlü scannerdır. Aslında bunu da hak ediyor. Yazılımında C ve Perl kullanılmış. SATAN’ı farklı kılan bir özelliği de user-friendliness için X ortamında HTML bir arayüze sahip olması. Programın kalitesi yazarlarından gelmekte:

Dan Farmer (COPS’un yazarı) ve Weitse Venema(TCP Wrapper’ın yazarı-Firewall mantığının atası).

SATAN remote hostu bilinen güvenlik açıkları için arar, ayrıca:

  • * FTPD Açıkları ve yazılabilir FTP dizinleri
  • * NFS Açıkları
  • * NIS Açıkları
  • * RSH Açıkları
  • * sendmail
  • * X server Açıkları

Sizin farkına vardığınız gibi bunların hepsi bilinen açıklardır ve hepsi elle de yapılabilir bu scannerların yaptığı bu işlerin otomatikleştirmektir.

  • JAKAL

Jakal bir stealth scannerdır. Bu scanner sayesinde bir firewall’un arkasındaki domaini iz bırakmadan tarayabilirsiniz. Stealth scannerlar “half scan” metodunu kullanılırlar. Bu metodda karşıdaki bilgisayarla SYN|ACK transaction’ınını başlatır ama asla bitirmez!

  • IdentTCPscan

IdentTCPscan özel bir scannerdır. Bu program sayesinde karşıdaki bilgisayarda çalışan servislerin hangi kullanıcı olarak çalıştıdığını bulabilirsiniz. Yani process’lerin UID’sini gösterir. Örneğin 80. portun karşısında Userid:root yazıyorsa bu o site için büyük bir tehlike demektir. Çünkü bazı CGI-bin dosyalarındaki açıklar kullanılarak bir cracker sadece bir browser kullanarak karşı tarafta istediği komutu çalıştırabilir, phf bunun en güzel örneğidir. Ancak şu an hemen hemen bütün sitelerde bu açık yamanmış durumda, boşuna uğraşıp zaman kaybetmeyin.)


Atlas_tr / Düzenlenmiştir.

Yazar Hakkında

Mustafa Sarıdal

Yorumlar

  • 0 dan başlayanların güzel bir şekilde bilgilendiriyor benimde bildiklerim ve bilmediklerimi vardı faydalı olmuş teşekkürler

  • Güzel bir derleme olmuş. Özellikle sosyal mühendislik ile hackerlığın karıştırıldığı günümüzde böyle bir yazıya ihtiyaç vardı. Akademik Bilişim’de güzel kurslar var başvurular bitti gerçi ama aklınızda bulunsun güzel kurslar var ve güvenlik yöntemlerini uygulamalı şeklinde gösteriyorlar. Yazıların devamının gelmesi dileğiyle.

  • Cok basarili ve faydalı bir yazı olmuş. Ilk mailden okudum sonra internet sitesine girip tekrar okudum. Böyle guzel bilgiler verdiğiniz icin teşekkür ederim. 😊

  • Detaylı bir makale ama gayet güzel olmuş. Hacking, cracking, scanning vs. Bunlar hep farklı şeyler ve birbirine karıştırılan şeyler. Makaleyi okudum ve bilmediğim birkaç terimi de öğrenmiş oldum, teşekkürler, iyi ki varsınız 🙂

  • Herhangi bir oyunun crackini yaptığımda kendime ben bir crackerım diyordum 😀 asĺinda hackerligin gercektende medyanin yansittigi gibi bir meslek olmadigini keşfettim bir bilgisayar mühendisi adayı olarakta instagram hackleyebiliyor musunuz lafından sıkıldım 😀 Bu yararlı makale için teşekkürler:)

  • Aslında makaleyi tam anlamıyla okudum sayılmaz. Çünkü ben Tcp vb. protokoleri biliyorum(Bir zamanlar İnternet Programcılığıyla uğraştım).Aslında hackingin belli bir kuralı vb. yoktur.Aynı şey cracker içinde geçerli.(Makale Hakındada Daha Öz Olmalıydı ).Ve sizede tam anlamıyla katılmıyorum iş sadece unix değil.İşini bilirsen Windows vb. İlede işini görürsün.Ve scannerlara nmap te eklenmeliydi.Port lar olarak ta bilgi verilmeliydi örneğin:(Sık Kullanılan Portlar)1 TCP Port Service Multiplexer (TCPMUX)

  • Gerçekten çok uğraşmıssın, ben okulda yaptığım projelere bukadar uğraşmiyodum gerçekten bize deger veriyosun bizde seni seviyoruz başarılarin devamini dilerim.

  • Özellik Scannerlar net ve açıklayıcı olmuş,bu konuya olan ilgimi daha da arttıran güzel ve faydalı bir makale .👍
    Teşekkürler…

  • Açıkcası merak ettiğim konulardan biride makale ile ilgili açık olan portlardan direk saldırı yapılabilir mi?
    Ve site hack lemek için yapılan saldırıların gücünü nasıl arttırabiliriz. Bu konuda hangi alanlarda uzmanlaşmak gerekir. Bir nevi etik hacker olmak için neler yapılmalıdır.

  • Mitnic (asıldı diye hatırlıyorum) davasının hâlâ görüldüğünü bilmiyordum. Birde sanal makine olayını bulan müthiş iş başarmış diye bilirim ona da deyinmek güzel olurdu

  • Öncelikle yazın için teşekkür ediyorum bilgilendirici olmuş. Ben bilgisayar mühendisliği öğrencisiyim. Burada yazılı birçok terimi bildiğimden sıkıntı çekmedim fakat Mustafa tüm konuları açıklayıcı bir şekilde anlattığı için herkese anlaşılır olduğuna inanıyorum. Sadece başlıkla da kalmadı konu kapsamı daha dışarı çıktı. Hem iyi hem de kötü bir şey bu çünkü konunun kayması, daha farklı konular okumak, okuyucuyu yorabilir. Bir yandan da yazının zenginliğini artırıyor. Neyse her açıdan güzeldi devamını bekliyoruz.

  • Zamanında ben de cok ugrasiyordum linuxle ancak meger bilmedigim ne cok sey varmis :/ umarim bunun gibi daha cok makale gelir

  • Anlamam 3 defa okumama mâl oldu fakat değdi. Türkçe karşılığı olmayan kelimeleri ana dilinde kullanman da içeriğin bütünlüğünü sağlamış. Eline emeğine sağlık.

  • Nmap de basarili bir scannerlardan . Gayet açıklayıcı ve anlaşılır olmus. Bir solukta okuyor insan sonrasinda ne bilgiler verilecek diye düşünüyor.

  • Hacker ve cracker ı baya yanlış biliyomuşum. Onu fark ettim. Sağolun öğretici ve faydalı olmuş.

  • Güzel bir yazı olmuş teşekkürler ilk öncelikle. Bir çok bildiğim yanlışları bu yazı sayesinde doğrusunu öğrendim. Tekrardan bu konulardaki hevesimi yerine getiren bir yazıda diyebilirim 🙂 . Emeğinize sağlık çok teşekkürler

  • Oldukça açıklayıcı, üzerinde çalışılmış, bilgi birikimi ile terimlerin harmanlandığı çok güzel bir makale olmuş emeğinize sağlık. Biraz uzun sürdü bitirmek ama benim için kaynak niteliğinde. Çok teşekkür ederim.

  • Öncelikle şunu diyebilirim ki harika bir makale. Ben çok bayıldım. Bu makale sayesinde kendime birçok şey katabileceğime inanıyorum. Hepsini okuyamadım belli bir kısmını okudum. O belirli bir kısımda dahi birşeyler öğrendiysem tamamını okusam baya bir şey öğreneceğim herhalde. Ellerinize sağlık.

  • Biraz uzun gelebilir ama kesinlikle okumanızı tavsiye ederim. Eğer hiç bilginiz yoksa içerisindeki terimlere yabancılık çekebilirsiniz ama elinizin altında arama motorları var onları kullanarak o terimleri araştırıp daha güzel bir şekilde anlayabilirsiniz. Gayet güzel bir makale olmuş admin devamını bekliyoruz.

  • Ufkumuzu genişletmek için oldukça güzel bir makale. Oldukça iyi bir şekilde derlenmiş. Emeğinize sağlık.

  • Henüz tamamını okuyamadım ancak okuduğum kısmıyla yeterince derin ve yüzeysellikten fazla.Neredeyse olaya sıfırdan başlayan biri olarak tamamen anlayamadım ancak sürekli geri dönüş yaparak anlamaya çalışacağım.

  • Öncelikle yazarın emeğine sağlık. İnstagram hikayesinden gelip okudum. İyikide okumuşum bilmediğim kavramlar vardı ve o kelimeleride arattım ve siber güvenlik, Unix, Cracker ws Hacker farkı gt anımı ve bir çok açılımı barındıran konuyu güzel sapıtan bir yazı olmuş. 🙂

  • Bilgisayar mühendisliği okuyup oradan yazılım üzerinden gitmek istiyoru. Bilgilendirici yazınız için teşekkür ederim.

  • Çok yararlı ve bilgilendirici bir yazı, teşekkürler. Henüz yazının hepsini okumamama rağmen bir sürü yeni şey öğrendim.

  • Çok uzun ve güzel bir yazı olmuş. Telefonda olduğum için istedşğim şekilde okuyamasam da ilk işim detaylıca okumak olacak 🙂 . Gittiğim yolla ilgili de bilgi almam güzel oldu açıkçası daha okur okumaz. Teşekkürler…

  • Çok iyi bulmadım aşırı derece uzama söz konusu ama emek var ve pes etmeden uğraşmış bir motivasyon ve bilgilendirici yazı olarak aldım.

  • Redux yaptigi crack yazilimina crack korumasi ekliyor adamlar isi biliyo ya 🙂
    her neyse guzel sayfa basarilariniz devamini diliyorum

  • Hacking ile Crackig arasındaki farkı mükemmel özetleyen bir yazı olmuş var bu iş için başlangıç rehberi görevi görebilecek bir makale olmuş elinize sağlık.

  • Hacking ile Cracking farkı çok iyi özetlenmiş. Ayrıca yazdığınız makale de bu işlere başlangıç göevi niteliğinde. Elinize sağlık.

  • Merak ettiğim bir konu var acaba bizler siber güvenlik olayını tamamen yapay zekaya bırakabilir miyiz bu konuda bir yazı yazarsanız sevinirim

Yorum Ekle