OSINT Ofensivo S01e01 - OSINT y RDP

7/4/2020 OSINT ofensivo s01e01 - OSINT y RDP HOGAR SOBRE MÍ OSINT OFENSIVO OSINT ofensivo s01e01 - OSINT y RDP WOJC

Views 84 Downloads 2 File size 7MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

HOGAR

SOBRE MÍ

OSINT OFENSIVO

OSINT ofensivo s01e01 - OSINT y RDP WOJCIECH 7 ABR 2020

• 11 MIN DE LECTURA

Esta es la primera parte de los tutoriales ofensivos de OSINT que cubre la preparación (técnica https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

1/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

y mentalidad), y presenta cómo con gurar un monitoreo para la vulnerabilidad de Bluekeep en hospitales usando la base de datos Shodan y Elasticsearch.

Introducción Estos tutoriales le darán una idea de las técnicas de OSINT utilizadas por los ciberdelincuentes para atacar a diferentes organizaciones y personas para cometer fraudes y ataques. No será otro sitio con un montón de enlaces y una descripción de lo que hacen, sino más bien conocimientos técnicos para analistas de seguridad profesionales con al menos algunas habilidades de codi cación y mente analítica. Me gustaría mostrar cada categoría de OSINT: redes sociales, web oscura, ltraciones, espionaje industrial / corporativo y otros similares.

Más sobre OSINT ofensivo aquí

OSINT ofensivo - Introducción Me ha fascinado la seguridad cibernética, especialmente la inteligencia de código abierto,… durante mucho tiempo y realicé muchas

• OSINT ofensivo de Wojciech • Este primer artículo de la serie se enfoca en la preparación adecuada, es decir, con gurar el entorno, reunir un par de herramientas e instalar una base de datos. Cada técnica presentada contará con el respaldo de la investigación y en esta parte analizaremos los protocolos de escritorio remoto expuestos con vulnerabilidad Bluekeep con enfoque en instituciones médicas y nancieras.

Además del artículo, mostraré algunos trucos de OSINT y RDP para encontrar máquinas particulares para propósitos especí cos de espionaje usando relleno de credenciales y búsqueda inversa de imágenes, así que comencemos.

https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

2/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

Preparación Siento que ya se ha dicho todo sobre la preparación mental para las investigaciones de OSINT y cómo debe tener una mente analítica, documentar todo y establecer relaciones. Por supuesto, cada tarea requiere un tipo de pensamiento diferente, pero al nal es el mismo enfoque. Personalmente, para mí, el enfoque de arriba hacia abajo funciona mejor, a partir de Foto de Lorenzo Herrera / Unsplash

una idea general, dividir el objetivo principal en tareas más pequeñas y centrarse en los detalles al nal.

En este caso, el objetivo principal es encontrar servicios vulnerables de PDR en instituciones médicas / nancieras que puedan contener información con dencial y nadie la haya encontrado antes. Para lograrlo, necesitamos dividirlo en tareas más pequeñas:

- Obtenga información sobre RDP expuesto - Almacenar los datos - Ejecutar controles periódicamente - Comparar datos nuevos con la base de datos Aclarar tareas más pequeñas permite elegir tecnologías especí cas para la investigación, así como fuentes de datos. Podemos pensar ahora en aspectos técnicos como qué tipo de base de datos usar (tipo, nube / local), lenguaje de programación (incluido IDE), servicios o sistema operativo. Teniendo esto en cuenta, podemos traducir nuestros objetivos a requisitos técnicos.

- Use Python y Shodan API para descargar información sobre RDP expuesto - Instalar Elasticsearch para almacenar los datos. - Utilice el trabajo cron para tareas periódicas - Nuevamente, use Python para comparar nuevos resultados con la base de datos https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

3/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

Por supuesto, hay más que eso, el siguiente paso es descubrir la mejor consulta de Shodan, el tiempo periódico y con gurar Elasticsearch. Es solo un ejemplo, pero usé este enfoque muchas veces durante las investigaciones o el desarrollo de herramientas.

Y ahora tenemos todo resuelto y podemos pasar al aspecto técnico.

Preparación técnica Esta parte requiere una terminal básica de Linux y habilidades de codi cación de Python, pero todo se explicará, ahora podemos comenzar desde la con guración de nuestra base de datos.



Elasticsearch es un motor de búsqueda y análisis de código abierto distribuido para todo tipo de datos, incluidos los textuales, numéricos, geoespaciales, estructurados y no estructurados.

La documentación hace que el proceso de instalación sea súper fácil; primero necesitamos descargar e instalar la clave de rma

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Instalar https-transport

sudo apt-get install apt-transport-https

Guardar de niciones

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

e instalarlo desde el repositorio

sudo apt-get update && sudo apt-get install elasticsearch

para encenderlo

