martes, 31 de enero de 2012

Ejercicios prácticos sobre hacking

gotroot.png

Ya sea por motivos profesionales, porque te estés preparando para un wargame o porque simplemente sea uno de tus hobbies, en exploit-excercises.com han creado 3 proyectos que a través de ejercicios prácticos tocaremos distintos temas sobre hacking/seguridad como: escalada de privilegios, explotación por desbordamiento de pila, format string, ASLR, mecanismos de protección de pila y mucho más.
Todo ello en tres proyectos diferentes:
  • Nebula: enfocado a la escalada de privilegios en sistemas Linux. Los temas que toca son:
    • SUID files
    • Permissions
    • Race conditions
    • Shell meta-variables
    • $PATH weaknesses
    • Scripting language weaknesses
    • Binary compilation failures
  •  Protostar: corrupción de memoria en sistemas Linux x86.
    • Network programming
      • Byte order
      • Handling sockets
    • Stack overflows
    • Format strings
    • Heap overflows
  • Fusion: es un poco más avanzado que Protostar y trata técnicas de explotación más avanzadas y de mecanismos anti explotación:
    • Address Space Layout Randomisation
    • Position Independent Executables
    • Non-executable Memory
    • Source Code Fortification (_DFORTIFY_SOURCE=)
    • Stack Smashing Protection (ProPolice / SSP)
    • Cryptographic issues
    • Timing attacks
    • Variety of network protocols (such as Protocol Buffers and Sun RPC)
Happy hacking!
Fuente: cyberhades

Ejercicios prácticos sobre ingeniería inversa con IDA Pro


defend-reverse-engineering.jpg

A diferencia de la entrada del otro día sobre ejercicios prácticos de hacking que abarcaba muchas técnicas de explotación, en este caso los ejercicios están enfocados a la ingeniería inversa o como lo definen los autores de dichos ejercicios, auditoría de binarios.
En este caso todo lo que necesita es este archivo zip que contiene no sólo todos los ficheros que necesitas para completar tus ejercicios, sino que además viene con la versión gratuita de IDA Pro 5.0. El archivo está protegido con la contraseña: fdcd2ff4c2180329053650f3075d39f4
El contenido del archivo zip es el siguiente:
salida.png
Nota: yo tuve algún problemilla cuando descomprimí el archivo y es que veía todos los directorios vacíos, sin embargo el comando unzip mostraba como iba descomprimiendo cada fichero sin ningún tipo de problemas. Luego me di cuenta que era problemas de permisos en la estructura de directorios extraída.
Para curarme en salud, me hice el puto amo de todos los directorios y ficheros:
sudo chown tuxotron:tuxotron * -R
Y luego le di todos los permisos al owner:
chmod 700 * -R
Para más información visita la web original

Fuente: cyberhades

Ingeniería inversa a un fichero ELF (paso a paso)


hackmeTut
Linux
Muy buena práctica de ingeniería inversa para aprender a usar algunas herramientas que nos proporciona Linux.
El autor nos cuenta paso a paso cómo consigue sacar la contraseña a un fichero  (en concreto formato ELF)  que un amigo suyo le envía (y que puedes descargar aquí para practicar) y le desafía a hackearlo.
El programa simplemente al ejecutarlo pide un password y muestra algunos mensajes de salida por la consola.  Se explica paso a paso todo el proceso, desde el primero  para saber el formato del fichero (usando el comando file de Linux), hasta desensamblarlo (con GDB), tracearlo (con ptrace) e incluso creando un programa en C para sacarle finalmente la contraseña.
Es interesante ya que el fichero tiene algunas técnicas de protección contra debugging.

Fuente cyberhades

Leer y escribir en particiones NTFS desde Mac OS X Lion

