LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

El Instituto Nacional de Tecnologías de la Comunicación (INTECO) ha alertado hoy de un virus, conocido como Disstrack o Shamoon, que sobrescribe y destruye documentos, fotografías y vídeos almacenados en las carpetas del equipo. Este virus actúa sobre plataformas Windows y deja inservibles todos los ficheros que se encuentren en el Escritorio y en las carpetas Descargas, Mis documentos, Mis imágenes, Vídeos y Música, según ha advertido INTECO en su boletín semanal de seguridad.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado


Código:

/* -----------------------------------------
     Network Promiscuous Ethernet Detector.
      Linux 2.0.x / 2.1.x, libc5 & GlibC
   -----------------------------------------
         (c) 1998 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
   -----------------------------------------
   Scan your subnet, and detect promiscuous
   linuxes. It really works, not a joke.
   ----------------------------------------- */
   
/*
 * $Id: neped.c,v 1.4 1998/07/20 22:31:52 savage Exp $
 */
 
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <malloc.h>
#include <ctype.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/tcp.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <time.h>

#define ETH_P_ARP    0x0806
#define MAX_PACK_LEN    2000
#define ETHER_HEADER_LEN 14
#define ARPREQUEST    1
#define ARPREPLY    2
#define perr(s) fprintf(stderr,s)

struct arp_struct
  {
    u_char  dst_mac[6];
    u_char  src_mac[6];
    u_short pkt_type;
    u_short hw_type;
    u_short pro_type;
    u_char  hw_len;
    u_char  pro_len;
    u_short arp_op;
    u_char  sender_eth[6];
    u_char  sender_ip[4];
    u_char  target_eth[6];
    u_char  target_ip[4];
  };

union
  {
    u_char full_packet[MAX_PACK_LEN];
    struct arp_struct arp_pkt;
  }
a;

#define full_packet a.full_packet
#define arp_pkt a.arp_pkt

char *
inetaddr ( u_int32_t ip )
{
  struct in_addr in;
  in.s_addr = ip;
  return inet_ntoa(in);
}

char *
hwaddr (u_char * s)
{
  static char buf[30];
  sprintf (buf, "%02X:%02X:%02X:%02X:%02X:%02X", s[0], s[1], s[2], s[3], s[4], s[5]);
  return buf;
}

void
main (int argc, char **argv)
{
  int rec;
  int len, from_len, rsflags;
  struct ifreq if_data;
  struct sockaddr from;
  u_int8_t myMAC[6];
  u_int32_t myIP, myNETMASK, myBROADCAST, ip, dip, sip;

  if (getuid () != 0)
    {
      perr ("You must be root to run this program!\n");
      exit (0);
    }

  if (argc != 2)
    {
      fprintf(stderr,"Usage: %s eth0\n", argv[0]);
      exit (0);
    }

  if ((rec = socket (AF_INET, SOCK_PACKET, htons (ETH_P_ARP))) < 0)
    {
      perror("socket");
      exit (0);
    }

  printf ("----------------------------------------------------------\n");
  strcpy (if_data.ifr_name, argv[1]);
  if (ioctl (rec, SIOCGIFHWADDR, &if_data) < 0) {
    perr ("can't get HW addres of my interface!\n");
    exit(1);
  }
  memcpy (myMAC, if_data.ifr_hwaddr.sa_data, 6);
  printf ("> My HW Addr: %s\n", hwaddr (myMAC));

  if (ioctl (rec, SIOCGIFADDR, &if_data) < 0) {
    perr ("can't get IP addres of my interface!\n");
    exit(1);
  }
  memcpy ((void *) &ip, (void *) &if_data.ifr_addr.sa_data + 2, 4);
  myIP = ntohl (ip);
  printf ("> My IP Addr: %s\n", inetaddr(ip));

  if (ioctl (rec, SIOCGIFNETMASK, &if_data) < 0)
    perr ("can't get NETMASK addres of my interface!\n");
  memcpy ((void *) &ip, (void *) &if_data.ifr_netmask.sa_data + 2, 4);
  myNETMASK = ntohl (ip);
  printf ("> My NETMASK: %s\n", inetaddr(ip));

  if (ioctl (rec, SIOCGIFBRDADDR, &if_data) < 0)
    perr ("can't get BROADCAST addres of my interface!\n");
  memcpy ((void *) &ip, (void *) &if_data.ifr_broadaddr.sa_data + 2, 4);
  myBROADCAST = ntohl (ip);
  printf ("> My BROADCAST: %s\n", inetaddr(ip));

  if ((rsflags = fcntl (rec, F_GETFL)) == -1)
    {
      perror ("fcntl F_GETFL");
      exit (1);
    }

  if (fcntl (rec, F_SETFL, rsflags | O_NONBLOCK) == -1)
    {
      perror ("fcntl F_SETFL");
      exit (1);
    }

 
  printf ("----------------------------------------------------------\n");
  printf ("> Scanning ....\n");
  for (dip = (myIP & myNETMASK) + 1; dip < myBROADCAST; dip++)
    {
      bzero(full_packet, MAX_PACK_LEN);

      memcpy (arp_pkt.dst_mac, "\0\6\146\3\23\67", 6); /* 00:06:66:03:13:37 :) */
      memcpy (arp_pkt.src_mac, myMAC, 6);
      arp_pkt.pkt_type = htons( ETH_P_ARP );
      arp_pkt.hw_type = htons( 0x0001 );
      arp_pkt.hw_len = 6;
      arp_pkt.pro_type = htons( 0x0800 );
      arp_pkt.pro_len = 4;
      arp_pkt.arp_op = htons (ARPREQUEST);
      memcpy (arp_pkt.sender_eth, myMAC, 6);
      ip = htonl (myIP);
      memcpy (arp_pkt.sender_ip, &ip, 4);
      memcpy (arp_pkt.target_eth, "\0\0\0\0\0\0", 6);
      ip = htonl (dip);
      memcpy (arp_pkt.target_ip, &ip, 4);

      strcpy(from.sa_data, argv[1]);
      from.sa_family = 1;
         
      if( sendto (rec, full_packet, sizeof (struct arp_struct), 0, &from, sizeof(from)) < 0)
     perror ("sendto");

      usleep (50);      

      len = recvfrom (rec, full_packet, MAX_PACK_LEN, 0, &from, &from_len);
      if (len <= ETHER_HEADER_LEN)
   continue;

      memcpy (&ip, arp_pkt.target_ip, 4);
      memcpy (&sip, arp_pkt.sender_ip, 4);

      if (ntohs (arp_pkt.arp_op) == ARPREPLY
     && ntohl (ip) == myIP
     && ( dip - ntohl(sip) >= 0 )
     && ( dip - ntohl(sip) <= 2 ) )
   {
     printf ("*> Host %s, %s **** Promiscuous mode detected !!!\n",
        inetaddr (sip),
        hwaddr (arp_pkt.sender_eth));
   }

    }

  printf ("> End.\n");

  exit (0);
}



