Archive for May, 2010

Generar copias de particiones en Unix

Monday, May 31st, 2010

En general, en las plataformas Unix, como son Solaris y GNU/ Linux, existe una variedad de comandos útiles para todo tipo de propósitos que van desde listar archivos hasta regenerar la distribución misma.

Para propósitos de esta materia, existe un comando llamado dd (convierte y copia un fichero) el cual copia de una partición el contenido y genera otra. Un ejemplo común es crear una partición vacia, especificando la fuénte de datos, la de salida, y el tamaño, entre otras cosas:

lyonn@filemona:~$ dd if=/dev/zero of=miRespaldo count=1 bs=1G

El comando pasado usa como imput file (if) zero, que son caracteres nulos y por tanto para nuestros fines la nueva partición estará vacia, miRespaldo (output file, of) es el identificador de la nueva partición. count son los blooques y bs el tamaño que deseamos. Hasta aquí es una masa de bytes sin forma, por tanto para que sea completada la formación de la partición debemos especificar el tipo de file system a usar, eso se hace con (como root):

filemona:/home/lyonn# mkfs.ext4 miRespaldo
mke2fs 1.41.3 (12-Oct-2008)
miRespaldo no es un dispositivo especial de bloques.
¿Continuar de todas formas? (s,n) s
Etiqueta del sistema de ficheros=
Tipo de SO: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
65536 nodos-i, 262144 bloques
13107 bloques (5.00%) reservados para el superusuario
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=268435456
8 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8192 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
32768, 98304, 163840, 229376

