Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - DtxdF

#581
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Podrías probar:

UsbDumper: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
UsbDumper (fork para Gnu/Linux y Windows): You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login!

~ DtxdF
#582
Quizá te sirva: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#583
Hola @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Lo que menciona @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login te puede ser mucha utilidad. Acá te paso una página que contiene una lista completa de proxies: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Sin embargo, siguiendo un hilo anterior (a pesar que no me gusta mencionarlos en otros) creo que lo que deseas es cambiar la IP de origen en el encabezado IP, eso sí, para generar "tráfico falso" necesitarás usar el mismo protocolo en su capa correspondiente (Aplicación, en caso de ser HTTP, o sea para una página web, en la mayoría de casos).

Claro, que para ello tendrías que usar SOCKETS_RAW e ir construyendo todo poco a poco.

Nota: Por cierto, ten cuidado si vas a transmitir información sensible y no encriptada en un proxy no conocido o manejado por ti mismo.

~ DtxdF
#584
Tal vez: base85

~ DtxdF
#585
Muchas gracias por leer el artículo, es un placer.

@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Sin dudarlo, también le echaré un vistazo  ;D

~ DtxdF
#586
Está muy bueno, y me gustó saber que no era el único que sabía que Steve Wosniak hizo grandes aportes y es un excelente hacker  ;D

~ DtxdF
#587
C / C++ / Re:Imprimir tabla ordenada C++ [Codigo]
Junio 24, 2020, 09:13:34 PM
Muy bueno @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, me encantó la menera en la que se ordenan las tablas, sigue así y muchas gracias por tu colaboración  ;D

~ DtxdF
#588
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Hay muchas alternativas además de ngrok, si deseas puedes leer este artículo: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Incluso muchas más de las que se mencionan en el artículo y también puedes hacerlo tú mismo  ;D.

~ DtxdF
#589
Un administrador de sistema es el responsable de garantizar tanto el tiempo de actividad, rendimiento, uso de recursos, seguridad, monitorizar, configurar, implementar y muchas otras cosas en un sistema informático. El administrador se debería encargar de todo tipo de seguridad, tanto externa como interna, pero, ¿qué pasaría si el olvidadizo administrador no implementa un sistema de control contra dispositivos USB?...

Esquema SMS

Según la querida wikipedia:

El servicio de mensajes cortos o servicio de mensajes simples, más conocido como SMS (por las siglas del inglés Short Message Service), es un servicio disponible en los teléfonos móviles que permite el envío de mensajes cortos (con un límite de caracteres) entre teléfonos móviles. Por lo general las operadoras telefónicas cobran por cada mensaje enviado.

Una vez aclarado qué son los famosos SMS, imaginemos una situación en la que el administrador de sistemas protege con ímpetu cada sistema informático presente en una empresa, desde base de datos, hasta servidores convencionales, desde implementar sistemas de detección de intrusos hasta empezar a crear listas blancas, vigilar la tasa de paquetes y mucho más, pero... ¿qué pasaría si se le olvidara implementar un control contra dispositivos USB?.

Herramientas

Ya se ha aclarado que usaremos SMS para enviar comandos y recibir los resultados, pero ahora necesitamos saber las herramientas:


  • Un modem-USB (en mi caso un Bam Movistar): Será el que deberá estar conectado a la máquina víctima
  • Un sencillo programilla que está hecho para esta prueba de concepto: Será el encargado de enviar y recibir datos por medio del dispositivo

Descarga, configuración y compilación

Código: bash
git clone https://github.com/DtxdF/Spactra.git
cd Spactra
$EDITOR headers/info.h


Una vez descargado y hemos abierto el fichero de configuración, lo primordial sería solo configurar el número de teléfono del atacante (o sea el nuestro 3:D), aunque por los demás datos necesitaríamos hacer una investigación de acuerdo a las limitaciones de nuestro modem:

nvim headers/info.h

Una vez ajustado el número de teléfono del atacante, se debe pasar a la compilación:

Código: bash
gcc -O2 -o spactra spactra.c modem_control.c system_control.c -ggdb -Wall -pipe


Prueba de concepto

Ahora lo que el atacante debería hacer es introducir el modem-USB en la máquina que desea comprometer y ejecutar 'spactra', aunque ahí no acaba la cosa.

El puesto de control del atacante debe ser su propio teléfono y la aplicación, una aplicación típica de Android (por ejemplo) donde pueda recibir y enviar mensajes de texto. Pero qué mejor forma de decirlo que con una ilustración:


