Accueil / Entreprise / Une victime de Windigo témoigne

Une victime de Windigo témoigne

Retour sur l’affaire Windigo, qui a été découverte il y a quelques semaines par l’équipe de chercheurs en sécurité d’ESET, en collaboration avec le CERT-Bund (Allemagne), l’agence nationale suédoise de recherche sur les infrastructures réseau (SNIC) et d’autres agences en sécurité. Pour rappel, cette importante opération, contrôlée par un gang de cybercriminels, a généré  des attaques sur plus de 25 000 serveurs UNIX dans le monde entier. A l’apogée de Windigo, ont été envoyés 35 millions de pourriels par jour et 500.000 internautes ont été redirigés vers des sites malveillants. Pour plus d’informations sur Windigo : Communiqué de presse Opération Windigo

Pierre-Marc Bureau, Directeur du programme Security Intelligence d’ESET déclare : «  ESET a investi des mois d’efforts pour analyser, comprendre et expliquer l’Opération Windigo. A l’acmé des analyses, 6 chercheurs ont enquêté. Nous sommes très fiers des résultats actuels et continuons de surveiller la situation. Tous les serveurs n’ont pas été nettoyés et le gang malveillant à l’origine de l’opération contrôle toujours des ressources importantes. Il y a encore beaucoup de travail à effectuer ! »

Résumé de l’entretien avec François Gagnon*, dirigeant d’une entreprise dont les serveurs en France et au Canada ont été les victimes de ces attaques pendant plusieurs semaines. Il explique comment une entreprise internationale peut devenir la proie de cybercriminels sans s’en apercevoir : « Comme toutes les entreprises de notre taille, nous savons que nous sommes la cible de cybercriminels, mais nous n’avions jamais fait l’objet d’une attaque sérieuse. Au début nous n’avions pas mesuré l’ampleur de cette attaque. C’était subtil. Personne n’avait jamais volé nos bases de données. Mais nous ne ressentions pas cela comme une attaque offensive, le malware a été exécuté silencieusement. Je pense que c’est pourquoi il avait infecté tant de serveurs avant que les gens commencent à réagir (…) La première chose que l’on sait dans n’importe quelle entreprise IT est que rien n’est impossible (…) Je suppose que nos serveurs ont été infectés quelques semaines avant. Lorsque nous nous en sommes aperçus, nous avons poussé l’enquête. C’est là que nous nous sommes rendu compte que les serveurs ont été infectés après l’ouverture de tickets avec cPanel. Leurs serveurs étaient infectés et ils ont donc infectés les nôtres via une connexion SSH. (…) Nous avons d’abord pensé à une attaque ciblée, puis nous nous sommes aperçus que beaucoup d’autres entreprises se posaient les mêmes questions avec des récits de comportements étranges sur de nombreux forums. (…) Nous avons rapidement été contactés par ESET qui nous a informé de l’ampleur de l’infection, nous avons très vite été en étroite collaboration. ESET nous a conseillé de nettoyer et réinstaller nos serveurs. Certains serveurs ont été utilisés pour aider les chercheurs à comprendre l’infection. (…) Nous avons été une cible, tout simplement parce que nous avons beaucoup de serveurs, et de nombreux clients en France et au Canada (…). Nous remercions  ESET qui a été réactif pour nous venir en aide (…), nous n’avons pas souffert de graves pertes financières. La réputation de notre entreprise n’a pas été impactée. (…)  Nous sommes pleinement opérationnels aujourd’hui. »

OPERATION WINDIGO

Plus de 500 000 ordinateurs infectés chaque jour par 25 000 serveurs UNIX piratés par un cheval de Troie. L’équipe de chercheurs en sécurité d’ESET®, en collaboration avec le CERT-Bund (Allemagne), l’agence nationale suédoise de recherche sur les infrastructures réseau (SNIC) et d’autres agences en sécurité, ont découvert une vaste campagne d’attaques cybercriminelles qui a pris le contrôle de plus de 25 000 serveurs UNIX dans le monde entier. Baptisée « Windigo » par les experts en sécurité informatique cette campagne d’une ampleur inédite a généré l’envoi de millions de pourriels par les serveurs infectés. Le piratage de ces serveurs n’est en réalité que la 1ère étape de cette opération complexe qui a pour finalité l’infection et le vol d’information des ordinateurs qui s’y connectent.

*A sa demande et pour des raisons de sécurité, le blog WeliveSecurity a utilisé un faux nom pour notre interlocuteur. Le gang derrière Windigo est toujours en fuite et les représailles sont une possibilité. Ce témoignage a été recueilli par Pierre-Marc Bureau.

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