[APORTES][SHELL SCRIPT][ACTUALIZADO] Interfaz CLI + Scripts varios.

Iniciado por W17CH3R, 30 Marzo 2020, 13:06 PM

0 Miembros y 1 Visitante están viendo este tema.

W17CH3R

BIENVENIDOS/AS

Bienvenidos/as a mi post, en esta ocasión, voy a compartir un mega-aporte con un total de 6 Scripts (de momento...), acerca de una interfaz de línea de comandos CLI para un uso más cómodo para terminal en Linux/Unix funciona para múltiples distros, comparto un pdf con toda la documentación de este aporte.


ACTUALIZADO 6/04/2020 - 14:49

Enlace del PDF:

https://mega.nz/file/bY0zTABL#4npi0ZDrlr0NgLUjjezm4Oc5W5rxMRgZl71j-Mh7OGo

AVISO: Este aporte, esta creado para fines educativos, no me hago responsable del mal uso de uno de los Scripts que sera mencionado más adelante, el resto de Scripts son de protección excepto 1, que no lo es, solo lo que comparto es una interfaz de línea de comandos en terminal.

Comenzaremos en esta ocasión con un script, que proporcionara una interfaz intuitiva para el uso de los siguientes Scripts que posteare, para el buen funcionamiento de las herramientas, instalaremos un package que servirá para transformar en Art ASCII nuestro mensaje en echo, para ello abriremos un terminal con permisos de root o de lo contrario con sudo:



Código (terminal) [Seleccionar]
sudo apt install toilet

Con toilet para quien no lo conozca, podemos crear una apariencia personalizada de nuestra fuente, por ejemplo si ejecutamos:

Código (terminal) [Seleccionar]
toilet --filter border "Hola Mundo"

Una vez que ejecutamos en el terminal, este sería el resultado:



Tiene muchas otras apariencias, si realizamos toilet - -metal "Hola Mundo" podremos comprobar como realiza un degradado azulado metálico en el texto.




Una vez aclarado el comando anterior, vamos a seguir con el primer código que tenía realizado desde hace 1 año, y lo estado ampliando poco a poco con cada vez más funciones, y que a día de hoy seguiré ampliando el contenido, realizado con un case y los scripts que sera necesario tenerlos todos en el mismo directorio para su funcionamiento.

Código (bash) [Seleccionar]

# -------------------------- SCRIPT BY W17CH3R -------------------------
# IMPORTANTE LEER ESTO: Para que funcione este Script, es realmente necesario
# instalar el package de toilet cuya funcion es Art ASCCI Text,
# con apt install toilet -y
# y también tener todos los scripts en el mismo direcotorio,
# incluyendo este script.
# Ya que tiene accesos directos a los otros scripts y al estar en otras rutas
# podría  de dejar de funcionar el Script.
# ----------------------------------------------------------------------
# Funcionamiento: Este Script es una mera interfaz en el terminal,
# con accessos directos a los Scripts que se ven su codigo de ejecucion
# al final de este Script.
# ----------------------------------------------------------------------
# AVISO: No me hago responsable del uso de mis scripts, estos scripts
# estan desarrollados para uso educativo, no me hago responsable.
# ----------------------------------------------------------------------
#./sl -ahl
clear
toilet --filter border "Bienvenido";
read -p "Pulse [ENTER] para comenzar o de lo contrario [ctrl + c] para cancelar ...";
clear
echo "----------------------------------------------------------------------";
toilet --metal "Opciones";
echo "----------------------------------------------------------------------";
echo "1. Información del sistema";
echo "2. Busqueda de intrusos y virus";
echo "3. Antirootkit";
echo "4. Vaciar papelera";
echo "5. Ver en tiempo real los puertos salientes";
echo "6. Herramienta de Explotación";
echo "7. Salir completamente del programa";
echo -n "Eliga una opcion entre [1 - 6] o para cancelar use atajo Ctrl + C ";
read opcion
case $opcion in
1) . screen.sh;;
2) . analisis.sh;;
3) . antirootkit.sh;;
4) . clean.sh;;
5) . network.sh;;
6) . seguridad.sh;;
7)toilet --metal "Hasta luego";;
#exit 0;;
*)echo "Solamente opciones del 1 al 6";;
esac

