domingo, 28 de diciembre de 2014

Linux y algunos parámetros del kérnel: Linux casado

La primera parte creía que ya la había contado en otra ocasión, pero, una vez más, no he sido capaz de encontrarlo. Pero bueno, para refrescar la memoria...

Como muchos sabréis, en linux, si quieres saltarte la contraseña de root, porque, por ejemplo, ésta se haya perdido, lo que hay que hacer es editar el menú del grub cuando éste se muestre y añadir al final de la línea la palabra single:

Editando el grub en linux
Editando el grub en linux
Y vamos a editar el kernel:

Editando grub: añadiendo single como parámetro del kernel
Dependerá de la versión que tengas el cómo te lo muestre, pero en definitiva, hay que añadirlo ahí. 

Una vez lo tengas, tendrás acceso al sistema con permisos de root sin haber usado la contraseña. Eso sí, la carga es muy limitada, por lo que tendrás servicios que no funcionen. 

Lo curioso es el resultado que nos ofrece si en vez de single, le ponemos married. Me gustaría mucho que lo probaseis y me lo comentarais para que después os pueda dar mis resultados y así los contrastamos. ¿Os parece?

miércoles, 24 de diciembre de 2014

¡Felices Fiestas!

Sólo escribo este  post para desearos a todos vosotros tengáis unas felices fiestas con todos los que os quieren.

Espero que os podáis reunir con vuestras familias o amigos... ¡O con todos!

Disfrutadlas tanto como The piano guys parece que han disfrutado montado este vídeo:



¡Un abrazo a todos!

lunes, 22 de diciembre de 2014

pnputil: Mucho cuidado... O te quedas sin dispositivos

Hace tiempo, jugando un poco con los drivers, e intentando instalar uno para un dispositivo Android... Conseguí que apenas se detectara. Si no recuerdo mal, fue por instalar unos drivers que al final no eran para dicho gadget. El problema está en que gracias a eso conseguí que tampoco se detectara correctamente mi móvil, por lo que no podría acceder a la tarjeta SD desde el ordenador.

Y ahí me veis, instalando un montón de controladores para Android, descargados de páginas oficiales (tanto del propio Android como del fabricante) y que no hay manera. Hasta que me encuentro con que se me repiten muchas entradas.

Por lo tanto, no se me ocurrió otra cosa que buscar cómo podía quitármelos de encima. Y ahí es donde encontré esta página, el que usando el comando de Windows pnputil te permitía quitar los drivers deseados.

Total, que me puse como loco a eliminar los que me parecieron... Y ahí estoy, desde hace un tiempo, desde mi Windows, sin acceso a los datos del cacharro.

Sí, he probado a instalar de nuevo las paqueterías, pero nada.

Sí, he probado a ejecutar

sfc /scannow

pero tampoco...

Sí, le he dicho que se descargue los controladores por Windows Update.

Si es que, ya me lo decía el maestro Vicente: los experimentos se hacen con gaseosa.

Cosas que acabo de probar, siguiendo los consejos de esta otra página:

  1. Ir cambiando los distintos modos en los que se puede poner la conexión USB: Almacenamiento masivo (la que no me funcionaba), multimedia y.... Cámara PTP. En las dos últimas ha instalado algún driver, sobretodo porque nunca los he necesitado.
  2. Poner el modo USB debug desde las opciones de desarrollo. Aquí la cosa ha mejorado, porque sí que me han aparecido las dos unidades que debían de salir, pero, en el momento de activar el almacenamiento, sólo me ha permitido entrar a ver los datos de la partición de la tarjeta externa. Al menos, algo es algo. Eso sí, en el momento en el que se desactiva el debug, volvemos a tener invisibles las unidades. 

Pero, la verdad, como ahora mismo estoy metido en veinte mil proyectos y cosas, de momento no me voy a pegar mucho más con esto. Aún así, si a alguien se le ocurre otra forma de volver a instalarlos...  Además de poder escribir alguna cosa que le pueda servir de ayuda a alguien que quiera poder manipular (léase, instalar y desinstalar controladores por consola o cmd), también continúo dándole vida al blog, que llevaba tiempo sin escribir algo técnico.

lunes, 1 de diciembre de 2014

Fui finalista de los premios Héroes Digitales

Este miércoles pasado estuve en el #ESETSecForum organizado por ESET (@ESET_ES), allí, en el Canal de Isabel II en Madrid (junto a la estación de metro Rios Sosas).

En ésta tuvimos la oportunidad de asistir a dos mesas redondas donde, en resumen, se habló sobre la seguridad en la sociedad y, sobretodo, para las personas de a pié. Al final, esta segunda parte, sin querer, todo el mundo que participó en dicha mesa habló de los más vulnerables de todos: los niños.

Entre debate y debate, la organización (entre ellos, Josep Albors [@josepalbors] y Yolanda) nos puso unas bebidas para poder descansar y hacer networking. También, al finalizar la entrega de premios, nos pusieron la cena, en la que se nos ofrecían pinchos muy buenos y también podían caer unas cuantas bebidas.

Lo importante es que allí nos encontrábamos muchos asiduos a estas reuniones: Rober (@1gbdeinfo), KioArdeTroya (@kioardetroya), Pedro (@NN2ed_s4ur0n), Angelucho (@_Angelucho_), David (@insonusvita, ganador del premio al Héroe Anónimo), Dani (@ggdaniel), Javier (@BehindFirewalls)... Incluso, ¡al fin! pude conocer en persona a Pilar Movilla (@Pilarmov)!! Sé que me estoy dejando a muchos. Ya sabéis que soy un desastre para esto...

Ahora, os preguntaréis: ¿Qué pasó con el premio? Pues resulta que, este año no pudo ser. Entre los 5 o 6 finalistas que estábamos, entre los que también se encontraba Rober, el ganador fue un jabato de mucho cuidado. Porque, recordemos, el que no aplica la seguridad a lo jabalí (@Seguridadjabali), mal le irá. Mi más sincera enhorabuena a todos los ganadores.

Eso sí... ¡El próximo año vamos a darlo todo!

lunes, 24 de noviembre de 2014

Review: Desarrollo de aplicaciones Android seguras

Hace bastantes meses (allá, por la RootedCon de este año) que tenía este libro y por aquel entonces lo empecé a leer. Pero esto es lo típico, empiezas a leer, lo dejas, continuas, lo dejas... Por lo que no está leído del tirón. También he de decir que el año pasado ya me hice el curso de desarrollo de aplicaciones Android impartido por la Universidad de Valencia desde la plataforma Miriadax, y antes estuve jugando con material que me pasó Marc Rivero (@Seifreed).

¿Qué puedo contar del libro?

Está escrito por Miguel Ángel Moreno, y es la edición en la que aún se muestra el membrete de Informática 64.

Está muy bien estructurado. Si ya has trabajado con java te resultará fácil entenderlo. Al menos, el funcionamiento de cómo estructurar cada una de las partes de las que se tiran para conseguir que se ejecuten las acciones deseadas. En cada capitulo nos enseñan cómo hacer crecer la aplicación, empezando por construir sólo el diseño visual a través del cual queremos que se muestren los datos y que el usuario interactue con ella llegando a almacenar los datos con los que trabaja. Si sólo te dedicas al desarrollo puro y duro, lo más complejo que te puedes encontrar es el diseño puramente visual. Además, a medida que se van leyendo los capítulos, se van teniendo ejemplos prácticos con los que se pueden probar cada una de las técnicas que te están enseñando en ese instante.

