miércoles, mayo 30, 2007

Snort y el prepreprocesador sfPortscan

Mientras estaba escribiendo un módulo para analizar los ficheros de log de Snort, me he encontrado con paquetes de esta guisa:
00000000        4d 41 43 44 41 44 4d 41 43 44 41 44 08 00 45 00 MACDADMACDAD..E.
00000010        00 9b 00 00 40 00 00 ff 8d 73 ac 18 03 86 d9 7c ....@....s.....|
00000020        62 d6 50 72 69 6f 72 69 74 79 20 43 6f 75 6e 74 b.Priority.Count
00000030        3a 20 31 36 0a 43 6f 6e 6e 65 63 74 69 6f 6e 20 :.16.Connection.
00000040        43 6f 75 6e 74 3a 20 32 30 0a 49 50 20 43 6f 75 Count:.20.IP.Cou
00000050        6e 74 3a 20 35 0a 53 63 61 6e 6e 65 64 20 49 50 nt:.5.Scanned.IP
00000060        20 52 61 6e 67 65 3a 20 31 30 2e 38 31 2e 39 2e .Range:.10.81.9.
00000070        34 37 3a 31 30 2e 38 31 2e 39 2e 32 32 35 0a 50 47:10.81.9.225.P
00000080        6f 72 74 2f 50 72 6f 74 6f 20 43 6f 75 6e 74 3a ort/Proto.Count:
00000090        20 30 0a 50 6f 72 74 2f 50 72 6f 74 6f 20 52 61 .0.Port/Proto.Ra
000000a0        6e 67 65 3a 20 30 3a 30 0a                      nge:.0:0.
Esto es un trama ethernet generada por el propio snort, concretamente por el preprocesador sfPortscan para indicar la detección de un posible scaneo de puertos. Se distingue de un paquete normal porque la dirección MAC es MACDADMACDAD (tal como viene indicado en el fichero README.sfportscan). Lo "malo" es que si estás capturando en una interfaz linux cooked (-i any), esta trama tiene un formato diferente a la captura (es una trama ethernet normal).

Technorati Tags:

martes, mayo 29, 2007

Novedades de Windows Server 2008

