Accueil / Cybersécurité / IOT / NAS et Routeurs Zyxel/Linksys dans la ligne de mire de pirates

NAS et Routeurs Zyxel/Linksys dans la ligne de mire de pirates

Découvertes de plusieurs cyber attaques visant les utilisateurs de stockages connectés Zyxel et routeurs Linksys.

Une ne nouvelle variante de Mirai vise les stockages connectés Zyxel.

Appelé Mukashi, ce malware utilise des attaques par force brute. Mission, s’infiltrer via différentes combinaisons d’identifiants par défaut afin de se connecter aux produits de stockage en réseau Zyxel.

Une cyber attaque qui a pour mission de prendre le contrôle et d’ajouter à un réseau de dispositifs pouvant être utilisés pour conduire des attaques DDoS.

Le PoC (proof-of-concept) de la faille CVE-2020-9054 a été rendu public en février 2019. Une vulnérabilité rapidement exploitée pour infecter des modèles NAS de chez Zyxel avec une nouvelle variante de Mirai : Mukashi. Ce code malveillant utilise la force brute pour s’infiltrer en utilisant différentes combinaisons d’identifiants par défaut, tout en informant son serveur C2 (command & contrôle) de ses réussites. De nombreux serveurs NAS de Zyxel, si ce n’est tous, utilisant les versions de firmware allant jusqu’à 5.21 sont concernés par cette vulnérabilité.

Cette vulnérabilité classée critique (c’est-à-dire un score de 9,8 selon le CVSS v3.1) en raison de son incroyable facilité d’exploitation. Faille découverte à l’origine par la vente de son code en tant que 0-day. Les pirates indiquaient que cet exploit était désormais dans les mains d’un groupe de cyber criminels qui cherchaient à l’intégrer dans l’autre code malveillant, Emotet.

Bot contre Zyxel

Mukashi est un bot qui scanne les ports 23 TCP d’hôtes au hasard. Il utilise la force brute pour s’infiltrer en utilisant différentes combinaisons d’identifiants par défaut et qui renvoie ses essais réussis vers un serveur C2. Comme les autres variantes de Mirai, Mukashi peut également recevoir des ordres de son serveur C&C et de lancer des attaques par déni de service (DoS). Une fois exécuté, Mukashi affiche le message « Protecting your device from further infections. » sur la console. Le malware change alors le nom de son processus en dvrhelper, suggérant que Mukashi a pu hériter de certaines particularités de son prédécesseur.

Avant d’exécuter son opération, Mukashi se lie au port TCP 23448 pour s’assurer qu’il n’y a qu’une seule instance tournant sur le système infecté. Le malware décode quelques chaînes de caractères à la volée lors de son initialisation. Contrairement à ses prédécesseurs qui utilisent le chiffrement xor classique, Mukashi utilise une routine de décryptage personnalisée pour chiffrer ces commandes et ces informations d’identification.

Il est indispensable de mettre à jour le firmware pour ne pas laisser entrer les attaquants. Les dernières versions du firmware sont disponibles en téléchargement. Mieux vaut utiliser des couples identifiants/mots de passe complexes pour éviter les attaques par la force brute.

Chez Linksys

Pendant ce temps, Bitdefender découvrait une nouvelle attaque ciblant les routeurs Linksys. La cyber attaque a pour mission de modifier les paramètres DNS des matériels. Mission, diriger les utilisateurs vers une page web liée au COVID-19. Une page ayant pour mission diffuser des logiciels malveillants. L’attaque a débuté le 18 mars 2020. Elle utilisait le service de raccourcissement d’adresse web TinyURL et quatre stockages Bitbucket.

Les principaux pays touchés auraient été la France, l’Allemagne et les États-Unis. 1 193 téléchargements auraient été détectées en deux jours.

Kit Covi-19 : protéger son entreprise et ses employés

Besoin d’un outil pour sécuriser vos équipes lors du confinement ? Le Kit Cyber Covid-19 a été mis en place par plusieurs entreprises Françaises, à l’initiative de ITrust.

Étiquetté :

Nos partenaires




Actualités du mois

avril 2026
L M M J V S D
 12345
6789101112
13141516171819
20212223242526
27282930  

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>