No voy a negar que le he encontrado un pero. No sé si es porque esperaba algo más o que al leerlo tan a trompicones ha tenido algo que ver o simplemente que no hay mucho más que contar de lo que yo esperaba, pero me ha dado la sensación de que aún le falta algo más sobre seguridad. Hay un capítulo en el que sí se dan consejos de sobre temas de seguridad, como por ejemplo, el almacenamiento de información crítica (por ejemplo, credenciales de usuario) o transmisión de la misma utilizando las telecomunicaciones, cómo asignar los permisos necesarios para que al instalar la aplicación ésta funcione o cómo almacenar los datos para que otras aplicaciones puedan (o no) acceder a ellos... Es cierto que antes de ver cómo diseñar un programa seguro hay que empezar por saber cómo desarrollarlo desde el principio. Aún así, me he quedado un poco desencantado, la verdad.

Además de la creciente dificultad que van teniendo cada uno de los capítulos del libro, podremos ver los distintos ejemplos que se van mostrando, a cada uno de ellos más vistosos.

Por favor, todos aquellos que lo hayan leído, estaría bien poder contrastar mi opinión con la vuestra.

miércoles, 19 de noviembre de 2014

Resultado de los Premios bitácoras

Hace semana y media terminaron las votaciones de los Premios bitácoras. Y aquí tengo dos noticias: una buena y una mala.

La buena es que muchos de los colegas que nos dedicamos a este mundillo han llegado hasta el final. PabloYGlesias () ha quedado cuarto, Angelucho ( ) sexto, Security by Default () octavo, Chema (el Maligno, ) segundo... Y puedo seguir enumerando. El blog de Kinomakino (), Inseguros, junto con el que escriben Pablo ( ) y Juanan ( ) [ya sabéis, Flu-Project ( )] y Roberto () con su Giga de Información... También en el top twenty.

A ver, tampoco es por despreciar aquellos que no lo han alcanzado, como puede ser Infospyware (, al que reconozco que no lo sigo con mucha asiduidad) o Hispasec Una al día () , Pentester  (de José Selvi,  ), el blog de Eleven Paths ( ), Seguridad a lo Jabalí ( )... Todos ellos en los 50 primeros clasificados.

Espero no dejarme a nadie de los conocidos, que me da un algooo!

Y ahí os preguntaréis: ¿Que pasa con esta santa casa (como diría alguno que nosotros sabemos)?. Puuees.. que este año no ha podido ser. Y esa es "la mala noticia". En la penúltima clasificación parcial (la cuarta) sí que alcancé el puesto 44. Pero ahí se quedó la cosa. Aún así ya es mucho teniendo en cuenta que me apunté tan tarde como Pablo. Por lo tanto, me puedo dar con un canto en los dientes que llegase a ese puesto en algún momento. Eso sí... ¡¡El año que viene vamos a por todas!! Trabajaré más duro, para poder escribir contenido de calidad y que ésta no decaiga.

Una vez más, mi más sincera enhorabuena a todos.

lunes, 3 de noviembre de 2014

Crónicas: No Con Name 2014

Un año más, he tenido la posibilidad de visitar Barcelona para ir a la No Con Name. 

Como de costumbre, me lo he pasado muy bien, y he podido  encontrarme con unas magníficas personas. Por ejemplo, en la sobremesa del primer día, nos hicimos esta foto:

En la sobremesa del primer día de la No Con Name 2014
En la sobremesa del primer día de la No Con Name 2014
Ahí estábamos, Pablo (@pablogonzalezpe), Edu (@eduSatoe), Miguel (@Miguel_Arroyo76), Valentín... 

La verdad es que me lo pasé muy bien. Y disfruté mucho de las charlas. Teníamos de todo:

  • La HackStory por parte de Mercé (@mercemolist), 
  • Daniel O'Grady nos habló del área de servicio de los discos duros y cómo con su driver es posible ver la información que hay en ella o, incluso, ocultar algún fichero ahí dentro. 
  •  Jordi Serra nos habló de comunicaciones ocultas. Sobretodo se habló de esteganografía, tanto en imágenes como en ficheros de audio.
  • Ruth (@ruth_legal), se la que ya os he hablado unas cuantas veces, y Selva (@selvaorejon) nos hablaron de cómo se debía llevar un caso de extorsión por internet. Entre otras cosas, nos dieron su punto de vista de cuándo denunciar y cómo. Pusieron un ejemplo real de un caso bastante grave. 
  • David Meléndez (@TaiksonTexas) nos habló de cómo implementó su propio protocolo de gestión de señales wifi, con el fin de que un ataque de deauth no le haga perder el control de su drone construido por él mismo.
  • Sergi Casanova y Pol Matamoros nos hablaron de ataques a java security cards (smartcards). 
  • Albert Puigsech (@apuigsech) y Albert Sellares (@whatsbcn) nos contaron el funcionamiento de criptomonedas poniendo el ejemplo de los bitcoins como base. Se enfocó en posibles ataques al sistema: robo de claves privadas, romperlas, hacer una técnica que denominaron "doble gasto"...
  • En el coloquio sobre "La necesidad de profesionales de la seguridad" se estuvo haciendo incapie en si hacía falta una formación específica en materia de seguridad, cuántos de nosotros somos autodidactas, qué hace falta para ser un buen profesional de la materia o si es necesaria una base. 
  • David Sancho (@dsancho66) nos habló de cómo una banda criminal consiguió saltarse el factor de doble autenticación de un banco suizo. El resumen es que consiguieron que las victimas ejecutasen un bicho, que les hacía un pequeño cambio en el sistema (añadir un certificado nuevo al almacén y cambios de DNSs). La página a la que llegaba al introducir la URL del banco le indicaba que tenía que instalar un programa en el móvil. A pesar de todas la advertencias de los sistemas, las víctimas terminaron picando. 
Este fue el primer día. Eso sí, el segundo tampoco estuvo nada mal:

  • Alfonso Muñoz (@mindcrypt) y Ricardo (@ricardo090489) nos hablaron de cómo se podía montar una especie de nmap contra una víctima, haciendo que ésta visitase una página web montada a tal efecto, usando sólo etiquetas HTML de toda la vida.
  • Pau Oliva (@pof) nos contó cómo funcionan las distintas ROMs del Street Fighter y nos mostró cómo había modificado una para añadirle más funcionalidades, como, por ejemplo, un modo entreno. Incluso traía su propio joystick y parafernalia para jugar como antaño. 
Street Fighter II Turbo - Mod de Pau Oliva aka Pof
Street Fighter II Turbo - Mod de Pau Oliva aka Pof
  • Juan Carlos Ruiloba, (@juancrui) nos mostró cómo se podía ir ocultando información en cada una de las evidencias que se van encontrando. Al final, tirando del hilo, una a una, llegó a sacar como mínimo 11 claves a medida que iba encontrando más información. Entre otras técnicas, tiró de esteganografía. 
  • Vicente Aguilera (@VAguileraDiaz) nos habló de cómo conocer el comportamiento que una persona puede tener de acuerdo a los rastros que deja al utilizar sus redes sociales. Se basó en los resultados obtenidos a través de la cuenta de twitter empleada por la víctima. De hecho, nos enseño su herramienta tinfoleak, hecha en python
  • Lorenzo (@lawwait) nos habló del forensics que hizo a una clínica donde un ruso, un chino y otro ruso se metieron hasta la cocina para sacar pasta de la víctima. Es el caso que nos contó en las Navajas Negras de este mismo año. 
  • Isaac Sastre (@isakitohf), Fidel Paniagua (@Fidelpd) y Diego Suarez nos hablaron de cómo controlar los perfiles de un dispositivo android (una tablet) utilizando smartcards para evitar que un usuario entre en las carpetas de otro.
  • Albert Pugsech volvió a hacer otra charla. En esta ocasión, sobre cómo conseguir que un paquete que queremos que llegue al destino, que tendrá que estar en el mismo segmento de red, y que se componga como es debido para que se ejecute el exploit. La historia estaba en que al fragmentarse de cierta forma no terminaba de funcionar, por lo que forzó el orden en el que quería que llegasen los paquetes al destino. 
