
Estaba jugando con DTrace en Mac OS X y encontré el siguiente script que imprime información sobre las conexiones que se están estableciendo:
$ guión de gato.d
syscall::connect:entry
{
printf("execname: %s\n", execname);
printf("pid: %d\n", pid);
printf("sockfd: %d\n",arg0);
socks = (struct sockaddr*)copyin(arg1, arg2);
hport = (uint_t)socks->sa_data[0];
lport = (uint_t)socks->sa_data[1];
hport <<= 8;
port = hport + lport;
printf("Port number: %d\n", port); printf("IP address: %d.%d.%d.%d\n",
socks->sa_data[2],
socks->sa_data[3],
socks->sa_data[4],
socks->sa_data[5]);
printf("======\n");
}
Lo ejecuto en una ventana:
$ sudo dtrace -s ./script.d
Luego entro a otra máquina desde otra ventana. Obtengo este resultado desde mi ventana de dtrace:
CPU ID FUNCTION:NAME
0 18696 connect:entry execname: ssh
pid: 5446
sockfd: 3
Port number: 22
IP address: 192.168.0.207
======
0 18696 connect:entry execname: ssh
pid: 5446
sockfd: 5
Port number: 12148
IP address: 109.112.47.108
======
^C
La primera dirección IP que puedo explicar (192.168.0.207), es la máquina a la que me estoy conectando. Pero ¿qué pasa con la máquina 109.112.47.108? No aparece en tcpdump ni netstat -an
¿Hay algo con mi código dtrace o mi comprensión de cómo funciona la llamada al sistema de conexión?
Respuesta1
Creo que lo he descubierto, es el script dtrace que tomé de un sitio de Solarius y debe cambiarse para BSD.
Respuesta2
Intente hacer un traceroute a esa dirección y vea dónde está. Si está a solo un par de saltos de distancia, probablemente sea un firewall o un conmutador.
Respuesta3
Es una dirección IP de vodafone en Italia. ¿Está conectado a un ISP en Europa/Italia? Si no, será mejor que empieces a preocuparte.
Respuesta4
¿Qué grep 'sshd.*from' secure.log
dice? Si alguien además de usted ha iniciado sesión a través de SSH, entonces tiene un problema. Si no lo han hecho, es probable que sea unintento fallido de fuerza bruta. ¿Estás ejecutando DenyHosts o Fail2Ban?
No puedo encontrar ninguna documentación sobre syscall::connect, pero parece que está imprimiendo ambos extremos del socket. ¿Qué sucede cuando ejecuta el script y realiza ssh desde otra máquina?