Hace tiempo hablé sobre una utilidad muy simple que nos permitía de manera muy sencilla poder montar y escribir en particiones NTFS desde Mac OS X Snow Leopard.
Con la actualización al nuevo sistema operativo esta utilidad ha dejado de funcionar pero hoy voy a explicar los pasos a seguir para poder leer y escribir en particiones en formato NTFS desde Mac OS X Lion.
Viendo que el método que utilizaba dejó de funcionar busqué un poco de información y caí en este blog donde explican como hacerlo. A continuación detallo los pasos a seguir:
  1. Instalar OSXFuse (última versión aquí). Siempre se había usado MacFuse pero el proyecto dejó de recibir actualizaciones en Diciembre del 2008. OSXFuse es la continuación de MacFuse actualizado el código para dar soporte al nuevo kernel de OS X de 64 bits.
  2. Reiniciar.
  3. Instalar NTFS-3G (última versión estable). Este es otro proyecto que desde finales de 2010 no recibe actualizaciones ya que se hizo de pago pasando a llamarse Tuxera NTFS for Mac. Pero NTFS-3G funciona sin problemas.
  4. [OPCIONAL] En mi caso particular aunque los discos se montan bien cada vez que conecto alguno me aparece un aviso que no pudo hacerse por no recibir señal en 15 segundos. Para solucionar este error con Xcode instalado hay que descargar este archivo y seguir estas instrucciones.
Es muy importante que sigáis los pasos según los he puesto. Yo instalé primero NTFS-3G y después OSXFuse y al conectar un disco NTFS-3G me daba un error porque no encontraba una librería.
Una vez hecho esto automáticamente cuando se conecte una unidad con formato NTFS se montará con acceso de lectura y escritura sin hacer nada.
Unidad NTFS conectada a Mac OS X Lion

Fuente: exponentegeek

domingo, 29 de enero de 2012

Man in The Middle, Ataque y Detección

A mis manos ha caído un documento realizado por David Galisteo y Raul Moya, de la Universidad de Jaén en España, donde se detallan paso a paso como realizar un ataque Man in The Middle (Hombre en el Medio) en diferentes sistemas operativos y con las herramientas mas populares en cada uno de ellos, aparte de esto Galisteo y Moya, nos muestran como detectar y protegernos de este tipo de ataques.



Los dejo con el índice del documento, su enlace de descarga y la opción de visualizarlo online desde nuestra comunidad:
  • Introducción
  • Conceptos clave
  • Plataformas Linux
    Software
    Explicación
    Ataques de ejemplo
    • Dispositivos móviles
    • Mensajería instantánea
    • Redes sociales y UJAEN
  • Plataformas Windows
    Software
    Ataques de ejemplo
    • Dispositivos Móviles
    • DNS Spoofing
  • Detección del ataque
    • Acceso a la máquina
    • Prueba de ICMP
    • Prueba de ARP
    • Aplicaciones para detectar sniffers
    • Protección frente a Sniffers
  • Conclusión
  • Referencias

viernes, 27 de enero de 2012

Usando screen