sudo ./spactra

Centro de mensajes de texto en Android

Ejecutando el comando 'id' remotamente

Notas


  • El programa está hecho para esta prueba de concepto, por lo que puede contener errores, no está hecho para situaciones reales o no mantiene una estabilidad con las respuestas a los comandos AT
  • Todas las pruebas se realizaron en Arch Linux
  • Espero les haya gustado  ;)

Conclusión

Aunque haya sido un artículo corto, espero les haya gustado y para concluir directamente, es recomendable mantener un control sobre los periféricos de nuestros equipos, implementar un pequeño sistema que informe cuando se inserta uno nuevo e inclusive, permitir a determinados usuarios que pertenezcan a un grupo para restringir el mismo uso.

~ DtxdF
#590
La advertencia que se te muestra en el navegador te brinda un indicio para determinar la posible causa. En este caso leyendo un poco la documentación de php y especificamente sobre You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login te proporciona más ayuda.

mysqli_fetch_row(...) retorna NULL en caso de un error o una incongruencia, así que éso es un factor a tener en cuenta para determinar por qué se muestran NULLs en la respuesta misma.

mysqli_fetch_row(...) espera un objeto You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login pero es pasado un dato tipo booleano, se debe a un error de mysqli_query(...). Las posibles causas pueden ser:

* La conexión no se realizó con éxito, puede ser por credenciales inválidas, permisos inconcedidos, entre otros
* Que haya una incongruencia en la tabla, columna o cualquier dato de la base de datos que posiblemente no exista
* Entre otros

Posible solución: Tendrías que realizar una pequeña investigación sobre qué es lo que falta y falla respecto al mismo código, la conexión y los datos que están almacenados en la base de datos, pero lo principal de todo y para que se te facilite aún más tu trabajo es realizar un tratamiento de errores.

Nota: Por favor usar las etiquetas correspondientes para insertar código y dentro de lo posible colocarlo en un mismo comentario

~ DtxdF
#591
Si mi vista no falla en esta ocasión @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, la sintaxis está bien, pero si es un error que te genera en tiempo de ejecución sería primordial que nos lo mostraras para poder ayudarte, cualquier cosa aquí estamos pendientes  :D

~ DtxdF
#592
Hola @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

En el siguiente snippet, en vez de ir así:
Código: php
      return $r;
      self::descuentaCantidad($d[0], 1);


No fuera mejor de esta manera:
Código: php
      self::descuentaCantidad($d[0], 1);
      return $r;


Lo digo porque estarías retornando e impidiendo que ejecutes el método "descuentaCantidad".

También te aconsejo (y esto es un tema de seguridad) que manejes correctamente los datos para evitar una inyección SQL

O si es un error interno (ya sea del servidor, parte del código o de esta clase) haz lo que te indica @d3adly y muestranos directamente el error.

~ DtxdF
#593
Su cuestión puede dejar una respuesta muy incompleta, sería conveniente que dejara más información que puede resultar muy útil.

Arquitectura tanto del procesador como de la distribución (o básicamente de la imagen ISO), el error que le genera, si está en una máquina virtual y lo más vital, una imagen (principalmente).

La información puede servir para despejar dudas, aunque tampoco pueden ser necesarias, lo que si debe tener en consideración es la captura de pantalla en el momento del error.

~ DtxdF
#594
Hola @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

La información que le proporcionó @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login le brinda un camino seguro; también podría usar PHPass (You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login) que es portable, ligero y puede ejecutarse en una amplia variedad de versiones de PHP, aunque ellos recomiendan usar You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login si la versión es mayor o igual que la 5.5.

~ DtxdF
#595
Puede comenzar con:

* Los cursos de Ricado Narvaja
* Aprender C/C++ y ASM
* El blog de una hacker: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login (ella recomienda libros muy buenos)
* Leer nuestra sección de ASM: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Le recomiendo que empiece con OllyDBG y cuando la domine, puede usar alternativas como Ghidra, Radare, IDA. También investigue más los conceptos como Análisis estáticos y dinámicos.

Le deseo lo mejor, porque el universo que se trata de meter... es hermoso  :D

~ DtxdF
#596
CitarHola, disculpa por la ambigüedad soy nuevo en los foros y preguntar no se me da muy bien jeje ;D. Tu pregunta me soluciono el drama por completo, tenia esta duda desde las 9 xD de verdad muchas gracias!!!.

