Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Fraile

#1
Hola a todos, os dejo el enlace de una CTF, basada en una auditoria real, totalmente gratuita, patrocinada por editorial ra-ma, arelance, onvite.... Animaros!!! la finalidad es pasar un buen rato y compartir conocimientos.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

#2
Gracias a ti, por tomarte tu tiempo en leerlo/verlo y por tu opinion, pienso como tu, me precipite. Sigo mirando nuevas vias de ataque, porque, ahora se como trabajan, han cortado en su analisis de malware la salida a internet..... pero voy a seguir probando cosas. Un abrazo AXCESS, muchas gracias por tus palabras.
#3
Aclaración: Agradecer la atención recibida tanto por Microsoft como por INCIBE, sus respuestas han sido muy similares, dando como no vulnerable el siguiente artículo que ahora expongo. Mi opinión es algo personal mío, que expreso con todos mis respetos y sin intención de molestar o agraviar a nadie, todo lo contrario, para mí ha sido una gran experiencia de la cual he aprendido mucho.

Por parte de Microsoft tengo la autorización para publicar este artículo.

Agradecimientos a: Microsoft, INCIBE, Gabriel Arcos, Guillermo Ezguerra, Nicolás Santamaría, Jorge Palma, David Gaona, Luis Uribe. Muchísimas gracias por vuestros consejos.

1 de Junio de 2022, el comienzo.

Fue todo, pura casualidad, esa es la verdad. Pero que subidon de adrenalina!!!, cuando enviando un enlace de un programa de monitorización (este programa tiene la posibilidad de capturar escritorios, abrir puertas traseras.....), vía email , veo que mi programa, empieza a capturar fotos de un escritorio. El subidon viene cuando le pregunto al destinatario del email si ya había probado el programa de captura de escritorio y me dice que no, que no lo ha ejecutado.... - ¿Pero cómo es posible que este recibiendo capturas de un escritorio?, ¿seguro que no lo has ejectuado?, su respuesta fue decisiva, YO NO HE SIDO.

No me lo puedo creer!!!, me están entrando en mi cuenta de Mega o me tienen pinchado el email!!!. La verdad que fue lo primero que pensé......

Mi decisión fue volver a enviar el email, con el mismo enlace del monitorizador que estaba en mega, de nuevo al destinatario o mejor dicho, destinatarios, me confirman que ellos no han ejecutado el programa..... Menuda tarde pase!!!!! hablando con ellos, intentado aclarar el motivo... Solución, ir quitando destinatarios, hasta que solo quedó uno, y en su caso el problema volvía a reproducirse, sin que el ejecutara el monitorizador, el programa me devolvía fotos de un escritorio, que evidentemente no era suyo.

Video original, de las capturas de escritorio: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

En una de mis llamadas de esa tarde, éste ya, ultimo destinatario, me dice...... - Ey!!!, es que mi cuenta de email, es una cuenta de Microsoft Outlook Office 365 y tengo marcado que analice todos los enlaces y programas adjuntos que lleve el email.

Ahora empezaba a tener sentido todo, podría ser Microsoft?......

1 de Junio de 2022, unas horas después del comienzo.

El último destinatario y yo, llegamos a la conclusión de cómo funciona Microsoft de Outlook Office 365 (Defender), cuando analiza un email con un enlace o fichero adjunto:
-         Microsoft, levanta una máquina virtual, donde ejecuta el enlace o archivo adjunto y mira si ese enlace puede ser un programa malicioso o no.

Enlace de documentación del sistema de Microsoft: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Ya todo empezaba a tener sentido, ¿podría ser Microsoft que estuviera chequeando el enlace enviado desde la página de mega?. Pero mi pregunta era... ¿Esta máquina virtual que Microsoft levanta para testear el archivo, es normal que se conecte a internet?, mi siguiente pregunta fue... ¿Y si en vez de capturar el escritorio le digo que me habrá una puerta trasera en dicha máquina para cogerla por medio de una Shell inversa?.

Video primero de POC, abrir Shell inversa en Maquina virtual de análisis para Outlook 365: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Video segundo de POC, abrir Shell inversa en Maquina virtual de análisis para Outlook 365:

Primera respuesta por parte de Microsoft a mi rápido y pequeño estudio del incidente:



Segunda respuesta por parte de Microsoft.



Bueno, pues parece que no tiene mucha importancia. Así que me dedique hacer más pruebas, vi que dependiendo de la dirección de email, de Outlook a la que enviara el enlace, el comportamiento era el mismo, llegue a probar a enviar ese mismo email a una dirección de soporte de Microsoft, con el mismo resultado, pero en este caso el ISP ya no era Europeo, era Americano.

Vi que mis permisos en esa máquina virtual eran de administrador, podía hacer y deshacer lo que quisiera en esa máquina. El tiempo como podéis ver en el video era de unos 4 o 5 minutos, la conexión se terminaba cuando la maquina virtual terminaba de analizar el proceso, ver el video: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Vale, pensé, todo está encapsulado en una maquina virtual, saltar de esa máquina virtual hacia el servidor podía ser complicado, o quizás imposible... No es por buscar excusas, pero creo que me precipite al reportar esto a Microsoft, ahora después de casi un mes largo que ha pasado, me arrepiento un poco, el no haber estudiado con más detenimiento mis posibilidades. Si os puedo decir que llegue a retener el proceso un poco más, ganando casi unos 8 minutos. Si os puedo decir, que podía matar todos los servicios de Hyper-V, puesto que tenia derechos de administrador, que modifique mi programa "monitorizador", para que desde su ISP me enviara email, quedando reflejada la IP de Microsoft como podéis ver en uno de los videos.

¿Qué hubiera pasado si hubiera modificado mi programa, para que una vez dentro de la maquina virtual de Microsoft, se hubiera dedicado a enviar email a esa misma cuenta de Outlook 365, con la cual yo hacia las POC (ver video)?. Desde mi parecer se hubiera comportado como un gusano, abriendo maquinas virtuales sin parar...... ¿Y si hubiera intentado, puesto que tenia derechos de administrador, cambiar permisos o bloquear las entradas del registro con objeto de congelar el sistema operativo?, ¿estás maquinas virtuales, están programadas desde el servidor para apagarse solas, o estas maquinas virtuales se apagan una vez termina el proceso de chequeo??????.

En el video podéis ver que la maquina virtual que usan es un Windows 7, lastima no haber podido dedicar más tiempo para ver si existe alguna vulnerabilidad para Hyper-v y saltar de una maquina a otra..... Ey!!! Que tal haber realizado un programa donde cree un archivo o varios, solo con texto sin sentido para dejar si espacio el disco duro, donde se levanta la maquina virtual????.

Y claro está, el "y si", "y si" un ciberdelincuente aprovecha esto para con ese mismo bucle repetitivo, lanzar ataques contra una página web para hacer denegación de servicios???.

Y mi última pregunta, ¿Por qué, si esto no tiene importancia y no es una vulnerabilidad, se ha parcheado el diseño, para que la maquina virtual ya no tenga esa salida libre a internet?

Yo, entiendo que no sea una CVE, entiendo que no entre dentro de su sistema de recompensas (tampoco la buscaba), pero desde mi humilde opinión, era una vulnerabilidad, y digo era, porque al quitar ese acceso a internet, mi estudio se fue al traste.....

07 de Agosto de 2022.

