Mostrar Mensajes

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

Mensajes - andergedon

Páginas: [1] 2 3 4
1
La función necesita una semilla (seed) para crear los número aleatorios a partir de ese valor. Lo más común en estos casos es que se use la hora actual del sistema como semilla para el generador. Solo agrega srand(time(NULL)) antes de llamar a la función rand()

 

Código: C++
  1.    
  2. #include <iostream>  
  3. #include <stdlib.h>
  4. #include <ctime>
  5. using namespace std;
  6.      
  7. int main() {
  8.         srand(time(NULL));
  9.         int a = rand();
  10.         cout<<a<<endl;
  11.      
  12.         system("pause");
  13.         return 0;
  14.     }
  15.  

2
C / C++ / AsciitoX - conversor de texto para tu terminal
« en: Marzo 19, 2018, 02:35:17 am »

Hola amigos de underc0de, después de estar mucho tiempo inactivo (Los estudios me sacan de aquí) he vuelto con un pequeño código que me pasé la tarde haciendo para volver a tomar la práctica con los códigos jeje  8)
Se trata de una herramienta de conversión para texto, con opciones para convertir a ASCII, binario, hexadecimal, base64, decimal y ROT13.

El código lo pueden encontrar en el repositorio de github Una vez compilado su uso es muy sencillo.

Código: [Seleccionar]
      Opciones:
      --asc = ascii --bin = binary
    --hex = hex --b64 = base64
    --dec = decimal --r13 = ROT13
   
    --all = todos (default)
    --cb  = copia el output al portapapeles
    --to xxx = convert to xxx

Ejemplo:
Código: [Seleccionar]
asciitox.exe "underc0de" --to all

si queremos copiar el contenido de alguna de las salidas colocamos al final la opcion "--cb"
Ejemplo:
Código: [Seleccionar]
asciitox.exe --asc "underc0de" --to b64 --cb

Eso es todo por hoy colegas, siéntanse libres si quieren aportar al código, etc.. Nos leemos.


3
Dudas y pedidos generales / Re:Problema depurando con radare2
« en: Febrero 18, 2018, 09:29:49 pm »
Aún nada, cuando el eip termina de llamar a las librerías del programa y comienza a ejecutarse radare2 deja de responder y recibir comandos. Ya busqué en la documentación, algunos artículos y no consigo información al respecto :/

4
Dudas y pedidos generales / Problema depurando con radare2
« en: Febrero 18, 2018, 03:09:08 pm »
Hola amigos, estoy tratando de aprender sobre radare2. El problema es que cuando intento correr el programa en el depurador no puedo seguir analizándolo, es decir radare2 no me deja colocar instrucciones (breakpoints, seek's, write,etc) mientras el programa está ejecutándose.


¿Alguna solución o simplemente la característica no está disponible? Lo que intento es depurar/analizar mientras el programa corre como lo haría con Olly.

Gracias de antemano.

5
Pues lo que me funciona a mi: Una vez leído un tema, aprendido una técnica, etc. Ponla en práctica inmediatamente, luego de ello toma notas (preferiblemente a mano en algún cuaderno, al fin y al cabo estás estudiando) Y por último intenta explicarte a ti mismo lo que acabas de aprender. Si puedes explicarlo, ya lo memorizaste.
Saludos!

6
Ingeniería Inversa / Re:Modificando el funcionamiento de ejecutables
« en: Febrero 08, 2018, 02:43:52 pm »
Hola @Olger346 gracias por tu comentario

Citar
¿Por qué inviertes el hexadecimal obtenido, digo no se puede insertar directamente al registro de esa forma?

Se invierte el hexadecimal debido al formato little-endian que poseen los procesadores más comunes. De este modo se hace más intuitivo el acceso a datos, porque se efectúa fácilmente de manera incremental de menos relevante a más relevante.

Citar
¿Estos valores al ser guardados en el registro EAX, son más grandes de 32 bits, cómo no se sobrecarga este registro?

Los valores estan dentro del rango de los 32bits.
El máximo valor que puede tomar el registro es: 7fffffff=2147483647, y el valor más grande que almacenado en esas instrucciones es  432F6C67=1127181415
1127181415<2147483647   



Saludos!

7
Ingeniería Inversa / Modificando el funcionamiento de ejecutables
« en: Febrero 07, 2018, 09:53:57 pm »

Que tal colegas. Hoy les enseñaré a aprovecharse del flujo de un programa para modificar determinadas partes de su funcionamiento.
Es recomendado tener al menos conocimiento básico sobre ingeniería inversa, ollydbg, y algo de lenguaje ensamblador.

El ejecutable que estaré utilizando en el ejemplo, es un programa sencillo que hice hace mucho tiempo mientras practicaba las GUI de C++. Lo he encontrado entre la basura de mis carpetas y vi que se prestaba para lo que quiero demostrar, Lo pueden descargar aquí, dicho esto, empecemos  ;D

El programa simplemente genera 4 colores aleatorios creando así una paleta de colores, la app tiene una opción que permite buscar imagenes en el navegador que contengan los colores de la paleta generada.

   

Lo que vamos a hacer es modificar esa URL que genera el programa y colocar la que nosotros deseemos.
Manos a la obra 8)

