Vous êtes sur la page 1sur 10

ndice

Analisis.............................................................................................................................................3 Plan Brute Force (Caso de Uso):...........................................................................................................3 Colaboradores Para Realizar El Cracking (Clases)...............................................................................4 Secuencia de Crackeo. (Diagrama de Secuencia) ................................................................................5 Programacin inicios........................................................................................................................7 Primeros pasos C++..............................................................................................................................7 Compilador....................................................................................................................7 Interprete........................................................................................................................8 #include..........................................................................................................................8 namespace......................................................................................................................8 Funcin y procedimiento...............................................................................................9 Salida estandar...............................................................................................................9 C y C++ Diferencias....................................................................................................10

En esta etapa veremos el anlisis de una aplicacin sencilla, introduciendo tanto en cdigo como en diagramas de UML, para no aburrirlos todos los programas tendrn una orientacin al hacking, espero que te guste. Siguiendo el esquema del temario planteado, construiremos una herramienta de crackeo de contraseas por fuerza bruta no creas que es de extrema complejidad, el plan de los talleres esta pensado para partir desde cero, comencemos el diseo de esta con un esquema. Nuestro objetivo ser "Crackear Contraseas". Plan de fuerza Bruta. Veremos la herramienta desde el punto de vista de su uso o desde el usuario (Nosotros mismo):

Analisis Plan Brute Force (Caso de Uso):

Descripcin del dibujo: Que es lo que har el usuario?, el usuario ejecutar el comando (Nuestra aplicacin) desde la terminal, ingresar el cdigo a crackear y adems le indicar el diccionario (El diccionario ser el archivo que tiene varias palabras que sern las posibles claves). , todo esto lo englobamos en crackear. El Flujo normal de la aplicacin sera: 1) El Atacante ingresa el comando "undercrack <hash> -f <diccionario>", (<hash> ser una contrasea encryptada, usaremos md5 en este ejemplo y <diccionario> es la ruta del fichero que contiene). 2) El Atacante visualiza el contador de intentos. 3) El Atacante ve el mensaje de xito indicando la contrasea correcta. Ya tenemos la forma en que usaremos nuestra aplicacin.

Colaboradores Para Realizar El Cracking (Clases).


Veamos ahora que sujetos necesitamos para llevar a cavo el plan. 1.- Necesitamos un crackeador. (Crackeador), el se manejara en obtener claves y sabr como encriptarlas con la ayuda de sus colegas. 2.- Tambin queremos a alguien que lea nuestro diccionario y nos entregue el resultado, (Lector). 3.- Tambin necesitamos de alguien que sepa de Encriptacin, en este caso que sepa de MD5 (Encriptador). A medida que se iba escribiendo el texto iban apareciendo los personajes que aportarn en la aplicacin. Listo ya estn los participantes, veamos un esquema.

Secuencia de Crackeo. (Diagrama de Secuencia)


Veamos ahora como comunicamos estos personajes, miremos un dibujo para aclarar, luego lo explicaremos

Que?!!!, pero no que era un curso de inicializacin!!!, bah lo que me tema. Tranquilo, har una breve explicacin y se aclarar, aunque no es necesario que le des mucha vuelta, deberas entender la siguiente explicacin y dejarlo as, como una idea global, despus de esto ya se podra programar, pero como es un taller de inicializacin a C++ antes tendr que explicar eso de Clase, Objetos, Variables, etc... Comenzemos, 1.- Lo primero que se sigue en este esquema es la comunicacin entre el atacante y el sujeto Crackeador (Clase tcnicamente), el atacante le dice al sujeto Crackeador cual es el archivo de lectura 'leer archivo(ruta de archivo).

2.- Segundo el Crackeador se pone de acuerdo con el sujeto Lector para establecer el archivo solicitado por el Atacante. 3.- Tercero, es la respuesta de Lector a Crackeador, le dice que todo salio normal (Ok) 4.- El Crackeador a Atacante le informa que su solicitud fue todo un xito. 5.- El Atacante le solicita otra cosa ms al Creackeador, le dice que si puede crackear el <hash>, este hash es un cdigo encriptado en md5, una foto donde va el flujo.