sudo systemctl enable elasticsearch.service –now

https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

4/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

para prueba ir a

http://localhost:9200

Con guración y gestión adicional que puede encontrar aquí https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html Python es uno de los mejores lenguajes para este tipo de tareas de secuencias de comandos y un buen IDE puede acelerar todo el proceso de desarrollo y hacer nuestra vida mucho más fácil. No es que las personas que codi can en el bloc de notas no sean e cientes, pero IDE ayuda mucho a moverse libremente por el código y administrar su repositorio de una manera rápida. Mi favorito es Pycharm, crea un entorno virtual separado para cada proyecto, admite colores, múltiples terminales, historia local y muchas más funciones.

Lo que debe saber sobre este IDE son, con seguridad, los atajos de teclado. A veces, no toco el mouse durante horas durante el trabajo con Pycharm, todo se puede administrar mediante accesos directos especí cos y hace que el trabajo sea extremadamente fácil. Elijo la pareja más útil para el día a día.

2x shift – search everywhoere Ctrl + / - Comment text Ctrl + Shift + / - uncomment text Shift + f10 – run Shift + f9 – debug Ctrl + r – Replace/Find Ctrl + h – history Alt + f12 – open terminal

Puede encontrarlos en el sitio web de Jetbrains.

JetBrains: herramientas de desarrollo para profesionales y equipos JetBrains es un proveedor de software de vanguardia especializado en la creación de… herramientas de desarrollo inteligentes que

JetBrains

OSINT y Bluekeep https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

5/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

Importemos los paquetes necesarios a nuestro proyecto

from elasticsearch import Elasticsearch import requests import json import email.message import smtplib

Primero, necesitamos crear un índice llamado rdp-tracking para guardar todos los datos.

es.indices.create(index='rdp-monitoring', ignore=400)

Pycharm (izquierda) Elasticsearch (derecha)

y ahora podemos obtener información RDP de Shodan. Un par de cosas que debemos incluir

SHODAN_API_KEY = "" query = "port:3389 org:hospital" endpoint = "https://api.shodan.io/shodan/host/search? key="+SHODAN_API_KEY+"&query="+query+"&page=" cve = "CVE-2019-0708" fresh = []

Fresh es una nueva lista vacía que contendrá nuevas direcciones IP (frescas). https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

6/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

Y código para extraer hosts vulnerables a Bluekeep

try: shodan_request = requests.get(endpoint) shodan_json = json.loads(shodan_request.text) for result in shodan_json['matches']: if not exists(result['ip_str']): check_each_host = requests.get("https://api.shodan.io/shodan/host/" + result['ip_str'] + "?key=" + SHODAN_API_KEY) check_each_host_json = json.loads(check_each_host.content) if 'vulns' in check_each_host_json: if cve in check_each_host_json['vulns']: fresh.append(result['ip_str']) print("New IP:" + result['ip_str']) es.index(index="rdp-monitoring", id=check_each_host_json['ip_str'], body={"organization": check_each_host_json['org']}) else: print("IP exists") if fresh: send_notification(fresh) except Exception as e: print(e)

Realiza una solicitud de API a Shodan con la consulta "puerto: 3389 org: hospital" (no he encontrado un idiota preciso para Bluekeep), repite los resultados y luego realiza otra solicitud para examinar cada host para CVE-2019-0708. Shodan no siempre devuelve vulns en los resultados de búsqueda generales, por lo que debemos veri car cada IP por separado (

check_each_host) .

Después de eso, veri camos si hay vulnerabilidades ( vulns ) y si esta lista contiene nuestro CVE-2019-0708 . En caso a rmativo, lo estamos agregando a Elasticsearch.

es.index(index="rdp-monitoring", id=check_each_host_json['ip_str'], body={"organization": check_each_host_json['org']})



Estoy usando la dirección IP como campo de identi cación, lo estoy haciendo por simplicidad y búsqueda más fácil sin usar el ltrado de origen.

Hay alrededor de 70 resultados, veri ca solo la primera página, puede escribir código para paginar para obtener más resultados.

Hasta ahora, hemos guardado direcciones IP y organizaciones relacionadas en Elasticsearch, https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

7/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

pero si la secuencia de comandos se ejecutará la próxima vez, debe reconocer qué entradas aún no están en la base de datos. Para hacer eso, podemos escribir la función adicional "existe", es decir, usarla en la línea 5 en el fragmento anterior. def exists(ip): try: es.get(index='rdp-monitoring', id=ip) return True except: return False

Solo intenta recuperar el documento en función del índice y la ID, que en nuestro caso es la dirección IP. Si la entrada no existe, arroja un error 404, así podemos "buscar" sin ltros.

La última parte es estar actualizado y recibir un correo cada vez que aparece un nuevo hallazgo, para lograr esto necesitamos escribir otra función que use una cuenta de Gmail para noti carnos sobre nuevas máquinas.

