Archivo por meses: abril 2011

Configurar servidor web en Mac snow leopard


En un post anterior les enseñe como configurar los host virtuales en MAC, por si alguien aun no tiene configurado su servidor web en MAC aquí están los pasos a seguir, es muy sencillo y en un dos por tres lo tendrán listo.

Habilitar Apache

Lo primero es activar el servidor apache, para ello abrimos una terminal (ya saben, spotlight, escriben Terminal y eligen la primera opción), una vez que la app este abierta escribimos el siguiente comando:

sudo apachectl start

Habilitar PHP

Despues de eso necesitamos editar el archivo httpd.conf para cargar el modulo de PHP asi que en la consola escribimos el siguiente comando:

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/apache2/httpd.conf

Luego de eso localizamos la linea donde este

#LoadModule php5_module libexec/apache2/libphp5.so

Y lo des comentamos quitando el signo de #, tambien buscamos la linea donde se encuentre:

#DocumentRoot "/Library/WebServer/Documents"

Y lo descomentamos y ponemos la ruta donde tengamos planeado guardar los archivos que seran publicos en el servidor web, yo lo deje de la siguiente manera:

DocumentRoot "/Users/alevsk/Sites"

Después de eso reiniciamos el servidor

sudo apachectl restart

Con eso ya nuestro servidor web deberia de estar activado, podemos comprobarlo accediendo a la siguiente direccion http://localhost/, si nos aparece el mensaje de It works! quiere decir que el servidor fue activado con éxito.

Los siguientes pasos son opcionales, es solamente para configurar algunas cosas como el timezone por ejemplo.

Lo primero es crear un archivo php.ini en /etc y darle permisos de lectura y escritura, para ello en la consola escribimos

cd /etc
sudo cp php.ini.default php.ini
sudo chmod 666 php.ini

abrimos el archivo con

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit php.ini

y buscamos la linea que diga ;date.timezone =, la des comentamos (le quitamos el ; ) y escribimos nuestra zona horaria por ejemplo

date.timezone =America/Mexico

En este link pueden encontrar una gran lista con la mayoría de las zonas horarias y códigos del mundo.

Despues de eso guardamos, salimos del archivo y reiniciamos apache

sudo apachectl restart

Habilitar MYSQL

Primero descargamos el paquete de MYSQL, elegimos la version de 32 o 64 bits según sea nuestro caso.

Despues tenemos que instalar todo lo que venga dentro del paquete en el siguiente orden:
1) mysql
2) startup item
3) preference pane

Para verificar que se instalo correctamente desde la consola verificamos accediendo al binario de la siguiente manera

/usr/local/mysql/bin/mysql

Si nos aparece la consola de mysql quiere decir que se ha instalado correctamente.

Después de eso regresamos a la consola y editamos el archivo php.ini de nuevo y remplazamos las lineas que coincidan con /var/mysql/mysql.sock por /tmp/mysql.sock

pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

y una vez mas reiniciamos Apache

Si todo resulto ahora tenemos Apache, PHP y MYSQL en nuestro servidor :).

Configuracion de host virtuales en MAC

Hola lectores les comento que hace un par de dias comenze a usar una mac book pro :p y poco a poco he ido descubriendo todos sus secretos, tengo pensado en mas o menos una semana realizar un post titulo “Experiencia de usuario Windows/Linux hacia MAC” ya que es muy diferente la experiencia de usar MAC de un usuario que tiene unos años usando linux (como en mi caso) a un usuario que viene del Sistema Operativo Windows :), existe un avismo entre esos 2 sistemas operativos.

Pero bueno, les comento que estoy trabajando en algunos proyectos de desarrollo web y la primera cosa que tuve que hacer fue darme a la tarea de configurar un servidor web en MAC asi como configurar host virtuales para los distintos sitios en los que hiba a trabajar.

¿Por que trabajar con host virtuales?
La principal razon es por que estoy trabajando con aplicaciones web que manejan URL’s amigables, por todo ese tema del SEO, y pues forzosamente la aplicación tiene que estar en raíz.

Una vez con su servidor apache activado, el servicio de PHP corriendo y MYSQL instalado, para configurar los virtual host o host virtuales en MAC lo que tenemos que hacer es lo siguiente:

Abrimos la consola (Terminal), pueden hacer clic en la lupa de spotlight (esto del spotlight me gusto mucho) y escribir “Terminal” y la primera opción que les de es esa, hacer click.

Escribimos el siguiente comando (/Applications/TextEdit.app/Contents/MacOS/TextEdit es como si escribieran el gedit o kate en linux, dependiendo si usan gnome o kde, aunque tambien pueden usar vim y abrir el archivo directo desde la shell)

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /private/etc/apache2/extra/httpd-vhosts.conf

Se van hasta abajo del archivo y encontraran unas lineas parecidas a estas:

<VirtualHost *:80>
   DocumentRoot "/Library/WebServer/Documents"
   ServerName localhost
</VirtualHost>