# by W17CH3R


Y este es el resultado que veríamos en el terminal una vez que ejecutemos el Script.

Primera captura:




Podemos cancelar el Script, con el atajo mencionado de ctrl + c, pero si decidimos continuar una vez que pulsemos Enter, el resultado final sería lo que os muestro en la segunda captura:






Mostrar en terminal tus SPECS

En esta ocasión, lo que necesitaremos será instalar lo siguiente:
Código (terminal) [Seleccionar]
sudo apt install screenfetch

Su función es mostrarnos las especificaciones de nuestro equipo, y el script facilitara con su interfaz sin necesidad de ejecutar el comando de screenfetch, el resultado al ejecutar el Script, sería el siguiente:



Una vez pulsemos Enter, nos mostrara la siguiente imagen:



Para realizar el siguiente Script, habría que escribir el siguiente codigo en nuestro editor favorito:

Código (bash) [Seleccionar]

# ---------------- Script by W17CH3R ----------------------
# ---------------- SPECS: apt install screenfetch -y ------------
# Este script muestra las especificaciones de tu equipo
clear
toilet --filter border "TUS SPECS   :)";
echo
read -p "Pulse [Enter] para continuar";
clear
screenfetch
read -p "Pulse [Enter] para regresar al menu anterior";
. programa.sh


Como se puede observar, no es muy extenso, y por lo tanto es suficientemente sencillo de realizar, resulta bastante util para saber todas las especificaciones técnicas de nuestro equipo o máquina virtual que estemos utilizando como es en este caso.





Analizar tu red de intrusos y calcular el espacio utilizado

A continuación, vamos a proceder con otro Script, la interfaz también es sencilla y facil de realizar, en esta ocasión no será necesario instalar ningún package para las funciones necesarias, ya que cualquier distro de Linux en su libería contiene los comandos que se necesitara en los dos siguientes Scripts, que se trata de ver quien esta conectado en nuestra red, un netstat que nos mostrara tanto los puertos, una tabla de ruta, conexiones entrantes y salientes, y para finalizar el Script va ligado con el siguiente que tratara de hacernos un calculo de espacio utilizado y libre del sistema con fdisk -l, en un principio lo tenía con el calculo humano de df -h como gusteis podeís modificarlo a vuestro gusto.

Adelante con el Script


Aquí tenéis compartido el siguiente código del script que consiste en 2 partes, por un lado escaneara en busca de intrusos y el estado de nuestra red, y por otro lado calculara el espacio utilizado y libre de todas nuestras particiones.


El código es el siguiente:

Código (bash) [Seleccionar]

#----------------------- SCRIPT BY W17CH3R -----------------------------------
# Mis Scripts son de uso educativo, se permite su modifacion con el objetivo de mejorarlo ---------------------
# Script en bucle para analizar intrusos
clear
toilet --filter border "Intrusos";
read -r -p "Pulse enter para continuar y para cancelar ctrl + c: ";
clear
# Analizara en un bucle que dura 3 segundos, en busca de intrusos, de no encontrarlos lo comunicara
for bucle in 3 2 1;
do
w , who >> ~/Escritorio/log_intrusos.txt
echo -e "\e[32mBuscando intrusos\e[0m";
netstat -a , r , i, s >> ~/Escritorio/log_scan_red.txt
echo -e "\e[34mFinalizando en: $bucle\e[0m";
sleep 2
done
toilet --filter border "Tu Espacio usado";
echo -e "\e[35mSea creado dos logs en el Escritorio con los resultados\e[0m";
read -r -p "Pulse [ENTER] para calcular el espacio utilizado y libre";
clear
for bucle in root home bin etc vaar raiz directorios programas_instalados documentos archivos;
do
#df -h ,
fdisk -l >> ~/Escritorio/log_espacio_libre_y_utilizado.txt
echo -e "\e[32mCalculando espacio libre\e[0m";
echo -e "\e[34mEscaneando en: $bucle\e[0m";
sleep 2
done
toilet --metal "Finalizado";
echo -e "\e[31mSea creado dos logs con el informe siguiente en /Escritorio\e[0m";
echo -e "\e[33mEsta libre de intrusos y vigile el espacio usado\e[0m";
read -p "Pulse [Enter] para comenzar analizar rootkits";
. antirootkit.sh



