The Information Systems and Computer Applications examination covers material that is usually taught in an introductory college-level business information systems course.

Author Archive

Consejos prácticos a la hora de integrar criptografía

 

 
Me encuentro a diario con personas (principalmente gente que desarrolla o administradores de sistemas) que se encuentran en el proceso de mejorar la seguridad de sus productos / sistemas implementando criptografía como aliada.
 
Muchas veces se da el caso que existe más buena FE que conocimiento a la hora de abordar esa tarea, y se cometen errores muy inocentes que tiran por tierra el esfuerzo de adoptar una solución por haberla adoptado incorrectamente.
 
En este post me gustaría compartir ‘tips’ sobre cómo abordar estos procesos para que deriven en un mejor resultado.

Almacenamiento de contraseñas
 
Este es el punto en el que más fallos se cometen, en muchos casos debido a que existe mucha información ‘legacy’ muy bien posicionada en Google a la que llega la gente y la usa como referencia.
 
Veamos consejos a la hora de realizar esta tarea:
  • Olvida y entierra la tentación de cifrar la base de datos con una única contraseña y almacenar dentro las contraseñas en claro. No, ese esquema no es seguro, delegas toda la seguridad en una única contraseña que resulta fácil de obtener (por ejemplo revisando el código del programa que cargue esa base de datos). Nunca utilices criptografía reversible para guardar contraseñas
  • Fundamental: OBVIA EL ALGORITMO MD5, sí, es seguro que vas a ver muchos ejemplos en Google que hablan de MD5, de hecho se sigue usando en otras tareas, pero nunca es aconsejable su uso para esta tarea. En su lugar usa SHA-512, penaliza el rendimiento con respecto a MD5, pero es algo imperceptible
  • Emplea técnicas de ‘salting’ a la hora de almacenar el hash de la contraseña. Usar salt significa que, si la contraseña es 123456, en vez de guardar la representación de 123456 en su forma ‘hasheada’ lo que haces es introducir otro elemento que impida a un atacante usar un listado de hashes de contraseñas ya precompilado. Es decir, lo que guardas es salt+123456 que obviamente genera un hash diferente a 123456 (y que un atacante podría tener ya hasheado con lo que se ahorra el proceso criptográfico). En un típico esquema de usuario / contraseña para una aplicación web, es ideal usar el correo electrónico como salt ya que es un dato conocido y accesible (normalmente se envían correos de confirmación de altas) de forma que, en el ejemplo antes descrito, al final el hash se haría contra fulano@mengano.com+123456
  • De nota: Usa PBKDF2 sobre los hashes que guardes. PBKDF2 es un estándar RSA para derivación de claves. Sin entrar en las profundidades matemáticas, lo que hace PBKDF2 es hacer más costoso el tiempo de computación de un hash. Los algoritmos de la rama SHA son algoritmos que han sido diseñados para ser rápidos, es decir, para que el costo computacional no sea elevado, eso, visto desde nuestra perspectiva, significa que los hashes que vamos a almacenar si usamos únicamente SHA se pueden atacar por fuerza bruta a un costo muy pequeño. Si usamos PBKDF2 lo que vamos a hacer es que, generar el hash, ‘cueste’ bastante más. Como decía al principio esto es de nota y SÍ va a tener un impacto notable a la hora de procesar peticiones de login en tu aplicación. Para una aplicación pequeña y que requiera máxima seguridad, ideal. Para un Facebook, probablemente no. Existen implementaciones de PBKDF2 en todos los lenguajes típicos
Cifrar datos
 
Vamos a abordar el tema de cifrar datos, una práctica muy deseable a la hora de trabajar con documentos o con datos.
  • Evita el uso de los algoritmos DES y RC4. En el caso de DES principalmente porque hay alternativas mucho mejores en cuanto a algoritmos de cifrado ‘de bloque’, el tiempo que inviertas en implementar uno mejor, va a ser idéntico a usar el desfasado DES. En el caso de RC4 la cosa cambia, es un algoritmo ‘simpático’, muy fácil de implementar al ser ‘de flujo’. No requiere complicarse y por tanto resulta tentador usarlo (honestamente, para un desarrollo cuyo nivel de seguridad sea bajo puede ser una opción)
  • Cuando uses un algoritmo ‘de bloque’, como AES, GOST o Blowfish, siempre usa el modo ‘CBC’ que impide que un mismo dato tenga el mismo aspecto en diferentes puntos de los datos cifrados. Si usas, por ejemplo, el modo ECB, significa que la representación cifrada de ‘securitybydefault’ siempre tendrá el mismo aspecto una vez cifrado, lo que puede facilitar el criptoanálisis. 
Desplegar SSL
 