No te preocupes, estamos aquí para aprender y enseñar. Recuerda que lo más recomendable es leer la documentación del programa/lenguaje de programación/etc, en este caso "You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login".

Te deseo lo mejor  ;)

~ DtxdF
#597
Lo que podrías es usar 'include/include_once' o 'require/require_once' pero necesitaría cambiar la extensión del archivo HTML a un PHP.

data.php:
Código: php
<?php
$nombre = "DtxdF";

?>


index.php:
Código: php
<?php
include('data.php');

?>

<html lang="es">
<head>
<title>Test</title>
<meta charset="UTF-8">

</head>
<body>
<h1>Hello <?php print($nombre);?></h1>

</body>

</html>


No es necesario incluir otro PHP en otro, puedes tener las variables en el mismo, pero lo ideal para mejorar las buenas prácticas es separar cada archivo y que haga una tarea de forma independiente.

Por cierto, tu cuestión me causa ambigûedad, ya que no sé si deseas hacer lo que te mostré anteriormente o enviar ese dato a otra página que contiene un PHP, cualquier cosa, hazla saber para ayudarte  ;)

~ DtxdF
#598
Gracias @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login lo que sea para aprender y enseñar  ;D

~ DtxdF
#599
Hola @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login  ;D, muchas gracias a ti por leerlo, y como siempre es un placer compartir estos aportes  ;)

~ DtxdF
#600
Ultra Tesla es un proyecto de código abierto para crear redes distribuidas de servicios fácil, rápido y seguro, usando el poder de computo de múltiples ordenadores. El proyecto permite unificar los distintos servidores en una única interfaz que es proporcionada para el mismo usuario creando una sensación de transparencia.


Mi primer "Hello World":

Ultra Tesla utiliza servicios, que son básicamente mini-programas que se adhieren a la ejecución del servidor, siguiendo una sintaxis en HTTP como la siguiente: <scheme>://<netloc>/<Service>/<Sub-Service>/<...>

Donde <scheme> es 'http' o 'https' según la configuración del servidor; <netloc> es básicamente la dirección del servidor; <Service> es el nombre del servicio, que para este ejemplo será "hello_world" y los demás que son <Sub-Service> y <...> son básicamente otros mini-programas que se tendrán que usar anteponiendo el nombre del servicio anterior, por ejemplo, <Service>/<Sub-Service>/<Sub-Service 1>/<Sub-Service 2>/<...> y así según lo que el administrador haya propuesto.


Código: python
class Handler:
    async def get(self):
    await self.write('Hello World!')


Un ejemplo real con el servicio nombrado como complements/hello_world.py en una URL se vería como lo siguiente (suponiendo que la dirección del servidor sea localhost): You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Contactando al servidor:

Lo siguiente es un script simple para poder contactarse con el servidor y obtener la salida del servicio 'hello_world'

Código: python
import asyncio

from modules.Infrastructure import client

async def main():
    UTeslaClient = client.UTeslaClient('<Nombre de usuario>')
    await UTeslaClient.set_server_key('<Clave pública del servidor>')
    await UTeslaClient.set_user_keys('<Clave pública del usuario>', '<Clave privada del usuario>')

    cmd = {
        'token' : '<Token de acceso>'

    }

    Response = await UTeslaClient.fetch(
        'http://localhost:17000/hello_world',
        cmd,
        method='GET'

    )

    dec_body = UTeslaClient.get_message(Response.body)

    print(dec_body)

if __name__ == '__main__':
    asyncio.run(main())


Deberíamos obtener la siguiente respuesta:

Código: text
Hello World!


Creando un usuario:

El administrador será el encargado de crear los usuarios, aunque perfectamente se podría automatizar como un sistema de registro cualquiera con una interfaz de usuario cualquiera, para este ejemplo se usará el plugin 'add' de UTeslaCLI.

Código: bash
# Para requerir ayuda
./UTeslaCLI add --help
# Creamos el usuario
./UTeslaCLI add -u <Nombre de usuario> -p <Contraseña> -i <Ruta de la clave pública>


Creación del par de claves:

Tanto el servidor como el usuario deben tener sus par de claves para que la comunicación sea satisfactoria. Esto es un proceso inicial que deben hacer antes de hacer cualquier cosa (independientemente de si es un usuario o el administrador del servidor).

En el cliente:

El cliente va a requerir usar el plugin 'generate_keys' para la creación del par de claves

