Saltar al contenido principal

Lab 11.1: Análisis de Memoria de los Procesos

Objetivos de Aprendizaje​

Al final de este laboratorio, usted será capaz de:

  • Utilizar las herramientas Sysinternals para analizar la memoria
  • Comprender el Working Set y los diferentes tipos de memoria
  • Identificar anomalías de memoria de un proceso
  • Detectar procesos sospechosos por su comportamiento de memoria

Duración Estimada​

45 minutos

Prerrequisitos​

  • VM Windows 10/11
  • Herramientas Sysinternals (Process Explorer, VMMap, RAMMap)
  • Derechos de administrador

Contexto Profesional​

El análisis de memoria se utiliza para:

  • Diagnosticar fugas de memoria
  • Identificar malware fileless
  • Analizar el rendimiento de aplicaciones
  • Forense e investigación de incidentes

Parte 1: Vista General con el Administrador de Tareas​

Paso 1.1: Abrir el Administrador de Tareas​

Ctrl+Shift+Esc

Vaya a la pestaña Rendimiento > Memoria

Paso 1.2: Comprender las métricas​

MétricaDescripción
En usoRAM actualmente utilizada
DisponibleRAM libre + en espera
ConfirmadaMemoria "prometida" (puede > RAM)
En cachéDatos en caché para acceso rápido
PaginadaEn el archivo de paginación en disco
No paginadaSiempre en RAM (drivers)

Paso 1.3: Vista por proceso​

Pestaña Detalles > Clic derecho en las columnas > Seleccionar columnas

Agregue:

  • Working set (memoria)
  • Memoria (conjunto de trabajo privado)
  • Memoria (tamaño de confirmación)

Pregunta 1: ¿Qué proceso utiliza más memoria en su sistema?


Parte 2: Process Explorer en Profundidad​

Paso 2.1: Descargar y ejecutar​

# Descargar Sysinternals Suite si aún no lo ha hecho
# https://docs.microsoft.com/en-us/sysinternals/downloads/

# Ejecutar Process Explorer como administrador
.\procexp64.exe

Paso 2.2: Configurar las columnas de memoria​

  1. View > Select Columns...
  2. Pestaña Process Memory, agregue:
    • Working Set
    • Private Bytes
    • Virtual Size
    • Peak Working Set
    • Page Faults

Paso 2.3: Analizar un proceso​

  1. Seleccione un proceso (ej: explorer.exe)
  2. Clic derecho > Properties
  3. Pestaña Performance

Observe:

  • Working Set: Memoria en RAM actualmente
  • Private Bytes: Memoria exclusiva del proceso
  • Virtual Size: Espacio total de direccionamiento

Pregunta 2: ¿Cuál es la diferencia entre Working Set y Private Bytes?

Paso 2.4: Ver las DLLs cargadas​

  1. View > Show Lower Pane
  2. View > Lower Pane View > DLLs
  3. Seleccione un proceso

Pregunta 3: ¿Cuántas DLLs están cargadas en explorer.exe?


Parte 3: VMMap para Análisis Detallado​

Paso 3.1: Ejecutar VMMap​

vmmap64.exe

Seleccione un proceso para analizar (ej: notepad.exe - inícielo primero).

Paso 3.2: Comprender la vista​

VMMap muestra el espacio de direccionamiento completo:

TipoColorDescripción
ImageAmarilloArchivos ejecutables/DLLs
Mapped FileNaranjaArchivos mapeados en memoria
ShareableVerdeMemoria compartible
HeapRojoHeap del proceso
StackVioletaPilas de los hilos
Private DataAzulDatos privados
FreeBlancoNo asignado

Paso 3.3: Identificar las regiones​

  1. Haga clic en una región en el gráfico
  2. Vea los detalles en la parte inferior
  3. Observe la dirección, el tamaño, la protección

Protección de memoria:

  • R: Lectura
  • W: Escritura
  • X: Ejecución
  • G: Guard page

Paso 3.4: Buscar anomalías​

Señales de alerta:

  • RWX: Región legible, escribible Y ejecutable (¡sospechoso!)
  • Heap muy grande: Posible fuga de memoria
  • Private Data inexplicada: Posible inyección
# Script para detectar regiones RWX sospechosas
# (Requiere herramientas específicas como WinDbg)

Pregunta 4: ¿Hay regiones RWX en notepad.exe? Si es así, ¿cuáles?


Parte 4: RAMMap para Vista Global​

Paso 4.1: Ejecutar RAMMap​

rammap64.exe

Ejecute como administrador.

Paso 4.2: Vista general​

Pestaña Use Counts:

TipoDescripción
Process PrivateMemoria exclusiva de los procesos
Mapped FileArchivos mapeados
ShareableMemoria compartible
Page TableTablas de paginación
Nonpaged PoolPool kernel no paginable
Driver LockedBloqueado por drivers
StandbyEn caché, liberable si es necesario
ModifiedModificada, aún no escrita en disco

Paso 4.3: Pestaña File Summary​

Muestra qué archivos están mapeados en memoria.

Pregunta 5: ¿Qué archivos consumen más RAM en caché?

Paso 4.4: Vaciar la caché​