Vamos con la forma más optima de desplegar un servicio bajo SSL
  • Usa certificados de 2048 bits. Ahora es lo mínimo exigible, de hecho, muchas CAs no admiten peticiones por debajo de esa longitud.
  • Mejor certificados EV que certificados convencionales. Eso sí, son más costosos en tiempo y dinero. Siempre puedes empezar con uno tradicional e ir preparando los requerimientos de un certificado EV.
  • Deshabilita SSL v2. Hoy día no existen razones reales de compatibilidad que hagan necesario el uso de esa versión del protocolo
  • Obvia algoritmos de baja calidad, en concreto RC4, aunque lo deseable es configurar tu servidor para que solo use algoritmos de alta seguridad
  • Habilita en tu servidor el uso de ‘HTTP Strict Transport Security‘ esto instruye al navegador para que, una vez visitado un sitio bajo SSL, se niegue a hacerlo bajo HTTP lo que protege a tus usuarios de ataques ‘sslstrip

sshpass – Conectar sin contraseña por SSH sin usar claves privadas

Si necesitamos automatizar una tarea, pero el servidor SSH no lo podemos definir que acepte nuestra clave pública: por ejemplo las consolas de gestión fuera de banda como las iLO o DRAC. Deberemos usar sshpass para pasarle el password:

Para conectar por ssh con sshpass, simplemente ejecutamos el mismo comando que usamos para conectar por ssh con sshpass delante, por ejemplo:

$ sshpass -p passw0rd ssh -l usuario host

Tenemos varias opciones para pasar la contraseña a sshpass:

  • Directamente la contraseña como parámetro con la opción -p. Dicha contraseña de sustituye por Zs por lo que no queda visible:
    |       \_ sshpass -p zzzzzzzzzzzzz ssh -l root 10.10.40.155
    |           \_ ssh -l root 10.10.40.155
    
  • Mediante un fichero, indicamos el path del fichero con la opción -f. De esta forma si el fichero tiene los permisos adecuados es suficientemente seguro.
  • Mediante una variable de entorno. Si indicamos la opción -e espera que la contraseña se encuentre en la variable SSHPASS que podemos pasar al lanzar el proceso:
    SSHPASS="passw0rd" sshpass -e ssh -l root 1.2.3.4
    

    Dicha variable no queda imposible de recuperar, se puede extraer igualmente mediante el procfs, pero de nuevo queda protegida por los permisos de usuario:

    # cat /proc/4301/environ 
    SSHPASS=passw0rd(...)
    
    
    
    
    Al pasar el comando tal cual a sshpass, podemos también ejecutar comandos remotos o cualquier otra opción que tenga el ssh o el comando que necesitemos. En realidad, sshpass, se dedica únicamente a pasar la contraseña cuando la pide:
    # sshpass -p passw0rd ssh -l root 10.12.40.155 show
    dispatch_protocol_error: type 100 seq 8
    show
    status=0
    status_tag=COMMAND COMPLETED
    
    
    /
      Targets
        system1
        map1
      Properties
      Verbs
        cd version exit show
    
    
    </>hpiLO->
    
    Tags: 

    Relacionados




    sshpass – Conectar sin contraseña por SSH sin usar claves privadas was first posted on September 25, 2013 at 11:46 am.

Defiende tu sistema Windows ante ataques de fuerza bruta con RdpGuard

 

 
TwitterFacebookLinkedInBufferMail
Evernote
+Tag
Uno de los ataques que más problemas está creando en el ‘Mundo Microsoft’ son los ataques por fuerza bruta al servicio RPD (terminal server)
 
En muchas de las infecciones por Ransomware el origen es un ataque de fuerza bruta que ha conseguido comprometer una cuenta de administrador y luego de eso, vía libre para hacer y deshacer en el sistema.
 
En el ‘Mundo Linux’ hemos disfrutado desde hace mucho tiempo de una aplicación tan potente como Fail2Ban que monitoriza los intentos de fuerza bruta y permite aplicar acciones sobre ellos.
 
Buscando una alternativa para servidores Windows, llegué hasta ‘RdpGuard‘ una herramienta que permite monitorizar ataques de fuerza bruta a RDP y no solo eso, también a ftp y a SQL Server.
 
La aplicación se instala de forma fácil a golpe de ratón

Pulsamos ‘Next’

 

Aceptamos la licencia

Seleccionamos donde queremos instalar la aplicación

Elegimos qué usuarios van a ver la interface de administración

Y ya está, ya tenemos listo RdpGuard
 
Una vez que se detecte algún intento de fuerza bruta, podemos consultar desde la interface gráfica la IP que nos ha atacado y el tiempo de bloqueo

 
El tiempo de bloqueo es configurable según lo que estimemos necesario

Para más información podéis ir a la página web del proyecto

Introducción a WMI

 

 
TwitterFacebookLinkedInBufferMail
Evernote
+Tag

