No hay una manera perfecta de garantizar que un programa no sea malicioso, a excepción de la ingeniería inversa extensa . Incluso con el acceso al código fuente, necesitaría auditarlo bastante. Si bien los grandes proyectos a menudo obtienen tales auditorías, no es una panacea. Lo mejor que puedes hacer es reducción de amenazas
No envía datos USB a un servidor externo sin mi conocimiento
Esto se puede mitigar habilitando reglas de firewall que limitan o impiden totalmente el envío de tráfico a través de la red para el usuario con el que se ejecuta el analizador. También puede ejecutar el análisis en una computadora con aire vacío sin conectividad a Internet.
No instala ningún registrador clave u otro software malicioso como el software
Si bien el antivirus puede detectar algunas amenazas simples, es fácil sortearlo. Puede ejecutar desde un DVD en vivo de solo lectura, o usar Controles de acceso obligatorios . Esta técnica es similar en propósito a una caja de arena orientada a la seguridad. MIC es un MAC para Windows, y < a href="https://msdn.microsoft.com/en-us/library/windows/desktop/mt595898(v=vs.85).aspx"> AppContainer es una función de aislamiento similar a un sandbox para Windows . Linux y los sistemas operativos relacionados tienen un aislamiento aún más extenso.
No arruina mi computadora. Esto es lo que me preocupa más que nada. Por ejemplo, leí que otra herramienta de depuración USB bloqueó todo el tráfico USB, incluido el mouse / teclado, y dejó la computadora inútil hasta que el usuario revirtió su versión de Windows.
Si bien es posible que pueda reducir la posibilidad de que el software sea malicioso, es aún más difícil saber cómo los errores pueden interactuar con los errores en su sistema operativo. Una posible forma de reducir este riesgo es usar el software de captura de paquetes USB y analizar los volcados de paquetes reales mediante un programa separado y sin privilegios, lo que le permite segmentar los privilegios necesarios para completar su tarea.
Editar: esta es una pregunta más amplia relacionada con cómo se puede validar una pieza de software cuando el código fuente de ese software no está disponible. Me doy cuenta de que un certificado ayuda, pero aun así, un certificado no garantiza que una pieza de software no esté haciendo cosas maliciosas.
Hay algunas cosas que puede hacer para reducir los riesgos:
- Utilice software de código abierto, idealmente software popular que está bien auditado.
- Utilice solo software firmado y verifíquelos utilizando programas como GnuPG.
- Si eres particularmente paranoico, solo usa software con compilaciones reproducibles .
En Linux, puede usar el controlador del kernel usbmon para capturar el tráfico USB sin formato, luego varias herramientas de análisis de paquetes como Wireshark o Virtual USB Analyzer , ambos de código abierto. El uso de una distro Linux en vivo conocida como Knoppix ayudará a reducir las posibilidades de que un software privilegiado cause un daño significativo a su instalación, al tiempo que preserva su capacidad para leer y escribir en su disco y analizar el tráfico USB capturado en el sistema. Esto te da algunos beneficios:
- El software requerido para el análisis del protocolo USB es de código abierto, lo que facilita la confianza.
- El software se ejecuta en un entorno en vivo, lo que lo hace "amnésico", por lo que los cambios se desvanecen al reiniciar.
- Un entorno Linux proporciona muchas más herramientas para la depuración y el análisis de bajo nivel que Windows.
- Todas las herramientas mencionadas están firmadas digitalmente, lo que reduce el riesgo de que se hayan modificado.