Primero buscaré todas las strings relevantes en relación al botón que llama la función para abrir el navegador. Empezaré con la string "Search image with this colors!" y presionamos F2 para poner un BreakPoint. También localizaré la string "labs.tineye.com" que es la URL que abre el navegador al momento de pulsar el botón, podemos asumir que en algún momento se pasará como argumento a una función. Por ahora colocaré un BreakPoint ahí también.


Bien, una vez hecho esto intentemos comenzar la depuración del ejecutable y esperar que se tope con alguno de nuestros BreakPoints antes colocados.
Presionamos el botón que nos interesa, el que llama a la función para buscar las imagenes. Nos topamos con uno de los BreakPoints, el de la URL y vemos que la instrucción  manipula esa string a partir de la posición 00A4CC4C


A partir de este punto avanzaré hasta encontrar el punto en donde se abre nuestro navegador para tener puntos de inicio/final. Luego de ir paso a paso hallamos ese punto final en 00405158.

Ya que sabemos donde está nuestro punto final podemos analizar el flujo del programa con más calma. Si volvemos a ejecutar el programa y vamos de nuevo instrucción por instrucción notamos que en 0040512B la dirección de nuestra URL completa es almacenada en el registro EAX


La dirección que almacena nuestra string con la URL es entonces 0028F6F2

Lo que voy a hacer acontinuación es cambiar el contenido de la memoria donde es almacenada la URL, lo haré antes de que sea copiado al registro EAX, pues parece que el registro es utilizado para mover el string y utilizarlo dentro de la función que llama al navegador. Para hacer esto tenemos que "inyectar" un par de instrucciones en el programa.
Lo primero que vamos a hacer es buscar un espacio "nulo", es decir, un espacio en la memoria bastante alejada en donde no haya ninguna instrucción, byte, etc. Normalmente se idetifican por una serie bastante larga de NOP o DB 00 Yo elegiré la 00A3C34F. A partir de aquí es donde empezaremos a colocar las instrucciones "inyectadas" con el fin de modificar la URL

Tenemos que hacer que nuestro programa salte en algún punto hasta nuestra dirección alejada, para esto buscaremos una instrucción "inofensiva" o una instrucción que no sea tan importante. Elegiré 0040511E   MOV EAX,16. Pues no hace más que copiar 16 al registro EAX. Reemplazaremos esa instrucción por JMP 00A3C34F para que de un salto incondicional hasta nuestra dirección alejada.

Una vez dado el salto empezaremos a modificar la dirección de memoria de la URL.

La url que inyectaré será: goo.gl/CqMM2n (El link acortado al foro de underc0de) Luego de convertirlo a hexadecimal, quedaría así:
Código: [Seleccionar]
676f6f2e 676c2f43 714d4d32 6e00
Y luego de invertirlo para pasarlo mediante el registro quedaría de esta forma:
Código: [Seleccionar]
2E6F6F67 432F6C67 324D4D71 006e
Ahora empezaremos a copiar todos esos caracteres mediante EAX a nuestra memoria donde se encuentra la URL. Las instrucciones quedarían algo así

