Hola Visitante

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Administación BDL

Páginas: [1] 2 3 ... 5
1
Noticias del Blog / Liberado código SWifi Keygen y Airwin 2
« en: Abril 18, 2017, 10:07:50 am »

Buenos días,


Tras varios meses sin tiempo para actualizar estos softwares he decidido liberar el código para que la comunicad me ayude a mantenerlo.


El proyecto Swifi se encuentra en medio de una refactorización para poder segmentar los generadores de claves.


https://github.com/berni69/SwifiKeygen


El proyecto de Airwin2 tiene algunos cambios gráficos a medio crear, además de haber añadido algunas opciones que no están publicadas actualmente:


https://github.com/berni69/Airwin2


Saludos,



2
Noticias del Blog / Creando shells inversas
« en: Abril 08, 2017, 06:12:29 pm »

Hace unos días en la casa de campo me instalaron un router 4G al que no tengo acceso de administrador, para realizar cualquier cambio sobre el dispositvo tengo que llamar a la operadora de internet y que me lo hagan remotamente (incluso un cambio de password del WIFI, IBRED atenta contra la LOPD…). Mi intención era dejar una raspberry pi realizando algunas tareas domóticas y de monitorización sencillas, al parecerme un engorro tener que estar haciendo llamadas para que me abran distintos puertos, me reserven una entrda en el dhcp,… decidí buscar una solución alternativa. Esto funcionaría también estando detrás de un firewall con los puertos capados, o en una red NAT sin forwarding de puertos.


En este post se tratará el tema: levantar un túnel inverso y hacer forward de un puerto local a un puerto remoto a través del protocolo SSH. Para ello, es necesario tener un segundo equipo en el que poder hacer login SSH sin credenciales (con claves RSA).  Para los que no sepáis que es un túnel SSH, os recomiendo la entrada que publicqué hace un tiempo sobre ello ( Túnel SSH Raspberry )


El siguiente paso es configurar el demonio SSH de la máquina remota para que permita hacer keepaliving de la conexión (permitir alargar el tiempo máximo de conexión sin intercambiar información). Para ello debemos modificar el archivo



/etc/ssh/sshd_config

Añadir/modificar las siguientes líneas:



TCPKeepAlive yes
ClientAliveInterval 30
ClientAliveCountMax 99999
GatewayPorts yes

Y reniciar el servicio SSH


Una vez tenemos configurado el demonio SSH y haber intercambiado las claves públicas entre los equipos es lo único que hay que hacer es ejecutar:



ssh -f -N -R 10000:localhost:22 @ -p 22

Este comando redigirá el puerto 22 local, al puerto 10000 de la máquina remota. Si quisiéramos hacer login en la Raspberry podríamos hacer un SSH user@equipo_remoto -p 10000, en realidad esto estaría redirigiendo el tráfico a través de un túnel al puerto 22 de la raspberry. Se podría usar con cualquier otro puerto 80,443,…


Como mi idea era dejar la Raspberry encendida sin preocuparme si se reinicia y quiero acceder monté un pequeño script en Bash para que lo ejecutara cron:



#!/bin/bash

REMOTE_PORT="10000"
LOCAL_FORWARDED_PORT="22"
REMOTE_SSH_PORT="22"
REMOTE_HOST="host_remoto"
REMOTE_USER="user"

PID=$(ps -ef | grep "${REMOTE_HOST}" | grep -v grep | awk '{print $2}')

if [ "" == "$PID" ]; then
    echo "[+] Excecuting reverse ssh connection"
    ssh -f -N -R "${REMOTE_PORT}:localhost:${LOCAL_FORWARDED_PORT}" "${REMOTE_USER}@${REMOTE_HOST}" -p "${REMOTE_SSH_PORT}"
else
    echo "[-] The connection was stablished before"
fi


La entrada de crontab debe tener la siguiente forma:



* * * * * [ -x /root/reverse_ssh.sh ] &&  /root/reverse_ssh.sh &> /tmp/reverse_ssh.log

Si vamos al servidor remoto deberíamos poder ver



user@host_remoto:~$ netstat -an | grep -i 10000
tcp        0      0 0.0.0.0:10000           0.0.0.0:*               LISTEN    
tcp6       0      0 :::10000                :::*                    LISTEN    

Si queremos usar el servicio al que estamos haciendo forwarding (en este caso SSH) podríamos abrir una shell contra el puerto 10000:



user@host_remoto:~$ ssh root@127.0.0.1 -p 10000
The authenticity of host '[127.0.0.1]:10000 ([127.0.0.1]:10000)' can't be established.
ECDSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:10000' (ECDSA) to the list of known hosts.

The programs included with the Kali GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Apr  8 11:25:42 2017 from ::1
root@raspberry:~#

