viernes, julio 26, 2019

Food for Thought: Treinta libros que alimentaron mi mente (Parte 2)

Como ya os conté, he sido un lector voraz en mi juventud, y hoy en día la lectura sigue siendo parte de mi vida. A principios de año os dejé diez libros que alimentaron mi mente, y hoy voy a aprovechar que estoy a punto de irme de vacaciones para dejaros otros cinco - o alguno más ya que os he complementado cada uno con muchas referencias y algunos son dobles o triples - lectura para este verano. Son libros a los que tengo mucho cariño, así que si los lees, de verdad espero que los disfrutes y lo comentes.

Figura 1: Food for Thought: Treinta libros que alimentaron mi mente (Parte 2)

De nuevo, son libros de lectura, y no libros para aprender seguridad informática y hacking. De esos ya os dejé otra entrada hace tiempo, que actualizaré, tal vez, a mi vuelta del descanso veraniego.

11.- Frankenstein o el moderno Prometeo

Seguro que todos conocéis el mito del monstruo de Frankenstein. Es parte de la cultura de hoy en día. Se ha adaptado en películas de terror, películas de humor, series, cómics, y cualquier medio. El monstruo hecho por partes que tenía un cerebro dañado y perturbado. De hecho, muchas veces se habla de este mito cuando se dice que se habla del monstruo de Frankenstein. Pero no es así.

Figura 2: Lista de películas de Frankenstein

Ese monstruo de Frankenstein que se explica en el mito tiene poco que ver con la novela que escribió Mary Shelley. Bueno, sí que es verdad que el monstruo es un "monstruo" porque está hecho de piezas. De partes de otros cuerpos humanos. Pero no, no tiene un cerebro dañado, retrasado o perturbado. Es una persona cuerda, culta, y elevada.

De hecho, leer este libro me recuerda siempre que no hay que dejarse llevar por falsas proclamas políticas que pretenden llevar a siglos pasados valores de hoy en día, o tildar de valores de hoy en día hechos de hace siglos. Explicar los hechos del pasado con valores de hoy en día es la trampa más tramposa de políticos.

Figura 3: Libro de Frankenstein de Mary W. Shelley

Cada tiempo tiene sus valores de sociedad. En algún tiempo pasado lo más importante en la sociedad era la valentía. En otros tiempos lo más importante era el amor romántico. En otros tiempos la religión. O la fuerza. O el poder. Y en otros, como en los tiempos que narra Mary Shelley, "la amistad". Y es lo que busca el monstruo de Frankenstein: Amistad. Establecer lazos de pura amistad con alguien, a pesar de su fealdad. Y nada mejor que alguien ciego en una cabaña en el mundo. Pero el rechazo de la sociedad y de la familia de su amigo ciego, por su aspecto y fealdad exterior, generan en él un odio que le clama venganza.

Si no te he picado la curiosidad, solo te diré que la historia tiene momentos preciosos, tiernos y también duros, donde es imposible no empatizar en mucha parte de la novela con el monstruo de Frankenstein. Además, el tema de los transplantes de órganos hoy en día es casi normal, así que este "Alter Carbon" del pasado fue un auténtico adelantado a su tiempo. Si no te gusta este libro, es que no tienes alma.

12.- Criptonomicón (Trilogía + Libro de estudio)

Estas tres novelas son de Neil Stephenson, autor de la historia de Snow Crash de la que os hablé en la primera parte de esta serie. Y es una pasada. Una historia que mezcla la lucha criptográfica en la II Guerra Mundial para que los aliados pudieran descifran los mensajes de los nazis hechos con la máquina Enigma, que se mezcla con una historia 40 años más adelante con una grupo de "hackers" que quieren acabar con el sistema monetario mundial usando una criptomoneda que quieren generar y almacenar en un datacenter escondido al que llaman La Cripta.


Brutal la historia para existir antes de que pudiéramos tener BitCoin y BlockChain. Esa parte es chulísima, porque explica muchas cosas del impacto que podía tener una moneda como las susodichas BitCoin, Monero o la anunciada Libra de Facebook.

Figura 5: Libro de BitCoin & BlockChain en 0xWord de Yaiza Rubio y Felix Brezo

Pero es que además tiene momentos divertidísimos con todos los personajes, entre los que destacan el famoso Enoch Root que.... veremos en otras novelas de Neil Stephenson. De entre los momentos, dos muy únicos. 

Figura 6: Libro de El Criptonomicón 1: El código Enigma
 (Parte 1 de 3)

El primero en el que uno de los protagonistas de la II Guerra Mundial trabaja en descifrar los códigos de los nazis, pero no se concentra porque necesita sexo. Por ello hace un estudio de cómo consigue liberar la cabeza de pensar en matemáticas masturbándose.

Figura 7: Un libro para aprender criptografía desde cero

Pero claro, el alivio cada vez es menor, por lo que necesita practicar sexo con alguien para liberar la cabeza y dedicarse a la criptografía. ¿Solución? Se lía con una espía alemana - a sabiendas - para tener sexo con ella y poder liberar la cabeza y centrarse en la criptografía.

Figura 8: El Criptonomicón 3: El Código Aretusa
(Parte 3 de 3)

El segundo momento que recuerdo es cuando en un momento, en una isla en mitad del océano, mientras buscan el lugar para La Cripta, Neal Stephenson cuenta que se cae un coco de un cocotero. Y dice que el coco se rompe al caer sobre una piedra. Ese párrafo me dejo claro que Neal Stephenson jamás había visto un coco en el cocotero o había tenido que abrir uno. Una lectura obligada en la cultura hacker.

13.- Hacker Épico (1 libro y 1 cómic)

Esta novela de "Hacker Épico" ya os la he recomendado muchas veces. La historia que escribieron Rodrigo y Alejandro es trepidante, llena de acción y de hacking. Y lo mejor es que todo lo que se cuenta de hacking es escrupulosamente cierto, ya que se pensó que el que lo leyera fuera un hacker, un pentester o un investigador de seguridad y entendiera todos los pasos, e incluso sirviera para estudiar.

