Por qué soy capaz de abrir Wireshark y capturar paquetes en macOS sin privilegios de root?

¡Pregunta realmente impresionante! TL;DR...

Le diste privilegios de root cuando lo instalaste. Wireshark crea un grupo de acceso, te pone en él, y te da acceso a través de eso.

La respuesta más larga...

Cuando instalas Wireshark necesitas una contraseña de administrador. Wireshark utiliza esa elevación para instalar un LaunchDaemon, que es básicamente un proceso en segundo plano que se inicia en el arranque.

Este demonio tiene permisos especiales para capturar paquetes de datos de red, y tienes que ser root para instalar este demonio (es decir, cuando instalas Wireshark) pero no para usarlo cada vez.

Los datos que captura no requieren ninguna elevación extra para leer porque es sólo un archivo pcap. Más sobre esto aquí - pcap - Wikipedia

Wireshark crea este archivo plist en la carpeta LaunchDaemons:

/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2.  
  3.  
  4.  
  5. Label 
  6. org.wireshark.ChmodBPF 
  7. RunAtLoad 
  8.  
  9. Program 
  10. /Library/Application Support/Wireshark/ChmodBPF/ChmodBPF 
  11.  
  12.  

/Library/Application Support/Wireshark/ChmodBPF/ChmodBPF is a script that sets up access for the local user (i.e. you, the person who installed Wireshark) with read access to BPF devices. Wireshark uses these devices to capture the network traffic. So if you have access to the BPF devices then you have access to read the data they capture.

More info and a good writeup - cse 2410 f 13 team 7

Any user given access to those BPF devices can read network data from them. Para controlar el acceso de los usuarios, Wireshark establece un grupo de usuarios específicamente para esto.

Si revisas Preferencias del Sistema > Usuarios y Grupos, habrá un grupo access_bpf que contiene la lista de usuarios que tienen permiso para acceder al demonio, y por lo tanto capturar con Wireshark. Puedes añadir o eliminar usuarios de este grupo. Cualquier usuario de este grupo puede obtener acceso de lectura a los datos de red de caaptura sin privilegios específicos y únicos de root.

main-qimg-9ebefc700dc825cf694e55b4bfe172aa