Category Archive Redes

Error de autenticación 802.1x mediante certificado en ISE

En un cliente hemos encontrado el siguiente problema, la autenticación de usuarios 802.1x mediante certificado falla y aparece el siguiente error en el live log de ISE:

OpenSSLErrorMessage SSL alert: code=0x22E=558 ; source=local ; type=fatal ; message=»certificate unknown.ssl/statem/statem_srvr.c:3800 error:1417C086:SSL routines:tls_process_client_certificate:certificate verify failed [error=337100934 lib=20 func=380 reason=134]»

Hay poca documentación al respecto, en este hilo de free radius se apunta a las EKU del certificado como motivo. Dado que la autenticación de máquina sí que funcionaba tras comparar los certificados y realizar varias pruebas con las propiedades de EKU, llegamos a la conclusión de que el error derivaba de que el certificado tenía marcada como crítica la clave EKU. Una vez no configurada como crítica la clave EKU la autenticación funciona perfectamente, este error también se extendía a equipos IPHONE, softphone AVAYA y posiblemente a otros dispositivos que usen las librerías de OPENSSL para la comprobación del certificado.

Configurar túnel site to site FlexVPN con IP dinámica (DHCP) con routers Cisco

Esta configuración es muy sencilla cuando se encajan todas las piezas. Se debe utilizar FlexVPN en modo cliente/servidor, se puede elegir diferentes modos de autenticación: certificado, radius, tacacs+…En este artículo se utilizará la más sencilla, usuario y contraseñas locales.

Se utilizará un laboratorio ejecutado en el fantástico eve-ng :). El laboratorio utilizado es el siguiente:

Checkpoint: Los usuarios de VPN de acceso remoto, reciben direcciones IP reservadas en ipassignment.conf

Tras configurar la reserva de direcciones IP en el archivo $FWDIR/conf/ipassignment.conf, y aplicar la política, en los logs se observa que esas direcciones son asignadas a otros usuarios. Para solucionar este comportamiento, hay que utilizar distintas redes para Officemode y para ipassignment.conf. Esto se puede hacer mediante la segmentación de la red utilizada para Officemode, la pool VPN vamos o utilizando dos redes totalmente diferentes.

Una vez configurado con distintas redes, si está activado el Antispoofing para la interfaz de Internet, hay que añadir la red utilizada en $FWDIR/conf/ipassignment.conf a las excepciones de Antispoofing para dicha interfaz.

Configurar VPN con doble autenticación mediante certificados en Checkpoint R80.10

En este post resumo los pasos a seguir para configurar la autenticación de usuarios, mediante certificado y/o doble autenticacióm con certificado y usuario y contraseña para VPN de acceso remoto; ya sea para usuarios internos o de Active Directory (con pequeños cambios sirve para LDAP).

Wake On Lan on Firepower Thread Device (FTD)

In ASA you configure a NAT like this (for more detail on that go here):

nat (outside,inside) source static any interface destination static interface Broadcast service WakeOnLan WakeOnLan unidirectional no-proxy-arp

Unfortunately this kind of NAT doesn’t work on FTD (version 6.2.1), if you do a packet tracer it seems to work, but it doesn’t.

Convertir un certifacado pfx (Microsoft) al formato PEM con openssl

  1. openssl pkcs12 -in archivo.pfx -out resultado.pem
  2. openssl pkcs12 -nokeys -in archivo.pfx -out resultado.cert
  3. openssl pkcs12 -nocerts -in archivo.pfx -out resultado.key -nodes
  4. Si vas a usar el certificado en un Cisco CSS hay que eliminar todo el contenido delante de «—–BEGIN RSA PRIVATE KEY—–» en el archivo resultado.key

Recetas

NMAP

-Idle scan (Escaneo pasivo)

1- Obtener hosts vulnerables como intermediario

shell#: nmap -O -v -sS|sT|sA|sW|sM objetivo -oA objetivo.result

2- Buscar los hosts vulnerables en el resultado

shell#: grep «IP ID» objetivo.result.gnmap | perl -pe ‘s/Host:([^\t]+).*IP ID Seq:([^:]+)/$1 $2/’

3-Realizar ping a través de un intermediario

shell#: nmap -PN -p- -sI intermediario destino

-Escaneo ping rápido

nmap -sP rango_ip

PERL

-Sustitución en linea multlinea

perl -pi.back -e ‘undef $/; s/SEARCH/REPLACE/ims’ file

Configurar Linux como cliente web de Microsoft ISA Server o Forefront en 5 pasos

El otro día en el curro me iva fatal la conexión ADSL que utilizaba para funcionar con el único pc con Linux de la empresa (un laptop viejo que me cedieron en su día), por otro lado buscando un proxy en python para una idea que me ronda la cabeza encontré proxies que soportan la autenticación NTLM (NT Lan Manager) que es la usada por Windows y, por lo tanto, por el ISA server o Forefront, entonces se me encendió la bombilla, hice una busqueda rápida y efectivamente!! se puede validar un Linux contra un ISA server mediante un proxy que soporte NTLM, siempre y cuando el servidor de Microsoft tenga activada la opción de ser proxy web. En los repositorios de ubuntu hay varios, yo he elegido el cntlm. No es necesario añadir el pc Linux al dominio ya que conectaremos al proxy web pero ya que estamos ¿porqué no hacerlo?

Pasos a seguir

1-Añadir el pc al dominio mediante likewise-open

