Lan Turtle [EN CONSTRUCCION P1 OK P2,P3 PENDIENTE]

Enviado por yikoru el Jue, 02/11/2017 - 16:38
Lan Turtle [EN CONSTRUCCION P1 OK P2,P3 PENDIENTE]

El tema se dividira en 3 partes,

P.1 introduccion & primeros pasos

P.2 Introduccion a los Modulos y manteniendo acceso

P.3 Realizando auditoria con Responder


 

P.1 introduccion & primeros pasos


Lan Turtle es un dispositivo que en apariencia es un adaptador USB a ethernet pero en realidad es un mini pc con una interfaz de red rj45 y una interfaz de red USB (desde la cual se alimenta este pc). Cuenta con cerca de 26 módulos (lista actualizada acá) con los cuales se pueden realizar distintas labores de pentesting. Creado por la empresa Hack5 (propietaria de otro hardware para pentesting como el rubber duck, wifi pinneaple y otros)

página oficial lan turtle otro link oficial

 

Como todo equipo este también tiene sus características físicas (ram disco procesador etc) las cuales encontramos en su wiki

No mencionan el sistema operativo que posee, sin embargo se descubre que es OpenWRT Barrier Breaker link

 

La primera vez que se conecta el dispositivo a un computador este lo reconoce como un USB fastethernet, es importante averiguar si el pc al cual queremos conectar nuestro equipo tiene autorizada la instalación de nuevos drivers (y una conexión a internet para descargar los drivers)

instalando driver

 

Driver instalado

Una vez instalados los drivers, el computador tratara la nueva red como cualquier otra, solicitando el tipo de red a la que nos conectamos (hogar, oficina o publico) y podemos ver que nos entrega una ip del segmento 172.16.84.0/24 con el GW 172.16.84.1 (IP a la que entraremos para configurar nuestro dispositivo), a continuación vemos una imagen de esto (favor ignorar red 10.66.3.1)

favor ignorar red 10.66.3.1

Vemos que a nuestro dispositivo se le ha asignado la IP 172.16.84.240. En este caso cuento con 2 GW debido a que al momento de tomar la captura tenía la interfaz de red conectada

Una vez finalizado todo esto vamos a conectarnos a nuestra lan turtle y realizar los primeros pasos

En algunos casos es necesario configurar la traducción dependiendo del cliente ssh que utilicemos a ISO-8859-1  personalmente en el caso de Linux no tuve ningún problema pero si con putty en Windows.

Pensemos que lo que deseo hacer con la lan turtle es simplemente conectarla dentro de una red lo mas rapido posible y automáticamente pueda conectarme desde fuera de su red para realizar test de pentesting con mas calma para ello debemos pensar que esto debe ser lo más rápido e imperceptible posible

Una vez conectados, el usuario es "root" y la pass por defecto será "sh3llz" la cual nos pedirá cambiar la primera vez

Importante mencionar que al realizar este cambio el cuadro de dialogo no se visualizan los caracteres escritos.

Ya con esto tenemos acceso a la shell de lan turtle la cual en primera instancia muestra una interfaz por línea de comandos amigable desde la cual podemos realizar varias cosas, también podemos salir de esta interfaz y trabajar directamente sobre la CLI de la sesión ssh y volver a la interfaz tecleando "turtle" 

(me hubiese gustado haber sacado una imagen de esta primera interfaz para que vean las opciones pero lo olvide la verdad) 

Nuestro siguiente paso básico será actualizar nuestro firmware (o sistema operativo como lo vean) y para eso tenemos, yo calculo, 3 vías distintas. Este paso es importante ya que se realizó un cambio en la gestión de los módulos entre la V1.x y la 2.x 

1° conectar la lan turtle  hacia internet a través de un cable de red en su conector RJ-45

2° Descargar la última versión del firmware y pasarlo a la lan turtle a través de scp

3° configurar la lan turtle y el pc para que la lan turtle salga a internet a través del computador 

en los comentarios dejare los comandos para hacer los pasos 2 y 3 con un pc con Linux e iptables, desconozco como se hacen estos pasos en W$ndows

Una vez actualizado nuestro dispositivo con el método que elijamos tendremos un solo modulo disponible 

modulo disponible tras actualizar

y desde este módulo podremos gestionar los otros 25 módulos, esto es útil ya que nos permite mantener solamente los módulos necesarios para nuestra tarea lo cual toma relevancia si miramos el tamaño de almacenamiento que tiene el dispositivo (16 MB Onboard Flash) 


 

P.2 Introducción a los Módulos y manteniendo acceso