Código: ASM
  1. MOV EAX, 2E6F6F67
  2. MOV [0028F6F2], EAX
  3. MOV EAX, 432F6C67
  4. MOV [0028F6F6],EAX
  5. MOV EAX, 324D4D71
  6. MOV [0028F6FA], EAX
  7. MOV EAX, 006e
  8. MOV [0028F6FE], EAX
  9. MOV EAX, 16
  10. JMP 00405123


Estas instrucciones son las que colocaremos en nuestra dirección alejada (00A3C34F). Si ejecutamos un poco estas instrucciones podemos ver como nuestra URL va cambiando.


Una vez terminada la modificación de la memoria hay que "dejar todo como estaba y fingir que nada pasó" por eso colocamos ese 16 en EAX y volvemos con un salto al punto justo después de donde aplicamos el primer salto. Esto para que el programa siga su curso "normalmente"

Ejecutamos nuestro programa dentro del depurador para comprobar y...


Búm! Hemos conseguido que el programa nos envíe a un sitio totalmente diferente al que conducía originalmente.
Para guardar los cambios damos en click derecho> copy to executable > All modifications.

¡Y listo!


Esto fue todo por hoy, espero que también hayan aprendido algo. ¡Nos leemos!.

8
Criptografía / Twitter como fuente de entropía
« en: Febrero 03, 2018, 10:04:26 pm »
¿Que es entropía?
La entropía es la aleatoriedad recogida por un sistema operativo o aplicación para su uso en criptografía u otros usos que requieren datos aleatorios.


Internet es un desastre caótico, lo que hace que sea una buena fuente de entropía.
Básicamente cuando generamos claves (Digamos RSA 2048) necesitamos verdaderos números aleatorios. No queremos que sean determinados (Basados en fechas/horas o en algún ID) La criptografía depende de una buena aleatoriedad.

En linux se tiene lo que se denomina "pool entropy" o conjunto de entropía, un conjunto de bits que se supone que son verdaderamente aleatorios. Su agrupación se alimenta de varias fuentes consideradas algo aleatorias (Movimientos del mouse, eventos de red, pulsaciones de teclas, etc.) Para visualizar el contenido de los bits de entropía disponibles en linux puede ejecutar el comando:
Código: Bash
  1. cat /proc/sys/kernel/random/entropy_avail

El apoyo de Twitter

Todos sabemos que twitter es una gran fuente de ruido: bots rusos, amenzas a Trump, interacciones humanas, tráfico de malware, etc. Y todo esto es una gran fuente de entropía ya que es bastante aleatoria y tiene un contenido impredecible. La impredecibilidad es una propiedad importante en la seguridad, un adversario no puede conocer o adivinar la salida del generador de números aleatorios.

Pero twitter es público, ¿Es cripográficamente seguro?
Es cierto que el ruido de twitter es público, pero es impredecible. Usar twitter como fuente única de entropía sería un error fatal ¡Pero su sistema lo sabe y ya cuenta con herramientas de entropía! Se pueden mezclar esas fuentes y crear un conjunto bastante caótico con muy buenas propiedades. ¡Mientras más, mejor!

Obteniendo Tweets aleatorios
Twitter permite a cualquier persona extraer una pequeña muestra aleatoria de todos los tweets que se publican en tiempo real, utilizando su API.

Ruido de Twitter(tweets concatenados y codificados en UTF-8)

Se muestran 500KB de tweets sin procesar, la entropía es alrededor de 6.5519 bits por byte (El verdadero valor aleatorio llegaría a 8 ) No es completamente al azar, pero nos acercamos.
Ahora podríamos comprimir los bytes hasta tener una alta entropía (hashing) o mezclarlo con otro generador de números aleatorios.