Código: bash
# Para requerir ayuda
./UTeslaCLI generate_keys --help
# Generamos el par de claves
./UTeslaCLI generate_keys -bit_size <Tamaño del par de claves en bits> -out-public-key <Nombre del archivo de la clave pública> -out-private-key <Nombre del archivo de la clave privada>


Si se ejecuta sin parámetros se generará con un tamaño de claves por defecto de 3072 bit's y las claves se mostrarán en la salida. Lo recomendable sería dejar el tamaño de claves pre-determinado y guardar el par de claves en un lugar seguro.

Ahora lo que tendría que hacer el usuario que desea registrarse es enviar la clave pública al administrador del servidor para que éste lo registre satisfactoriamente.


En el servidor:

El proceso para generar el par de claves en el lado del servidor será mucho más simple; se hará automáticamente cuando se ejecute.

Código: bash
./UTesla


El tamaño del par de claves estará definido en UTesla.ini, en la sección 'Crypt Limits' y en la clave 'rsa_key_length'.


Lo recomendable es dejar el tamaño de claves pre-determinado tanto del lado del cliente y del servidor, y se debe tener en cuenta que el tamaño de claves debe ser igual o equivalente en las dos partes.

Creación del token de acceso:

UTesla requiere de un token de acceso para realizar la mayoría de acciones, en este caso el cliente deseoso por obtener su token tiene que usar el plugin 'generate_token'

Código: bash
./UTeslaCLI generate_token <La URL del servidor> -u <El nombre de usuario> -p <La contraseña del usuario> -s <La clave pública del servidor> -i <La clave pública del usuario> -I <La clave privada del usuario>


Una vez hecho lo anterior y la petición haya sido satisfactoria, se mostrará el token de acceso, el cual debe ser almacenado en un lugar seguro para su posterior uso.

Uso de la distribución de servicios:

Supongamos que en el mundo haya dos servidores y los administradores se conozcan, uno de éstos contiene uno o más servicios que otro no tiene, pero un cliente que requiera el uso de ese servicio usando la URL del primer servidor (por ejemplo) no tendría ningún inconveniente, ya que si el servicio deseado no se encuentra en el primer servidor, éste hará una búsqueda en la red y determinará qué servidor es el que contiene ese servicio, posteriormente obtendría una respuesta como si fuera el mismo cliente y luego la redirige hacia el cliente mismo, por lo que todo sería transparente.

Lo anterior es muy útil si se desea separar ciertos servicios entre servidores, por cuestiones económicas, de recursos, una mejoría en la implementación o cualquier cosa que se desee, al fin y al cabo, el usuario es el que lo decide.

Para estos ejemplos el primer servidor será 'You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login' y el segundo 'You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login'. El segundo tiene un servicio llamado 'hello_friend', pero nosotros "los clientes" vamos a creer que el servicio está en el primer servidor, por lo cual lo usaremos para interactuar con éste.


complements/hello_friend.py:
Código: python
class handler:
    async def get(self):
        await self.write('hello friend!')


Por diseño, el administrador del segundo servidor debe crear un usuario como si fuera cualquier otro. Por lo que debe saber cómo crearlo, cosa que ya se hablo en anteriores secciones. En este caso nosotros lo llamaremos 'utesla'.

Además, como ya se aclaró en anteriores secciones, la mayoría de operaciones requieren de un token de acceso, por lo se va a suponer que se tiene hecho este paso para el nuevo usuario utesla.

Una vez aclarado todo lo que se tiene que hacer, vamos un paso más allá y obtengamos los servicios del segundo servidor (You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login) para el primer servidor (You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login)


Código: bash
./UTeslaCLI add_network http://localhost:17001 -s <Clave pública del segundo servidor> -p keys/key.pub -P keys/key.priv -u utesla -t <Token de acceso>


Como esto es un ejemplo, se usan las claves que por defecto se almacenan en la carpeta 'keys' del primer servidor; se usa el usuario 'utesla' que ya debe estar creado en el segundo servidor y nos contactamos con el servidor 'You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login' para obtener sus servicios.

Como paso final, el cliente desea obtener el servicio 'hello_friend' y si todo ha salido bien, obtendrá su posterior salida, aunque lo peculiar de todo esto es que el cliente hará una petición al primer servidor en vez de al segundo.

Lo siguiente será muy parecido a lo que se observó en anteriores secciones, pero lo único que cambió es el nombre del servicio:


Código: python
import asyncio

from modules.Infrastructure import client