Por desgracia, tenía el tren y me perdí las dos últimas sesiones. La penúltima, parece ser que era un coloquio sobre "neutralidad en la red". La última, la de Abraham Pasamar, era la misma que hizo en las Navajas Negras sobre "Desmitificando el AntiVirus". 

Como ya dije por twitter, espero poder asistir el año que viene otra vez. 

Mi enhorabuena a la organización y a los ponentes. ¡Seguid así!

miércoles, 15 de octubre de 2014

Rooted CON 2015: Call For Papers

Rooted CON 2015: Call For Papers

Hace unos días enviaron un correo avisando de que la organización de RootedCon abría el proceso de Calle For Papers. Lo que no vi en su momento fueron las fechas: del 5 al 7 de marzo en el Hotel Auditórium.

Ahora sólo tengo a mano el enlace de Security by Default.

Escrito desde el móvil.

lunes, 6 de octubre de 2014

Navaja Negra 2014

Un año más, he podido viajar a Albacete para asistir a las Navajas Negras. Este año se han celebrado los días 2, 3 y 4 de octubre.

Desde aquí quiero agradecer, aunque ya lo hice en persona, a Txambe por el magnífico viaje de ida y vuelta.

Como va siendo habitual, me fui llevé una alegría al irme encontrando con los compañeros habituales. Espero que no se pierda la costumbre y les pueda seguir viendo.

Con respecto a cómo se fueron organizando las ponencias y los talleres estuvo bastante bien montado. El primer día hubo un pequeño fallo al empezar un pequeño taller sobre wireshark poco antes de servir la comida, por lo que cuando terminó ya quedaba poca (y aún así, sobró). Pero este pequeño fallo se subsanó al segundo día. Los talleres empezaban aproximadamente a las 9 y antes de empezar las charlas nos servían un buen desayuno:

Desayuno Navaja Negra 2014
Desayuno Navaja Negra 2014
y también una suculenta comida:

Comida Navaja Negra 2014
Comida Navaja Negra 2014
Me parece un gran acierto el que se tuviera todo el servicio de comidas en el mismo lugar. Muchas veces se pierde tiempo buscando un sitio para comer o para ponerse de acuerdo a dónde se va y al final, a comer rápido y corriendo y se llega tarde a la siguiente ponencia. Con este sistema, se tiene todo en el mismo lugar y da tiempo incluso y a bajar la comida.

Pero, por supuesto, lo importante eran los talleres y las ponencias. Además, éstos habían sido votados por todos nosotros, los asistentes.

Nada más llegar a Albacete pudimos asistir al taller de hardware hacking.

Pudimos ver el proyecto Tortazo, por parte de @kontrol0 y @jdaanial. Lo importante: conocer tu tráfico para saber dónde está el malicioso.

También tuvimos a Adrián aka @winshock nos presentó Merovingio. Una gran herramienta que nos permitía ejecutar un potencial bicho en una serie de sandboxes, y después, realizando una serie de análisis automáticos, permitía averiguar si era realmente un programa maligno o no. Al final, se obtendría un informe muy a lo VirusTotal, pregunta que le hice: ¿Y si se le integrase Virus Total? ¿Y viceversa: integrar Merovingio en VirusTotal?

Pedro Sánchez, @conexioninversa, nos mostró un caso real y judicializado sobre una empresa que gestionaba unos cuantos parkings. Sus sistemas SCADA se vieron comprometidos. Un poltergeist en vivo y en directo: las barreras se abrían y cerraban solas.

Después, @virtualminds_es, Iñaki Rodriguez, nos contó el análisis que se le hizo a un banco y las distintas pruebas que se le hicieron.

Ahora viene una de las partes que para mí es de las más interesantes en este mundo del hácking: el scpace law. 4 horas de presentaciones por parte de las fuerzas y cuerpos de seguridad del estado (y autonomías), fiscalía, abogados... El fiscal D. Francisco Hernandez. Por parte del GDT tuvimos al Capitán Cesar Lorenzana. Y la Unidad de Investigación Tecnológica de la Policía Nacional nos envió a David Perez. No sólo eso, sino que los Mossos d'Esquadra nos prestó a Ruben Mora y la Ertzantza a Manual Viota. De la Ertzantza también estuvo Patxi (al cual le doy las gracias por los anímos para seguir escribiendo) acompañado de Ruth Sala, la abogada que ya pudimos ver el año pasado en la NoConName. Pero no fue la única abogada, también estuvo Luir Jurado.

En este espacio también tuvimos la oportunidad de ver cómo puedes tener complicaciones para recuperar tus bitcoins, tal y como nos contó Pablo (@pablofb).

Aquí tenemos todos los participantes:

Todos los participantes del Space Law
Todos los participantes del Space Law
Y la mesa redonda, que, como de costumbre, muy interesante.

Y el segundo día también nos lo pasamos muy bien.

Jose Manuel Ortega, @jmorguegac, nos habló sobre desarrollo seguro en aplicaciones móviles.

Un tocayo suyo, @TheXC3LL, nos mostró lo vulnerable que son casi todos los plug-ins para wordpress.

José Selvi nos mostró cómo consiguieron colarle un bicho al móvil del CEO de una multinacional teniendo en cuenta que este CEO apenas utilizaba el smartphone. Muchas gracias si tiraba de Whats Up.

Chema Alonso, @chemaalonso, nos contó cómo se gestiona desde los buscadores la información: indices, cachés... Qué se guarda y dónde se guarda.

Pedro, componente de la organización del evento, tuvo su oportunidad de dar su ponencia, que también salió votada. Pudimos ver cómo cifrábamos información y su descifrado usando ataques de factorización. Nos presentó su herramienta Metijoso.

Lorenzo, @lawwait, nos explicó otro caso forense. En este caso de una clínica en la que tuvieron comprometidos su servidor, en el que los datos se vieron cifrados, y, por supuesto, una solicitud de rescate. Al final, Lorenzo pudo enserñarnos cómo fue tirando del hilo para saber qué pasó y cómo consiguió recuperarlos casi en su totalidad.

Ya, el último día, tuvimos la oportunidad de ver cómo un troyano como es el DarkComet, que desde VirusTotal lo detectaban veintimuchos antivirus, pudo hacer que se ocultase y terminar consiguiendo que ninguno lo marcase, ni siquiera, como sospechoso.

Alejandro Nolla, @z0mbiehunt3r, la forma de realizar un ataque DDoS dirigido, detectar si hay un balanceador, firewalls...

La empresa Cyberoam, nos mostró cómo funcionaba su producto.

Dani, @cr0hn, nos mostró los 12 problemas en el desarrollo de software con python y sus 12 soluciones, basadas en su experiencia.

Oscar Tebar, @infiltrandome, nos descubrió las puertas traseras que tienen algunos routers que nos instalan nuestros ISPs. Por ejemplo: cómo se meten dentro de nuestro router para resetearlo de fábrica, actualizarlo...

La última presentación antes del cierre fue Almudena Alcaide, de parte de Deloitte CyberSOC Academy, mostrándonos sus planes para dar formación.

Espero que el año siguiente pueda volver a asistir, porque seguro que lo vuelven a bordar. Incluso una de las noches tuve la oportunidad de cortar jamón en uno de los bares donde estuvimos. Estaban tan liados...

Cortando jamón
Cortando jamón






viernes, 26 de septiembre de 2014

Shellshock y los User-Agent

Alguna vez ya os he hablado de los user-agent y de la posibilidad de engañar al servidor web indicándole que se está utilizando un cliente web distinto al real.

¿Qué más se puede hacer?

Bueno. Se puede explotar la vulnerabilidad que ha recibido el nombre de shellshock.

Esta se encuentra en la conocida shell: bash.

