Malware DevOps
Última actualización
Última actualización
El malware es un tipo de software diseñado específicamente para realizar acciones maliciosas, como obtener acceso no autorizado a una máquina o robar datos sensibles de la misma. El término "malware" a menudo se asocia con conductas ilegales o criminales, pero también puede ser utilizado por hackers éticos, como probadores de penetración y equipos de seguridad, para evaluaciones de seguridad autorizadas de una organización.
Existen varias razones por las cuales alguien querría aprender desarrollo de malware. Desde una perspectiva de seguridad ofensiva, los probadores a menudo necesitan realizar ciertas tareas maliciosas en el entorno de un cliente. Los probadores generalmente tienen tres opciones principales en cuanto a los tipos de herramientas utilizadas en un compromiso:
Herramientas de código abierto OSTs (Open-Source Tools, por sus siglas en inglés): Estas herramientas generalmente están firmadas por proveedores de seguridad y son detectadas en cualquier organización decentemente protegida o madura. No siempre son confiables cuando se realiza una evaluación de seguridad ofensiva.
Compra de herramientas: Los equipos con presupuestos más grandes a menudo optarán por comprar herramientas para ahorrar tiempo valioso durante los compromisos. Al igual que las herramientas personalizadas, generalmente son de código cerrado y tienen una mejor probabilidad de evadir soluciones de seguridad.
Desarrollo de herramientas personalizadas: Debido a que estas herramientas se construyen a medida, no han sido analizadas ni firmadas por proveedores de seguridad, lo que brinda al equipo atacante una ventaja en términos de detección. Aquí es donde el conocimiento en desarrollo de malware se vuelve fundamental para una evaluación de seguridad ofensiva más exitosa.
Técnicamente hablando, se puede utilizar cualquier lenguaje de programación para crear malware, como Python, PowerShell, C#, C, C++ y Go. Dicho esto, existen algunas razones por las cuales algunos lenguajes de programación prevalecen sobre otros cuando se trata del desarrollo de malware, y generalmente se reduce a los siguientes puntos:
Ciertos lenguajes de programación son más difíciles de ingeniería inversa. Siempre debe ser parte del objetivo del atacante garantizar que los defensores tengan un conocimiento limitado sobre cómo se comporta el malware.
Algunos lenguajes de programación requieren requisitos previos en el sistema objetivo. Por ejemplo, ejecutar un script de Python requiere un intérprete presente en la máquina objetivo. Sin el intérprete de Python presente en la máquina, es imposible ejecutar malware basado en Python.
Dependiendo del lenguaje de programación, el tamaño del archivo binario generado será diferente.
Fundamentalmente, el malware es un software diseñado para realizar ciertas acciones. Las implementaciones exitosas de software requieren un proceso conocido como Ciclo de Vida del Desarrollo de Software (SDLC, por sus siglas en inglés). De manera similar, un malware bien construido y complejo requerirá una versión adaptada del SDLC conocida como Ciclo de Vida del Desarrollo de Malware (Malware Development Life Cycle MDLC).
Aunque el MDLC no es necesariamente un proceso formalizado, se utiliza en MalDev Academy para proporcionar a los lectores una forma sencilla de entender el proceso de desarrollo. El MDLC consta de 5 etapas principales:
Desarrollo: Comienza el desarrollo o refinamiento de la funcionalidad dentro del malware.
Pruebas: Realiza pruebas para descubrir errores ocultos dentro del código desarrollado hasta el momento.
Pruebas offline de AV/EDR: Ejecuta el malware desarrollado en la mayor cantidad posible de productos de seguridad. Es importante que las pruebas se realicen sin conexión a internet para asegurarse de que no se envíen muestras a los proveedores de seguridad. Utilizando Microsoft Defender, esto se logra desactivando las opciones de envío automático de muestras y protección entregada por la nube.
Pruebas online de AV/EDR: Ejecuta el malware desarrollado en los productos de seguridad con conectividad a internet. Los motores en la nube suelen ser componentes clave en los sistemas de antivirus (AV) y detección y respuesta en el endpoint (EDR), por lo que probar el malware contra estos componentes es crucial para obtener resultados más precisos. Ten cuidado, ya que este paso puede resultar en el envío de muestras al motor en la nube de la solución de seguridad.
Análisis de IoC (Indicadores de Compromiso): En esta etapa, te conviertes en un cazador de amenazas o analista de malware. Analiza el malware y extrae indicadores de compromiso (IoCs) que pueden ser utilizados potencialmente para detectar o firmar el malware.
Volver al paso 1.
Código de máquina nativo de la arquitectura del sistema destino
El Shellcode siempre es código independiente de la posición de memoria, se ejecuta independientemente de la dirección de memoria absoluta.
Es el deliber de el shellcode en forma de payload
ejemplo Shell code Golang: