ARP Poisoning – Man in the Middle
Ahora aprenderemos a hacer y como funciona (básicamente) un ataque MITM.
Necesitamos ips y macs de los equipos implicados y de la gateway, en mi caso:
- Atacante
- IP: 172.26.0.34
- MAC: 00:80:5a:38:3f:ed
- S.O: GNU/Linux Ubuntu 9.10
- Victima
- IP: 172.26.0.33
- S.O: Windows 7
- Gateway
- IP: 172.26.0.1
- MAC: 00:60:b3:fb:43:b2
Bien ahora desde el atacante, abriremos una sesión del sniffer Wireshark con el comando wireshark &
Si no lo tienes instalado, en distribuciones basadas en Debian basta con un simple:
sudo apt-get install wireshark
Ahora en la víctima comprobaremos como está la tabla ARP, mediante el comando arp -a:
Y ahí podemos observar la IP y MAC del atacante y de la gateway.
Volvemos al equipo atacante y comenzamos el ataque con Ettercap:
- -T => Ataque desde consola
- -q => “Quiet Mode”… Es decir no mostrará nada.
- -i => Especificamos nuestra interfaz de red
- -M => Selección de MITM
- /172.26.0.33/ y /172.26.0.1/ son las víctimas.
Vemos como se envían Replays Falsos.
Ahora comprobemos la tabla ARP de la víctima:
La tabla está envenenada. La MAC del gateway queda cambiada a nuestra dirección MAC, por lo que podremos interceptar el tráfico de la víctima.
Desde la víctima, por ejemplo abrimos una página web.
Ahora desde el atacante vamos a mirar si Wireshark a interceptado algo:
Y efectivamente, estamos interceptando el tráfico de la víctima.
Ahora sólo nos queda terminar el ataque:
Como vemos, Ettercap se encarga de restablecer los parámetros originales de la víctima.
Una vez finalizado el ataque, las MACs se reestablecen.
Arquitectura del microprocesador: El banco de registros. (III)
Arquitectura del microprocesador: La unidad de control (I)
Arquitectura del microprocesador: Unidad aritmético-lógica (II)
Arquitectura del microprocesador: El banco de registros (III)
Arquitectura del microprocesador: Buses (IV)
Tradicionalmente el banco de registros se ha divido en dos grupos: los registros de propósito general y los que tienen una función específica. Al primer grupo pertenecen aquellos que el programador puede usar libremente para almacenar temporalmente datos, mientras que los segundos se utilizan de manera indirecta. Los registros con función específica más usuales son:
- Contador de programa: Contiene la dirección de la memoria donde está alojada la siguiente instrucción a ejecutar. Actúa, por tanto, como un puntero y, de hecho en algunos microprocesadores se denomina puntero de instrucción. Es la unidad de control la que utiliza este registro para recuperar las instrucciones del programa, incrementando su contenido a medida que se avanza en la ejecución o modificándolo cuando se encuentra una instrucción de salto.
- Puntero de pila: En ocasiones es necesario guardar temporalmente el contador de programa, por ejemplo al saltar a una subrutina o cuando el microprocesador debe atender una interrupción externa, con la intención de recuperarlo posteriormente. Los primeros microprocesadores contaban con una pila interna, en el propio circuito integrado, que tenía una capacidad limitada y solía permitir 5 u 8 niveles como máximo. Actualmente la pila se almacena en memoria principal, externa al microprocesador de forma que éste lo único que necesita es conocer la dirección donde está el tope o parte alta de la pila. Almacenar dicha dirección es el objetivo del registro del puntero de pila.
- Acumulador: Puede ser utilizado como registro de propósito general en muchas situaciones, pero en otras adquiere el papel de registro específico al ser el destinatario de diferentes operaciones aritméticas, lógicas o de entrada/salida.
- Estado: Su denominación cambia según el tipo de diseño y fabricante, pero su finalidad es siempre la misma: mantener una serie de bits indicando el estado en que se encuentra el microprocesador. Ese estado proviene normalmente de la ejecución de la última instrucción, pudiendo influir en cómo se ejecutarían las posteriores. También es posible que ciertos bits modifiquen el modo de funcionamiento del procesador, de forma general o ante determinadas instrucciones.
- Otros registros: Si bien los cuatro citados pueden considerarse los más importantes, todos los microprocesadores disponen además de otros registros de uso específico, ocultos en su mayor parte que emplean para almacenar el código de la instrucción que está ejecutándose, contener temporalmente datos procedentes de memoria que van a intervenir en un cálculo, etc.
En un principio los microprocesadores contaban sólo con registros de 8 o 16 bits pensados para operar con aritmética entera, pero en la actualidad el tamaño ha crecido hasta los 32, 64 e incluso 80 bits, contemplándose tanto la aritmética entera como la de punto flotante.
Arquitectura del microprocesador: Unidad aritmético-lógica (II)
Arquitectura del microprocesador: La unidad de control (I)
Arquitectura del microprocesador: Unidad aritmético-lógica (II)
Arquitectura del microprocesador: El banco de registros (III)
Arquitectura del microprocesador: Buses (IV)
Conocida también como ALU (Arithmetic Logic Unit), podría decirse que es la calculadora interna del microprocesador, con capacidad para realizar operaciones aritméticas pero también de tipo lógico.
Las operaciones aritmético-lógicas que puede ejecutar por sí mismo un procesador dependerán del diseño de la ALU. Los x86 hasta el 80386, por ejemplo, contaban con una ALU que ofrecía únicamente operaciones con aritmética entera y solamente se contemplaban las cuatro operaciones aritméticas básicas. Las aplicaciones que requerían trabajar con coma flotante, y realizar operaciones más complejas, tenían que hacerlo por software, lo cual era lento, o bien requerir que el sistema contase con un coprocesador matemático.
En la actualidad los microprocesadores disponen de una ALU preparada para operara con aritmética entera y de punto flotante, ejecutando por hardware operaciones complejas que, de ser implementadas mediante software, requerirían mucho más tiempo.
La ALU cuenta con dos entradas, asumiéndose que una de ellas siempre es el acumulador y que la otra, procedente de cualquier otro registro o e la memoria, está en un registro temporal. La única salida, en la parte superior, se dirige al acumulador. En el funcionamiento de la ALU también interviene el contenido del registro de estado, si bien éste no actúa como un tercer operando sino como un agente externo que puede influir en la operación que realice la ALU. Dicha operación vendrá dictada por la unidad de control que, a través del bus interno, controla también el funcionamiento de la ALU.
Grub: Invalid Signature. Error arrancando Windows
Hoy he vuelto a instalar Windows en una pequeña partición. Como siempre que tienes instalado Linux antes, Windows machaca el grub. Así que hice el proceso de recuperación del grub.
Pero a mi sorpresa el grub al arrancar Windows me daba un error que nunca antes me había dado: Invalid Signature.
Así que decidido, fui a editar /boot/grub/menu.lst y tachán! No está. No recordaba que Ubuntu 9.10 utiliza Grub2 y ese archivo ya no existe, ahora en su lugar nos encontramos con /boot/grub/grub.cfg. Lo que hace “especial” a este archivo esque es exclusivamente de lectura, y bajo ningún concepto se puede editar, ni siquiera desde un Live CD.
Yo tengo los SS.OO en el segundo disco duro (/dev/sdb), así que comprobé el siguiente archivo: /boot/grub/device.map
Y aquí estaba el error en mi caso. El archivo apuntaba a /dev/sda, así que lo edité por /dev/sdb y guardé los cambios y después actualicé el grub:
sudo os-prober
sudo update-grub
sudo reboot
Con eso conseguí arreglarlo todo y ahora funciona perfectamente, de momento
.
Arquitectura microprocesador: La unidad de control (I)
Arquitectura del microprocesador: La unidad de control (I)
Arquitectura del microprocesador: Unidad aritmético-lógica (II)
Arquitectura del microprocesador: El banco de registros (III)
Arquitectura del microprocesador: Buses (IV)
Interrupciones
Dos opciones para que los perifericos interactuen:
- Cada cierto tiempo el ordenador (S.O) controla si existe alguna operación pendiente con alguno de los periféricos genera mucha perdida de tiempo
- Cuando un periférico necesita comunicar con el ordenador se genera una petición de interrupción IRQ en el sentido de la comunicación que sigue una serie de patrones.
Interrupción: Es una comunicación especial ordenador periférico para indicar que dicho dispositivo necesita atención inmediata. Entonces en ese momento suspende lo que estuviera haciendo para atender siempre y cuando no exista petición anterior de mayor prioridad pendiente.
Prioridad de las IRQ:
De mayor a menor importancia:
Excepciones de la CPU (error en tiempo de ejecución)
Interrupción software
Interrupciones hardware (no enmascarables)
Interrupciones Hardware (enmascarables)
Funcionamiento:
- Se genera la petición de interrupción
- CPU STOP y gestiona la IRQ a través de lo que se llama ISR (Routine Service Interruption) vía un programa cargado en la ram o en la bios. A este programa se apunta con el lector de interrupción (este lector depende de cada de interrupción). La información de los vectores de interrupción apuntando al programa que gestiona dicha interrupción se carga al iniciar el sistema operativo. (BIOS: Sistema que se encarga de realizar las funciones básicas para que el ordenador arranque con determinado sistema operativo)
- Se ejecuta el programa y una vez terminado la CPU continuará por donde iba.
Algunos vectores de interrupción:
Vector Interrupción
3 -> Punto de ruptura de interrupción
4-> Desbordamiento
9-> Teclado
14-> Fallo de página (MP)
32+255->libres
¿Cómo llega la IRQ a la CPU?
A través del bus de control y llegan a un controlador de interrupciones que también es un dispositivo hardware, de aquí a la CPU.
Proceso más detallado
- Dispositivo de E/S quiere interrumpir se le asigna una línea de interrupción en el bus
- Envía la interrupción vía IRQ
- Señal recogida, pasa al controlador de interrupciones (PIC) este lo que hace es que primero clasifica y segunda lo envía a la CPU
- La cpu pregunta porque tipo de interrupción al PIC
- El PIC contesta
- Se genera el vector de interrupción y se sirve la interrupción.
Líneas de petición de interrupción
Existe un estándar de facto donde se asignan una serie de líneas de interrupción donde se especifica el nombre de la interrupción, el hexadecimal como código de la interrupción, y la descripción..
La instalación de un nuevo dispositivo de E/S en nuestro sistema internamente ocurre:
Se realiza la asignación de una IRQ del sistema para dicho dispositivo.
¿Cómo se hace esto?
Antiguamente-> Conectar un jumper la placa base y el dispositivo
Hoy día-> Se resuelve vía driver o bien si el dispositivo es PnP.
Backups: Duplicati y USB Image Tool
Hace poco descubrí este interesante programa, llamado USB Image Tool.
Es un sencillo programa de creación de backups y restauración para dispositivos extraíbles.