Bueno, no hace falta decir como se compila pero por si acaso...

gcc neped.c -o neped

El Post, está relacionado con el artículo:
Detección de Sniffers, buscando modos promiscuos.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado

Definición de Servidor DNS

 Tenemos una configuración actualizada en:

http://www.linuxparty.es/index.php/29-internet/9237-configurar-servidor-dns-maestro-esclavo-usando-bind-en-rhel-centos#

El número de ordenadores en el centro educativo, cada vez es mayor. Aunque hayamos elegido un direccionamiento IP que relacione la asignación de direcciones con la ubicación física de los PCs, sería mucho más cómodo poder referirse a todos los PCs del centro utilizando nombres en lugar de direcciones IPs. Un servidor DNS en la red local, nos permitirá crear una asociación directa Nombre de PC <-> Dirección IP en nuestra red, que nos facilitará la identificación de nuestros equipos.

En las redes TCP/IP, cada PC dispone de una dirección IP para poder comunicarse con el resto de PCs. Es equivalente a las redes de telefonía en las que cada teléfono dispone de un número de teléfono que le identifica y le permite comunicarse con el resto de teléfonos.

Trabajar con direcciones IP es incómodo para las personas, ya que requeriría conocer en todo momento las direcciones IP de los equipos a los que queremos conectarnos. En su lugar utilizamos nombres que son más fáciles de recordar y utilizar como por ejemplo enebro.pntic.mec.es, www.google.es, www.mec.es, etc...

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
En las entregas anteriores hemos visto cómo escribir código inyectable y cómo inyectar nuestro código en otros binarios sirviéndonos de diversos trucos. La siguiente fase lógica -la activación- ya no consistirá sólo  en saltar a nuestra rutina inyectada, si no también el devolverle el control al código original y no levantar sospechas.

La idea general será la siguiente: debemos encontrar algún puntero al que el ELF intente saltar en todo su tiempo de ejecución, ejecutar el código inyectado y devolver el control al puntero original. Esto se conoce popularmente como hooking: reemplazamos la dirección a la que cierto programa debe saltar en cierto momento para ejecutar nuestro código, y devolver el control a la dirección original a la que se quería llamar.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
SystemRescueCd cuenta con una nueva versión estable, la 2.7.0, que actualiza partes importantes del sistema y otras herramientas principales. Añade ahora además la gestión para paquetería Debian y Red Hat, lo que quiere decir tambien, Ubuntu y Fedora.