def send_notification(ips): body = "New IPs in hospitals with Bluekeep
" ips_text = "" for ip in ips: ips_text = ips_text + "https://beta.shodan.io/host/" + ip + "
" msg = email.message.Message() msg['Subject'] = 'RDP Monitoring' msg['From'] = "@gmail.com" msg['To'] = "@gmail.com" msg.add_header('Content-Type', 'text/html') msg.set_payload(body + ips_text) gmail_user = "@gmail.com" gmail_password = ""

try: server = smtplib.SMTP_SSL('smtp.gmail.com', 465) server.ehlo() server.login(gmail_user, gmail_password) server.sendmail(msg['From'], [msg['To']], msg.as_string()) server.close() print('Email sent!') except Exception as e: print(e) print('Something went wrong...') pass

Ese es el código más simple encontrado en algún lugar en línea y modi cado para admitir contenido de texto / html. Básicamente, primero creamos un texto informativo con nuestras IP nuevas (guardadas en una lista nueva ) y lo enviamos a una dirección de correo electrónico

https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

8/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

especí ca. Debe poner su correo electrónico y contraseña en el código y también iniciar sesión en su cuenta de gmail en el navegador desde esta misma máquina para que funcione. Después de ejecutarlo, aparecerán nuevos registros en Elasticsearch y debería verse así

Ejemplo de trabajo para hospitales.

Puede poner el script en cron, agregarlo a su monitoreo o combinarlo con otros en su arsenal.

Correo electrónico de la función send_notification



No solo los hospitales son un objetivo precioso, la consulta "puerto: 3389 org: banco" le

https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

9/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

mostrará todos los RDP en el puerto 3389 en las instituciones nancieras, que tienen "banco" en su nombre. Yendo un paso más allá, el uso de la búsqueda de texto libre y palabras como "scada" mostrará posibles sistemas de control industrial y comprometer esta caja no tiene precio para algunos actores de amenazas.

Relleno de credenciales y RDP El relleno de credenciales generalmente recuerda el acceso a otros servicios debido a las credenciales de la víctima comprometida. En la mayoría de los casos después de un volcado masivo de contraseñas, los ciberdelincuentes prueban este mismo par de nombre de usuario y contraseña en otras plataformas populares como Facebook, Spotify, Net ix, etc. Fue el tema de mi investigación del último año, puede leer más sobre el relleno de credenciales a continuación.

Relleno de credenciales avanzado con PEPE El script analiza el correo electrónico de Pastebin: la contraseña volca y recopila… información sobre cada dirección de correo

• OSINT ofensivo de Wojciech • El Protocolo de escritorio remoto no es diferente, si alguien usa la misma contraseña en cada servicio, debe ser consciente de que afecta a todas sus personalidades y cuentas de Internet, incluso las más personales, como el acceso a la computadora personal a través de RDP expuesto. Shodan utiliza OCR (Reconocimiento óptico de caracteres) para extraer texto de imágenes, e incluye nombres de usuario y versiones de Windows en algunos casos.



Cuando busque RDP para una empresa especí ca y no haya tenido suerte en su red, no olvide utilizar el método de búsqueda de texto libre, la máquina puede estar en una nube y expone el nombre de la organización en el campo de nombre de usuario o advertencia de seguridad.

Los APT usan dos tácticas para obtener acceso a la red: dirigirse a personas sin conocimientos técnicos y de seguridad de TI, como los departamentos de recursos humanos, para ejecutar su https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

10/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

carga maliciosa oculta sin ser detectados y luego elevar los permisos. Dirigirse a personas de alto per l (CEO, CISO, Alta Dirección) para obtener acceso casi automáticamente a documentos con denciales, depende de los permisos de las víctimas. A menudo, los ciberdelincuentes envían correos electrónicos de phishing a la alta gerencia, como analistas e ingenieros superiores, en sectores precisos: médico, gubernamental, educativo o de ingeniería, pero solo en ataques selectivos y utilizando phishing.

HaveIBeenPwned y RDP Para veri car si vale la pena hackear algunos RDP en función del nombre de usuario expuesto, necesitamos activar OSINT y habilidades de correo electrónico.

Dirección de correo electrónico como nombre de usuario

Primero, busquemos algunos RDP con correo electrónico como cuenta, puede usar la consulta "puerto: 3389 has_screenshot: verdadero ' gmail '" y cambiar gmail a cualquier otro proveedor https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

11/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

o compañía de correo electrónico. Desafortunadamente, por razones desconocidas, no puede buscar el carácter "@" que le daría a todas las posibles direcciones de correo electrónico.

El siguiente código extrae las direcciones de correo electrónico de Gmail de los PDR expuestos

