DEBIAN TEMA 12: TELNET Aprende a controlar remotamente una máquina a través del terminal de comandos DEBIAN TEMA 12: TELNET Índice de contenido 1 ¿Qué es? .................................................................................................................................................. 2 2 ¿Cómo funciona y para qué se usó? ..................................................................................................... 2 3 Problemas de seguridad y SSH.............................................................................................................. 2 3.1 ¿Dónde no utilizarlo? .......................................................................................................................... 3 4 Instalación del servidor y el cliente ....................................................................................................... 3 5 Manejo básico de telnet ......................................................................................................................... 4 5.1 Conexión básica .................................................................................................................................. 4 5.2 Comandos ............................................................................................................................................ 5 6 7 Tcpdump .................................................................................................................................................. 5 6.1 ¿Qué es? .............................................................................................................................................. 5 6.2 Proceso de instalación ........................................................................................................................ 5 6.3 Uso ....................................................................................................................................................... 6 6.4 Primeros pasos .................................................................................................................................... 7 6.5 Comando tcpdump y todas las opciones .......................................................................................... 7 6.6 Filtros ................................................................................................................................................... 8 6.6.1 Filtros Type ................................................................................................................................... 8 6.6.2 Filtros Dir ...................................................................................................................................... 8 6.6.3 Filtros de Proto ............................................................................................................................. 8 6.7 Salida de datos.................................................................................................................................... 9 6.8 Detección de virus............................................................................................................................... 9 Bibliografía ............................................................................................................................................ 11 Página 1 de 11 ÍNDICE DE CONTENIDO DEBIAN TEMA 12: TELNET 1 ¿Qué es? Telnet (TELecommunication NETwork) es el nombre de un protocolo de red que sirve para acceder mediante una red a otra máquina para manejarla de forma remota tal y como si estuviéramos sentados delante de ella. También es el nombre del programa informático que implementa el cliente. Para que la conexión funcione es necesario que el ordenador al que se accede tenga instalado y configurado correctamente un programa especial que reciba y gestione las conexiones. El puerto que se utiliza generalmente es el 23. 2 ¿Cómo funciona y para qué se usó? Telnet sólo sirve para acceder en modo terminal o consola de comandos, es decir, sin gráficos. En su momento de mayor apogeo fue una herramienta muy útil para arreglar fallos a distancia, sin necesidad de estar físicamente en el mismo sitio que la máquina que los tenía. Esto permitió abaratar los costes de una empresa informática. También se usó para consultar datos a distancia, como datos personales en máquinas accesibles por red, información bibliográfica, etc. Aparte de estos usos, en general telnet se ha utilizado (y aún hoy se puede utilizar en su variante SSH) para abrir una sesión con una máquina UNIX, de modo que múltiples usuarios con cuenta en la máquina, se conectan, abren sesión y pueden trabajar utilizando esa máquina. Es una forma muy usual de trabajar con sistemas UNIX. Hoy en día este protocolo también se usa para acceder a los Bulletin Board System o BBS, que inicialmente eran accesibles únicamente con un módem a través de la línea telefónica. Para acceder a un BBS mediante telnet es necesario un cliente que de soporte a gráficos ANSI y protocolos de transferencia de ficheros. Los gráficos ANSI son muy usados entre los BBS. Con los protocolos de transferencia de ficheros (el más común y el que mejor funciona es el ZModem) podrás enviar y recibir ficheros del BBS, ya sean programas o juegos o ya sea el correo del BBS (correo local, de FidoNet u otras redes). Algunos clientes de telnet (que soportan gráficos ANSI y protocolos de transferencias de ficheros como Zmodem y otros) son mTelnet!, NetRunner, Putty, Zoc, etc.. 3 Problemas de seguridad y SSH Su mayor problema es la seguridad. Esto es debido a que todos los nombres de usuario y contraseñas necesarias para entrar en las máquinas viajan por la red como texto plano (cadenas de texto sin cifrar). Esto facilita que cualquiera que espíe el tráfico de la red pueda obtener los nombres de usuario y contraseñas, y así acceder él también a todas esas máquinas. Por esta razón dejó de usarse, casi totalmente, hace unos años, cuando apareció y se comenzó a usar masivamente el protocolo SSH, que puede describirse como una versión cifrada de telnet. Actualmente se puede cifrar toda la comunicación del protocolo durante el establecimiento de sesión Hay tres razones principales por las que el telnet no se recomienda para los sistemas modernos desde el punto de vista de la seguridad. Son los siguientes: Los dominios de uso general del telnet tienen varias vulnerabilidades descubiertas sobre los años, y varias más que podrían aún existir. Telnet, por defecto, no cifra ninguno de los datos enviados sobre la conexión (contraseñas inclusive), así que es fácil interferir y grabar las comunicaciones, y utilizar la contraseña más adelante para propósitos maliciosos. Página 2 de 11 CONCEPTOS DEBIAN TEMA 12: TELNET Telnet carece de un esquema de autentificación que permita asegurar que la comunicación esté siendo realizada entre los dos anfitriones deseados, y no interceptada entre ellos. 3.1 ¿Dónde no utilizarlo? En ambientes donde es importante la seguridad, por ejemplo en el Internet público, telnet no debe ser utilizado. Las sesiones de telnet no son cifradas. Esto significa que cualquiera que tiene acceso a cualquier router, switch, o gateway localizado en la red entre los dos anfitriones donde se está utilizando telnet puede interceptar los paquetes de telnet que pasan cerca y obtener fácilmente la información de la conexión y de la contraseña (y cualquier otra cosa que se mecanografía) con cualesquiera de varias utilidades comunes como tcpdump y Wireshark. Estos defectos han causado el abandono y depreciación del protocolo telnet rápidamente, a favor de un protocolo más seguro y más funcional llamado SSH, lanzado en 1995. SSH provee de toda la funcionalidad presente en telnet. Además, aporta el cifrado fuerte para evitar que los datos sensibles tales como contraseñas sean interceptados y la autentificación mediante llave pública, para asegurarse de que el computador remoto es realmente quién dice ser. Los expertos en seguridad computacional, tal como el instituto de SANS, y los miembros del newsgroup de Linux security recomiendan que el uso del telnet para las conexiones remotas debería ser descontinuado bajo cualquier circunstancia normal. Cuando el telnet fue desarrollado inicialmente en 1969, la mayoría de los usuarios de computadoras en red estaban en los servicios informáticos de instituciones académicas, o en grandes instalaciones de investigación privadas y del gobierno. En este ambiente, la seguridad no era una preocupación y solo se convirtió en una preocupación después de la explosión del ancho de banda de los años 90. Con la subida exponencial del número de gente con el acceso al Internet, y por la extensión, el número de gente que procura crackear los servidores de otra gente, telnet podría no ser recomendado para ser utilizado en redes con conectividad a Internet. 4 Instalación del servidor y el cliente Como hemos visto se necesita que en el ordenador que queremos controlar remotamente esté instalado un servidor telnet y en el ordenador desde el cual queremos tomar el control esté instalado un cliente telnet. En el caso de Debian, tenemos que descargar dos paquetes mediante el gestor de paquetes Synaptic o la consola de comandos: telnet = cliente de telnet (normalmente está instalado por defecto) telnetd = servidor de telnet. Usando la consola de comandos tenemos que escribir: root@curso:/home/josemariatc# apt-get install telnet Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho telnet ya está en su versión más reciente. 0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados. root@curso:/home/josemariatc# apt-get install telnetd Leyendo lista de paquetes... Hecho DEBIAN TEMA 12: TELNET Creando árbol de dependencias Leyendo la información de estado... Hecho Se instalarán los siguientes paquetes NUEVOS: telnetd 0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados. Se necesita descargar 0 B/42,3 kB de archivos. Se utilizarán 106 kB de espacio de disco adicional después de esta operación. Seleccionando el paquete telnetd previamente no seleccionado. (Leyendo la base de datos ... 152231 ficheros o directorios instalados actualmente.) Desempaquetando telnetd (de .../telnetd_0.17-36_i386.deb) ... Procesando disparadores para man-db ... Configurando telnetd (0.17-36) ... Añadiendo al usuario telnetd al grupo utmp Cuando finalice ya tendremos instalado y funcionando a la perfección el demonio de telnet, telnetd (telnet daemon). Si en algún momento quisieramos cerrar el puerto de telnet, lo que tendríamos que hacer sería editar el archivo /etc/inetd.conf, comentar, poniendo una almohadilla delante, la línea: #telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd Para aplicar los cambios, es necesario reiniciar el demonio de red, lo haremos con: /etc/init.d/inetd restart 5 Manejo básico de telnet 5.1 Conexión básica Para iniciar una sesión con un intérprete de comandos de otro ordenador, puede emplear el comando telnet seguido del nombre o la dirección IP de la máquina en la que desea trabajar, por ejemplo si desea conectarse a la máquina purpura.micolegio.edu.com deberá teclear telnet purpura.micolegio.edu.com, y para conectarse con la dirección IP 1.2.3.4 deberá utilizar telnet 1.2.3.4. Una vez conectado, podrá ingresar el nombre de usuario y contraseña remoto para iniciar una sesión en modo texto a modo de consola virtual (ver Lectura Sistema de usuarios y manejo de clave). La información que transmita (incluyendo su clave) no será protegida o cifrada y podría ser vista en otros computadores por los que se transite la información (la captura de estos datos se realiza con un packet sniffer). La forma típica de comenzar es buscar la orden connect, abriéndose una ventana donde indicaremos el host al que queremos conectar (nos sirve tanto el nombre de dominio como la IP) y el puerto de conexión (puerto telnet, 23 por defecto, aunque una misma maquina puede estar ejecutando diversos servicios telnet, cada uno por un puerto distinto, como pop3 o smtp). Si todo va bien y el ordenador remoto permite acceso telnet, el programa nos indicará que la conexión ha tenido éxito. A continuación tenemos que identificarnos ante el sistema remoto (login) mediante nuestro nombre de usuario y contraseña. Normalmente el propio ordenador remoto nos va pidiendo los datos preguntando por user y password, pero en otras ocasiones la terminal solo nos muestra que estamos conectados, asi que deberemos introducir los datos sin ayuda, normalmente tecleando user minombreusuario y pass micontraseña. Una vez autentificados, podemos controlar la máquina. DEBIAN TEMA 12: TELNET Una alternativa más segura para telnet, pero que requiere más recursos del computador, es SSH. Este cifra la información antes de transmitirla, autentifica la máquina a la cual se conecta y puede emplear mecanismos de autenticación de usuarios más seguros. Actualmente hay sitios para hackers, en los que se entra por telnet y se van sacando las password para ir pasando de nivel, ese uso de telnet aun es vigente. 5.2 Comandos 6 TCPdump 6.1 ¿Qué es? Tcpdump es una herramienta que se utiliza para analizar el tráfico de nuestra red. Hablando en plata: es un sniffer. Este programa utiliza la librería Libpcap y captura los paquetes TCP/IP que circula por nuestra red, mostrándolos a tiempo real. Los desarrolladores de este programa son Van Jacobson, Steven McCanne, Craig Leres y Andrew Tridgell. Este programa funciona en sistemas operativos basados en Unix: MacOS, Linux, Solaris, BSD, AIX... 6.2 Proceso de instalación Podemos buscar el programa mediante el gestor de paquetes Synaptic o usar una consola de comandos: root@curso:/home/josemariatc# apt-get install tcpdump Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho Se instalarán los siguientes paquetes NUEVOS: tcpdump DEBIAN TEMA 12: TELNET 0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados. Necesito descargar 376 kB de archivos. Se utilizarán 901 kB de espacio de disco adicional después de esta operación. Des:1 http://ftp.es.debian.org/debian/ squeeze/main tcpdump i386 4.1.1-1 [376 kB] Descargados 376 kB en 7seg. (48,5 kB/s) Seleccionando el paquete tcpdump previamente no seleccionado. (Leyendo la base de datos ... 152243 ficheros o directorios instalados actualmente.) Desempaquetando tcpdump (de .../tcpdump_4.1.1-1_i386.deb) ... Procesando disparadores para man-db ... Configurando tcpdump (4.1.1-1) ... root@curso:/home/josemariatc# 6.3 Uso Lo primero que tenemos que hacer es saber que NIC de red vamos a utilizar. Por lo tanto si estamos conectados por cable y queremos auditar la red cableada de la red local, utilizaremos la NIC cableada (aquella que utiliza el RJ45 o el USB para conectarse al router o al switch). Si por el contrario queremos auditar la red inalámbrica, tendremos que usar la NIC o adaptador de red inalámbrico. Para poder utilizarlo, necesitaremos saber el nombre de la interfaz. Si no especificamos nuestra interfaz, utilizar por defecto la cableada eth0. Para conocer todas las conexiones disponibles usamos el siguiente comando: root@curso:/home/josemariatc# ifconfig eth0 Link encap:Ethernet inet addr:192.168.1.3 HWaddr 08:00:27:99:4b:78 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe99:4b78/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9743 errors:0 dropped:0 overruns:0 frame:0 TX packets:6513 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:13163757 (12.5 MiB) lo TX bytes:682346 (666.3 KiB) Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1216 errors:0 dropped:0 overruns:0 frame:0 TX packets:1216 errors:0 dropped:0 overruns:0 carrier:0 DEBIAN TEMA 12: TELNET collisions:0 txqueuelen:0 RX bytes:163964 (160.1 KiB) TX bytes:163964 (160.1 KiB) 6.4 Primeros pasos Vamos a proceder ya al análisis o “sniffeo” del tráfico en la red seleccionada. Para ello, Ejecutamos el siguiente comando en un terminal como usuario root: sudo tcpdump –i nombre_red_a_analizar Veamos un ejemplo práctico: root@curso:/home/josemariatc# sudo tcpdump -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 12:22:02.517590 IP6 fe80::65c8:db8a:dc8f:da49.65010 > ff02::c.1900: UDP, length 146 12:22:02.520488 IP 192.168.1.3.57180 > ..domain: 63457+ PTR? c.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.f.f.ip6.arpa. (90) 12:22:02.987213 IP ..domain > 192.168.1.3.57180: 63457 NXDomain 0/1/0 (160) 12:22:02.988278 IP 192.168.1.3.49656 > ..domain: 12558+ PTR? 9.4.a.d.f.8.c.d.a.8.b.d.8.c.5.6.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. (90) 12:22:03.270409 IP ..domain > 192.168.1.3.49656: 12558 NXDomain 0/1/0 (160) 12:22:03.271236 IP 192.168.1.3.59206 > ..domain: 24826+ PTR? 1.1.168.192.in-addr.arpa. (42) 12:22:03.371402 IP ..domain > 192.168.1.3.59206: 24826*- 1/0/0 PTR . (55) 12:22:03.372011 IP 192.168.1.3.58176 > ..domain: 39634+ PTR? 3.1.168.192.in-addr.arpa. (42) 12:22:03.613431 IP ..domain > 192.168.1.3.58176: 39634 NXDomain* 0/1/0 (103) 12:22:05.520623 IP6 fe80::65c8:db8a:dc8f:da49.65010 > ff02::c.1900: UDP, length 146 12:22:09.522203 IP6 fe80::65c8:db8a:dc8f:da49.65010 > ff02::c.1900: UDP, length 146 12:22:12.524324 IP6 fe80::65c8:db8a:dc8f:da49.65010 > ff02::c.1900: UDP, length 146 Como podéis ver, el programa nos resuelve hasta los nombres de las máquinas. También observamos que los paquetes capturados son realmente pequeños. Esto tiene una explicación y es que el TcpDump captura solo los 68 primeros bytes de cada paquete ya que ese es el tamaño de las cabeceras de paquetes basados en protocolos TCP, UDP o IP. 6.5 Comando tcpdump y todas las opciones Sintaxis tcpdump [ -AbdDefIKlLnNOpqRStuUvxX ] Opciones -A Imprime cada paquete capturado DEBIAN TEMA 12: TELNET -c número Deja de recibir paquetes tras el número especificado. -C Antes de imprimir un paquete comprueba si el tamaño del fichero es mayor que el fijado en la configuración. -d Muestra los paquetes en código comprensible por un humano. -e Imprime el nivel de enlace de la cabecera del archivo. -f Imprimir direcciones IPV4 foráneas numéricamente. -r Muestra la información almacenada en el fichero creado mediante la opción –w. -s cantidad Cambiar el número de bytes a capturar -w La información capturada se almacena en el archivo que nosotros especifiquemos. Es conveniente crear un archivo con formato .txt para facilitar la lectura en diversos sistemas. -z Muestra el nombre de usuario en lugar de su UID 6.6 Filtros En TcpDump podemos distinguir 3 tipos de filtros: 6.6.1 Filtros Type Las siglas vienen de Host, Net, Port y Mask. Con ellos podremos especificar un puerto, una red, un host o una máscara de subred determinada. Ejemplo: tcpdump -i ath0 192.168.2.23 tcpdump -i ath0 tcpdump -i ath0 tcpdump -i ath0 host 192.168.2.23 # Cogeríamos el tráfico de entrada y salida del host net 10.0 # Capturaríamos el tráfico de la red port 80 # Capturaríamos el tráfico del puerto 80 (http). mask 255.255.255.0 # Más de lo mismo (mascara subred determinada). Podemos combinar estos filtros. Ejemplo: Código: tcpdump -i eth0 host 192.168.2.23 port 80 6.6.2 Filtros Dir Son filtros de origen y destino. Me explico, con estos filtros, tenemos la posibilidad de elegir que los paquetes que salen y entran en un determinado host. Para ello se utilizan los parámetros “src” (source) y “dst” (destiny). Supongamos que queremos saber que datos salen de una determinada IP (por ejemplo 192.168.2.23), pondríamos el siguiente código: tcpdump -i interfaz src host 192.168.2.23 Pero, y si quisiéramos obtener los paquetes que entran y salen de un determinado host. Pues con poner “host nombredelhost” valdría. Pero... ¿Y si quisieramos saber los paquetes que salen de un host y los que salen de otro? Para esto tenemos las expresiones “and” y “or”. Pongamos que queremos saber los paquetes que entran en dos host de nuestra red local (192.168.2.23 y 192.168.2.24), haríamos lo siguiente: tcpdump -i interfaz dst host 192.168.2.23 and dst host 192.168.2.24 6.6.3 Filtros de Proto DEBIAN TEMA 12: TELNET Estos filtros nos servirán para determinar que paquetes queremos capturar en función de su protocolo. Para determinar el protocolo que queremos añadiremos al inicio del comando “ip” (para protocolo ip), “tcp” (para protocolo tcp), “udp” (para protocolo udp), “arp” (para protocolo arp), “rarp” (para protocolo rarp), “ether” (para protoclo ethernet y referenciando a la dirección MAC que se vaya a analizar) y “fddi” (para redes basadas en fddi). De Ether y Fddi solo capturará tramas de paquetes a nivel de la capa de enlace del modelo OSI. También podemos hacer esto añadiendo al comando “proto //protocolo” (ejemplo: proto \\tcp). tcpdump -i interfaz udp tcpdump -i interfaz ether host FF:FF:FF:FF:FF:FF También podemos hayar el tráfico icmp: tcpdump ip proto \\ip Podemos combinar todos los filtros para obtener un sinfín de posibilidades. 6.7 Salida de datos Esto lo copio tal cual está en la wikipedia ya que creo que no tiene mucha más explicación: src > dst: flags [dataseq ack window urgent options] 15:23:44.772291 IP 192.168.1.17.52798 > 85.Red-83-37-170.dynamicIP.rima-tde.net.65000: . ack 1791 win 7851 <nop,nop,timestamp 5520421 997821> src: Dirección y puerto origen. dst: Dirección y puerto destino. flags: Flags de la cabecera TCP. si no hay flags o combinación de S (SYN), F (FIN), P (PUSH), W (reducción de la ventana de congestión), E (ECN eco). dataseq: Número de secuencia del primer byte de datos en este segmento TCP. El formato es primero:ultimo(n). ack: El número de asentimiento. Indica el número siguiente de secuencia que se espera recibir. window: Tamaño de la ventana de recepción. urgent: Existen datos urgentes. options: Indica la existencia de opciones. Van entre "<"...">". 6.8 Detección de virus Lo primero que tuve que hacer fue, ir a un ordenador con windows instalado (llamada aula10profe) y quitar la compartición de carpetas, excepto la disquetera, que será la que utilizaremos de cepo para el virus. Luego nos vamos a una maquina unix y ejecutamos el tcpdump de la siguiente forma: tcpdump -e -s 4000 dst host maq_caracol \ and src host not server1 \ and src host not server2 DEBIAN TEMA 12: TELNET Lo que vamos a conseguir es capturar todo el táafico que vaya dirigido a la máquina aula10profe y que no provenga de ninguno de estos servidores: server1 y server2. Ahora solo falta esperar a que el virus intente acceder a la carpeta compartida (la disquetera) y, de esta forma, sabremos en que ordenador de nuestra red está el virus. DEBIAN TEMA 12: TELNET 7 Bibliografía http://es.wikipedia.org/wiki/File_Transfer_Protocol Características técnicas del protocolo actual. Documento RFC959: http://tools.ietf.org/html/rfc959 Sitio web oficial, en inglés, del servidor FTP instalado y configurado en esta guía: http://proftpd.org/ Sitio web oficial, en inglés, de Linux Security: http://www.linuxsecurity.com/ Página 11 de 11 BIBLIOGRAFÍAS