Archivo
Dificultando ataques ARP-Spoofing y ARP-Poisoned
ESTABLECER TABLAS ARP ESTATICAS PARA PROTEGERSE DE ENVENENAMIENTO.
Como se ha podido ver anteriormente, una de las técnicas utilizadas para realizar un ataque MITM consiste en engañar al AP y al objetivo para que el trafico pase por medio de un host determinado (normalmente la maquina del atacante) para evitar (o al menos dificultar) este tipo de ataques, pueden emplearse tablas ARP estáticas con el fin de que no puedan ser envenenadas.
En distribuciones basadas en Linux se puede ejecutar el comando arp -a para ver las IP y direcciones MAC asociadas a las conexiones de red, si vemos alguna dirección MAC repetida, algo no va bien… posiblemente se es victima u objetivo de un ataque. Por este motivo es recomendable establecer tablas ARP estáticas de la siguiente forma:
Assembly en GNU/Linux para Hackers Newbies, Parte IX – FINAL
USANDO STACK PARA ENVIAR PARAMETROS A FUNCIONES
Para usar la Stack y enviar argumentos a una función, es necesario conocer el funcionamiento de los registers ESP y EBP que se encargan de apuntar a la posición actual de la Stack y apuntar a los datos almacenados respectivamente.
Como se ha indicado anteriormente, la Stack en un segmento de ejecución que contiene valores de memoria Alta y Baja que se van apilando en base a una pila FIFO, cuando se almacenan valores en dicha pila, necesariamente el valor de memoria del register ESP se actualiza para apuntar a la nueva posición del ultimo elemento almacenado en la pila, de esta forma se mantiene la consistencia de la misma y se puede invocar a operaciones PUSH y POP sobre la pila de forma segura, es decir, sin tener la preocupación de que se vayan a recuperar o almacenar valores en posiciones de memoria inconsistentes.
Assembly en GNU/Linux para Hackers Newbies, Parte VIII
FUNCIONES EN ASSEMBLY
En Assembly es posible utilizar funciones del mismo modo que se utilizan en cualquier lenguaje estructurado como C/C++ o Pascal, su funcionamiento es simple, solamente basta con definir el nombre de la función y posteriormente invocarla con la instrucción call. En este sentido es bastante similar al concepto de segmento de ejecución, sin embargo, tiene la diferencia de que se ejecuta de forma independiente del flujo principal del programa (a diferencia de un segmento de ejecución que se define en algún punto del flujo principal) por esta razón, el uso de funciones resulta conveniente para separar instrucciones del flujo de ejecución e invocarlas solamente cuando resulte conveniente.
Assembly en GNU/Linux para Hackers Newbies, Parte VII
FLUJO CONDICIONAL DE UN PROGRAMA EN ASSEMBLY
Existen una serie de instrucciones que consisten en la ejecución de una determinada rutina dependiendo de que se cumplan ciertas condiciones para su ejecución. En Assembly, algunas de estas instrucciones están relacionadas con las Flags contenidas en el register EFLAGS, de este modo cada una de estas instrucciones verifican si dicho register tiene establecida una determinada bandera y en función de dicha verificación, ejecutar o no una rutina de código, lo que en lenguajes como Pascal, C/C++ o Java se conoce como una instrucción IF, pero aquí es un poco mas compleja.
Las instrucciones de flujo condicional basadas en las banderas del register EFLAGS son:
Assembly en GNU/Linux para Hackers Newbies, Parte VI
FLUJO INCONDICIONAL DE UN PROGRAMA EN ASSEMBLY
Las instrucciones que se encuentran en esta categoría corresponden a aquellas que no se encuentran limitadas por instrucciones condicionales para que se su ejecución se lleve a cabo.
El siguiente es el programa de ejemplo que se usará para la demostración de los tópicos relacionados con el flujo incondicional de un programa en assembly, que como en casos anteriores se depurará paso a paso para su correcto entendimiento.
Assembly en GNU/Linux para Hackers Newbies, Parte V
USANDO STRINGS EN ASSEMBLY
Para manipular Strings en assembly, el programador dispone de los comandos MOV(X) para desplazar segmentos de memoria y valores en direcciones de memoria, sin embargo, para manipulación de Strings se cuenta con comandos MOVS(x) adicionales diseñados específicamente para el tratamiento de cadenas en Assembly, estos comandos adiciones son:
MOVSB: Mueve un byte (8 bits)
MOVSW: Mueve una palabra (16 bits)
MOVSL: Mueve una palabra doble (32 bits)
Assembly en GNU/Linux para Hackers Newbies, Parte IV
MANIPULAR POSICIONES DE MEMORIA EN UN PROGRAMA ASSSEMBLY
En assembly podemos mover valores de una posición de memoria origen a una posición de memoria destino, siendo esta, una de las actividades mas frecuentes en un programa assembly. Para mover valores de memoria de un register a otro, usamos la instrucción MOV(x) existen 3 variables de este comando dependiendo del tamaño del origen y del destino, estas son:
- MOVL : Mueve un valor de 32 bits. movl %eax, %ebx
- MOVW: Mueve un valor de 16 bits. movw %ax, %bx
- MOVB: Mueve un valor de 8 bits. movb %ah, %bh
Assembly en GNU/Linux para Hackers Newbies, Parte III
ESTRUCTURA DE UN PROGRAMA EN ASSEMBLY
La estructura de un programa en assemby esta determinada por diferentes zonas en las cuales se declarán variables, se inicializan y posteriormente se utilizan por diferentes rutinas que realizan una función definida, las zonas principales en un programa en assembly son las siguientes:
.data: Segmento de inicialización de datos, como cadenas o valores numéricos
.bss: Segmento donde se indican las variables sin inicializar
.text: Segmento donde se realizará la ejecución propiamente dicha del programa, las instrucciones en este segmento están diferenciadas en diferentes subsegmentos dentro del segmento .text, el más importante que es donde se inicia la ejecución del programa es el subsegmento _start, este subsegmento puede compararse como la rutina main en un programa escrito en C/C++, por otro lado también se encuentra el segmento .globl _start, donde se ejecutaran funciones externas, aquí se definen invocaciones a librerías externas y demás dependencias del programa.
Assembly en GNU/Linux para Hackers Newbies, Parte II
ORGANIZACION DE MEMORIA VIRTUAL
SEGMENTO STACK
Este segmento es un LIFO (Last In First Out), que va aumentando partiendo desde el valor mas alto de memoria, hasta el valor mas bajo en la medida que se van ingresando valores en dicha pila, el Register ESP siempre estará apuntando al valor actual de la pila. Esta pila solamente soporta dos operaciones, las cuales son push y pop que consisten básicamente en “poner” valores y “quitar” valores desde la cima de la pila, estas operaciones determinan la posición del ESP, independiente de la función que se ejecute, siempre apuntará a la ultima posición de la pila.
Assembly en GNU/Linux para Hackers Newbies, Parte I
BASES DE LA ORGANIZACION DEL SISTEMA
En cualquier sistema contamos con 3 elementos vitales que interactuan entre si para obtener algún tipo de resultado o procesamiento, estos elementos son: CPU, dispositivos de Entrada y Memoria. Estos 3 elementos se comunican por medio de lo que se conoce como el bus del sistema (system bus) que permite que estos elementos interactuen entre ellos.
BASES DE LA CPU:
La unidad de procesamiento central, cuenta con 3 elementos vitales en su funcionamiento, estos son:
Unidad de control: Recibe y decodifica las instrucciones enviadas por la unidad de ejecución, y también se encarga de recibir y almacenar datos en memoria
Unidad de ejecución: La ejecución actual de instrucciones es efectuada aquí, esta unidad es la encargada de recibir variables y banderas que determinan el comportamiento de un programa en un momento determinado.
Registers: Se trata localizaciones internas de memoria utilizadas como variables que son posteriormente enviadas a la unidad de ejecución para su uso y/o procesamiento.
Banderas/Flags: Se encarga de controlar y transmitir los eventos que ocurren mientras la ejecución se esta llevando a cabo, los registers son muy importantes para comprender assembly y se desglosan en las siguientes categorías:
Hydra, Ataques de Fuerza Bruta
Instalación de THC Hydra
Para instalar THC Hydra solamente es necesario descargar la ultima versión disponible desde:
http://www.thc.org/thc-hydra/
Descargar el fichero tar.gz y descomprimirlo en un directorio.
Finalmente, en dicho directorio, ejecutar:
hydra-6.1-src# ./configure
hydra-6.1-src# make
hydra-6.1-src# make install
En este caso, es necesario tener instalado el paquete build-essentials, para ejecutar el comando “make” En el caso de ataques contra el protocolo SSH, es necesario tener instaladas las librerías libssl-dev y libgtk2.0-dev
Con los comandos anteriores se compila e instala el programa para posteriormente ser usado.
Aircrack y seguridad en redes wireless Parte I
Aircrack-ng es una suite de herramientas que permite realizar diferentes ataques sobre diferentes AP, de esta forma es posible obtener la clave de dicho AP y autenticarnos de forma correcta, el mecanismo para crackear los mecanismos de seguridad de una red inalambrica depende mucho del método de cifrado utilizado, si se utiliza WEP, es posible explotar varias vulnerabilidades relacionadas con este tipo de cifrado, por ejemplo realizar un ataque de arp-spoofing, ataques basados en los vectores de inicialización recolectados en el trafico de red y así poder descifrar la clave por fuerza bruta, sin embargo si se utiliza WPA, solamente es posible realizar un ataque de fuerza bruta basado en un diccionario de claves, dado que se han detectado pocas vulnerabilidades que puedan ser utilizadas de forma eficiente para “romper” una clave WPA/WPA2
Navegando de forma Anonima con TOR (The Onion Router)
RED TOR.
Con Tor es posible la navegación de forma anónima utilizando la red Tor que permite que nuestras peticiones viajen cifradas por medio de muchos nodos, por lo tanto cuando el destino recibe la petición no dispone del origen real de dicha petición, solamente dispone del nodo de salida de la red Tor por medio del cual se ha hecho entrega de los paquetes enviados pero desde dicho nodo, no es posible conocer el destinatario, ya que el nodo de salida puede estar ubicado en cualquier parte del mundo, ademas, el nodo de salida tampoco conoce el origen de las peticiones, de esta forma la navegación de un usuario de esta red es anónima.
