Codective: Herramienta de Hashes A veces nos encontramos con hashes y otros artefactos y no podemos averiguar de dónde vienen y cómo se generaron. Codetective es una herramienta de Francisco Gama capaz de reconocer el formato de salida de muchos algoritmos diferentes con muchas codificaciones posibles para facilitar el análisis. También infiere los niveles de certeza para cada conclusión basada en las huellas del hash correspondiente. Esto puede ser útil, por ejemplo, cuando estamos poniendo a prueba los sistemas desde una perspectiva de seguridad y somos capaces de obtener un archivo de contraseñas con hashes (tal vez de una copia de seguridad expuesta), o por un volcado de memoria. O también como parte de un proceso de fingerprinting o simplemente para verificar implementaciones válidas de diferentes algoritmos. También se puede ejecutar esta herramienta contra un archivo de captura de tráfico de red o contra grandes repositorios de código fuente. Es posible usar Codetective de forma independiente (standalone) o como un plugin para el framework de Volatility. El uso es similar. Descarga Codetective-0.8 Examples (old)-------- $ python codetective.py '79b61b093c3c063fd45f03d55493902f' confident: ['md5'] likely: ['lm', 'ntlm', 'md5-joomla2', 'md5-joomla1'] possible: ['md4', 'base64'] $ python codetective.py '79B61B093C3C063FD45F03D55493902F' confident: ['md5', 'lm', 'ntlm'] possible: ['md4', 'base64'] $ python codetective.py '79B61B093C3C063FD45F03D55493902F:*' confident: ['md5', 'SAM(lm:*)'] likely: ['lm', 'ntlm'] possible: ['md4'] $ python codetective.py -t win '79B61B093C3C063FD45F03D55493902F:*' confident: ['SAM(lm:*)'] likely: ['md5', 'lm', 'ntlm'] possible: ['md4'] $ python codetective.py -a -t win '79B61B093C3C063FD45F03D55493902F:*' confident: ['SAM(lm:*)'] hashes in SAM file - LM:79B61B093C3C063FD45F03D55493902F NTLM:not defined likely: ['md5', 'lm', 'ntlm'] possible: ['md4'] $ python vol.py codetective -n notepad -v -f JOHN-2CF071298B-20120318-024807.raw Volatile Systems Volatility Framework 2.0 Found 29 tasks kernel mapping... Calculating task mappings... Process: wuauclt.exe PPID: 1120 Pid: 1908 Process: vmtoolsd.exe PPID: 688 Pid: 348 Process: vmacthlp.exe PPID: 688 Pid: 912 Process: svchost.exe PPID: 688 Pid: 976 Process: smss.exe PPID: 4 Pid: 384 Process: explorer.exe PPID: 1680 Pid: 1696 Process: cmd.exe PPID: 1696 Pid: 1520 Process: svchost.exe PPID: 688 Pid: 160 Process: vmtoolsd.exe PPID: 1696 Pid: 1820 Process: lsass.exe PPID: 644 Pid: 700 Process: services.exe PPID: 644 Pid: 688 Process: alg.exe PPID: 688 Pid: 1936 Process: svchost.exe PPID: 688 Pid: 924 Process: csrss.exe PPID: 384 Pid: 620 Process: svchost.exe PPID: 688 Pid: 1208 Process: TPAutoConnSvc.e PPID: 688 Pid: 1220 Process: spoolsv.exe PPID: 688 Pid: 1572 Process: svchost.exe PPID: 688 Pid: 1172 Process: svchost.exe PPID: 688 Pid: 1120 Process: winlogon.exe PPID: 384 Pid: 644 Process: rundll32.exe PPID: 1696 Pid: 1788 Process: TPAutoConnect.e PPID: 1220 Pid: 1256 Process: notepad.exe PPID: 1696 Pid: 1896 => at offset Virtual: 0x8012e000 Physical: 0x12e000 Size: 0x1000 Found md5 (likely) MD5 hash: 0A5AE0AB474FF954BA5FB5CC22691599 Found md4 (possible) MD4 hash: 0A5AE0AB474FF954BA5FB5CC22691599 => at offset Virtual: 0x8013d000 Physical: 0x13d000 Size: 0x1000 Found md5 (likely) MD5 hash: 4BE2C18D9154D0240B36AEF861085FEC Found md4 (possible) MD4 hash: 4BE2C18D9154D0240B36AEF861085FEC => at offset Virtual: 0x80153000 Physical: 0x153000 Size: 0x1000 Found md5 (likely) MD5 hash: 0B79C053C7D38EE4AB9A00CB3B5D2472 Found md4 (possible) MD4 hash: 0B79C053C7D38EE4AB9A00CB3B5D2472 => at offset Virtual: 0x80171000 Physical: 0x171000 Size: 0x1000 Found md5 (likely) MD5 hash: 10F84F9347B42F6428155C59A743D317 Found md4 (possible) MD4 hash: 10F84F9347B42F6428155C59A743D317 => at offset Virtual: 0x8018a000 Physical: 0x18a000 Size: 0x1000 Found md5 (likely) MD5 hash: 5046ab8cb6b1ce11920c00aa006c4972 Found md4 (possible) MD4 hash: 5046ab8cb6b1ce11920c00aa006c4972 => at offset Virtual: 0x801a2000 Physical: 0x1a2000 Size: 0x1000 Found md5 (likely) MD5 hash: C25F308FAE39B3A4D9E1561F679CD8AA Found md4 (possible) MD4 hash: C25F308FAE39B3A4D9E1561F679CD8AA ... $ python codetective.py -a -f test.txt Administrator:500:CC5E9ACBAD1B25C9AAD3B435B51404EE:996E6760CDDD8815A2C24A110CF040FB::: : {'confident': ['md5', 'SAM(lm:ntlm)'], 'likely': ['lm', 'ntlm'], 'possible': ['md4', 'des-salt-unix']} hashes in SAM file - LM:CC5E9ACBAD1B25C9AAD3B435B51404EE NTLM:996E6760CDDD8815A2C24A110CF040FB UNIX shadow file using salted DES - salt:Ad hash:ministrator ibrahim:$1$hanhd/cF$3lzrzB14HceT7uc3oTmog1:14323:0:99999:7::: : {'confident': ['md5-salt-unix'], 'likely': [], 'possible': []} UNIX shadow file using salted MD5 - salt:hanhd/cF hash:3lzrzB14HceT7uc3oTmog1 563DE3D2F07D0747BBE4BA2697AE33AA : {'confident': ['md5'], 'likely': ['lm', 'ntlm'], 'possible': ['md4', 'base64']} base64 decoded string: ??p?N??;8 463C8A7593A8A79078CB5C119424E62A : {'confident': ['md5'], 'likely': ['lm', 'ntlm'], 'possible': ['md4', 'base64']} base64 decoded string: ?????p E852191079EA08B654CCF4C2F38A162E3E84EE04 : {'confident': [], 'likely': ['sha1'], 'possible': ['base64']} base64 decoded string: ?v??t????z??????O8M8 94F94C9C97BFA92BD267F70E2ABD266B069428C282F30AD521D486A069918925 : {'confident': [], 'likely': ['sha256'], 'possible': ['base64']} base64 decoded string: ??}?/B??E?n???C???x????aw???P??4??u?? sha384$12345678$c0be393a500c7d42b1bd03a1a0a76302f7f472fc132f11ea6373659d0bd8675d04e12d8016d83001c327f0ab70843dd5 : {'confident': [], 'likely': ['sha384', 'sha384-salt-django'], 'possible': []} Django shadow file using salted SHA384 - salt:12345678 hash:c0be393a500c7d42b1bd03a1a0a76302f7f472fc132f11ea6373659d0bd8675d04e12d8016d83001c327f0ab70843dd5 5850478A34D818CE : {'confident': [], 'likely': ['mysql323'], 'possible': ['base64']} base64 decoded string: ??t?????? MySQL v3.23 or previous hash: ['5850478A34D818CE'] 08EE13E9A295641BE6158366C0651B84A1AD9E47 : {'confident': [], 'likely': ['sha1'], 'possible': ['base64']} base64 decoded string: ???q=oy?A?y?~? N??8P?N; ****:7db9d24c238b77af11b99f0a67e99abe : {'confident': ['md5'], 'likely': ['lm', 'ntlm', 'md5-joomla1'], 'possible': ['md4']} Joomla v1 MD5 - hash:7db9d24c238b77af11b99f0a67e99abe ****:d2f46e7173b1d88c9d7b2f52271cd8af:YEfafQuaj58ExG3V : {'confident': ['md5', 'md5-salt-joomla1'], 'likely': ['lm', 'ntlm'], 'possible': ['md4']} Joomla v1 salted MD5 - hash:d2f46e7173b1d88c9d7b2f52271cd8af salt:YEfafQuaj58ExG3V ****:4aad84c0929c72f1c72a9c884e5c0f18:tNT52oL0I8ClmMjO : {'confident': ['md5', 'md5-salt-joomla1'], 'likely': ['lm', 'ntlm'], 'possible': ['md4']} Joomla v1 salted MD5 - hash:4aad84c0929c72f1c72a9c884e5c0f18 salt:tNT52oL0I8ClmMjO ****:1ad6692b7e3b2deb36606603ced0c8b6:LhiqX4pL3s8xy0qd : {'confident': ['md5', 'md5-salt-joomla1'], 'likely': ['lm', 'ntlm'], 'possible': ['md4']} Joomla v1 salted MD5 - hash:1ad6692b7e3b2deb36606603ced0c8b6 salt:LhiqX4pL3s8xy0qd dGVzdGUK : {'confident': [], 'likely': [], 'possible': ['base64']} base64 decoded string: teste Fuente A veces nos encontramos con hashes y otros artefactos y no podemos averiguar de dónde vienen y cómo se generaron. Codetective es una herr... Leer más »
CheckListLinux: análisis y hardening de RedHat Luego de unos cuantos años, por requerimientos de mi trabajo, tuve que retomar un viejo proyecto CheckListLinux, el cual tiene como objetivo verificar el hardening de un servidor RedHat o alguno de sus derivados comparando su configuración con mejores prácticas de seguridad. Cabe aclarar que debía cumplir con ciertas pautas ya establecidas. Por este motivo no utilice "Lynis" para la tarea. El proyecto está desarrollado en PERL y cuenta con 41 scripts que pertenecen a las fases que son ejecutadas durante el análisis. Las fases se dividen de la siguiente forma: Fase 0.0 -- Información del Equipo Fase 1.0 -- Información de los usuarios del sistema Fase 1.1 -- Comprobación de Usuarios/Grupos Fase 1.2 -- Verificar que no existan cuentas con password vacías Fase 1.3 -- Verificar que no existan usuarios con ID 0 Fase 1.4 -- Verificación del archivo login.defs Fase 1.5 -- Últimos usuarios agregados Fase 1.6 -- Configuración PAM Fase 1.7 -- Últimos usuarios conectados Fase 1.8 -- Últimos comandos ejecutados por los usuarios Fase 1.9 -- Relaciones de confianza Fase 1.10 -- Usuarios con acceso al sistema Fase 1.11 -- Verificar que no existan usuarios con Grupo ID 0 Fase 2.0 -- Eventos mediante Syslog - AUTHPRIV Fase 2.1 -- Eventos mediante Rsyslog - AUTHPRIV Fase 3.0 -- Verificar permisos en archivos y directorios Fase 3.1 -- Verificación de Sticky Bit Fase 3.2 -- Verificación de archivos con permisos de escritura para todos los usuarios Fase 3.3 -- Verificación de suid/gsid Fase 3.4 -- Verificación de archivos sin usuario asignado y grupo Fase 4.0 -- Archivo de autenticación ftp Fase 5.0 -- Cierre de conexión automático Fase 6.0 -- Banner personalizado Fase 7.0 -- Verificación de la configuración del servicio ssh Fase 8.0 -- Verificación de SeLinux Fase 9.0 -- Verificación de IPTABLES Fase 10.0 -- Verificación de Servicios Fase 11.0 -- Verificación de Procesos Fase 12.0 -- Verificación de Conexiones Fase 13.0 -- Verificación de Hash de binarios Fase 14.0 -- Configuración de Sudoers Fase 15.0 -- Cron.Daily Fase 16.0 -- Versiones de softwares Fase 17.0 -- Configuración de Red Fase 17.1 -- Verificación de rutas Fase 17.2 -- Verificación configuración sysctl Fase 18.0 -- Verificar el nivel de inittab Fase 18.1 -- Verificar que no este activo ctrlaltdel en inittab Fase 19.0 -- Verificar configuración samba Fase 20.0 -- Verificar sincronización NTP Comenzamos a describir el procedimiento de uso: Descargamos la herramienta: https://github.com/marcositu/redhatchecklist Luego debemos descomprimir el archivo "master.zip" Personalizamos algunos parámetros buscados. Modificar la línea "20" del archivo /libs/fase6.pl donde se encuentra la variable "$bannerpersona" con el valor "Cable" por algún string que se encuentra en el banner personalizado de su Compañía. Modificar la línea "29" del archivo /libs/fase7.pl donde se encuentra la variable "ListenAddress" con el valor 10.246 por las direcciones IP que deben estar configuradas. Luego, debemos copiar el archivo redhatchecklist.pl y el directorio /libs/ al servidor que será analizado. Una vez que tenemos los archivos en nuestro servidor, ejecutamos la herramienta para comenzar con el análisis. [root@miserver]# perl redhatchecklist.pl El último paso es copiar a nuestra computadora los 2 reportes HTML que nos generó la herramienta en la misma carpeta que tenemos los siguientes archivos y directorios: /src/ /vendor/ demo.css sprite.png Si alguna persona quiere ayudarme a optimizar/organizar o reprogramar el "código" es bienvenida, como verán voluntad no me falto pero el código no es el mejor logrado. Fuente: Marcositu Luego de unos cuantos años, por requerimientos de mi trabajo, tuve que retomar un viejo proyecto CheckListLinux , el cual tiene como obj... Leer más »