Menú Empty > Empty Standby List

Atención: ¡Usar con precaución en producción!


Parte 5: Detección de Anomalías​

Paso 5.1: Script de detección​

# Script de análisis de memoria básico
Write-Host "=== ANALISIS DE MEMORIA DEL SISTEMA ===" -ForegroundColor Cyan

# Top 10 procesos por Working Set
Write-Host "`n[Top 10 Working Set]" -ForegroundColor Yellow
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 |
Format-Table Name, Id, @{N='WorkingSet(MB)';E={[math]::Round($_.WorkingSet64/1MB,2)}}

# Top 10 por Private Bytes
Write-Host "[Top 10 Private Bytes]" -ForegroundColor Yellow
Get-Process | Sort-Object PrivateMemorySize64 -Descending | Select-Object -First 10 |
Format-Table Name, Id, @{N='PrivateBytes(MB)';E={[math]::Round($_.PrivateMemorySize64/1MB,2)}}

# Procesos con ratio sospechoso (Virtual >> Working Set)
Write-Host "[Ratio sospechoso Virtual/Working]" -ForegroundColor Yellow
Get-Process | Where-Object {
$_.WorkingSet64 -gt 10MB -and
$_.VirtualMemorySize64 -gt ($_.WorkingSet64 * 100)
} | Format-Table Name, Id,
@{N='Working(MB)';E={[math]::Round($_.WorkingSet64/1MB,2)}},
@{N='Virtual(MB)';E={[math]::Round($_.VirtualMemorySize64/1MB,2)}}

# Info general del sistema
Write-Host "[Info Sistema]" -ForegroundColor Yellow
$os = Get-CimInstance Win32_OperatingSystem
Write-Host " RAM Total: $([math]::Round($os.TotalVisibleMemorySize/1MB,2)) GB"
Write-Host " RAM Libre: $([math]::Round($os.FreePhysicalMemory/1MB,2)) GB"
Write-Host " Commit Total: $([math]::Round($os.TotalVirtualMemorySize/1MB,2)) GB"

Paso 5.2: Indicadores de malware​

Signos sospechosos en memoria:

  • Procesos con nombre estándar pero ubicación inusual
  • Regiones RWX (heap/stack ejecutable)
  • Inyección en procesos legítimos
  • Procesos "huecos" (hollow process)
# Verificar las rutas de los procesos
Get-Process | Where-Object { $_.Path } | ForEach-Object {
$expectedPaths = @("C:\Windows", "C:\Program Files", "C:\Program Files (x86)")
$isExpected = $expectedPaths | ForEach-Object { $proc.Path -like "$_*" } | Where-Object { $_ }

if (-not $isExpected -and $_.Name -in @("svchost", "csrss", "services", "lsass")) {
Write-Host "[SUSPECTO] $($_.Name) - Path: $($_.Path)" -ForegroundColor Red
}
}

Pregunta 6: ¿Ha encontrado procesos sospechosos?


Parte 6: Ejercicio Práctico​

Paso 6.1: Crear una fuga de memoria (simulación)​

# Script que simula una fuga de memoria
# EJECUTAR EN UNA VM DE PRUEBA

$leak = @()
Write-Host "Simulación de fuga de memoria..." -ForegroundColor Yellow
Write-Host "Presione Ctrl+C para detener"

while ($true) {
$leak += [byte[]]::new(10MB) # Asigna 10MB
$totalMB = $leak.Count * 10
Write-Host "Memoria asignada: $totalMB MB" -ForegroundColor Gray
Start-Sleep -Seconds 1

if ($totalMB -ge 500) {
Write-Host "Límite alcanzado, deteniendo." -ForegroundColor Red
break
}
}

# Liberar
$leak = $null
[System.GC]::Collect()
Write-Host "Memoria liberada." -ForegroundColor Green

Paso 6.2: Observar con Process Explorer​

  1. Ejecute el script de fuga
  2. Observe el proceso powershell.exe en Process Explorer
  3. Note la evolución de Working Set y Private Bytes

Entregables​

  1. Capturas de pantalla:

    • Administrador de Tareas pestaña Memoria
    • Process Explorer con columnas de memoria
    • VMMap de un proceso
    • RAMMap vista global
  2. Respuestas a las 6 preguntas

  3. Informe de análisis (1-2 páginas):

    • Procesos más consumidores
    • Anomalías detectadas
    • Recomendaciones

Criterios de Evaluación​

CriterioPuntos
Uso de Administrador de Tareas15%
Process Explorer25%
VMMap25%
RAMMap15%
Script de detección20%

Comandos de Referencia​

# Memoria de procesos
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10

# Información del sistema
Get-CimInstance Win32_OperatingSystem | Select-Object *Memory*

# Page file
Get-WmiObject Win32_PageFileUsage

Solución de Problemas​

Process Explorer no se inicia​

  • Ejecute como administrador
  • Verifique que no esté bloqueado por el antivirus

VMMap muestra poca información​

  • Seleccione el proceso en la lista
  • Asegúrese de que el proceso aún exista

Lab desarrollado en el marco del curso Sistemas Operativos - MÓDULO 11