El Instrumental de administración de Windows (WMI) es la fuente principal para administrar los datos y la funcionalidad en equipos locales y remotos que ejecutan los sistemas operativos Microsoft Windows. Con WMI se puede consultar los diferentes componentes de un sistema operativo Windows, así como el estado de su software o hardware. Por ejemplo, con WMI se podrá obtener cuantos usuarios hay en el sistema, o el uso de la CPU, incluso las tarjetas de red y su estado.

WMI se estructura en forma de árbol, permitiendo realizar consultas al mismo, además se integra perfectamente con PowerShell o C# lo que convierte a WMI en una herramienta muy versátil con posibilidad de incluirla en Scripts.

Para ver el funcionamiento directamente, se va a plantear un ejemplo con PowerShell ejecutando el comando “Get-WmiObject –class Win32_OperatingSystem”.

 

clip_image001

Imagen 1- Consultando los objetos WMI para obtener la versión del sistema

Esta consulta devolverá el directorio donde está instalado el sistema, su versión, la organización, el usuario registrado y el número de serie. Hay muchos y diferentes objetos y clases que pueden ser consultados a través de WMI, para obtener una lista de las clases, se puede usar el comando “Get-WmiObject -List”:

clip_image003

Imagen 2- Lista de clases WMI

Es importante recordar que cada clase contiene objetos con mucha más información, si se añade la selección de objetos al ejemplo anterior veremos como la respuesta muestra mayor cantidad de información:

clip_image005

Imagen 3- Consulta a todos los objetos de la clase Win32_OperatingSystem

También se puede usar una sintaxis parecida al de una consulta SQL, añadiendo el operador –query:

clip_image007

Imagen 4- Consulta con el operador -query para obtener el porcentaje de uso de la CPU

En el siguiente post se explicara como ejecutar consultas WMI en equipos Remotos. Si te ha gustado el post, te recomendamos leer el libro de PowerShell: la navaja suiza de los administradores de Sistemas .

 

Además  si te ha gustado el artículo puedes suscribirte al Canal RSS de Windows Técnico, o seguirnos por el  Canal Google+ de Windows Técnico o  Twitter para estar al día de las novedades e información técnica de interés.


Wanderlust with a purpose

Originally posted on Riulyn's Blog:

Starting games and not finishing them? Usually that’s a bad thing, since you’ve paid all that money, begged your friends, and/or have limited time to play the game. But this weekend I decided to engage in some good wanderlust. The type of wanderlust that allows you to play a bit of a bunch of games you haven’t played before but you own and you need to really know what they are about.

So here’s what I started and dabbled with this past week or so:

Drakengard – I want to like this game more, but I am fighting the controls and the enemies. Also, blocking doesn’t decrease damage taken a ton. Even on Easy I am stuck in Chapter 3. I did some free missions and got another weapon from one of them, but ultimately those heavy-armored guys with clubs are my biggest weakness and I might have to master dodge-rolling…

View original 519 more words


iOS 7 Will Be Available For iPads And iPhones On September 18

Originally posted on TechCrunch:

At their event this morning in Cupertino, Apple’s Craig Federighi announced that iOS 7 will be available to everyone beginning on September 18th. iOS 7 was first announced back at WWDC in June, and has spent the last three months in a developer-only (wink, wink) Beta testing mode.

As expected, the update will be available for the iPhone 4 and later, the iPad 2 and later, the iPad mini, and the 5th gen iPod touch.

“Since we make updates easy, and available to as many customers as possible,” Apple CEO Tim Cook said. “iOS 7 will quickly become the world’s most popular mobile operating system.”

Those are some bold words, considering how dramatic a shift iOS 7 is away from the norm. If you’ve somehow missed it, iOS 7 is a pretty massive departure from iOS’ past iterations. Almost every core visual of the OS — from the icons, to…

View original 240 more words


Dell Reportedly Has The Votes To Close The $24.9B Michael Dell-Silver Lake Buyout Deal

Originally posted on TechCrunch:

The Dell deal is now all but done, according to Bloomberg who today reported that there are enough yes votes to ice the Michael Dell-Silver Lake proposal that will see the firm taken private for $24.9 billion.

This news comes on the heels of the withdrawal of the rival Icahn bid that would have seen a tender offer for the majority of Dell shares at a higher per-share price. However, that deal would have left Dell a public company, albeit one with an odd liquidity structure.

Michael Dell and Silver Lake are using a few billion Microsoft dollars — tapped from Redmond’s overseas cash hoard — to finance the shebang. Bloomberg notes that “[h]olders of two-thirds of the voting shares have indicated their support for the proposed transaction.” So, that’s that.

It has been a long, often comical road. First, Dell was said to be dramatically undervalued by its founder…

View original 128 more words


Follow

Get every new post delivered to your Inbox.

Join 21,418 other followers