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étrica | Descripción |
|---|---|
| En uso | RAM actualmente utilizada |
| Disponible | RAM libre + en espera |
| Confirmada | Memoria "prometida" (puede > RAM) |
| En caché | Datos en caché para acceso rápido |
| Paginada | En el archivo de paginación en disco |
| No paginada | Siempre 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
- View > Select Columns...
- Pestaña Process Memory, agregue:
- Working Set
- Private Bytes
- Virtual Size
- Peak Working Set
- Page Faults
Paso 2.3: Analizar un proceso
- Seleccione un proceso (ej:
explorer.exe) - Clic derecho > Properties
- 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
- View > Show Lower Pane
- View > Lower Pane View > DLLs
- 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:
| Tipo | Color | Descripción |
|---|---|---|
| Image | Amarillo | Archivos ejecutables/DLLs |
| Mapped File | Naranja | Archivos mapeados en memoria |
| Shareable | Verde | Memoria compartible |
| Heap | Rojo | Heap del proceso |
| Stack | Violeta | Pilas de los hilos |
| Private Data | Azul | Datos privados |
| Free | Blanco | No asignado |
Paso 3.3: Identificar las regiones
- Haga clic en una región en el gráfico
- Vea los detalles en la parte inferior
- Observe la dirección, el tamaño, la protección
Protección de memoria:
R: LecturaW: EscrituraX: EjecuciónG: 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:
| Tipo | Descripción |
|---|---|
| Process Private | Memoria exclusiva de los procesos |
| Mapped File | Archivos mapeados |
| Shareable | Memoria compartible |
| Page Table | Tablas de paginación |
| Nonpaged Pool | Pool kernel no paginable |
| Driver Locked | Bloqueado por drivers |
| Standby | En caché, liberable si es necesario |
| Modified | Modificada, 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
- Ejecute el script de fuga
- Observe el proceso
powershell.exeen Process Explorer - Note la evolución de Working Set y Private Bytes
Entregables
-
Capturas de pantalla:
- Administrador de Tareas pestaña Memoria
- Process Explorer con columnas de memoria
- VMMap de un proceso
- RAMMap vista global
-
Respuestas a las 6 preguntas
-
Informe de análisis (1-2 páginas):
- Procesos más consumidores
- Anomalías detectadas
- Recomendaciones
Criterios de Evaluación
| Criterio | Puntos |
|---|---|
| Uso de Administrador de Tareas | 15% |
| Process Explorer | 25% |
| VMMap | 25% |
| RAMMap | 15% |
| Script de detección | 20% |
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