Así es como funciona: defines una variable que contendrá una función anónima (no me acordaba que se llamaban así) y además, cuando la cierras, más código. El problema está en que al llamar a dicha variable, no detecta el fin de la función y continua ejecutando el resto del código.

Desde el blog de @jordi_prats, Systemadmin, nos cuenta cómo se puede hacer. (Escrita la URL a mano).

También hay otro ejemplo desde el blog de Eleven Paths. Aquí se puede ver más el alcance de esta vulnerabilidad.

miércoles, 10 de septiembre de 2014

Leak de 5.000.000 cuentas gmail

Esta semana parece que tengo mucho que contar.

A lo largo de la tarde/noche he podido saber que se ha producido un filtrado de prácticamente cinco millones de cuentas de correo de gmail. ¡5.000.000! ¡5*10^6!

Según se comentaba en las listas de correo de la Rooted y NoConName y similares, se tratan de cuentas antiguas. En ForoSpyware comentan que tienen más de cinco años. Y así lo confirman desde las listas, que algunos reconocen contraseñas que hacia casi 10 años que no utilizaban.

De todas formas, localizando la lista, que aquí no se va a publicar, se podrá saber si esta vez nos han publicado los datos, o no. Por supuesto, por nada del mundo introducir la contraseña en sitios que te indiquen si estás en el leak.

Cambiar la hora en Windows con NTP por consola: PowerShell

¡¡Hola!!

Ultimamente estoy viendo que la hora de mi equipo se va retrasando poco a poco. Además, me doy cuenta cuando ya lleva unas cuantas horas de retraso. Y me da que es cuestión de la pila de la BIOS, cosa que me da una pereza enorme cambiarla.

Ya sé que desde la interfaz gráfica de Windows se puede cambiar la hora, e, incluso, forzar a que se sincronice contra un servidor NTP para que esté perfecta.

Cambiar la hora en Windows utilizando NTP - GUI
Cambiar la hora en Windows utilizando NTP - GUI
Ahora bien, quería ir más allá. Quería conseguir cambiar la hora utilizando powershell y tirando, a su vez, de un servidor NTP.

En mi búsqueda localicé algún enlace que otro que permitía obtener un montón de datos de comparativas de la hora del sistema contra el servidor indicado. Es el cmlet llamado Get-NtpTime. Una vez importado, podríamos obtener los datos que se muestran por pantalla:

Cmlet Get-NtpTime, por Chris J. Warwick, @cjwarwickps
Aún así, le faltaba algo muy, muy importante. ¿De qué me sirve ver todos estos datos si no puedo ponerle al sistema la hora que me ha indicado el servidor? Por lo tanto, busqué la forma de cambiarla. ¿Cómo lo he hecho? Fusilando el script para adecuarlo a mis necesidades. Algunos datos no sé para qué los quiere, o si supondrán una gran diferencia. Como por ejemplo, el tiempo que tarda en conectarse y desconectarse utiliza dos variables de tiempo inicial y final. 

Por lo tanto, después de hacer varias pruebas, algunas con más éxito que otras, ya tengo un cmlet que permite cambiarte la hora utilizando la que te devuelve el servidor NTP pasado como parámetro. El script se llama Set-NtpTimeV2 (por las distintas pruebas y esas cosas), y tiene un resultado como el siguiente:

Cmlet Set-NtpTimeV2, por Agux

Y el código fuente, tal cual lo he dejado, eliminando las cosas que no hacían falta del original y poniendo las necesarias (las que menos, la verdad):

Function Set-NtpTimeV2 {
#Parametros
[CmdletBinding()]
Param (
[String]$Server = 'pool.ntp.org',
[Int]$MaxOffset = 10000     # (Milliseconds) Throw if network time offset is larger
)
# Construct a 48-byte client NTP time packet to send to the specified server
# (Request Header: [00=No Leap Warning; 011=Version 3; 011=Client Mode]; 00011011 = 0x1B)
[Byte[]]$NtpData = ,0 * 48
$NtpData[0] = 0x1B    # NTP Request header in first byte
# NTP Transaction -------------------------------------------------------
$Socket = New-Object Net.Sockets.Socket([Net.Sockets.AddressFamily]::InterNetwork,
[Net.Sockets.SocketType]::Dgram,
[Net.Sockets.ProtocolType]::Udp)
Try {
$Socket.Connect($Server,123)
}
Catch {
Write-Error $_
Throw "Failed to connect to server $Server"
}
$t1 = Get-Date    # Start of transaction... the clock is ticking...
Try {
[Void]$Socket.Send($NtpData)
[Void]$Socket.Receive($NtpData)  
}
Catch {
Write-Error $_
Throw "Failed to communicate with server $Server"
}
$t4 = Get-Date    # End of transaction time
$Socket.Close()
# -----------------------------------------------------------------------
# -----------------------------------------------------------------------
# Check the Leap Indicator (LI) flag for an alarm condition - extract the flag
# from the first byte in the packet by masking and shifting (dividing)
$LI = ($NtpData[0] -band 0xC0)/64    # Leap Second indicator
If ($LI -eq 3) {
Throw 'Alarm condition from server (clock not synchronized)'
}
# We now have the 64-bit NTP times, t3 is in the last 8 bytes of the received data.
# The NTP time is the number of seconds since 1/1/1900 and is split into an 
# integer part (top 32 bits) and a fractional part, multipled by 2^32, in the 
# bottom 32 bits.
# Convert Integer and Fractional parts of the (64-bit) t3 NTP time from the byte array
# $IntPart=0;  Foreach ($Byte in $NtpData[40..43]) {$IntPart  = $IntPart  * 256 + $Byte} 
# $FracPart=0; Foreach ($Byte in $NtpData[44..47]) {$FracPart = $FracPart * 256 + $Byte} 
$IntPart = [BitConverter]::ToUInt32($NtpData[43..40],0)
$FracPart = [BitConverter]::ToUInt32($NtpData[47..44],0)
# Convert to Millseconds (convert fractional part by dividing value by 2^32)
$t3ms = $IntPart * 1000 + ($FracPart * 1000 / 0x100000000)
# Make sure the result looks sane...
If ([Math]::Abs($Offset) -gt $MaxOffset) {
# Network time is too different from server time
Throw "Network time offset exceeds maximum ($($MaxOffset)ms)"
}
# Create Output object and return
echo "Cogiendo hora y fecha presente en el equipo..."
$currentDate = Get-Date
echo "La fecha y hora actual del sistema es: $currentDate"
echo "Obteniedo la fecha y hora real del servidor NTP..."
echo "Configurando la fecha y hora real..."
$nuevaFechaHora=New-Object DateTime(1900,1,1,0,0,0,[DateTimeKind]::Utc)   
$nuevaFechaHora = $nuevaFechaHora.AddMilliseconds($t3ms).ToLocalTime()
$nuevaFecha = Set-Date -Date $nuevaFechaHora
echo "La hora y fecha configurada es... $nuevaFecha"
}

Segunda Edición: Héroes Digitales

¡¡Hola a todos!!

Resulta que hace poco, Roberto aka @1gbdeinfo, nos comunicó que participaba en la segunda edición de Héroes Digitales, llevada a cabo por Eset. Y que le votásemos. ¡¡Y resulta que yo también me he apuntado!! No voy a negar que lo dudé un instante. Nos pedía una votación para luego, coger, y apuntarme, quitándole votos (ya que nuestros blogs son similares en tipo de contenido).

De hecho, prácticamente hemos puesto la misma descripción de nuestros blogs.

Por lo tanto, por favooor... ¡Votadme! Además, dicen que a partir del día 15, se quedarán sólo las 10 candidaturas más votadas. ¡Y he perdido mucho tiempo! Por lo tanto, ya sabéis: en el enlace podréis votaaaar por mí, pero, como dicen en las bases, no se podrá votar por más de una candidatura por sección.