USB Image Tool
La interfaz es bien sencilla… consta principalmente de tres botones
- Restore: Para restaurar copias previamente creadas.
- Rescan: Volver a escanear en busca de otros dispositivos extraíbles
- Backup: Crear la copia de seguridad que creará un archivo *.img
Duplicati es otro programa de creación de backups.

Ventana principal
Esta es la ventana principal. Para crear un nuevo backup, deberemos marcar la opción Schedule a new backup.

Elegir nombre
Aquí elegiremos un nombre para nuestra copia de seguridad.

Carpetas a respaldar
Elegimos las carpetas que deseamos respaldar.

Elegir lugar de almacenamiento.
Aquí podremos elegir donde se alojará nuestra copia de seguridad, como vemos, cuanta con una gran variedad.

Finalizando el asistente
Aquí nos hace un resumen de nuestras opciones, yo he marcado que haga copia cada semana, y cada mes una copia completa.
Si queremos que realice el backup inmediatamente deberemos marcar la opción Run backup now.
Diseño de consultas en Access : QBE
- Consultas de selección: Son las consultas que extraen datos de una o más tablas para mostrarlos en una vista diferente. Muestra aquellos datos de una tabla que cumplen los criterios especificados en la consulta.
- Consultas de parámetros: Una consulta parametrizada es una consulta que, cuando se ejecuta muestra un cuadro de diálogo propio que solicita información por ejemplo, criterios para recuperar registros o un valor que desea insertar en un campo. Para diseñar la consulta basta con introducir nombres de variables entre “[]” para que Access solicite los datos.
- Consultas de tabla de referencias cruzadas: Las consultas de referencias cruzadas se utilizan para calcular y reestructurar datos de manera que su análisis sea más sencillo. Las consultas de referencias cruzadas calculan una suma, una media, un recuento u otro tipo de totales de datos, y agrupan los resultados en una tabla de dos entradas.
- Consultas de acción: Son consultas que realizan cambios sobre los registros de las tablas a los que hacen referencia. Hay cuatro tipos:
- Consulta de eliminación: Elimina un grupo de registros de una o más tablas. Por ejemplo, puede utilizar una consulta de eliminación para quitar productos que ya no se fabrican o de los que no hay pedidos.
- Consulta de actualización: Realiza cambios globales en un grupo de registros de una o más tablas. Por ejemplo, puede aumentar los precios un 10% para todos los productos lácteos.
- Consulta de datos anexados: Agrega un grupo de registros de una o más tablas al final de una o más tablas. Por ejemplo, suponga que consigue nuevos clientes y que tiene una base de datos que contiene una tabla con información acerca de esos clientes. Para evitar tener que escribir toda esta información otra vez, puede anexar dicha tabla a la tabla Clientes.
- Consulta de creación de tabla: Crea una tabla nueva a partir de la totalidad o una parte de los datos de una o más tablas. Las consultas de creación de tablas son útiles para crear una tabla que desee exportar a otra base de datos o a una tabla histórica que contenga registros antiguos.
- Consultas específicas de SQL: Son consultas que no se pueden definir desde la cuadrícula QBE de Access, si no que se tienen que definir directamente en SQL.
Videotutorial ERwin 4.0
Creando el diseño de una base de datos con ERwin 4.0
Parte 1:
Parte 2:

