Como se mencionó en la introducción, lan turtle cuenta con cerca de 26 módulos disponibles para descargar, esto no es totalmente indispensable ya que podemos manualmente descargar los distintos paquetes que necesitamos y configurarlos "a mano" pero tendríamos obviamente que tener el conocimiento para eso, por lo que es recomendable en la mayoría de los casos, descargar los módulos ya existentes. Si queremos echar un vistazo a los módulos y como están programados podemos ingresar al repositorio github y descargarlos al computador. En su mayoría (al menos los módulos que yo revise) están programados en bash por lo que si se tiene conocimientos de este lenguaje será fácil de entender. Principalmente los módulos cuentan con 4 funciones principales, obviamente esto dependerá del creador y de la función de cada módulo. Estas funciones son:

 

  • - configuración: Donde se verifica la existencia de una configuración anterior, o se genera una nueva configuración. Por lo general todas las configuraciones se guardan en texto claro en el directorio /etc/config/ y podemos realizar la edición a mano de estas configuraciones. Una vez iniciado el módulo la configuración es guardada en UCI (Unified Configuration Interface), si quieren más información sobre uci pueden consultar la wiki de OpenWrt aquí y aquí para información más técnica
  • - dependencias: Verifica la existencia de los paquetes necesarios para el correcto funcionamiento del módulo. En caso de no existir el paquete lo descarga utilizando el gestor de paquetes de OpenWrt opkg (aquí tienen más información del funcionamiento de opkg)o github en algunos casos. Cuando se utiliza github para resolver alguna dependencia, sugiero para ahorrar espacio en el dispositivo realizar la descarga al computador directamente y subir a la lan turtle solamente los archivos necesarios
  • - interfaz: los detalles de la interfaz para la configuración, en esta parte generalmente se definen los distintos botones, largo y ancho de los cuadros posición de las opciones etc.
  • - misceláneos (start, stop, status, etc): Muchos pensaran que estas funciones son básicas para el funcionamiento del módulo pero existen varios módulos que por su simpleza no necesitan (o no tienen) ninguna de estas funciones

Ya terminando esta segunda parte nos vamos a enfocar un poco en lo que ya esta y en los problemas que tuve al utilizar los módulos.

Recordemos el propósito que me puse para este dispositivo:

"lo que deseo hacer con la lan turtle es simplemente conectarla dentro de una red lo más rápido posible y automáticamente pueda conectarme desde fuera de su red para realizar test de pentesting con más calma"

Para esto tenemos que tener presente que, dependiendo de la red y sus restricciones de seguridad, vamos a tener un acceso directo o no por lo que configurare de antemano diversos módulos. Para probar con cada uno a ver con cual puedo obtener acceso

La lista de módulos que configurare (y el link del repo github) es:

Ahora antes de continuar cabe mencionar que hay un problema que yo resolví de una forma "anti propósito" pero es posible realizarla (la verdad me dio flojera pensar mucho) y es que modulo efectivamente utilizar en mi caso probé "a mano" en la red destino si tenia o no restricción alguna para conectarme al servidor remoto pero lo ideal hubiese sido realizar un script y que este realice automáticamente esta búsqueda

 

Módulo iodine

Este módulo nos permite establecer un túnel DNS para tratar de bypasear las restricciones que tenga la red objetivo, el programa original lo pueden encontrar aquí por si lo quieren probar en algún computador, la configuración es bastante simple desde el lado cliente, en este caso la lan turtle, a través de la interfaz solamente tenemos que setear la información que nos solicita (servidor NS y password) Desde el lado servidor tenemos que realizar la instalación de iodine (que obviamente dependerá de la distro que se utilice) En todo caso les dejo este link con los pasos de configuración es importante configurar un registro NS en nuestro servidor y verificar que sea el único registro configurado, en caso que no sea así existe la posibilidad de que la conexión no se establezca debido a que toma la primera respuesta NS y si no es la de nuestro servidor estará intentando comunicarse con un servidor que no corresponde. En caso que no puedan tener solo un registro NS podemos configurar el cliente con el dominio superior más el dominio NS y con eso solucionan este problema

Para comprobar la configuración de nuestro servidor en la misma página tenemos acceso a este link donde podemos comprobar que todo esté funcionando correctamente en el lado servidor, a continuación adjunto una imagen de la página con un test ok.

http://code.kryo.se/iodine/check-it/

En mi configuración el servidor ya cuenta con 2 registros NS lo cual hace que cada cierto tiempo el test falle ya que como comenté antes el cliente empieza a consultar a otro servidor, favor coloquen atención a la siguiente captura y vean el nombre del registro NS y su IP

test fail

Si se fijan encuentra el registro NS ns2.dns-premium.net con IP 186.64112.62 y no d.wirelesslan.cl IP 190.114.255.137 por lo cual el servidor iodine nunca llega a escuchar al cliente

En mi caso instale iodine en un servidor Centos y podemos comprobar si hay clientes conectados utilizando systemctl status iodine-server -l con lo que podremos conocer la hora de login, IP desde donde se conectan y la correspondiente IP asignada al cliente, desconozco si en los otros SO se manipule de la misma manera el programa (imagino que si).

