Manual de uso de PathScope
Este manual recorre las pantallas en orden, desde encontrar con PathScope los puntos débiles de este equipo hasta comprobar por dónde conviene empezar a corregirlos. Las explicaciones de las pantallas evitan la jerga técnica en lo posible; los comandos están reunidos en el capítulo «Uso desde la línea de comandos».
1. Qué es PathScope
PathScope identifica las «rutas» por las que un usuario común de este equipo puede llegar a root (privilegios de administrador) o a datos sensibles, y muestra con prioridades dónde corregir es más eficaz. Está pensado para revisar equipos que usted administra y entornos de prueba.
El análisis es de solo lectura. No modifica ajustes ni archivos y tampoco aplica correcciones automáticamente. Se muestran ejemplos de comandos de corrección, pero usted decide si ejecutarlos.
pathscope). PathScope es una aplicación independiente de RoamSwitch con licencia Apache License 2.0. No le es aplicable el contrato de licencia de RoamSwitch (EULA).2. Instalación e inicio
PathScope se instala como una aplicación independiente con su propio icono. Así se inicia.
| Entorno | Cómo iniciarlo |
|---|---|
| Mac | Abra PathScope.app desde el archivo de distribución (DMG) y pulse «Analizar». |
| Linux | Abra «PathScope» desde la lista de aplicaciones y pulse «Analizar». Desde un terminal, ejecute pathscope-gui. La ventana necesita WebKitGTK 4.1, que se instala automáticamente con deb y rpm. En Arch (AUR), instale webkit2gtk-4.1 como dependencia opcional. |
| Línea de comandos | Ejecute pathscope en un terminal. En Mac es PathScope.app/Contents/MacOS/pathscope. |
Al iniciarse se abre una ventana con los botones «Analizar», «Historial», «Asistente LLM», «Explicar con LLM» y «Ajustes» en la parte superior. «Explicar con LLM» no se puede pulsar hasta que se muestre un resultado. PathScope no abre ningún puerto en escucha y su ventana no carga sitios externos.
3. Analizar y leer el resultado
Al pulsar «Analizar», PathScope reúne el estado de este equipo a partir del usuario actual y lo analiza. Puede tardar de unos segundos a varias decenas de segundos. Al terminar, el resultado se guarda automáticamente como una entrada del historial.
Pasos
- Pulse «Analizar».
- En «Diagrama de rutas» y «Lista de rutas», vea qué usuario llega a root o a datos sensibles y mediante qué pasos. Los círculos y cuadrados son usuarios y destinos, y cada línea es un paso que eleva los privilegios. El número sobre una línea corresponde al «motivo por el que el paso es posible» en la tabla situada bajo el diagrama.
- En «Puntos de corrección (en el orden en que conviene corregirlos)», compruebe dónde corregir tiene mayor efecto. Cada elemento muestra su prioridad (crítica, alta, media o baja, con una puntuación), el número de rutas afectadas, una corrección sugerida y la técnica de MITRE ATT&CK más cercana.
- Pulse «¿Y si corrijo este?» para volver a analizar, de forma hipotética, las rutas que quedarían si ese punto se corrigiera como se sugiere. «¿Y si corrijo todos?» hace lo mismo con todos los puntos mostrados. Ninguna de las dos opciones modifica este equipo.
- Lea la lista de las áreas que no se pudieron comprobar, mostrada bajo los puntos de corrección.
Qué rutas encuentra
- Pertenencia al grupo docker (permite las mismas operaciones que root)
- Abuso de un ejecutable que se ejecuta con privilegios de root (SUID) para convertirse en root, reescribir archivos o leer archivos
- Se puede reescribir el ejecutable de un servicio que corre como root, de un programa en el que root escucha o de un archivo que root ejecuta periódicamente
- Configuraciones que permiten sudo sin contraseña (los archivos de configuración de sudo y cron se tienen en cuenta cuando se han leído con «Asistente LLM»)
- En Mac, se puede reescribir una aplicación con permiso de acceso a todos los archivos
- El software instalado, el kernel o la versión de macOS aún tienen una vulnerabilidad conocida explotada en ataques reales o con alta probabilidad de serlo (en el KEV de CISA o, sin estar en el KEV, con una puntuación EPSS alta de FIRST; solo las que permiten a un usuario común convertirse en root)
Las vulnerabilidades conocidas se comprueban con datos incluidos en la aplicación. Se cubren macOS y las versiones de Debian, Ubuntu, la familia RHEL, SUSE, Arch y Alpine para las que hay datos; lo demás (Debian 11 y anteriores, Fedora, etc.) se muestra como «sin comprobar». No es una función para examinar vulnerabilidades de forma exhaustiva.
4. Historial, exportación y comprobación periódica
Los resultados del análisis se conservan automáticamente como historial en este equipo. Pulse «Historial» para abrir la lista, donde puede abrir una entrada, ponerle una etiqueta (por ejemplo, antes de corregir) o eliminarla. Seleccione dos entradas y pulse «Comparar los dos seleccionados» para ver las rutas que desaparecieron y las que aparecieron, además de los cambios en los puntos de corrección. Úselo para comparar la situación antes y después de una corrección.
Los resultados guardados en formato JSON en otro equipo se pueden traer al historial con «Importar resultados de análisis». Seleccione dos o más entradas del historial y pulse «Resumir los seleccionados» para ver los equipos más expuestos por orden y los puntos débiles comunes a varios equipos.
El resultado mostrado se puede guardar como «Resultado del análisis (JSON)», «Elementos a vigilar (JSON)» o «Reglas de auditd (para la función de auditoría de Linux)». El destino se elige en el cuadro de diálogo de guardado. Solo se escriben archivos; no se aplica ninguna configuración ni se modifica este equipo.
Esto escribe un archivo de configuración que analiza periódicamente y avisa cuando hay más rutas que la vez anterior.
- Muestre un resultado de análisis y pulse «Guardar como referencia».
- Indique el «Intervalo (minutos)» (de 5 a 10080).
- En Mac pulse «Guardar configuración de launchd…», en Linux «Guardar configuración de systemd…», y elija dónde guardar.
- Compruebe el contenido escrito y regístrelo usted mismo (por ejemplo, con launchctl load). PathScope no lo registra.
5. Funciones que usan un LLM (opcional)
Puesta en marcha
- Marque «Activar la integración con LLM».
- Elija el «LLM que se usará». Las opciones son los comandos claude, opencode, codex y agy, y se pueden usar aquellos cuyo «Estado» es «Instalado». Si indica «No encontrado», instale primero ese comando.
- Elija «Qué se envía al LLM al leer la configuración» (vea la tabla de abajo).
- Pulse «Guardar».
En la lista, el «Modelo» y el «Tiempo de espera (segundos)» se pueden cambiar para cada LLM. claude se inicia con la ejecución de comandos y la lectura de archivos desactivadas. opencode, codex y agy se tratan como no restringibles y no se pueden usar si no marca «Entiendo que a este LLM no se le puede impedir ejecutar comandos ni leer archivos». Un LLM que no se puede restringir puede leer archivos por su cuenta durante el proceso, y su contenido puede enviarse al servicio del LLM.
Explicar con LLM
Con un resultado mostrado, pulse «Explicar con LLM» para que el LLM redacte una valoración general, el orden y los motivos de las correcciones, el significado de las áreas no comprobadas y otros puntos. Solo se pasa un resumen de las rutas, los puntos de corrección y las áreas no comprobadas; la información en bruto recopilada (como las listas de propietarios y permisos de archivos) no se pasa. Eso sí, el resumen contiene los nombres de usuario y las rutas de archivo que aparecen en las rutas. La respuesta del LLM es orientativa. Las personas comprueban y deciden qué hacer, y nada cambia automáticamente a partir de la respuesta.
Asistente LLM (lectura de archivos de configuración)
Los archivos de configuración como sudoers, cron y los scripts se escriben de formas muy variadas, y un programa por sí solo a veces no puede leerlos. El asistente LLM hace que un LLM lea esos archivos y busque descripciones relacionadas con los privilegios de root.
- Pulse «Asistente LLM». Los archivos candidatos a leer aparecen en una lista con el motivo de cada uno (al principio están todos seleccionados). Son candidatos sudoers, cron, la configuración de systemd y launchd y los ejecutables que cargan los servicios que corren como root, entre otros. Desmarque los que no quiera enviar.
- Pulse «Enviar al LLM los ○ seleccionados». Aparece una confirmación de lo que se enviará; léala y pulse «Enviar (confirmado)».
- Revise en el resultado «Elementos encontrados», «Archivos leídos» y «Archivos no leídos (siguen sin comprobar)».
- Pulse «Aplicar y volver a analizar» para añadir los elementos encontrados al análisis. Si ya no quiere usarlos, elimínelos desde «Guardado».
Solo se usan los elementos indicados por el LLM cuya línea se ha confirmado que existe realmente en el archivo original. Los que no se pudieron confirmar aparecen únicamente en «Solo como referencia» y no se usan en el análisis. La comprobación se repite en cada análisis, por lo que un elemento cuya línea original ha desaparecido deja de usarse.
| Qué se envía | Detalle |
|---|---|
| Estándar | Los valores que parecen contraseñas o claves se sustituyen por «[REDACTED]» antes de enviarlos. No se envían archivos como claves privadas. De un archivo grande solo se envían las líneas que contienen rutas o comandos. |
| Sin restricciones | Un ajuste para los casos en que el contenido no sale de su equipo, como con un LLM local (bajo su responsabilidad). También se envían los hashes de contraseñas y similares. |
6. Uso desde la línea de comandos
El mismo análisis de la ventana se puede ejecutar con el comando pathscope. Sin opciones, analiza las rutas del usuario actual a root. La recopilación es de solo lectura y no modifica el estado del equipo.
pathscope
pathscope --json-out=report.json
pathscope --what-if-fix=all
pathscope --baseline=base.json --fail-on=new --notify
pathscope --print-schedule=systemd --interval-min=60
pathscope --export-watch=watch.json --export-auditd=pathscope.rules
pathscope --plain
pathscope --version
pathscope --lang=en
| Opción | Detalle |
|---|---|
--json-out=<file> | Guarda el resultado como JSON. |
--what-if-fix=all | Vuelve a analizar, de forma hipotética, las rutas que quedarían si todo se corrigiera como se sugiere. Con un número, solo ese punto de corrección. |
--baseline=<file> --fail-on=new | Compara con un JSON anterior y termina con el código 1 si han aumentado las rutas. Con --notify también se muestra una notificación de escritorio (solo el número). |
--fail-on=any|new|critical|high|medium | any termina con el código 1 si hay al menos una ruta; critical, high y medium lo hacen cuando hay un punto de corrección de esa prioridad o superior. |
--print-schedule=launchd|systemd | Muestra un ejemplo de configuración de ejecución periódica. No la registra. Con --interval-min se indica el intervalo en minutos. |
--plain | Muestra la presentación anterior en texto sencillo en lugar de Markdown. Las suposiciones del análisis se envían entonces a la salida de error en lugar de incluirse en el resultado. |
--help / --version | --help (-h) muestra la descripción de todas las opciones, los códigos de salida y ejemplos. --version (-V) muestra la versión. |
La salida es Markdown. Después del título aparecen, por este orden, una tabla de resumen, las rutas, los puntos de corrección (una tabla con la prioridad, el paso, el motivo y las rutas afectadas y, después, para cada número, un detalle con la correspondencia ATT&CK, los comandos de corrección y una advertencia), el alcance de la recopilación y las suposiciones del análisis. Los puntos de corrección solo aparecen si se encontraron rutas, y las suposiciones solo si hay algo que indicar. Con --what-if-* sigue una lista del análisis hipotético y, con --baseline, una lista de los cambios desde la ejecución anterior. Se puede pegar tal cual en una nota o en un ticket. Para obtener la presentación anterior en texto sencillo, añada --plain.
El código de salida es 0 si todo va bien, 1 cuando se cumple una condición de --fail-on y 2 si hay un error de uso o de entrada/salida. Al ejecutarlo como root, también recopila directamente los procesos en escucha de root. Los resultados de lectura guardados con el asistente LLM también se incorporan al análisis del comando.
7. Dónde se guardan los datos y actualizaciones
| Elemento | Ubicación |
|---|---|
| Historial de resultados del análisis | En Mac, ~/Library/Application Support/net.lafine.pathscope/history.sqlite3; en Linux, ~/.local/share/net.lafine.pathscope/history.sqlite3 |
| Configuración del LLM | ~/.config/pathscope/settings.json (se guarda con permisos que solo le permiten a usted leerlo y escribirlo) |
| Contenido guardado por el asistente LLM | ~/.local/share/pathscope/facts.json |
| La «referencia» de la comprobación periódica | ~/.local/share/pathscope/baseline.json |
El historial se puede borrar con «Eliminar todo» en la pantalla del historial. Los resultados del análisis contienen información sensible sobre la configuración de este equipo (nombres de usuario, rutas de archivos, permisos), así que limite dónde se guardan y con quién se comparten. Para usar un comando que no está en la lista de LLM, añádalo a mano en profiles del archivo de configuración. No se puede cambiar desde la ventana.
Actualizar la aplicación
PathScope en Mac se actualiza solo, de forma independiente de RoamSwitch. Únicamente cuando pulsa «Buscar actualizaciones» se conecta a lafine.net para obtener la información de la última versión (no se envía información de este equipo ni de los resultados del análisis). Si hay una versión nueva, pulse «Instalar v○○» y, al terminar, «Reiniciar para aplicar». Una actualización descargada solo se instala tras verificar su firma y confirmar que no ha sido alterada.
En Linux forma parte del paquete de RoamSwitch, así que se actualiza al actualizar ese paquete. La pestaña «Actualizaciones» también lo indica.
Los datos que se usan en el análisis, como los de vulnerabilidades conocidas, vienen incluidos en la aplicación. Lo que se descubra después no se comprueba hasta que actualice PathScope. Cuando los datos incluidos se han quedado antiguos, el resultado del análisis lo indica.
8. Lo que no hace
- No cambia ajustes ni archivos y no ejecuta correcciones automáticamente. Se limita a mostrar las correcciones sugeridas.
- «No se encontraron rutas» es un resultado dentro del alcance que se pudo recopilar. No es una prueba de seguridad.
- No examina las vulnerabilidades de forma exhaustiva. Solo considera las vulnerabilidades conocidas explotadas en ataques reales que permiten a un usuario común convertirse en root.
- «¿Y si corrijo este?» solo se puede usar con el resultado de un análisis recién hecho, no con uno abierto desde el historial.
9. Si algo no funciona
| Síntoma | Qué hacer |
|---|---|
| En Mac, «Datos de ajustes de privacidad (TCC.db)» aparece entre las áreas no comprobadas | En la pestaña «Permisos» de «Ajustes», pulse «Abrir los ajustes de Acceso total al disco», active PathScope en Ajustes del Sistema, reinicie PathScope y vuelva a analizar. Los demás análisis funcionan aunque no lo permita. |
| Aparece «No se puede usar el LLM» o no se puede guardar | Actívelo en «Integración con LLM» dentro de «Ajustes» y elija el LLM que se usará. Si la lista indica «No encontrado», instale el comando. Con opencode, codex o agy también hace falta marcar la casilla de confirmación. |
| Un LLM se detiene con «Tiempo de espera agotado» | En la lista de «Integración con LLM» dentro de «Ajustes», aumente el «Tiempo de espera (segundos)» de ese LLM (de 1 a 900) y guarde. |
| «¿Y si corrijo este?» no se puede usar | No se puede usar con un resultado abierto desde el historial. Pulse «Analizar» de nuevo y úselo después. |
| No se puede usar la actualización dentro de la aplicación | Si lo instaló en Linux desde un paquete de RoamSwitch, actualícelo actualizando el paquete. Si no lo instaló desde un paquete (.deb, .rpm o AppImage), la actualización dentro de la aplicación no se puede usar, así que reinstale el paquete distribuido. |