Bu bölümde bir cracker’ın planlı bir saldırıyı nasıl yaptığını adım adım inceleyeceğiz. Burada anlatılan işlemler bir saldırganın uzaktan bir sisteme nasıl saldırdığını anlatmaktadır.
Cracker’ların sisteme saldırıları nasıl yaptığını bilirsek bu şekilde kendi sistemlerimizde gerekli tedbirleri daha bilinçli olarak alarak sistemimizi daha iyi koruyabiliriz diye düşünüyorum. Bu nedenle konunun bundan sonraki kısmına planlı olarak yapılan bir saldırının aşamalarını göstermek istiyorum.
Genelde pratik olarak yapılan saldırılarda (daha çok aceleci olan script kiddie’ler tarafından yapılan saldırılardır bunlar) burada anlatılan aşamaların çoğu atlanabilmektedir.
Öncelikle saldırı yapılacak hedef sistemde herhangi bir firewall olmadığını var sayıyoruz. (Tabi artık günümüzde firewall network için vazgeçilmez bir araç haline gelmiştir ve gün geçtikçe Internet’e bir şekilde firewall kullanmadan bağlanan bir sistem bulmak imkansızlaşmaktadır.)
Burada anlatılacak olan teknikler cracking için genel bir yöntemdir. Yani her türlü sisteme saldırmak için kullanılabilir ancak biz UNIX sistemi açısından saldırıları inceleyeceğiz.
Şimdi ilk aşamadan başlayarak bir yetenekli ve kararlı bir cracker’ın bir sisteme nasıl saldıracağını inceleyelim:
1. Bilgi Toplama
Cracker’ın yapacağı ilk iş, saldırı yapılacak hedef sistemin kendisiyle doğrudan bir iletişime gerek duymaz! Yani cracker ilk olarak karşıdaki sistemin network tipini ve hedef makineler hakkında bilgi edindikten sonra, hedef sistemde uğraştığı kişiyi tanımak için onunla ilgili bilgi toplamaya çalışacaktır. Söz konusu kişi tabiki sistemin yöneticiliğini yapan root erişimine sahip yöneticidir.
Cracker sistem hakkında bilgi toplamak için aşağıdaki teknikleri kullanacaktır:
a-) Ağda bulunan tüm sistemlerle ilgili bilgi toplamak için host sorgusu çalıştıracaktır. host komutu domain adı sunucularını (DNS servers) sorgulayarak ağ hakkındaki bulunabilecek tüm bilgileri toplar.
Domain adı sunucusu o domainle ilgili bir çok bilgi tutarlar, asıl amacı alan adlarını IP numaralarına dönüştürmektir ancak aynı zamanda o sistemin donanım ve üzerinde çalışan işletim sistemi gibi bilgileri de saklarlar. nslookup komutu bir DNS sunucusunu sorgulamak için kullanılan komuttur. host komutu da nslookup komutuna benzer ama daha açıklayıcı ve ayrıntılı bilgi verir. Bu nedenle host komutu en tehlikeli on komut listesinde yer alır!
Örnek olarak bir domain sunucusuna yapılan bir host sorgusunun sonucuna bakalım:
host -l -v -t any bu.edu
…
bu.edu 86400 IN HINFO SUN-SPARCSTATION-10/41 UNIX
PPP-77-25.bu.edu 86400 IN A 128.197.7.237
PPP-77-25.bu.edu 86400 IN HINFO PPP-HOST PPP-SW
PPP-77-26.bu.edu 86400 IN A 128.197.7.238
PPP-77-26.bu.edu 86400 IN HINFO PPP-HOST PPP-SW
ODIE.bu.edu 86400 IN A 128.197.10.52
ODIE.bu.edu 86400 IN MX 10 CS.BU.EDU
ODIE.bu.edu 86400 IN HINFO DEC-ALPHA-3000/300LX OSF1
…
STRAUSS.bu.edu 86400 IN HINFO PC-PENTIUM DOS/WINDOWS
BURULLUS.bu.edu 86400 IN HINFO SUN-3/50 UNIX (Ouch)
GEORGETOWN.bu.edu 86400 IN HINFO MACINTOSH MAC-OS
CHEEZWIZ.bu.edu 86400 IN HINFO SGI-INDIGO-2 UNIX
POLLUX.bu.edu 86400 IN HINFO SUN-4/20-SPARCSTATION-SLC UNIX
SFA109-PC201.bu.edu 86400 IN HINFO PC MS-DOS/WINDOWS
UH-PC002-CT.bu.edu 86400 IN HINFO PC-CLONE MS-DOS
SOFTWARE.bu.edu 86400 IN HINFO SUN-SPARCSTATION-10/30 UNIX
CABMAC.bu.edu 86400 IN HINFO MACINTOSH MAC-OS
VIDUAL.bu.edu 86400 IN HINFO SGI-INDY IRIX
KIOSK-GB.bu.edu 86400 IN HINFO GATORBOX GATORWARE
CLARINET.bu.edu 86400 IN HINFO VISUAL-X-19-TURBO X-SERVER
DUNCAN.bu.edu 86400 IN HINFO DEC-ALPHA-3000/400 OSF1
MILHOUSE.bu.edu 86400 IN HINFO VAXSTATION-II/GPX UNIX
PSY81-PC150.bu.edu 86400 IN HINFO PC WINDOWS-95
BUPHYC.bu.edu 86400 IN HINFO VAX-4000/300 OpenVMS
….
Bu çıktıdan da görüldüğü gibi host komutu ağ ile ilgili olarak çok tehlikeli olabilecek sonuçlar vermektedir. Yukarıda ki satırlardan da görüldüğü gibi ağda bulunan makinelerin IP numaraları, işletim sistemi ve makinenin ne olduğu öğrenilebilmektedir.
DNS sunucusunun bu tür bilgileri Internet’te herkese vermesini engellemek için çeşitli önlemler alınabilir.
Bunun için firewall kullanılabilir.
Alan adı sunucu sorgularının sadece belli bir adres grubu tarafından yapılmasına izin verilebilir.
Yada bu sunuculara dışardan erişim tamamen engellenebilir.
DNS sunucusunun (BIND sunucusu) konfigüre etmek için /etc/named.conf dosyası kullanılmaktadır.
b-) Standart WHOIS sorgusu. Bu sorguyla cracker o sistemin teknik sorumlusunun bilgilerini almak için kullanır. Bu kişinin e-posta adresi fazla önemli gibi görünmese de bu adres sistem hakkında çok önemli bilgiler toplamak için kullanılabilir.
c-) Usenet ve Web sayfalarında arama yapmak. Cracker sisteme saldırmadan önce şimdiye kadar öğrendiği bilgiler doğrultusunda Internet’te o sistemle ilgili daha fazla bilgiye erişmek için aramalar yapacaktır. Yani Cracker eline geçirdiği sistem yöneticilerin yada teknik sorumluların e-posta adreslerini kullanarak bu kişilerim Usenet yada güvenlikle ilgili mail listelerinde görünüp görünmediklerini araştırır.
Cracker’ın ilk olarak sistem yöneticisi yada sorumlusunun e-posta adresini araması ve bu kişinin bu adresi Internet’te araması biraz anlaşılmaz gelebilir.
Ancak sistem yöneticisi sistemin günlük olarak yönetimini yapmaktadır ve sistemde çıkabilecek sorunlarla ilgili olarak Usenet haber gruplarına ve güvenlikle ilgili mail listelerine başvurmuş olabilir. Dolayısıyla cracker buralardan sistem yöneticisinin kendi sistemiyle ilgili olarak vermiş olabileceği her türlü bilgiyi toplamaya çalışmaktadır.
Bu konuda bariz bir örnek verecek olursak, bazen sistem yöneticileri o kadar dikkatsiz olmaktadırlar ki bir haber grubunda bir sounla ilgili olarak tartışırken sistemleri hakkında başkalarının bilmemesi gereken bilgileri bile verebilmektedirler.
Sistemlerinin root şifresini bile verenlere rastlanabiliyor. Bu şekilde, yani haber gruplarından ele geçirilen root şifreleriyle crack edilen bir sürü sistem vardır!
Ancak burda cracker için asıl zor olan kısım sistem yöneticisinin kullanıcı ID ve e-posta adresini doğru olarak ele geçirmesidir. Bunun için çeşitli yolları deneyecektir cracker.
Sistem yöneticisinin diğer network’larda bulunabilecek account’larını da takip edebilir. Bunu takip etmek için cracker finger ve ruser gibi komutları kullanabilir. Bildiğiniz gibi finger komutu sisteme logon olan kullanıcıları göstermektedir. Ayrıca finger sistemde logon olmayan bir kullanıcının en son nereden login olduğunu da gösterir. İşte yöneticinin en son login olduğu sistemlerdeki adresi de takip edilerek bu kişiyle ilgili diğer bilgilere erişmeyi deneyebilir.
Finger Sorguları : Finger sorguları bir cracker için yukarıda değindiğimiz gibi sistem hakkında çok fazla bilgi verebilir. Sistemde logon olmuş kullanıcı ID’lerini, isimlerini, en son login oldukları yeri, mail bilgileri gibi bir çok bilgi verir.
Cracker’ımız saldırdığı sistemde şüphe uyandırmamak için Internet’te yüzlerce sitede bulunabilecek “finger gateway” lerini kullanacaktır. Bu sunucular bir web sayfasından kullanıcıdan finger sorgusu gönderilecek olan sunucu adresini alır ve o sunucuya finger sorgusunu yollayarak yine sonuçları ekrana getirir. Böylece cracker kendi gerçek IP numarasının saldırdığı sistem loglarında görünmesini engelleyebilir.
Tabi aslında bu gerçek bir gizlilik sağlamaz, hedef sistemdeki sistem yöneticisi çok fazla paranoyaksa bu finger gateway sunucusunun sistem yöneticisi ile temasa geçerek cracker’ın gerçek IP adresini ele geçirebilir.
Bu şekilde çalışan diğer bir yöntemse finger yönlendirme işlemidir. Daha önceki bölümde gördüğümüz gibi, cracker bir finger
finger kullanıcı@gercek_sunucu.com@gecici_sunucu.com
Aslında finger bir sistemdeki kullanıcıların listesini çıkarmak için kullanılan tek yol değildir bundan başka güvenlik dünyasında çok fazla güvenlik açığı bulunmasıyla meşhur olan sendmail programı da kullanılabilir.
Bunu test etmek için bir SMTP sunucusuna telnet etmek yeterlidir. Örnek olarak;
telnet smtp_sunucusu.com 25
Bu komut smtp_sunucusu.com sunucusunun 25 numaralı portuna (yani SMTP portuna) telnet bağlantısı sağlar. SMTP mail göndermek için kullanılan bir protokoldür. Ancak telnet yapıldıktan sonra SMTP sunucusunun izin verdiği bir dizi komut kullanılabilir. mail from, rcpt to, data , quit gibi komutlar çalıştırılabilir. Ancak iki tane komut vardırki bunlar sistemdeki kullanıcılar hakkında bilgi vermektedir. Bunlar vrfy ve expn komutlarıdır. Bu komutlar sistemde bulunan bir kullanıcı ID’sini onaylamak için kullanılırlar.
telnet işlemini yaptıktan ve sunucuya bağlanıldıktan sonra telnet ekranında aşağıdaki gibi bir komut girilebilir:
vrfy osman
250 Osman Atabey
Buradaki 2. satır smtp sunucusunun bize gönderdiği cevap satırıdır. SMTP 250 dönüş değeri başarılı bir işlem olduğunu belirtir ve osman kullanıcısının gerçekten sistemde olduğunu ve gerçek isminin Osman Atabey olduğunu belirtir. Ayrıca satırın devamında bu kullanıcının email adresinin de vermektedir.
Eğer sunucuda bu kişi yoksa sunucu 550 dönüş değeriyle hata verecektir.
vrfy osman
500 osman… User unknown
Burdan da sistemde böyle bir kullanıcı olmadığı anlaşılır. Bu örnekten de anlaşıldığı gibi cracker’lar sistem hakkında bilgi toplamak için çok değişik yöntemleri denemektedirler.
sendmail’in bu özelliği genellikle sistem yöneticileri tarafından bilinmediği için hiç bir önlem alınmaz.
sendmail’in bazı sürümlerinde bu komutlar çalışmazken bazılarında bu komutlar sorgulanan kullanıcı ismini aynen getirmektedir.
Ancak kullanılan sendmail programının bu komutlara izin verip vermediği kontrol edilmelidir. Eğer izin veriyorsa bu komutların çalışması sendmail konfigürasyon dosyasından engellenmelidir. Bunun için /etc/sendmail.cf dosyasına aşağıdaki satırın girilmesi yeterli olacaktır.
O PrivacyOptions=goaway
Diğer yandan sendmail konusunda güvenlik yönünden yapılması gereken bir çok ayar vardır bunlar için sendmail’in dökümantasyonunda güvenlik konusuna bakılabilir. (sendmail sistemini ayrıntılı olarak anlatan O’REILLY’den “sendmail” adlı kitap yararlı olabilir.)
Cracker sistem hakkında bilgi toplamak için bilinen tüm yolları deneyebilir. Daha önce de değindiğimiz bu yöntemleri kısaca hatırlatmak için güvenlik dünyasında yazdıkları araçlarla çok ünlü olan Dan Farmer ve Wietse Venema’nın yazdığı bir makaleden (improving security by breaking into it) alıntı vermek istiyorum:
” ;İlk olarak saldırdığınız sistemle ilgili olarak mümkün olduğu kadar bilgi toplamaya çalışın. Bunun yapmak için kullanılabilecek çok zengin network servisleri vardır: finger, showmount, rpcinfo komutları iyi birer başlangıçtır. Ancak sadece bunlarla yetinmemelisiniz ayrıca DNS, whois, sendmail(smtp), ftp, uucp ve bulabildiğiniz tüm servisleri kullanmalısınız. ”
Bu açıklamadan da anlaşıldığı gibi bir sistem hakkında edinilebilecek her türlü bilgi saldırı için işe yarayabilir.
2. İşletim Sisteminin Belirlenmesi
Cracker sistem yöneticisi ve ağ hakkında gerekli bilgileri topladıktan sonra saldıracağı ağda bulunan sistemlerde kullanılan işletim sistemlerini ve sürümlerini belirlemek için bir önceki kısımda anlatılan tekniklerin dışında çeşitli teknikleri deneyebilir.
Günümüzde artık ağlar daha fazla heterojen bir yapıya sahiptir. Aynı ağda çok değişik donanım ve işletim sistemleri kullanılabilmektedir. Ancak bu güvenlik yönünden çok daha fazla açık olmasına neden olacaktır. Ne kadar çok işletim sistemi varsa o kadar da güvenlik açığı olacaktır. Çünkü her sistem kendisine özgü güvenlik açıkları içerebilir ve bu şekildeki bir ağda cracker’ın bir güvenlik açığı bulması ve tüm ağ’ın güvenliğini tehlike altına atması kaçınılmazdır.