En este caso veríamos que la shell está funcionando.



3
Noticias del Blog / Limpiando \Windows\Installer
« en: Agosto 23, 2016, 12:11:59 pm »

Desde que instalé windows en mi equipo he visto que la carpeta del sistema C:\Windows\Installer crecía y crecía a medida que iba pasando el tiempo,..


Este comportamiento puede que para la mayoría de personas no sea un problema, pero en los equipos con una partición de sistema reducida (discos ssd, hostings vps,..) o en tablets puede llegar a colapsar el equipo.


Tras pasar CCleaner y varias herramientas más de liberación de espacio esa carepta seguia ocupando alrededor de 50GB, según Microsoft, esta carpeta contiene copias de seguridad de librerias y archivos del sistema que usan los instaladores y desinstaladores de las apliaciones del equipo.


Cuando una aplicación se desinstala es posible que no se eliminen correctamente este tipo de archivos, por lo que van quedando restos y la carpeta va creciendo.


Navegando un poco encontré la herramienta patchcleaner que busca archivos huerfanos y los elimina.


Se puede descargar de:


http://download.cnet.com/PatchCleaner/3000-2094_4-76399133.html?part=dl-10218687&subj=dl&tag=button


Con esta aplicación pude eliminar 30Gb de esa carpeta dejando espacio disponible para mis documentos y archivos.


Espero que os sirva de ayuda



4
Noticias del Blog / Tratando logs con awk
« en: Junio 29, 2016, 07:41:56 pm »

Hoy en el trabajo me he encontrado con una problemática bastante común cuando tratamos de filtrar logs: mucha información que no nos interesa.


Para solventar este problema, habitualmente, la primera aproximación sería con grep y cut pero habitualmente se quedan cortos ya que es complicado usarlos para filtrar por fecha/hora.


En este ejemplo se usará un archivo de log del estilo



2016/06/29 17:10:35.838:Fatal error core dumped
2016/06/29 17:15:35.838:Fatal error core dumped
2016/06/29 17:20:35.838:Fatal error core dumped
2016/06/29 17:30:35.838:Fatal error core dumped

Para poder filtrar por hora, podemos usar awk, en el siguiente script contaremos el numero de líneas que hay en un intervalo de tiempo determinado (por defecto, los últimos 15 min).



#!/bin/awk -f

BEGIN {

if(minutos==""){minutos=15 }
    umbral = minutos *60  # Miramos los ultimos N segundos del log
    now = strftime("%H:%M:%S",systime())
    counter=0;
    debug=0
 }
{
    split($2,chunks,".");
    hour=chunks[1];
    m=split(hour,w,":")
    n=split(now,t,":")
    FIRSTTIME= (t[1]*3600) + (t[2]*60) + t[3]
    SECONDTIME= (w[1]*3600) + (w[2]*60) + w[3]
    DIFFTIME=(FIRSTTIME - SECONDTIME)
    if (debug == 1){
        printf("%s|%s|%s\n",FIRSTTIME,SECONDTIME,DIFFTIME)
    }
    if(DIFFTIME < umbral ){
        counter++;
    }
}
END { print  counter }


Para ejecutarlo bastaría con ejecutar:



cat mylog.log | awk -f script.awk -v minutos=8

Y el resultado sería



echo '2016/06/29 17:10:35.838:Fatal error core dumped
2016/06/29 17:15:35.838:Fatal error core dumped
2016/06/29 17:20:35.838:Fatal error core dumped
2016/06/29 17:30:35.838:Fatal error core dumped' | awk -f /var/www/scripts/countSuperacionesAma.awk -v minutos=8
1

Pues de este modo tan sencillo podemos tratar logs en función del tiempo.



5
Noticias del Blog / Matar un proceso en Windows
« en: Septiembre 07, 2015, 09:16:59 pm »

Esta tarde un compañero me ha pedido si conocía si se podía matar un proceso dependiendo de la RAM que consumía y relanzarlo sin utilizar nada más que no fuera BATCH en Windows XP,… si señores BATCH :)


Pues evidentemente le dije que no lo sabía pero que lo investigaría. Y este ha sido el resultado, este script mata cualquier cmd.exe que consuma más de 4000Kb de RAM.



@echo off
set process=cmd.exe
set memLimit=4000
tasklist /FI "IMAGENAME eq %process%" | findstr  %process% > tmp
for /f "tokens=5" %%x in (tmp) do set memUsage=%%x
echo "Memusage %memUsage%"
if %memUsage% gtr %memLimit% goto killme
goto end
:killme
taskkill /f /FI "IMAGENAME eq %process%"
%process%
:end
echo "fin"
del tmp