lunes, 8 de septiembre de 2014

¡Navajas Negras están ya muy cerca!

¡¡Hola a todos!!

Hacía tiempo que no sacaba tiempo para escribir. Además, que mucho material para poder mostrar no es que tuviera, pero bueno. Ya os iré enseñando más cosas que recientemente he conseguido hacer.

Simplemente anunciar que hace dos meses, cuando aún estaban abiertos los CFP (Call For Papers), postulé para poder enseñar alguna que otra idea que tenía. Alguno me ha dicho que se lo imaginaba, y no iba mal encaminado: Firmar las llamadas. Realmente la grabación de las mismas. Desde aquí, quería dar mi enhorabuena a los seleccionados y a la organización por el magnífico trabajo realizado.

Poco más os puedo contar. Espero que hayáis pasado un buen verano. Pronto seguiré escribiendo cosas.

jueves, 7 de agosto de 2014

Imágenes transparentes en RSS

Es curioso lo que acabo de ver mientras estaba leyendo los feeds que tengo (muy) retrasados.

La cosa es que en Flu nos estaban hablando de spoofing de e-mails y las imágenes que se mostraban tenían un aspecto muy raro. Sólo se veían letras verdes a modo de leyenda.

Sin embargo, al hacer un tap (un sólo "click", pero en el móvil) para mostrarla mejor y poderla ampliar... Voila. La imagen se mostraba correctamente.

Sin más pruebas, da la sensación de que se esta usando algún tipo de transparencia. ¿Qué os parece a vosotros?

Como desde el móvil no hay tanto control, no tengo ni idea de cómo mostrará las capturas. Pero ahí las pongo y ya se verá si tocará editar.

lunes, 14 de julio de 2014

Cómo saltarse la contraseña del router Comtrend

Recordemos el típico disclaimer: Hacer este tipo de cosas sin permiso del usuario propietario es un delito muy grave. Yo no me hago responsable de los perjuicios que se puedan producir al seguir estas instrucciones. Hazlo bajo tu responsabilidad.

Como todos sabemos, cuando contratamos un ADSL o pon aquí la conexión a internet que proceda nos traen un router que lo tienen configurado de forma muy genérica. Entre otras cosas, el acceso al mismo suele estar restringido por unas credenciales por defecto que suelen pasar por los pares usuario/contraseña como:


  • admin/admin
  • 1234/1234
  • 123456/123456
  • admin/1234
  • 1234/admin
  • /1234
  • /123456
  • /admin
  • admin/
  • 1234/
  • etc,
  • etc,
  • etc...
Eso siempre y cuando se tenga acceso a la interfaz web directamente desde la red donde éste se encuentra. Porque si se trata como el de telefónica, tienes que haber quitado la configuración desde su portal Aleandra.

Resulta que he llegado a un router que estaba en esa situación: se quitó la configuración de ese portal para poderlo administrar desde dentro de la red. Sobretodo porque es más versátil así que no el portal que tiene muchas cosas capadas. 

El problema está en que se ha perdido la contraseña. Se sabe más o menos gran parte de la misma, pero aún así, al principio no ha habido forma de entrar. Y ha hecho falta buscar la manera de intentar saltarla de alguna forma. 


En una de las búsquedas, he encontrado este ejemplo para poderlo explotar. Es la base de datos de exploits Exploit-DB. Ya os hablé de ella cuando estuve haciendo la formación de Metasploit en la ahora desaparecida Informática 64. Dicho ejemplo, al principio, no he pillado del todo qué querían decir. Vamos a ver.

Como directamente es un texto con un ejemplo, no me parecía que pudiera ser lanzado. He querido probar a tirar de telnet contra el servidor web, pero se me cerraba la sesión (posiblemente por la solicitud de autenticación). Eso sí, me ha dado una pista:

http://IP_ROUTER/password.cgi

He podido acceder a esta URL y me ha dicho que el usuario que creía que tenía no era tal. En vez de admin era 1234.

Con esto, y una de las pocas combinaciones que tenía que aplicar, después de varios intentos he conseguido entrar... sin apuntar cuál de ellas eran. ¡Genial! ¡Ahora tengo acceso durante este rato...! Pero cuando se termine la sesión, el usuario volverá a estar perdido. Por lo que he vuelto a mirar el eploit. Y he caído en la cuenta.

En el momento en el que tienes acceso a la página password.cgi, te muestran en claro, como mínimo, tres contraseñas. Entre otras,

pwdAdmin = 'passwordPerdida';
pwdSupport = 'password02';
pwdUser = 'password03';

Además, ahora mismo, y mientras que lo estoy escribiendo, estoy viendo otra posibilidad: utilizar algún tipo de tamper data, firebug o cualquiera de estos que permita cambiar el código fuente al vuelo, de tal forma que pasaría el filtro de la igualdad entre la contraseña actual del sistema y la solicitada para corroborar que se puede hacer el cambio.

Total, que ya hemos recuperado el control sobre el router.

Me pregunto si qué otros routers entregados tienen algo parecido. ¿Alguien se apunta al carro?

lunes, 7 de julio de 2014

Las próximas CONs ya esán abiertas: Navaja negra y NoConName

Ya sé que llevo un tiempo sin escribir. Además, ahora mismo con algunas investigaciones que estoy haciendo tampoco puedo sacar mucho más. Y tengo alguna que otra idea que intentaré hacer para, al menos, escribir algo que a mi parecer tenga la calidad suficiente. Que no sea un escribir por escribir, vamos.

¡Al lío!

Hoy han abierto la inscripción para las Navajas Negras, en Albacete. Por lo tanto, date prisa o no podrás adquirirlas. Y, algo muy importante que tienes que saber: sólo podrán votar las ponencias y talleres los que estén en poder de una entrada. Ha sido un cambio de última hora que no han podido evitar. Si no te fías del enlace que he puesto para comprar las entradas, también puedes acceder a él desde el último link que he puesto, buscándolo.

Va a estar genial. ¿Os lo vais a perder? ¡¡Espero que no!!

Pero aún hay más: Hoy nos han comunicado por sorpresa que la inscripción a la No Con Name también está abierta. Será el 31 de octubre y el 1 de noviembre. Este año toca cogerse más días de vacaciones (o ir un poco in-extremis). Por lo tanto, si quieres ir, también podrás inscribirte.

Como de costumbre, tendrás la opción de apuntarte a las formaciones, dándote derecho directo a la entrada del evento. Además, también está la costumbre de poderte apuntar a la cena y si quieres, además, de obtener la camiseta de este año.

En ambos eventos se hace mucho networking, se conoce a mucha gente y se aprende mucho. Si tenéis la oportunidad, os lo recomiendo.

Recordad que como siempre digo: estas descripciones no son oficiales, por lo tanto, siempre visitad las fuentes oficiales que no me responsabilizo de cualquier error que pudiera haber cometido.

¡¡Allí os espero con los brazos abiertos!!

jueves, 12 de junio de 2014

Ataques DoS a empresas

He podido leer en ALT1040 que "Feedly, Evernote, Vimeo y otros han sufrido un ataque DDoS "

[update]
También en Una al día hablan del tema.
[/update]

Según he podido leer (lo he dejado a medias para escribir esto), Feedly ha afirmado que las contraseñas están seguras porque con ese ataque estas no están en peligro. Poco más, poco menos, es lo que se desprende del mensaje.

Ahora, yo me pregunto: ¿Lo habrán revisado? Esperemos que sí, porque si sólo se basan en esa premisa... Mal vamos. No sería la primera vez que una empresa tiene un leak y se entera de la intromisión justo cuando los datos se hacen públicos.

¿Qué pensáis?

miércoles, 28 de mayo de 2014