(vía osnews) Acabo de leer el un artículo en BetaNews donde se publican las novedades a nivel de núcleo del sistema que nos vamos a encontrar en Windows 2008. Han sido presentadas por Mark Russinovich (uno de los ingenieros que estuvo en Sysinternals, que ahora trabaja en Microsoft).

  • Sistema de ficheros autoreparable. Se intenta evitar que en caso de corrupción del sistema de ficheros, haya que reiniciar el ordenador para poder revisar el mismo y repararlo. Si el sistema detecta una corrupción del sistema de ficheros, lanza un hilo encargado de reconstruir los errores en segundo plano, y bloqueando el acceso a los ficheros que están afectados.
  • Inicio de sesiones en paralelo. Hasta ahora, la creación de sesiones era una operación que se serializaba, es decir, se iba creando una a la vez. Esto afectaba a la velocidad de creación de sesiones en las máquinas que eran servidores de terminales (a fin de cuentas el kernel NT y el subsistema Win32 nunca se diseño para tener varios usuarios a la vez de manera inicial (época NT), sino que fueron propiedades que se fueron añadiendo a partir de Windows 2000.
  • Terminación de servicio limpia. El sistema no se para hasta que los servicios han parado todos (hasta 2003, se daba un periodo de gracia de 20 segundos para parar, posteriormente se elimina por las bravas). Mientras los servicios digan que están en proceso de apagado, el sistema sigue esperando. En contra, esta medida, puede dar lugar ha ciertos problemas de seguridad.
  • Manejador de transaciones del kernel: Permite usar transaciones para acceder a recursos compartidos como puede ser una rama de registro o un fichero determinado y evitar su corrupción.
  • SMB2: Nueva versión del sistema de archivos compartidos de Windows.
  • Soporte para usar espacio de direcciones aleatorio (ASLR Address Space Load Randomization): Las direcciones de carga de librerías dinámicas y drivers cambian con cada programa ejecutado para evitar cierto tipo de exploits y malware.
  • Windows Hardware Error Architectur (WHEA): Un protocolo para pasar información sobre errores que detecten la aplicación al sistema.
  • Soporte para virtualización tanto en arquiteturas AMD e Intel.
  • PowerShell. El famoso proyecto Monad, disponible si se quiere probar para Windows XP / 2004.
  • Server Core: Una versión capada del servidor que no necesita el soporte de GUI para administrarse y configurarse - ¡ya era hora! -

Technorati Tags:

jueves, mayo 24, 2007

Libpcap y captura de paquetes

Cuando se está analizando tramas, y usando herramientas como Snort, hay que tener en cuenta cierto detalles de implementación para evitar meter la pata. He estado usando en un módulo de ossim que estoy desarrollando que no es lo mismo capturar de una interfaz física en Linux (i.e eth0), que capturar desde la interfaz cooked (i.e any). En el primer caso, la librería devuelve una estructura tal que así (de decode.h de Snort y de los ficheros includes de Linux:
struct ether_header
{
  u_int8_t  ether_dhost[ETH_ALEN];      /* destination eth addr */
  u_int8_t  ether_shost[ETH_ALEN];      /* source ether addr    */
  u_int16_t ether_type;                 /* packet type ID field */
};

Mientras que en el segundo caso es:
#define SLL_HDR_LEN     16              /* total header length */
#define SLL_ADDRLEN     8               /* length of address field */
typedef struct _SLLHdr {
        u_int16_t       sll_pkttype;    /* packet type */
        u_int16_t       sll_hatype;     /* link-layer address type */
        u_int16_t       sll_halen;      /* link-layer address length */
        u_int8_t        sll_addr[SLL_ADDRLEN];  /* link-layer address */
        u_int16_t       sll_protocol;   /* protocol */
} SLLHdr;

Cuando se están capturando paquetes, hay que tener cuidado con estos detalles :)

miércoles, mayo 23, 2007

Snort, vlan, pcap y Linux

Estoy usando Snort como IDS en un despliegue donde trabajo actualmente. Normalmente, Snort espera un parámetro de interfaz -i, donde se indica la interfaz por donde debe de trabajar. Si se está trabajando con una versión de libpcap lo bastante actual, tendrá soporte para una interfaz any, que escuchará en cualquier interfaz de red de la máquina.

¿Pero que pasa si queremos escuchar en una interfaz física donde hay varias vlanes?. En principio, lo lógico sería que viésemos todo el tráfico, tanto las tramas que están marcadas con una vlan como las tramas sin marcar. Pues consultando el wiki the Wireshark (Ethereal), me encuentro con esta información sobre Linux.

... After your VLAN interfaces are set up and traffic is flowing, you can run Wireshark and capture on the VLAN interface of your choice (e.g., eth0.100 for VLAN 100) or on the underlying physical interface (e.g., eth0). If you choose the former, you will only see frames destined for that VLAN; if you choose the latter, you may see all frames or you may see only untagged frames (if there are any). It depends on the NIC, the NIC firmware, the driver, and the alignment of the moon and planets. ...
Es decir, en función del driver, el firmware del mismo o el driver, veremos el tráfico completo si escuchamos en la interfaz física. Lo comento para no llevarse sorpresas cuando se esté capturando tráfico o usando un IDS en Linux.

Technorati Tags: , ,

lunes, mayo 21, 2007

Placas viejas (P86810/W2) , Windows 2000 ,ACPI

Cuando se instala Windows 2000, suele utilizar el estándar ACPI para obtener información sobre los dispositivos que tiene el sistema, así como la asignaciones de interrupción y los recursos que se usan. Normalmente, esta opción se controla desde la BIOS de la placa. Una cosa importante, es que el kernel que instala el sistema, depende de la presencia de ACPI o no. Es decir, si instalamos un sistema Windows 2000 con ACPI y lo desactivamos posteriormente, no va a funcionar (ver este artículo)

Normalmente, casi nunca he tenido problemas instalando tarjetas PCI en máquinas. Normalmente todo los mecanismos de configuración automáticos del PCI funciona correctamente. Sin embargo, en las QDI P86810/W2, una placa antigua basada en el chipset i810 de Intel, con un Pentium III a 500 Mhz, lo único que he tenido son problemas. Para empezar, no tiene soporte de IOAPIC

Windows 2000, si está usado en un sistema que soporte ACPI, utilizará este para configurarse, y se olvidará de los parámetros que se hayan fijado en BIOS (ver KB252420). Esto entre otras consecuencias, es que veremos todas las tarjetas PCI compartiendo IRQ, al menos en la placa base que estoy manejando.

Curiosamente, al utilizar una tarjeta Wireless con un chipset RA-Link y el ratón en USB, empezaba funcionando la wireless bien, y el ratón ok, pero de buenas a primera, desaparecía la conectividad y el ratón iba a saltos. Por otra parte, al usar el sistema en Linux, no tengo problemas ninguno (no veo mensajes de que pierden interrupción y demás). Para arreglar el desaguisado de Windows, tengo que probar la instalación del sistema con el ACPI desactivado y usar una HAL de PC Standar y no una HAL ACPI.

Technorati Tags: ,

jueves, mayo 17, 2007

Deshabilitar Dashboard en MacOS X Tiger

Puesto que no uso para nada el Dashboard en el portátil, he decido deshabilitarla. Para ello:
defaults write com.apple.dashboard mcx-disabled -boolean YES
killall Dock

Tenemos que reiniciar el Dock para que tenga efecto el cambio de configuración. Para habilitarla de nuevo:

defaults write com.apple.dashboard mcx-disabled -boolean NO
killall Dock

Technorati Tags: ,

miércoles, mayo 16, 2007

Algunas noticias de Apple y de aplicaciones

Apple acaba de anunciar una revisión del Macbook, fundamentalmente ampliando la memoria RAM de serie a 1 Gigabyte y algo más de capacidad de disco (con 80 Gb en el modelo básico). La verdad, me encantaría una versión "Pro" de los Macbook con 12" o 13", com una gráfica más en condiciones. Hay rumores varios (ver aqui) sobre la posibilidad de que Apple esté diseñando un portátil de ese estilo.

Por otra parte, la gente de Omnigroup está empezando a distribuir la beta de omnifocus, un pequeño organizador personal de tareas, basado en Getting Things Done (esto lo he pillado en arstechnica).

Technorati Tags: ,

viernes, mayo 11, 2007

Algunas utilidades para Python y MacOS X

Leyendo este artículo en la web de O'Reilly, he encontrado varias utilidades interesantes para usar Python y Mac OS X. MacOS X tiene un lenguaje de scripting denominado AppleScript. MacOS X tienen una serie de frameworks (OSA) que permite hacer las aplicaciones exporten su funcionalidad para usar desde lenguajes scripts.

Me interesaba acceder a la funcionalidad de las aplicaciones en un lenguaje que me guste más como python, en vez de AppleScript. Leyendo el artículo, he encontrado Appscript que permite acceder a las funcionalidades (hay otro proyecto, PyOSA, que quiere integrar Python con OSA, el mecanismo de scripting de MacOS X.)

Por otra parte he visto ipython, un programa que da una mayor funcionalidad interactiva al shell de Python, pudiéndose usar como un shell de sistema normal. Ahora, a enredar con ellas, para ver como se puede facilitar la administración y uso del sistema.

Technorati Tags:

martes, mayo 08, 2007

Algunas notas de la release de OpenBSD 4.1

Acercase a OpenBSD siempre es un poco complicado. Es un sistema muy seguro, con una documentación excelente, organizado entorno a un grupo de desarrolladores con un alto nivel técnico. Orientado al servidor, siempre ha estado por detrás en soporte hardware y en ciertos avances en otros Unix (como pro ejemplo el soporte SMP o el soporte hardware). Sin embargo, es un sistema que tiene una estabilidad envidiable, una seguridad excelente en el sistema base y una documentación, que para mi gusto, es de lo mejor en los Unix libres (junto con FreeBSD). Y desde luego, tiene proyectos como openssh o openbgpd que lo utilizan varios sistemas libres.

Hace poco salió la 4.1 del sistema. Entre las novedades más interesantes es mejor soporte en arquitectura sparc64 (corría con el caché de Datos del procesador desactivado, con lo cual iba a pelades), soporte para muchas más hardware, mejoras en los diferentes daemon de routing que han reescrito (openbgpd, openospfd, nueva versión de daemon de rip).

Se nota que es un sistema pensado para servidores. Tiene pocas concesiones al usuario más novel y de desktop. Leyendo en osnews, pillé una entrevista a varios desarrolladores de OpenBSD Onlamp, en la sección BSD que comenta las mejoras del sistema. Me ha llamado la atención de no querer implementar WPA - ellos creen que es un algoritmo complejo, y que para los usuarios actuales de OpenBSD no es necesario - , el soporte de sparc64 - y el porqué de su lentitud -, un nuevo soporte para las herramientas pkg_config reescritas con licencia BSD y herramientas anti-spam.

Es increible el trabajo de este grupo de desarrolladores (no son muchos), y recordar que muchos Unix libres utilizan las herramientas de seguridad que han ido desarrollando la gente de OpenBSD.

Technorati Tags:

viernes, mayo 04, 2007

iBook G4, normativas de soldaduras y fallos del iBook.

(vía Slashdot) He estado siguiendo con interés el problema que afecta a algunos iBook (tengo uno de 12") del ventilador de la muerte (el ordenador enciende y el ventilador gira rápidamente). Sabía que los iBook G3 están afectado por un fallo de placa base, debido a que ciertos componenentes se sueltan. Esta mañana leyendo la historia en Slashdot, confirmama un informe de la agencia de consumo danesa sobre el posible fallo de diseño: simplemente, las soldaduras saltan. ¿Fallo de diseño, de fabricación, u otra cosa más interesante, fallo debido a la legislación europea?. Siguendo los interesantes comentarios en Slashdot sobre el tema, he dado con dos que me han parecido especialemente interesantes:

El primero:

... There are two industry recognized solder alloys out there. SnPb 60/40 and SAC305. SAC305 is used on RoHS compliant assemblies, and is mandated by the EU. From the photos, it is obvious to me that this solder was SAC305. (Yes, I can tell. From the side-cuts, you can see that the solder is very grainy and dull. This is the hallmark of lead-free solders.) Again, due to the idiotic RoHS legislation, manufacturers are REQUIRED to use a lead-free alternative, among which the SAC305 is the best. ...

En la EU hay una legislación que prohíbe el uso del plomo en los elemenotos electrónicos, y esto, incluye a las soldaduras. El problema es que las aleciaciones que se usan como la SAC305 (Estaño, cobre y plata) son de peor calidad y más débiles - hay un comentario al respecto en este artículo de la Wikipedia -. Por tanto, los esfuerzos a los que se somete la soldadura (por los ciclos de enfriamiento y calentamiento debido al funcionamiento) la pueden acabar rompiendo. Lo mismo si se flexiona la placa por cualquier motivo.

En este otro se habla sobre RoHS, la norma que los burócratas europeos han diseñado para la reducción del uso de materiales nocivos. El problema es que en el mundo de la eléctronica, puede acabar siendo peor el remedio de la enfermedad:

... e solder used in this joint is obviously (to me at least) a lead-free solder. (Lead free solders are exceptionally grainy and dull in appearance compared to leaded solder that is smooth and shiny.) The switch to lead-free solders was mandated to occur last year on July 1st by the European Union. Any electronics shipping into EU member nations must comply with this new standard, which is called RoHS, or "Reduction of Hazardous Substances". (Look it up in Wikipedia.) ... So, why is this a problem? Plasticity. Leaded solder alloys (SnPb 60/30) are extremely ductile. This means that they will flex a considerable amount before fracture occurs. With electronics that experience heat cycles, or any kind of motion at all, this is an extremely beneficial trait to have. Lead-Free solders on the other hand (like the most common SAC305 SnAu3%Cu0.5%) are incredibly brittle. What is obviously happening here is that the heat cycling from the laptop turning on and off is stressing this solder joint, and causing the joint to fail. Had this been leaded solder, I can almost guarantee that this problem wouldn't exist.

So what does this mean? Exactly what the electronics industry has feared. The EU made a dip$#!t move. Industry experts believe that the average lifespan of an electronic device has been significantly diminished. Down to an average consumer product lifespan of 5 years. There have been early reports of serious quality problems, including SWATCH having over 10,000 watches fail within a month of shipping. You can expect to see a drastic shortening of the lifespan of your electronic goodies. This is just the beginning people. If you see a device that is labeled as RoHS compliant, do not buy it if you expect to use it for more than a few years. ...

El autor del comentario nos comenta que las aleccianes de plomo y estaño usadas habitualmente en soldadura - antes de la directiva - son más dúctiles (es decir, permiten una mayor flexión y deformación antes de la fractura), cosa que no ocurre con las de estaño, plata y cobre que las han sustituido. Como consecuencia, la calidad de los productos ha bajado y el tiempo de vida de los mismos, con lo cual, habrá que sustituirlo más a menudo, con las consecuencias que ello lleva.

Centrandome un poco en el problema del iBook, no dejar de mencionar este enlace (ibook G4 logic board fix) donde comentan como buscar los chips y con ayuda de una pata de goma encajarlo en su sitio (Como arrelgar el problema de la placa madre del ibook g4 por 5 euros) y este enlace de AppleWeblog.

En general, ¿quién es el responsable de esto?. Pues desde mi punto de vista la legislación RoHS de la EU, por un motivo sencillo: la industría médica, militar y aeroespacial están exenta de cumplirla. Me pregunto, si al final, la directiva ha creado otro problema peor - como por ejemplo ya pasó con la prohibición del DDT ... - : a fin de cuentas, si las espectitivas en la disminución del tiempo de vida de los aparatos es tan elevada, es probable que haya que fabricar muchos más para sustituir a los que vayan cayendo. Y cuantos de nosotros se cambia de TV cada 5 años, o de aparatos de radio, o usamos ordenadores con 4 o 5 años de antigüedad que cumplen perfectamente su cometido.

jueves, mayo 03, 2007

ARP y múltiples interfaces en Linux

Siempre he pensado, que cuando una máquina recibe una petición ARP (para resolver la dirección MAC asociada a una determinada IP), siempre contesta por la misma interfaz que recibe la petición. Es decir, dado el siguiente ejemplo:

Ejemplo

Si la máquina recibe una petición por la interfaz en0, pensaba que la respuesta iría también por la misma interfaz. Sin embargo, en Linux, no es así: la respuesta va por las dos interfaces (en0,en1), o las que tenga las máquinas.Si se mira esta discusión comentan de esta particularidad de Linux. Mirando, he visto que para desactivar ese comportamiento debe hacerse:

echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter 
Como root.

Technorati Tags: ,