💻
My Personal Hacking Path
  • 👓Wellcome
    • My Personal Hacking Path
      • Whoami
  • 📚Mi Metodología de Pentesting
    • Tipos de evaluaciones
      • El día a día en pentesting
    • Metodología Propia
      • OWASP
      • OSSTMM
      • PTES
      • CEH Hacking Metodology (CHM)
      • Cyber Kill Chain
      • MITRE Att&ck
    • Fase 0 - Pre Evalaución
    • Fase 1 - Reconocimiento
      • Web / Host
      • SubDominios
      • Descubrimiento de correos electrónicos
      • Escaneo de Puertos
      • Credenciales y brechas de seguridad
      • ¿Sin Ideas?
    • Fase 2 - Explotación
      • Shells
        • Diferencia entre una WebShell y Reverse Shell
      • Payload
      • Network Penetration Services
        • 20|21 - FTP
        • 22 - SSH
        • 139|445- SMB
        • 80|443 - HTTP/HTTPS
    • Fase 3 - Post Explotación
      • Enumeración
      • Linux
        • Enumeración
        • Privilege Escalation
      • Windows
        • Revershell
        • Windows Enum
        • Privilege Escalation
    • Fase 4 - Reporting
      • CVSS
        • v4.0
      • Toma de notas
  • 👾Malware
    • Malware DevOps
    • Arquitectura de Windows
      • Windows API
      • Procesos de Windows
      • Estructuras no documentadas
    • PE
      • DLL
    • Almacenamiento del Payload
      • .data & .rdata
      • .text
      • .rsrc
    • Cifrado de Payload
      • XOR
      • RC4
      • AES
    • Ofuscación de Payload
      • IPv4/IPv6Fuscation
      • MACFucscation
      • UUIDFuscation
    • Process Injectión
      • DLL Injection
      • Shellcode Injection
      • APC Injection
  • 🌐Web-Pentesting
    • Metodología para Pentesting Web
    • Footprinting
      • Identificación Tecnologías web
        • WordPress
        • Joomla
        • Drupal
        • Magento
      • Fuzzing
      • Validación de los certificados
    • Vulnerabilidades comunes
      • File Upload
      • SQL Injection
      • Cross-site scripting
      • XXE Injection
      • LFI - Local File Inclusion
        • Log Poisoning
      • RFI - Remote File Inclusión
      • CSRF - Cross-Site Request Forgery
      • SSRF - Server-Side Request Forgery
      • SSTI - Server-Side Template Injection
      • CSTI - Client-Side Template Injection
      • Padding Oracle Attack
      • NoSQL Injection
      • LDAP Injection
    • Laboratorios
  • ☁️AWS Pentesting
    • Introducción a Amazon Web Services AWS
    • Acceso Inicial
    • IAM
      • Políticas de IAM
      • Enumeraciones
      • Privesc-Paths
        • Permisos de IAM
        • Permisos sobre políticas
        • AssumeRolePolicy Update
        • IAM:PassRole*
          • PassExistingRoleToCloudFormation
    • S3
      • Enumeración
      • S3_public
      • OSINT
    • Lambda
      • Enum Lambda
      • Enum API Gateway
      • Privesc-Paths
        • RCE sobre Lambda
        • PassExistingRoleToNewLambdaThenInvoke
        • PassRoleToNewLambdaThenTrigger
        • EditExistingLambdaFunctionWithRole
    • EC2
      • Enumeración
      • Privesc-Paths
        • EC2_SSRF
        • CreateEC2WhithExistingIP
        • PassExistingRoleToNewGlueDevEndpoint
        • ECS_takeover
    • VPC
      • Enumeración
      • PivotingInTheCloud
    • Bases de Datos
      • RDS
        • Enumeración
      • DynamoDB
        • Enumeración
    • ECS
      • Enum ECR
      • Enum ECS
      • Enum EKS
    • AWS Secrets Manager
      • Enumeración
    • Análisis de vulnerabilidades Automatizado
    • Blue Team AWS
      • CloudTrail
      • CloudWatch
      • GuardDuty
      • AWS Inspector
      • AWS Shield
      • Web Application Firewall
    • Notas
      • Terraform
  • 🔫Red_Team
    • Introducción a Red Team
      • Assume breach
    • ¿Qué es MITRE ATT&CK?
      • Guia de uso de Invoke-AtomicRedTeam
    • C2 Comando y control
      • Sliver C2
        • Instalación
        • Beacons y Sesiones
        • Perfiles
        • mTLS y WiewGuard
        • HTTP / HTTPS
        • DNS
        • Stagers: Basics
        • Stagers: Proccess Injection
        • Basics de Implates
        • Ejecución de Assembly
        • Sideload
        • SpawnDLL
        • Sliver Extensions
  • 💾Active Directory
    • Teoria
      • Componentes Físicos
      • Componentes Lógicos
      • GPO VS ACL
      • Kerberos
        • Funcionamiento de Kerberos
      • Usuarios por defecto
    • Enumeraciones
      • ¿Por qué enumerar?
      • Enumeración manual
      • Enumeración con PowerView
    • Ataques en AD
      • Mimikats
        • Comandos
      • Password Spraying
      • LLMNR Poisoning
      • Relay Attacks
        • NTLM
      • Kerberoasting
    • Tools
      • AuxRecon
      • Powershell
      • PowerView.ps1
      • ADPeas
      • Mimikatz
        • Comandos
    • AD Lab
  • 🌩️Azure Coud Pentesting
    • Introducción a Azure y Office 365
    • Introducción a Microsoft Indentity Services
    • Enumeración
    • Azure Files
      • Encontrar Fuga de Datos
    • Microsoft Graph
    • Notas
  • 📱Mobile Pentesting
    • Análisis de Aplicaciones Móviles en MobSF
    • ¿Cómo interceptar tráfico de una aplicación Flutter Android con Burp?
  • 📶Wireless
    • Terminología
    • Tipos de Wireless Networks
    • Formas de Autenticación
    • Cifrados
      • WEP
      • WPA
      • WPA2
      • WPA3
    • Ataques
  • 😎Extras
    • Docker
      • Port Forward y volúmenes
      • Docker Compose
      • Container Breakouts
    • Comandos Utiles
    • Fliper Zero
    • Páginas útiles
  • Kali Set Up
Con tecnología de GitBook
En esta página
  • ¿Qué es el malware?
  • ¿Por qué aprender desarrollo de malware?
  • ¿Cuál lenguaje usar?
  • Ciclo de vida del desarrollo de malware MDLC
  • ¿Qué es un Shellcode?
  1. Malware

Malware DevOps

AnteriorToma de notasSiguienteArquitectura de Windows

Última actualización hace 1 año

¿Qué es el malware?

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.

¿Por qué aprender desarrollo de malware?

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:

  1. 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.

  2. 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.

  3. 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.

¿Cuál lenguaje usar?

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.

Ciclo de vida del desarrollo de malware MDLC

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:

  1. Desarrollo: Comienza el desarrollo o refinamiento de la funcionalidad dentro del malware.

  2. Pruebas: Realiza pruebas para descubrir errores ocultos dentro del código desarrollado hasta el momento.

  3. 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.

  4. 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.

  5. 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.

  6. Volver al paso 1.

¿Qué es un Shellcode?

  • 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:

shellcode := []byte{97, 98, 99, 100, 101, 102}
👾
Windows Internals Book - Sysinternalsdocsmsft
Logo