async def main():
    UTeslaClient = client.UTeslaClient('<Nombre de usuario>')
    await UTeslaClient.set_server_key('<Clave pública del servidor>')
    await UTeslaClient.set_user_keys('<Clave pública del usuario>', '<Clave privada del usuario>')

    cmd = {
        'token' : '<Token de acceso>'

    }

    Response = await UTeslaClient.fetch(
        'http://localhost:17000/hello_friend',
        cmd,
        method='GET'

    )

    dec_body = UTeslaClient.get_message(Response.body)

    print(dec_body)

if __name__ == '__main__':
    asyncio.run(main())


Deberíamos obtener la siguiente respuesta:

Código: text
Hello Friend!


Como se puede apreciar, es un proceso muy sencillo y lo mejor, es transparente para el usuario.

Sub servicios:

Ya se ha explicado anteriormente qué son los sub servicios, pero no se han explicado cómo crearlos. Al igual que la creación de plugins y servicios es muy sencillo.

Lo primero que hay que hacer es crear un servicio, como 'greeting' (complements/greeting.py).


Código: python
class Handler:
    pass


Se pueden colocar los métodos HTTP si se desea, pero para este caso no lo necesitamos

Ahora para la creación de sub servicios simplemente se crea una carpeta en 'complements' con el mismo nombre del servicio mas '-folder'.


Código: bash
mkdir complements/greeting-folder


En esa carpeta se tienen que agregar más archivos que sigan una estructura similar a la del servicio padre, como por ejemplo:

complements/greeting-folder/hello_friend.py:
Código: python
class Handler:
    async def get(self):
        await self.write('Hello Friend!')


Ahora un cliente puede hacer una petición usando una URL parecida a: <Scheme>://<netloc>/greeting/hello_friend y obtendría:

Código: text
Hello Friend!


Adentro de esa carpeta se crean más carpetas (si se desea), pero lo peculiar de todo esto es que no necesitan usar una sintaxis similar a "<Nombre del servicio>-folder", simplemente creando una carpeta e insertando nuevos servicios que sigan una estructura similar a los anteriores es más que suficiente.

Código: bash
mkdir complements/greeting-folder/farewell


complements/greeting-folder/farewell/bye.py:
Código: python
class Handler:
    async def get(self):
        await self.write('Bye!')


Y el cliente puede usar una estructura similar a: <scheme>://<netloc>/greeting/farewell/bye

Módulos:

Los módulos son muy útiles en caso de que se necesite integrar ficheros de python a los complementos, para que la escritura sea más limpia y siga mejores prácticas.

Para crear un módulo es necesario crear primero un servicio, en este caso 'math' (complements/math.py)


Código: python
class Handler:
    async def post(self):
        sum = self.modules.get('sum')
        num1 = self.get_argument('num1', 0)
        num2 = self.get_argument('num2', 0)

        await self.write('Result:' + str(sum.calculate(num1, num2)))


Ahora se debe crear una carpeta con el nombre del servicio mas '-modules' y ahí se agregan ficheros de python como cualquier otro; siguiendo lo que necesita el código anterior:

complements/math-modules/sum.py:

Código: python
def calculate(x, y):
    return x + y


Eso sería todo, muy sencillo y más modular.

Instalación:

Código: bash
git clone --recursive https://github.com/UltraTesla/UTesla.git
cd UTesla


Arch Linux:

Código: bash
sudo pacman -S mariadb


Debian:

Código: bash
sudo apt-get install mariadb-server libmariadb-dev python3-dev


Red Hat Enterprise Linux 8.2

Código: bash
sudo yum install python3-devel gcc mariadb mariadb-server mariadb-devel


General:

Código: bash
sudo systemctl start mariadb.server
python3 -m pip install -r requirements.txt
./UTesla


Es recomendable configurar primero antes de iniciar UTesla (como el nombre de usuario y la contraseña en MySQL)

Contribuyendo:

Al igual que cada proyecto nuevo creado, soy imperfecto y puedo equivocarme, pero con todo el gusto del mundo aceptaré tu contribución, ya sea por código o no, porque hay que recordar que se trata de abarcar muchos idiomas de distintas regiones del mundo y en éso puede haber múltiples defectos.

Notas:


  • No se ha probado en Windows u otro sistema operativo
  • El proyecto usa un protocolo propio y no uno estándar
  • El proyecto no está definido, de eso se encarga el mismo usuario
  • Todo el proyecto fue probado en la versión 3.8.2 y 3.7.3 de python

~ DtxdF