He instalado hping
usando brew install hping
.
Cuando corro hping
sin sudo
me sale:
$ hping 8.8.8.8
[open_sockraw] socket(): Operation not permitted
[main] can't open raw socket
Cuando ejecuto sudo hping
, naturalmente, obtengo:
$ sudo hping -S -p 80 8.8.8.8
Password:
HPING 8.8.8.8 (en0 8.8.8.8): S set, 40 headers + 0 data bytes
len=46 ip=8.8.8.8 ttl=57 id=332 sport=80 flags=RA seq=0 win=512 rtt=1.4 ms
len=46 ip=8.8.8.8 ttl=57 id=46923 sport=80 flags=RA seq=1 win=512 rtt=2.7 ms
len=46 ip=8.8.8.8 ttl=57 id=25098 sport=80 flags=RA seq=2 win=512 rtt=2.2 ms
^C
--- 8.8.8.8 hping statistic ---
8 packets tramitted, 8 packets received, 0% packet loss
round-trip min/avg/max = 1.4/2.4/2.9 ms
Mi pregunta aquí es, ¿qué permisos deben cambiarse para otorgar hping
los permisos que necesita, y cómo lo hago?
Para cambiar el comportamiento de hping , debe cambiar el usuario: grupo del ejecutable y agregar el indicador setuid:
sudo chown root:wheel /usr/local/Cellar/hping/3.20051105/sbin/hping3
sudo chmod u+s /usr/local/Cellar/hping/3.20051105/sbin/hping3
(solo para recordar: /usr/local/sbin/hping|hping2|hping3 finalmente están vinculados a /usr/local/Cellar/hping/<version_nr>/sbin/hping3)
¡ Algunas opciones de hping están deshabilitadas si la bandera s está configurada!
Por razones de seguridad, se prefiere un enfoque diferente: ¡ Hacer que un programa siempre se ejecute como root en OS X !
Siempre es un riesgo de seguridad ejecutar un binario como root. La mejor manera de hacer las cosas sería establecer la capacidad de socket sin procesar de Unix.
sudo setcap cap_net_raw+ep /usr/bin/hping3
De esa manera, no le das los permisos binarios que no necesita.
(También puede ver las capacidades establecidas, por ejemplo getcap /bin/ping
:)
sin ladera
setcap
disponible en macOS?