Seguramente te ha pasado que estás haciendo una larguísima tarea, no sé, un tar, una instalación remota, en fin: algo que te ha dado muuuucho trabajo lograr, pasan los minutos, las horas, ya está bien avanzado el tema y de repente.. pum.. se cierra la sesión!!
ya sea que se cerró por timeout, porque se te fue la luz, la insternet o lo que sea... es algo doloroso... los gritos llegan al cielo, las invocaciones e imprecaciones son grandes!
Esto lo podías haber resuelto con usar el comando screen.
screen te permite mantener una sesión activa en tu servidor Linux, incluso desconectarte de él y posteriormente (minutos, horas o días después) reconectarte a esa sesión y ver cómo va avanzando.
Si tu haces una labor dentro de un screen y se te cae la conexión.. no importa, ahi sigue funcionando hasta que puedas reconectarte.
El screen incluso nos permite aqui en la empresa compartir trabajos.. cuando estamos haciendo operaciones en masa en nuestro servidor, nos conectamos todos a un screen. El screen puede abrir varias ventanas, así que cada uno trabaja en una ventana y cuando nos queremos consultar o ayudar, sencillamente nos movemos entre diferentes screens hasta alcanzar la del compañero, le ayudamos y regresamos; o en una screen dejamos corriendo un proceso largo en lo que trabajamos en otras screens y monitoreamos de vez en cuando.
En realidad, es maravilloso. Es cuestión de aprender a usarlo básicamente. Por favor, tiene muchísimas opciones, sólo explicaré algunitas.
Primero que todo: Si no tienes instalado el paquete, hazlo ahora:
sudo apt-get install screen
Ahora sí, para comenzar a trabajar con un screen ejecutamos el comando:
screen
Este comando se ejecuta solo una vez. Los otros que quieran entrar al screen que abrimos pueden ejecutar:
screen -rx
screen -rx nos permite reconectarnos (conectarnos) a un screen previamente abierto.
Si deseamos dejar un screen abierto ejecutando algún comando ponemos:
^a d
así como lo ves: control-a, soltamos las teclas y apretamos d (no mantengas apretado ^a)
la d viene de: detach, desconectar.
al desconectarnos, dejamos abierto con el comando ejecutando. Si queremos reconectarnos hacemos:
screen -rx
ya está, nos hemos conectado neuvamente (fijate que screen -rx ya le vimos antes, y hace precisamente esto).
Ahora, hasta el momento hemos utilizado una sola ventana... pero screen nos permite manejar múltiples ventanas en la sesión.
Para abrir una neuva ventana ponemos:
^a c
Correcto, como antes: Control-a, soltamos las teclas y apretamos c
la C viene de: create, crear.
Estamos ya en la segunda ventana, tenemos dos ventanas en el screen.
Para movernos a la ventana anterior ponemos:
^a p
la p viene de previuos
o si queremos ir a la siguiente ponemos:
^a n
n: next
podemos abrir con ^a c, varias ventanas, muchas, y podemos ciclar entre ellas apretando continuamente ^a p o ^a n, incluso cuando se llega a la ultima ventana, nos regresaría a la primera (ciclo).
¿Cómo se cierra un screen?
El último salga que apague la luz: Es decir, el último usuario de la última ventana del screen, al apretar ^d, cerrará esta última ventana y por lo tanto la sesión de screen (fíjate que hay diferencia entre ^a d que detachea y ^d que cierra una ventana)
Te lo sugiero enormemente.. es realmente útil

Fuente: ecualug

martes, 24 de enero de 2012

Synergy: controlar varios ordenadores sólo con un ratón y un teclado - configurar en ubuntu


Si tienes un ordenador portátil y otro de sobremesa, estoy seguro de que alguna vez te habrá ocurrido: pones uno junto al otro para pasar información o realizar algún tipo de configuración en uno mientras trabajas con el otro y acabas loco cambiando continuamente del teclado y el ratón del equipo de sobremesa al del portátil.
Afortunadamente, tengo la solución. Se llama Synergy y se trata de un programa con licencia GPL que te permite utilizar el mismo teclado y el mismo ratón en varios ordenadores a la vez. Además, los ordenadores implicados pueden estar ejecutando cualquiera de los sistemas operativos más frecuentes (Linux, Windows o MacOS), siempre que estén debidamente configurados para trabajar con el protocolo TCP/IP (que es lo más común) y, lógicamente, conectados a la misma red.
Una vez que se encuentre debidamente instalado y configurado, sólo tendrás que desplazar el puntero del ratón hasta el lateral de la pantalla de uno de los ordenadores para ver cómo el puntero continúa por la pantalla del otro. El teclado actuará sobre el ordenador donde se encuentre activo el puntero del ratón.
Además, ambos ordenadores compartirán el portapapeles, de forma que si en un ordenador copias un texto, al cambiarte de ordenador podrás pegarlo en el otro.
Una cuestión que debemos tener en cuenta, antes de nada, es la seguridad. Utilizando Synergy vamos a permitir que un ordenador sea controlado desde otro, por lo que, si te encuentras en un entorno que consideras inseguro, mi recomendación es que te abstengas de utilizarlo. Existe un método para instalarSynergy de forma segura, utilizando OpenSSH, que está documentada en la página web del programa, pero que excede las expectativas de este artículo (quien sabe si otro día …)
Por otra parte, para evitar confusiones, debemos aclarar la nomenclatura a utilizar antes de continuar. El ordenador que comparte su teclado y su ratón recibirá el nombre de servidor y los diferentes ordenadores que sean controlados por él (hasta cuatro) se llamarán clientes.
Si tienes curiosidad por ver cómo funciona esto, sólo queda ponernos manos a la obra.

