¿Es suficiente aprender lenguaje de ensamblador / máquina para convertirse en un buen analista de malware?

Aunque no soy uno, puedo decir con confianza que no, en base a mi conocimiento general de seguridad e ingeniería de software.

En general, para el trabajo en seguridad, al menos se necesitaría algún conocimiento que se superponga con la administración del sistema y la ingeniería del software, así como un conocimiento más especializado. Por ejemplo, sabiendo:

  • ¿Cuál es la arquitectura de seguridad / permisos de los sistemas operativos de destino? ¿Dónde están los límites entre las operaciones con privilegios de administrador y las operaciones de usuario? ¿Cómo se otorgan los permisos adicionales?
  • ¿Cómo se establecen las conexiones de red salientes en el sistema operativo?
  • ¿Cómo está organizado el sistema de archivos? ¿Qué archivos podrían esperarse que un usuario objetivo pudiera modificar? ¿Qué archivos sensibles podría querer proteger el usuario?
  • Usando el conocimiento anterior, ¿cómo puede uno detectar que el código está intentando acceder a cosas que no debería? Para responder a esa pregunta, uno necesitaría algo de fluidez con los desensambladores y otras herramientas de descompilación. Existen programas especiales para el código de ingeniería inversa, y aquellos que están especializados para el análisis de virus y otros programas maliciosos también tendrían acceso a un corpus de código de malware conocido, para la comparación con el código nuevo.

Por lo tanto, conocer el lenguaje ensamblador y las preocupaciones de programación de bajo nivel es necesario pero no suficiente.

Eso tiene muy poco que ver con el análisis de malware, por lo que desafortunadamente la respuesta es no. Sin embargo, debe saberlo como un primer paso para obtener el conocimiento que necesita.

Primero analice y enfóquese en los malwares, aprenda sobre las técnicas, herramientas y trucos del comercio, internos de sistemas operativos, etc., y aprenda el ensamblaje lado a lado.

Como mencionó Jordan, hay mucho más que solo el “lenguaje”.

Para tener éxito en el análisis de malware, uno debe ser bueno en ingeniería inversa. No es muy probable que encuentre un código fuente para el malware, por lo que para entender cómo funciona, debe llevarlo a través de un desensamblador y / o un depurador para obtener su representación en el ensamblaje . Aquí es donde entra en juego la ingeniería inversa.

La clave para entender la ingeniería inversa es ser muy bueno en el lenguaje ensamblador. Si no tiene mucha experiencia con él, le sugiero que vaya a Security Tube y eche un vistazo a las siguientes conferencias de video: Assembly Language Mega-primer para Linux y Windows Assembly Language . También sería muy bueno tomar cursos de arquitectura computacional en tu universidad si tienes la oportunidad de hacerlo.

Ahora que tiene algún conocimiento sobre el ensamblaje, lo mejor que puede hacer es obtener una copia del libro Reversing: Secrets of Reverse Engineering . Es uno de los mejores libros en este campo y te recomiendo que lo leas de principio a fin, pero al principio debes considerar concentrarte en los primeros 4 capítulos. Debería estudiar el Capítulo 3 especialmente bueno porque cubre la arquitectura del sistema operativo Windows.