Ruido luego de mezclar con un generador de números pseudoaleatorios

Esta fuente de entropía no es verdaderamente aleatoria, pues, podemos suponer que habrán muchos hastags (#), links populares y emojis que serán repetitivos dañando nuestro objetivo.
En conclusión: No uses esto para operaciones criptográficas sensibles.


Fuente: https://blog.0day.rocks/introducing-the-first-ever-shitpost-based-rng-c5422bfce257

9
Dudas y pedidos generales / Re:Duda sobre los metadatos
« en: Enero 26, 2018, 06:06:32 pm »
Hola!

Modification: Contiene la última vez que el archivo fue cambiado
Access: La última vez que el archivo fue examinado
inode/change: La última vez que el nodo índice fue cambiado.

10
Visual Basic / Re:Herramienta de conversión
« en: Enero 25, 2018, 06:45:01 pm »
¡Muy buen aporte! Me gustaría que tuviese conversor a binario, y también un espacio para realizar operaciones lógicas(or and xor) Vendría bien para mi backpack de reversing tools :D

11
¡Muy bueno! Investigué un poco más y no solo estos paneles están al descubierto. También tienen muchos agujeros de seguridad (por ejemplo xss)


http://195.178.176.163/command.php?command=Help&target=%22%3E%3Cscript%3Ealert(%27xss%27)%3C/script%3E

y también otras brechas interesantes que encontré en exploitdb  ::)

¡Saludos!

12
Dudas y pedidos generales / Re:Canal recomendado para Phishing?
« en: Enero 14, 2018, 02:54:33 pm »
Hace unas semanas me topé con el blog de 'Ultimate Hackers' y tienen algunos tutoriales/artículos sobre phishing bastante creativos https://teamultimate.in/tag/phishing/

13
Off Topic / Re:Compartan sus trolleadas.
« en: Enero 08, 2018, 01:21:11 pm »

14
Python / Re:¿Hacking con API's o redes sociales?
« en: Diciembre 20, 2017, 10:51:36 pm »
¡Muy bueno! También me he encontrado API's no tan permisivas como deseo, pero con ingenio y algo de web scrapping se pueden tener resultados como estos. Saludos!

15
Seguridad / [Guía] Privacidad online
« en: Diciembre 10, 2017, 01:43:53 pm »

El tema de navegar en internet no es seguro ni mucho menos anónimo. Y el número de servicios que ofrecen seguridad para nuestra información crece a la par con el número de compañías dispuestas a vender información acerca de nuestra actividad online. La privacidad es un derecho no una característica de marketing para convencernos de descargar algún software o cambiarnos de proveedor de mail.

Por eso les mostraré las técnicas que yo uso y recomiendo para navegar de forma segura y un poco más tranquila. Es  mejor paranoia que passwords débiles ;D

Utiliza VPN


Por simplifcar, las redes VPN (Red Privada Virtual) añaden una red privada sobre la red principal del usuario. Básicamente, una red VPN toma tu conexión, la encripta y la envía a otro servidor. En lugar de que tu ordenador acuda directamente a una web, primero accede a un servidor intermedio y, desde ahí, entra a la web destino. Al utilizar una VPN solo será visible tu conexión con el servidor intermedio, y este será el que de verdad ejecute las peticiones
Usar un proveedor VPN NO TE HACE ANÓNIMO. Pero te ofrece una mejor privacidad, recuerdo que no utilizamos estas herramientas para actividades ilegales  ;)

* Recomendación de paga (124.95 €) Perfect-Privacy
* Recomendacion gratuita  ProtonVPN



Utiliza un navegador confiable


El navegador web es la puerta desde la que accedemos a internet. Hoy en día le dedicamos mucho tiempo a este programa, tanto en la computadora como en tu tablet o smartphone, ya que desde él tenemos acceso al correo, a redes sociales, a portales de noticias. Por eso es importante que el software que utlicemos se preocupe por nuestra privacidad
Empecemos por desinstalar Chrome. Punto. Por la simple razón de que la gran 'G' siempre está mirando.