Figura 9: Libro de "Hacker Épico"

Yo me lo leí en menos de un día, y es que la historia engancha tanto que lo acabé por convertir en un cómic en edición Deluxe con unos dibujos magníficos de Eve Mae. Una chulada para la vista a la vez que se disfruta de la acción de la novela.

Figura 10: Adaptación de la novela de Hacker Épico de Alejandro Ramos y
Rodrigo Yepes en cómic Deluxe Edition hecha por Eve Mae.

Y espero que en algún momento Rodrigo y Alejandro nos regalen la segunda parte de esta historia que ganó dos premios en el sector de la seguridad informática, que ya va siendo hora de continuar con las vidas de estos personajes. Incluida la mía, que tengo un papel pequeño y maligno dentro de la novela....ahí queda.

14.- De la Tierra a la Luna y Viaje alrededor de la Luna

Cuando yo era pequeño - mucho antes de Wikipedia, mucho antes de Encarta - mis padres me compraron una enciclopedia para que pudiera aprender mucho en mi etapa escolar. La enciclopedia no estaba mal, pero lo que molaba es que venía con una colección de libros de Julio Verne. Y eso sí que me molaba.

Figura 11: De la Tierra a la Luna

Os podría recomendar muchos libros, pero de ellos hay un par de ellos que me encantaron y que teniendo en cuenta cómo de moda está SpaceX y sus viajes espaciales, son los que he elegido. Se trata de las historias De la Tierra a la Luna y Alrededor de la Luna. Dos aventuras escritas en modo folletín que llevan a nuestros héroes metidos en una especie de bala... pura imaginación.

Figura 12: Viaje alrededor de la Luna

Los protagonistas intentar aterrizar en la Luna en la segunda parte, pero no lo consiguen. Eso sí, tiran un poco de los motores de propulsión, apuntan otra vez a la Tierra y de vuelta a casa sin ningún problema. Ya habrá tiempo de llegar a la Luna más tarde.

Figura 13: Las Montañas de la Locura

Como curiosidad, me hizo especial ilusión cuando Cels Piñol hizo coincidir a mi personaje en su imaginativo universo "El Profesor Alonso" con Julio Verne en la librería de Barcelona. Pensar que mi alter ego lo conoció en la historia de "Las Montañas de la Locura" me mola mucho.

15.-  Cero Absoluto

El último libro que os voy a recomendar es un trepidante Best Seller de los años 90 escrito por Allan Folsom. Un autentico thriller que tiene unos tintes tecnológicos curiosos, ya que mezcla a los nazis, y las técnicas de criogenización que tan de moda están hoy en día. La base del título tiene que ver con llegar a ese valor de 0º Kelvin en el que se alcanzaría el Cero Absoluto.

Figura 14: Cero Absoluto de Allan Folsom

¿Qué pasaría si se consiguiera llegar al Cero Absoluto en un entorno controlado? Pues que los electrones de los átomos se pararían. Tendríamos un mapa estable de todos los átomos de, por ejemplo, una herida celular. Una teoría que lleva a resolver el problema de cómo poder recuperar una estructura celular de una congelación, por ejemplo, como sucede con los cuerpos criogenizados.

Hoy en día la criogenización empieza a ser una opción por muchas personas en el mundo, y este libro lo trata desde un punto de vista peculiar. Una novela que te va a hacer pasar unos buenos ratos al sol conjeturando cosas, y hasta tomando la decisión - o no - de criogenizarte. Tema muy de actualidad hoy que hablamos de los "amortales" y la nanotecnología preventiva.

Tengo en la lista algunas otras obras que me hubiera gustado incluir en esta lista, pero ya me ha quedado muy largo el artículo. Ya otro día os dejo más referencias de libros que me han gustado en mi vida y detalles de por qué. Si alguno os habéis leído alguno de estos libros y queréis aportar vuestra opinión en los comentarios, más que bievenida.

Saludos Malignos!

jueves, julio 25, 2019

Cómo construir un medidor ambiental para el CPD con Raspberry Pi [Parte 2 de 2] #RaspberryPi

Tras terminar todo el proceso descrito en la primera parte de este artículo, ya tendremos una versión funcional de la plataforma de BBDD que podremos administrar desde la web. Vamos a ver en esta parte del artículo cómo terminar la configuración, y cómo explotar los datos.

Figura 9: Cómo construir un medidor ambiental para el CPD con Raspberry Pi [Parte 2 de 2]

Si todo el proceso que hemos descrito en el artículo anterior ha ido bien, podremos ir al apartado “Admin” (icono de la corona) y nos deberá listar nuestra BBDD recién creada, que en este caso se llama “sensor_data”.

Figura 10: Administración de la base de datos 

Desde aquí podemos administrar la BBDD y si nos interesa cambiar la política de retención de datos también podemos hacerlo. Por defecto viene en “INF” o "infinito", representado por su símbolo correspondiente (∞). En mi caso, le he establecido una política de retención de 7 días (7d), tras los cuales, los datos anteriores serán descartados.

Llegados a este punto, ya podemos comenzar a almacenar las métricas obtenidas con nuestra Raspberry Pi y el sensor conectado. Para ello, volvemos a la consola de nuestra RPi e importamos las librerías necesarias para poder almacenar los datos en InfluxDB:
sudo pip install influxdb
sudo pip install urllib3
Ahora procedemos a crearnos nuestro script en Python para la lectura del sensor y volcado de los datos obtenidos al InfluxDB. Para ello creamos un archivo con el nombre que deseemos. Yo lo he llamado sensor_data_logger.py. El script contendrá el siguiente código:
Import urllib3
import time
import sys
import datetime
import Adafruit_DHT
###OPCIONAL###
#Hemos añadido un extra de conectar un “buzzer” al GPIO 24 para hacerlo sonar si la temperatura sube de 28º
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.OUT, initial=0)
######
from influxdb import InfluxDBClient
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) #Necesario si el certificado que asignamos no es de confianza

