AutorZerial

ooPhBOT v1.0.5

Hace dias corregi el algoritmo de busqueda de sitios y definiciones para google, pero no lo habia subido. Ya esta disponible la version 1.0.5 del ooPhBot y lo puedes descargar desde este link.

Mis scripts

Este es un resumen de los distintos scripts y utilidades que he publicado en mi blog, con una breve descripcion y link de descarga.

  • dirhack:  Script escrito en bash que nos ayudará al momento de querer hacer auditorias en nuestro servidor web con multiples usuarios. El script buscara en los directorios especificados los ficheros con información sensible que esten legibles y/o modificables por otros usuarios. Se puede ejecutar desde el explorador web o desde algun tipo de terminal o consola.
  • password salt cracker: Tambien escrito en bash, este script será útil cuando queramos romper algun password encriptado con un salt. Sirve para cualquier tipo de encriptacion como md5, sha, shadow, etc. La forma en que trabaja es netamente fuerza bruta y se basa en un diccionario de palabras. Lee palabra por palabra y la encripta con el salt especificado, si las password coinciden entonces bingo!.
  • web login por fuerza bruta/brute force web login: Con esta utilidad podremos realizar pequeñas pruebas a nuestro sistema de autentificacion y tambien verificar la calidad de nuestras contraseñas. Consiste en realizar determinadas peticiones POST a paginas que validen el login de una sesion. Debido a que esta basada en un diccionario de palabras, podría tardar horas en dar algun resultado.
  • firewall-router: Este es otro script en bash que facilita la creacion de reglas sobre iptables. Nos puede servir para que nuestra maquina sea un router y tambien firewall. Permite el routeo de paquetes, redireccionamiento de puertos, bloqueo de puertos, etc. Es bastante util y facil de usar, ademas permite el uso de ficheros externos para definir redirecciones de puertos, direcciones ip para bloquear, etc.
  • twitsh/twitbash: Lo desarrolle pensando en facilitar el uso te twitter en fluxbox. Esta herramienta no nos servira para leer los twits de otra gente pero si para enviar nuestros updates.

Balancear la carga manualmente (definir mas de un gateway)

La idea de balancear la carga manualmente es poder definir más de un gateway para distintos destinos, especificados por nosotros mismos. De esta manera, podremos tener dos o más salidas a internet y definir salidas hacia distintos rangos de direcciones ip.

multi gateway

Esto sirve de gran utilidad cuando nos conectamos a una red wifi que –por casualidad– llega hasta nuestro lugar de trabajo o nuestras casas e inocentemente queremos usarla. Por ejemplo, si tenemos un lugar de descargas, podemos dejar una máquina con una ruta estática que haga que cuando conecte a una IP x.x.x.x su salida a internet sea por el gateway predefinido por nosotros.
Para esto vamos a usar el comando route.

Seguir leyendo

Local root exploit en kernel 2.6.x (hasta la 2.6.29)

El Viernes pasado se anunciaron, en la lista de seguridad de debian, actualizaciones para el kernel, que solucionaba varias vulnerabilidades.

CVE-2009-0028

    Chris Evans discovered a situation in which a child process can
    send an arbitrary signal to its parent.

CVE-2009-0834

    Roland McGrath discovered an issue on amd64 kernels that allows
    local users to circumvent system call audit configurations which
    filter based on the syscall numbers or argument details.

CVE-2009-0835

    Roland McGrath discovered an issue on amd64 kernels with
    CONFIG_SECCOMP enabled. By making a specially crafted syscall,
    local users can bypass access restrictions.

CVE-2009-0859

    Jiri Olsa discovered that a local user can cause a denial of
    service (system hang) using a SHM_INFO shmctl call on kernels
    compiled with CONFIG_SHMEM disabled. This issue does not affect
    prebuilt Debian kernels.

CVE-2009-1046

    Mikulas Patocka reported an issue in the console subsystem that
    allows a local user to cause memory corruption by selecting a
    small number of 3-byte UTF-8 characters.

CVE-2009-1072

    Igor Zhbanov reported that nfsd was not properly dropping
    CAP_MKNOD, allowing users to create device nodes on file systems
    exported with root_squash.

CVE-2009-1184

    Dan Carpenter reported a coding issue in the selinux subsystem
    that allows local users to bypass certain networking checks when
    running with compat_net=1.

CVE-2009-1192

    Shaohua Li reported an issue in the AGP subsystem they may allow
    local users to read sensitive kernel memory due to a leak of
    uninitialized memory.

CVE-2009-1242

    Benjamin Gilbert reported a local denial of service vulnerability
    in the KVM VMX implementation that allows local users to trigger
    an oops.

CVE-2009-1265

    Thomas Pollet reported an overflow in the af_rose implementation
    that allows remote attackers to retrieve uninitialized kernel
    memory that may contain sensitive data.

CVE-2009-1337

    Oleg Nesterov discovered an issue in the exit_notify function that
    allows local users to send an arbitrary signal to a process by
    running a program that modifies the exit_signal field and then
    uses an exec system call to launch a setuid application.

CVE-2009-1338

    Daniel Hokka Zakrisson discovered that a kill(-1) is permitted to
    reach processes outside of the current process namespace.

CVE-2009-1439

    Pavan Naregundi reported an issue in the CIFS filesystem code that
    allows remote users to overwrite memory via a long
    nativeFileSystem field in a Tree Connect response during mount.