Y al ejecutar el script, el resultado que veremos en el terminal, sería el siguiente:

Captura nada más ejecutar el script:



Al continuar pulsando Enter la imagen que nos mostrara será en esta siguiente captura:



Cómo podemos observar, realiza un calculo primero de intrusos, y aunque nos creara un log del informe de los intrusos, por otro lado también creara en el Escritorio (o la ruta que querías especificar en el [i[Script[/i]) un log sobre el estado de nuestra red.



Cuando pulsemos Enter tal como nos indica en el mensaje inferior, pasara automáticamente a realizarnos un calculo en general de nuestro disco duro, para indicarnos cuanto espacio utilizado y libre tenemos disponible en todas nuestras particiones, obviamente a vuestro gusto quedará si deseais que os realize un análisis por Tree o por vista humana con df -h.

El resultado de la segunda parte y final de este Script, sería el siguiente en nuestro terminal:



Igual como ocurrió en la primera parte de este Script, también nos creara un log, pero en esta ocasión acerca de nuestro espacio disponible:



Y el resultado final de los logs de este segundo Script finaliza aquí, continuare con otra interfaz enfocada a un anti-rootkit, saludos.

Capturas de los dos logs de intrusos y estado de la red:





Captura de espacio libre y usado:






Busqueda de rootkits y malware en el sistema

En esta tercera parte del port, vamos a realizar un Script gráfico pero en esta ocasión si necesitaremos descargar un buen antirookit, (en caso de tenerlo instalado id directamente al código)

Código (terminal) [Seleccionar]
sudo apt install rkhunter -y

Aceptamos las configuraciones previas a nuestro gusto en la instalación, y una vez instalado realizamos un
Código (terminal) [Seleccionar]
sudo apt update -y && apt upgrade -y

Ya que tenemos instalado completamente rkhunter, vamos a proceder con el código que vemos a continuación:

Código (bash) [Seleccionar]

# ----------------------- SCRIPT BY W17CH3R --------------------------
# ----------------------- --- SPECS -------------------------------
#------------------------ apt install rkhunter -y --------------
# ----------------------- apt update -y -------------------------
# Este Script ejecutara un anti-rootkit con el comando rkhunter
clear
toilet --filter border "AntiRootkit";
read -p "Pulse [ENTER] para continuar o ctrl + C para cancelar";
#Aqui daría comienzo el bucle con for y el programa
for count in 3 2 1;
do
clear
toilet --metal "$count";
sleep 1
done
clear
echo -e "\e[31mVerificando binarios sensibles en el sistema\e[0m";
sudo rkhunter --propupd >> ~/Escritorio/Total_de_bins_sensibles_del_sistema.txt
echo -e "\e[36mSea creado un log en su Escritorio, lea su contenido\e[0m";
echo
read -p "Pulse [ENTER] para ejecutar rkhunter en busca de rootkits y creara también 1 log en el Escritorio.";
toilet --metal "LET'S GO";
sleep 1
clear
echo -e "\e[30mEjecutandose Analisis completo...\e[0m";
sleep 1
clear
echo
read -p "Pulse [ENTER] para continuar, tenga paciencia puede tardar unos minutos...";
clear
echo -e "\e[31mRkhunter esta trabajando en el log en ~/Escritorio, puede tardar unos minutos, tenga paciencia...\e[0m";
sudo rkhunter -c -sk --logfile ~/Escritorio/informe_antirootkit-$(date +%Y-%m-%d).log
clear
echo -e "\e[34mSea creado un informe en el directorio /Escritorio... \e[0m";
read -p "Pulse [Enter] para regresar al Menu Principal: ";
sleep 2
. programa.sh


Capturas nada más ejecutar el Script:



Captura, de cuando tecleemos Enter y vez finalice la verificación de binarios sensibles:



Como podemos observar, el script lo que realizara es una verificación para ver cuantos binarios sensibles tenemos en el sistema y nos creara un log en el Escritorio, tal como se ve en la siguiente imagen:



A continuación nos avisara, de que el análisis completo, puede tardar unos minutos, y teniendo en cuenta que al mismo tiempo que analizara el sistema ira creando el log al mismo tiempo, es posible que el log creado en esta ocasión necesite permisos root para poderlo leer (por seguridad...)



Una vez pulsemos Enter, dará comienzo en análisis anti-rootkits, tal como se podrá apreciar desde el terminal:



Captura al finalizar:



Cuando finalice el análisis, le avisara en un mensaje del terminal que a concluido, y le informara de la creación del log en el ~/Escritorio, no obstante necesitara permisos elevados de administrador, para poder leer el log creado, además incluido en el código que se añada la fecha exacta de la creación del log.






Vaciar Papelera, Cache y eliminar Archivos Temporales


Esta ocasión resultara sencillo de realizar, no sera necesario instalar nada para el funcionamiento de este Script. El Script resultara muy útil si lo combinamos con el Script anterior de ver nuestro almacenamiento libre y usado, con esto quiero decir que se tratara de un Script, que no solo vaciara nuestra papelera, si no que vaciara nuestra cache y eliminara nuestros archivos temporales.

Aquí está el código

Código (bash) [Seleccionar]

# ----------------------------------------------------------------------
# Script para limpiar la papelera de Linux
# -----------------------------------------------------------------------
# También vacia la caché y limpia los archivos temporales
# ----------------------------------------------------------------------
# Nota: También incluye una interfaz CLI  para una comoda utilización
clear
toilet --filter border "Cleanner";
read -p "Pulsa [ENTER] para continuar o ctrl + C para cancelar";
# Aquí daría comienzo el script
for count in 3 2 1;
do
toilet --metal "$count";
sleep 1
clear
done
for count_2 in cleanner_to trash cache temps_files;
do
toilet --filter border "$count_2";
sleep 2
done
clear
echo -e "\e[31mVaciando la papelera del sistema\e[0m";
rm -rf ~/home/usuario/.local/share/Trash/*
echo -e "\e[36mLa papelera sea vaciado con exito\e[0m";
echo -e "\e[32mSe Vaciara el cache y archivos temporales, su contraseña para continuar\e[0m";
echo -e "\e[36mEn caso de solicitarle la contraseña, sera necesario para continuar...\e[0m";
sudo apt clean
echo -e "\e[35mEl cache se limpio completamente\e[0m";
echo -e "\e[33mBorrando archivos temporales tanto visibles como ocutlos\e[0m";
rm -vfr /tmp/* >/dev/null 2>&1 && rm -vfr /var/tmp/* >/dev/null 2>&1
echo -e "\e[36mSea limpiado por completo los archivos temporales\e[0m";
echo
read -p "Pulse [Enter] Para finalizar y regresar al menu principal";
clear
. programa.sh

# Autor by W17CH3R


Cómo se puede observar en el código, es probable que nos solicite permisos root, así que no sea de extrañar que nos pida confirmar contraseña para continuar a la hora de vaciar nuestra cache por seguridad.

Primera captura al ejecutar el Script:



Como se puede observar, siempre los Scripts nos preguntara si deseamos continuar, de ahí el read -p, ya que considero que es importante una pausa para saber bien si es lo que deseamos o no realizar.

Una vez confirmamos con Enter, veremos una secuencia en Art ASCII indicandonos que realizara y veremos en pantalla que limpiara para la papelera, la caché, y los archivos temporales.



Una vez finalice, nos indicara los resultados en el terminal, tal como se observa en la siguiente captura:



Cómo bien mencione anteriormente, y se lee en la cuarta línea, es posible que nos solicite la contraseña para continuar en caso de no tener permisos elevados.




   

Ver Puertos de salida

En el siguiente Script, realizaremos un nmap para ver los puertos de salida de nuestro host local,  no obstante sera obligatorio tener los permisos root, como en su mayoría de los Script compartidos anteriormente, ya que por temas de seguridad y no sean ejecutados por usuarios no autorizados.

Comenzaremos con el siguiente código:

Código (bash) [Seleccionar]

# ------------------------ Puertos de salida ---------------------------
# El funcionamiento de este Script, se basa en realizar una busqueda
# acerca de los puertos de salida, se creara un log, y necesitara permisos elevados
# de root, para poderse ejecutar correctamente.
# ----------------------------------------------------------------------
clear
toilet --metal "PORTS   OUTPUT";
echo -e "\e[31mSe necesitara ser root para ejecutarlo\e[0m";
read -p "Pulse [ENTER] para continuar";
clear
for var in  5 4 3 2 1;
do

nmap -sT -O localhost >> ~/Escritorio/log_puertos_salida.txt

echo -e "\e[31mrealizando busqueda en bucle en $var segundos\e[0m";
sleep 1
done
clear
echo -e "\e[35mSea creado un log en su Escritorio\e[0m";
echo -e "\e[36mfinalizado\e[0m";
echo
read -p "Pulse [ENTER] para ejecutar el analizador de red";
. while.sh

# by W17CH3R


Como podemos observar en el código, no es muy extenso a diferencia de algunos Scripts anteriores,  pero no deja de no ser menos importante para observar en nuestro paper el informe de los puertos de salida de nuestro host local o máquina virtual que estemos utilizando.

Aquí está el resultado, una vez lo ejecutemos, o seleccionemos desde nuestro Script principal:



*En caso de que no tener permisos, esta siguiente captura es lo que veremos a continuación:



Por lo contrario, al poseer los permisos de Root, podrá ejecutarse el Script sin ningún problema alguno, tal como vemos en la captura previa:



Una vez finalice los 5 segundos del análisis, concluirá creando un log en la ruta de su Escritorio que podrá leerlo con los permisos de root, tal como vemos en la siguiente captura:



El resultado final, podremos leer nuestro log.txt con los permisos de root, tal como vemos en la siguiente captura:



Captura del log abierto:







Herramienta de Explotación

Para finalizar este post, llegamos al CLI de Metasploit Framework, como bien dije al principio del post no enseñare a utilizarlo, ya como mencione en el  post;



Con fines educativos con lo que me refiero es a utilizarlo con cabeza ( con ética) solo comparto como realizar una interfaz por línea de comandos, CLI.

No obstante para quien saber que es y tenga curiosidad, en el enlace tenéis la información:

https://es.wikipedia.org/wiki/Metasploit

Bueno comenzamos en esta parte del post, con el siguiente código:

Código (bash) [Seleccionar]

# ---- AVISO: Este Script esta desarrollado para fines educativos con lo que
# ---- me refiero a utilizarlo con cabeza (ética) no me hago responsable
# ---- del mal uso de esté Script. -----------------------------------------
# ---- Solo comparto como realizar una interfaz por línea de comandos-------
# ---- Aquí comienza el Script: --------------------------------------------
clear
toilet --filter border "METASPLOIT";
read -p "Pulse [ENTER] para ejecutar o ctrl + C para cancelar";
clear

for program in 3 2 1;
do
clear
toilet --metal "$program";
sleep 1
done
clear
msfconsole

# by W17CHER



Una vez lo ejecutemos, aparecerá lo que vemos en a continuación:



Comenzara el bucle for indicando los tres segundos para dar comienzo el Script, tal como vemos en la siguiente captura:



Automáticamente como vemos a continuación, como vemos en la imagen inferior, comenzara a ejecutarse con éxito la herramienta de explotación.



El resultado final, una vez finalice la ejecución de la herramienta, podemos observar que no hubo ningún problema de ejecución, y el codigo era sencillo, sin embargo tengo que añadir, que en este Script a diferencia del resto, no podremos volver al menu principal, la sencilla razón es, que al ejecutar el Script hace que ejecutes Metasploit como un acceso directo, por ello una vez que se ejecute Metasploit, para poder salir, obviamente solo podremos ejecutar el comando exit, para salir de la herramienta, y regresaremos con normalidad pero no al menu principal del Script como ocurría con los anteriores.







Gracias por leer el post
La importancia de los Datos es la importancia de los Recuerdos.

.:Xx4NG3LxX:.

Excelente aportazo, gracias!

Waiting the PDF...

Jajajaja, gracias una vez más, se nota que te costó... ><
"Quizá Batch no sea un lenguaje de programación, pero no obstante deja de ser útil. Asi que no anden diciendo «Que ganas de perder el tiempo»"



W17CH3R

Cita de: .:Xx4NG3LxX:. en 30 Marzo 2020, 18:51 PM
Excelente aportazo, gracias!

Waiting the PDF...

Jajajaja, gracias una vez más, se nota que te costó... ><

Aun queda bastante para que pueda publicar el pdf, ya que la idea es publicarlo cuando lo tenga al 100% completo el post, y me falta un 65% para completar el post, y entonces exportare del writer el pdf, y lo publicaré en la misma caberera del post.
La importancia de los Datos es la importancia de los Recuerdos.

engel lex

#3
vengo para aclarar algo... esto no es lo que se le conoce como interfaz gráfica (GUI), esto se llama interfaz de linea de comandos (CLI), la gran diferencia entre ambas es lo que se le denomina "manipulación directa por medio de iconos" (iconos se refiere a los gráficos visuales, dibujos identificables con acciones), en contraposición a las interfaces basadas en texto que requieren de comandos escritos o navegación por textos
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

W17CH3R

Cita de: engel lex en 31 Marzo 2020, 05:47 AM
vengo para aclarar algo... esto no es lo que se le conoce como interfaz gráfica (GUI), esto se llama interfaz de linea de comandos (CLI), la gran diferencia entre ambas es lo que se le denomina "manipulación directa por medio de iconos" (iconos se refiere a los gráficos visuales, dibujos identificables con acciones), en contraposición a las interfaces basadas en texto que requieren de comandos escritos o navegación por textos

Lo se, vaya... no había caído en la posibilidad que podría generar alguna confusión para quien entre al post y se pueda confundir,  voy a corregirlo para no generar ninguna confusión y entren pensando que con "interfaz gráfica" sea GUI, cuando en realidad me estoy refiriendo a una CLI, gracias por recordarmelo.

Voy a modificarlo de inmediato.
La importancia de los Datos es la importancia de los Recuerdos.

engel lex

justamente fue por la razón que entré XD se que linux es posible, pero no es tan simple
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

W17CH3R

Cita de: engel lex en 31 Marzo 2020, 12:22 PM
justamente fue por la razón que entré XD se que linux es posible, pero no es tan simple

Te lo agradezco, ya que al estar concentrado en el aporte, al parecer tuve ese desliz de no aclarar que se trata de un CLI y no una GUI, como bien dijo un profesor de redes que tuve;


  • Las personas somos monotarea y no multitarea
Cuanta razón tenía, así me a pasado en el post :xD
La importancia de los Datos es la importancia de los Recuerdos.

reconFito

No entiendo ni madres de lo que veo pero se ve genial.
;-) ;-)
Sigue así compañero

W17CH3R

Cita de: reconFito en  1 Abril 2020, 06:06 AM
No entiendo ni madres de lo que veo pero se ve genial.
;-) ;-)
Sigue así compañero


Muchas gracias  :)

Intento en lo posible en añadir mi granito de arena para ayudar y aportar lo mejor que pueda, saludos.
La importancia de los Datos es la importancia de los Recuerdos.