LinuxParty
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.
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.
Definición de Servidor DNS
Tenemos una configuración actualizada en:
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...
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.
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
¿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.
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.
-
Debian
- Equivalencias entre DEB y RPM, y también APT y YUM para Linux
- FreeXP la alternativa moderna a Windows 11 de la mano de Linux
- Se lanzó Debian 12.7 “Bookworm” con 55 actualizaciones de seguridad y 51 correcciones de errores
- Debian 12 'Bookworm' es lanzado oficialmente, ofreciendo mayor estabilidad y numerosas actualizaciones de software
- Instalación de memcached Y el módulo PHP5 Memcache sobre Debian Etch (Apache2)
- Ejecutar Feng Office en Nginx (LEMP) en Debian Squeeze/Ubuntu 11.10
- MX Linux: la mejor distro Linux para nuevos usuarios, basada en Debian para principiantes de Linux
- Montar directorios remotos con SSHFS en Linux
- UEFI Secure Boot será eliminado a partir de Debian 9 'Stretch'
- Debian elimina el soporte para procesadores Pentium de la arquitectura i386
- Fundador de Debian, Ian Murdock fallece a los 42 años.
- Debian 7.0 Wheezy publicado
- Servidor Web, correo electrónico, cluster de base de datos MySQL (espejo)
- Instalando OpenLDAP con soporte SSL en debian
- Cómo tener varias versiones de PHP (PHP-FPM y FastCGI) Con ISPConfig 3 en Ubuntu / Debian Linux (4 de 4)