Las contraseñas en los sitios

Después del "supuesto" incidente del otro día con ebay y todos los datos de sus usuarios filtrados, hemos tenido que cambiar la contraseña del sitio. Como de costumbre, una vez ésta es obtenida, aunque se encuentre hasheada.

Con este lío, respondí al tweet:




con




a lo que, a su vez, me respondieron:




a lo que, a la vez de darle la razón, también indiqué que muchos sitios limitaban los tipos de caracteres que se podían usar. A lo que me dijeron:




Todo esto para ver si podemos comentarlo por aquí. ¿Qué os parece que nos limiten el tamaño de una contraseña? Si es a la baja se comprende. ¿Pero a la alta? No me parece bien que nos fuercen a utilizar una contraseña cuya longitud máxima es 20. Y mucho peor si te limitan los caracteres que puedes utilizar. Con eso podrían reventarte tu "algoritmo" de contraseñas a la hora de crear una segura con una frase tuya y después sustituyendo algunas letras por algún carácter especial que podría estar restringido en ese sitio. Además de bajar la entropía de la combinatoría.

Lo dicho: ¿Qué opinión tenéis al respecto? ¿Sería una negligencia por su parte?

lunes, 26 de mayo de 2014

Quantika14 sortea cosas muy chulas

Leyendo los típicos RSSs atrasados, pude encontrarme en 1 gb de información que este pasado 15 de mayo del presente año 2014, que Juan Manuel Fernández (@TheXC3LL) publicaban en su blog que iban a sortear unas licencias de WordpressA Security.

Para ello, hay que seguir una serie de pasos:

  • Estar siguiendo la cuenta de twitter de @QUANTIKA14.
  • Comentar el regalo que se desee (de los que ofrecen), que, aunque desde desde el blog hablaban de 4 meses gratuitos de licencia, me han indicado que hay más cosas. :D
  • Y, según indicaban en el blog, también hay que poner el hashtag #WordPressA.
¡Y ya está!

Así, que me dispuse a twittearlo pensando que llegaba tarde (una semana...) y @JorgeWebsec me ha dado la sopresa: ¡estaba mucho más a tiempo de lo que yo pensaba!

Hay un enlace con las bases oficiales del concurso.

¡¡Mucha suerte a todos!!

viernes, 23 de mayo de 2014

FreePBX y los feature codes: custom destinations y misc applications

He estado jugando un poco más con mi centralita VoIP FreePBX (Bueno, en realidad, RasPBX, pero lo mismo da). Y, me he puesto a crear códigos de función, o, más conocidos como feature codes.

He querido hacerlo cambiando sólo los ficheros, pero, como no he sido del todo capaz, al final he terminado tirando por el camino fácil y he instalado los módulos que me harían falta para llegar al objetivo.

Lo primero de todo, nos hará falta, como mínimo, instalar los siguientes módulos:
  • Custom destinations
  • Misc applications
Para crear un destino customizado (el custom destination) tendremos que ir al menú Admin y allí encontraremos el enlace:

FreePBX: Custom destination
FreePBX: Custom destination
Los dos valores que me sé serían:

  • El destino que tendrá internamente. Tiene que tener una estructura que sería
    • El contexto deseado (y siempre lo nombro como ámbito [scope]. A ver si se me queda el nombre bueno).
    • La extensión que buscará dentro de ese contexto.
    • La prioridad por la que debería empezar. 
Ahora, como de costumbre en estos casos, te saldrá el botón rojo de aplicar. Hazle click.

Ahora, vamos a crear lo que se podría traducir por una aplicación propia (una misc application). Nos permitirá enlazar un código determinado con el destino customizado que acabamos de probar. Para poderlo hacer tendremos que acceder a este módulo desde el menú Application.

FreePBX: Misc Application
FreePBX: Misc Application
Tendremos que definirle:
  • La descripción por la que lo podrás reconocer
  • Qué código tendrás que marcar en el teléfono para "llamar" a esta aplicación.
  • Si está activada o no.
  • En nuestro caso, el destino que tendrá será el custom app que acabamos de crear.
Lo mismo de antes: guardamos y aplicamos el cambio.

Ahora vamos a crear un contexto en el fichero /etc/asterisk/extensions_custom.conf. Vamos a modificarlo desde el putty. Escribimos:

nano /etc/asterisk/extensions_custom.conf

Y, en el fichero:

[mi-contexto]
exten => s,1,Playback(tt-monkeys)

Donde, si el navegador no es capaz de interpretar &gt (ampersand + gt) es el símbolo mayor que (>). [Inciso: está claro que tengo que buscarme otra forma de mostrar los códigos fuentes. Fin de inciso]

Y, al guardar, reiniciamos el servicio (ojo con las llamadas que estén en curso, que te las va a tumbar):

asterisk -rx "core restart now"

Y, si llamamos a la extensión que hemos definido desde alguno de los teléfonos, debería de oirse una jauría de monos gritando.

Y... esto no es todo. Porque todo este lío, además de enseñar a montar una cosa de estas, viene por dos razones.

Una, es que, de momento, sólo lo he conseguido hacer funcionar como si de una llamada se tratara. Ya veré si lo consigo cuando esté una llamada en curso.

La otra es por un error que te puedes encontrar. Porque, si no enlazas bien las cosas, no te funcionará. Un error que te podrá salir en los logs es el siguiente:

[...] sent to invalid extension but no invalid handler: context,exten,priority=mi-contexto,s,1

Esto significa que si has puesto un contexto correcto, pero en el fichero .conf has indicado una extensión fija (por ejemplo, directamente *007) y en la configuración has puesto la s, te va a saltar este error en los logs. Al menos, esa es una de las razones. Si hay más razones, ahora mismo lo desconozco.

Y... de momento esto. Si se me ocurren más cosas, os lo haré saber. 

miércoles, 21 de mayo de 2014

Fallo de seguridad en eBay

Acabo de leer que ha habido un fallo de seguridad en eBay y que se recomienda cambiar las contraseñas a todos los usuarios.

De todas formas, me informaré un poco más para estar seguro.

Os dejo el enlace aquí mismo.

http://hipertextual.feedsportal.com/c/33160/f/538984/s/3aab736d/sc/5/l/0Lalt10A40A0N0C20A140C0A50Cebay0Econtrasenas/story01.htm

viernes, 9 de mayo de 2014

Diccionario informático II

Volvemos a sacar una segunda entrega de los diccionarios, como la anterior vez, intentando darle su pequeño toque de humor (aunque posiblemente no consiga que hagan mucha gracia).

IDE: También conocidos como ATA. Es el anterior puerto de conexión de los periféricos internos de los ordenadores antes de que los Serial ATA se convirtieran en el estándar. Estos periféricos se caracterizaban por ser rectangulares, tener dos hileras de 40 pines cada una de ellas y el cable que permitía la conexión de los discos duros, lectores ópticos, etc... con la placa base recibía el nombre de "faja". Ocupaba bastante espacio en la caja del ordenador y era un poco infierno trabajar el interior de la misma cuando estas "fajas" estaban conectadas. Tiene otra acepción: Entorno o plataforma de desarrollo. Por ejemplo, Eclipse o NetBeans son dos IDEs muy famosos para el desarrollo de aplicaciones java.

IDS/IPSIntruder Detection System / Intruder Protection System. Una definición muy simple sería "antivirus que en vez de bichos analiza el comportamiento de la red". Es decir, que tiene una serie de firmas o patrones que analizan el tráfico de red y si se cumple la regla. Si tienes el detector, te avisará y tendrás que actuar en consecuencia. Si tienes el protector, cumplirá con las instrucciones indicadas cuando se produzca ese comportamiento.