Sé que se puede mejorar el uso de archivos temporales pero.. como le dije a mi compñero BATCH no es mi fuerte



6

En este post se va a tratar el problema del underscan y el overscan que sufren algunas tarjetas de vídeo al conectarse a pantallas de alta definición habitualmente por HDMI.


Este tipo de problemas generan una reducción del espacio efectivo de la pantalla (underscan). Comprime la imagen y al rededor genera un marco negro no permitiendo aprovechar el 100% de la pantalla.


El overscan es el problema contrario expande la imagen y por esta razón deja de caber en la pantalla.


Si tenemos una tarjeta ATI, desde el ATI Catalyst Center se puede modificar este comportamiento, siempre que no tengamos Windows 10 y una tarjeta antigua o sin soporte. En mi caso era una ATI HD4650.


Si estás en este caso, debemos iniciar el editor de registro (regedit.exe). Lo más sencillo es desde el menú ejecutar (Winkey + R). Una vez tenemos el regedit abierto, debemos dirigirnos a la rama:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\


Apareceran varios identificadores (GUID) como el siguiente:

Captura Regedit Video


Debemos desplegarlos y buscar los que contengan las carpetas 0000 y 0001. Una vez desplegado se deben buscar las claves que coincidan con la siguiente estructura: “DALR6 DFPXXXXxYYYYx0xFF”


Dónde:

XXXX= Resulución horizontal

YYYY= Resolución vertical

FF= Frecuencia de refresco


En mi caso la entrada se llamaba: “DALR6 DFP1920x1080x29”


Conociendo la resolución es fácil encontrar estas claves ya que el regedit tiene un buscador que busca en el nombre de las claves.


Una vez encontradas las claves a editar, es conveniente realizar una copia de seguridad de las mismas. Para ello, nos dirigimos al menú archivo->exportar y exportamos la clave.


El siguiente paso es editar su contenido haciendo doble click en ellas y sustituyendo los valores distintos a 00 por 00.


Si queremos comprobar que el cambio ha ido bien, basta con cambiar la resolución de la pantalla afectada y volver a poner la original. Si todo ha ido bien, deberían haber desaparecido los problemas con el underscan y el overscan



7
Noticias del Blog / Tunnel SSH con Raspbian y BitviseSSH.
« en: Agosto 21, 2015, 01:59:52 pm »

Buenos días,


¿Qué es un túnel ssh?


Se conoce como túnel o tunneling a la técnica que consiste en encapsular un protocolo de red sobre otro (protocolo de red encapsulador) creando un túnel de información dentro de una red de computadoras.


En nuestro caso consiste en encapsular información HTTP/TCP/IP sobre el protocolo SSH que va cifrado.


SSH tunel


¿Qué beneficios aporta?


Al ser ssh un protocolo que cifra la información impide que usuarios no autorizados puedan ver el tráfico encapsulado.



  • Se puede utilizar para securizar las conexiones en una red no segura.

  • Para saltarse las reglas del firewall de una red.

  • Para conectarse a un equipo que exista al otro lado del túnel.


Configuración del servidor ssh

Para poder montar un túnel ssh primero debemos configurar un equipo con un daemon ssh activo. En este tutorial utilizaremos una Raspberry PI con Raspbian como servidor SSH. Si no hemos instalado el servicio SSH la primera vez que se inicia Raspbian, podemos hacerlo de la siguiente manera:



sudo apt-get install ssh
sudo /etc/init.d/ssh start
sudo update-rc.d ssh defaults

Para asegurarse de que podemos enrutar tráfico por nuestro servdidor ssh, debemos asegurarnos de que la opción AllowTcpForwarding está activa. Para ello editaremos el archivo de configuración de ssh: /etc/ssh/sshd_config



sudo nano /etc/ssh/sshd_config

Con estos comandos tendremos activo el servidor ssh y arrancando cada vez que se inicie Raspbian (si se usa cualquier otra distribución en base debian también sirven).


El siguiente paso es abrir los puertos del router para que permita llegar el tráfico ssh hasta el servidor ssh. Una buena solución para no lidiar con el dhcp es reservar la MAC de la raspberry en la tabla de dhcp consiguiendo que así le asigne siempre la misma dirección IP.


En este punto se pueden configurar usuarios sobre el server ssh pero eso lo dejo para más adelante. Con el usuario pi y la contraseña que hayáis definido debería bastar. Para poder acceder al servidor, debemos conocer la ip del pública del router de casa. Si no sóis muy diestros en la configuración del router, siempre podéis visitar la página:


http://www.cualesmiip.com/


Para provar si el servidor ssh está disponible, podéis utilizar putty (si estáis en windows) y conectaros por ssh a la ip que proporciona la página anterior. si estáis en linux, bastaría con ejecutar:



