Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/whitesy7/public_html/blog/wp-content/themes/Divi/includes/builder/functions.php on line 5689
whitesuit | WhiteSuit Hacking
Tips para privacidad online Parte 2

Tips para privacidad online Parte 2

Seguimos con la parte 2
Tu móvil también…

Ya se ha hablado (y no muy bien) acerca de los servicios de mensajería instantánea y la privacidad. ¿Estará espiando alguien nuestros mensajes? No podemos saberlo, pero tenemos la posibilidad de escoger otra app más segura que WhatsApp, por ejemplo.

Por suerte existen algunas alternativas recomendadas, entre ellas:

*Privaseechat
*Wire
*Wickr Me (Como Mr.Robot )


Allá arriba también deberías…

Con el paso de los años la nube se ha vuelto imprescindible para todo, porque nos permite alojar archivos sin que ocupen espacio físico dentro de nuestros dispositivos. Pero es importante centrarse siempre en la seguridad.
Asegura tus servicios de almacenamiento en la nube. Dropbox, Google Drive, OneDrive, iCloud. Todos han sido criticados y atacados por presumir sobre seguridad pero husmear y filtrar bastante. Como alternativa:

*Recomendación de paga Seafile
*Recomendación gratuita Wuala


Cifra tus archivos locales

El principal método para que mantener a salvo tus datos e información privada es evitar que nadie tenga acceso.
Siempre es bueno mantener los archivos de tu pc encriptados, esta práctica cada vez es más popular entre los usuarios promedio y así debería continuar. Para mi la mejor herramienta y bastante popular en lo que hace es VeraCrypt aunque también es recomendada Peazip


No olvides tus contraseñas

De nada sirve haber seguido todos los pasos y tener una contraseña “1234” Creo que todos conocemos las características de una buena contraseña (numeros,mayusc,signos,etc…) Un truco que yo utilizo para ‘cifrar’ mis contraseñas y recordarlas siempre, es tomar una frase que recuerdes y colocar cada letra inicial de ella, respetando signos de puntuación
Ejemplo: “En el club de la pelea, luchas contra TODAS las cosas que odias en esta vida.” = “Eecdlp,lcTlcqoeev.”

Otra técnica que también he utilizado es escribir mi contraseña y en vez de presionar la tecla, moverme una tecla arriba y a la izquierda.

Luego de muchas contraseñas quizá necesites un administrador para ellas. Recomiendo utilizar Master Password , no se necesita sincronización ni acceso a internet. Lo que promete mantener tus contraseñas completamente seguras.

Tips para privacidad online Parte 1

Tips para privacidad online Parte 1

Mi paranoia ha aumentado entonces se me ocurrió hacer un post compartiendo lo poco que se con ustedes.

Entonces empecemos con el Post.

El tema de navegar en internet no es seguro ni mucho menos anónimo. Y el número de servicios que ofrecen seguridad para nuestra información crece a la par con el número de compañías dispuestas a vender información acerca de nuestra actividad online. La privacidad es un derecho no una característica de marketing para convencernos de descargar algún software o cambiarnos de proveedor de mail.

Utiliza VPN

Por simplifcar, las redes VPN (Red Privada Virtual) añaden una red privada sobre la red principal del usuario. Básicamente, una red VPN toma tu conexión, la cifra y la envía a otro servidor. En lugar de que tu ordenador acuda directamente a una web, primero accede a un servidor intermedio y, desde ahí, entra a la web destino. Al utilizar una VPN solo será visible tu conexión con el servidor intermedio, y este será el que de verdad ejecute las peticiones.
Usar un proveedor VPN NO TE HACE ANÓNIMO. Pero te ofrece una mejor privacidad, recuerdo que no utilizamos estas herramientas para actividades ilegales

* Recomendación de paga  Perfect-Privacy
* Recomendacion gratuita  ProtonVPN


Utiliza un navegador confiable

El navegador web es la puerta desde la que accedemos a internet. Hoy en día le dedicamos mucho tiempo a este programa, tanto en la computadora como en tu tablet o smartphone, ya que desde él tenemos acceso al correo, a redes sociales, a portales de noticias. Por eso es importante que el software que utlicemos se preocupe por nuestra privacidad.
Empecemos por desinstalar Chrome. Punto. Por la simple razón de que la gran ‘G’ siempre está mirando.

Existen mejores alternativas para navegar y además open-source.
Recomiendo:
*TOR Browser
*Brave
*UR Browser
*Firefox


Cifra tus correos