systemctl status iodine-server

Módulo Ptunnel

Este módulo también nos permite crear un túnel al igual que lo realiza iodine pero esta vez sobre el protocolo ICMP (más conocido como ping) aquí detecte algunas limitaciones importantes aunque no tuve tiempo suficiente para revisar si efectivamente es así o como podía solucionarlo, esta limitación es que solo nos permite 1 única conexión lo que nos limita bastante a la hora de necesitar por ejemplo acceso ssh y sshfs al mismo tiempo. Lo pueden descargar desde este link y pueden encontrar más información del proyecto en este link

La instalación en el lado servidor (pensando que tenemos un Centos) con los repos de Repoforge (RPMforge) i386 solamente un yum install ptunnel o compilar directamente desde las fuentes (pueden encontrar un how to acá por ejemplo) y para iniciarlo en mi caso aplico un ptunnel -daemon /tmp/ptunnel.log

en el otro extremo basta con configurar el cliente con la interfaz gráfica y probar, hay que destacar que al iniciar este servicio se nos abrirá un puerto en localhost (el que hayamos configurado) y tendremos que configurar los otros módulos apuntando a ese puerto

Módulo sshfs

Este módulo es desde mi perspectiva uno de los módulos fundamentales para cualquier uso que le queramos dar a la lan turtle si debemos almacenar algo de información. El módulo monta un directorio remoto sobre una conexión ssh en la lan turtle ayudando así a "ampliar" la capacidad de espacio de almacenamiento, si quieren más información tenemos un link aquí . La configuración no es difícil pero si tenemos que tener presente el manejo de las llaves públicas para lograr que no nos pida la contraseña cada vez que activamos el módulo

Breve explicación del manejo de llaves en ssh

En Linux tenemos el directorio ~/.ssh/ donde tenemos en esencia 2 archivos

  1. authorized_keys
  2. know_hosts

ambos directorios almacenan las llaves públicas de los equipos a los que nos conectamos por SSH pero se usan para distintos fines

  • authorized_keys: sirve para permitir conexiones por llave publica, o sea si la llave publica del equipo remoto existe en este archivo, cada vez que se conecten el servidor asumirá que es un equipo de confianza y no solicitara contraseña para autentificarse
  • know_hosts: cada vez que nos conectemos a un equipo remoto nuevo se agregara la información de su llave publica a este archivo, así la próxima vez que nos conectemos el equipo local verificara que la llave publica coincida, de ser así la comunicación se establece de forma normal, en caso contrario no permitirá que se realice la conexión y se debe borrar la llave guardada y conectarse nuevamente para que se guarde la nueva llave (evidentemente si no tienen motivos para pensar que la llave publica cambio pueden ser víctimas de un ataque mitm)

por lo que resulta fundamental configurar en el archivo authorized_keys la llave publica de nuestra lan turtle en el equipo remoto para que el directorio se monte de forma automática sin necesidad de introducir la contraseña.

Esto lo podemos realizar directamente desde consola o utilizar el módulo keymanager.

Como comenté es un módulo muy interesante y fundamental pero me dio algunos problemas los cuales no resolví y es que el módulo indica que esta ok funcionando pero a los pocos segundos se cae la conexión y se empieza a escribir sobre la memoria de la lan turtle lo que terminaba mal para mí

módulo upnp-portfwd

Este módulo es de los más simples que encontramos en el repo (exceptuando al módulo uptime) hace uso de un protocolo extraño y desconocido para mí hasta antes de jugar con el (había leído algo al respecto pero vamos decía:"En serio? abrir puertos así como así?") Está definido por la IETF en el RFC 6970 donde básicamente un cliente (en este caso la lan turtle) le solicita al servidor (el router al que este conectado) que le haga un port-forwarding (o que abra un puerto o también conocido como virtual server)y ya con eso tendríamos acceso a la lan turtle desde el exterior sin problemas. UPNP viene habilitado por defecto en la mayoría de los router de hogar pero en entornos más empresariales esto es menos probable de ver así que hay que pensarlo bien antes de elegir en que entorno utilizar este módulo

módulo ddnsc

Este módulo es complementario al anterior ya que si bien upnp-portfwd nos abre un puerto no nos informa cual es la IP WAN donde debemos conectarnos con este módulo tenemos la opción.

Primero debemos ver la lista de servicios DDNS (si no saben que es DDNS aquí un pequeño link) ubicada en /usr/lib/ddns/services, si no tienen el archivo deben instalar el paquete ddns-scripts (el cual necesita este módulo para funcionar) se crean la cuenta en el servicio que eligieron y se configura el módulo.

En lo personal el script no me funcionó con no-ip.org así que utilice un script en cron para actualizar la ip del dominio

módulo autossh

módulo keymanager

módulo netcat-revshell

 

 

[AUN EN CONSTRUCCIÓN]


 

P.3 Realizando auditoria con Responder