Impersonalizar: La traducción literal (y real) sería "suplantar la identidad o hacerse pasar por alguien". Es lo que sucede cuando, por ejemplo, en un sistema Windows somos capaces de cambiar nuestro identificador de usuario por el otro de tal forma que tendríamos sus permisos: léase, para una elevación de privilegios. En el mundo real, sería, por ejemplo, prestarle el DNI a alguien para que se haga pasar por nosotros. O que el uso se haga porque nos lo hayan robado.

SIP: Muchas veces utilizado para responder simplemente . Raruno que se usen tres caracteres en vez de dos. Pero bueno. También es un protocolo de VoIP, que, ofrece, por ejemplo, FreePBX.

Sniffer: Normalmente es un programa que esnifará todo lo que se ponga a su alcance. Ya he hablado muchas veces sobre ellos. Como por ejemplo, whireshark.

Spoofear: Del verbo spoof. Sería falsificar en el sentido de "te hago creer que soy X pero realmente soy Y".  No confundir con Impersonalizar. Por poner varios ejemplos: las direcciones MAC, las direcciones IP...

VoIP: Voz sobre IP. Transmitir voz utilizando el protocolo IP. Un ejemplo de VoIP sería SIP.

De momento os dejo estas pocas. Seguro que más adelante se me ocurren más para una entrega más.

miércoles, 7 de mayo de 2014

Antivirus blanco

Hace tiempo... Mucho, mucho tiempo, leí el siguiente artículo en Una al día. En efecto, esto no es noticia. Pero a veces no se trata de dar noticias, ¿no? Porque muchas de las cosas que se cuentan ya las sabían públicamente otros hacía tiempo.


No voy a negarlo. Nunca había oído hablar de este antivirus: Bit9. Que según se puede leer en el post enlazado, está basado en listas blancas.

Las listas blancas están muy bien cuando se trata de casos en los que se tiene que tratar con pocas casuísticas. Pero, tal y como habremos visto en muchas ocasiones, gestionar una lista en la que queremos hacer que sólo funcionen un grupo grande de casos y que no se permita el resto (ya sea un antivirus como este, una lista de un firewall...) se hace muy, muy complicado de gestionar. ¿Cuántas veces se ha querido hacer algo al respecto y después se ha tumbado porque no hemos sido capaces de controlarlo?

De la información que nos dan se desprende que el sistema que utilizan para validar el software es que tiene que estar firmado. Ahora, voy a dejar caer varias preguntas, así, divagando un poco:

  • Si nos dedicamos el desarrollo este antivirus nos haría imposible trabajar, ya que necesitaríamos tener firmado nuestro software.... en medio del desarrollo. Es más: el IDE que utilicemos para el desarrollo también tendría que estarlo. 
  • A falta de probarlo, cabría pensar en que puede caer en nuestras manos algún programa que no esté en esa lista blanca. Por ejemplo: alguno que se haya solicitado a un proveedor (de esos para los que, seguro, muchos de nosotros trabajamos). Es un ejemplo, pero seguro que hay más: ¿Habría que enviarlo a la empresa para que lo firmen? Si son ellos quienes tienen que analizar los millones y millones de programas existentes, entonces...
  • Ah!! Esta se me olvidaba y no es menos importante. No pensemos sólo en ejecutables. Recordemos, por ejemplo, que alguna .dll nos falla... o no. Pero, tal y como WinSock nos mostró en las Navajas Negras 2013, el revisar un .exe no implica que sus complementos como las librerías .dll sean las que se encarguen de hacer "el mal".
Ciertamente son muchas cosas a tener en cuenta teniendo un antivirus de estos. Siempre se dice que no debería de instalarse dos antivirus en el mismo sistema:  ¿Se podrá aplicar este "lema" con este antivirus? Posiblemente sería un follón: ¿No? Mientras que uno te dice que tires, el otro te puede decir que no. Supongo que no sería ni recomendable probarlo. 

De todas formas, si alguno ha podido probar este antivirus y me puede dejar alguna nota en los comentarios sobre el mismo, sería de agradecer. 

miércoles, 30 de abril de 2014

Zink Security: Certificación CASI

Valga la redundancia, CASI: Certificación en Auditoría de Seguridad de la Información.

Desde Zink Security van a dar un curso que tiene muy, muy buena pinta relacionado con la seguridad en equipos y su auditoría.

Los maestros: Juanan y Pablo, de Flu-Project, Juan Luis García Rambla, Alejandro Martín e Ignacio Briones. He tenido el placer de aprender con todos ellos y os puedo asegurar que el que asista, también lo hará.

Esta formación constará de 6 módulos, 40 horas cada uno de ellos y un examen final. También tendrás la opción de hacer algún módulo por separado.

Para más información, y sobretodo, más oficial que la que aquí expongo, os dejo el enlace aquí abajo.

Por cierto: escrito desde el móvil.

http://www.flu-project.com/2014/04/apuntate-nuestra-certificacion-en.html

lunes, 28 de abril de 2014

CFP de NoConName 2014

Acabo de leer en Security By Default que está abierto el Call For Papers de No cON Name 2014.

Entre otras cosas se va a repetir el capture the flag del año pasado con algunas modificaciones.

En el artículo escrito por Lorenzo Martínez hay más información, que es la que acabo de leer. ¿Os veré por allí?

http://feedproxy.google.com/~r/SecurityByDefault/~3/QcinYPsN0Eo/abierto-el-call-for-papers-de-no-con.html

viernes, 25 de abril de 2014

FreePBX: Cambiar la shell de administración

Desde que instalé el sistema de mi PBX en la rasp llevo queriendo hacer un cambio que, si bien podía dejarlo tal cual, era una lata. Resulta que la consola de administración desde ssh para todos los usuarios mortales creados tiraban de la shell /bin/sh. En efecto: posiblemente a la hora de crearlo no lo pondría (bien) y me quedé con esa shell tan pesada. Y digo pesada porque todas las funcionalidades que nos da bash para poder utilizar el histórico con el teclado, utilizar la tecla tab para autocompletar, etc no tiraba. Por lo que me dispuse a buscar. 

Lo primero de todo saber que el sistema operativo es CentOS. Por lo que una búsqueda para poder hacer este cambio en esta ¿versión? de Linux es lo más adecuado. Y ahí nos encontramos con el comando chsh. Si bien en el ejemplo que he utilizado nos da la opción de hacer un listado de las shells disponibles, en mi caso no es posible. Aún así, el proceso es muy sencillo. Pero, antes, vamos a comprobar qué dicen nuestras variables de entorno:

Variables de entorno
Variables de entorno
Si bien seguro que es sencillo saber los valores de los nombres de usuario que he tapado, también. como podréis comprobar, he machacado las dos direcciones IP origen y destino.

Solicitaremos el cambio de shell al comando antes indicado, pasándole el parámetro -s y el valor deseado, en mi caso /bin/bash.

chsh -s /bin/bash

Tras lo cual nos pedirá la contraseña de nuestro usuario (el que estamos usando ahora mismo).

Cambiar la shell de sh a bash: chsh -s /bin/bash
Cambiar la shell de sh a bash: chsh -s /bin/bash

Ahora, cierra la sesión y vuelve a entrar. ¡¡Ya lo tienes!!
Usando la shell bash, después de cambiarla con chsh.
Usando la shell bash.
La verdad es que se me hace más cómo así.

lunes, 14 de abril de 2014

Solución Reto 01: esteganografía

Por fin me he podido poner a publicar la solución de mi primer reto [update]enalce[/update]. Lo reconozco, ha sido un fail como una casa. Entre que esperaba más participación y que me encontré con que las imágenes subidas me las habían manipulado a la hora de guardarlas, me vine abajo. Pero bueno, ya iba siendo hora de publicarlo. Más vale tarde que nunca.

Contábamos con dos imágenes:

Imagen 01

Imagen 02