¿Qué he aprendido?.
-         He aprendido que ha día de hoy hay mucho que  explotar.
-         He aprendido, a tener más paciencia a la hora de reportar este tipo de vulnerabilidades y asegurarte que lo que entregas no sean especulaciones, si no realidades.  Y llevar hasta las últimas consecuencias tus estudios.
-         He aprendido, a escuchar los consejos de otros compañeros que han pasado por algo similar.

Gracias Microsoft, por haber retocado vuestro diseño en el testeo de los mensajes destinados a cuentas de Outlook, siento que no coincidamos en el potencial peligro que yo he creído ver y vosotros no. Pero cierto es que en la guerra de ciberdelincuentes y los que nos dedicamos hacer de internet una red más segura, cualquier pequeño detalle ayuda. Tenéis y tendréis siempre todo mi respeto y seguiré investigado.

Gracias a todos por vuestro tiempo, espero que este artículo, por lo menos os haya entretenido.

Original, por favor si os ha gustado, dejar vuestro comentario o dar me gusta, muchas gracias.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#4
Hacking / Re: Reto Hack.
Febrero 16, 2022, 05:38:33 PM
Buenas a todos, el reto, llega a su fin mañana Jueves. Realizare un video donde se explicara la solucion. Os agradeceria a los que habeis intentado el reto, vuestros comentarios, entre otras cosas para saber, si realizo nuevo retos.

Muchas gracias a todos, un cordial saludo.
#5
Hacking / Re: Reto Hack.
Febrero 15, 2022, 11:28:48 AM
Buenas a todos, disculpar la IP nueva es 80.31.203.255
Los datos de entrada los mismos.

Saludos.
#6
Hacking / Re: Reto Hack.
Febrero 14, 2022, 05:42:47 AM
Claro lo que necesites me dices.
#7
Hacking / Re: Reto Hack.
Febrero 13, 2022, 09:25:48 AM
Buenas a todos/as, alguien esta con el reto??, si teneis alguna pregunta o algo, por favor no dudeis en decirla. La intencion de este reto es que aprendamos todos, yo me incluyo.

Saludos, y espero que la iniciativa os haya gustado.

#8
Hacking / Reto Hack.
Febrero 12, 2022, 04:49:28 PM
Buenas a todos, estamos probando una plataforma temporal de formacion, he agregado un reto, basado en una intrusion real..... La version de la plataforma es una beta, asi que si salen cosas.... pues os agradeceria que me lo digais. La ip es No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Si la ip cambiara, os dejare en este mismo chat la nueva. Es una ip Dinamica.

usuario:1294
Pass:tss

Una vez dentro de la plataforma, en la esquina superior izquierda teneis un boton que es el menu de talleres.
Agradeceria mucho vuestra colaboracion y comentarios.

Muchas gracias, y suerte.


P.D: Me econtrais en linkeid, me encantaria teneros como contactos.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

#9
Hacking / Re: Artículo Ojala Que Llueva Café.
Febrero 04, 2022, 02:59:28 PM
Axcess, muchas gracias. Un cordial saludo.
#10
Hacking / Artículo Ojala Que Llueva Café.
Febrero 02, 2022, 06:36:58 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Seguro que esto lo habéis escuchado en más de una ocasión, que gran canción!!, Grande!!! Juan Luis Guerra. Corría el año 1989 o 1990, una tarde de verano, en una buena terraza de un bar, bajo la sombra de algunos árboles, creo que pinos, leve brisa marina, con amigos y amigas, tomando un café largo con leche y unas cartas o trivial sobre la mesa..... y esta canción, sonando a un volumen moderado, Ojala Que Llueva Café....... Que recuerdos!!!!.

Bueno pues espero que os haya gustado este artículo..... Nooooooo!!! Es broma, si os dais cuenta hay mas texto debajo de este párrafo, leerlo por favor, me gustaría hablar de una de las técnicas más usadas por los auditores de seguridad.

Ojala Que Lluevan Hash.

Seguro que alguno de mis artículos he nombrado ya la técnica "Pass The Hash", pues bien ha llegado el momento de ver en qué consiste.
Esta técnica se apoya en algunas vulnerabilidades del sistema objetivo, y se trata de capturar las claves encriptadas de un usuario, vamos lo que se denomina un hash. Estos hash, pueden correr por la red, por ejemplo cuando un usuario intenta acceder a un recurso compartido.....
La técnica que os voy a explicar se apoya en ciertas herramientas de Linux. Necesitareis lo siguiente:
-         CrackMapExec.
-         Tener instalado el Impacket.
-         NTLMRelayx.
-         Responder.
-         Una Shell inversa.
¿Lo tenemos todo?, genial!!! Vamos a realizar una POC.
Vamos a empezar, marcando los objetivos, para que esta técnica funcione, se tiene que dar que el objetivo no tenga firmado el SMB. Para identificar los objetivos podemos usar "CrackMapExec", con la siguiente línea.



Una vez ejecutado me mostrara todos los posibles objetivos.



Antes de seguir, voy a definir un poco las IP y el papel que va a tener cada una de ellas:

192.168.1.101 – Esta IP, es el "Parrot", desde donde voy a realizar todos los ataques mediante Linux.
192.168.1.38 – Esta IP, es el objetivo en el cual voy a meter la Shell inversa. Es un Windows Server 2012 R2.
192.168.1.254 – Esta IP, me va a servir para solicitar una conexión a un recurso de red inexistente.

Una vez que tenemos los objetivos, vamos a usar una herramienta de Linux.

NTLMRelayx, es una herramienta, que se complementa muy bien con otra herramienta de Linux que es Responder, vamos un envenenador de red.
NTLMRelayx, la voy a usar, para que capture Hash y seguidamente intente identificarse en el objetivo con el hash capturado. Lo que tenéis que entender, es que el hash que se ha capturado, en algún ordenador.., debe ser "la clave" del administrador local, codificada del ordenador objetivo.

De lo ordenadores que me ha devuelto el CrackMapExec, voy a fijar como objetivo



Al Windows Server 2012 R2. El fijar este servidor, es porque me he fijado que no tiene firmado el SMB.



Bien, pues vamos a poner en marcha a NTLMRelayx.



-smb2support = Que tenga soporte sobre la versión 2 de smb, por si a smb1 esta desactivada.
-t = Probara cualquier identificación capturada sobre la IP.
-e = Un exploit que podréis fabricar con el mismo msfvenom, en mi caso es de cosecha propia.

Bien ahora vamos a retocar el Responder.





Cambiamos esos valores en el responder para que no se pise con NTLMRelayx.
Ahora voy a iniciar el responder



Ya tenemos levantado el NTLMRelayx y Responder, bien, bien, pues como la idea es meter una Shell inversa en el objetivo una vez capturado al hash, voy a usar metasploit, para conectarme contra su exploit Multi/Handler. Para que mi Shell se conecte a él.



Mi Shell inversa está configurada para que apunte a la IP 192.168.1.101, por la que está escuchando metasploit. Bien pues a ejecutar este exploit.

Y ya por ultimo pero no menos importante hay que forzar una conexión de red, desde cualquier otro ordenador, para que nuestra trama funcione. Si estáis en una auditoría interna, y estáis físicamente en la oficina del cliente, podéis pinchas un "Bad Usb" (mirar mi artículo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ) para que provoque esa conexión de red.

Si habéis cogido por medio de una vulnerabilidad alguno otro ordenador desde este mismo, podréis también forzar una conexión hacia un recurso de red que no exista. En mi caso voy a forzar la llamada desde la IP mencionada anteriormente: 192.168.1.254.