#Variables de conexión con InfluxDB
host = "" #Nuestro host con InfluxDB
port =  #El Puerto configurado (Yo usé el 8886)
user = "" #El usuario que creamos para que la RPi se conectase (“rpi-3”)
password = "" #El password que creamos para que la RPi se conectase
dbname = "sensor_data" #La BB.DD. que creamos en su momento en InfluxDB
interval = 1 #El período de tiempo que queremos que lea el sensor en segundos>

#Creación del objeto conector con InfluxDB
client = InfluxDBClient(host, port, user, password, dbname, verify_ssl=False, ssl=True)

#Detalles del sensor (Modelo y GPIO al que está conectado)
sensor = Adafruit_DHT.DHT22
sensor_gpio = 4

#Idetificamos el sensor 
measurement = "rpidht22"
#Identificamos el lugar
location = "" #(Robayna)

# Bucle hasta pulsar crtl+c
try:
    while True:
        # Leemos los datos del sensor
        humidity, temperature = Adafruit_DHT.read_retry(sensor, sensor_gpio)
        #Hemos añadido un extra de conectar un “buzzer” al GPIO 24 para hacerlo sonar si la temperatura sube de 28º
        If temperature > 28:
                GPIO.output(24, 1)
        Else:
                GPIO.output(24, 0)
        iso = time.ctime()
        #Si lanzamos el script al arrancar la RPi, comentar la siguiente línea. Solo dejarlo sin comentar para tests
        # print("[%s] Temp: %s, Humidity: %s" % (iso, temperature, humidity)) 
        #Creamos la estructura JSON con los datos a mandar a InfluxDB
        data = [
        {
          "measurement": measurement,
              "tags": {
                  "location": location,
              },
              "time": iso,
              "fields": {
                  "temperature" : temperature,
                  "humidity": humidity
              }
          }
        ]
        #Enviamos los datos a InfluxDB
        client.write_points(data)
        #Esperamos el tiempo establecido en la variable “interval”.
        time.sleep(interval)
 
except KeyboardInterrupt:
    pass
Una vez guardado el archivo y cerrado, lo ejecutamos para que se ponga a hacer su trabajo.
sudo python sensor_data_logger.py
Si todo va bien no veremos errores y si hemos dejado descomentada la línea para las pruebas de test, veremos la medición al tiempo que es mandada a InfuxDB.

El siguiente paso es lanzar este script en el proceso de arranque. Para ello detenemos  el script con CTRL+C y editamos el script para comentar la línea del test. Después editamos el archivo /etc/rc.local agregando la siguiente línea justo antes de “exit 0” para que se ejecute junto con todos los demás daemons de arranque.
sudo python sensor_data_logger.py
Con esto, tras reiniciar nuestra Raspberry Pi, el script se lanzará automáticamente y comenzará a almacenarse la información capturada por los sensores en la base de datos que hemos creador en InfluxDB. Podemos acceder y verificar que los datos están almacenándose usando el CLIinflux” o Chronograf. Para usar el CLI ejecutamos:
influx
>auth
username: admin
password:
>
>
>
> use sensor_data

Using database sensor_data
>SELECT * FROM "sensor_data"."autogen"."rpidht22" WHERE "location"='' (‘Robayna’)
Con ese comando SQL se nos mostrará todas las entradas registradas en la base de datos de nuestro medidor ambiental. Ahora vamos a usarlas.

Explotación de datos y monitoreo de métricas

En este apartado instalaremos y configuraremos Grafana, que será el software encargado de leer los datos, mostrarlos “bonitos” e incluso podremos crearle alertas. Para ello, volvemos al servidor donde tenemos instalados InfluxDB y Chronograf. Abrimos una línea de comandos e instalamos Grafana:
echo "deb https://packagecloud.io/grafana/stable/debian/ stretch main" | sudo tee /etc/apt/sources.list.d/grafana.list
curl https://packagecloud.io/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana
Grafana corre por defecto en el puerto 3000 con el usuario por defecto “admin” y la passwordadmin” - lo que es una cagada de seguridad que no vas a dejar si quieres tener el dispositivo seguro que ya sabes lo malas las que son las passwords por defecto, y lo que pueden ser utilizadas en el Hacking de Web Technologies -.

Figura 11: Libro de Hacking Web Technologies de 0xWord
(Estos días con 10% descuento con el cupón VERANO2019)

Lo que queremos hacer ahora es configurar el canal HTTP para que sea seguro y un conector SMTP para que nos envíe alertas. Abrimos el archivo /etc/grafana/grafana.ini. En el apartado [smtp] establecemos los siguientes valores:
enabled = true
host =  (hostname.midominio.net:25)
# Si require autentificación, descomentar las líneas y establecerlos
;user = username
;password = Password!
# Si require certificados, descomentar las líneas y establecerlos
;cert_file =
;key_file =
;skip_verify = true
from_address = 
from_name =  (Grafana)
En el apartado [server], establecemos:
protocol = https
http_addr =
http_port =  (3000)
root_url = https://: (https://:3000)
cert_file =  #Path al certificado
cert_key =  #Path a la clave privada del certificado
Ahora como queremos que el servicio corra con los máximos privilegios, abrimos el archivo /etc/default/grafana-server y modificamos los siguientes valores:

Guardamos, salimos del fichero y reiniciamos el servicio:
GRAFANA_USER=[usuario_con_privilegios]
GRAFANA_GROUP=[Grupo_con_privilegios]
Ya podemos acceder a nuestro servicio grafana usando la URL https://[host_FQDN]:[Puerto]. Lo primero que haremos será cambiar la contraseña de “admin” - como ya se anticipaba antes - y crear tantos usuarios como requiramos, estableciéndoles correctamente si son usuarios con privilegios de administrador (Admin), editor de dashboards (Editor), o solamente de visualización (Viewer).

