Accueil / Cybersécurité / Téléphonie / Anubis : cheval de Troie bancaire décortiqué

Anubis : cheval de Troie bancaire décortiqué

Anubis 2 est apparu dans le « paysage des menaces » en 2017 en tant que cheval de Troie bancaire en location (disponible pour les fraudeurs dans des forums undergrounds), l’auteur et créateur du malware se surnomme « maza-in ». Si ce dernier a disparu des radars, son outil malveillant est toujours en action.

En tant que malware bancaire, Anubis incite ses victimes à fournir des informations personnelles et sensibles, telles que les logins bancaires, des codes de sécurité bancaire et même des informations de carte de crédit. Mais ce logiciel malveillant va au-delà des attaques « overlay » bien connues, utilisées par les chevaux de Troie bancaires, car il combine des fonctionnalités avancées telles que le streaming d’écran du téléphoné infecté, l’accès à tous les fichiers à distance, l’enregistrement sonore, le key-logging et même un proxy réseau, ce qui en fait un malware bancaire efficace, mais également un potentiel outil pour espionnage.

D’un point de vue opérationnel, Anubis peut être considéré comme l’un des chevaux de Troie bancaires Android les plus utilisés depuis fin 2017. En ce qui concerne les banques Françaises, les suivantes sont ciblées : Axa, Banque Populaire, BNP Paribas, Boursorama, Caisse d’Épargne, Crédit Agricole, Crédit Mutuel, LCL, Palatine ou encore la Société Générale.

L’auteur a disparu, par son code malveillant

Au cours du premier trimestre 2019, l’auteur et créateur du cheval de Troie a disparu, laissant les clients existants sans assistance ni mises à jour; mais le risque demeure et pourrait même augmenter. Les campagnes d’infection d’Anubis comptent parmi les plus importantes jamais enregistrées pour les malwares bancaires : De nombreuses victimes ne sont pas conscientes du fait que le malware ne se déguise pas comme l’app de la banque, il se déguise principalement en tant qu’application tierce et reste inaperçu par les usagers. Anubis se fait par exemple passer pour : de faux jeux mobiles, de fausses mises à jour de logiciels, de fausses applications postales, de fausses applications Flash Player, de fausses applications utilitaires, de faux navigateurs et même de fausses applications de réseau social et de communication.

Les caractéristiques du cheval de Troie en font une menace importante : Habituellement, les chevaux de Troie bancaires effectuent principalement des attaques de type « overlay » afin de collecter les informations personnelles puis volent les SMS pour acquérir les codes bancaires, mais Anubis va plus loin que ça avec la streaming de l’écran du téléphone infecté, l’accès de fichiers à distance (accès au stockage du téléphone), l’enregistrement sonore, le key-loggign et même un proxy réseau (permettant au criminel de se connecter à la banque via le téléphone infecté).

300 banques dans le monde ciblées

Les campagnes d’infection d’Anubis ciblent en moyenne, plus de 300 banques dans le monde: La liste observée dans les campagnes Anubis contient environ 360 cibles, contenant la plupart des banques les plus grandes et les plus connues dans le monde, mais également des applications de communication et de réseautage social largement utilisées, ce qui signifie que personne n’est vraiment protégée, car même si une victime ne fait pas de banque en ligne le malware abusera d’autres applications (Liste complète de cibles en Annexe du blog).

Les malware qui deviennent orphelins ne sont pas toujours un bon signe : Beaucoup de gens pourraient penser que lorsque le propriétaire / auteur du malware disparaît, les opérations s’arrêtent… Malheureusement, ce n’est pas toujours le cas, surtout pas avec Anubis. Bien que l’acteur ait disparu, le cheval de Troie est toujours actif et le pire est que son code a été divulgué/fuit, ce qui pourrait amener de nombreux autres criminels à utiliser le programme malveillant. Toute l’analyse complète à découvrir sur Threat fabric.

Étiquetté :

Nos partenaires




Actualités du mois

mars 2026
L M M J V S D
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Articles en UNE

Actus zataz



Réseaux sociaux


Liste des sujets


<!-- Cyber'Émission ZATAZ — badge volant (déplaçable) + réduire/fermer -->
<div class="zataz-yt-float" id="zatazYtFloat" role="region" aria-label="Cyber'Émission ZATAZ">
  <div class="zataz-yt-float__bar" id="zatazYtBar">
    <span class="zataz-yt-float__title">Cyber'Émission ZATAZ</span>

    <div class="zataz-yt-float__actions">
      <button type="button" class="zataz-yt-float__btn" id="zatazYtMin" aria-label="Réduire">—</button>
      <button type="button" class="zataz-yt-float__btn zataz-yt-float__btn--close" id="zatazYtClose" aria-label="Fermer">×</button>
    </div>
  </div>

  <a class="zataz-yt-badge" href="https://www.youtube.com/@ZATAZCOM" target="_blank" rel="noopener noreferrer"
     aria-label="Regarder Cyber'Émission ZATAZ sur YouTube (nouvel onglet)">
    <span class="zataz-yt-badge__thumb" aria-hidden="true">
      <span class="zataz-yt-badge__play" aria-hidden="true"></span>
    </span>
  </a>
</div>