La imagen 01 muestra unas matrioskas con un "bonito" fondo en blanco. En este fondo se puede distinguir que parece que hay algo raro en la esquina superior derecha. Si nos acercamos un poco más y, si no se distingue del todo bien, cambiamos el color de fondo, podremos ver que hay un mensaje:

Las matrioskas son la clave

Mirando fijamente estas muñecas rusas no se alcanza a ver ningún mensaje oculto con otro color. ¿Qué querrá decir con eso? ¿Qué tengo que hacer con la segunda imagen?¿Habrá algo oculto en ellas? 

Sé que en backtrack (sí, sigo usándolo) tienen herramientas como stegdetect y steghide.

Ejecutando:

stegdetect imagenMatrioskas.jpg

(o como la hayas guardado)

te devolverá

03-ficheroDestino.jpg : outguess(old)(*)

Lo que significa que no sólo tenía una mensaje oculto en su fondo, sino también en su interior.

Si quiero utilizar steghide me pedirá una contraseña. ¿Cómo voy a saber la contraseña? Ya que sabemos que "las matrioskas" son la clave: ¿Querrá decir eso que matrioskas es la siguiente posible solución?

steghide --extract -sf 03-ficheroDestino.jpg -p matrioskas -xf salidaSteghide.txt

No se ha quejado. Voy a ver el contenido de la salida:

cat salidaSteghide.txt

¡Bingo!

Para continuar con el reto, tendrás que buscar el programa Stereogramm-Decoder, tambien conocido como  StereoDecoder. Esta hecho/firmado por Carsten Neugauer. *

El asterisco lo acabo de poner: me acabo de dar cuenta de que eso de "está hecho/firmado" no es que sea la mejor expresión. Pero bueno, supongo que se entiende.

Por lo tanto, la segunda pista que había que sacar era esta. Aunque se hubiese sacado la primera y la que nos entregará la siguiente imagen, sin esta pista no hubiese dado por válido el resultado.

Por lo tanto, nos está pidiendo que usemos el programa StereoDecoder. Lo que nos permitirá no dejarnos los ojos buscando detrás del estereograma.

Por lo tanto, una vez nos descargamos el programa, lo vamos a configurar. En mi caso, le he puesto los siguientes valores. Realmente al final es un poco de ensayo y error:

StereoDecoder by Carsten Neugauer: search-dist = 100; blocksize = 6
StereoDecoder by Carsten Neugauer: search-dist = 100; blocksize = 6

Si esperamos un minuto o dos obtendremos:

Solución: Muchas gracias. Has encontrado el lugar donde estaba escondido el alijo.
Solución al estereograma
Por lo tanto, la tercera y última pista (o solución final) es:

Muchas gracias. Has encontrado el lugar donde estaba escondido el alijo.

Como habréis podido observar, este último programa lo he utilizado en Windows. Pero, si no me acuerdo mal, también probé a usarlo con wine y no me dio problemas. 

Ciertamente este reto no siento que me haya salido bien. Ha sido bastante desastre. Encontrarse con que las imágenes subidas no son lo que tenían que ser (actualizándolo en el mismo momento en el que lo alertaron) y el tiempo que he tardado en publicar el resultado. Está claro que he aprendido varias lecciones:

  • Tenes escrita la solución antes de publicar el reto. Así, sólo hará falta unos pocos clicks para publicarla y no tardar una eternidad.
  • Aunque el reto estará muy, muy probado antes de mostrarlo al público, tener muy presente que se pueden presentar cambios en los ficheros subidos, por lo que hay que revisar que las firmas o hashes de los mismos cuadran con lo esperado. 
 Así, por curiosidad: ¿Cuántos de vosotros lo intentásteis al menos? ¿Hasta dónde llegásteis? Seguro que tenéis más consejos para los próximos que monte. Como de costumbre, siempre que sean con buen tono, bienvenidos serán. 

miércoles, 9 de abril de 2014

Hashes en Java

Para algún que otro proyecto que me he ido montando, he tenido la necesidad de sacar el hash de alguno de los objectos con los que estaba trabajando. Como de costumbre, es ese tipo de cosas que aunque en algún momento determinado ya las has hecho, siempre se te olvida cómo volverlo a hacer. Y tienes que volver a buscar. En mi caso, se trataba, precisamente, de obtener el resultado de la aplicar una función de hash determinada y recuperar el valor correspondiente, utilizando java.

Ahora que quería recopilar las cosas que había estado haciendo, me he encontrado con que no localizo alguna de éstas, y además, que lo que tengo, no es exactamente como esperaba.

Para el tema de los hashes me estoy acordando de que tengo dos opciones.

Opción "nativa"

Para esta opción tenemos que utilizar MessageDigest. En el mismo momento de instanciarla habrá que indicarle el algoritmo que queremos utilizar. Si no existiese, nos lanzaría una excepción. Un ejemplo sería este:

 String valor = "123456";  
 try{
  String hashAux = "";
  MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
  messageDigest.reset();
  messageDigest.digest(valor.getBytes("UTF-8"));
  messageDigest.update(valor.getBytes());
  byte[] digestArray = messageDigest.digest();
   
  for(byte aux : digestArray) {
   int b = aux & 0xff;
   if (Integer.toHexString(b).length() == 1)
    hashAux += "0";
   hashAux += Integer.toHexString(b);
  }
  
  String result = new String(digestArray);
  System.out.println("hashAux: "+hashAux);
 }catch(Exception e){
  System.out.println("E: "+e);
 }

Como resultado obtendremos:



8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

y se puede verificar que es correcto al compararlo en un algún sitio por Internet.

Además, hay que tener en cuenta los distintos algoritmos que pueda permitir. Al menos no parece trivial encontrarlo. En alguno de los sitios donde he ido a buscar (porque, recuerdo, que hacía tiempo que no tenía que trabajar sobre esto, y lo de hardcodear los valores no me hacía ninguna gracia), he visto una lista parecida a esta:

  • MD2
  • MD5
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA, SHA-1, SHA1
En la que voy a considerar los últimos elementos como que hacen el mismo algoritmo. ¡Ojo! Que según qué equipo podría fallar. 

Los resultados también podrían cambiar si estamos trabajando con codificaciones diferentes. En mi caso, he definido la que venía en el ejemplo. 

Opción "apache commons"

La otra opción es utilizar la librería de apache commons. Nos ofrecerá el método DigestUtils, el cual, al mismo tiempo, nada más instanciarlo tendremos que indicarle qué hash utilizar. 

 String hashAux2 = null;
 String hashAux3 = "";
 byte[] hashAux3byte = null;
 try{
  hashAux2 = DigestUtils.sha256Hex(valor); 
  hashAux3byte = DigestUtils.sha256(valor);
  for(byte aux : hashAux3byte) {
   int b = aux & 0xff;
   if (Integer.toHexString(b).length() == 1)
    hashAux3 += "0";
   hashAux3 += Integer.toHexString(b);
  }
     System.out.println("hashAux2: "+hashAux2);
     System.out.println("hashAux3: "+hashAux3);
     
 }catch(Exception e){
  System.out.println("Exception hash: "+e.getMessage());
 }

Como podréis comprobar, tenemos la opción de que nos pase directamente la cadena convertida en formato hexadecimal, y así no tendremos que hacer la chapuza de iterar sobre cada una de las posiciones del array que nos devuelva. Tambien DigestUtils nos ofrece directamente los algoritmos con los que nos permitirá trabajar.

A la hora de ejecutar este último ejemplo podremos ver que, en efecto, el resultado es el mismo que en el primero.

Esta última opción creo que es la mejor, aún dependiendo de una librería que se tenga que importar y que no venga directamente en la paquetería de java.

Espero que esto os sea de utilidad. Por mi parte, me vendrá muy bien tenerlo a mano para cuando se me vuelva a olvidar cómo lo hice.