Instalación

Synergy es un programa que se encuentra en los repositorios de Ubuntu, de forma que sólo tendrás que abrir Synaptic (Sistema > Administración > Gestor de paquetes Synaptic) y buscar el paquete con el nombre Synergy. Una vez encontrado, sólo tienes que hacer clic sobre su nombre con el botón derecho del ratón y elegir Marcar para instalar en el menú de contexto.
Figura 1
Instalar Synergy
Después, sólo tendrás que hacer clic sobre el botón Aplicar y seguir el asistente.

Configuración

Para poder utilizar Synergy, antes debemos crear un archivo de configuración en el servidor, concretamente en el directorio /etc. Este archivo puede tener el nombre que quieras pero, para evitar confusiones, nosotros lo llamaremos synergy.conf.
Como no tendremos permisos para crear este archivo desde nuestra cuenta de usuario, necesitamos ejecutar Nautilus con privilegios de administrador, lo que conseguimos abriendo una Consola (Aplicaciones > Accesorios > Terminal) y escribiendo la siguiente orden:
sudo nautilus
Figura 2
Ejecutar nautilus
En la ventana que se abre, debes desplazarte hasta la carpeta /etc y, una vez allí, hacer clic con el botón derecho del ratón en cualquier espacio libre del área de trabajo y, en el menú de contexto, elegir Crear un documento > Archivo vacío.
Figura 3
Crear archivo
Una vez creado el archivo, cambia su nombre por synergy.conf.
Figura 4
Nombrar el archivo
El siguiente paso consiste en escribir dentro del archivo los parámetros de configuración adecuados. Para conseguirlo, debes comenzar por editarlo. Ya sabes, sólo tienes que hacer clic con el botón derecho del ratón sobre el archivo y elegirAbrir con “Editor de textos” en su menú de contexto.
Figura 5
Abrir con el editor de textos
Cuando se abra la ventana del editor, debes escribir algo similar a lo siguientes (se incluye el texto completo más abajo, para que puedas copiarlo)
Figura 6
Contenido del archivo
Como puedes ver, el archivo se divide en dos secciones:
  • La primera, llamada screens, permite definir qué ordenadores estarán implicados. Sólo tienes que incluir los nombres de equipo (hostnames) de cada equipo participante.
  • La segunda, llamada links, indica cómo se relacionan los ordenadores entre sí. En el ejemplo, puedes ver que si en el ordenador laptop movemos el ratón hasta su lateral izquierdo, iremos al ordenador desktop y que, cuando estemos trabajando en desktop, pasaremos a laptop moviendo en ratón hasta el lateral derecho.
Como ves, en mi ejemplo sólo dispongo de dos ordenadores, pero puedes tener hasta cuatro clientes por cada servidor, uno en cada lateral de la pantalla.
Aquí tienes el código del ejemplo en formato de texto:
section: screens
   laptop:
   desktop:
end

section: links
   laptop:
      left = desktop
   desktop:
      right = laptop
end
Una forma rápida de conocer el nombre del ordenador es utilizando el siguiente comando…
hostname
… Que ofrece una salida como la siguiente:
Figura 12
Averiguar nombre del ordendor
En cuanto al ordenador cliente, no hay que hacer absolutamente nada.

Ejecutar Synergy