Como he dicho esto es OPCIONAL, y se puede obviar si no se dispone de una cuenta con suficientes privilegios para añadir elementos al Active Directory o simplemente no queremos que la máquina forme parte del mismo

  • shell#: sudo aptitude install likewise-open5
  • shell#: sudo domainjoin-cli dominio usuario_administrador_del_dominio
  • shell#: sudo /etc/init.d/likewise-open restart

Si se desea añadir el usuario del dominio a sudo hay que  editar /etc/sudoers y añadir una line del tipo DOMINIO\\usuario permisos

2- Instalar y configurar el proxy

Simplemente así

A- Instalar cntlm

shell#: sudo aptitude install cntlm

B -Editar/etc/cntlm.conf

shell#: sudo vi /etc/cntlm.conf

y establecer las variables: Username, Domain, Password, Proxy (Normalmete es ip_isa_server:8080)

C -Ejecutar

shell#: sudo cntlm -M http://abdulet.net (o cualquier url)

Default config file opened successfully
cntlm: Proxy listening on 127.0.0.1:3128
cntlm: Resolving proxy 192.168.50.37…
cntlm: Workstation name used: kubuntu
cntlm: Using proxy proxyserver:8080
Config profile  1/11… OK (HTTP code: 301)
—————————-[ Profile  0 ]——
Auth            NTLMv2
PassNTLMv2      XXXXXXXXXXXXXXXXXXXXXXX

————————————————
cntlm: Terminating with 0 active threads

D -Vomver a editar /etc/cntlm.conf, pegar el texto en rojo ¿Qué… en donde? pues donde más rabia te de 😉 y además borrar la linea del Password en texto plano

E -Reiniciar el proxy

shell#: sudo /etc/init.d/cntlm restart

F -Configurar las aplicaciones para usar el proxy 127.0.0.1 puerto 3128 (estas opciones se puede cambiar en el archivo /etc/cntlm.conf). Para configurar el proxy para las aplicaciones en general hay que editar el archivo .profile

shell#: vi .profile

, añadir estas lineas

http_proxy=»http://localhost:3128″

ftp_proxy=»ftp://localhost:3128″

y volver a iniciar sesión

Y a disfrutar la navegación!!

Demostrando la debilidad de la encriptación inalámbrica mediante WEP

Voy a demostrar la debilidad y facilidad de craquear redes wireless protegidas mediante la obsoleta encriptación WEP, paradójicamente WEP significa «privacidad equivalente a cable» (Wirede Equivalent Privacy en inglés) pero como veremos a continuación nada más lejos de la realidad. Es muy recomendable poder injectar paquetes, lo más fácil es descargar una distribución Live que se ejecute desde USB o CD por ejemplo la bactrack del equipo de remote-exploit (agradecerles su trabajo desde aquí 😉 ) estas distros además de tener aplicados todos los parches necesarios para inyectar paquetes traen todas las herramientas que vayamos a necesitar y muchas más que pueden abrir la puerta a nuevas ideas y retos (keep your mind moving…)

Herramientas que se utilizarán:

  • Kismet: Para la localización de redes
  • wirelesstools: Para la gestión de la tarjeta inalámbrica
  • aircrack-ng: Suit completa de herramientas para los ataques wireless

Routerconfigs de cacti no se ejecuta automáticamente

Me he encontrado con este problema y ha resultado ser un fallo en la gestión de la base de datos, routerconfigs establece una opción global que indica si ya se está ejecutando un proceso en de backups. Por algún motivo (posiblemente alguna de mis pruebas mientras desarrollaba las modificaciones para soportar ssh) esta variable se quedó establecida a 1 y esto impide la ejecución automática de este plugin. La variable es «plugin_routerconfigs_running» y se encuentra en la tabla «settings» de la base de datos de cacti, para comprobar su valor ejecutar desde un terminal:

mysql -u cacti -p cacti -e «select * from settings where name=’plugin_routerconfigs_running’;»
Enter password:
+—————————————+——-+
| name                                                      | value |
+—————————————+——-+
| plugin_routerconfigs_running   | 1         |
+—————————————+——-+

Si la columna value está establecida a 1 routerconfigs no se ejecutará así que para solucionarlo tan solo hay que ejecutar:

mysql -u cacti -p cacti -e «REPLACE INTO settings (name, value) VALUES (‘plugin_routerconfigs_running’, 0);»
Enter password:

Y para asegurar que todo ha ido bien

mysql -u cacti -p cacti -e «select * from settings where name=’plugin_routerconfigs_running’;»
Enter password:
+—————————————+——-+
| name                                                      | value |
+—————————————+——-+
| plugin_routerconfigs_running   | 0         |
+—————————————+——-+

Con esto routerconfigs se debería ejecutar a la perfección ;)…

O al menos eso pensaba… jejeje tras un día de ejecución volvió a fallar con el mismo resultado así que algo en el código no funciona como debe… entro en modo debugging debugging debugging uuuups que me me sa metio un bug 😛 bueno pues eso tras unas horas de estudio del código y debuggings varios hay un caso en el que un include hace un return antes de hacer el replace pertinente en esta tabla. El archivo en cuestión es el router-download.php, en la línea 66 encontramos un return solito dentro de un else tal que así

if (!empty($devices)) {

.

.

.

} else {
return;
}

para solucionar el problema el else debe quedar de esta otra forma

} else {
db_execute(«REPLACE INTO settings (name, value) VALUES (‘plugin_routerconfigs_running’, 0)»);
return;
}

Y ahora sí con esto va como la seda os lo juro que ya lleva meses rulandooooo

byte byte my nerds 😛