¿Cómo me aseguro de que nadie que no esté autorizado/a pueda leer el contenido de mis correos electrónicos? Necesitas enviar información privada y delicada a tus colegas o amig@s, pero sabes que una vez que los mensajes salen de tu computador, viajan por una tierra de nadie donde pierdes el control.

Existen muchas maneras de cifrar y firmar tus correos Gmail, Outlook , etc.
Aún este tipo de proveedores no son muy conocidos por ser conscientes en cuanto a privacidad. Aunque siempre puedes usar herramientas de cifrado de terceros, es recomendado cambiar el servicio.

* Recomendación de paga SmartMail
* Recomendacion gratuita ProtonMail  | MailFence


Haz búsquedas seguras

Ya dijimos que la gran ‘G‘ siempre está mirando, por lo tanto seguir usando Google como buscador en este punto sería…
Recomiendo como alternativa
Searx.me es open-source y puede llegar a ser acertado como otros buscadores populares, ya que se encarga de recopilar los resultados que arrojan otros motores de búsqueda conocidos. Sin publicidad, sin guardar tus búsquedas, sin rastreos. Otras buena alternativa es Qwant


 

Espiando a los vecinos pasivamente

Espiando a los vecinos pasivamente

¿Qué información útil puedo obtener de forma no intrusiva de mis vecinos? La meta que me marqué era poder llegar averiguar las rutinas y horarios que mis vecinos tenían, es decir, cuando andaban en casa y cuando no.

Hoy en día todo el mundo tiene wifi en su casa, y dispositivos móviles que les acompañan en su día a día, por lo que si consigo asociar qué dispositivos corresponden a cada piso, podré saber cuando están en casa o no. Por lo tanto el problema lo podemos desglosar en dos puntos a completar:

1.- Averiguar cuando un dispositivo está conectado a la red, y mantener una trazabilidad en el tiempo.

2.- Averiguar qué red corresponde a cada piso.

Esto es algo muy viejo y que varias a veces ha salido a la luz por centros comerciales que utilizaban estas tácticas para trackear a los usuarios (además de con el Wifi, antiguamente con el bluetooth). Lo mío es una simple implementación de andar por casa.

Quien está conectado a que

Los dispositivos móviles emiten contínuamente paquetes Probe Request en modo broadcast, con el fin de mapear qué redes hay alrededor. Estos paquetes Probe Requests contienen la dirección MAC del dispositivo, por lo tanto ya tenemos un elemento que nos aporta la trazabilidad necesaria de los individuos (es muy difiicl que nos vayamos a encontrar dos macs identicas).

Dentro de los paquetes Probe Requests que vayamos pescando deberemos de diferenciar dos grupos: “itinerantes” y “vecinos”. Los itinerantes son aquellas personas que simplemente pasean por la calle, y los vecinos son las personas que realmente nos interesan. Más adelante veremos cómo quedarnos sólo con la parte que nos interesa.

Para detectar las redes podemos basarnos en los paquetes Beacons y en los Probe Response. En caso de que la red esté oculta y haya alguien conectado podremos sacar el ESSID a través de los Probe Response; si no hay nadie conectado deberemos de bruteforcear el nombre, ya que de los paquetes podemos sacar el tamaño del ESSID.

Ya tenemos clientes y redes. Ahora toca averiguar quien está conectado a qué, y para ello necesitamos capturar algún paquete donde aparezcan ambos datos (cliente y AP). La respuesta son los paquetes RTS.

En estos paquetes vamos a tener la mac del dispositivo y la de AP, por lo que como previamente sabemos cuales son las macs de los AP, es trivial sacar quien está conectado a qué.

Para nuestro propósito básicamente le he añadido la capacidad de volcar cada 20 minutos la información dentro de una base de datos SQLite, de esta forma podremos tener un histórico de cuando han estado conectados los clientes, y de esta forma poder trazar visualmente los horarios de las personas. Además, a través de las direcciones mac se pueden saber los fabricantes de las tarjetas de red y a partir de ahí identificar qué moviles / ordenadores usan esas personas.

Pero no es oro todo lo que reluce. Los dispositivos móviles cuando no están en movimiento, o no están en uso, disminuyen o dejan de enviar prácticamente Probe Request con el objetivo de ahorrar batería. Se entiende que al estar sin moverse en un mismo punto las redes wifi alrededor no van a modificarse, van a ser las mismas.

Esto puede ser un problema si no lo tenemos en cuenta a la hora de representar los datos obtenidos y obtener conclusiones. De los datos observados, es fácil determinar cuando esa persona entra o sale de su casa por la cantidad de paquetes y el vacío que hay cuando abandona el edificio.

Ya hemos completado la primera parte, vayamos al siguiente punto.

¿A qué piso corresponde cada red?