Si todo ha ido bien, y el objetivo, 192.168.1.38, no estaba correctamente fortificado.... Estaremos dentro por medio de una Shell inversa, introducida por NTLMRelayx.



Como se puede solucionar este problema para que esto no funcione:
1.      Habilitar firma SMB.
Dentro del objetivo, 192.168.1.38 el Windows Server 2012 R2, voy a activa la firma para SMB.
Para ello, voy a usar la "Administración de directivas de grupo".



Dentro voy a buscar las directivas siguientes y las voy a dejar habilitadas.



Para actualizar sin reinicar, podeis usar un "Comando G", desde el cmd del servidor "gpupdate".
Si todo va bien, ahora cuando ejecute con "CrackMapExec" y busque objetivos con el SMB sin firmar ya no deberia de aparecer esta IP 192.168.1.38.



2.      Deshabilitar LLMNR

En este caso vamos dentro de las "Directivas de grupo" a:



Y habilitamos la siguiente directiva.



3.      Deshabilitar NBT-NS
Aqui vamos a configuracion de red (Este punto es discutible....).



Sacamos las propiedades de la tarjeta de red. Seleccionamos el protocolo de internet TCP/IPv4 y damos clic sobre el boton de propiedades, seguidamente clic sobre el boton de "Opciones Avanzadas", nos posicionamos en la pestaña "Wins" y damos clic:



4.      Supervisión
Tener siempre levantado el cortafuegos y el Windows Defender, si podeis meter algun antivirus, mejor que mejor.

Os aconsejo, que hagais pruebas en vuestros laboratorios.....

Esta técnica, es ya muy antigua, pero seguro que todavía le podéis sacar provecho. Recordar que si un ordenador está bien fortificado, esto no sucederá.
Os animo a estudiar NTLMRelayx, hay otras formas de explotarlo, por medio de "Socks", listas de posibles objetivos......
Dedicado a mi familia de The Security Sentinel, David Gaona y Guillermo Ezquerra. Por muchos éxitos juntos.

Un cordial saludo a todos.

Fuente original.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#11
Hacking / Re: Artículo Comando G
Febrero 01, 2022, 05:13:11 AM
Me alegra que te haya gustado, gracias a ti.
#12
Hacking / Re: Artículo Comando G
Enero 31, 2022, 03:03:46 PM
Muchas gracias Antrax. Un cordial saludo.
#13
Hacking / Artículo Comando G
Enero 31, 2022, 06:05:36 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

¿Has conseguido explotar una vulnerabilidad y tienes abierta una consola en el objetivo?.

Enhorabuena!!!!, ya en uno de mis anteriores artículos, os hablaba de la técnica "Chismosa Digital" (podéis leerlo en este enlace: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ) en ese artículo, quería hacer ver, como aprovechando la brecha de seguridad se puede buscar información en el objetivo, para poder "pivotar" hacia otro equipo.

Con este artículo, me gustaría ir reforzando un poco el anterior. En este caso, me gustaría hablar, sobre los comandos de consola que podéis usar para sacar la máxima información posible del objetivo.
En este artículo veréis comandos de consola, para controlar:

·        Lo procesos.
·        Los servicios.
·        El registro.
·        El programador de tareas.
·        Sesiones.
·        El corta fuegos.
·        ....
Vamos a suponer que he conseguido, una consola en un objetivo. El objetivo es una maquina Windows.



Realmente lo que estoy publicando, es una auditoria real.

El primer comando que yo probaría seria "whoami", este comando os va a decir que privilegios tenéis dentro del objetivo, pues dependiendo de los privilegios que tengáis podréis hacer más o menos cosas.



Si como en este caso sois "System", lo sois "todo" , bueno..... a ver... puede que en algunos casos no podáis hacer ciertas cosas porque el administrador de sistemas, ha protegido ciertos accesos, en este mismo artículo un poco más abajo, pondré un ejemplo al intentar grabar la "SAM" y "System" del registro de Windows.
Aquí tenéis una foto de los diferentes roles que os devolverá "whoami".



- Usuarios autentificados (SID: S-1-5-11): Son Usuarios que pertenecen o forman parte de Active Directory de una red de dominio.

- Anonymous Logon (SID: S-1-5-7): Son usuarios que no disponen de una cuenta de usuario en Servicios de dominio de Active Directory, pero que pueden recibir una invitación para participar de forma remota en una conferencia local.

- IUSR (SID: S-1-5-17): Este grupo sirve para dar permisos a las cuentas de servicio encargadas de ejecutar los pools de aplicación del servidor Web IIS (Internet Information Services).

- Interactive (SID: S-1-5-4): Representa a los usuarios que han abierto sesión localmente en la máquina y que no acceden a un recurso de la máquina a través de la red.

- Local Service (SID: S-1-5-19): Los miembros de este grupo tienen permiso para leer el registro de eventos del equipo local.

- Dialup (SID: S-1-5-1): Son usuarios conectados a través de una conexión de acceso remoto.

- Network (SID: S-1-5-2): Son los usuarios que acceden a un recurso de la máquina a través de la red, a diferencia de los usuarios que han abierto una sesión localmente para acceder a los recursos. No incluye a los usuarios que inicien sesión mediante una sesión de Escritorio remoto (mstsc-Miscroft Terminal Service Connection).

- Service (SID: S-1-5-6): Son los usuarios que inician sesión como servicio.

- Network service (SID: S-1-5-20): "Servicio de red" es una cuenta utilizada por los servicios que necesitan acceder a recursos en la red bajo la identidad de la cuenta máquina en la cual se ejecutan. Tiene menos privilegios y permisos localmente que el "System Local".

- Local service (SID: S-1-5-19): Es una cuenta utilizada por los servicios que necesitan acceder a recursos locales y no por red (se identifica anónimamente en la red). La diferencia entre Local Service y System Local reside en que System Local posee permisos sobre la red (los mismos que Network Service), mientras que Local Service se autentifica anónimamente en la red.
Network Service y System Local se autentifican en Kerberos utilizando la cuenta máquina del equipo definida en el servicio de Active Directory. Muchos servicios de Windows 7 que no necesitan acceder a la red se ejecutan bajo la identidad de Local Service. Este funcionamiento es el que siempre ha existido en los sistemas Microsoft. Con Windows y 2008, nuevas directivas de grupos permiten a la cuenta Local System autentificarse en NTLM en la red, y no de forma anónima. Este comportamiento no está activo de forma predeterminada, sino que es necesario activarlo.

- System (SID: S-1-5-18): Representa el sistema operativo. Permite asignar permisos específicos al sistema. Se llama también Sistema Local
(Local System). Es la cuenta que tiene más derechos y privilegios en la máquina.

- Batch (SID: S-1-5-3): Son las cuentas utilizadas para ejecutar tareas programadas (Control Schedtasks).

- Terminal Server User (SID: S-1-5-13): Son los usuario que abren una sesión de terminal server en la máquina.

- Remote Interactive Logon (SID: S-1-5-14): Son los usuarios conectados mediante un inicio de sesión de escritorio remoto.
Otros usuarios del sistema para realizar otras funciones determinadas:

- Usuarios de Operadores de cifrado: Como sería lógico, los miembros de este grupo tienen permisos para realizar operaciones de cifrado.

- Usuarios de Operadores de copia de seguridad: Encargados de realizar las copias de seguridad del equipo programadas o automáticas de
Windows o lo que se le hubiese establecido.

- Usuarios del monitor de rendimiento: Los miembros de este grupo pueden acceder a los datos del Monitor de rendimiento (perfmon.exe) localmente y en remoto.