ssh <user>@<ip>

Si todo ha ido bien, debería pedir password, en caso contrario alguno de los pasos anteriores no se ha realizado correctamente.


Para solucionar el tema de tener una ip pública dinámica, existen soluciones, como no-ip que permite asignar un nombre a tu ip y actualizar esa referencia cada vez que la ip cambia.


Levantar el túnel en Windows

He probado a levantar los túneles con softwares distintos entre ellos se encuentra Putty y BitviseSSH, el que más me ha gustado ha sido BitviseSSH ya que su configuración es más sencilla además de poderse ejecutar en segundo plano.


El primer paso para configurar BitviseSSH es configurar la sesión ssh. En la pestaña login debemos configurar los campos:



  • Host: IP pública del router de casa/host no-ip.

  • Username: Usuario con el que vamos a logearnos, Si has usado raspbian lo más normal es usar “pi”.

  • Password: Password del usuario anterior.


Configuración login BitviseSSH


Para finalizar la configuración del túnel debemos dirigirnos a la pestaña services y activar el servicio “SOCKS/HTTP Proxy Forwarding” tal y como se muestra en la siguiente imagen


Activando el proxy forwarding.


Una vez configurado ya podemos hacer click en login en nuestro servidor. Como podeiss observar, en la zona inferior se observan las peticiones que se han hecho a través del proxy.


Configuración de navegadores


Configuración individual del proxy en Firefox:


Para poder configurar el navegador Firefox, debemos dirigirnos a Opciones->Avanzado->Conexión y hacer clik en el botón configuración. Una vez hecho click, debemos configurar el proxy de la siguiente manera:


FirefoxOpciones


Configuración individual del proxy en Chrome:


Para configurar chrome, se debe editar el acceso  directo desde el cual lo lanzamos. Para ello nos situamos sobre el icono del Chrome y hacemos click en propiedades.  En el cuadro de texto que pone destino, se debe añadir:



--proxy-server="socks5://127.0.0.1:8080" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE 127.0.0.1"

Quedando una ruta como la siguiente:



"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --proxy-server="socks5://127.0.0.1:8080" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE 127.0.0.1"

chrome


Configuración para Windows (incluído IE)


Configurar el proxy en IE implica cambiar el proxy del sistema, por lo que si están por defecto los otros dos navegadores cogerán por defecto este.


Para configurar el proxy del sistema debemos hacer click en Inicio->Ejecutar y escribir INETCPL.CPL


Una vez hayamos hecho click en ejecutar aparecerá una ventana con la configuración de internet del sistema. Una vez abierta, debemos dirigirnos a la pestaña conexiones y hacer click en “Configuración LAN”


Una vez allí, hay que marcar a casilla “Usar proxy para la LAN”. Una vez hecho esto se deben abrir las conexiones avanzadas y configurar el proxy Socks de la siguiente manera:


IE


Y añadir a excepciones la dirección 127.0.0.1.


De este modo podemos tenr una navegación segura a traves de un túnel ssh.



8

Buenos días a todos,


Desde hace unos días estoy trabajando en la automatización de tareas repetitivas que consumen mucho tiempo. Una de las tareas era generar unos informes desde una máquina ACS de CISCO, esta máquina genera internamente el informe de usuarios conectados cada día a la red Wireless pero yo necesita obtener esos datos para introducirlos en un Excel. Por eso me puse en contacto con la gente de cisco pero sus ingenieros me contestaron que eso era una tarea imposible y que si lo quería tenía que cambiar el aparato entero.


Investigando un poco la web que generaba el informe vi que obtenía la información de la URL:


https://x.x.x.x/acsview/LoadTopNAuthenticationsPortlet.do?protocol=RADIUS&trend=ACS&timerange=LAST7DAYS&count=5&status=PASSED


donde x.x.x.x es la url del ACS.


Mi primera opción para descargarmelo fue usar C# con un HttpWebRequest pero al estar tras una página de login un poco extraña me fallaba ya que hacía varias redirecciones y no me guardaba las cookies correctamente entre la petición de login y la de descarga la información.


La segunda opción, también en C# fue usar el componente WebBrowser pero sin más… se me presentaron dos problemas:



  • En las versiones nuevas de IE no se pueden eliminar los cartelitos de advertencias de seguridad si el cert no es  válido

  • IE convierte el XML en HTML para darle formato, por lo que se obtienen los datos mezclados con tags HTML y JS


Advertencia SSL IE


Por suerte navegando por internet encontré un usuario que decía que para hacer un scrapping (minería de datos web) sencillo lo mejor era mechanize en python, así que decidí probarlo y la verdad es que me sorprendió lo rápido que pude alcanzar mi meta con esta librería. A continuación os explicaré el código utilizado:


