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.

*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ı