Una vez concluido, debemos agregar una fuente de datos, que será nuestro InfluxDB, en “Configuration” -> “Data Sources”. Establecemos los parámetros que ya conocemos, activando “Basic Auth” y si es necesario “Skip TLS Verification (Insecure)”.

Figura 12: Icono de campana

Debemos configurar también el sistema de alertas en el menú de la "campana" (Figura superior). Le pondremos un nombre descriptivo, el tipo, que será por correo (e-mail) y la dirección de correo electrónico donde queremos que nos lleguen las alertas.

Figura 13: Icon de gráficas

Ahora podemos comenzar a crear los paneles. Crearemos uno para la temperatura y otro para la humedad. Lo realizamos usando el botón de "graficas" . Nos crea un panel nuevo y ponernos sobre el nombre nos aparece una flecha indicando que hay un menú desplegable, lo pulsamos, editamos y comenzamos a agregarle contenido:

Figura 14: Edición de gráficas en el dashboard

Pulsando sobre cada variable/campo podemos modificarla, añadirle, indicarle que tipo de valor queremos (media, último, máximo, etcétera). Para establecer la alerta, lo hacemos en la pestaña alert. Cuando la completemos, se nos marcará en el gráfico una área roja semitransparente con la zona de alerta.

Figura 15: Configuración de alertas

Como yo he montado la Raspberry Pi con una TouchScreen de 7” y su caja correspondiente, he añadido un dashboard para la visualización de los datos dentro del mismo CPD:

Figura 16: El medidor ambiental funcionando en el CPD

Es importante saber que, cuando accedemos a visualizar los paneles en Grafana, hay que indicarle la tasa de refresco. Esto lo tenemos arriba a la derecha, pulsando sobre “Refresh every…

Figura 17: Configuración del refresco de las gráficas

Una vez concluido tendremos una monitorización con alertas incluidas de la temperatura y humedad de nuestro CPD. A partir de aquí podéis modificar el proyecto y meterle más sensores y/o relés, que ya con esto tenéis la base para comenzar.

Saludos,

Autor: Jesús Suárez

******************************************************************************************************
Cómo construir un medidor ambiental para el CPD con Raspberry Pi [Parte 1 de 2]
Cómo construir un medidor ambiental para el CPD con Raspberry Pi [Parte 1 de 2]
******************************************************************************************************

miércoles, julio 24, 2019

Cómo construir un medidor ambiental para el CPD con Raspberry Pi [Parte 1 de 2] #RaspberryPi

La seguridad en el mundo de las tecnologías informáticas tienen una importancia brutal en la transformación digital de la empresas.. Cada día aparecen nuevas vulnerabilidades descubiertas por investigadores de seguridad que se han sentido atraídos por el mundo de los hackers y otras descubiertas y explotadas por cibercriminales. El interés por esta disciplina está en auge. Hablamos de seguridad defensiva y seguridad ofensiva y hay que tener en cuenta que la seguridad debe tener presente esfuerzos en todas las partes de Prevencion, de Detección, de Respuesta, y de Recuperación, y que hay que trabajar en todas ellas. Hoy vamos a hablar de una medida que tiene que ver con la seguridad preventiva.

Figura 1: Cómo construir un medidor ambiental para el CPD con Raspberry Pi [Parte 1 de 2]

Yo veo la seguridad preventiva como los sistemas “pasivos” que nos ayudan en el día a día a resguardar la información que deseamos proteger, formando parte de nuestras defensas. En este aspecto tenemos, por ejemplo, nuestros recolectores y secuenciadores de logs, sistemas DLP, etcétera. No es necesario que un cibercriminal nos ataque para poner en riesgo la información o los sistemas que la alberga… una simple caída de nuestro CPD conlleva un incidente de seguridad, dado que, como debemos tener presente, la seguridad de la información significa que tenemos que tener en cuenta los factores de confidencialidad, la disponibilidad e integridad de la misma.

Estos factores debemos cubrirlos de la mejor manera posible y, en ocasiones, podemos hacerlo por un bajo coste de inversión y esfuerzo, simplemente teniendo en cuanta que hay que tomar medidas para evitar esos riesgos controlables.

Figura 2: Arduino para Hackers: PoCs & Hackers Just For Fun

Por ello me he animado a iniciar un pequeño proyecto que quiero compartir con ustedes - y sobre todo para el mundo de los makers - que ya he visto que hay muchos tras ver el libro de Arduino para Hackers: PoCs & Hacks Just For Fun - y con el cual podemos monitorizar nuestro CPD en lo que a humedad y temperatura se refiere. Una vez implementado y usando un poco la imaginación, podemos incluir en el mismo sistemas de detección de movimiento, peso, humo, ruido, relés activadores, etc.

Monitor ambiental de un CPD

Este proyecto puede llevarse a cabo por un precio mínimo de alrededor de 70€ según donde compremos los materiales y un máximo de 170€ si optamos por la versión con TouchScreen.

Materiales
  • RaspBerry PI 3 B+
  • Tarjeta de memoria MicroSD de 8GB
  • Sensor de temperatura y humedad DHT22
  • Zumbador
Opcional
  • TouchScreen 7” para RPi
  • Carcasa para TouchScreen
Figura 3: Carcasa para TouchScreen compatible con Rapberry Pi

La opción de agregar la TouchScreen a nuestra RaspBerry Pi es interesante porque nos permite ver la temperatura y humedad si estamos trabajando dentro del CPD, y por ese motivo he agregado también el zumbador.

Figura 4: Ejemplo del resultado final del medidor en el CPD

Esto lo logramos gracias a Grafana ya que permite tener varios DashBoards y podemos montar uno para una monitorización remota y otro para la monitorización dentro del CPD que es el que mostraremos en la TouchScreen.