Definición de imports y funciones utilizadas por el script para la creación de logs y paths:


import mechanize
import cookielib
import xml.etree.ElementTree as et
import xml.etree.cElementTree as et
import lxml.etree as et
import openpyxl
from openpyxl import load_workbook
from win32com import client
import win32com.client, types, pythoncom, sys, os, string
import getopt, os, sys, shutil,time
import ssl
import traceback
def cutit(s,n):
return s[n:]
def thisYear():
return str(time.strftime("%Y"))
def thisMonth():
return str(time.strftime("%m"))
def logError(errCode,msg):
f = open("C:\\LOGS\\"+os.path.basename(__file__).replace(".py",".txt"), 'w')
f.write(errCode+";"+str(msg).replace("\r\n","").replace("\n",""))
print str(msg)
f.close()
sys.exit(int(errCode))

La línea de código ssl._create_default_https_context = ssl._create_unverified_context permite saltarse la verificación de certs caducados y autofirmados que IE no permitía.



debug = False
ssl._create_default_https_context = ssl._create_unverified_context
try:
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
workbook_path="c:\\misinformes\\"
if not os.path.exists(workbook_path):
os.makedirs(workbook_path)
workbook_filename= "informe.xlsx"
workbook_new = "plantilla.xlsx"
ACS01="B"
ACS02="C"
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

# Follows refresh 0 but not hangs on refresh &gt; 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

En el código anterior se han creado la variable Browser de mechanize y se le ha asignado un contenedor de cookies, además de haber añadido las opciones de navegación de los headers



# Want debugging messages?
br.set_debug_http(debug)
br.set_debug_redirects(debug)
br.set_debug_responses(debug)
br.open('https://x.x.x.x/login.jsp')
# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

También se puede ver que está descargando en cada momento la librería mechanize y el como se maneja el user-agent. Del mismo modo se podrían añadir headers adicionales.


En el siguiente código viene la “chicha” del login, primero debemos seleccionar el nº de form que vamos a utilizar para logearnos, para saber el nº de form que se va ausar se pueden imprimir accediendo a la colección br.forms(), el siguiente paso es saber que campos componen el formulario. En este caso se me pedía el campo j_username y j_password. Una vez logeados, ya podemos descargarnos la información de la web que queramos del dispositivo. En este caso la web venía entre unos tags de script y unos div que mostraba una advertencia de flash. Por eso se trata la información recibida y se elimina.




for f in br.forms():
print f
br.select_form(nr=0)
br.form['j_username']='myAdmin'
br.form['j_password']='123456'
br.submit()
br.open('https://x.x.x.x/acsview/LoadTopNAuthenticationsPortlet.do?protocol=RADIUS&amp;trend=ACS&amp;timerange=LAST7DAYS&amp;count=5&amp;status=PASSED')
xmltext=br.response().read()
##Formateamos el XML quitamos comentarios y lineas en blanco
ind = xmltext.rfind('',0)
xmltext=cutit(xmltext, ind+11).replace("\r\n","").replace("\n","")[:-12]
print xmltext

Para finalizar tenemos el tratamiento de XML con python y la inserción dentro de un Excel. Además al finalizar el script mediante el propio excel convertimos xlsx a pdf mediante las interops de office.



tree = et.fromstring(xmltext)
filenames =[]
for row in tree.getchildren():
SnapDate = row.findall('SnapDate')[0]
print SnapDate.text
dates=SnapDate.text.split("/")
acs01 = row.findall('acs01')[0]
print acs01.text
acs02 = row.findall('acs02')[0]
print acs02.text
filename1=workbook_path+"20"+dates[2]+"."+dates[0]+" "+workbook_filename
print "filename:"+filename1+"\n"
if os.path.exists(filename1):
print "Opening:"+filename1+"\n"
wb = load_workbook(filename1)
else:
wb = load_workbook(workbook_path+workbook_new)
ws1 = wb.active
idx=str(int(dates[1])+2)
ws1[ACS02+idx]=int(acs02.text)
ws1[ACS01+idx]=int(acs01.text)
wb.save(filename = filename1)
if not filename1 in filenames:
filenames.append(filename1)
##Creacio dels PDF desde un EXCEL
for filename in filenames:
print "Creating pdf:"+filename.replace(".xlsx",".pdf")+"\n"
xlApp = win32com.client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open(filename)
ws = books.Worksheets[0]
ws.Visible = 1
ws.ExportAsFixedFormat(0, filename.replace(".xlsx",".pdf"))
xlApp.ActiveWorkbook.Saved = True
xlApp.ActiveWorkbook.Close
xlApp.Quit()
except Exception, e:
logError("-1",traceback.format_exc())
logError("0","OK")