Entonces justo debajo de donde se cierra , copian y pegan otro bloque con los datos de su host virtual, por ejemplo yo creare 2 nuevos, el archivo se debería de ver de la siguiente forma.

<VirtualHost *:80>
   DocumentRoot "/Library/WebServer/Documents"
   ServerName localhost
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/alevsk/Sites/zonau"
   ServerName zonau.localhost
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/alevsk/Sites/fastfoo"
   ServerName dae.localhost
</VirtualHost>

Guardan y cierran su archivo, despues de nuevo en la consola tenemos que modificar el archivo host y agregar los nombres de nuestros host virtuales, en Linux este archivo se localiza en /etc/hosts, pero en MAC se encuentra en /private/etc/hosts, escriban en la shell

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /private/etc/hosts

casi llegando hasta abajo del archivo veran que hay una linea que dice fe80::1%lo0 localhost, justo debajo escriban el nombre de sus host virtuales, se debería de ver de la siguiente manera (mis host eran zonau y dae):

fe80::1%lo0  localhost
127.0.0.1  zonau.localhost    localhost
127.0.0.1  dae.localhost    localhost

Ya con esto deberia de funcionar, pero como yo tengo que trabajar con las URL’s amigables de una vez configuramos el mod_rewrite en MAC, para utilizar cakePHP por ejemplo, de nuevo guardamos todo lo que hayamos editado y regresamos a la consola y escribimos el siguiente comando:

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/apache2/users/alevsk.conf

Donde dice alevsk.conf ustedes sustituyan lo por el nombre de su usuario para editar su archivo de configuración, por default la linea que dice AllowOverride tiene none asi que cambienlo a all y les deberia de quedar algo asi:

<Directory "/Users/alevsk/Sites/">
  Options Indexes MultiViews FollowSymlinks
  AllowOverride all
  Order allow,deny
  Allow from all
</Directory>

El AllowOverride all nos permitira hacer uso de configuraciones que especifiquemos en los archivos .htaccess, guardamos y cerramos el archivo, despues de eso escribimos el siguiente comando para editar el archivo httpd.conf

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /private/etc/apache2/httpd.conf

Buscamos la linea donde se carga el modulo rewrite y vemos que por default viene comentado con un # así que lo removemos.

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Una vez removido el # la linea debería quedar así:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Después debemos habilitar el uso de host virtuales, buscamos la siguiente linea

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Y des comentamos la linea donde tiene include, quedando de la siguiente forma:

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

Tambien buscamos mas abajo el bloque donde este:

<Directory />
    Options FollowSymLinks
    AllowOverride none
    Order deny,allow
    Deny from all
</Directory>

Y de la misma manera sustituimos el none por all quedando asi:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
</Directory>

Por ultimo solo queda reiniciar el servidor.

sudo apachectl restart

Después de eso si todo salió bien accedan a un navegador y escriban por ejemplo http://zonau.localhost/ y debería de cargar su sitio, y como esta en la raíz del host virtual (el path que especificaron anteriormente) las URL’s amigables deberían de funcionar, cabe decir que con el uso de virtual hosts la estructura de nuestro servidor web queda mas ordenada :).

Si tiene alguna duda por favor comenten y responderé a la brevedad posible.

Breve teoria sobre el malware


Este es uno de los post que escribí en mi antiguo blog Alevsk-Zone y por el cual también fui cuestionado, primeramente creo que actualmente tengo un poco mas de madurez de la que tenia hace 2-3 años :), también creo que puedo dar respuestas bien fundamentadas sobre por que hago ciertas cosas.

Hace mucho me preguntaron, ¿por que practicas la seguridad informática sino estas llevando clases de eso?, mi respuesta es: no deseo esperar a que alguien me enseñe algo nuevo si yo se que puedo aprenderlo por mi propia cuenta, eso se llama ser autodidacta y creo que le da a la persona un plus de calidad por que significa que quiere mejorar y superarse así misma cada día :), además de todo siempre hay que tener en cuenta la humildad.

Si bien es cierto que la informática tiene demasiadas ramas, algunas buenas y algunas otras que no son precisamente éticas como el cracking o el desarrollo de malware sigo pensando que el conocimiento y la información no es buena ni mala, todo depende de para que se use, por ejemplo un automóvil puede ser usado para transportar gente o para atropellarla, ahí es cuando interviene el factor humano y le da un giro positivo o negativo a dicha tecnología. Además yo creo que todos aqui ya no somos ningunos niños (eso quiero pensar xD) para saber lo que es bueno o lo que es malo 😉

Con todo esto lo que trato de explicar es que si bien, el malware es algo malo por donde lo miren, no tiene nada de malo realizar investigaciones acerca de su desarrollo, además si me apetece publicar cosas que podrían no ser éticas (ojo que como explicaba mas arriba, la información no es mala solo el uso que se le puede dar) lo voy a hacer ya que creo que es bueno tener conocimientos de todo tipo.