6.- El Crackeador le dice al Lector que le entregue una clave, ser la primera del archivo. 7.- El Lector le devuelve la clave. 8.- Con la clave que le entrego Lector, el Crackeador le pide al Encriptador que codifique la clave a un hash md5. 9.- Retorna el cdigo fbc71ce36cc20790f2eeed2197898e71.

10.- Si el <hash> que ya conoce conoce el Crackeador(ver paso 5), es igual al hash en md5 que le entrego el Encriptador(paso 9) entonces le muestra la clave al Atacante.

11.- Si no el Crackeador le pide al Lector la siguiente clave del archivo asi sigue hasta encontrar la clave correcta.

Menudo rollo, pero esto es necesario para entender el programa ms rpidamente que desde la misma aplicacin, o tambin para comenzar a programar esto, siguiendo la misma estructura de los diagramas, el flujo se explica y se entiende tal cual y no se distorsionara la idea al traspasrselo a otros programadores.

Es recomendable aprender estos diagramas, los utilizar a lo largo de todos los talleres, son de gran utilidad en la vida real, se gana tiempo de explicacin y de dudas entre los programadores, adems de detectar o modificar ms rpidamente el comportamiento de una aplicacin. Existen ms diagramas, lo ideal sera mostrarlos todos, pero solo los mostrar en casos que sean necesarios. Ahora olvidmonos de los diagramas, espero que se haya entendido algo de la idea que programaremos ms adelante.

Programacin inicios. Primeros pasos C++


Veamos comencemos creando una simple aplicacin; sobre que IDE utilizar eso lo vez tu, puedes utilizar cualquier IDE ya sea Borland C++(Windows), Visual Studio 2010(Windows), VIM(linux), Anjunta(linux), en este tutorial utilizar VIM, si quieres lo puedes seguir con este editor de texto.

Copien este cdigo, complenlo y ejectenlo? Que?! Que es compilacin? No te entiendo nada! Pues tranquilos, lo complicado me lo llevo yo con tratar de suponer que sabes y que no, espero recibir bastantes crticas con respecto a este curso, lo que pretendo es avanzar rpido en lo necesario para creacin de aplicaciones orientadas al hacking, sin tanto rollo de por medio. Compilador Sigamos guarda este cdigo con el nombre ejemplo.cpp, ahora para compilarlo escribe en consola. $g++ ejemplo.cpp Con otros IDE's tienes que buscar la opcin, build, o construir. Para generar el .exe. En linux puede que no encuentres el comando g++, para instalarlo debes bajar el paquete que contiene el comando (Debes ejecutar el comando como root; para ingresar como root escribes solo su en la terminal). En Fedora #yum install gcc-c++ En Ubuntu #apt-get install build-essential

El compilador g++ leer el archivo ejemplo.cpp para generar un archivo a.out (Un archivo binario u objeto entendido por la computadora), que ser nuestro archivo ejecutable, si compilamos en windows, en vez de a.out ser el nombre de el proyecto ejemplo y su extensin .exe. En otros IDE's como Visual Studio .NET tienes que ver en que ruta esta tu proyecto, y buscar en la carpeta Debug, el .exe. En linux al cambiar su extencin de .out a cualquier otra, el ejecutable puede trabajar igual sin probelmas. Listo ya hicimos el proceso de compilacin, que fue el de generar nuestro cdigo objeto, binario o mquina, el resultado es un archivo con extensin .out para usuarios Linux o .exe para usuarios windows Ahora lo ejecutaremos, en Linux es necesario aplicar la ruta absoluta hacia nuestro ejecutable, tenemos dos alternativas una es comenzando desde el directorio root (/) o anteponiendo ./ antes del archivo. Ejemplo: $./a.out O si no $/home/<tu usuario>/a.out El ./ internamente aplicar la ruta absoluta. En windows es necesario correr una Terminal, abrir una Terminal y ubicarse en el directorio del ejecutable, y escribir ejemplo.exe. No lo ejecuts directamente el ejemplo.exe o vers una ventana negra que se abre y cierra rpidamente. El resultado esperado es Taller de C/C++ underc0de. Si tienes alguna duda, consultala en el foro, IRC o msn, si es que puedo ayudarte rpidamente. Interprete No quiero dejar de lado lo que es un interprete, ya que tuve dudas antes sobre las Diferencias entre un Compilador y un Interprete, un interprete en vez de generar un archivo .out o .exe este lee directamente del archivo fuente y a medida que recorre el archivo va pasando el cdigo fuente( o cdigo de alto nivel), a cdigo maquina (o cdigo de bajo nivel). Expliquemos el cdigo, #include Esta sentencia lo que hace es referenciar un archivo que contiene otras funciones, similares a la funcin main( ) vista en el cdigo, adems este archivo (iostream) puede contener clases y otras cosas ms, luego crearemos un archivo propio y lo referenciaremos a nuestro programa principal. namespace Esta es algo complicada de explicar, por que antes debe saber algo:

