Accueil / Cybersécurité / La Gendarmerie Nationale coupe l’infiltration de Retadup

La Gendarmerie Nationale coupe l’infiltration de Retadup

960 000 ordinateurs de part le monde désinfectés du code malveillant Retadup par le centre de lutte contre les criminalités numériques de la Gendarmerie Nationale.

Les militaires du centre de lutte contre les criminalités numériques (C3N) ont frappé fort en faisant taire le code malveillant Retadup. Après une prise de contrôle du serveur permettant de contrôler plus de 960 000 machines de part le monde, les cyber gendarmes ont désinfectés les machines zombies.

Un sacré coup de frein aux actions malveillantes d’un groupe de pirates connus pour agir de Palestine.

Retadup est un cheval de Troie permettant de surveiller un ordinateur, intercepter les frappes claviers. Il peut aussi mettre la main sur les données financières, dont des cryptomonnaies. ZATAZ explique que la furtivité du logiciel pirate fait de lui un code malveillant redoutable.

Étiquetté :

7 Commentaires

  • Ne croyez vous pas qu’il s’agisse plutôt d’un contre-feu à l’annonce du piratage de comptes de contribuables sur le site des impôts.
    Ce n’est pas le seul résultat de la C3N, mais peut-être le plus médiatisable.
    Le coup nous a déjà été fait avec les irlandais de Vincennes.

  • OOOps dans la précipitation j’ai laissé mon mail en tant que nom 🙁 si vous pouviez le modifier par ce pseudo : dryss) je vous remercie et m’excuse du désagrément

  • Merci pour votre réponse et votre réactivité.
    A nouveau je tiens à manifester toutes mes félicitations aux équipes C3N qui viennent de réaliser une opération que je crois être encore unique en son genre. Je suis quotidiennement confronté à des Botnets de part mon travail et j’ai appris la nouvelle avec une grande satisfaction.
    Cependant,, en parcourant différents articles sur le sujet, je n’ai pas lu la même explication que la vôtre :

    dans thehackernews on peut lire :
    « According to the proposed plan, the French authorities took control over the RETADUP C&C server in July and replaced it with a prepared disinfection server that abused the design flaw in its protocol and commanded the connected instances of the RETADUP malware on infected computers to self-destruct. »

    Vous m’accorderez, je pense, que cette explication peut mettre en défaut la procédure d’un point de vue légale.
    Je pense que la question sous jacente est celle des moyens légaux conférés aux différentes entités (gouvernementales ou pas) qui luttent contre la cybercriminalité.

    • Damien Bancal

      La force de la chose est que les pirates ne vont pas râler de la prise en main de leur serveur, basé en France 🙂

  • Très belle opération menée par nos gendarmes.
    J’ai tout de même une petite interrogation quant à sa légalité.
    En effet, je ne comprends pas comment la Gendarmerie a pu s’autoriser le droit de ‘pénétrer’ dans près d’1 millions de machines,réparties sur la planète et qui par définition ne lui appartiennent pas.
    Article 323-1 al. 1er du code pénal défini l’intrusion comme le « fait d’accéder ou de se maintenir, frauduleusement, dans tout ou partie d’un système de traitement automatisé de données. »
    De plus, comment être certain pour les victimes qu’aucun autre logiciel n’a été implanté lors de cette « désinfection » ?
    Que l’on soit bien d’accord, je soutiens la gendarmerie nationale ainsi que tous les acteurs (étatiques ou non) qui se battent tous les jours pour éradiquer les cybercriminels.

    • Damien Bancal

      Bonjour,
      Ils n’ont pas pénétré, les commandes venaient au serveur pirate. Il a suffit de cliquer sur « off » dans le serveur pirate pour que le code malveillant s’autodétruise.
      Dans tous les cas, nos Gendarmes n’agissent pas sans l’autorisation d’un juge.

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>