Esta librería no os servirá en todos los casos ya que no permite ejecutar JS y hay que que utilizan JS para las autenticaciones,.. pero para tareas sencillas es más que suficiente.


Espero que este os haya sido de ayuda =).



9

WPSPIN es una aplicación para dispositivos móviles como smartphones y tablets que trabajan con el sistema operativo Android. Esta herramienta nos permite comprobar la seguridad de nuestra red inalámbrica atacando el WPS (Wi-Fi Protected Setup) de nuestros routers con el fin de conocer si somos vulnerables a ataques por PIN predeterminado, diccionario o fuerza bruta.


WPSPIN lo ha desarrollado en su totalidad nuestro amigo Buckynet, incorporando algoritmos descubiertos por investigadores de seguridad, y adaptando herramientas existentes en Linux para Android. Las funcionalidades principales son el escáner de redes inalámbricas Wi-Fi, generador de PIN por defecto para routers con WPS activado, y conexión a las redes abiertas.


Respecto al escáner de redes inalámbricas, tenemos disponible un escáner automático y uno normal a petición por tipos de redes a buscar (cifrado, con WPS activado o desactivado, señal etc).


Las novedades de la versión WPSPIN v1.3 son las siguientes:


Incorporación de los algoritmos originales de ComputePIN, easyboxPIN y D-Link.

Se ha añadido un generador de PIN por defecto de los routers conocidos como los del operador Movistar, invocando a la configuración del Wi-Fi, wpa_cli, Bully, Reaver y Reavermod.

Se ha incorporado un generador de cliente WPA a través de la línea de comandos para poder interactuar con wpa_supplicant a través del wpa_cli. *Necesario ROOT para esta funcionalidad.

Generador de la instrucción de ejecución para Bully, Reaver o Reavermod, permitiendo la ejecución directa en la aplicación bcmon o por la aplicación Terminal. *Necesario ROOT, modo monitor y tener instaladas las aplicaciones bcmon y Terminal.

Permite introducir el BSSID para generar un PIN por defecto si existe en los algoritmos incorporados (formato de introducción de BSSID XX:XX:XX:XX:XX:XX).

Introducción manual del PIN para su comprobación a través de los métodos disponibles (Wi-Fi, wpa_cli, Bully, Reaver y Reavermod). Asimismo también se permite la introducción del PIN en formato de 7 u 8 dígitos.