- Usuarios del registro de rendimiento: Los miembros de este grupo pueden programar el registro de los monitores de rendimiento, activar los proveedores de seguimiento y recoger el seguimiento de eventos simultáneamente de forma local y a través de un acceso a este equipo.
Añado una nota sobre los SID de los usuarios:

- Administrador: SID: S-1-5-500

- Invitado: SID: S-1-5-501

- El resto de usuarios locales, generados a partir de la referencia del perfil Default, empezarán ordenadamente a partir del siguiente SID: S-1-5-1000, S-1-5-1002 , S-1-5-1003, etc. y así sucesivamente por cada usuario local creado.

Existen muchos más grupos de usuarios predeterminados en Windows, aquí menciono los que para mí son los más usados y relevantes.
Más información sobre los SID (Identificadores de seguridad): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Otro comando interesante seria "SystemInfo", os dará toda la información del sistema objetivo, sistema operativo, versión, arquitectura, procesador, service pack instalados.......



Ya que estamos viendo información del objetivo, otro comando puede ser "fsutil", este comando entre otras cosas os puede dar información de las unidades de disco que tiene el sistema objetivo.



Ummmmm!!!!, la información es poder!!!!. Más comandos, pues os aconsejo que estudies el comando "NET", os dará mucha información, en este caso la información que podáis obtener estará ligada a los privilegios que tengáis dentro del objetivo, ya sabéis que "whoami", os da esta información.



En este caso me gustaría saber, las cuentas de usuario que están dadas de alta en el objetivo. Para este menester, usare "Net User".



Si quisiera ver una cuenta en concreto usaría "Net user <cuenta>". Esto me dará información de cada cuanto tiempo cambia la clave, al grupo que pertenece......



Una vez que tengo las cuentas del sistema objetivo, podría querer ver de esas cuentas quien son administradores. Bien pues usare "Net localgroup administrator" .





También podría querer ver, las políticas de seguridad de las cuentas de usuario puestas por el administrador a nivel general. Usare "Net accounts".



Esta información me viene bien, por si quiero hacer un ataque de fuerza bruta... ya sé a qué atenerme.....11 caracteres de password!!!! Madre mía, toda una vida para sacarla!!!. Me dice también, que las cuentas se bloquean a los 3 intentos..... Creo que voy a olvidar la fuerza bruta.....
Con este comando también, puedo crear usuarios, "Net user <nombre de usuario> <clave> /add". También lo podría meter dentro del grupo de administradores, "Net localgroup "administrator" <nombre de usuario> /add".... Os recomiendo que lo estudies bien, merece la pena, podréis meteros en escritorios remotos.......

Una vez que tengo un usuario creado, podría querer, compartir la unidad "C:" del objetivo para poder acceder a ella, de una forma cómoda por Windows. Usare "Net Share".



En este caso, he compartido toda la unidad "C:" del objetivo y he agregado al usuario que he creado previamente "Tss", con todos los privilegios sobre la misma, escritura, lectura....

Ahora podre conectarme cómodamente desde mi sistema operativo Windows, con el objetivo, para hacer esto y ya que estamos viendo comandos de consola, lo voy hacer de la siguiente forma. Abriré un CMD en mi ordenador, seguidamente pondré "Net use".



Ahora si abro el explorador de archivos de mi Windows, podre entrar en la unidad "J:" y estar moviéndome cómodamente por la unidad "C:" del objetivo. Y claro esta podría subir, también de una forma muy cómoda, algún programa para monitorizar el objetivo.....

Llegados a este punto, podemos intentar sacar los hash de las cuentas locales del sistema objetivo.
Puesto que tengo acceso desde mi ordenador a toda la unidad "c:" del objetivo, podría intentar conseguir la "SAM" y el "System" del sistema objetivo para obtener los hash de las cuentas. Si soy capaz de obtener los hash de las cuentas locales, podría intentar un poco más adelante realizar un "pass the hash" y tomar el control de otras maquinas.

Para este menester, voy a usar el comando "Reg".  Esta instrucción controla todo lo relacionado con el registro del sistema Windows, os animo a que la estudies.



En este caso, aun teniendo privilegios de "System", que se supone que puedo hacer "todo", el sistema objetivo me dice que no tengo los privilegios necesarios..... Ummmmm!!!! Vaya faena!!!!. ¿Y esto, por que puede ser?. En este caso, el sistema objetivo, pertenece a un dominio, y se han aplicado en este sistema objetivo las directivas de seguridad "GPO" puestas por el administrador de sistema, seguramente aun siendo "System", para que el comando "Reg Save" funcionara debería de ser un administrador de dominio.
Pero bueno, como este artículo va de "Comandos G", no me quise quedar con las ganas de probar "algo", por si los tiros fueran por ahí....

Resulta que el registro de Windows, también funciona con privilegios, un administrador de sistemas podría decir que usuarios tiene derecho de lectura, escritura.... Dentro del registro. Pues bien, tenemos un "Comando G", que por cierto os aviso que tengáis mucho cuidado al manipularlo, pues puede daros un susto. Este comando es "Regini" y nos permitirá dar permisos sobre el registro, a los usuarios o grupos  que queramos. Con "Regini /?" podéis ver como se usa.

En este caso y voy a crear un archivo llamado "reg.ini", donde voy a poner los permisos que quiero activar:



Con esta línea le estoy diciendo que aplique ciertos permisos el [1 7 17] sobre el registro dentro de su directiva de "SAM". Los permisos con los que podéis jugar son:



Para aplicar los permisos, uso:



, comentaros..... que no hubo suerte, sigo sin poder acceder a mis fichero "SAM" y "System"....buffffff, Este administrador es bueno.

Aprovecho para saludar a mi padre y a mi madre..... Es broma, sigamos con el artículo. Me gustaría que vierais como con otras herramientas, en este caso de linux bastante conocidas y muy buenas por cierto, como "CrackMapExec", el fallo se seguiría produciendo.

CrackMapExec.

Qué decir de esta herramienta..... Automatiza muchos de los procesos para un auditor de seguridad. Es una de las herramientas más potentes que he conocido. Su modulo de "SMB", es realmente bueno. Entre algunas tareas a destacar, está,  la de realizar "Pass The Hash". Y claro está, también puede dumpear la "SAM" del sistema objetivo Windows.

Quiero mostrar, como con este objetivo con el que he puesto todos los ejemplos, el cual ha dado error al utilizar el comando "Reg save", para intentar obtener la "SAM" y "System" y hacerme con los hash. Usando otras herramientas, también se producirá dicho error. Con esto quiero decir, que si un sistema objetivo está bien administrador, las herramientas básicamente siguen el mismo patrón de actuación del comando presentado en este caso "Reg Save". No digo que no puedan existir herramientas que intenten en el caso del que estamos hablando, dumpear la "SAM" por otros medios.... Pero sinceramente lo veo complicado si el sistema objetivo está correctamente administrado.

En definitiva las herramientas automatizan los procesos que podemos hacer en este caso de forma manual, con comandos de consola, pero si falla el comando de consola, lo más seguro es que falle también la herramienta.
Voy a usar "CrackMapExec", para intentar dumpear la "SAM" de este objetivo:



Aprecio que nada de nada, no ha sido posible el dumpeo......bufff!!! Bueno, no pasa nada mas adelante intentaremos otra cosa.
Con objeto de que veáis, que realmente la herramienta funciona correctamente, en esta misma auditoria, en la IP 192.168.16.252, se encuentra un server Windows 2003, vulnerable también, en el cual ya me cree un usuario y lo metí en el grupo de administradores como he hecho con el objetivo de este artículo, voy a probar esta misma herramienta sobre el 2003 server......



Como se puede ver, la herramienta funciona perfectamente siempre y cuando tengamos realmente todos los permisos necesarios. Ni que decir tiene que el comando "Reg save", también hubiera funcionado sin ningún problema.

Os animo, en este caso encarecidamente a que estudies esta herramienta, realmente merece la pena. Os dejo un enlace: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Bueno, sigamos con el artículo, no pasa nada, un poco más adelante, probare otra forma de poder hacerme con los hash. ¿Seguimos viendo algunos "Comandos G" más?....

Si quisiera ver todos los procesos activos, que están corriendo en el sistema objetivo, podría usar "tasklist".



Si en un momento determinado quisiera "matar" alguno de estos procesos, podría usar "taskkill". No va a ser el caso en este artículo, pero os animo también a estudiar este comando.

Si quisiera ver los servicios activos en el sistema objetivo, podría usar "sc query".



Este comando "Sc", os ayudara a trabajar con todo lo relacionado con servicios de Windows, os animo a que lo estudies.

Para iniciar o parar un servicio de Windows, se puede usar "sc start <servicio>" o "sc stop <servicio>" también se puede con "Net start <servicio>" o "Net stop <servicio>".

Os dejo un enlace: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Supongamos que quiero, meter un programa que monitorice al objetivo cuando este inicie sesión..... En mi artículo de "¿Quién me espía? ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta )", mencionaba algunas formas de meter una ejecución de un programa, una de ellas era con el "programador de tareas de Windows".  Bien pues para poder crear tareas programas desde la consola podéis usar el comando "schtasks", si quiero ver que tareas programadas tiene el sistema objetivo:



Retomemos de nuevo lo de intentar obtener la "SAM" y "System", me he fijado que este objetivo tiene una tarea para realizar copias de seguridad del registro, periódicamente.... La tarea sería la siguiente:



Esta tarea le dice al sistema operativo, en este caso al del objetivo, que cree copias de seguridad del registro, estas copias quedarían en la siguiente carpeta del sistema:



Si intento copiar el archvio "SAM" o "System", me dira que no puedo porque hay un proceso que los está usando.... Aquí la solución pasaría por intentar para la "tarea" vista en la foto anterior. Pero no me funciono... así que lo que pensé fue deshabilitar la tarea y forzar un reinicio del sistema, quizás esto provocara que al no ejecutarse dicha tarea, los fichero que deseo copiar estuvieran liberados.... Para desactivar y forzar a parar de nuevo la tarea de "RegIdleBackup", use:



Con la foto superior le digo al programador de tareas que desactive la tarea de copia de seguridad.

Con la siguiente foto fuerzo de nuevo a parar la tarea.



La tarea de copia de seguridad del registro "RegIdleBackup", estaría desactivada, ahora podría reiniciar la maquina objetivo, para que la próxima vez que entre.... Con suerte la tarea no se ejecute y pueda copiar mis archivos "SAM" y "Sytem".

Para reiniciar desde consola podéis usar "shutdown /r", bueno pues este "Comando G", no funciono, porque el administrador del servidor objetivo, es muy muy bueno y lo tiene desactivado mediante directivas de seguridad GPO.

Así que en teoría, si el administrador, reiniciara el servidor, podría acceder a mis ansiados "SAM" Y "Sytem", pero el reloj corre siempre muy deprisa para un auditor....

Bueno, pues más de los mismo, estudiar este gran comando para gestionar las tareas programadas "schtasks", puede ser de mucha utilidad.
Si quiero ver qué programas están corriendo en el sistema objetivo y están haciendo uso de socket TCP/UDP, usare "Netstat".



Venga a estudiar un poco más......
"Comando G", "Query", este comando yo lo uso mucho para ver las sesiones abiertas en el servidor objetivo en el que estéis.



Este comando se puede intentar complementar con el comando "tscon" os dejo un link del gran maestro, Chema Alonso No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para que veais como se pueden robar sesiones, o hacer movimientos laterales.

Por último, me gustaría, tocar el "firewall", si el corta fuegos, aquí os dejo un enlace muy interesante de cómo utilizarlo.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

El comando para controlar el corta fuegos es "netsh".

Aquí un ejemplo de cómo desactivar el cortafuegos en redes de dominio y en red privada.

sc config MpsSvc start= auto
net start MpsSvc
netsh advfirewall set allprofiles state off
netsh advfirewall set publicprofile state on

Recordar, somos mucho en esta industria, el compartir es poder para todos, así que os animo a compartir.
Tanto en Windows como en Linux, sobre todo en Linux, existen muchísimas herramientas para la ciberseguridad, os suena seleccionar un payload que se llama "meterpreter".... Siiiiii!!! hace de todo, saca hash, mete troyanos, escritorio remoto..... ¿Pero qué pasa cuando este payload, es anulado por un antivirus del sistema o el mismo Windows Defender?, saber moverse con comandos de consola es importante.

Recuerdos para compañeros, para los que me seguís  y clientes: David Gaona, Guillermo Ezquerra, Gabriel Arcos, Raul Rivero, Fernando Laca, Pedro Antonio Aquino..... y a todos los que no nombro pero sabéis que os tengo presentes. A Fernando Lopez, por varias cosas, la primera gracias por realizar mi curso de Ensamblador, de corazón espero que te haya servido y la segunda, por tu dedicatoria de uno de tus artículos, la cual  quiero copiar, gracias a mi mujer Natalia Monfort, por todo tu apoyo.

Dejar por favor que os diga algo, esta disciplina de ciberseguridad es bonita, porque nunca paras de estudiar, The Security Sentinel, está apostando por nuevo cursos, donde no solo queremos que aprendáis, queremos que sepáis desarrollar, un loro puede aprender, pero no puede desarrollar, saber usar las herramientas del mercado esta genial, ¿pero qué pasa si no obtienes el resultado deseado?, nuestro objetivo es formar para desarrollar.

Un cordial saludo a todos.

Fuente Original: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#14
Hacking / Re: Artículo Teclado Diabolico.
Enero 09, 2022, 01:29:02 PM
Muchismas gracias.
#15
Hacking / Re: Artículo Teclado Diabolico.
Enero 08, 2022, 02:08:25 PM
Hola AXCESS,

Me alegra que este artículo te haya podido interesar. Respecto a tus preguntas, puede que el chip si tenga similitudes, pero con sinceridad, tendria que investigar un poco más. Así que voy a investigar un poco y te contesto.

Muchas gracias por tus comentarios, de verdad, un cordial saludo.

#16
Hacking / Artículo Teclado Diabolico.
Enero 04, 2022, 02:58:43 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hace unos años, que aparecieron en el mercado, pequeñas placas programables. Estas placas, se programan con Arduino. Arduino nace más o menos en el año 2005, para cubrir la necesidad de formación con bajo coste para alumnos de electrónica.

En este artículo, me gustaría hablaros de una de esas placas, la placa con chip "Atmega32U4".



Esta placa, aparte de servir para diversos tipos de proyectos, tiene un comportamiento, bastante interesante, se comporta como un teclado, si como un teclado de ordenador!!!. Quiere decir que cuando la pinchamos en un puerto USB de un ordenador, el ordenador la reconoce como teclado.

