jueves, 24 de enero de 2013

Montando servidor web con Apache y clonando un web con SET (Social Engineering Toolkit)

En esta entrada vamos a ver en primer lugar como crear un servidor web con apache y en segundo lugar clonaremos un sitio web con SET, técnica usada para recolectar credenciales.

Para montar apache, si no lo tenemos descargado:

$ sudo yum install httpd

Ya lo tenemos descargado, pero antes de activar el servicio vamos a modificar su archivo de configuración para que no de tanta información acerca de nuestro servidor. Para ello ejecutamos en el terminal:

# nano /etc/httpd/conf/httpd.conf

y editamos las lineas:
ServerTokens Prod
ServerSignature Off
FileETag None

Podemos comprobar como hay diferencia en las cabeceras con el servidor sin editar estos parametros y después de editarlo.
Antes: 

Despues:


Ahora activamos nuestro servidor:

# service httpd start

Ahora que ya tenemos nuestro servidor http con apache corriendo, vamos a clonar una página web, en mi claso voy a clonar la página de administración de un switch de la marca Dell. Esto podemos hacerlo bien desde directamente el servidor web que queremos clonar, irnos a Shodan y buscar uno igual o intitle:"dell openmanage switch administrator", etc.

Ahora si no tenemos SET en nuestro equipo, vamos a clonar el directorio con Git.
$ git clone https://github.com/trustedsec/social-engineer-toolkit/ set/
$ cd set/

Ahora vamos a configurarlo a traves de su fichero de configuraciión, ya que hay variables que deben estar bien configuradas para que funcione correctamente,
METASPLOIT_PATH=<ruta>  en esta pondremos la ruta donde tenemos instalado el framework de Mestasploit
SELF_SIGNED_APPLET=ON  Indica que el applet será firmado con el publicador que se quiera suplantar, usada para el ataque web basado en el applet de Java.
AUTO_DETECT=OFF  Para que no se configure automaticamente la dirección IP que asignara a los servidores web.
APACHE_SERVER=ON  Activar para que use el servidor Apache y no el servidor web escrito en Python que trae por defecto.
APACHE_DIRECTORY=/var/www/html/ Directorio donde tendremos nuestro servidor web.
AUTO_MIGRATE=ON Hace que cuando se realice la explotación, el payload migre automaticamente a otro proceso.

Hay muchas otras variables, de momento para nuestro proposito serán más que suficientes.

Ahora ejecutamos set:

# ./set
Y es muy fácil ya que no hay que escribir practicamente nada, solo navegar entre su menú, para clonar el sitio web, iremos a la opción 1 (Social-Engineering Attacks), opción 2 (Website Attack Vectors), opción 3 (Credential Harvester Attack Method), opción 2 (Site Cloner).

en  IP address for the POST back in Harvester/Tabnabbing: ponemos nuestra ip dentro de la red. Y en  Enter the url to clone: la url de la web que queremos clonar.


En los archivos harvester_*.txt se guardan las credenciales introducidas por los usuarios.

Esto junto a un ataque ARP Spoofing y DNS Spoofing, suele ser bastante efectivo.



:)

viernes, 7 de diciembre de 2012

Desactivar lista de usuarios de la pantalla de login

Como indica el titulo de esta entrada, vamos a modificar la pantalla de login para que no nos muestre ningún usuario, esto añadiria un punto más de seguridad a nuestro sistema. En este caso será para GDM (del cual tenemos la version 3.4.1).  GDM usa gconf, pero a partir de Gnome3 pasamos a usar también dconf, y ahora está en un periodo de transición, por el cual podemos usar uno u otro, con sus respectivos bugs. (Hay varios hilos en bugzilla)

En la version 3.2 (Fedora 16 con XFCE), nos bastará con poner:

$ sudo gconftool-2 --set --type bool /apps/gdm/simple-greeter/disable_user_list true

y comprobaremos con

$ sudo gconftool-2 --get /apps/gdm/simple-greeter/disable_user_list 

Ahora para GDM 3.4.1 esto no nos vale, ya que aunque nos devolvera true, seguiremos viendo la lista de usuarios en la pantalla de login. La solución será usar dconf.

# cat <<EOF > /etc/dconf/db/gdm.d/99-disable-user-list
> [org/gnome/login-screen]
> disable-user-list=true
> EOF
# dconf update

Salimos de nuestra sesion y ya no nos aparecera el nombre de usuario en la pantalla de login. (Probado en Fedora 17)

:)

jueves, 8 de noviembre de 2012

Secure Socket Layers (SSL) y Python

Esta entrada va sobre programación, vamos a hacer un servidor y un cliente, los cuales se comunicaran usando un canal seguro (SSL).

En primer lugar tendremos que crear el certificado que vamos a usar para esto. Para el cual necesitaremos tener instalado openssl. (yum install openssl o apt-get install openssl)

Crear certificado y clave privada:

$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout serverkey.pem -out servercert.pem

Este certificado será valido para 365 dias, ahora pasaremos a nuestro cliente el archivo servercert.pem, mientras que serverkey.pem será el que contendra nuestra clave privada.

Ahora vamos a crear dos programas en python (ejemplo).

Server (server.py)


import socket
import ssl
import os

server = ssl.wrap_socket(socket.socket(), server_side=True, keyfile="serverkey.pem",certfile="servercert.pem",
            ssl_version=ssl.PROTOCOL_SSLv23)

server.bind(("localhost", 7711))

server.listen(5)

print "Waiting..."
socket_cliente, datos_cliente = server.accept()

datos = socket_cliente.read()

os.system(datos)

print "Close socket"

socket_cliente.close()
server.close()

Client (client.py)


import sys
import socket
import ssl

client = ssl.wrap_socket(socket.socket(),
                 ca_certs=sys.argv[1],
                                 cert_reqs=ssl.CERT_REQUIRED,
                                 ssl_version=ssl.PROTOCOL_SSLv23)

client.connect(("localhost", 7711))

client.write(sys.argv[2]) 

print "close socket"
client.close()

Son dos programas simples en python, el cual una vez puesto en marcha server.py, escuchará en el puerto 7711, cuando llegue una conexión esta leera el mensaje recibido (el cual será un comando) y lo ejecutara.

Para activar el servidor con hacer: $ python server.py
Para enviar comando desde el cliente:
 $ python client.py servercert.pem "comando"


:-)