Hay muchas formas de poder responder a esta pregunta. En mi caso no quería parecer un bicho (aun más) raro, por lo que descarté ir por el edifico con el portátil y la antena haciendo mediciones.

Para pasar más desapercibido opté por utilizar una aplicación móvil que hiciera las mediciones. Me decanté por “Wifi Analyzer”, que me permitía hacer capturas de la potencia de todas las redes y guardarlas con un nombre identificativo.

La idea es hacer mediciones de la intensidad de la señal cada 2 metros e ir guardando los datos ordenados en una matriz, y posteriormente analizar estos datos para establecer distancias relativas a los puntos de muestreo y así “dibujar” donde estarían los AP.

Los problemas con los que me encuentro en este caso es que la propia forma de la estructura del edificio, junto a las interferencias, hace que en ciertos puntos se falseen los datos porque la cantidad de señal que llega no es la que “debería” de llegar, aparentando que el AP se encuentra más lejos de lo que está en realidad.

Actualmente me encuentro atareado con esta última parte, pero confío en que con un tamaño muestral suficiente y utilizando el sentido común pueda llegar a buen puerto.

Espero haberos dado ideas para entretenerlos

Happy Hacking

Evitando filtros anti-XSS

Evitando filtros anti-XSS

Esta entrada se va a centrar en cómo evitar filtros para evitar ataques XSS (Cross Site Scripting). Para ello, se va a tomar como plataforma de pruebas DVWA, ya saben para no meterse en líos Como ya sabéis para instalar DVWA, nos monta  la máquina virtual y le metemos la iso de DVWA (https://github.com/nightmare-rg/dvwa-vagrant/tree/master/dvwa-1.0.8)

Seleccionando la opción de XSS reflected y ajustando el nivel de dificultad, tenemos todo listo para empezar:

Nivel low

En el nivel “low” el servidor web no aplica ningún tipo de validación de los parámetros de entrada por lo que introduciendo la típica cadena

<script>alert(“XSS”)</script> 

visualizamos el alert verificando que es vulnerable.

Una vez que se ha visto que es vulnerable, se examina el código que como se dedujo, no existe ningún mecanismo de validación de entrada:

Recomendaciones:

Para evitar todo tipo de inyección nunca se debe confiar de datos o fuentes externas y validar todo sin suponer nada, por ejemplo, que los datos esperados son los que el usuario va a introducir.

Para ello, se debe validar todos los datos de entrada, escapar o filtrar los datos no permitidos y opcionalmente sanearlos. Sin embargo, el saneamiento de datos es opcional puesto si la aplicación recibe datos que no debería podría rechazarlos y enviar un mensaje de error para que el usuario los introduzca correctamente para ser aceptados.

En este caso, en PHP se tiene una función para filtrar etiquetas no permitidas como /, <, </, script,…. Esta función es script_tags

Otra función útil para escapar los datos de entrada  antes de ser mostrados cuando el código de entrada esperado es HTML es htmlspecialchars.

Del mismo modo, se debería emplear la función trim que elimina caracteres especiales de inicio o final de la cadena sustituyéndolo por espacios en blanco. Por ejemplo, elimina tnr/

Nivel medium

Introduciendo el mismo código, ya no se ejecuta, por lo tanto, se puede deducir que se están aplicando mecanismos de validación de los parámetros de entrada.

Por lo tanto, para detectar que keywords está se realiza una batería de pruebas para identificar los posibles parámetros “prohibidos” para de esta manera, poder evitarlos.

Entrada
Salida
script Hello script
<script>
hello
script> Hello script> — Este es bueno!
<script
hello
<<script>> Hello <> — Filtra keyword script
Como se observa está filtrando el keyworsd “<script>”. Sin embargo, sabiendo que:
<<script>    devuelve    <
    script>       devuelve    <
Ya tenemos la formula de evitar el filtro:
<<script>script>alert(“XSS medium”)</script>
 
 
Análogamente a la reconstrucción del tag de script en función del filtrado, se podría incluir construir el tag de script en partes:
<scr>script>ipt>alert(“XSS DVWA”);</script>
Del mismo modo, a la reconstrucción del tag de script en función del filtrado, se podría incluir espacios en blanco en los < > para saltarse la restricción y ver si el servidor interpreta dicho código y lo ejecuta.
<<script>script>alert(“XSS medium”);</script >
 
 
De ahí el fallo que reemplaza justamente esa palabra exacta. Por lo tanto, introduciendo el código:
<script type=”text/javascript”>alert(“XSS medium”)</script>
No detecta la cadena <script> exacta y se lo “traga”
 
Otro intento típico es emplear los tag de script en mayúsculas para verificar si el servidor realiza algún tipo de saneamiento, esto es, una conversión de lso valores introducidos ya sean mayúsculas o minúsculas para su posterior tratamiento y gestión:
<SCRIPT>alert(“XSS medium”);</SCRIPT>
 
 
 
Una vez vulnerado se mira el código fuente para ver que función emplean para determinar cómo se podría mejorar.
Observando el código fuente, se aprecia que se está empleando la función str_replace para reemplazar la keyword“<script>” por un espacio en blanco.
Adicionalmente, es más que recomendable revisar el documento de OWASP para explotar XSS (https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet).
Happy Hacking
Create tu propio escaner de redes wifi

Create tu propio escaner de redes wifi

¡Hola!

Sigo entreteniendome con NodeJS y las redes wifi. En esta ocasión estaba probando  a desautenticar usuarios conectados enviando paquetes deauth, para lo cual estaba cazando las MACs con airodump-ng. Cual fue mi sorpresa cuando no me aparecía uno de mis ordenadores -el que quería echar fuera de la red- como asociado a mi AP. Como se puede apreciar en la imagen únicamente me aparece asociado 1 solo ordenador, cuando deberían de aparecerme los 3, o como mínimo otro más, pues estaba navegando por él y generando tráfico que debiera de ser detectado. Nada.

En ese momento pensé: pues si airodump-ng no me lo está pillando, probemos a hacernos un escáner a ver si lo pillamos nosotros. Por supuesto que existen muchos escáneres geniales que podrían haberme solucionado la papeleta (o incluso simplemente usando WireShark y parseando el PCAP con un script en PERL) pero la idea es utilizar algo creado por uno mismo y de esta forma seguir aprendiendo.

La única información que quiero obtener son el nombre de la red, su mac, y quién esta conectado, ya que es lo único que necesito para mandar el deauth. Entonces… ¿de donde sacamos esos datos?

Lo primero que nos debería de venir a la mente son los beacons . Básicamente son frames cuya función es indicar la presencia de un punto de acceso. Se envían de forma automática contínuamente y contienen mucha información, entre ella la MAC del AP y el ESSID con el nombre de la red – es decir, gran parte de lo que necesitábamos-.

Los beacons parece que pueden aportarnos toda la información sobre el AP y tan sólo nos quedaría buscar en otra parte quien está asociado, pero… ¿nos quedamos sólo con este frame? La respuesta es un rotundo NO. No podemos recopilar datos únicamente de los beacons porque si la red se encuentra oculta éstos van con el ESSID vacío, de tal forma que no podríamos ver el nombre de la red. Luego toca buscar dónde más aparece el ESSID.

Y nuestra respuesta está en los probe response  frames. Cuando un AP recibe un probe request, ésta va a responderle con un probe response donde vendrá el ESSID -y disfruten de esto- que no es ocultado. En los probe request también puede aparecer la red, pero no los utilizaremos porque cuando un equipo tiene guardada una red oculta, éste envía contínuamente probe request para ver si ese AP está disponible. Incluso si la red está totalmente fuera del alcance. Es decir, contínuamente está preguntando “¿Está la red Sífilis aqui? ¿Está la red Sifilis aquí?” , por lo que si utilizásemos estos frames podríamos creer que existe una red cuando en realidad no está ni cerca: simplemente hemos pillado a un ordenador preguntando.

¡Ya sólo nos queda averiguar quien está asociado a cada AP! Tras mirar unos cuantos minutos capturas de WireShark concluí que los paquetes RTS podrían ser un buen candidato del que obtener información: aparecen tanto la dirección de quien envía el paquete como de quien la recibe, por lo que tan sólo nos quedaría correlar esta información con el listado de AP que obtenemos de los beacons y probe response y mostrarla.

El resultado final es este:

Ahora sí estamos pillando los  3 ordenadores que estaban conectados en esa red. Si os fijais la tercera red que se muestra tiene el nombre vacío debido a que se trata de una red oculta (el beacon tenia el nombre vacio) pero sin embargo justo debajo aparece su nombre (0verl0ad). Ésto es debido a que ha conseguido extraer la información  de los probe response.

En caso de que no hubiese nadie mandando probe request (para que responda) no podríamos saber el nombre real de la red…pero sí la longitud del ESSID. Eso significa que podremos bruteforcearlo con probe requests hastsa que obtengamos un probe response que nos indique que el string era el correcto (este es el siguiente script que tengo en mente ).

Vuelvo a repetir lo que dice al inicio, existen múltiples escáneres que podría haber usado, la idea era simplemente jugar un rato y solventar un problema.