query = "port:3389 has_screenshot:true gmail" endpoint = "https://api.shodan.io/shodan/host/search? key="+SHODAN_API_KEY+"&query="+query+"&page=" req = requests.get(endpoint) req_json = json.loads(req.text) for match in req_json['matches']: text = match['opts']['screenshot']['text'].split("\n") for line in text: if "@" in line: print(line)

La búsqueda rápida de una de las direcciones de correo electrónico de la lista devuelta (y la captura de pantalla anterior) revela que se vio comprometida en 7 infracciones diferentes.

Eso es mucho, e incluso si la contraseña fuera única pero no se generara al azar, uno puede encontrar el esquema y adivinar su acceso al RDP.

¿Pero vale la pena explotar esta máquina para obtener material con dencial? Necesitamos investigar quién es el propietario de la dirección de correo electrónico. La búsqueda rápida en Google revela que él es un ingeniero [ELIMINADO] y se graduó de [ELIMINADO].

https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

12/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

Esa es una forma en que puede dirigirse al propietario o la cuenta de máquinas RDP expuestas, incluye búsqueda manual por dos razones: OCR no es preciso y a veces contiene caracteres extraños, el correo electrónico incluye "..." en lugar del dominio de nivel superior, pero eso es porque RDP sí no muestra el nombre de usuario completo si está inactivo. Al nal, los resultados deben revisarse manualmente para determinar posibles objetivos valiosos.

El currículum de acceso público incluye el formulario de correo electrónico RDP

Búsqueda inversa de imágenes y RDP Esa también es una técnica poco común que no he escuchado a nadie usar, es un trabajo tedioso, pero puede dar sus frutos y con rmar las dudas nales. Si la máquina no revela ninguna dirección de correo electrónico y no está vinculada a ninguna organización, la imagen de per l del usuario puede ayudarlo a determinar el propietario de la máquina y el valor potencial en términos de acceso o documentos clasi cados.

Lo que necesitamos es cortar la imagen de per l de la captura de pantalla RDP y ejecutarla en uno de los servicios de búsqueda de imágenes inversas.

https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

13/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

En este caso tuve que veri car los servicios de pareja para obtener resultados diferentes. Las personas a menudo, al igual que las contraseñas, reutilizan su foto de per l entre diferentes servicios, especialmente LinkedIn. Es uno de los métodos para rastrear a los usuarios, pero esta vez ayuda a limitar nuestra búsqueda a objetivos especí cos.

Misma foto de perfil de Twitter y cuenta RDP arriba

Resultados de ejemplo de búsqueda de imagen inversa de cara de cuenta RDP

Los nombres de usuario RDP en formato de nombre y apellido son más fáciles de investigar, debe buscar cuentas de redes sociales y menciones en Internet para esta persona, sin https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

14/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

embargo, el nombre y el nombre no siempre son únicos, pero las imágenes de per l sí lo son. En estos dos casos, las imágenes se reutilizaron en muchas plataformas de redes sociales, por lo que fue fácil identi car a las personas detrás de estas cuentas como Senior Product Owner y CEO de la compañía nanciera.

Conclusión OSINT es ampliamente utilizado no solo por la policía y los investigadores, sino también por los cibercriminales. Por cibercriminales me re ero a los actores que se dirigen a personas y empresas especí cas para obtener la mayor ganancia posible: documentos con denciales, datos de clientes, propiedad intelectual o simplemente dinero. Conociendo sus técnicas puedes defenderte y no ser un blanco fácil, al menos.

Para los investigadores, el monitoreo de las máquinas Bluekeep expuestas permite observar las próximas compañías comprometidas potenciales y predecir los titulares de los periódicos.

Al proporcionar tutoriales y compartir conocimientos, espero cubrir parcialmente mis facturas médicas. Si le gusta mi trabajo y usa mis herramientas, por favor done.

Etiquetas: OSINT ofensivo , Recon

Compartir este:   

Wojciech 

OSINT ofensivo - Introducción

https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

15/16

7/4/2020

OSINT ofensivo s01e01 - OSINT y RDP

What do you think? 1 Response Upvote

Funny

Love

Surprised

Angry

Sad

0 Comments

🔒 Disqus' Privacy Policy

axobiz

t Tweet

 Recommend

1 

Login

Sort by Best

f Share

Start the discussion… LOG IN WITH

OR SIGN UP WITH DISQUS ?

Name

Be the first to comment.

Sobre nosotros

Páginas

OSINT ofensivo por @the_wojciech

Sobre mí

 Nube de etiquetas

Contacto

DanderSpritz

Cuidado de la salud LeakLooker Recon

bS53b2pjaWVjaEBwcm90b25tYWlsLmNo

Red profunda

Fugas

ICS

Kamerka

Malware

OSINT ofensivo

Medios de comunicación social

© 2020 OSINT ofensivo.

https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/

16/16