namespace: Los namespace son agrupadores de clases, para organizar clases o sujetos, (Recordar las pginas anteriores, donde se ven los participantes, Crackeador, Lector, y Encriptador), todos ellos podrian estar contenido en un namespace, std: Es el nombre del namespace. Funcin y procedimiento Es una funcin, est funcin es la principal, es la primera llamada que se realiza al momento de ejecutar la aplicacin. Una funcin es un conjunto de instrucciones que hacen alguna cosa y devolvern un resultado, ms de alguno quizs habr leido de procedimientos, la diferencia entre funcin y procedimiento es que la primera devolvera un resultado y la segunda no . . . , alguien ahora dir que no es verdad ambas pueden devolver un resultado, si pero es haciendo un truco, ms adelante se explicar como. Ejemplo de otra funcin en pseudolenguaje: Palabra Funcion saludo( ) retornar buenos das Fin de la funcion Ejemplo de procedimiento Prodimiento haceralgo( ) ... Fin del procedimiento la parte int especifica el tipo de dato a retornar, que es la abreviacin de integer en ingles, que significa entero en espaol, quiere decir que la funcion main retornar un nmero entero, ver al final de la funcin, el return 0;, aqu solo estamos retornando el valor 0, a quien se lo retornamos, ni idea, osea si se lo retornamos a alguien pero no quiero complicar el tutorial, si alguien quiere profundizar este valor es retornado al kernel, o nucleo del sistema operativo. Entre los parentecis podriamos pasarle cosas a la funcin y luego para que trabaje con esas cosas que le pasamos, le podriamos pasar un entero una palabra, a un sujeto como nuestro estimado Crackeador, despes explicar como pasar parametros a una funcin o procedimiento, mientras dejemoslo as. Salida estandar Y la ltima linea, a explicar, est es algo complicada de explicar, lo explicar trivialmente, lo que se hace aqu es enviar la palabra Taller de C/C++ underc0de a la salida estandar que es nuestra pantalla.

Esta es una explicacin bien vaga de esta linea, pero lo dejar asi para no marear tanto. En la segunda entrega, crearemos un archivo de cabezera (la parte de #include <iostream>)como

acordamos, crearemos un personaje como Crackeador, no igual pero similar, que ser l quien mostrar el mensaje anterior. C y C++ Diferencias Alguien me comento sobre las diferencias que tiene C con respecto a C++, C fue el primero en aparecer luego se ideo otra forma de programar, y a C se le agregaron ms funcionalidades, y quedo como C++, con C++ puedes programar Orientado a Objetos y la explicacin de esta se intenta llevar ms a la realidad de manera de clarificarlo de mejor manera, como vimos en un principio sobre el Crackeador, Lector y Encriptador, en C en cambio todas las acciones se llevan a cabo por medio de funciones o procesos, solo se explican flujos a llevar, aunque se pueda explicar con entidades o sujetos, en el cdigo no lo acompaa mucho y se deberan hacer uno que otro truco al cdigo, no quiero decir que es un mal lenguaje C. En fin este tutorial lo llevar a cabo en C++, por la Orientacin a Objetos que se usa bastante actualmente, y se entiende mejor a mi parecer. Eso es todo por este taller, saludos a todos y hasta la prxima.

Vous aimerez peut-être aussi