El éxito que ha tenido WhatsApp
desde sus comienzos ha sido realmente arrollador y como ya hemos visto
en el pasado han forzado a las operadoras a modificar sus planes de y a lanzar su propia aplicación
de mensajería para hacer frente a este fenómeno y no quedar fuera de
el. Así las cosas no iba a pasar mucho tiempo hasta que llegara un aplicación de para poder enviar mensajes a WhatsApp desde el , para poder suplir el faltante el whatsapp que tal como sus desarrolladores han avisado no va a ser resuelto.
Por
ello conocimos hace un mes atrás a WebsApp y hoy queremos presentar
otra alternativa llamada ThatsaPC, que se encuentra en fase alpha y con
la cual podemos enviar mensajes a WhatsApp desde el escritorio de Windows y Linux, y que ya está disponible en 32 bits en el caso del sistema operativo de , y en 32 y 64 bits en el sistema operativo del pingüino.
A
pesar de lo reciente de su lanzamiento parece que los desarrolladores
están muy activos y no sólo están agregando características de forma
continua sino que prometen unas cuantas más para el mediano plazo, y
entre lo que si tenemos disponible en este momento podemos mencionar su
sencilla y rápida interfaz que nos permite conectarnos y añadir ,
el soporte para modificar nuestro nick y estado, la posibilidad de
guardar los contactos en el ordenador para no tener que importarlos cada
vez que nos conectamos y el hecho de poder mantener conversaciones
individuales.
Otro aspecto interesante de ThatsaPC es que se trata de una aplicación portable por lo cual simplemente debemos descargarla desde su sitio y ejecutarla sin proceso de alguno, y al momento de iniciar la sesión debemos seleccionar la opción donde indicamos que ya contamos con una cuenta de WhatsApp,
tras lo cual debemos añadir nuestro nombre, el prefijo telefónico de
nuestro país, el número de teléfono y el IMEI de nuestro teléfono, esto
último imprescindible para que WhatsApp se crea que estamos utilizando su desde un teléfono.
En el siguiente vídeo podemos apreciar un poco el funcionamiento general de ThatsaPC:
Demostracion:
ThatsaPC es una
herramienta que te permite usar tu cuenta de Whatsapp con el ordenador
(sin necesidad de utilizar un emulador de Android). Usted puede conseguir enlaces de descarga aquí: http://adf.ly/CEdzJ Sin embargo, leer primero: En este momento no hay más que Windows versión 64 cargado. Vamos a escribir una entrada cada vez que pongamos el resto.
Usuarios de Windows
Versión de Windows está empaquetado en un archivo zip. Es necesario extraer la carpeta que está dentro con el fin de usarlo. Entonces usted necesita para ejecutar Login.exe.
Es posible que usted necesita para instalar Windows VC ++ Redist:
Si usted no sabe que para descargar, obtener VSU1 \ vcredist_x86.exe si se utiliza 32 bits, o VSU1 \ vcredist_x64.exe si se utiliza 64 bits.
Los usuarios de Linux
Versión para Linux no está lleno. Usted tiene python y código javascript. Así, los usuarios necesitarán:
Haber instalado Python2.7
Haber instalado PyQt para Python2.7
Y entonces usted puede hacer:
Ejecutar "python Login.py" en un terminal.
Programa de paquete utilizando la escritura setup.py.
Características
Las características de la herramienta:
Conversación individuo regular.
Interfaz rápida para conectar y agregar contactos.
El uso de nick.
Cuentas Android funciona como un encanto.
compatibilidad cuenta iPhone.
Y estamos trabajando para agregar:
Estabilidad
Apoyo charset Unicode completo.
Enviar imágenes, videos, sonidos y lugares.
Añadir opciones.
Traducción de idiomas.
Mantener contactos en el ordenador para evitar la necesidad de añadir cada vez.
Editar y borrar información de contactos.
Visualice imágenes, videos, y lugares.
Errores
Si observa un error, puede escribir un tema en bitbucket .
La herramienta utiliza su número de teléfono y el IMEI conectarse. Así advertimos: PROTEGEMOS TU IMEI y Mac. UN ROBO IMEI O MAC SIGNIFICA cuenta robada WHATSAPP.
hoy
hablaremos sobre cómo crear un bot, para comenzar tenemos que
preguntarnos ¿qué es un bot? Un bot es para nuestro propósito un
software/script que vamos a programar para que realice una tarea de
forma automática, por ejemplo: tienes miles de archivos y deseas
cambiarle el nombre a todos ellos, tardarías una ETERNIDAD y es aquí
donde el bot entra y te ahorra tiempo/dinero.
Como ya tenemos claro que es un bot, utilizaremos un lenguaje/software llamado Autoit y te aseguro que es de lo más sencillo de aprender, lo mejor de todo, es gratuito!
Empecemos
Primero que todo debes descargar el Autoit, desde esta url lo podras hacer:
Ya tenemos todo listo, continuemos: Abrimos el editor “SciTE”
Este será nuestro entorno de trabajo, paso a detallar las opciones importantes:
File : Crear nuevos scripts, guardar, abrir.
Tools: Herramientas complementarias (Ahora lo veremos mas a fondo)
Help: Tu amigo inseparable, tiene la documentación de cada función, condición y variables de sistema.
Vamos a crear nuestro primer bot, algo sencillo para ir aprendiendo,
abriremos un block de notas y crearemos una lista de números de 1 a 100
en un txt.
Objetivos:
Con este bot aprenderás a mandar eventos del teclado y ejecutar programas del pc.
Comencemos Primero que todo abres el editor y guardas el script con algún nombre que haga referencia (Ej: Lista numeros).
Codigo detallado:
Apunte: Cualquier duda que tengas, recuerda que en ayuda (F1) encontraras toda la documentación:
¿Que tal vamos? ¿Muy fácil cierto?
A lo que vinimos, haremos un bot que nos tome un dato de una página web y nos lo guarde en un archivo de texto.
La página para el ejemplo es:
tomaremos
la cotización del euro en dólares, en un intervalo de tiempo que se
repetirá y guardara el valor del euro, lo guardaremos en un archivo de
texto.
Objetivos:
Con este bot aprenderás a consultar páginas web, extraer datos y guardarlos.
Comencemos:
Abres el editor y guardas el nuevo script.
#include -> Liberia para obtener archivos de internet, en este caso el código fuente de la url
Ejemplo:
Entramos a la página web
Copiamos el valor del euro: 1,2283 y le damos ver código fuente a la página (Ctrl + U) , buscamos ese valor:
Con esto ya tenemos nuestro segundo Bot terminado, en la próxima crearemos un bot mas complicado que automatizará alguna tarea relacionada con el SEO
¿Quién
no fantaseó alguna vez con tener miles y miles de ordenadores bajo su
poder? No me refiero con el objetivo de desatar un caos o incluso robar
masivamente información, sino para simplemente, tener el profundo
sentimiento de "control". O hablando desde el otro "lado", a quién no se
le ocurrió la idea de desbaratar botnets alguna vez?, cazarlas por el
simple hecho de ver que ahí adentro, descubrir el número de máquinas
que cayeron bajo su poder? y quizá hasta tomar el control?. Bueno, este
post va dedicado a esta última fantasía.
¿Cómo encontramos una botnet?
Vamos a lo primero, para
cazar una botnet hay que localizarla, existen diversos servicios online
que se dedican al traceo de estas, en los que se publican el path del
C&C, información de los ejecutables usados para la infección, el
tipo de botnet, etc.
Cybercrime-tracker
La
cual mantiene archivado una gran diversidad de malware como la botnet
Blackhole, Citadel, Zeus, Pony, IceIX, VertexNet, entre otras.
Abuse.ch
Otra de gran utilidad es abuse.ch contando con un tracker para la Zeus, Feodo, Palevo y la SpyEye.
Posiblemente existan otras listas de botnets, pero por el momento son las únicas que conozco.
También
podemos hacer uso de algún motor de búsqueda como Google. Implementando
uno que otro google dork llevándonos por las estructura del panel que
deseemos localizar, por ejemplo, la ruta del C&C por defecto en la
botnet Zeus es el siguiente: /cp.php?m=login.
Código: Text
inurl:/cp.php?m=login
De
ahí en mas podríamos ir variando, ya que probablemente el responsable
haya hecho algunas modificaciones al script, incluso cambiado el nombre,
en fin todo va en el ensayo y error. Tal vez nos topemos con alguna que
otra semi camuflada.
Código: Text
intext:"Remember (MD5 cookies)" ext:php
Hosting1
Partamos por el punto de que una botnet puede estar montada en un:
-Servicio de hosting free
-Servicio de hosting pago
-Hosting hacked
-VPS
En mi caso, se hallaba alojada en lo que parecía ser un servicio de hosting pago, llamémoslo hosting1.com.
A
simple vista, me atrevía a decir que el encargado del malware obtuvo
acceso ilícito, por lo que lo mas seguro es que la web presentara alguna
que otra vulnerabilidad que me permitiese la entrada, si es que no fue
parcheada por el atacante, para alejar a los curiosos.
Realmente aún quedaba alguna que otra brecha.
Fijémonos, a ver que hay detrás del panel.
Un
upload bastante jodido y otra SQLI. Luego de realizar varios intentos
decidí dejar de lado la subida de ficheros, pero si podía inyectar
comandos en la db, solo tenía que buscar la tabla con las credenciales
de la botnet.
Por desgracia, no había rastros de la Zeus
Lo mas probable es que corra con un usuario diferente.
Después de navegar por la aplicación, me encontré con la zona de acceso a clientes.
Evidentemente
trabajaba con otro user ya que las credenciales del formulario no
estaban en la anterior base de datos. Así que me registré para ponerme
en busca de alguna inyección u otra abertura que me de acceso.
Al
rato, terminé por darme por vencido y decidí ir por otra vía, enumerar
los dominios en el servidor, tratar de acceder mediante alguno de ellos y
así escalar hasta hosting1.com.
Evilnet
El proveedor de hosting,
llamémoslo "Evilnet", por motivos obvios no voy a dar nombres. Evilnet
ofrece servicio de hosting, diseño y programación web, varios dominios
que pertenecen a Evilnet, usan la misma estructura de CMS, el mismo con
el que corre nuestro hosting1.com por acá tenemos otro similar y por
supuesto junto con la misma SQLI
Si no leíste el artículo "Engañando al WAF con XMP" podes ingresar al siguiente link donde detallo como conseguí acceso al servidor mediante hosting2.com.
Siguiendo con el apartado, cabe destacar algo interesante que me encontré mediante la recolección de información:
-Ambas webs usan el mismo password en el formulario de administración.
-Ambas webs cuentan con el mismo password en la base de datos (el mismo que usan para acceder al panel, no es joda!).
Parece
que el administrador de Evilnet no tiene buena memoria y prefiere usar
la misma llave para todo, podría apostar que este "descuido" por
llamarlo de manera elegante, se repite en los demás dominios bajo su
autoría. Con este criterio quién sabe, si llegara a probar, hasta me
podría cargar el facebook y el twitter del admin o hasta la sesión ssh
personal, espero no llegarle hasta abajo de la cama jeje!.
Pero
en fin, ya estaba dentro de hosting2.com, solo me faltaba escalar hasta
hosting1.com. Lo primero que hice fue tratar de leer el fichero de
configuración de la botnet que se encuentra en el directorio base
/system/config.php, mediante la creación de un enlace simbólico, pero
para mi mala suerte no funciono. Entonces recordé el descuido del
administrador e intente ingresar con la llave maestra por así decirlo,
mediante otro usuario en la db que pertenezca a hosting1.com, por lo que
veía, la estrutura de nombres tiene la siguiente regla:
"Nombre que hace referencia al dominio"_XXXXXXX
Ya había intentado loguearme como hosting1_xxxxxxx, entonces fui probando diversas combinaciones de usuarios.
Hasta que logré ingresar como hosting1 solamente, el cual tenia acceso a todas las dbs dentro de la aplicación.
Ya habiendo identificado la preciada base de datos.
Restaba consultar las credenciales en la tabla cp_users y rogar obtener el hash md5 en claro.
Afortunadamente el hashe del admin estaba presente en md5online.
La Zeus
Una
vez dentro terminé un poco decepcionado al respecto, creí que podía
encontrarme con una mayor cantidad de bots, y para peor no había uno
solo en pie.
Aunque contaba con una respetable cantidad de reportes sobre credenciales pop3 y http.
Una cosa interesante, es que el reports path de la botnet apuntaba al home de hosting1.
Por lo tanto podía navegar libremente a través del file browser y descargar ficheros a diestra y siniestra.
De
no haber sido así, solo tenia que ir a options y editar el path con
tantos directorios transversales sean necesarios para llegar al home.
Lfi significa local file include
y lo que hacemos en este tipo de vulnerabilidad es pedir un archivo
local por medio de la url, esto se causa por que muchos programadores no
filtran sus codigos, un ejemplo comun puede llegar a ser:
Código: PHP
<?php
$pagina=$_GET['pagina'];
include($pagina);
?>
Este codigo lo que hace es mostrar la pagina que incluyamos por ejemplo: menu.php index.php etc...
Sabiendo eso podemos formar un dork, por ejemplo: inurl: index.php?pagina=menu.php
inurl significa buscar en url lo siguiente ...
puedes usar google como bing o diferentes buscadores muchos arrojan diferentes resultados....
Ahora sabemos que la LFI es causada por no filtrar bien las funciones include() require() require_once() include_once()
Como explotarla
entonces como ejemplo tenemos algo asi:
pagina.com/index.php?pagina=publications.php
con esto muchas veces podemos saber que la variable pagina es vulnerable debido a que esta incluyendo un archivo sin filtrarlo .... que pasa si ponemos lo siguiente:
como no es encontrada el archivo requerido arroja un error, muchas veces no lo arroja esto es por que muchos tienen desactivado error reporting pero igual es probable poder inyectar este tipo de vulnerabilidad
bueno siguiendo con el ejemplo anterior nos arrojaria algo asi:
como vemos tenemos dos directorios antes del archivo index.php es decir /homes-www/mercadier si recuerdas en linux puedes hacer cd .. y recorres un directorio atras... pues es lo que haremos escalar directorios para atras....
digamos quiero coger el archivo /etc/passwd de esa web seria: ../../etc/passwd es decir me recorro las dos carpetas despues de index y luego entro a /etc/passwd querdaria asi:
pagina.com/index.php?pagina=../../etc/passwd
esto me mostraria el archivo passwd que contiene los usuarios,ids,grupo,terminales,contraseña
muchas veces la contraseña lo tapa con x entonces para ello sabemos que se encuntran en un archivo llamado shadow que se encuentra en el mismo directorio /etc/shadow muchas veces ese archivo no se puede acceder a el por que es necesario privilegios de usuario como root por ejemplo....
tambien podemos escalar cosas diferentes como son... /proc/cpuinfo que nos ofrece informacion del cpu o los logs
de apache para eso hay que ver los directorios puede haber muchos
dependiendo del servidor como este instalado por ejemplo en mi caso
tengo xampp en localhost seria de esta manera:
You are not allowed to view links.
Register or Login
Ahora
como ves no se encuentra muchas cosas pero estos los son los accesos a
las webs, imaginate que en los logs se muestre algo como la cabecera user-agent es decir el navegador entonces podriamos inyectar con un sniffer de http como live https headers o tamper data e infectar los logs por ejemplo, modificar esa cabecera user-agent y poner un codigo php para mostrar un phpinfo() y veriamos en los logs la informacion del php
esto seria infectar los logs.... tambien se pueden infectar logs por
/proc/self/environ pero muchas veces no se muestra... veremos como
infectar logs para darnos RCE (remote code execution )
Infectando logs por medio de /proc/self/fd
Bueno
este es un nuevo agregado a este tutorial que es infectar logs por
medio de /proc/self/fd y asi obtener RCE (remote command execution)
Para empezar utilizare You are not allowed to view links.
Register or Login
por que simplemente me carga mas rapido que el firefox que como son
archivos largos puede llegar a colgarse.... empecemos haciendo una
peticion del archivo /proc/self/environ a una web vulnerable a LFI...
bueno entonces intentemos con algo como /proc/self/cmdline o /proc/self/stat o /proc/self/status
con cmdline devuelve la linea de comandos si hago una poc(proof of concept) en mi pc sale bash y si hago una poc(proff of concept) en la web sale php con esto sabemos que su cmdline en este caso es el proceso php
stat y status nos devuelve el estado con su pid en el primer caso y en el segundo con size y mas informacion adicional
Ahora el /proc/self/fd
= Este es un subdirectorio que contiene una entrada para cada archivo
que tiene abierto el proceso, nombrada con el descriptor de fichero, y
que es un enlace simbólico al archivo real. Por lo tanto, 0 es la
entrada estándar, salida estándar 1, 2 error estándar, etc
para mas informacion sobre You are not allowed to view links.
Register or Login
bueno en este caso queremos encontrar la entrada del archivo del proceso abierto y como no sabemos usaremos bruteforce intentando hasta encontrar el archivo correcto....
Les dejo una wordlist aunque ustedes pueden crear una para esto o para cualquier cosa como blindsqli, bruteforce http etc burp es una gran suite
Código: You are not allowed to view links.
Register or Login
no
enseñare como configurar el burp suite ya que solo es una proxy y la
puedes configurar desde el navegador para atrapar la web pero si
explicare como hacer para atacar con el wordlist
tenemos nuestro Host a vulnerable a LFI y lo mandamos a intruder seria algo asi: Click derecho o action > Send to intruder
en intruder seleccionamos positions y damos un clear$ que seria limpiar y luego agregamos (add$) la ruta a escalar, ejemplo:
luego configuramos el payload agregamos el archivo wordlist desde load... y lo seleccionamos lo tienen arriba solo lo guardan como txt xD, despues de eso en el menu de arriba clickeamos intruder>start attack
buscamos una entrada relacionada con la web que estamos y dice que tenemos un error al pedir el archivo favicon.ico
entonces en repeater hago una peticion a /favicon.ico y pongo una cabecera referer inyectando el codigo malicioso por ejemplo
Código: PHP
<?php You are not allowed to view links.
Register or Login('ls');?>
por ultimo hacemos de nuevo una peticion al archivo donde encontramos esos registros.... /proc/self/fd/numeroqueobtuvistes
Nuestro amigo Psymera comenta algo de un codigo con un path que seria asi:
Código: PHP
<?php
$pagina=$_GET['pagina'];
include("upload/$pagina");
?>
donde
upload seria nuestra carpeta aunque seria lo mismo nos saldria un error
con lo cual tendriamos que escalar las carpetas del servidor incluyendo
tambien la carpeta upload.... un ejemplo de este error seria:
por lo que solo seria escalar dos carpetas mas despues del FPD (Full path disclousure) que seria: ../../../../../../etc/passwd y entonces:
Este tipo de webs lo tome de un exploit de un cms que encontro Daniel Godoy...
tambien
podriamos con php://filter hacer un enlace para obtener un recurso por
ejemplo obtener el index de una web por medio de un LFI, por ejemplo:
esto nos mostraria el codigo del archivo index.php convertido a base64 con lo cual solo lo decodificariamos....
y con seguir buscando dentro del codigo podiamos encontrar un require() include() o un SQLI u otras vulnerabilidades, en este caso fue la base de datos
Otro ejemplo es usar data:// para obtener datos por medio de cabeceras de content-type por ejemplo seria hacer esto:
ese base64 es un archivo php con una funcion system() pidiendo todo lo que se inque con cmd
por ultimo tambien puedes usar php://input para ingresar una shell en los datos por post pidiendo asi comandos
esa herramienta de arriba es la hackbar puedes descargar un manual en este mismo You are not allowed to view links.
Register or Login
Incluso por You are not allowed to view links.
Register or Login puedes obtener un lfi:
Evasion de WAF's
Muchas veces los WAF (Web Application Firewall)
detectan una ataque LFI respondiendo con otro tipo de codigo de estado
que el normal -->200 OK como puede ser 403 Forbidden,501 No
implementado,etc
Para ello usamos NULL BYTES que seria algo vacio esta encodeado en urlencode, en este caso no tengo casos de ejemplo pero puedo mostrar como se conformaria este tipo de urls:
pagina.com/lfi.php?pagina=/etc/passwd
Otra manera seria encodear la barra (/) que seria %2F
pagina.com/lfi.php?pagina=%2Fetc%2Fpasswd
bueno
estas solo son dos si saben mas avisen y agrego, para estos casos es
solo imaginar como evadir el firewall de una aplicacion web
Como evitar un ataque LFI
podriamos
usar condicionales en el codigo.... en este caso un switch dependiendo
del numero de pagina incluidas y por defecto incluir una pagina si se
pide otra cosa....
Código: PHP
<?php
$pagina=$_GET['pagina'];
switch($pagina){
case'about.php':
include('about.php');
break;
default:
include('index.php');
break;
?>
Correciones
Bueno antes que nada me he equivocado en algunas partes y quiero compartilas y agradecer a Dedalo, Psymera ,Q3rv0 si alguien encuentra otro error en el tuto diganme y le hago un edit o si se saben otro metodo aparte de este tambien diganlo y le agregamos ....
Correcion 1: En el codigo de solucion tenia un include todavia en ves del switch <-- corregido Correcion 2:
Para el Wrapper php://input es necesario tener activado
allow_url_include = On esto se puede modificar desde php.ini o .htaccess Correcion 3:
Para el Wrapper data:// es necesario tener activado allow_url_include y
allow_url_fopen por lo que no serviria en este caso de LFI sino seria
para RFI Correcion 4: El codigo que comenta Psymera
que es para RFI pero tambien viene en muchos LFI por lo que solamente
incluire un pequeño ejemplo de lo que el comenta en el tuto
Bueno
he terminado espero que les haya gustado he mostrado algunos metodos
con los que pudiesen obtener datos importantes o obtener incluso una
shell... salu2