HSC
Network Security Consulting Agency Since 1989 - Specialized in Unix, Windows, TCP/IP and Internet
Text mode: access to the page content
Hervé Schauer Consultants
You are here: Home > Resources > Tips > Secret SSH
Go to: HSC Trainings
Télécharger le catalogue des formations
Search:  
Version française
   Services   
o Skills & Expertise
o Consulting
o ISO 27001 services
o Audit & Assessment
o Penetration tests
o Vunerability assessment (TSAR)
o Forensics
o ARJEL
o Training courses
o E-learning
   Conferences   
o Agenda
o Past events
o Tutorials
   Resources   
o Thematic index
o Tips
o Lectures
o Courses
o Articles
o Tools (download)
o Vulnerability watch
   Company   
o Hervé Schauer
o Team
o Job opportunities
o Credentials
o History
o Partnerships
o Associations
   Press and
 communication
 
 
o HSC Newsletter
o Bulletin juridique HSC
o Press review
o Press releases
o Publications
   Contacts   
o How to reach us
o Specific inquiries
o Directions to our office
o Hotels near our office
|>|Secret SSH  

by Stéphane Aubert (20/04/2001)



#!/usr/local/bin/perl 
<>

SecretSSH est un petit programme en perl qui permet juste de montrer la 
faisabilité d'une idée amusante : cacher sshd et l'activer à distance à 
la demande.

Il permet de répondre à ma manière aux personnes qui ont peur du 
débordement de buffer ou de la trappe dans un serveur SSH ;-)

L'activation de sshd se fait sur la réception d'un paquet TCP possédant des
caractéristiques particulières. Ainsi, le démon sshd n'est pas toujours en 
écoute sur le réseau et à distance il est impossible (?) de le trouver.

Il est possible d'envisager un tel programme pour administrer une machine
aidant à la détection d'intrusion avec SNORT par exemple. Il est alors 
possible de fermer tous les services sur cette machine même le port 22/tcp.

Le programme suivant n'est qu'une illustration permettant de montrer ce qui 
est faisable mais il est fourni sans aucune garantie. 

Pour tester secretssh (fourni ci-dessous) :

  . Sur le serveur (en tant que root) : ./secretssh.pl

  . Sur le client (en tant que root) : ./secretssh.pl [login@]server

secretssh nécessite perl RawIP qui peut être téléchargé à l'adresse :
http://quake.skif.net/RawIP/files/Net-RawIP-0.09c.tar.gz

Dans la configuration initiale, le client envoi un paquet SYN tcp sur le 
port 80 du serveur avec le champ id, l'adresse ip source, le port source et 
le numéro de séquence fixés à certaines valeurs. A la réception de ce paquet 
le serveur lance sshd en mode debug sur le port 2222/tcp. Le client se connecte 
ensuite via ssh sur le port 2222/tcp du serveur. Ce port n'est accessible sur 
le serveur que pour une seule connexion ssh.

Stephane

#------------------------------------------------------------------------------
#!/usr/local/bin/perl 
# secretssh - sa/hsc

# RawIP homepage: http://quake.skif.net/RawIP/files/Net-RawIP-0.09c.tar.gz
use Net::RawIP;
## CONF (you should edit all these params) #####
my $key_port_dst = '80';
my $key_ip_src   = '192.168.66.66';
my $key_port_src = '1666';
my $key_ip_id    = '666';
my $key_tcp_seq  = '66666666';
my $verbose      = 0;
my $bindport     = 2222;
my $SSH          = '/usr/local/bin/ssh';
my $SSHD         = '/usr/local/sbin/sshd';
## MAIN ########################################
print " --== Secret SSH - sa/hsc ==--\n";
$a = new Net::RawIP;
my $remote = shift || "";
if( $remote=~/\S/ ) { #client 
  my $login="";
  if($remote=~/^(\S+@)(\S+)$/) {$login=$1; $remote=$2;}
  $a->set({ip=>{id=>$key_ip_id,saddr=>$key_ip_src,daddr =>$remote},
           tcp=>{dest=>$key_port_dst,source=>$key_port_src,syn=>1,seq=>$key_tcp_seq}});
  $a->send;
  $verbose ? exec "$SSH", '-v', '-p', "$bindport", "${login}${remote}"
           : exec "$SSH", '-p', "$bindport", "${login}${remote}";
} 
else { #server
  my $dev = Net::RawIP::lookupdev($tout);
  print "Server using $dev and port $bindport ...\n" if($verbose);
  $pcap=$a->pcapinit($dev,"tcp and src host $key_ip_src and src port $key_port_src".
                   " and ip[4:2] = $key_ip_id and ip[24:4] = $key_tcp_seq",1500,30);
  loop $pcap,-1,\&Bindsshd,\@a;
}
## FUNC #########################################
sub Bindsshd { system "$SSHD", '-d', '-p', "$bindport"; }
## EOF ##########################################
#------------------------------------------------------------------------------



Last modified on 30 Mars 2006 at 19:26:53 CET - webmaster@hsc.fr
Mentions légales - Information on this server - © 1989-2013 Hervé Schauer Consultants