Se publicaron dos exploits para explotar vulnerabildades de escalacion de provilegios local. Estos exploits se aprovechan de la funcion ptrace_attach() para ejecutar un codigo arbitrario que nos permita ejecutar una shell del tipo /bin/sh como root.
El primer exploit es el shoryuken, lo probé en distintas versiones del kernel de debian y archlinux, pudiendo ser explotada solo la version 2.6.26-1-686 de Debian 5.0, de forma aleatoria, es decir, hay veces que ejecuto el exploit y funciona y otras veces no. El segundo script fue probado por su autor en la version del kernel 2.6.29rc1 de Gentoo.
Estos exploits funcionan bajo situaciones especificas y no todos los sistemas son vulnerables.

La importancia de la seguridad de la información

La importancia que tiene la seguridad de la información y el poder que implica manejar información es un tema muy delicado que no está en el conocimiento de muchos. En el contexto de internet, muchos usuarios no le dan mayor importancia a su información que publican en la red y de qué forma lo hacen y más aún, muchos no diferencian lo privado de lo público, no por que no quieran o por que no saben como diferenciar una cosa de la otra, simplemente es por ignorancia. Para mucha gente es normal pertenecer en redes sociales y publicar su vida, mientras más conocidos sean y más amigos tengan en esa red social más importante se creen y es esta “vulnerabilidad” la que se está explotando: La ingenuidad y/o ignorancia del usuario. Por otro lado están las empresas, quienes son las encargadas de manejar la información privada y/o pública que los usuarios les confían, por ejemplo en el caso de un concurso, típicamente los datos que piden son nombre, apellido, ciudad, rut/dni, etc. Personalmente me pregunto ¿Para qué quieren mi rut/dni en un concurso, si con mi teléfono es suficiente para que me puedan ubicar? La respuesta es simple, todos esos datos van a una base de datos que puede ser vendida o usada para enviar publicidad no deseada, más conocido como spam. Estoy seguro que a nadie nos gustaria que esto fuese realidad, pero lo es. Por más que la empresa nos intente explicar por medio de “letra chica” o “términos y condiciones” que el uso de nuestra información está fuera de peligro y que serán usados sólo para tal y tal fin. Pues eso es mentira. He tenido experiencias y tengo las pruebas necesarias que eso no ocurre, ni si quiera las entidades del gobierno son capaces de cumplir con algo tan básico como es la protección de la información privada y, de hecho, ni si quiera los mismos usuarios son capaces de proteger su información.

En Chile, la falta a la protección de datos es algo que se da demasiado seguido, ya sea por empresas privadas o publicas (estatales o gubernamentales).

Hace un tiempo se publicó una base de datos con la información de más de 5 millones de chilenos y posteriormente, se publicó un buscador que nos permitia encontrar los datos de cualquier persona. Existen entidades encargadas de proteger esa información, en este caso es el sitio web de el Servicio Electoral (Servel), de donde fue obtenida la información. Poco tiempo despues de ésta publicación, realizamos una prueba de concepto programando un algoritmo capáz de obtener los datos desde ese sitio nuevamente, lo que tuvo un resultado positivo para nosotros. Pudimos obtener más de 4 millones de datos sobre los chilenos. En este intento, el sitio web del servel se cayó dos veces, estando el sitio abajo mas de 12 horas, cada véz que se cayó. Al entrar al sitio se podia ver un mensaje de que el espacio en disco estába lleno debido a los logs, esto quiere decir que cuando reactivaron el sitio, los encargados del sitio debieron haber vaciado ese directorio de logs y obviamente no se dieron el trabajo de analizarlo sino hasta el tercer intento que fue cuando decidieron colocar un captcha y, aunque el captcha es “basico”, no gastariamos tiempo en programar un algoritmo que lo rompa si nustra misión ya cumplió su objetivo. Una véz realizado este experimento procedimos a eliminar toda la información que descargamos.

Seguir leyendo

Saporm: Simple abstraccion de bases de datos

Hace un par de dias venia en el bus hacia mi casa y se me ocurrio una idea. Muchos pensara que ya existe esto que se me ocurrio, que existen frameworks, etc. Pero mi idea es hacer algo mas simple aun, se me ocurrio la idea de desarrollar un ORM (Object Relational Mapping) simple, que me permita de manera sencilla abstraer la base de datos para poder trabajarla como objeto. Mientras veina en el bus, pensaba el modelo logico para llevar acabo esta idea, luego de unos dias por fin he podido empezar a codificar lo que será desde ahora en adelante: Saporm. Como Hibernate para Java o Doctrine para PHP, la idea de este ORM es hacer las cosas aun mas faciles y mi idea, principalmente, es orientarla a proyectos pequeños y no a enterprise.

La idea es que este ORM/Framework haga todas las tareas de consultas y accesos a la base de datos de manera mas simple, por ejemplo, en Saporm, para que el framework sea capaz de abstraer la base de datos solo hay que crear una clase con los atributos correspondientes, segun los campos que tenga la tabla de la base de datos.
Por ejemplo, tenemos dentro del directorio “model” la siguiente clase:
(Usuarios.class.php)

  1. < ?php
  2. class Usuarios extends Core{
  3.    /* Variables necesarias por el ORM, es necesario que se declaren */
  4.    public $table_name;
  5.    public $socket;
  6.  
  7.    /* Variables del usuario */
  8.    public $id;
  9.    public $username;
  10.    public $password;
  11. }
  12. ?>

Saporm se encargará, automaticamente, de mapear la tabla “Usuarios” con sus atributos “id, username y password” y nos permitirá trabajarla como si de un objeto se tratara. La herramienta nos creara un objeto con el nombre Usuarios que contará con varios métodos y atributos, como por ejemplo:

$usuarios->search();
$usuarios->loadData();
$usuarios->select();
$usuarios->query();
$usuarios->insert();
$usuarios->update();

Seguir leyendo