¿Y cómo mando las pulsaciones de las teclas?, pues es realmente sencillo, esta placa lleva una pequeña "eprom" por decirlo de alguna forma, que nos permite escribir en ella las pulsaciones de teclado que deseamos enviar al ordenador, una vez pinchada en un puerto USB.

Ummmmmmm!!!, interesante verdad???. Ahora es el momento de coger alguna prenda de ropa que lleve capucha y ponerte esa capucha...... Siiiiiiii!!!, vamos a pensar como un ciberdelincuente (por favor, no me mal interpretéis, no todos los que llevamos prendas de ropa con capucha somos ciberdelincuentes, pido disculpas si he podido ofender a alguien).

El caso es, ¿como puedo pasar esta placa al lado oscuro?..... Pues ya sabiendo que se comporta como un teclado cuando la pincho en un puerto USB, puedo programarla para que haga cosas como:

·        Abrir una consola y copiar algunos ficheros.

·        Abrir una consola y borrar.....

·        Intentar meter un malware.

·        ........

Bueno hacer uso de vuestra imaginación....... En el momento que le damos un "mal uso" a esta placa, puede denominarse que es un Bad USB o Rubber Ducky.......

Yo, os voy a explicar cómo usarla, para abrir una puerta trasera, o Shell inversa...... Siempre claro está desde el punto de vista de la ciberseguridad, sobre todo para que si nos encontramos un USB en la calle o cerca de nuestra oficina... no lo pinchemos alegremente, esperando encontrar "algo", que nos haga pasar un "ratico" divertido o por pura curiosidad y el ser humano es curioso por naturaleza.....

El proyecto conlleva lo siguiente:

·        Un pequeño programa en ensamblador, que será la Shell.

·        Un servidor (en internet....) donde alojare el programa creado en el punto anterior.

·        Un ordenador, que estará a la escucha, en esta POC, usare Metasploit, con el exploit Multi/Handler.

Evidentemente necesitaremos nuestra placa USB con el chip "Atmega32U4" y unas cuantas líneas de Arduino, para que una vez pinchada, copie la Shell realizada en ensamblador en el ordenador de la víctima y la ejecuté.

Bien pues empecemos con el programa en ensamblador, que será nuestra puerta trasera o Shell que se ejecutara en la victima y nos dará acceso a su disco duro.




Este programa, básicamente lo que hace es abrir un socket por el puerto 4444, apuntando a la IP de nuestra maquina que está escuchando "192.168.2.128". Y creando una "CMD" en la victima enlazada con dicho socket.

Este programa una vez compilado pesa unos 6k mas o menos. ¿Por qué lo has realizado en ensamblador?. Muy buena pregunta!!!, pues por varios motivos, no es un lenguaje interpretado, trabaja directamente con las API's de Windows, será un programa muy rápido de ejecutar, pesa muy poco......... Y porque me encanta el ensamblador. Aprovecho para animaros a que realicéis mi curso, que lo podéis encontrar en The Security Sentinel.

Bien el siguiente punto, será dejar el programa en un servidor en internet, que tenga abierto el puerto 445 SMB, con una carpeta en modo lectura (muy importante esto, si no tenéis claro como levantar un servidor SMB con las medidas necesarias para no ser hackeado, mejor no lo hagáis).

En este punto, os podéis estar preguntado, ¿y por que no levanto un servidor FTP y lo bajo desde ahí?. Por la pruebas que yo he podido realizar, os diré que lo intente, pero cuando pinchas la placa USB, donde está programado en Arduino los comandos que quieres que se ejecuten, bien a través de la consola "CMD" o bien desde ejecutar, el sistema operativo, en mi caso un Windows 10 profesional, con la UAC activa y Microsoft Windows Defender levantado, te piden elevación de privilegios y no te va a dejar bajarlo por FTP. Pero si lo haces por medio de recursos compartidos SMB, vamos \\ip\recurso\shell.exe, no te va a pedir esa elevación de privilegios y lo va a copiar al ordenador de la victima sin ningún tipo de problema.

Bueno, ahora toca la parte de poner un ordenador a la escucha. En mi caso, levante un Parrot, y con MetaSploit, use el exploit Multi/Handler.



Fíjese, que aquí solo hay que configurar la IP, que será la misma que se puso en nuestro programa en ensamblador.

Así que una vez que pinchemos nuestra placa "Teclado Diabólico" al puerto USB de la víctima, este ejecutara el código en Arduino para que baje el programa en ensamblador y lo ejecute, conectando directamente con nuestra maquina que está a la escucha.

Bien, pues veamos ahora el código en Arduino, que vamos a guardar en la placa con chip "Atmega32U4".



Este código se divide en dos, el primer bloque le envía pulsaciones al teclado para que abra el panel de ejecutar de Windows y escribe en él un copy, para traernos la Shell hacia nuestro objetivo y guardar el ejecutable en la carpeta %temp%



El segundo bloque de código, es para ejecutar el ejecutable, la Shell.



Una vez ejecutado salta el ordenador que está a la escucha y ya tengo el control del ordenador objetivo.



Mucho cuidado con los USB, podrían ser "Teclados Diabólicos".

Disculpar que no haya entrado en explicar todo el código, pero no era mi intención extenderme tanto, de todos modos si estáis interesados en estos temas, me podéis escribir a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Comentaros también, que el Windows Defender, me lo detecto al segundo intento. Tuve que reiniciar la máquina para que volviera a funcionar, así que entiendo que el exe, realizado en ensamblador se tendría que camuflar, pero eso ya es otra historia......

Espero que este artículo os haya sido de interés, desearos un feliz año nuevo.

Nos vemos el proximo año!!!!.

Enlace: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


#17
Ingeniería Inversa / Código Interpretado bajo Windows.
Noviembre 23, 2021, 06:21:08 AM
No todos los lenguajes de programación, una vez compilados, el binario o "EXE", se traducen directamente a "código maquina", si no que su programa o binario "EXE", depende de un "interprete" incorporado que pasa su "EXE" a código maquina.

Para los profesionales que se dedican a la ingeniería inversa, esto puede suponer tener  que aprender a trabajar con diferentes herramientas, depuradores o desensambladores.

Me gustaría hablar en este artículo de Microsoft Visual Studio, esta gran plataforma de programación, en la cual se puede programar en diferentes lenguajes como C#, Visual Basic, C++... realmente una vez compilados sus proyectos o soluciones, se traducen a un código intermedio.

Microsoft Intermediate Languaje.

O como realmente se le conoce "MSIL".

Lenguaje Intermedio de Microsoft. Código «semi ejecutable» preparado para ser lanzado posteriormente en cualquier tipo de máquina.

Cuando se compila el código escrito, el compilador lo traduce a un código intermedio denominado MSIL o simplemente IL, correspondiente a un lenguaje independiente de la unidad central de proceso (UCP).

Este código intermedio es pasado a la CPU, por el CLR "Common Languaje Runtime", en tiempo de ejecución.


Estos tipos de binarios, le van a costar un poco mas de analizar, o tendrá que usar algunas herramientas que están en el mercado que le facilitaran mucho el trabajo. Yo le voy a realizar una introducción de cómo analizarlos con OllyDBG, pero no entrare en muchos matices pues no es la finalidad de este artículo.

Para seguir este artículo por favor solicíteme la POC "BinarioIntermedioVB.exe". Lo abrimos con OllyDBG.

Lo primero que va hacer es ejecutar el programa para ver que hace. Verá que el programa es muy simple, solo pide un texto y una validación con el botón "Clave", si el texto que mete es "Cayetano", saldrá un msgbox mostrando "Ok".