Figura 5: Esquema del monitor sin el zumbador

En el esquema del proyecto, que puedes ver en la imagen superior,  no aparece el zumbador dado que es opcional. Pero su conexión es muy sencilla… positivo conectado al GPIO 24 y negativo a GND.

Requerimientos

Este es una proyecto que está basado en Python, así que cuanto más conozcas la potencia de este lenguaje y cómo funcionan las librerías de gestión de los diferentes elementos que tenemos en la arquitectura mejor.

Figura 6: Libros de Python para Pentesters y Hacking con Python
(Esta semana con el 10% de descuento con el Cupón VERANO2019)

Esta es la lista detallada de requerimientos que tenemos que tener en nuestra Raspberry Pi para construirlo.
  • Python para la ejecución de scripts
  • Liberías y scripts Python para uso con el sensor DHT22
  • InfluxDB para el almacenamiento de las métricas recogidas
  • Chronograf para la administración de InfluxDB
  • Grafana para la explotación de las métricas
  • Certificado SSL/TLS (puede ser autofirmado)
Preparación del Medidor

Instalamos Raspbian en la RPi usando el método que prefiramos (Usando noobs o quemando la ISO de RaspBian directamente sobre la SD Card). Una vez hecho, conectamos la RPi a la red y le damos salida a Internet para actualizar todo el sistema con los comandos:

sudo apt update && sudo apt upgrade -y
sudo rpi-update

Cuando comprobamos que el sistema va bien comenzamos am preparar nuestra RPi para la poder realizar la medición. Tendremos que montar el esquema mostrado antes. Tras ello, instalamos algunas librerías de Pyhton y descargamos en nuestra RPi las librerías y scripts para usar el sensor con los siguientes comandos:

sudo apt-get install build-essential python-dev python-openssl -y
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install

Tras esto, podremos lanzar nuestra primera prueba y verificar si el sensor funciona correctamente y/o está bien montado:

sudo python ./Adafruit_Python_DHT/examples/AdafruitDHT.py 22 4

En este caso, el parámetro 22 es el tipo de sensor (DHT22) y 4 es el puerto GPIO donde está conectado el pinDATA” de nuestro sensor. Si todo está OK, deberíamos obtener una salida como esta:

Figura 7: verificación del sensor

Si no ha sido así, revisa el esquema y los pasos dados hasta ahora. Como podemos ver en el ejemplo, está leyendo correctamente. El sensor DHT22 tiene las siguiente características:
  • Rangos de temperatura: -40°C to 80°C
  • Rangos de Humedad: 0% to 100%
  • Resolución: Temperatura y Humedad son de 16-bit
  • Exactitud: Temperatura: ±0.5°C Humedad: ±1%
Este sensor es más exacto que el DHT11

Almacenamiento de métricas

Una vez que verificamos que todo está funcionando de forma correcta podemos proceder a montar en un equipo independiente, nuestro sistema de almacenamiento y explotación de métricas. Yo he decidido montarlo en un Ubuntu. La instalación y el sistema de métricas no va a ocupar demasiado espacio ni requiere de un gran uso de CPU ni RAM.

Podemos optar por montarlo todo en nuestro Raspbian, pero la experiencia me hace declinarme por separar el sistema de medición con el sistema de almacenamiento y explotación de datos, dado que las tarjetas SD fallan frecuentemente y perdería el histórico de métricas.

Teniendo en cuenta todo esto, nos movemos a nuestro Ubuntu y comenzamos instalando InfluxDB, que será nuestra BBDD de almacenamiento.

echo "deb https://repos.influxdata.com/ubuntu bionic stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install influxdb -y

Si vamos a securizar las comunicaciones (recomiendo hacerlo) necesitamos que el servicio corra con los privilegios necesarios para poder acceder luego a los certificados SSL/TLS para securización de comunicaciones, con lo que para ello editamos el archivo /etc/init.d/influxdb y establecemos los siguientes parámetros:

USER=[Usuario_Con_Privilegios]
GROUP=[Grupo_Con_Privilegios]

Guardamos los cambios y cerramos el archivo. Ahora podemos reiniciar el servicio:

Tres esto, tendremos corriendo la instancia de BBDD de InfluxDB en nuestro sistema y la siguiente parte será crear usuarios y una BBDD. inicial. Para ello ejecutamos el CLI desde línea de comandos con el comando influx y una vez en la consola del CLI ejecutamos los siguientes comandos:

create database "sensor_data"
create user "admin" with password ""
grant all on "sensor_data" to "rpi-3"
create user "grafana" with password ""
grant read on "sensor_data" to "grafana"

Ya hemos creado nuestros primeros usuarios y la BBDD. El usuario “admin” lo utilizaremos para crear el resto de usuarios que administrarán la BBDD, a los cuales le deberemos establecer privilegios con “grant all privileges to [usuario_admin]”. El usuario “rpi-3” es el que usaremos para conectar desde nuestra RPi y el usuario “grafana” lo usaremos para conectar desde grafana. Es por ello que “rpi-3” tiene privilegios completos, pero solo en la BBDD creada “sensor_data” y el usuario “grafana” solo tiene privilegios de lectura sobre la misma BBDD.

Vamos a revisar si los parámetros de configuración son correctos y de paso vamos a establecer que la comunicación y la autenticación ha de ser segura. Podemos también cambiar los puertos TCP en los que se sirve el servicio por defecto. Para ello tendremos que editar el archivo /etc/influxdb/influxdb.conf. Los parámetros son:

bind-address = : #Yo he utilizado el puerto 8888

#Apartado [http]
enabled = true
bind-address = “:[Puerto]” #Yo he utilizado el puerto  8886
auth-enabled = false (true)
realm = “InfluxDB”
https-enabled = true/false (true)
https-certificate = "path_del_certificado" #Path al certificado
https-private-key = “path_de_la_key_del_certificado” #Path a la clave del certificado