Existen mejores alternativas para navegar y además open-source.
Recomiendo:
*TOR Browser
*Brave
*UR Browser
*Firefox ♥



Encripta tus correos

¿Cómo me aseguro de que nadie que no esté autorizado/a pueda leer el contenido de mis correos electrónicos? Necesitas enviar información privada y delicada a tus colegas o amigos/as, pero sabes que una vez que los mensajes salen de tu computador, viajan por una tierra de nadie donde pierdes el control.

Existen muchas maneras de encriptar y firmar tus correos Gmail, Outlook , etc.
Aún este tipo de proveedores no son muy conocidos por ser conscientes en cuanto a privacidad. Aunque siempre puedes usar herramientas de encriptación de terceros, es recomendado cambiar el servicio.

* Recomendación de paga ($ 59.95)   SmartMail
* Recomendacion gratuita ProtonMail  | MailFence



Haz búsquedas seguras


Ya dijimos que la gran 'G' siempre está mirando, por lo tanto seguir usando Google como buscador en este punto sería...
Recomiendo como alternativa
Searx.me es open-source y puede llegar a ser acertado como otros buscadores populares, ya que se encarga de recopilar los resultados que arrojan otros motores de búsqueda conocidos. Sin publicidad, sin guardar tus búsquedas, sin rastreos. Otras buena alternativa es Qwant



Tu móvil también...


Ya se ha hablado (y no muy bien) acerca de los servicios de mensajería instantánea y la privacidad. ¿Estará espiando alguien nuestros mensajes? No podemos saberlo, pero tenemos la posibilidad de escoger otra app más segura que WhatsApp, por ejemplo.

Por suerte existen algunas alternativas recomendadas, entre ellas:

*Wire
*Wickr Me (Como Mr.Robot  8))

Ambas disponible para Android y iOs



Allá arriba también deberías...


Con el paso de los años la nube se ha vuelto imprescindible para todo, porque nos permite alojar archivos sin que ocupen espacio físico dentro de nuestros dispositivos. Pero es importante centrarse siempre en la seguridad.
Asegura tus servicios de almacenamiento en la nube. Dropbox, Google Drive, OneDrive, iCloud. Todos han sido criticados y atacados por presumir sobre seguridad pero husmear y filtrar bastante. Como alternativa:

*Recomendación de paga ($10) Seafile
*Recomendación gratuita Wuala



Encripta tus archivos locales

El principal método para que mantener a salvo tus datos e información privada es evitar que nadie tenga acceso.
Siempre es bueno mantener los archivos de tu pc encriptados, esta práctica cada vez es más popular entre los usuarios promedio y así debería continuar. Para mi la mejor herramienta y bastante popular en lo que hace es VeraCrypt aunque también es recomendada Peazip



No olvides tus contraseñas

De nada sirve haber seguido todos los pasos y tener una contraseña "1234" Creo que todos conocemos las características de una buena contraseña (numeros,mayusc,signos,etc...) Un truco que yo utilizo para 'cifrar' mis contraseñas y recordarlas siempre, es tomar una frase que recuerdes y colocar cada letra inicial de ella, respetando signos de puntuación
Ejemplo: "En el club de la pelea, luchas contra TODAS las cosas que odias en esta vida." = "Eecdlp,lcTlcqoeev."

Otra técnica que también he utilizado es escribir mi contraseña y en vez de presionar la tecla, moverme una tecla arriba y a la izquierda.
Ejemplo: pass= "undercode" | arriba y a la izquierda= "7he34d9e3"

Luego de muchas contraseñas quizá necesites un administrador para ellas. Recomiendo utilizar Master Password , no se necesita sincronización ni acceso a internet. Lo que promete mantener tus contraseñas completamente seguras.



Recursos recomendados sobre privacidad

*Reddit-Privacy
*Alternative-to
*charlas-ciberseguras(español)
*charlas-ciberseguras(ingles)



Bueno undercoders esto es todo, espero que haya sido útil  ;D