Como le he comentado un poco más arriba este tipo de binarios, lleva lo que se denomina un código intermedio, vamos el "EXE", no lleva un código nativo puro, lleva en este caso el código MSIL de Microsoft. En el mercado tiene aplicaciones como Net Reflector, que le permitirán interpretar el código MSIL.

Bien pues vamos a ejecutar el binario abierto anteriormente "BinarioIntermedioVB", y Ejecútelo con "F9". Lo primero que quiero que observe, es el mapa de memoria una vez ejecutado el binario:


Fíjese que debería de ver en la parte de arribar el nombre de su binario con sus cabeceras y secciones:


Y un poco más abajo vera DLL que usara su binario como:


Solo al ver "CLR", ya sabe que este binario es de código intermedio, que pertenece a Microsoft.

Le explico primero que es lo que se va a encontrar en su primer bloque "BinarioIntermedioVb.exe", vera que tiene su cabecera como cualquier otro binario, sus secciones, .text, .data...... Bien, entre en la sección de .text. Directamente se le abrirá el "Dump" y estará viendo el ya mencionado código intermedio "MSIL", conforme usted vaya ejecutando el programa, Windows le ira pasando este código intermedio MSIL, al CLR y el CLR a su vez lo pasara a "CLRJIT". Este último será el encargado de convertir el código intermedio en código nativo y pasárselo a la CPU.

Como se puede imaginar depurar este tipo de binarios puede ser un poco más complejo.

Si va bajando por el "Dump", viendo el código "MSIL", la inmensa mayoría del código, son configuraciones del formulario, colores, etiquetas, propiedades........ Si se fija con atención verá algo como esto:


Bien, pues esto es, en perfecto código "MSIL" básicamente el núcleo de su pequeño programa. En definitiva está cogiendo el contenido de la caja de texto, y lo está comparando con una variable global, que esta inicializada a "Cayetano", si en la caja de texto también pone "Cayetano. Lo comparara y si las dos cadenas son iguales mostrara "OK".

Mi objetivo ahora mismo es enseñarle a tratar este código una vez que el "CLRJIT", lo tiene pasado a nativo, para que antes de ser procesado lo podamos interceptar y hacer cosas con él.

Como le he comentado al principio esta aplicación es muy sencilla:

Verá que el programa es muy simple, solo pide un texto y una validación con el botón "Clave", si el texto que mete es "Cayetano", saldrá un msgbox mostrando "Ok".

Pues bien, quiero que teclee en la caja de texto "Cayetano", y seguidamente le dé al botón "Clave", vera que le aparece una ventana de "MessageBox", que le dice "ok". Seguidamente pause la ejecución de OllyDBG con,   


tiene que hacerlo muy, muy rápido. Y seguidamente pulse


Si todo ha ido bien, tiene que estar viendo una pantalla como esta:


Desde esta pantalla podemos ver todo lo que está en la pila, y la funciones o API, que se están ejecutando en el momento de pausar la aplicación.

Usted se va a fijar en:


Como se estará figurando ese "MessageBoxW", le va a llevar a las tripas del entramado de este binario..... Si da dos clic rápidos sobre él, "user32.MessageBoxW", Debería estar viendo esta pantalla.


Esta es la api, de la librería USER32.dll , "MessageBoxw", va a poner un punto de ruptura justo en el RETN 10, de esta forma podremos volver una vez pulsado el botón de aceptar del "OK", al procedimiento que llamo a esta API o función.

Una vez puesto el punto de ruptura, le volvemos a dar al botón de nuestra aplicación "Clave". Debería haber saltado a su punto de interrupción, ahora va a pulsar la tecla F8.


Fíjese que la línea que debería de ejecutar ahora el OllyDBG, en caso de volver a pulsar la tecla F8, seria:


Con lo cual quiere decir que la línea superior a esta, fue la que llamo a la API, "MessageBox".


Bien Mire ahora a su sección de registros y observe lo siguiente:


Aparece el titulo del la ventana y el contenido "ok". Bien, pues va a buscar el "ok", en la memoria para que OllyDBG, se lo pueda mostrar en el "Dump".


De un clic sobre el registro EDI, y seguidamente botón derecho del ratón, y de clic sobre "Follow in Dump". Ahora fíjese en la sección del "Dump".


Debería de estar viendo el "o k", baje un poco el desplazamiento del "Dump", debería de estar viendo ahora:


Ve ¿"Cayetano"?, bueno pues ahí va a poner un punto de ruptura de tipo memoria, quedaría de la siguiente forma:


Subraye en el "Dump" , la palabra "Cayetano" y de clic al botón derecho del ratón, se posiciona sobre BreakPoint, y da clic sobre Memory.


Pulse sobre ella, el botón de "OK".

Ahora en el Dump, debería de estar viendo en color rojo marcado los bytes de "Cayetano".


Pulse "F9", posiblemente si hay algún punto de ruptura mas, tendrá que volver a pulsar "F9", el caso es que una vez que tenga de nuevo la aplicación en memoria y pulse el botón "Claves", OllyDBG", le abra llevado casi al núcleo que vio anteriormente en MSIL, pero ya en código nativo.

Le propongo un reto, ¿sería capaza de terminar este ejercicio?, el reto seria una vez localizado el núcleo del proceso en nativo con OllyDBG, cambiar el código, para que independientemente de lo que ponga en la clave salga el mensaje de "OK".

Puede solicitarme el "exe" en el email: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Envié la solución mediante capturas de pantalla y gane un 25% de descuento sobre nuestro curso de reversing o lenguaje ensamblador, donde aprenderá esto y mucho mas. Para este reto necesita el OllyDBG v 2.01.

Independientemente del reto, si tiene cualquier consulta, puede ponerse en contacto con nosotros en el email mencionado en el párrafo anterior.

No deje de ver No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Le quiero dedicar este artículo a mi amigo y compañero de retos en "Atenea", Raúl Rivero, con el que he aprendido muchísimo.

Espero que le haya gustado o parecido por lo menos interesante este artículo.



Un cordial saludo,

Cayetano De Juan


#18
Hacking / Re: Artículo Buffer Overflow bajo Windows.
Noviembre 20, 2021, 06:11:57 PM
Muchas gracias, intentare aportar más temas sobre este tipo, el proximo artículo, sera sobre lenguejes interpretados.
#19
Hacking / Artículo Buffer Overflow bajo Windows.
Noviembre 20, 2021, 07:12:28 AM
Con este artículo me gustaría explicar en qué consiste la técnica de Buffer Overflow o Stack Overflow.

"Esta técnica, aprovecha un fallo por parte de un programador, al no tener controlado el límite de caracteres que puede introducir un usuario en un campo".
Esta definición corta y sencilla, es realmente compleja de detectar y al mismo tiempo apasionante. Ahí afuera hay toda una industria dedicada a buscar este tipo de vulnerabilidad.
Es una disciplina que lleva su tiempo, en investigación y en conocimientos de lenguajes de programación como C o Ensamblador e Ingeniería Inversa (Reversing).
Para explicar su funcionamiento en este artículo, he confeccionado una pequeña prueba de concepto (POC), realizada en su totalidad con lenguaje Ensamblador, bajo Windows 10.
Para entender esta técnica es necesario comprender como se almacena la información que introducimos en un programa, por ejemplo imagine que está introduciendo datos en una pantalla de una aplicación.



