Andrea Danti - Fotolia
Los beneficios de las técnicas de depuración remota en la nube
Afinar las técnicas de depuración puede ayudar a los profesionales de TI que necesitan depurar un sistema de manera remota y puede ser útil en varias áreas de tecnología.
La depuración es una parte importante de determinar por qué está fallando un sistema operativo (OS), aplicación o programa. Un depurador es una herramienta que puede ayudar con este proceso mediante la identificación de errores de codificación en las distintas etapas del sistema operativo, aplicación o desarrollo de programas. Los depuradores son útiles para un gran número de profesionales de TI que pueden utilizarlos para hacer su trabajo más fácil y agilizar la tarea de identificar y resolver los problemas rápidamente y más eficientemente. Las técnicas de depuración remotas son especialmente importantes para las empresas que dependen de servicios, plataformas e infraestructuras en la nube.
¿Quién se beneficia de los depuradores?
El primer grupo de profesionales de TI que pueden beneficiarse de los depuradores son los programadores. Los depuradores proporcionan a los programadores una forma de identificar rápidamente por qué el programa que están desarrollando tiene errores. Los programadores suelen utilizar diferentes comandos Print, lo que requiere la recompilación del programa cada vez que se añade un nuevo comando al código. Después de llevar a cabo la depuración, cada comando print debe ser eliminado del programa. Al menos uno de estos comandos podría perderse u olvidarse durante el proceso de eliminación, provocando diferentes molestias más adelante. Conocer las técnicas necesarias de depuración puede ayudar a los programadores a encontrar errores en el código de forma rápida mediante el establecimiento de puntos de interrupción y al detener el programa en cualquier momento sin más comandos print. Además, cuando se utiliza un depurador, el programa no necesita volver a compilar cada vez. Esto también funciona para los programas de código cerrado que no permiten el acceso al código fuente del programa.
El segundo grupo de beneficiarios son los administradores de sistemas, que a menudo despliegan diversos programas escritos por los desarrolladores sobre el sistema de producción, y encuentran que el programa no se comporta de la forma en que se supone que debe ser. Dado que el programa funciona sin errores en el sistema de prueba, pero causa problemas en los sistemas de producción, los administradores de sistemas son responsables de identificar por qué se produce el problema y reportarlo a los programadores en un informe de error. En tales casos, los depuradores pueden ser valiosos para buscar dónde –y por qué– funciona mal el programa.
El siguiente grupo de profesionales de TI que se benefician de los depuradores son los investigadores de seguridad, que necesitan estas herramientas todo el tiempo. Hay diferentes tipos de dominios, donde un investigador de seguridad utiliza depuradores sobre una base diaria, como la ingeniería reversiva o las tareas de análisis de malware. Para ellos, tener el conocimiento y las habilidades necesarias con varios depuradores es una necesidad, porque de otra manera estarían fuera de un trabajo.
Hay otros grupos de profesionales de TI que se beneficiarían de los conocimientos de depuración, que a menudo demuestra ser una habilidad invaluable a fin de completar los trabajos de manera más eficiente. Las personas con buenas técnicas de depuración no sólo son más competentes en el mercado de trabajo, sino que también son deseadas por muchas empresas en todo el mundo.
Herramientas de depuración
En el más alto nivel de sofisticación, los depuradores se separan en dos grupos: en modo usuario y modo kernel, que se correlacionan directamente con los anillos de protección en los sistemas informáticos. Los anillos de protección se utilizan para prevenir que el código sensitivo de sistema operativo de modo kernel sea accedido directamente desde las aplicaciones en modo de usuario, proporcionando una capa adicional de defensa para el sistema. Los depuradores en modo kernel, como SoftICE, Syser, HyperDbg, WinDbg, GDB, VirtDbg y otros se pueden utilizar para depurar el funcionamiento interno del sistema operativo en modo kernel –que son el corazón de cada OS– mientras que los depuradores de modo de usuario como OllyDbg, Hopper , Hiew, IDA Pro, DBG, x64dbg, VDB, Radare y otros se utilizan para depurar aplicaciones en modo de usuario.
A pesar de los depuradores pueden operar en modo kernel o modo de usuario, algunos también soportan capacidades de depuración remota, que permiten la depuración de un sistema diferente. Algunos depuradores que tienen los medios para depurar una aplicación o un programa que se ejecuta de forma remota en un sistema basado en la nube incluyen WinDbg, GDB, VirtDbg, Ida Pro, Radare y Hopper.
Depuración remota
Uno de los depuradores es GDB, que contiene el comando gdbserver que abre un puerto específico en el sistema remoto utilizado para una sesión de depuración remota. El comando que se presenta a continuación se puede utilizar para unirse a la 0.0.0.0:8080, donde la sesión de depuración remota será accesible para depurar el programa ./main.
[plain]
# gdbserver --remote-debug 0.0.0.0:8080 ./main
[/ plain]
Con el fin de conectarse a la sesión remota, escriba los siguientes comandos en el sistema actual:
[plain]
# Gdb
(Gdb) target extended-remote 1.2.3.4:8080
(Gdb) set remote exec-file / srv / main
(Gdb) file / tmp / main
(Gdb) set architechture i386: x86-64: intel
(Gdb) run secretarg
[/ plain]
En este punto, el usuario puede ejecutar cualquier comando soportado por el depurador GDB justo en la sesión de control remoto en la nube, proporcionando las mismas capacidades de una depuración a nivel local.
Los beneficios de la depuración remota
Las técnicas de depuración son de suma importancia con muchas profesiones. Nos permiten localizar rápidamente e identificar los problemas en los programas y determinar la razón de ellos. Hay muchos depuradores para elegir, pero a menudo los usuarios necesitan un depurador para funcionar en un sistema remoto en la nube. Por lo tanto, tener un depurador que soporta sesiones de depuración remota permitirá a los usuarios iniciar un depurador remoto en un sistema y conectarse a ella desde el equipo local.
Pase algún tiempo adicional estudiando diversos aspectos específicos de la depuración para obtener las habilidades necesarias para depurar aplicaciones de forma remota. Esto le ahorrará mucho tiempo al identificar la causa del error. Tener las habilidades de depuración necesarias para localizar e identificar el punto de error en el programa permitirá a los usuarios encontrar fácil y rápidamente el problema en un programa que funciona mal. Las personas con estas habilidades ya no deben usar otros métodos para identificar el problema, sino que deben basarse en gran medida en las habilidades de depuración.
La depuración de diferentes programas a distancia también puede ahorrar mucho tiempo y dinero, especialmente con un sistema conectado directamente a un hardware complejo que es inaccesible. Algunos clientes que tienen sistemas SCADA normalmente no están disponibles en línea o son muy caros, lo que elimina la posibilidad de comprar hardware para depurar el programa asociado e identificar el problema. El método habitual consiste en volar a la sede del cliente y depurar el problema a nivel local, pero esa no es la opción más viable, ya que cuesta mucho tiempo y dinero. En lugar de hacer eso, invierta tiempo para aprender la depuración remota con el fin de depurar el programa desde su propia oficina en su propio país, sin complicaciones innecesarias.
Sobre el autor: Dejan Lukan tiene un amplio conocimiento de mantenimiento del sistema Linux/BSD, así como los conceptos relacionados con la seguridad, incluyendo la administración de sistemas, administración de redes, auditoría de seguridad, pruebas de penetración, ingeniería reversiva, análisis de malware, fuzzing, depuración y evasión de antivirus. También es docto en más de una docena de lenguajes de programación, y regularmente escribe artículos relacionados con la seguridad en su propio sitio web.