<style>
  .zataz-yt-float{
    position:fixed;
    right:18px;
    bottom:18px;
    z-index:99999;
    width:320px;
    max-width:calc(100vw - 36px);
    border-radius:14px;
    overflow:hidden;
    background:linear-gradient(135deg,#111827,#0b1220 55%,#111827);
    border:1px solid rgba(255,255,255,.12);
    box-shadow:0 14px 40px rgba(0,0,0,.35);
    transform:translateZ(0);
    user-select:none;
    touch-action:none; /* drag mobile */
  }

  /* Barre de drag + boutons */
  .zataz-yt-float__bar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:10px 10px 10px 12px;
    font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
    color:#fff;
    background:rgba(0,0,0,.18);
    border-bottom:1px solid rgba(255,255,255,.10);
    cursor:grab;
  }
  .zataz-yt-float__bar:active{ cursor:grabbing; }
  .zataz-yt-float__title{
    font-weight:800;
    letter-spacing:.2px;
    font-size:15px;
    line-height:1;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .zataz-yt-float__actions{ display:flex; gap:8px; }
  .zataz-yt-float__btn{
    appearance:none;
    border:1px solid rgba(255,255,255,.18);
    background:rgba(0,0,0,.28);
    color:#fff;
    width:32px;
    height:28px;
    border-radius:10px;
    font-weight:900;
    line-height:1;
    cursor:pointer;
    display:grid;
    place-items:center;
  }
  .zataz-yt-float__btn:hover{ background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.28); }
  .zataz-yt-float__btn--close:hover{ background:rgba(239,68,68,.22); border-color:rgba(239,68,68,.45); }

  /* Contenu (votre vignette) */
  .zataz-yt-badge{
    display:block;
    text-decoration:none;
    color:#fff;
  }
  .zataz-yt-badge__thumb{
    display:block;
    height:180px;
    background:#0f172a url("https://i.ytimg.com/vi/HUo8dnD6Swk/hqdefault.jpg") center/cover no-repeat;
    position:relative;
  }
  .zataz-yt-badge__play{
    position:absolute;
    left:50%;
    top:50%;
    width:54px;
    height:54px;
    margin:-27px 0 0 -27px;
    border-radius:999px;
    background:rgba(0,0,0,.55);
    border:1px solid rgba(255,255,255,.25);
    box-shadow:0 10px 22px rgba(0,0,0,.35);
  }
  .zataz-yt-badge__play:before{
    content:"";
    position:absolute;
    left:22px;
    top:16px;
    width:0;height:0;
    border-top:11px solid transparent;
    border-bottom:11px solid transparent;
    border-left:16px solid #fff;
  }

  .zataz-yt-float:hover{
    box-shadow:0 18px 55px rgba(0,0,0,.45);
    border-color:rgba(255,255,255,.18);
  }
  .zataz-yt-badge:active{ transform:scale(.99); }

  /* Etat réduit */
  .zataz-yt-float.is-min .zataz-yt-badge{ display:none; }
  .zataz-yt-float.is-min{ width:260px; }

  /* Mobile : plus compact */
  @media (max-width:480px){
    .zataz-yt-float{ width:280px; right:12px; bottom:12px; }
    .zataz-yt-badge__thumb{ height:158px; }
    .zataz-yt-float.is-min{ width:220px; }
  }
</style>

<script>
(() => {
  const box = document.getElementById('zatazYtFloat');
  const bar = document.getElementById('zatazYtBar');
  const btnMin = document.getElementById('zatazYtMin');
  const btnClose = document.getElementById('zatazYtClose');

  if (!box || !bar || !btnMin || !btnClose) return;

  // Réduire / restaurer
  btnMin.addEventListener('click', (e) => {
    e.stopPropagation();
    box.classList.toggle('is-min');
    btnMin.textContent = box.classList.contains('is-min') ? '▢' : '—';
    btnMin.setAttribute('aria-label', box.classList.contains('is-min') ? 'Restaurer' : 'Réduire');
  });

  // Fermer
  btnClose.addEventListener('click', (e) => {
    e.stopPropagation();
    box.remove();
  });

  // Drag (souris + tactile) via Pointer Events
  let dragging = false;
  let startX = 0, startY = 0;
  let startLeft = 0, startTop = 0;

  // Position initiale: on convertit right/bottom en left/top pour le drag
  const init = () => {
    const r = box.getBoundingClientRect();
    box.style.left = r.left + 'px';
    box.style.top  = r.top  + 'px';
    box.style.right = 'auto';
    box.style.bottom = 'auto';
  };
  init();

  const clamp = (v, min, max) => Math.min(Math.max(v, min), max);

  bar.addEventListener('pointerdown', (e) => {
    // pas de drag quand on clique sur les boutons
    if (e.target === btnMin || e.target === btnClose) return;

    dragging = true;
    bar.setPointerCapture(e.pointerId);

    const r = box.getBoundingClientRect();
    startX = e.clientX;
    startY = e.clientY;
    startLeft = r.left;
    startTop = r.top;

    e.preventDefault();
  });

  bar.addEventListener('pointermove', (e) => {
    if (!dragging) return;

    const dx = e.clientX - startX;
    const dy = e.clientY - startY;

    const r = box.getBoundingClientRect();
    const w = r.width;
    const h = r.height;

    const maxLeft = window.innerWidth - w - 8;
    const maxTop  = window.innerHeight - h - 8;

    box.style.left = clamp(startLeft + dx, 8, maxLeft) + 'px';
    box.style.top  = clamp(startTop + dy, 8, maxTop) + 'px';
  });

  const endDrag = () => { dragging = false; };
  bar.addEventListener('pointerup', endDrag);
  bar.addEventListener('pointercancel', endDrag);

  // Re-clamp au resize
  window.addEventListener('resize', () => {
    const r = box.getBoundingClientRect();
    const maxLeft = window.innerWidth - r.width - 8;
    const maxTop  = window.innerHeight - r.height - 8;
    box.style.left = clamp(r.left, 8, maxLeft) + 'px';
    box.style.top  = clamp(r.top, 8, maxTop) + 'px';
  });
})();
</script>