Ya con todo el sermón anterior puedo publicar el contenido del post x’D.

¿Que es un malware indetectable?
El malware indetectable o FUD (full undetected) es el resultado de leves alteraciones en el cuerpo del virus, como quitar, agregar o modificar cadenas de bits, producto de patrones aleatorios que estos incorporan para
evadir los antivirus, esto se realiza para que los antivirus no detecten las firmas generadas del malware, sin embargo no todos los antivirus se pueden evadir con la misma técnica.

¿Como convertir un malware en indetectable?
Para alterar un virus de tal modo que sea indetectable al control del antivirus, se deben modificar unos cuantos bits en el archivo de tal modo que la firma que se genera del archivo difiera de las firmas que poseen los antivirus, pero la parte fundamental para que esta alteración sea óptima y permita que el archivo sea funcional e indetectable posterior al cambio es saber en que offset’s se debe inyectar la modificación, solo basta con cambiar algunos bits de posición si así se requiere y la tarea quedaría cumplida. En otras palabras y siendo mas idealista se podría afirmar que la ley matemática para la suma y multiplicación la cual dice que:
“El orden de los factores no altera el producto” no es aplicable para la suma, multiplicación o cualquier operación algorítmica entre bits que generen un hash o firma como es el caso de la identificación de virus, dado que con unos cuantos movimientos posicionales de bits el resultado no es el mismo, la firma de identificación del virus es alterada.

Vale la pena mencionar que no en cualquier segmento del archivo se puede realizar la alteración de los bits o bytes si se trabaja en hexa, dado que si se realizará el cambio en los offset’s vitales del archivo, este quedaría inservible y si por el contrario se realizara la alteración en algún offset que no fuera parte de la firma o del patrón de identificación, el archivo simplemente quedaría modificado pero aun seguiría siendo detectable para los antivirus. Lo ideal es conseguir que el archivo sea sutil y eficazmente alterado sin afectar su estabilidad.

Estos patrones de bits, firmas o offsets que lee el antivirus se le denominan Patrones Heurísticos:
Los Patrones Heurísticos son Técnicas que se emplean para reconocer códigos maliciosos (malware) que no se encuentren en la base de datos del antivirus (ya sea porque son nuevos, o porque no son muy divulgados. Estas técnicas usadas por el antivirus son:

  • Recreacion del código compilado
  • Desensamblado
  • Firmas genéricas
  • Desempaquetamiento

Indetección en scan-time y run-time
Un archivo puede pasar como indetectable al antivirus en dos fases, una al momento de residir en el disco y ser escaneado, y la otra al momento de ejecutarse y lanzar el código.
SCANTIME: Un archivo que no posea patrones heurísticos visibles al Antivirus puede pasar como scantime.
RUNTIME: Un archivo que además de no poseer patrones heurísticos, proteja en memoria sus llamadas y procedimientos, los virtualize o los inyecte, podría pasar a ser indetectado en tiempo de ejecución.

Quise publicar esto por que estoy llevando algunas clases este semestre en la universidad que me hacen mas fácil comprender toda esta teoría de la que se habla acerca del malware :), como es que un proceso puede proteger sus llamadas y procedimientos al sistema, inyectar código en otros procesos, desencriptar parte de su código encriptado cuando esta cargado en memoria, virtualizacion etc.

Me atrevo a mirar el trabajo que realizan algunos desarrolladores de malware como algo respetable, desde el punto de vista de la programación claro y también creo que todo esto es mas una cuestión de ego personal (como decir, mira lo que puedo llegar a crear), mas que tener en mente dañar a los demás COMO PIENSAN ALGUNAS PERSONAS :).

a ver ponle gnome a tu windows

Este post es simplemente por estar de ocioso jeje, estoy revisando los post de mi anterior blog y estoy sacando los mas buenos para publicarlos acá, me encontré con una captura de pantalla de un desktop que tenia en debian el cual personalice como si fuera windows 7 y por el cual también fui muy criticado x’D.

Sigo con la misma postura, “no por que me guste la interfaz gráfica de un sistema operativo necesariamente lo tengo que instalar x’D“, a ver windowsero ponle Gnome a tu Windows jeje.

Escritorio abril 2011

Quiero retomar una costumbre que tenia en mi antiguo blog Alevsk-Zone, consistía en mostrar la apariencia de mi escritorio (Linux) cada mes e ir modificándolo para que fuera diferente el mes que siguiera, de la misma manera los lectores podían sacar capturas de pantalla de los suyos (windows, linux, mac, etc.), enviármelos y yo publicarlos en las entradas :), ¿que dicen?, ¿se animan xD?

SO: Ubuntu 10.04
Mes: Abril 2011

Click para ver en grande

Si quieres que tu Escritorio aparezca aquí, puedes dejar un comentario con un link a la captura de tu Desktop (no importa el sistema operativo :)) o enviarme por correo la imagen a [email protected], solo deja un comentario para darme cuenta que enviaste el correo.

salu2