Guardamos los cambios, cerramos el archivo y reiniciamos el servicio:

service influxd stop
service influxd start

Para poder administrar nuestra BBDD tenemos dos opciones, hacerlo por línea de comandos o a través de interface gráfica http con Chronograf. He decidido usar Chronograf por ser mas “user friendly” y por la facilidad de poder acceder desde un navegador. Para instalarlo hacemos lo siguiente:

wget https://dl.influxdata.com/chronograf/releases/chronograf_1.7.12_amd64.deb
sudo dpkg -i chronograf_1.7.12_amd64.deb
service start chronograf

Con esto ya tendremos instalado y corriendo el panel de control de Chronograf. Ahora toca hacer lo que antes… revisar configuración y securizar canales y acceso. Para ello, editamos el archivo /etc/default/chronograf y establecemos los parámetros:

HOST=[host_FQDN]
PORT= #Yo he usado el 9888
TLS_CERTIFICATE=[path_al_certificado] #Path al certificado
TLS_PRIVATE_KEY=[path_a_la_clave_del_certificado] #Path a la clave del certificado
#TOKEN_SECRET=[Token_que_queramos_usar] (Este parámetro no lo usaremos y lo dejamos comentado #)
LOG_LEVEL=debug #Establecemos “Debug” porque por ahora nos interesa que nos salga todo detalle en el log 

Editamos también el archivo /etc/init.d/chronograf y establecemos los siguientes parámetros:

export PORT=[”puerto”] #Yo he usado el 8888
RUNAS=

Ahora reiniciamos el servicio:

service stop chronograf
service start chronograf

Ya tendremos configurado y funcionando Chronograf con los parámetros establecidos, así que podemos pasar a configurar la BBDD que usaremos para el almacenamiento de las métricas. Accederemos vía navegador a Chronograf: https://[host_fqdn]:[puerto] (en el ejemplo yo usé el puerto 9888) y en el apartado de configuración (llave inglesa) agregaremos una conexión con el botón “+ Add Connection

Figura 8: Añadiendo una conexión

Estableceremos los valores que hemos configurado:

Connection URL: https://[host_FQDN]: (Yo usé el Puerto 8886)
Connection Name: Nombre_Identificativo
Username: admin
Password: El que establecimos al crear el usuario  en nuestro InfluxDB
Telegraf Database Name: Lo dejamos por defecto
Defaul Retention Policy: default
Make this the defaul connection: habilitado
Unsafe SSL: habilitado (Si hemos habilitado SSL/TLS)

Hasta aquí la primera entrega de cómo construir tu propio medidor ambiental para tu CPD utilizando una Raspberry Pi. Continuamos en la segunda parte.

Saludos,

Autor: Jesús Suarez

******************************************************************************************************
Cómo construir un medidor ambiental para el CPD con Raspberry Pi [Parte 1 de 2]
Cómo construir un medidor ambiental para el CPD con Raspberry Pi [Parte 1 de 2]
******************************************************************************************************

martes, julio 23, 2019

SMOLPION Symbiote: Cómo atacar equipos con un troyano físico [Parte 2 de 2]

Tras describir el proyecto de SMOLPION Symbiote en la primera parte de este artículo y ver tanto cómo funciona con Arduino y Raspebrry Pi, vamos con a continuar con el apartado de explicar cómo infiltrarlo dentro de la máquina objetivo.

Figura 11: SMOLPION Symbiote: Cómo atacar equipos con un troyano físico [Parte 2 de 2]

En la parte anterior vimos cómo es posible conectarlo a la placa madre de la computadora de la víctima, pero hay otros métodos más sencillos y al alcance de cualquiera que pase cerca del equipo objetivo.

2.2- Troyanizar o "weaponizar" dispositivos USB

El arte de la "troyanización" de hardawe USB puede resultar extremadamente efectivo en este ataque. Imagina por un momento un simple e inocente ratón, una lámpara, teclado, ventilador o cualquier dispositivo que pueda conectarse al puerto USB de un ordenador, el cual cumpla satisfactoriamente con sus funciones, pero que lleve ocultamente embebido un segundo dispositivo malicioso dentro de sus conexiones.

Figura 12: Utilización de NanoHub para troyanizar dispositivos USB

Para lograr este cometido, se puede utilizar -por ejemplo-, una placa NanoHub que proporciona una conexión USB extra bastante diminuta, para interconectar un dispositivo USB malicioso adicional, de tal manera que resulte imperceptible para la víctima, y cada vez que esta conecte el dispositivo al puerto USB de su ordenador, el hardware malicioso también comenzará a operar.

Figura 13: Libro de Ethical Hacking de Pablo González
(Esta semana con 10% de descuento)

Es por esta misma razón que no debemos confiar indiscriminadamente en cualquier hardware que se conecte vía USB, - y que para un Ethical Hacking, sustituir algunos ratones USB sabiendo el modelo que utiliza la empresa sería más que suficiente - ya que cualquiera podría troyanizarlo, utilizar un poco de ingeniería social y provocarte un agujero de seguridad del tamaño del mundo.

2.3.- Smolpion in the Middle: Con un conector USB Hembra

El dispositivo posee del lado contrario al conector USB macho, los pines necesarios para soldar un conector USB hembra. La ventaja de esto es dar la impresión de que SMOLPION es un adaptador o parte del dispositivo que se conectó detrás de él al conector hembra, puesto que ambos dispositivos seguirían trabajando de forma normal y SMOLPION quedaría por tiempo indefinido adherido al equipo, en medio de la conexión.

Figura 14: SMOLPION entre la conexión del puerto USB y otro dispositivo

Si se emplea esta estrategia en un dispositivo que el usuario siempre mantenga conectado a su equipo como un teclado, ratón o un dongle WiFi, pasará mucho tiempo antes de ser descubierto, o si el equipo es utilizado por el personal administrativo de la empresa, tal vez nunca lo descubran.

3.- PoC: Owneando Windows con un R.A.T.