Escribiendo las tablas de nodos-i: hecho
Creating journal (8192 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho

Este sistema de ficheros se revisará automáticamente cada 26 montajes o
180 días, lo que suceda primero. Utilice tune2fs -c o -i para cambiarlo.

Ahora ya está lista, podemos en seguida montar y usar la partición como mejor nos convenga:

filemona:/media/Disk# mkfs.ext3 /home/lyonn/miRespaldo

Voila!!!!

Para comprobar muestren las particiones monatadas, en GNU/ Linux es con el comando df (Solaris también)

¿Cómo se relaciona con la informática forense?

Pues bien, a medida que Unix nos da la posibilidad de copiar particiones enteras, podemos hacerlo con aquella partición que ha sido comprometida y trabajar con la copia en un ambiente estéril. Lo que cambiaría sería el imput file (/dev/zero) por el lugar donde está la partición a copiar.

Espero les sirva la información presentada, la cual no es más que la simple administración de algún sistema operativo tipo Unix.

echo $SALUDOS;

Dirección de grupos de trabajo

Friday, May 28th, 2010

Últimamente en la ingeniería me encuentro con ciertos paradigmas que no había visto como cercanos, es mas, nunca me pregunté, ni me llamaron la atención, es decir, el área humana-administrativa-dirigente.

Algunas de mi spreguntas son ¿Hasta qué punto debemos ser tan técnicos o tan administrativos?, ¿En qué punto está la demarcación?, es decir, cómo encontrar el balance adecuado, tomando en cuenta que en México, hoy por hoy, la gente con mayores habilidades técnicas no subem por tanto si sabes contestar mails y te pegas a los chivos seguramente vas a subir de rango.

Es cierto, que a diferencia lo que pensaba hace dos años con lo que pienso ahora, se torna más interesante el dirigir a un equipo de trabajo, aunque estoy muy desacuerdo con algunas dinámicas que promueven el utilizara a la gente.

He descubierto:

  • Es interesante porque tienes que hacer una sinergia
  • Aprendes muchas cosas que no sabias de ti mismo
  • Compartes buenos momentos y otorgas una oportunidad si eres de esos que las das
  • Te va bien económicamente
  • Aprendes de los demás cosas que al mismo tiempo otorgarás

En la empresa que estoy, yo veo muchas buenas cualidades en mi jefe, las cuales creo que nos ha permitido acomodarnos bastante bien para realizar el trabajo, él tiene una posición de amigo, de comunicarte los objetivos a lograr y en el periodo esperado, sin hacer ninguna clase de exageración. Tiene mucha flexibilidad de horarios, esperando siempre cumplas con los objetivos permite espacios de tiempo que se agradecen, en ves de estar 8 horas frente al monitor.

Creo que algo muy bueno para dirigir es haber empezado desde abajo, saber que se siente estar al pie del cañon rifandote día con día, para eso poderlo disipar cuando tengas el mando.

Pienso que el lider perfecto, más allá de vestir bien, hablar bonito y ser un excelente mentiroso, es alguien que puede en cualquier momento levantarse las mangas y entrarle de lleno al trabajo, porque lo sabe hacer y porque es su responsabilidad y de los demás, saber incluso un poco más que las personas que dirije, flexibilizar en cuanto a tiempos y horarios, porque eso genera una lealtad de tu gente. Sin más artimañas, sin retóricas, con hechos y con similitudes.

Creo que el pensamiento socialista no me deja ni un solo momento, empiezo a atentar contra las jerarquias, ya que enviar mails y apretar las tuercas no son un trabajo superior a programar, por ejemplo. Sin estratos jerarquicos más alla de organizar el trabajo conjunto.

Pues veremos que aprendemos en este curso, y ojala pueda aplicar muchas cosas cuando me toque, y ganarme un buen lugar por entender a la gente que llevo en el mismo barco.

echo $SALUDOS;

Cuadrados perfectos [Problemas]

Tuesday, May 25th, 2010

[Update]

Como lo prometi alguna vez, iba a subir los ejercicios, y vaya que por poco no los subo, si no es que me acuerdo

La liga del archivo es la siguiente: http://lyonn.blominente.com/descargas/pagina68.pdf

Hay siempre en la vida un momento donde te llega la hora, la hora de afrontar aquellas deficiencias que tienes y disipar de una vez por todas. Yo como buen mortal no soy la excepción.

Una de las piedras angulares, creo yo, para todos aquellos que debemos saber álgebra son los cuadrados perfectos. Para su definición basta con ir a la wikipedia y buscar el contenido. Yo prefiero poner algo más práctico e ir directo a los ejemplos.

Hagamos uno de los casos:

4x² + 9 + 12x

ordenamos:

4x² + 12x + 9

Expresamos el primer término y el último en forma de cuadrados:

4x² + 12x + 9 =

(2x)² + 12x + 3²

Si el polinomio anterior equivale a un binomio al cuadrado, entonces los términos del binomio son el primero y el último, entonces:

(2x + 3)²

Para saber si el término del medio cumple, recordamos que el término del medio es “el doble producto del primero por el segundo” por lo tanto:

2(2x)(3) = 12x

Si coincide, por lo tanto:

4x² + 12x + 9 = (2x + 3)²

El ejemplo anterior que usé fue de la página de yahoo preguntas (http://ar.answers.yahoo.com/question/index?qid=20100324095612AAD5Wwq)

El motivo de este post es identificar a partir de un biniomio que término le hace falta para convertirse en un cuadrado perfecto.

Más adelante iré poniendo los ejercicios, ya que aún no le encuentro la forma a como hacerlos, pero seguro que lo haré, por tanto iré actualizando este post en el transcurso de esta semana. Como siempre dejo la referencia que leí y he encontrado algo útil.

Referencia>

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

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

echo $SALDOS;

XITIC3

Sunday, May 23rd, 2010

No cabe duda que el humano me sorprende cada vez más, cuanto más me relaciono con distintas personas noto lo dificil que es entenderse con ellos.

La política, para todos aquellos que no lo sabían, está inmiscuida en todas las relaciones sociales. Como buena muestra podría ser el ejemplo de mi grupo de clase de ingeniería, donde somos tan exóticos y tan distintos unos de los otros, aunque claro, aún entre perros hay razas xD.

Constantemente nuetros puntos de convergencia se van perdiendo, todo por algo que a primera vista parecia una idea buena, un proyecto grupal donde sería lúdico y una forma de decir «Presente!!» al mundo de las comunidades de las TI

Siento que el principal problema es el asesor que nos fue designado,  ambicioso y con necesidad de reconicimiento,el cual habla a lo pendejo de falsas envidias de otros grupos hacia nosotros (no cuenta que muchos tenemos amigos en todos los grupos y la llevamos bien), que el proyecto es muy bueno… si partimos de la lógica de las promesas que esta persona alguna vez hizo y ninguna se ha visto, pues caemos en la falsedad de todo y absoluta desconfianza, no cabe duda cuando la gente es pendeja es pendeja con ganas, lo peor es que se va acentuando con el tiempo, eso me recuerda a un viejo chiste que dice:

-Mamá mamá!!

-Qué pasó hijo?

-Mamá, pendejo se acentua?

-Con el tiempo hijo, con el tiempo

Jajajajaa, muy bueno, aunque si de por sí soy malo contándolos en persona peor por escrito.

Cierto es que he aprendido muchas cosas con ese grupo, como el hablar midiendo un poco más las palabras, además de decir cantidad sorprendente de pendejadas que hacen que el mal día se te olvide y vuelvas a agarrar pila.

Pues veámos que pasa, sólo quedan 8 meses para terminar y volver de nuevo a eso de las responsabilidades laborales al 100% y darnos más escapaditas =P

Informática Forense

Saturday, May 22nd, 2010

Pues como saben, me gusta mucho esta materia, inlcuso podemos decir que medio me obsesione al hablar de este tipo de temas. Sé que hay mucha información, pero me gustaría recopilar un poco de información y complementarla para dejar evidencia de cuánto y como voy creciendo.

Un poco más a fondo...

En el mundo informático existe una cantidad enorme de deficiencias, o errores en las soluciones o aplicaciones de software, aunado a todo esto, la mala experiencia y malas prácticas de los administradores y/o desarrolladores. A estos problemas que he mencionado podemos llamarlos vulnerabilidades los cuales podemos después aprovechar. Las fallas o vulnerabilidades puedo considerar tres, las fallas tecnológicas, las fallas procidementales y las fallas humanas.

Uno de los objetivos también de la informática forense es hallar las motivaciones que llevaron a atacante informático a perpetrar el ataque.

La justicia actual se está apoyando cada vez más en la informática forense, obteniendo evidencia digital y una serie de metodologías para la conservación y análisis de ésta.

Es importante recalcar que son procesos formales y una técnica precisa las que le dan la la veracidad a la informática forense.

En pocas palabras, podemos decir que la informática forense es una ciencia que auxilia a otras ramas como la criminalistica común para llevar a juicio a delincuentes informáticos. La psicología, el derecho, y las TI son indispensables para esta matería.

Los procedimientos que se llevan a cabo son los siguientes: identificaión, preservación, extracción, análisis, interpretación, documentación y presentación de las pruebas.

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                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Hace una año

Monday, May 10th, 2010

Hoy me he puesto a reflexionar acerca de las cosas que estaba haciendo, o estaban sucediendo alrededor de un año atrás. La métrica es abril-mayo.

Hace un año… vi por última vez a Alejandra :S :S.

Hace un año… empezó la influenza.

Hace un año… que estaba terminando de leer acerca de Java.

Hace un año…  que no programo algo complejo.

Hace un año… que mis parientes vivieron con nosotros.

Hace un año… que soy duende verde.

Hace un año…que me preguntaría que estaría haciendo al año siguiente.

Esto es como un meme, así que se lo dejo a zion.

echo $SALUDOS;

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/

Alguien

Saturday, May 1st, 2010

Alguien limpia la celda
de la tortura
que no quede la sangre
ni la amargura

alguien pone en los muros
el nombre de ella
ya no cabe en la noche
ninguna estrella

alguien limpia su rabia
con un consejo
y la deja brillante
como un espejo

alguien piensa hasta cuando
alguien camina
suenan lejos las risas
una bocina
y un gallo que propone
su canto en hora
mientras sube la angustia
la voladora

alguien piensa en afuera
que allá no hay plazo
piensa en niños de vida
y en un abrazo

alguien quiso ser justo
no tuvo suerte
es difícil la lucha
contra la muerte

alguien limpia la celda
de la tortura
lava la sangre pero
no la amargura.

Mario Benedetti