Navegador web y administrador de archivos - SystemRescueCd 2-6-0 SystemRescueCd 2.7.0 es la más reciente versión estable, disponible para descargar, con el kernel Linux estándar 3.2.16 LTS y los kernels Linux alternativos en su versión estable 3.3.5.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado

Linux viene con un firewall basado en hosts llamado Netfilter. Según el sitio oficial del proyecto:

netfilter es un conjunto de hooks dentro del kernel de Linux que permite a los módulos del núcleo registrar las funciones de devolución de llamadas con la pila de red. Una función de devolución de llamadas registradas entonces se llamó de nuevo para cada paquete que atraviese el hooks correspondiente dentro de la pila de red.

Si estás empezando, te recomendamos la lectura de:

Este firewall basado en Linux está controlada por el programa llamado iptables para el filtrado para IPv4 e ip6tables. Recomiendo que primero lea nuestro tutorial rápido que explica cómo configurar un firewall basado en host llamado Netfilter (iptables) en CentOS / RHEL / Fedora / Red Hat Enterprise Linux. Este post muestra las listas más comunes de iptables con las soluciones requeridas por un nuevo usuario de Linux que quiera asegurar su sistema operativo Linux de intrusos.

Iptables Las reglas de ejemplo

  • La mayor parte de las acciones enumeradas en este post están escritos con la suposición de que será ejecutado por el usuario root o cualquier otro con usuario con privilegios. No escriba los comandos en un sistema remoto, ya que  desconecte el acceso.
  • Para propósito de la demostración que he usado Red Hat Enterprise Linux 6.x, pero el siguiente comando debería funcionar con cualquier distribución de Linux moderna.
  • Esto no es un tutorial sobre cómo configurar iptables. Ver tutorial aquí . Se trata de una hoja de trucos rápido a los comandos comunes de iptables.

# 1: Visualización del estado de su firewall

Escriba el siguiente comando como root:
# iptables -L -n -v
Salidas de la muestra:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Por encima de la producción indica que el firewall no está activa. El siguiente ejemplo muestra un firewall activo:
# iptables -L -n -v
Salidas de la muestra:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID
  394 43586 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
   93 17292 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
    1   142 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID
    0     0 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 wanin      all  --  vlan2  *       0.0.0.0/0            0.0.0.0/0
    0     0 wanout     all  --  *      vlan2   0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain wanin (1 references)
 pkts bytes target     prot opt in     out     source               destination
Chain wanout (1 references)
 pkts bytes target     prot opt in     out     source               destination

 

 

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
Resumen: Zscaler dice que la mayoría más grande de los sitios web son seguros, pero aproximadamente 1 de cada 5 de ellos puede ser clasificado como malicioso o sospechoso. Puede ejecutar la misma herramienta en su propio sitio web.

¿Cuántos sitios web en Internet son maliciosos? ¿Cuántos de ellos no lo son? Si bien nunca vamos a conocer las cifras exactas, se estima, dice que casi 1 de cada 10 son maliciosos, mientras que aproximadamente 1 de cada 10 de ellos son sospechosos.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
Yo solía viajar con un libro y algo de ropa en una mochila, y ahora mi vida entera cabe en mi maletín. Tengo un ordenador portátil, una tableta y un teléfono celular con acceso a todos mis documentos a través de Dropbox , y todos los libros que tengo están en mi Kindle. Aparte de tener estos cuatro electrodomésticos, la bolsa tiene todo lo de valor que poseo. Si me roban la bolsa mientras estoy de viaje, tendría más problemas que si mi apartamento se incendia (aunque no estoy en él). ¿Qué puedo hacer para asegurar mi vida en un maletín?
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Aunque generar las claves publica/privada y subirlas a un servidor remoto SSH para que nos permita conectar directamente a la máquina sin necesidad de que nos pida la password es muy sencillo, nunca ésta de más tener un simple script que nos simplifique éstos pasos. Para ello podemos usar sshput, que nos permite generar las claves y despues indicando el usuario y dirección del servidor ssh, ya se encarga de subir la clave pública para que las siguientes veces que queramos acceder a ése servidor (y si tenemos los correspondientes permisos a la máquina) ya no tengamos que meter la password.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
Durante años, desde que los ordenadores han estado al alcance de las más calenturientas mentes de los hackers de antaño, multitud de extrañas ideas han pasado por sus cabezas, muchas de las cuales fueron llevadas a la práctica y de entre todas ellas, una que creó escuela (sobre todo allá por los años ochenta y principios de los noventa) fue la de infección de binarios. Escribir un programa que puede inocularse a otro, pegársele como un parásito y extenderse por ahí, suena casi a ciencia ficción, ¿cómo resistirse?


Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías