Simulación de un ataque DOS en una red inalámbrica basada la plataforma Arduino. Canedo, Herrera Alejandro Pérez, Romo, García José Francisco, Valdés, Martínez Gerardo Ramiro, Núñez, González Ana Marcela, Favela, Hernández Jesús Alonso, Dra. Villalpando, Hernández Rafaela Instituto Tecnológico y de Estudios Superiores de Monterrey Paseo del Tecnológico 751. Colonia Ampliación La Rosita. Torreón, Coahuila, México. C.P. 27250 Tel. (52/871) 729630000 alejandropcanedo@gmail.com joseromogarcia@gmail.com gerardo1088@hotmail.com ana_230491@hotmail.com jesus_0748@hotmail.com rafaela.villalpando@itesm.mx Resumen Se presenta la implementación de ataques en una red inalámbrica implementada por medio de la plataforma Arduino y utilizando la tecncnología de Xbee para la transmisión y recepción de datos. En este trabajo se observará como un atacante puede afectar toda una red, si no se toman las medidas de seguridad necesarias para proteger la información o la integridad de la red. Palabras clave: Xbee, ataque DOS, Arduino e informatica. 1. Introducción El presente proyecto trata sobre la configuración y simulación de una red implementada con la plataforma Arduino UNO y antenas de radiofrecuencia. Toda red informática esta expuesta a ataques del interior y exterior. Existen varios tipos de ataques contra una red. Uno de los ataques es el conocido como DOS. Un ataque DOS (Ataque de Negación de Servicio) normalmente provoca que se pierda la conectividad en una red y como consecuencia sea inaccesible para los usuarios. Este ataque es generado por medio de la saturación de un puerto con un flujo de información que provocará una sobrecarga en el servidor y no podrá seguir procesando las solicitudes que le lleguen. Es importante protegernos de estos ataques. Existen algoritmos de cifrado de datos. Estos algoritmos nos ayudan a proteger nuestra información de que pueda ser vista y usada con fines maliciosos. Para el atacante será imposible o casi imposible descifrar el mensaje cifrado. Con esto se desea aplicar los conocimientos adquiridos durante el proyecto para aplicaciones reales, para resolver problemáticas que se puedan presentar en el campo laboral. Es importante recalcar que la seguridad es una parte esencial para la integridad de cualquier sistema de información, ya que ésta es uno de los activos mas importantes de la empresa hoy en día. Tener disponibilidad a la información correcta es vital para la toma de decisiones dentro de cualquier empresa. 2. Desarrollo La red con la que se trabaja en el proyecto consta de cuatro nodos. Dos Arduinos actúan como los nodos destino. Los nodos destino mandan y reciben paquetes hacia algún otro nodo en la red. Otro Arduino tiene la función de nodo servidor. El nodo se encarga de reenviar los paquetes a su destinatario. Con el fin de implementar la red, se realizó la investigación acerca del uso y funcionamiento de los módulos “XBee” y “ArduinoXbeeShield¨, que son módulos de comunicación inalámbrica basadas en radio frecuencias (RF). Para configurar el “Xbee” es necesario conectarlo a la computadora mediante un cable USB, así se podrá comenzar a programar el “Xbee” de manera directa y revisar constantemente si no existe la pérdida de conexión o monitorear el programa. Para la programación fue necesario realizar un “bypass” al Arduino, esto es, “saltar” el micro para poder realizar la programación directamente al “Xbee” mediante el “Xbee Shield”, así mismo se configuró el ArduinoXbeeShield en modo USB. Para poder configurar “Xbee” con la computadora, se tuvo que instalar el software X-CTU. Se configuraron los “XBee” en modo XB24, utilizando los siguientes datos, AP=2,MY Address=1,3 (En el caso de los dispositivos finales), 2 (Servidor), PAN ID=ABBA. Estos datos, proporcionan dirección e identificador al nodo. Para el manejo de la programación de Xbee y Arduino se utilizan diferentes librerías. Las librerías utilizadas en el presente proyecto se presentan en la Tabla N° 1. Tabla.1 Librerías utilizadas para la configuración del módulo Xbee. Proceso Función Rx16Response Mensaje recibido por el Xbee Xbee Clase utilizada para enviar los mensajes. Tx16Request Mensaje que será enviado al otro Xbee En la figura N° 1, se presenta la interface gráfica del X-CTU, donde es posible configurar parámetros de comunicación tales como número de canal, tamaño de paquetes, etc. de cifrado es por la técnica de sustitución, en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de cuatro, la A sería sustituida por la E (situada cuatro lugares a la derecha de la A), la B sería reemplazada por la F. La transformación se puede representar alineando dos alfabetos; el alfabeto cifrado es un alfabeto normal que está desplazado un número determinado de posiciones hacia la izquierda o la derecha. Fig.1. Interface del Software X-CTU. 2.1 Ataque El ataque seleccionado para realizar en ésta ocasión fue un ataque de negación de servicio (DOS), éste consiste en hacer que un servicio no esté disponible para algún usuario que deba tenerlo. Para lograrlo, se hacen peticiones de forma repetida al servidor, de tal forma que el servidor no pueda cumplir con todas al mismo tiempo y termine por dejar de funcionar por un periodo de tiempo que puede variar desde horas hasta días. En nuestro caso el DOS lo que hace es que un Arduino empieza a mandar solicitudes y el servidor por tratar de contestarlas empieza a ignorar a los Arduinos que en realidad se estaban comunicando, [1]. 2.2 Cifrado El cifrado Caesar [1], es de los primeros métodos de cifrado conocido, teniendo su primer uso en las guerras, su creador fue Julio Caesar. Éste tipo Para codificar un mensaje simplemente se debe buscar cada letra en el texto original y escribir la letra en el texto codificado como se ilustra en la figura N° 2. Para poder decodificar el texto se debe hacer lo contrario, desplazando el carácter cifrado. Fig. 2. Ilustración del Cifrado Caesar. Para éste tipo de cifrado la codificación también se puede representar usando aritmética modular, transformando las letras en números, de acuerdo al esquema A = 0, B = 1,..., Z = 25. La codificación de la letra x con un desplazamiento n puede ser descrita matemáticamente como: 𝐸! 𝑥 = x + η mod 27 (1) 𝐷! 𝑥 = x − η mod 27 (2) Donde En(x), es la función usada para cifrar y Dn(x) la ecuación utilizada para descifrar. 2.3 Diagrama del circuito En la figura N° 3 a), b), c), se presenta la interconexión llevada a cabo para configurar la plataforma Arduino de las formas antes descritas. Como se puede observar, la implementación del circuito resulta sencilla, la dificultad radica tanto en la configuración adecuada como en su programación. c) Fig. 3. a) Circuito utilizado para Aduino UNO de los dispositivos finales 1,2 y el atacante, b) Arduino del dispositivo final con Xbee, c) Arduino servidor con Xbee. En la figura N° 4, se presenta una fotografia de la implementacion real de la red inalámbrica, como se puede observar consta de una placa Arduino, interconectada por medio del adaptador XbeeShield al módulo de comunicación Xbee. a) Fig. 4. Implementación real de la red. b) En la figura N° 5, se muestra el algoritmo utilizado por los nodos finales. Uno de los procesos importantes del algoritmo es checar los paquetes. Este proceso primero obtiene el paquete procedente del Xbee del nodo servidor. Después verifica que la longitud del paquete sea mínimo de 4 bits. Si cumple con la condicion el paquete pasara a descifrarse y enviara un mensaje al servidor de reconocimiento. Esto como una medida de seguridad. alguna petición de los dispositivos finales. Si hay alguna petición espera a que llegue el paquete, a continuación empieza a correr el tiempo. En caso de que el tiempo de espera se exceda, se muestra una advertencia indicando que el tiempo de espera se excedió. Por el contrario, si el servidor recibió un paquete de algún dispositivo final, lo transmitira a su destinatario final. Al transmitirlo, esperará una confirmación del receptor del mensaje indicando que fue transmitido el paquete con éxito. Fig. 6. Algoritmo utilizado por el servidor. Fig. 5. Algoritmo utilizado por los dispositivos finales. 3. Análisis de resultados En la figura N° 6, se muestra el algoritmo programado en el nodo servidor. El proceso que estará corriendo continuamente en el servidor se señala en la figura N° 6 con una flecha. Primeramente revisa si tiene Como se mencionó anteriormente la red cuenta con cuatro nodos (Arduinos), donde uno de ellos realiza la función de servidor, dos la función de dispositivos finales y el último actúa como atacante. Los cuatro nodos van conectados por medio de su puerto USB a una computadora, el servidor comenzará a escuchar (detectar) y esperar paquetes de los dispositivos finales que se encuentran conectados inalámbricamente a él. Para poder mandar mensajes, ambos dispositivos finales cuentan con un botón, el cual al momento de presionarle, hace que el Arduino transmita un mensaje al otro Arduino, siendo el servidor un intermediario para su comunicación que empezarán a transmitir mensajes una vez que sean presionados. A continuación se resume el proceso llevado a cabo para la implementación tanto de la comunicación de los nodos en la red como del ataque. 1. Configurar los cuatro Xbees en modo XB24 para la comunicación entre los nodos. 2. Conectar los primeros tres Arduinos a una fuente de alimentación. 4.Conclusiones Es importante recalcar que la seguridad es una parte esencial para la integridad de cualquier sistema de información, ya que esta es uno de los activos más importantes de las empresas hoy en día, pues es vital para la toma de decisiones, es por esto que es de suma importancia mantenerla íntegra y disponible para cuando el usuario la requiera. Para implementar una mayor seguridad de encriptación seria bueno implementar un algoritmo asimétrico por cada uno de los equipos como RSA. Finalmente, deseamos recalcar que el desempeño de la red puede verse afectado por diferentes ataques y que con esta investigación se busca contribuir a lograr una mejor comprensión de sus efectos y la importancia de su detección. Referencias 3. Oprimir el botón del arduino del que desees enviar el mensaje. 4. Monitorear el puerto serial del segundo Arduino para esperar el mensaje recibido por parte del primero y viceversa. 5. En caso de querer probar el ataque, conectar el cuarto Arduino a la fuente de alimentación, presionar el botón, éste comenzará a inundar la red de peticiones y evitará que los verdaderos dispositivos finales manden mensajes. [1] Stallings, W. (2003). “Cryptography and Network Security: Principles and Practice”, USA: Pearson Education. [2] Shield, X. (2013). “Arduino”, http://arduino.cc/en/Main/ArduinoXbeeS hield