Skip to content
56K

56K

La web de Fanta

Menu
  • Unix/Linux
  • Cacharreo
  • Games
  • Streaming
  • Notas
  • /dev/null
Menu

sshMonitor – Monitorizar las conexiones SSH

Posted on 02/02/202216/01/2023 by fanta

Este script lo he realizado como prueba de concepto para monitorizar conexiones SSH. Esto puede utilizarse en una máquina de salto y capturar por ejemplo lo que la gente escribe en una conexión ssh abierta desde allí.

No obstante mi finalidad no es la de capturar las contraseñas que la gente escribe para conectar a otras máquinas y si la de simplemente analizar las conexiones si es preciso.

El script se puede obtener de mi repositorio: git.56k.es/fanta/sshMonitor

$ git clone http://git.56k.es/fanta/sshMonitor

 

He montado de prueba una máquina llamada backups en la red local. Con la IP 192.168.1.177 . He abierto 2 conexiones ssh a la máquina desde mi ordenador portátil.

Posteriormente he ejecutado sshMonitor para ir visualizando lo que allí ocurre.

 

 

Te saltarán las opciones y entonces por ejemplo escribes la 2 y pulsas enter.

El log por defecto de la sessión se irá guardando en /tmp/sshMonitor-*

Si el usuario mete la password se irá viendo cada uno de los caracteres de esta por separado. Se podría realizar un reader de ese log para que fuese algo más humano de ver.
Si salta dese allí a otra máquina también veremos lo que teclea.

 

No obstante funciona.

 

Aquí puede verse el código:

#!/usr/bin/env bash

fileSSHConnections="/tmp/.sshActualConnections"
logDir="/tmp/"

main(){
  checkRoot
  haveProgram strace wget lsof awk
  printActualSSHConnections
  monitoringSocket
}

checkRoot(){
  if [ "$(whoami)" != "root" ]; then echo -e "\e[31m\e[1m[NOT OK]\e[0m Run it with root please" && exit ; fi
}

haveProgram(){
  for i in $@; do type $i &> /dev/null ; if [ $? == 1 ]; then echo "$i not found. Please install it"; fi ; done
}

printActualSSHConnections(){
  lsof -c ssh 2>/dev/null | grep IPv4 | awk '{ print $2,$9 }' | cat -n | tee $fileSSHConnections
}

monitoringSocket(){
  if [ $(wc -l $fileSSHConnections | cut -d " " -f 1) != 0 ];then
    read -p "Enter option number: " nOption
    pidSSH=$(cat $fileSSHConnections | awk '{ print $2 }' | head -n $nOption | tail -n 1)
    strace -p $pidSSH | tee -a $logDir/sshMonitor-$pidSSH.log
  else
    echo "No ssh connection found"
  fi
}

main

 

Un saludo cordial.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Comentarios recientes

  • fanta en i3wm en el ordenador del trabajo con 3 pantallas
  • Punk en i3wm en el ordenador del trabajo con 3 pantallas
  • Twicsy en Eliminar kernels viejos en redhat y liberar espacio en /boot
  • fanta en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • Jorge en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • fanta en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • Camilo en Capturar el audio de Firefox en archivos ogg en GNU+Linux
  • eovoltio en Mastodon.madrid se apaga el 12 de Octubre
  • fanta en Time Machine – Las Nuevas Aventuras de la Maquina del Tiempo sobre GNU+Linux
  • Alberto Salvia Novella en Time Machine – Las Nuevas Aventuras de la Maquina del Tiempo sobre GNU+Linux
©2023 56K | Built using WordPress and Responsive Blogily theme by Superb