Accueil / Piratage / Trojans mobiles iOS et Android

Trojans mobiles iOS et Android

L’existence d’une infrastructure internationale servant à contrôler des implants malveillants du type RCS « Remote Control System » (Système de Contrôle à Distance) vient d’être révélée par Citizen Lab.

Dans le même temps, des trojans mobiles jusque-là inconnus, fonctionnant aussi bien sous Android que sous iOS. Ces modules font partie de l’outil de spyware « légal » RCS, alias Galileo, développé par la société italienne HackingTeam. La liste des victimes recensées comprend des militants, des avocats des droits de l’homme, ainsi que des journalistes et des responsables politiques.

Où se trouvent les infrastructures RCS ?
Différentes méthodes ont été employées pour localiser les serveurs de commandes et de contrôle (C&C) de Galileo à travers le monde. Les experts se sont appuyés sur des indicateurs spéciaux et des données de connexion obtenues par la rétro-ingénierie d’échantillons existants. Ils sont parvenus à cartographier la présence de plus de 320 serveurs C&C RCS dans au moins une quarantaine de pays. La majorité de ces serveurs se trouvent aux Etats-Unis, au Kazakhstan, en Equateur, au Royaume-Uni et au Canada.

« La présence de ces serveurs dans un pays ne signifie pas pour autant qu’ils sont utilisés par les autorités de ce pays. Cependant, il est pertinent pour les utilisateurs de RCS de déployer des serveurs C&C dans les zones qu’ils contrôlent, là où les risques de problèmes juridiques transfrontaliers ou de saisie du matériel sont moindres.» explique Sergey Golovanov, Principal Security Researcher chez Kaspersky Lab.

Comment agissent les implants malveillants RCS ?
L’existence de trojans mobiles iOS et Android développés par HackingTeam n’est pas un secret mais il n’a jamais été possible jusqu’à maintenant de les identifier, ni même de les rattacher à une attaque. Les experts Kaspersky Lab étudient le malware RCS depuis plusieurs années. Au début de l’année, ils ont pu identifier certains éléments de modules mobiles correspondant à d’autres profils de configuration de malwares RCS issus de leur échantillonnage. Lors des dernières recherches, de nouvelles variantes d’échantillons ont également été reçues via le réseau cloud KSN de Kaspersky Lab. En outre, les experts de la société ont travaillé en étroite collaboration avec Morgan Marquis-Boire de Citizen Lab, qui s’est livré à des recherches poussées sur le malware HackingTeam.

Vecteurs d’infection : Les créateurs du RCS Galileo ont produit un implant malveillant spécifique pour chaque cible. Une fois l’échantillon prêt, l’auteur de l’attaque l’envoie sur le mobile de sa victime. Parmi les vecteurs d’infection connus figurent notamment le « spearphishing » (harponnage) par ingénierie sociale – souvent associé à l’exploitation de failles, en particulier de type « zéro day » – ou des infections locales via les ports USB pendant la synchronisation d’appareils mobiles.

L’une des principales découvertes a consisté à comprendre précisément le mode d’infection d’un iPhone par un trojans mobile Galileo : le téléphone doit pour cela être débridé. Cependant, des iPhones non débridés peuvent eux aussi devenir vulnérables : un attaquant peut se servir d’un outil de « jailbreak » tel qu’Evasi0n via un ordinateur infecté précédemment, et débrider le téléphone à distance avant de le contaminer. Pour éviter tout risque d’infection, les experts de Kaspersky Lab recommandent, d’une part, de ne pas débrider l’iPhone et, d’autre part, d’y installer en permanence la dernière version en date du système iOS.

Espionnage personnalisé : Les modules mobiles RCS sont méticuleusement conçus pour opérer en toute discrétion, par exemple en surveillant étroitement l’autonomie de batterie du mobile. Pour ce faire, ils utilisent des capacités d’espionnage personnalisées ou des déclencheurs spéciaux. C’est ainsi qu’un enregistrement audio peut se déclencher uniquement lorsque la victime est connectée à un réseau Wi-Fi particulier (tel que celui d’un groupe médias) ou lorsqu’elle change de carte SIM ou encore pendant la charge de l’appareil.

En général, les trojans mobiles RCS sont capables de réaliser un grand nombre de tâches de surveillance, qu’il s’agisse de transmettre la géolocalisation de la victime, de prendre des photos, de recopier des événements de l’agenda, d’enregistrer toute nouvelle carte SIM insérée dans le téléphone infecté ou encore d’intercepter les appels téléphoniques et les messages (y compris ceux envoyés par des applications telles que Viber, WhatsApp et Skype, en plus des SMS classiques).

É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>