Para descargar WPSPIN v1.3 simplemente tenemos que entrar en este enlace (http://adf.ly/JTo3V), asimismo os recomendamos visitar el blog WPSPIN donde encontraréis toda la información sobre este proyecto y también en el blog de Buckynet donde tenéis información sobre otras herramientas de seguridad inalámbrica Wi-Fi para Android.


Fuente: http://www.redeszone.net/2015/07/09/wpspin-v1-3-para-android-ya-disponible-comprueba-la-seguridad-wi-fi-de-tu-router



10
Noticias del Blog / Error en silverlight, ono y chrome
« en: Abril 17, 2015, 03:45:59 pm »

Si hasta hace poco hemos estado viendo onotvonline sin ningún tipo de problema en Google Chrome y desde hace unos días se ha dejado de ver diciendo que se debe instalar el plugin  Microsoft Silverlight, lo único que debes hacer es dirigirte a la url chrome://flags y activar  el flag NPAPI  ya que a partir de la versión 42 de chrome este viene desactivado por defecto.


Activar Silverlight en Chorme


Acto seguido se debe reiniciar el navegador y ya debería funcionar.



11
Noticias del Blog / Error actualizando: Text Replace para Wordpress
« en: Febrero 19, 2015, 10:30:21 am »

Hoy en día existen multitud de servidores que no están 100% actualizados como deberían por ello no todas las características de PHP pueden usarse cuando se desean.


Un claro ejemplo ha sido actualizando el plugin Text Replace de WordPress a la versión 3.6 en una de las webs que administro. Lo primero que me ha saltado ha sido:



Warning: require_once(__DIR__/c2c-plugin.php) [function.require-once]: failed to open stream: No such file or directory in <path>/wp-content/plugins/text-replace/text-replace.php on line 53

Fatal error: require_once() [function.require]: Failed opening required '__DIR__/c2c-plugin.php' in <path>/wp-content/plugins/text-replace/text-replace.php on line 53


Tras esto nos indica que que no ha encontrado un archivo… que raro!.


Lo primero que hay que hacer es encontrar la linea 53 del archivo text-replace.php:



require_once( __DIR__  . DIRECTORY_SEPARATOR . 'c2c-plugin.php' );

Si justo antes de esa linea escribimos:



echo __DIR__  . DIRECTORY_SEPARATOR . 'c2c-plugin.php';
require_once( __DIR__  . DIRECTORY_SEPARATOR . 'c2c-plugin.php' );

Y nos devuelve por pantalla:



/c2c-plugin.php

Significa que nuestro servidor no acepta la constante mágica __DIR__. Por ello, debemos  irnos a una solución que se usaba en versiones anteriores de PHP.



require_once(  dirname(__FILE__)  . DIRECTORY_SEPARATOR . 'c2c-plugin.php' );

Con este pequeño fix ya podemos tener nuestro wordpress funcionando de nuevo.



12
Noticias del Blog / SWardriving. Wireless Wi-Fi Wardriving
« en: Febrero 13, 2015, 08:04:17 pm »

Muy buenas a tod@s !!


SWardriving. Wireless Wi-Fi Wardriving.


Wireless Wi-Fi Wardriving, Warbiking, Warwalking, Warjogging, Warrailing, Wartraining, BusWardriving …


Una aplicación sencilla para Wardriving en cualquier parte del mundo. Que no se te escape la localización de ninguna Red Wireless Wi-Fi.



Las principales funciones son :


* Base de Datos SQlite para realizar el seguimiento y localización de las Redes Wireless WiFi.

* Estadísticas sobre las Redes Wireless Wi-Fi almacenadas en la Base de Datos.

* Actualización de los datos recibidos por GPS cada segundo.

* Scanner acelerado de las Redes Wireless Wi-Fi cercanas.

* Estadísticas sobre las Redes Wireless Wi-Fi cercanas.

* Notificación de servicio en funcionamiento en segundo plano.

* Exportación de archivos KML en la SD (para importar en Google Maps/Earth, Wigle.net, …)

* Exportación de archivos CSV en la SD (separados por comas para Excel, OpenOffice/LibreOffice, …)

* Eliminación total de los datos contenidos en la Base de Datos.


La aplicación utiliza los datos del GPS y el scanner de Redes Wireless en combinación para localizar puntos de acceso Wi-Fi, a continuación, guarda los datos necesarios en base de datos que luego se puede exportar a un archivo KML o CSV.


Para obtener los datos necesarios de las Redes Wireless, debe esperar a que el dispositivo pueda determinar la ubicación actual a traves del GPS.


Excelente para WarDriving, Warbiking, Warwalking, Warjogging, Warrailing, Wartraining, BusWardriving, y para escanear un montón de puntos de acceso. Si haces Wardriving, que no se te escape la localización de ninguna Red Wireless.


 


Enlace Amazon SWardriving   


Enlace SlideMe SWardriving


Enlace Opera Store Apps SWardriving


Enlace GetJar SWardriving


Enlace Google Play Store SWardriving


Aviso legal.


El uso de este producto de software de análisis wireless debe ser una

herramienta básica para profesionales y particulares que ansían conocer

el nivel de seguridad de sus instalaciones inalámbricas, queda

totalmente prohibido el uso de la misma para cometer actos delictivos de

intrusión sobre las redes wireless de las cuales no somos propietarios o

no tenemos los permisos pertinentes para analizar su nivel de

seguridad.


Un saludo.


http://swardriving.blogspot.com.es/



13
Noticias del Blog / WiFiArnetXXXX para Windows Phone
« en: Febrero 09, 2015, 08:29:29 pm »

Buenas noches!


Como ya sabréis hace unos días publiqué la aplicación SWifi Keygen con la inclusión de este algoritmo de generación de claves, bueno pues también lo hemos portado a Windows Phone.


Los equipos afectados son los mismos.


Las redes Wifi-Arnet-XXXX con una de las siguientes posibles MAC:



'00:08:27','00:13:C8','00:17:C2','00:19:3E','00:1C:A2','00:1D:8B','00:22:33','00:8C:54',
'30:39:F2','74:88:8B','84:26:15','A4:52:6F','A4:5D:A1','D0:D4:12','D4:D1:84','DC:0B:1A','F0:84:2F'


La aplicación es muy sencilla, se introducen los datos de la red y se hace click en generar, aunque si queréis hacer click en el botón de donar sabéis que nunca está de más.


Página principal de la aplicación


Captura de pantalla página acerca de.


Link al market de windows phone

http://www.windowsphone.com/s?appid=17e7c588-3239-49b1-a5d5-1345d9cee6f8



14
Noticias del Blog / SWifi Keygen 1.0.0.6
« en: Febrero 08, 2015, 12:13:40 pm »

Buenos días a todos,


Para los que no lo sepan SWifi Keygen es un generador de claves por defecto tanto WEP como WPA/WPA2.


Hace unas semanas los compañeros Dudux y Buckynet publicaron el algoritmo de generación de claves de las redes WiFi-Arnet-XXXX que incluyen las MAC:



'00:08:27','00:13:C8','00:17:C2','00:19:3E','00:1C:A2','00:1D:8B','00:22:33','00:8C:54',
'30:39:F2','74:88:8B','84:26:15','A4:52:6F','A4:5D:A1','D0:D4:12','D4:D1:84','DC:0B:1A','F0:84:2F'

Por ello, en esta entrega he adaptado el generador SWifi para que genere estos patrones también.


Captura de pantalla de SWifi Keygen 1.0.0.6

Nueva versión del generador de claves SWifi Keygen 1.0.0.6


El algoritmo original se encuentra en:


http://ednolo.alumnos.upv.es/?p=1883


Si conocéis de algún algorimto que falte por favor hacedmelo llegar a través de un comentario.


Descargar SWifi Keygen 1.0.0.6


Código fuente:


https://github.com/berni69/SwifiKeygen



15
Noticias del Blog / Automatizando builds con CMAKE
« en: Febrero 06, 2015, 11:56:34 am »

Algunos programadores del mundillo GNU ya se han dado cuenta de que Make te simplifica la vida a la hora de compilar, pero es algo complicado de configurar. Por ello, hoy voy a enseñar como crear un proyecto C++ y automatizar la compilación con CMake.


Nuestra estructura de proyecto va a ser:


\build
\src\main.cpp
\src\CMakeLists.txt
\doc\Doxygen.in

Para empezar, como es costumbre debemos instalar la herramienta cmake, y doxygen si queremos generar la documentación.


Crearemos el archivo CMakeLists.txt:


cmake_minimum_required (VERSION 2.6)
project (prjCmake)
add_executable(prjCmake main.cpp)

Si dejamos ester archivo así y ejecutamos cmake nos generara un Makefile para poder construir el main.cpp. Hasta aquí cualquiera puede decir que es un engorro porque eso con un



gcc -o main main.cpp

se compila igual. Pues sí, pero no termina aquí, es CMake permite añadir librerías de un modo bastante sencillo. En este caso quiero añadir las librerías y los flags del compilador necesarios para compilar una extensión del paquete net-snmp.



-DNETSNMP_ENABLE_IPV6 -fno-strict-aliasing -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -DNETSNMP_USE_INLINE -Ulinux -Dlinux=linux -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/perl/5.18/CORE -D_FORTIFY_SOURCE=2 -I/usr/include

Si eso lo tuvieramos que escribir cada vez que queremos construir pues quizá se nos vaya un poco de las manos.


Para eso podemos ejecutar el comando:



net-snmp-config --base-cflags

e integrarlo dentro de cmake:


cmake_minimum_required (VERSION 2.6)
project (SNMP)
set (SNMP_VERSION_MAJOR 1)
set (SNMP_VERSION_MINOR 0)</code>

## Añadimos las librerias de SNMP
execute_process(COMMAND net-snmp-config --cflags OUTPUT_VARIABLE SNMP_C_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND net-snmp-config --libs OUTPUT_VARIABLE SNMP_LIBS_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
## Fin..

SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}${SNMP_C_FLAGS}" )

add_executable(SNMP snmp_main.cpp)
target_link_libraries(SNMP "${SNMP_LIBS_FLAGS}" )

Con la orden execute_process y el argumento OUTPUT_VARIABLE almacenamos la salida de ese comando en la variable especificada.

Con la función SET damos valor a la variable que hay acontinuación.

Con la instrucción target_link_libraries añadimos las librerías necesarias a la orden de compilación.


Bueno el caso de net-snmp era un caso un poco fuera de lo común pero muchas de las librerías típicas (como libpng) se pueden incluir a la compilación del siguiente modo :



## Link libraries
find_package(PNG REQUIRED)
include_directories(${PNG_INCLUDE_DIR})
target_link_libraries(target ${PNG_LIBRARY})

o libpthreads



find_package(Threads REQUIRED)
target_link_libraries(test ${CMAKE_THREAD_LIBS_INIT})

En el caso de querer generar una librería con código propio solo deberíamos añadir:



add_library(mylib mylib.cpp mylib-1.cpp)

Y si queremos automatizar el build de un grupo de programas con las mismas librerías bastaría con crear una variable que contuviera los fuentes y recorrerla con un foreach:



SET (PROGRAMS bin1 bin2 bin3)
foreach(program ${PROGRAMS})
add_executable(${program} ${program}.cpp)
target_link_libraries(${program} ${EXTERNAL_LIBS}) #Añadimos las librerías de la variable EXTERNAL_LIBS
target_link_libraries(${program} mylib) #Añadimos nuestra propia librería
endforeach(program)

Hasta aquí la parte de automatización de la build.



Páginas: [1] 2 3 ... 5