Curso de Hacking Actualizado En esta sección comenzaremos a enseñar algunos metodos de como hackear otras maquinas, principalmente enseñaremos todo lo referente al underground. Se conoce por UNDERGROUND todo lo relacionado con los temas "ilegales". Desgraciadamente la informatica avanza a pasos desmezurados y no existen traducciones para los ultimos terminos informaticos. Mi concepto de hacker (pirata informatico, aunque esta definicion se aplica mas a los que hacen copias ilegales de CDs) es aquel que intenta entrar en otras computadoras, pero lo hace para aprender medidas de seguridad, y por merito personal. Mi concepcion del verdadero hacker no hay cabida para el chantaje, la manipulacion, la revelacion de secretos, y el que lo es no anda diciendo que es un hacker, por que si en verdad lo fuere no le conviene que lo sepan amigos, o compañeros de trabajo ya que cualquier cosa que pasara en las maquinas, ¿a quien culparian?, los que andan diciendo por ahi que son hackers no son otra cosa que pendejos que no saben usar otra cosa que no sean troyanos. Muchas veces me preguntan si hay hackers buenos en Argentina, hoy en dia hay algunos pocos, pero no conviene darlos a conocer, pero mas o menos a mediados del 80 habia muy buenos hackers, como por ejemplo "El Chacal", "Dr Trucho" entre otros, quienes empezaron a hackear cuando no estaba internet sino BBS, "El Chacal" hoy tiene una empresa de seguridad informatica, y es conocido como Daniel Santinelli, lo que pasa es que a nuestro pais nos llegan los adelantos con retraso. Es por eso que hace mas o menos unos 5 años que ha llegado el boom del hacking en nuestro pais. Para los informaticos es toda una revolucion y para los administradores de sistemas una pesadilla. Lo que no puedes es esperar ir a la facultad para que te enseñen como hackear, por que se trataria de una actividad "ilegal". Nadie seria tan estupido de salir en "Cronica" diciendo "logre entrar al Banco Nacion sin que me vieran el fin de semana pasado". Es por eso que no hay ningun hacker con fama internacional, antes de que lo agarren, como a Kevin Mitchnick, pero eso es otra historia. Bueno comenzamos con el curso. No les dare sermones de las normas del buen hacker, ya que cuando yo quise aprender me tenian las pelotas llenas de esas pelotudeces, "no dañes algo intencionalmente....", "no hackees nunca por venganza...", hace lo que se te cante, siempre y cuando seas un poquito vivo, y tomes precauciones de que no te rastreen, ni de dejar "huellas", sino vas a ir hasta las pelotas si llegas a entrar a un sistema groso. A esto no lo aprenderas en la escuela, pero para eso estoy haciendo esto, para que aprendas, para que sepas como entrar a un sistema, donde buscar, como borrar las huellas para que no te agarren. Seran clases semanales, o quincenales según el tiempo que tenga y lo podras encontrar en www.softdownload.com.ar. Esta es la 1º entrega Me he propuesto darle un enfoque practico, pero no voy a explicarles paso a paso como entrar a un sistema, sino no se terminaria nunca, ya que hay miles de formas de entrar a un sistema, segun el sistema operativo que tenga, los bugs (defectos del sistema), etc. Voy a ir tratando temas enlazados unos con otros (no te pierdas ningun curso sino no entenderas el resto). En este arte, como todo en la informatica, hay que ser ingenioso e inteligente, para poder afrontar los retos que te impongan. En esta entrega vamos a comentar las caracteristicas de los SO (muy, pero muy por arriba), y de los ficheros passwd de un sistema. En el proximo daremos una explicacion de los comandos que se usan habitualmente en un servidor FTP. El sistema operativo El sistema operativo mas potente para redes es Unix (nada de windows nt). Es un sistema tan completo y complejo que no existen virus para él por que el usuario lo controla TODO. Existe el Linux que es igual al Unix pero no es de "marca" y es gratuito, el sistema operativo de los hackers, es por eso que hace mas o menos un año o dos todos los pendejos querian poner linux, pero lo mas lindo que no sabian siquiera usar windows, y se dieron contra la pared cuando una vez que ya estaba todo armado para poner Linux, se encontraron con varias versiones, Suse, Mandrake, Red Hat, etc, mas adelante hablaremos un poco de linux, ya que si quieres entrar por ejemplo l banco, no te sirve saber usar windows, sino UNIX. Como el unix es lo mejor para llevar redes, e internet es una red a lo bestia, ¿adivinas que sistema operativo usan por defecto?, obvio, Unix. En Unix los comandos son distintos a los de MS-DOS, así dir es ls, copy es cp... Tambien es distinta la forma de la ruta de los directorios. Si en MS-DOS escribimos \programas. en Unix seria /programas. El unix, como se utiliza para redes, tiene que poder controlar a muchos usuarios. Esto incluye por ejemplo que no todos puedan acceder a ciertos datos que no les pertenecen, y no todos puedan tomar el mando del ordenador central. El usuario que tiene acceso total a todos los recursos del servidor es el "root" (el superusuario), él es quien da los permisos al rsto de los usuarios. Existen tambien unos usuarios que son los Daemons, procesos "siempre" en marcha en un ordenador, por ejemplo, en un ordenador conectado a internet unos Daemons serian el HTTP (paginas web), el FTP (servidor de ficheros), etc. Como objetivo inicial, se necesita entrar en el servidor remotamente (haciendo telnet). El proceso que realizaria el servidor seria este: 1º. Solicitar un login (nombre de usuario): en caso de que el nombre no sea el correcto, el sistema no nos dara ningun error para evitar que la persona sepa que accesos se encuentran dados de alta y cuales no. 2º.Solicitar un password (palabra clave o contraseña): si coincide con el que tiene asignado el login, el sistema permitira el acceso. Los usuarios que se encuentran dados de alta en el sistema, asi como los passwords que emplean, se encuentran localizados en el fichero passwd. Puede haber usuarios que no necesiten clave, como el usuario anonymous (anonimo) o gues (invitado), que suelen tener la misma palabra como login y password. Les hago notar que en Unix no es lo mismo el usuario "Martin" que "martin", ya que unix diferencia las mayusculas de las minusculas. Si te estas preguntando de donde sacar el fichero y ¿cual es ese fichero? ¿esta al alcance de cualquiera?, la respuesta es la siguiente. En Linux (lo usare para referirnos a sistemas compatibles o parecidos a unix) el fichero se llama passwd. Esta en el directorio /etc. Y no siempre es accesible. El archivo passwd Después de tantas referencias al fichero passwd les pongo una linea tipica del fichero: root:WLjl03jXxEpYU:0:1:Operator:/:/bin:/sh Ahora les explicare lo que significa cada uno de estos parámetros 1: root Username (nombre de usuario): es el login que el usuario OPERATOR emplea para acceder al sistema. 2: WLjl03jXxEpYU Es la contraseña encriptada: dado su sistema de encriptación, el sistema operativo lo que hace es, una vez que el usuario introduce el password, lo encripta y compara con el que se encuentra en este fichero. En caso de que sean iguales, el password introducido es valido. La clave puede tener como maximo 11 caracteres, pero la clave encriptada tiene 13, esto se debe a que los dos ultimos caracteres son el llamado “grano de sal”. Unix encripta las contraseñas mediante un mecanismo del kernel (éste es el núcleo del sistema), el crypt(3). Éste es un algoritmo basado en el Estandar de encriptación de Datos (DES) desarrollado por el Instituto Nacional de Estandares de Tecnología (NIST). El estandar DES transforma la información de texto llano en datos encriptados llamado “texto cifrado” mediante el uso de un algoritmo especial y un valor semilla llamado “clave”. En crypt(3) el texto llano se encripta en un grupo de ceros posteriormente el texto cifrado resultante es encriptado de nuevo con el password del usuario como clave, ripitiendose este proceso 25 veces. Una vez finalizado los 64 bits se dividen en 11 caracteres y se guardan en el archivo PASSWD o se guardan en SHADOWED. Para animar un poco mas la cosase utiliza lo que se denomina en criptologia un “grano de sal”, dato de variabilidad, etc. Se trata de un valor de 12 bits que utiliza para modificar el resultado de la funcion de DES, esto es un valor que puede variar de 0 a 4095. Así que para cada contraseña posible existen 4096 formas de encriptación y almacenamiento. Cuando utilizamos el programa /bin/passwd para introducir una nueva contraseña, dicho programa utiliza un “grano de sal” basado en la hora del sistema la cual es utilizada para la funcion de calculo de la contraseña encriptada. Esta sal es guardada junto a la contraseña en el archivo PASSWD (en el caso de que no este shadow). Asi que los dos primeros caracteres de una contraseña son en realidad el “grano de sal”, esto es: WLjl03jXxEpYU WL es el “grano de sal”. Cuando de nuevo entremos al sistema y nos pida nuestro password, el programa encriptara la palabra que le demos utilizando ese mismo “grano de sal”, y posteriormente comparara el resultado de esta encriptación con el password almacenado comprobando si coninciden. Es decir en ningun momento se desencripta el password, lo que hace el sistema es encriptar la palabra que le suministramos y compararla con el original. Ahora te explicare como entenderas los símbolos que pueden aparecer en la clave pueden darse distintos casos: a) si el campo es un “*”, indica que la cuenta no se puede utilizar. Si todos los campos poseen el “*” u otro signo (x, ¡, @,…) significa que las claves estan en un archivo shadow. b) en caso de que no haya nada en ese campo, esta cuanta no posee ninguna contraseña de acceso. c) si detrás de la clave encriptada tiene una “,” esto indica la fecha en que expira el empleo de esta contraseña, o el tiempo minimo de uso de esta. ¿fecha de expiracion? Si nada es eterno boludo. Por ejemplo WLjl03jXxEpYU, 21AB 2: Maximo numero de semanas que puede usar la misma clave 1: Cuantas semanas deben pasar antes de que la cuenta pueda cambiar de clave (para no poder usar siempre la misma clave) AB: Indica cuando se cambio por ultima vez la clave (estos dos caracteres pueden no aparecer). Lo que indica es el numero de semanas desde el 1/1/1970 Otro ejemplo: ,21 Indica que la cuenta todavía no tiene clave, pero en cuento tenga una comenzara a contar la fecha de expiracion. Si el primer y segundo carácter son “..”, entonces el usuario tendra que cambiar la clave la proxima vez que se conecte y el sistema anulara el metodo de fecha de expiracion para su clave. Si por el contrario son el tercer y cuarto carácter los que tienen los “..”, entonces el usuario tendra que cambiar la clave la proxima vez que se conecte pero el sistema le volvera a poner una fecha limite a la clave. Si el primer carácter es menor que el segundo, el usuario no puede cambiar la clave, solo el root puede hacerlo. Estos datos sobre la fecha de expiracion estan “codificados” (estan escritos en base-64) luego se pueden “descodificar”. Ni que decir si encuentran en este paramentro algo como “NO PASSWORD” o “DON’T YOU HAVE ANYTHING BETTER TO DO” es que el root sabe mucho mas que ustedes. Lo que ha ocurrido es que habes accedido al servidor como el usuario anonymous (anonimo) y has accedido al fichero /home/ftp/etc/passwd. Aunque parezca que se trata de un fichero autentico, no lo es. Bueno seguire explicandoles que significan cada uno de los parámetros anteriores. 3:0 UID (numero de usuario de sistema): puede ser de 0 a 60000. por lo general, se empieza a partir del 100. El UID con valor de 0 indica que la persona tiene nivel de root. Unix no identifica quien es cada cosa por el nombre del usuario, sino por este campo. 4:1 GID (numero del grupo al que pertenece el usuario). Puede ser de 0 a 60000. El 0 tambien corresponde con el grupo del root. Los usuarios del mismo grupo tienen el mismo nivel de privilegios. 5: Operador Account description (información respecto al usuario). Puede contener el nombre completo, telefono, direccion, etc. 6: / Home directory (directorio donde se ubica el usuario). Su directorio de trabajo. Para el root siempre es “/” y para los usuarios puede ser “home/usuario”. 7: /bin/sh Shell (interprete de comandos empleados por el ususario). Dependiendo del shell que emplee podra realizar unas acciones determinadas. Esto es asi por que el tipo de shell limita los comandos para ejecutar. Bueno gente, hemos finalizado la primera clase de hacking, espero que empiezen a practicar y no solo dedicarse a leer, por que para leer estan las bibliotecas. En la proxima clase veremos: -El fichero shadow -Como buscar el fichero passwd y el shadow en un servidor ftp