Görünmez Misafirler: RootKit
Transkript
Görünmez Misafirler: RootKit
Görünmez Misafirler: RootKit Soru: Şirketimizdeki çalışanlardan biri sistemde güvenlik sorunu olduğunu söyledi fakat sistem yöneticisi olmama rağmen ben yanlış bir durum görmedim(Sistem yöneticisi bilemezse kim bilecek ki :> ) Cevap: Her söze inanılacak diye bir durum yok. Fakat sistem güvenliği konusuna gelince işte orada durmak gerekir. İster doğru olsun ister yanlış. Her zaman dikkatli olmak gerekir. Yukarıdaki soruya yönelik denilecek olayların başında paket yakalayıcılara (Sniffer) dikkat!!! UNIX TROJANLARIN TARİHİNE KISA BİR BAKIŞ 1980li yıllarda Unix sisteminin üzerinde neler olduğunu belirlemek çok zor değildi. o "last" komutu davetsiz misafirin sistemde hangi hesapları(account) kullandığını, nereden bağlandığını gösterir. o "ls" komutu sistemde bulunan dosya/dizinleri gösterir. "ps" çalışan programları(sniffer), password kırıcı programları ve davetsiz misafirin çalıştırdığı herhangi bir dosyasını) listeler. o "netstat" komutu network bağlantılarını ve bilgi akışını sağlayan portları gösterir. o "ifconfig" komutu network kartının durumunu göstererek sistemin PROMISC modda olup olmadığını bildirir. Kısaca sistemin güvende olup olmadığı sana kolaylıkla bildirilirdi. İlerleyen zamanlarda akıllı hackerlar sistem durumunu takip edecek ve bunla birlikte kendi aktivitelerini gizleyecek yöntemler geliştirdiler. Bu metodlar 2600 ve Phrack gibi elektronik dergilerde yayınlandı. Örneğin, "Hiding Out Under Unix" (Phrack Volume Three,25 Mart 1989) isimli yazıda /etc/wtmp dosyasının düzenlenerek tüm login kayıtlarının nasıl temizleneceği bir kodla anlatılmıştı. Zaman ilerledikçe akıllı programcılar "ls","ps","netstat" gibi önemli sistem komutlarına trojan yerleştirmeyi başardılar. Linux Root Kit versiyon 3 (lrk3), 1996 Aralık ayında yeni özelliklerle birlikte yayınlandı. Kendini aktivitelerini gizleyerek sniff ile sistemdeki şifreleri yakalayabiliyordu. Bu RootKit x86 tabanlı PClerde Linux üzerinde çalışıyor. 1998 Kasım ayındada Linux Root Kit version 4 (lrk4) duyuruldu. Bu versiyona yeni özellikler eklenmişti. Bunlar: "pidof" - "killall" (belirtilen süreci(proses) öldürme), "find" (Belirtilen tip, isim, tarih gibi durumlara göre dosyaları listemele), "top" (sürecleri gösterme), "crontab" (Priyodik olarak istenilen işlemleri belli zamanda gerçekleştirme) Diğer rootkit programlarını bulabileceğiniz örnek adresler: ftp://ftp.technotronic.com/unix/trojans/ http://packetstormsecurity.org/UNIX/penetration/rootkits/ Bir hackeri yakalamak için, onun araç ve teknikleri bilmek gerekir. Bir hackerin ilk yapacağı işlerin başında sistem yöneticisinden olabildiğince saklanmak ve farkedilmemektir. Bu kapsamda kullanılan araçların başında rootkit araçları gelmektedir.. Rootkitler birçok araçların bileşmesinden oluşur. Bu araçlar sistemdeki aktiviteleri saklayarak yukarıda belirtildiği gibi sistem yöneticisini tarafından farkedilmeyi en aza indirirler. Rootkit araçlarında login girişlerini ve loglarını wtmp, utmp, ve lastlog dosyalarından temizleyecek dosyalar içerir. Ayrıca chfn, chsh, login, ve passwd gibi önemli dosyalar trojanlı halleriyle yer değiştirilir.. Örnek Rootkit(ohhara-rootkit): 1. ohhara rootkit nedir? ohhara rootkit linux için bir backdoor(x86redhat 6.0 da test edilmiştir). 2. ohhara rootkit nasıl sisteme kurulur? cd bin/glibc2.1 ./install-ohhara-rootkit vi /etc/inetd.conf dosyası düzenlenerek in.telnetd kısmı telnetd olarak değiştirilir) killall -HUP inetd 3. ohhara rootkitin sistemden silinmesi? cd bin/glibc2.1 ./uninstall-ohhara-rootkit vi /etc/inetd.conf dosyası düzenlenerek telnetd kısmı in.telnetd olarak değiştirilir) killall -HUP inetd vi /etc/rc.d/rc.local dosyasında in.inetd ve in.smbd kısmı silinir) 4. ohhara rootkitin kullanılması? /lib/security/pam_pwdb.so Trojan pam. Herhangi bir loginle , 'gkfkqo79' passwordu ile sisteme girilir. ---------$ telnet rootkit_kurulmus_sistem.com Trying xxx.xxx.xxx.xxx... Connected to rootkit_kurulmus_sistem.com Escape character is '^]'. login: bin Password: ( gkfkqo79 ) bash$ whoami bin bash$ su root Password: ( gkfkqo79 ) bash# whoami root bash# -----------Linux sniffer ---> /usr/sbin/in.smbd Linux sniffer logları ---> /var/lock/subsys/...datafile.../...datafile.../in.smbd.log Shell Port:30464 /usr/sbin/in.inetd ( password 'gkfkqo79' dur ) ---------$ telnet rootkit_kurulmus_sistem.com 30464 Trying xxx.xxx.xxx.xxx... Connected to rootkit_kurulmus_sistem.com Escape character is '^]'. gkfkqo79 whoami; root ---------Log silinmesi ( zap2 ) /usr/sbin/fixdate Tavsiyeler: Kritik sistem araçlarının MD5 kontrollerini bulundurun. Tüm açık portları kontrol edin. Gerekli sistem araçlarını diskete ve/veya cdrom gibi ortamlarda yedekleyin. Sistem loglarını iyi kontrol edin. Güvenlik sitelerinden patch leri takip edin. Rootkit Bulma: Rootkitler belirtildiği gibi çeşitli araçlardan oluşur. Rootkitlerin varlığını anlamak için onu oluşturan bileşenleri iyi kavramak gerekir. Trojanlar, sistem yöneticisinin sistem loglarından açıkların anlaşılmasını engellemek için logları silme eğilimi gösterirler. Böylece sistemde sniffer varlığının anlaşılmasını da en aza indirgenir. Genellikle trojanlı olan sistem dosyaları: netstat,ps,df,find,ls gibi dosyalardır. Saldırgan bu faydalı araçları değiştirerek sistem yöneticisinin; kendi dosyalarını, sistem aktivitelerini, proseslerin yanlış algılamasını sağlarlar.. İşi bilen bir saldırgan trojanlı dosyaların, orijinal dosya ile boyut ve yaratılma tarihi gibi ince ayarların aynı olmasına dikkat ederek kurnazca bir hareket yapmış olur. Eğer daha önceden dosyaların(önemli sistem dosyaların) MD5 kontrolünü yaratmış ve zaman zaman bunları teker teker kontrol ediyorsanız trojanlı dosyaları bulmanız kolaylaşır. MD5(Kriptografik kontrol) dosyaların bir dijital fotoğrafıdır. Hiçbir dosya aynı fotoğrafa sahip olmamalıdır. MD5 Algoritması kullanılarak fotoğrafı çekilmiş bir dosyanın 1 byte ti değişse bile fotoğraftaki değişiklik anlaşılır(bu fotoğraf kelimesini çok kullanmaya başladım :> ) Not: Tekrar vurgulayarak söylüyorum: önemli sistem araçlarınızın yedeğini MD5 kontrolüyle birlikte yedeklemeyi unutmayın. ChkRootkit programının kısa bir şekilde tanıtılması: Chkrootkit programı sistemi tarayarak popüler rootkitlerin sisteme kurulup kurulmadığını gösterecektir. Kontrol ettiği dosyalar: aliens, asp, bindshell, lkm, rexedcs, sniffer, wted, z2, amd, basename, biff, chfn, chsh, cron, date, du, dirname, echo, egrep, env, find, fingerd, gpm, grep, hdparm, su, ifconfig, inetd, inetdconf, identd, killall, ldsopreload, login, ls, lsof, mail, mingetty, netstat, named, passwd, pidof, pop2, pop3, ps, pstree, rpcinfo, rlogind, rshd, slogin, sendmail, sshd, syslogd, tar, tcpd, top, telnetd, timed, traceroute, write. Tanımlayabildiği RootKit çeşitleri: lrk3, lrk4, lrk5, lrk6 (ve bazı türleri); Solaris rootkit; FreeBSD rootkit; t0rn; Ambient's Rootkit for Linux (ARK); Ramen Worm; rh[67]-shaper; RSHA; Romanian rootkit; RK17; Lion Worm; Adore Worm; LPD Worm; kenny-rk; Adore LKM; ShitC Worm; Omega Worm; Wormkit Worm; Maniac-RK; dsc-rootkit; Ducoci rootkit; x.c Worm; RST.b trojan; duarawkz; knark LKM; Monkit; Hidrootkit; Bobkit; Pizdakit; Test edildiği sistemler: Linux 2.0.x, 2.2.x ve 2.4.x, FreeBSD 2.2.x, 3.x ve 4.x, OpenBSD 2.6, 2.7, 2.8, 2.9 ve 3.0, Solaris 2.5.1, 2.6 ve 8.0 Bu faydalı programını belli bir zamanda çalışmasını istiyorsanız cron'a yerleştirebilirsiniz. 0 3 * * * (cd /dizin/chkrootkit; ./chkrootkit 2>&1 | mail -s "chkrootkit output" root) KNARK(versiyon 0.59) ve ADORE(versiyon 0.14, 0.24 ve 2.0b) rootkitleri tanımlaya bilen bir program kodunu aşağıda bulabilirsiniz. /** rkscan.c (C) 2000 by Stephane Aubert ** <[email protected]> ** ** Rootkit Scanner for: ** . KNARK version 0.59 ** (kernel-based rootkit) ** knarf was written by Creed <[email protected]> ** and can be found on packetstrom.securify.com ** ** . ADORE version : 0.14, 0.24 and 2.0b ** (kernel-based rootkit) ** Adore was written by Stealth ** and can be found on http://spider.scorpions.net/~stealth/ **/ #include #include #include #include #include <sys/types.h> <values.h> <unistd.h> <stdio.h> <time.h> // Use MAXINT for a fullscan #define UPSCAN 65535 int knark_scan( void ) { int command; printf(" Scanning for KNARK version 0.59 ...\n"); for( command=UPSCAN; command>=0; command-- ) { if(settimeofday((struct timeval *)command, (struct timezone *)NULL) == 0) { printf(" #KNARK rootkit is running (settimeofday command=%d) !\n\n", command ); return 1; } } printf(" KNARK rootkit NOT DETECTED on this system.\n\n"); return 0; } int adore_scan( void ) { int version; uid_t uid; printf(" Scanning for ADORE version 0.14, 0.24 and 2.0b ...\n"); // for all possible UIDs for( uid=UPSCAN; uid>=2; uid-- ) { if( getpwuid(uid) == NULL ) { // if UID is not in /etc/passwd if( (version=setuid( uid )) >0 ) { printf(" #ADORE rootkit is running with ELITE_CMD=%d !\n\n", uid-2 ); return 1; } } } printf(" ADORE rootkit NOT DETECTED on this system.\n\n"); return 0; } int main( int argc, char *argv[] ) { int retval=0; printf("-=- Rootkit Scanner -=-\n" "-=- by [email protected] -=-\n\n"); if( getuid()==0 ) { printf(" *** Don't run this scanner as root ! ***\n\n"); exit( 0 ); } retval += adore_scan(); retval += knark_scan(); printf("Done.\n"); exit( retval ); } Kullanımı: [root@CiLeK RootKit]# gcc -o rks rkscan1.0.c rkscan1.0.c: In function `adore_scan': rkscan1.0.c:46: warning: comparison between pointer and integer [root@avicenna RootKit]#./rks -=- Rootkit Scanner -=- -=- by [email protected] -=*** Don't run this scanner as root ! *** [root@avicenna RootKit]# [avicenna@avicenna RootKit]$ ./rks -=- Rootkit Scanner -=-=- by [email protected] -=Scanning for ADORE version 0.14, 0.24 and 2.0b ... ADORE rootkit NOT DETECTED on this system. Scanning for KNARK version 0.59 ... KNARK rootkit NOT DETECTED on this system. Done. REFERANSLAR http://staff.washington.edu/dittrich/misc/faq/rootkits.faq http://www.theorygroup.com http://www.iay.pwp.blueyonder.co.uk/threel/tech/tools/md5.htm http://packetstormsecurity.org http://www.chkrootkit.org
Benzer belgeler
*nix dünyas›ndan e¤lenceli ama ö¤retici bir güvenlik hikayesi.
Zaman ilerledikçe programc›lar ls, ps, netstat gibi önemli sistem komutlar›na trojan yerlefltirmeyi baflard›lar. Linux Root Kit versiyon 3 (llrk3), 1996 Aral›k ay›nda yeni özelliklerle birlikte yay›n...
Detaylı