Después de haber infiltrado SMOLPION Symbiote al equipo víctima utilizando alguno de los métodos anteriores, y haber compilado el código en la placa a la que está conectado el emisor RF, procederemos a dar apertura al monitor serie. A continuación, se mostrará en pantalla el menú con los vectores de ataque disponibles.

Figura 15: Vectores de ataque desplegados a través de monitor serie

Lo único que resta hacer es escribir el nombre del ataque deseado, y al dar a la tecla Enter. Entonces comenzará la ejecución remota de comandos, pulsación de tecla a pulsación de tecla cual si estuviéramos sentados delante del teclado en el equipo objetivo. Los distintos vectores de ataque se describen a continuación:
- Execution: Ejecuta un .exe elegido por el pentester. Tendrá los privilegios de la cuenta de usuario en la máquina.
- BypassUAC: Bypass al Control de cuentas de Usuario de Windows. Si el usuario es administrador se hará automáticamente. Si no, se pueden ir utilizando algunas de las técnicas más comunes. En el futuro se pueden ir añadiendo nuevas técnicas de ByPasss UAC según se vayan parcheando por Microsoft.
- KillDefender: Desactiva Windows Defender. 
- Netcat: Obtención de una Shell inversa con Nc. 
- BackdoorNC: Obtención de una Shell inversa con Nc, persistente con cada reinicio. 
- Screenshot: Envía una captura de pantalla a través de correo electrónico. 
- OpenWeb: Da apertura a un sitio web (Phishing, Tab Hijacking, etcétera). 
- Unlock: Desbloquear el equipo windows con la contraseña del usuario. 
- Lock: Lanza la pulsación de teclas Win + L para bloquear la cuenta de usuario, con la finalidad de no levantar sospechas en el administrador si previo al ataque había dejado bloqueado el ordenador.
Cabe destacar que estos vectores son solo unos cuantos ejemplos, puesto que el pentester puede programar sus propios payloads personalizados de acuerdo a los requerimientos de su tarea. Cualquiera de las técnicas de Hacking Windows puede ser incorporada como payload en estos ataques con troyanos físicos.

Figura 16: Libro de Hacking Windows en 0xWord
(Esta semana con 10% de Descuento)

Para esta Demo utilizaremos el primer vector, así que escribimos la palabra “Execution”, damos a la tecla Enter y comenzará el ataque en el ordenador víctima, como si lo manejáramos sentados delante de él.

Figura 17: Enviando el ataque “Execution” al equipo víctima

El ataque comienza con la ejecución de una consola Powershell, tan poderosa para el pentesting como ella sola, con privilegios elevados para poder ejecutar cualquier comando.

Figura 18: Ejecución de Powershell con privilegios elevados / Bypass UAC

Seguido de la descarga y ejecución del archivo “exec.exe”. Este fichero es el servidor de nuestro R.A.T. desde un host remoto.

Figura 19: Descarga y ejecución del RAT con Powershell

Una vez concluido el proceso anterior, solo bastará con esperar la sesión remota del equipo víctima en el panel de administración del R.A.T. para tener control total sobre ella.

Figura 20: Control de la víctima con un R.A.T. Quasar

De esta manera tan trivial, cualquiera podría tomar el control de tu ordenador en sólo cuestión de segundos, además de tener una puerta trasera física garantizada por si reinicias o formateas tu equipo.

Figura 21: Smolpion Symbiote. Explicación y demo 

Y claro, para que puedas ver el proceso completo, todo lo que hemos visto en este artículo incluida la demo explicada con la toma de control de Windows con un R.A.T. puedes verlo en este vídeo.

¡Saludos Malignos!

Autor: Raphael L. Molina (@raphael_mol)

**************************************************************************************************
- SMOLPION Symbiote: Cómo atacar equipos con un troyano físico (Parte 1 de 2)
- SMOLPION Symbiote: Cómo atacar equipos con un troyano físico (Parte 2 de 2)
**************************************************************************************************

lunes, julio 22, 2019

SMOLPION Symbiote: Cómo atacar equipos con un troyano físico [Parte 1 de 2]

Ahora el bloquear tu equipo al salir de la oficina no te salvará. Ya sea de un inocente ataque David Hasselhof o de la peligrosa infección con un RAT (Remote Administration Tool) pues hasta ahora una buena práctica para evitar ataques sobre tu ordenador personal en tu ausencia era tan simple como presionar WINDOWS + L, sin embargo ¿de qué serviría esto cuando el atacante tiene el control de tu teclado desde cualquier parte del mundo utilizando un troyano basado en hardware?

Figura 1: SMOLPION Symbiote: Cómo atacar equipos con un troyano físico [Parte 1 de 2]

Hace ya casi un año, se presentó formalmente SMOLPION, un dispositivo USB destinado a pentesters que simula un teclado físico para inyectar pulsaciones de teclas a velocidad sobrehumana, su única “limitante” hasta el momento era que el payload cargado sólo podía ser ejecutado una sola vez, además de no poder precargar múltiples payloads y ejecutarlos a placer, remotamente y a una hora deseada.

Bajo esta premisa y con la finalidad de diseñar herramientas más poderosas para el Red Team, nace SMOLPION Symbiote, un dispositivo USB que utiliza radiofrecuencia para que el atacante pueda tomar el control del equipo víctima.


Al ser conectado en el ordenador objetivo, el dispositivo se mantendrá en StandBy a la espera de las ordenes del atacante, la ventaja de esto, es que puede mantenerse conectado por tiempo indefinido a un puerto USB, ya sea como una memoria USB, como un “inocente” dispositivo USB weaponizado (como un pequeño ventilador, una lámpara o en cables como lo hace el USBNinja), como un dispositivo intermediario entre el teclado o el ratón de la computadora y el puerto USB, e incluso ser conectado desde dentro de una computadora portátil o de un ordenador de escritorio.