Estos datos, una vez que le damos al botón "Guardar", el programa los recoge y los almacena en una variable. Una variable seria una porción de la memoria de su ordenador, donde estará la información introducida, por ejemplo "Cayetano".



Cada porción de memoria que se reserva para almacenar sus datos, está definida con un tamaño específico. Por ejemplo, el "NIF", podría estar definido con un tamaño de 10 caracteres, el "Nombre" con un tamaño de 25 caracteres y el "Primer Apellido" con un tamaño de 35 Caracteres."

En el siguiente dibujo vera los datos introducidos dentro de su memoria.



Ahora suponga que el programador que ha diseñado el programa, previamente a reservado en memoria bloques de 10, 25 y 35 caracteres, una vez que recibe la información introducida en el formulario, no controla la longitud de los caracteres introducidos por el usuario, ¿Qué pasaría con los bloques de memoria que están ya definidos?.

Suponga que el usuario en el campo "NIF", en vez de introducir siete "XXXXXXX",  introduce dieciséis "XXXXXXXXXXXXXXXX". !!Mmmmmm, veamos que pasa.



Pues que se desbordaría el bloque de memoria definido para "NIF" y metería el resto de caracteres en el siguiente bloque de memoria que estaba definido para el "Nombre".

Bien, pues si ha entendido todo esto, ya sabe lo que es un Buffer Overflow!!.

¿Y realmente hay gente que pierde su tiempo en buscar estos pequeños fallos que ha cometido un programador por no revisar que coincida la longitud de los datos introducidos por un usuario con la longitud reservada en memoria para los mismo?, ¿Qué beneficio puede obtener de esta vulnerabilidad?.

Una persona mal intencionada, un ciberdelincuente, puede usar esto para inyectar un código malicioso en la memoria de su programa.

Veamos esto con un pequeño programa realizado en Ensamblador.



Este sería el código de un programa simulado (DLL), este programa es vulnerable a la técnica de Buffer Overflow. Tendría una función llamada "Cadena", esta función recibe dos argumentos, el primero, es un puntero hacia una cadena de texto, el segundo recibe la longitud de la cadena de texto pasada en el primer argumento.

Fíjese que la primera línea de este procedimiento, es una definición de variable, local, de 20 Bytes, para almacenar el valor pasado al primer argumento de la función "Cadena".



El resto del código, lo que hace es mover todos los bytes del argumento hacia la variable local definida "Locbuffer".

Bien, vea ahora un programa que una vez detectado que el programa anterior es vulnerable a la técnica de Buffer Overflow, va a explotar esta vulnerabilidad, enviando más bytes de los que la variable "Locbuffer" puede soportar y desbordando de esta forma la pila del programa, una vez desbordada obligara al programa vulnerable a llamar a un procedimiento de código "malicioso".



En el segmento de datos, defino una "variable", que contiene el código que va a desbordar la pila del programa vulnerable.



Si se fija en los últimos 4 bytes, están todos a "00H", en esos cuatro últimos bytes, guardare la dirección donde estará el código malicioso que sustituiré por la dirección de regreso que tiene asignada la pila.

En la parte del segmento de  código, llamo al procedimiento del programa que va a explotar la vulnerabilidad.



Ahora le muestro el procedimiento "Exploit" que es donde está el código que explotara la vulnerabilidad.



Por último está el procedimiento donde estará el código "malicioso" a ejecutar, en este POC, ese código es un simple pitido, pero esto se podría cambiar por una Shell, o cualquier otro código...... Pero ese tipo de código sobrepasa la pretensiones de este artículo.



Hasta ahora tenemos un programa simulado, que es vulnerable a esta técnica y un programa que va a desbordar el buffer de pila del programa vulnerable. Pero para ver esto bien, se tiene que ver con un desensamblador o depurador. Voy a usar el OllyDBG para que vea como se procesa todo esto en memoria.



Si pongo un punto de ruptura en la llamada al programa vulnerable, podemos ver como la pila se desborda y cambia la dirección de retorno por la dirección nueva que apunta a nuestro procedimiento "malicioso".



Vea que pasa cuando nuestro programa pasa el control al programa vulnerable y le pasa 28 Bytes cuando el programa vulnerable solo puede admitir en su variable local 20 bytes.

El código que le muestro ahora, seria la función "Cadena" de nuestro programa vulnerable.



En las primeras líneas básicamente lo que hace el ordenador es reservar espacio en la pila para la variable local "Locbuffer".



Las siguientes líneas del programa vulnerable, se encargan de mover a "Locbuffer", los bytes enviados.



Si ejecuto podemos ver paso a paso que pasa cuando se empiezan a copiar los datos enviados al buffer "Locbuffer".

He puesto un punto de ruptura en esta línea del código, que es la que se encarga de ir moviendo los bytes enviado hacia nuestro buffer local "Locbuffer".



Si se fija en el comportamiento de la pila.



Voy a ir ejecutando el código paso a paso y pondré las fotos de cómo se va cambiando la pila.

Primeros 4 bytes cambiados en la pila, hasta ahora el buffer "Locbuffer", se está cargando de forma correcta.



Siguientes 4 bytes introducidos en el buffer "Locbuffer".



Siguientes 4 bytes introducidos en el buffer "Locbuffer".



Y así, hasta que llegamos a los 20 bytes.



Hasta aquí, perfecto, el buffer "Locbuffer", que estaba definido con 20 bytes, esta relleno. El problema es que yo he enviado 28 bytes, así que la función "Cadena" de nuestro programa vulnerable, seguirá introduciendo bytes en el buffer "Locbuffer", al no haber reservado más espacio para este buffer, pisara los valores de la pila que estén a continuación del mismo.



¿Y que se encuentra justo debajo del buffer "Locbuffer"?, pues entre otras cosas la dirección de retorno a nuestro programa de explotación que llamo al programa vulnerable función "Cadena".



Esta dirección le recuerdo que apuntaría a la siguiente línea del código del programa de explotación.



Que pasa, pues que, como le he pasado más bytes de los que soporta el buffer de la función "Cadena", y dentro de esos bytes pasados, le recuerdo que puse la nueva dirección donde quiero que la pila devuelva el control, que seria sobre nuestro código "malicioso".

Si termino de ejecutar el programa, vera que la dirección de retorno original cambia por la pasada por nuestro programa de explotación.



¿Y donde esta apuntado esta dirección de retorno?, pues a nuestro código "malicioso".



Aclaraciones del Artículo.

En ningún momento pretendo con este artículo mostrar información no relevante que pueda ser usada de forma indebida, esto es una POC, muy básica.

Estudiando esta técnica, podrá enviar directamente sobre la pila un payload, totalmente autónomo y ejecutarlo. Hay muchas técnicas de explotación de Buffer Overflow, que podrá ver en internet, con este artículo quería mostrar algo diferente, sin entrar en muchos tecnicismos.

Para poder entender realmente esta técnica tiene que saber cómo funcionan los registros del procesador, pila, segmentos.... Desde The Security Sentinel, le recomendamos nuestro curso de Ensamblador y nuestro curso de Ingeniería Inversa (Reversing).

Quiero dedicar este artículo a mi amigo y compañero David Gaona, incansable en su afán de formarse y aprender, para estar siempre al día en esta disciplina tan compleja como es la ciberseguridad.

Espero que este artículo haya sido de su interés.

Un cordial saludo,

Fuente del Artículo: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta





#20
Hola, te agradezco tu correccion. Lo voy hacer como dices. Muchas gracias, un cordial saludo.