Citar
Argumentar que no te importa la privacidad porque no tienes nada que esconder, no es diferente a argumentar que no te importa el derecho a la libertad de expresión porque no tienes nada que decir

-E. Snowden

16
Hola undercoders! Hice un pequeño script para comprobar si uno o más correos han sido filtrados en algún momento. El script utiliza la API de Hacked-emails para confirmar. Solo necesitamos un archivo emails.txt con todos los correos a testear para empezar a correr el script y luego si lo deseamos exportar todos los positivos a otro archivo



Código: [Seleccionar]
if((test-path "emails.txt") -eq $false){
    write-error "Archivo 'emails.txt' faltante"
}

$emails = get-content emails.txt
$ouput

foreach($mail in $emails){
   
   if($mail -notmatch '[a-zA-Z0-9.-][email protected]\w+\.\w+'){continue}

   $test = invoke-webrequest "https://hacked-emails.com/api?q=$mail"
   if($test.content -match '(:0)(?=,"data")'){
       write-host "Ninguna entrada para $mail !" -foreground green
       write-host "`n============================`n"
    }else{
if($test.content -match '(\d+)(?=,"data")'){}
$matches = ([regex]'https:[a-zA-Z\\\/-]+\.com\\\/leak\\\/[a-zA-Z0-9-.]+').Matches($test.content);

write-host "[x]" $matches.Count " Entradas para $mail [+] `n" -foreground red
    $output += @("$mail`n")
foreach($link in $matches){
    write-host "E-mail filtrado en:" ($link -replace "\\") -foreground red
    $output += @($link -replace "\\")
}
$output += @("`n==========================`n")
write-host "`n============================`n"
    }

}

write-host "Exportar e-mails filtrados? S/N > " -NoNewLine
   $x=read-host

    if($x -eq 's' -or $x -eq 'S'){set-content "output.txt" $output}

17
Otros lenguajes / Sintaxis de Cramel en VIM
« en: Noviembre 05, 2017, 12:12:40 am »
Que tal colegas. Hice mi primer VIM-plugin y lo orienté hacia Cramel y su amigable sintaxis  ;D



Para instalarlo

Puedes clonar el repositorio https://github.com/Andergedon/cramel-vim y usar tu Plug-Installer favorito, recomiendo utilizar Vim-Plug o Vundle

Código: [Seleccionar]
Plug 'https://github.com/Andergedon/cramel-vim'
Si prefieres instalarlo manualmente copia los archivos .vim dentro del repositorio: 
y pegalos en su respectiva carpeta dentro de tu ...\Vim\VimFiles



Y listo! Reiniciamos nuestro vim y ya podremos visualizar el coloreado en la sintaxis de Cramel.


BONUS

Para opciones de completación de código yo utilizo VimCompletesMe Que se encarga de completar las palabras dentro de la sesión de VIM abierta



Trataré de seguir actualizando el plugin, nos vemos undercoders.

18
Off Topic / Re:Comparte el mejor Screenshot de tu ESCRITORIO
« en: Octubre 26, 2017, 10:20:01 pm »
trato de mantenerlo así  8)


19
Dudas y pedidos generales / Re:Continuar aprendiendo?
« en: Septiembre 21, 2017, 12:21:42 pm »
Citar
Yo me leería algo de Deitel.
Ya leí la 9na edición de c++ y otros títulos también bastante buenos.

Citar
Que tal las librerías típicas de sockets, WINApis, etc, etc

La verdad he estado posponiendo el meterme con ese tipo de librerías, no se si aún tenga que aprender cosas que me sirvan de base para buenos códigos utilizando librerías externas.

20
Dudas y pedidos generales / [SOLUCIONADO] Continuar aprendiendo?
« en: Septiembre 20, 2017, 10:27:16 pm »
Que tal amigos, tengo un tiempo aprendiendo c++ y ya manejo desde lo fundamental hasta la POO, tengo buen planteamiento algorítmico, conozco las estructuras de datos, etc. 
¿Con que temas creen que debería continuar para seguir aprendiendo en la programación?

Páginas: [1] 2 3 4