Bueno, pues ya hemos llegado a la parte buena: Ver si nuestro esfuerzo da sus frutos.
En realidad, la tarea es muy sencilla. Sólo tienes que abrir una Consola en el servidor (Aplicaciones > Accesorios > Terminal) y ejecutar el comando synergys con la siguiente sintaxis:
synergys -c /etc/synergy.conf
A continuación, abre otra consola en el cliente y ejecuta el comando synergycponiendo como argumento la dirección IP del servidor:
synergyc 172.26.1.150
En mi caso, como ves, la dirección IP del servidor es 172.26.1.150, pero probablemente no coincida con la tuya. Si no sabes averiguarla, es tan sencillo como abrir una consola en el servidor y escribir el siguiente comando:
ifconfig
Obtendrás una salida similar a esta, donde la IP que buscas será la que aparezca tras las palabras inet dirección en la segunda línea
Figura 11
Aveiguar IP
Si todo ha ido bien, ya puedes probar el funcionamiento del programa.

Ejecutar Synergy todos los días

Si piensas ejecutar Synergy a diario, quizás deberías plantearte que los comandos del apartado anterior se ejecutaran de forma automática cada vez que inicies tus ordenadores. Recuerda que ya hemos dedicado dos artículos a este tema en el blog:Arrancar programas al iniciar la sesión y Arrancar programas al iniciar la sesión (2ª parte). Cualquiera de ellos te puede servir para resolver la situación.

Ejecutar Synergy de vez en cuando

Si no vas a utilizar Synergy todos los días, es posible que no te merezca la pena ejecutarlo de forma automática cada vez que inicies el sistema. En estos casos, puedes crear un lanzador en el escritorio de cada uno de los ordenadores implicados o en alguno de sus paneles (como explicamos en el artículo Crear un lanzador) o incluso crear una entrada en sus menús del sistema (como vimos en Instala jDownloader y automatiza la descarga de Rapidshare y Megaupload, en el apartadoEl toque final).
Sin embargo, también dispones de QuickSynergy, un programa con interfaz gráfica, que también puedes encontrar en los repositorios de Ubuntu y que permite configurar y ejecutar Synergy de una forma extremadamente sencilla, tanto en el cliente como en el servidor.
Si instalas QuickSynergy antes que Synergy, se instalarán ambos, ya que éste se encuentra entre sus dependencias. En teoría, con esto podrías omitir tanto el apartado de instalación como el de configuración de este artículo. No obstante, aunque he encontrado documentación que asegura que esto es posible, en mi sistema no ha funcionado correctamente hasta que he creado a mano el archivosynergy.conf (puede que por falta de permisos), por lo que te recomiendo que sigas el orden explicado aquí, para evitar contratiempos.
Como de costumbre, para instalar QuickSynergy, sólo tienes que abrir Synaptic (Sistema > Administración > Gestor de paquetes Synaptic) y buscar el paquete con el nombre QuickSynergy. Una vez encontrado, sólo tienes que hacer clic sobre su nombre con el botón derecho del ratón y elegir Marcar para instalar en el menú de contexto.
Figura 7
Instalar QuickSynergy
Después, sólo tendrás que hacer clic sobre el botón Aplicar y seguir el asistente. Recuerda que tendrás que realizar esta misma operación en todos los ordenadores implicados.
Cuando termines de instalarlo, puedes ejecutar el programa desde Aplicaciones > Accesorios > QuickSynergy.
Figura 8
Ejecutar QuickSynergy

En la pantalla principal del programa dispones de dos solapas: Share, donde especificas desde qué lateral del monitor pasarás al otro equipo …
Figura 9
Solapa Share

… Y Use, donde se indica el nombre del equipo con el que compartiremos ratón y teclado (o la IP, si nos referimos al servidor).
Figura 10
Solapa Use

Cuando hayas configurado correctamente QuickSynergy en todos los ordenadores, sólo tendrás que hacer clic en el botón Execute de cada ventana.
Una última recomendación: si tienes configuardo un cortafuegos en alguno de los ordenadores implicados, debes establecer las excepciones adecuadas para permitir el tráfico de información producido por Synergy.
Como ves, se trata de un programa muy interesante y fácil de usar, espero que te resulte útil.

Fuente: sliceoflinux