0x08: Analisis de lo basico de UNIX (usuarios y permisos)
Bueno a peticion de algunos escribo un texto muy basico de como funciona un sistema UNIX, para explicar los conceptos basicos como lo que es el root, los demonios y todo ese tipo de cosas que no todo el mundo sabe, si ya tienes conocimientos del sistema UNIX, saltate este articulo.
Bueno el sistema UNIX para los que solo han usado windows, es un sistema multitarea y multiusuario, multitarea lo tiene windows, que es la aptitud de poder ejecutar mas de una tarea a la vez, por ejemplo DOS no tiene esa propiedad, ya que solo puede ejecutar un programa a la vez. El ser multiusuario significa que pueden trabajar en el mas de un usuario a la vez, eso lo vez tambien en Windows NT/2K. Por el hecho de tener tantos usuarios, necesita ser seguro, me explico, si yo tengo 100 personas que quieren usar un PC y cada uno tiene archivos personales en el, cualquiera podria leer los archivos del resto, para esto se crearon los permisos, lo que significa que no cada usuario puede leer un archivo o ejecutar un programa, cada usuario es dueño de sus archivos y cada usuario pertenece a un grupo, cuando un usuario cre un archivo, el puede ponerle permisos a este, debe poner 3 permisos, uno para el, otro para su grupo y un tercero para todo el resto de los usuarios, por lo general argo personal te darias permiso de lectura y escritura a ti, nada al grupo y nada al resto, para asi solo leerlo tu. Bueno y tu diras que tiene eso que ver, bueno, tiene mucho que ver, imaginate... ¿Quien es el dueño de los archivos donde se guardan los passwords? ¿quien tiene permiso para agregar usuarios en los archivos correspondientes? Ahi enrtra el ROOT, el es el usuario con mas privilegios en el sistema unix, puede leer lo que quiera, modificar lo que quiera, cambiar los permisos de todo. El usuario ROOT se caracteriza por su numero 0, su identificacion en el sistema(UID) es 0 y eso le da permiso para todo, por eso al hackiar uno busca ser ROOT o tener UID=0. Por eso es que al conetarnos por telnet por ejemplo a un sistema unix como anonimo (anonymous) no podemos leer el fichero /etc/shadow que es donde se guardan las claves, porque eso solo lo podria hacer el ROOT o alguien con UID=0, ademas de los usuarios, los programas tambien tienen permisos, cada programa que ejecutamos tiene los mismos permisos que nosotros, pero hay algunos que de repente tienen por un tiempo UID=0 por ejemplo cuando ejecutamos el programa /bin/passwd para cambiar el password, este programa en un momento tiene UID=0, cuando escribe el nuevo password en el fichero /etc/shadow. Entonces que tenemos, usuarios con mas poder y programas con mas poder tambien, alguno hay que aprovechar, alguna falla en el programa para tener permisos o un usuario (necesitarias la clave).
Ademas podrias usar un demonio, un demonio es un programa que administra por lo general un servicio, por ejemplo en demonio del sendmail que sirve para enviar correo electronico. Muchas veces estos demonios se ejecutan al inicio del sistema y muchos tienen UID=0, por lo que tambien los podriamos aprovechar para obtener root.
Como administrar los permisos
primero como ver los permisos.
ls -la
ahi aparecera la informacion de cada archivo, el usuario que lo creo y al grupo que pertenece, entre otras.
Los permisos aparecen en este formato:
___________________________________________
|Tipo | r | w | x | r | w | x | r | w | x |
-------------------------------------------
Donde tipo dice si es un link(l), un directorio(d) o archivo(-) Y los tres primeros( r w x ) son los permisos del creador, si aparece una - es que no tiene el permiso, los siguientes tres son los permisos del grupo y los ultimos tres del resto, para saber como cambiarlos, se hace con el comando CHMOD, para saber como se usa "man chmod".
Si alguien tiene dudas de otras cosas como la shell y ese tipo de cosas que escriba y seguimos extendiendo este articulo. Para asi no aburrir con cosas que ya saben o dominana a la perfeccion, si alguien desea un articulo mas completo de UNIX o linux, que nos escriba syst4t@usa.net Tambien para matar un par de pajaros mas con este tiro, voia agregar un par de definciones, ya que cometi el error en el primer e-zine de no agregarlas, lo que ha dejado a muchos un poquito colgados.
Dudas mas comunes
En los canales de "hack" siempre se escuchan mas o menos las mismas preguntas, en este texto voy a tratar de responder algunas, de la forma mas clara posible, para todos aquellos que se inician en el hack.
1) ¿Que es una shell?
Una shell es un interprete de comandos, por ejemplo una shell de DOS seria cuando te sale "C:\>" ahi estas en una shell, en unix podria ser bash o sh, hay muchas shells distintas.A veces tambien uno se refiere a una shell hablando de una cuenta shell, esto es cuando pagas a alguna empresa por tener un login y un password para poder usar su sistema por telnet desde tu casa(tambien hay algunas gratis, pero son demasiado limitadas). Para los que no tengan una shell y nunca hayan usado una(de unix), a conseguirse una, gratis por mientras,si es solo para aprender, puede ser en cyberspace.org.
Si tienes este problema de la shell es obviamente porque estas usando windows, ya que si estuvieras en linux, tendrias la shell en tu casa. Para conectarte a cyberspace.org (asi matamos dos pajaros de un tiro), debes usar un programa de telnet, windows trae uno y vamos a usar ese. Para conectarte , vas al menu inicio->ejecutar y tecleas lo siguiente:
telnet <host> [puerto]
donde host es la ip o el nombre de host del lugar al que te quieres conectar y puerto es el numero de puerto al que te quieres conectar. Si no colocas nada en puerto, se conectara al puerto 23 que es el puerto de telnet por defecto. Bueno los puertos no lo voi a explicar, creo que el articulo que puse un poco mas arriba lo hace bastante bien. Lo que si, es que no te puedes conectar a un puerto donde no haya un servicio corriendo, asi que si te sale que no pudo conectar, anda imaginandote por que es.
Una vez conectado te pedira login, pones newuser creo o new algo asi y te mandara a un programa como de suscripcion para que puedas crear tu cuenta. De ahi estas en un sistema unix.
Empezemos con los comandos mas importantes, ahi se buscan un buen texto de unix ya con una base, porque no ando con muchas ganas de escribir.
ls : es el equivalente a dir
ls -l : te muestra en detalle todos los ficheros, aparecen los permisos tmb, si no sabes lo que son, bajate el numero anterior del e-zine.
ls -a : muestra todos los archivos, incluyendo los que esten ocultos.
cd : se usa para cambiarse de directorio, por ejemplo para ir al directorio raiz se hace "cd /". para subir un directorio se hace "cd .."
cat : concatena un fichero, sirve para verlo por pantalla por ejemplo "cat archivo.txt" o "cat /etc/passwd". tambien lo puedes usar para escribir textos asi: cat > fichero.txt << __eof aqui escribes todo lo que quieras cuantas lineas quieras __eof y listo, ahi tu imaginate nada mas para que vamos a usar esto.
cp : copy se uas asi, cp archivo_origen archivo_destino
rm : remove borra algun fichero, se usa asi: rm nombre_archivo
pico : esto no es un comando pero lo puse igual, ya que para mi gusto es el editor mas comodo que conozco para unix, lamentablemente no esta instalado en todos.
echo : muestra un texto en la pantalla, por ejemplo seria: echo "Hola!!" y podriamos redirigirlo echo "hola!!" > hola.txt que crearia el archivo hola.txt con el contenido hola!! y para agregar a un fichero seria echo "hola" >> hola.txt y ahora hola.txt seria hola!! hola tambien si eres root te puedes agregar un hermoso usuario usando echo: echo "little::0:0::/:/bin/sh" >> /etc/passwd despues de esto vastaria con hace "su little" y serias root. Aunque lo del usuario sin password es muy mala idea, ya que cualquiera lo podria descubrir.
su : sirve para cambiarse de usuario, por ejemplo si tecleo su solo me pedira el password de root, si me lo se, puedo ser root, o por ejemplo desde root puedes hacer su a cualquier usuario asi:
su <usuario>
y ni siquiera te pide pass(obvio no??) si eres un usuario normal, puedes hacer esto pero te pedira password.
Bueno ya mucho por hoy, solo un agregado chiquitito, como compilar y ejecutar un exploit.
En general los exploits se pueden clasificar en tres tipos, local, remoto y DoS.
- Local: es un exploit que debes ejecutar estando dentro del servidor, por ejemplo si sabes que por telnet tiene el usuario guest/guest debes subir el exploit estando ahi para luego poder ejecutarlo y asi conseguir los privilegios que este te de.
- Remoto: es un exploit que lo compilas en tu casa y lo ejecutas desde ahi casi todos estan escritos para linux o unix en general, por lo que si usas windows, necesitaras una cuenta en otro pc que si tenga un unix.
- DoS: son exploits que echan abajo un servicio o incluso el pc entero, o sea son exploits echos para "destruir". A mi en lo personal no me gustan para nada, aunque de repente puede que hagas uno sin querer, tratando de escribir tu propio exploit jaja (suele pasar especialmente con windows).
COMO COMPILAR
los puedes compilar casi con cualquiera de los dos compiladores mas conocidos de unix (gcc y cc)
la forma de usar estos dos compiladores es esta:
gcc archivo.c
o
cc archivo.c
el programa queda en el directorio donde estaba el archivo.c con el
nombre de a.out
para ejecutarlo solo teclea
./a.out
si el exploit es .pl o .sh
solo basta hacerle
chmod +x archivo
y ya lo puedes ejecutar. Como subirlo ahi ve tu con los comandos de arriba. Tambien si tienes el ftp, te podria salir mas facil subirlo por ahi, pero ahi ves tu, lo dejo a tu imaginacion.
Otra cosa que te podria servir mucho para subir un archivo o exploit, seria el programa wget, instalado en varios Linuxes, el uso de este es:
wget [url]
Una ultima pista es que para copiar textos puedes usar el cat, entre otros.[ el telnet tiene paste ;) ]
Espero que te haya servido
Saludos z0rbas
the-little@usa.net