💻
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 APC?
  • Estado de alerta
  • ¿Qué es la inyección de APC?
  • QueueUserAPC
  • Colocar un Thread en estado de Alerta
  1. Malware
  2. Process Injectión

APC Injection

QueueUserAPC

AnteriorShellcode InjectionSiguienteMetodología para Pentesting Web

Última actualización hace 1 año

¿Qué es APC?

En esta entrada se dará introducción a otra forma de ejecutar una carga útil (payload) sin tener que crear un nuevo hilo. Esta técnica se conoce como inyección APC.

Las llamadas a procedimientos asíncronos son un mecanismo del sistema operativo Windows que permite a los programas ejecutar tareas de forma asíncrona mientras continúan ejecutando otras tareas. Las APC se implementan como rutinas en modo kernel que se ejecutan en el contexto de un hilo específico. El malware puede aprovechar los APC para poner en cola una carga útil y hacer que se ejecute cuando se programe.

No todos los subprocesos pueden ejecutar una función APC en cola, sólo los subprocesos en estado de alerta pueden hacerlo.

Estado de alerta

Un subproceso en estado de alerta es un subproceso en estado de espera. Cuando un subproceso entra en estado de alerta, se coloca en una cola de subprocesos de alerta, lo que le permite ejecutar funciones APC en cola.

¿Qué es la inyección de APC?

Para poner en cola una función APC en un subproceso, la dirección de la función APC debe pasarse a la WinAPI QueueUserAPC.

Según la documentación de Microsoft,

An application queues an APC to a thread by calling the QueueUserAPC function. The calling thread specifies the address of an APC function in the call to QueueUserAPC.

La dirección de la carga útil inyectada se pasará a QueueUserAPC para que se ejecute. Antes de hacerlo, un hilo en el proceso local debe ser colocado en un estado de alerta.

QueueUserAPC

QueueUserAPC se muestra a continuación y acepta 3 argumentos:

  1. pfnAPC - La dirección de la función APC a llamar.

  2. hThread - Un "handle" a un hilo alertado o suspendido.

  3. dwData - Si la función APC requiere parámetros, pueden pasarse aquí.

DWORD QueueUserAPC(
  [in] PAPCFUNC  pfnAPC,
  [in] HANDLE    hThread,
  [in] ULONG_PTR dwData
);

Colocar un Thread en estado de Alerta

El subproceso que ejecutará la función en cola debe estar en estado de alerta. Esto puede hacerse creando un hilo y utilizando una de las siguientes WinAPIs:

Estas funciones se utilizan para sincronizar hilos y mejorar el rendimiento y la capacidad de respuesta en las aplicaciones, sin embargo en este caso, pasar un handle a un evento ficticio es suficiente. Pasar los parámetros correctos a estas funciones no es necesario, ya que el simple uso de una de las funciones es suficiente para colocar el hilo en un estado de alerta.

Para crear un evento ficticio, se utilizará la WinAPI . El objeto evento recién creado es un objeto de sincronización que permite a los hilos comunicarse entre sí mediante la señalización y la espera de eventos. Dado que la salida de CreateEvent es irrelevante, cualquier evento válido puede ser pasado a las WinAPIs mostradas anteriormente.

👾
Sleep
SleepEx
MsgWaitForMultipleObjects
MsgWaitForMultipleObjectsEx
WaitForSingleObject
WaitForSingleObjectEx
WaitForMultipleObjects
WaitForMultipleObjectsEx
SignalObjectAndWait
CreateEvent
Asynchronous Procedure Calls - Win32 appsMicrosoftLearn
Asynchronous Procedure Calls
Logo
QueueUserAPC function (processthreadsapi.h) - Win32 appsMicrosoftLearn
Logo