Esta forma de funcionar se hace con la finalidad de asegurar que siempre se mantenga adherido e indetectable a los ojos de la víctima, esperando las ordenes de quien lo controla, haciendo la perfecta alegoría a un caballo de Troya, al mero estilo de los Symbiotes de los cómics, asegurando el control remoto por parte del atacante, sin importar si la víctima reinicia el equipo, si lo formatea o si instala nuevo software antivirus. A final de cuentas ¿qué ordenador del mundo sospecha de un inocente teclado?

1.- Métodos de Control

En el ordenador víctima no hay más ciencia que conectar el dispositivo a un puerto USB (más adelante se describirán las diferentes maneras de lograr este cometido). Una vez hecho esto, el atacante podrá decantarse por 3 opciones para controlar el ordenador objetivo de acuerdo a sus necesidades.

1.1- Monitor serie

El atacante puede utilizar cualquier placa de Arduino que tenga a la mano para conectar el Emisor RF y mandar órdenes a SMOLPION Symbiote a través del monitor serial del IDE de Arduino.

Figura 4: Emisor RF conectado a Arduino UNO

Al compilar el código necesario en la placa Arduino y dar apertura al monitor serial, se mostrará un menú extremadamente amigable, en el cual solo se deberá escribir la palabra correspondiente al ataque que se desea ejecutar.

Figura 5: Vectores de ataque visualizados con el monitor serial

Cabe mencionar que, en este modo de utilización, la distancia de la que el atacante esté del ordenador víctima es crucial, ya que si no se le coloca una antena al emisor RF este tendrá un alcance limitado de aproximadamente 15 metros. Aunque eso ya es una distancia moderada para pasar desapercibido por la víctima.

Si se desea controlar el equipo víctima desde una distancia más lejana se deberá soldar una antena al emisor RF (que bien puede ser un simple cable coaxial) de este modo aumentará considerablemente la distancia a la que podemos controlar a la víctima, teniendo la posibilidad de aparcarnos fuera de su oficina. Un buen trabajo para los makers hackers que usan Arduino.

Figura 6: Libro "Arduino para Hackers: PoCs & Hacks Just For Fun"
(Esta semana con un 10% de Descuento con el cupón VERANO2019)

Pero si se requiere tener el control desde distancias mayores, es posible utilizar antenas más potentes, que incluso puedan brindar control al pentester desde 8 kilómetros, hacer uso de repetidores amplificadores de señal, de hardware especializado para trabajar con radiofrecuencia como el HackRF One o realizar una creativa combinación de todo lo anterior, pues los métodos de ataque solo están limitados por la propia imaginación.

1.2.- Con un control remoto

Para mayor comodidad, es posible hacer uso de un control remoto con antena plegable, tal como se muestra en las demos más adelante, de esta manera con solo presionar un botón, el pentester podrá ejecutar un ataque determinado en el momento que desee.

Figura 7: Control remoto con antena plegable

1.3.- Monitor Serie + Raspberry Pi + VNC

Si lo que se desea es tener el control del objetivo desde cualquier parte del mundo es posible agregar una Raspberry Pi a la ecuación. Tan solo se debe tener corriendo un sistema operativo estable como Raspbian, instalar el IDE de Arduino y tener operando la Raspberry Pi cerca del objetivo, o relativamente cerca, utilizando una antena con potencia decente.

Se sugiere una Raspberry Pi por su reducido tamaño (Aunque en las imágenes se utiliza el modelo 3, resultaría óptima la utilización del modelo Zero) y facilidad para pasar desapercibida, con miras de ocultarse en lugares inimaginables como en un enchufe, escuchando ordenes 24/7.

Figura 8: Ocultando una Raspberry Pi en un enchufe cercano al objetivo

Cumpliendo con estas condiciones, lo único que resta es acceder a la Raspberry Pi por medio de un ordenador o un Smartphone a través de VNC, dar apertura al IDE de Arduino y enviar ordenes a través del monitor serial para concretar un ataque exitoso.

2.- Métodos de infiltración

Infiltrar SMOLPION Symbiote en un ordenador víctima es tan trivial como conectar el dispositivo a un puerto USB, como si este fuera una unidad de almacenamiento, sin embargo, esto puede lograrse de maneras variadas e ingeniosas en un Ethical Hacking con la finalidad de levantar las menores sospechas en el administrador del equipo y garantizar que se mantenga adherido a él indefinidamente. A continuación, se listan algunas.

2.1.- Conexión interna a la placa madre (Motherboard)

Es posible conectar el dispositivo directamente a la placa madre del ordenador  si se cuenta con algo de tiempo extra con el equipo objetivo (entre 5 y 10 minutos), tan solo es necesario desmontar la caja de la CPU para tener acceso al conector IDC, conectar SMOLPION y volver a montar la caja, de este modo el dispositivo se mantendrá en StandBy, imperceptible a la espera de órdenes.

Figura 9: Conectores IDC para USB en la placa madre y adaptador hembra

Si por el contrario el objetivo es un computador portátil o una tableta, simplemente hay que quitar temporalmente unos cuantos tornillos cercanos a los puertos USB y conectar el dispositivo directamente (o con un adaptador si las dimensiones del equipo lo permiten) a los pines verticales del conector USB u optar por hacer uso de una placa NanoHub -de la que se hablará más adelante-.

Figura 10: Área de conexión en una computadora portátil

Ahora ya sabes por qué hay que precintar los equipos y poner una pintura de sellado en los tornillos que salte si alguien intenta manipular tu equipo. En la segunda parte completamos los métodos de infiltración y vemos cómo funciona el proceso en real.

Autor: Raphael L. Molina (@raphael_mol)

**************************************************************************************************
- SMOLPION Symbiote: Cómo atacar equipos con un troyano físico (Parte 1 de 2)
- SMOLPION Symbiote: Cómo atacar equipos con un troyano físico (Parte 2 de 2)
**************************************************************************************************