diff --git a/css/custom.css b/css/custom.css index e6aed09..823109f 100644 --- a/css/custom.css +++ b/css/custom.css @@ -1,36 +1,112 @@ -/* ============================================ - Theme personnalise : Hacker / Cybersecurite +/* ============================================ + Theme MATRIX : Cybersecurite / Lazarus ============================================ */ +@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;700&family=Inter:wght@400;600;700&display=swap'); + :root { - --color-bg: #0a0a0a; - --color-bg-alt: #111111; + --color-bg: #000000; + --color-bg-alt: #0a0f0a; + --color-bg-card: rgba(0, 20, 0, 0.6); --color-green: #00ff41; + --color-green-dim: #00cc33; + --color-green-glow: rgba(0, 255, 65, 0.4); + --color-green-subtle: rgba(0, 255, 65, 0.08); --color-red: #ff3333; + --color-red-glow: rgba(255, 51, 51, 0.4); --color-cyan: #00e5ff; + --color-cyan-glow: rgba(0, 229, 255, 0.3); --color-yellow: #ffd600; - --color-text: #e0e0e0; - --color-muted: #888888; - --color-border: #2a2a2a; + --color-text: #c0d0c0; + --color-text-bright: #e0ffe0; + --color-muted: #4a6a4a; + --color-border: #0a3a0a; --font-mono: 'Fira Code', 'Cascadia Code', 'Consolas', monospace; --font-sans: 'Inter', 'Segoe UI', Arial, sans-serif; } -/* ---- Arriere-plan global ---- */ +/* ===================== KEYFRAMES ===================== */ + +@keyframes matrixGlow { + 0%, 100% { text-shadow: 0 0 10px var(--color-green-glow), 0 0 20px var(--color-green-glow); } + 50% { text-shadow: 0 0 20px var(--color-green), 0 0 40px var(--color-green-glow), 0 0 60px rgba(0,255,65,0.15); } +} + +@keyframes glitchColor { + 0% { text-shadow: 2px 0 #ff0000, -2px 0 #00ffff; } + 25% { text-shadow: -2px 0 #ff0000, 2px 0 #00ffff; } + 50% { text-shadow: 2px 2px #ff0000, -2px -2px #00ffff; } + 75% { text-shadow: -1px 2px #ff0000, 1px -2px #00ffff; } + 100% { text-shadow: 2px 0 #ff0000, -2px 0 #00ffff; } +} + +@keyframes blink { + 0%, 50% { opacity: 1; } + 51%, 100% { opacity: 0; } +} + +@keyframes scanline { + 0% { transform: translateY(-100%); } + 100% { transform: translateY(100vh); } +} + +@keyframes fadeInUp { + from { opacity: 0; transform: translateY(30px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes pulseGlow { + 0%, 100% { box-shadow: 0 0 5px var(--color-green-glow), inset 0 0 5px rgba(0,255,65,0.05); } + 50% { box-shadow: 0 0 20px var(--color-green-glow), 0 0 40px rgba(0,255,65,0.1), inset 0 0 10px rgba(0,255,65,0.08); } +} + +@keyframes redPulse { + 0%, 100% { text-shadow: 0 0 10px var(--color-red-glow); } + 50% { text-shadow: 0 0 30px var(--color-red), 0 0 60px var(--color-red-glow); } +} + +/* ===================== BASE ===================== */ + .reveal { background: var(--color-bg); color: var(--color-text); font-family: var(--font-sans); } -.reveal .slides { - text-align: left; +/* Scanlines CRT */ +.reveal::after { + content: ''; + position: fixed; + top: 0; left: 0; + width: 100%; height: 100%; + pointer-events: none; + z-index: 9999; + background: repeating-linear-gradient( + 0deg, + transparent, transparent 2px, + rgba(0, 255, 65, 0.018) 2px, + rgba(0, 255, 65, 0.018) 4px + ); } -/* ---- Titres ---- */ -.reveal h1, -.reveal h2, -.reveal h3 { +/* Barre de scan lumineuse */ +.reveal::before { + content: ''; + position: fixed; + top: 0; left: 0; + width: 100%; height: 6px; + background: linear-gradient(180deg, transparent, rgba(0,255,65,0.25), transparent); + z-index: 9998; + pointer-events: none; + animation: scanline 8s linear infinite; + opacity: 0.4; +} + +.reveal .slides { text-align: left; } + +/* ===================== TITRES + GLOW ===================== */ + +.reveal h1, .reveal h2, .reveal h3 { color: var(--color-green); font-family: var(--font-mono); text-transform: none; @@ -39,96 +115,116 @@ .reveal h1 { font-size: 2.2em; - border-bottom: 3px solid var(--color-green); + border-bottom: 2px solid var(--color-green); + border-image: linear-gradient(90deg, var(--color-green), transparent) 1; padding-bottom: 0.3em; margin-bottom: 0.6em; + animation: matrixGlow 3s ease-in-out infinite; } .reveal h2 { font-size: 1.6em; margin-bottom: 0.5em; + text-shadow: 0 0 10px var(--color-green-glow); } .reveal h3 { font-size: 1.2em; color: var(--color-cyan); + text-shadow: 0 0 8px var(--color-cyan-glow); } -/* ---- Texte ---- */ -.reveal p, -.reveal li { +/* ===================== TEXTE ===================== */ + +.reveal p, .reveal li { font-size: 0.85em; line-height: 1.7; color: var(--color-text); } -.reveal ul, -.reveal ol { - margin-left: 1em; -} +.reveal ul, .reveal ol { margin-left: 1em; } +.reveal li { margin-bottom: 0.4em; } -.reveal li { - margin-bottom: 0.4em; +/* Puces style terminal > */ +.reveal ul > li { + list-style: none; + padding-left: 1.2em; + position: relative; +} +.reveal ul > li::before { + content: '>'; + position: absolute; + left: 0; + color: var(--color-green); + font-family: var(--font-mono); + font-weight: bold; + text-shadow: 0 0 4px var(--color-green-glow); } .reveal strong { color: var(--color-green); + text-shadow: 0 0 6px var(--color-green-glow); } .reveal em { color: var(--color-cyan); font-style: italic; + text-shadow: 0 0 4px var(--color-cyan-glow); } -/* ---- Liens ---- */ +/* ===================== LIENS ===================== */ + .reveal a { color: var(--color-cyan); text-decoration: underline; text-underline-offset: 3px; + text-shadow: 0 0 4px var(--color-cyan-glow); } - .reveal a:hover { color: var(--color-green); + text-shadow: 0 0 10px var(--color-green-glow); } -/* ---- Code inline ---- */ +/* ===================== CODE ===================== */ + .reveal code { font-family: var(--font-mono); - background: var(--color-bg-alt); + background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: 4px; padding: 0.15em 0.4em; font-size: 0.85em; color: var(--color-green); + text-shadow: 0 0 4px var(--color-green-glow); } -/* ---- Blocs de code ---- */ .reveal pre { - background: var(--color-bg-alt); - border: 1px solid var(--color-border); + background: var(--color-bg-card); + border: 1px solid var(--color-green); border-radius: 6px; padding: 1em; - width: 100%; - box-sizing: border-box; + width: 100%; box-sizing: border-box; + box-shadow: 0 0 15px rgba(0,255,65,0.1), inset 0 0 30px rgba(0,0,0,0.5); } .reveal pre code { - background: transparent; - border: none; - padding: 0; - font-size: 0.75em; - line-height: 1.6; + background: transparent; border: none; + padding: 0; font-size: 0.75em; line-height: 1.6; } -/* ---- Slide de titre ---- */ -.reveal .title-slide { - text-align: center; -} +/* ===================== SLIDE TITRE ===================== */ + +.reveal .title-slide { text-align: center; } .reveal .title-slide h1 { - border-bottom: none; - font-size: 2.6em; - margin-bottom: 0.3em; + border-bottom: none; border-image: none; + font-size: 2.6em; margin-bottom: 0.3em; + animation: matrixGlow 2s ease-in-out infinite; +} + +/* Glitch au hover */ +.reveal .title-slide h1:hover { + animation: glitchColor 0.3s steps(4) infinite, matrixGlow 2s ease-in-out infinite; } .reveal .title-slide .subtitle { @@ -136,6 +232,15 @@ font-size: 1.1em; font-family: var(--font-mono); margin-bottom: 1.5em; + text-shadow: 0 0 10px var(--color-cyan-glow); +} + +/* Curseur clignotant */ +.reveal .title-slide .subtitle::after { + content: '_'; + animation: blink 1s step-end infinite; + color: var(--color-green); + margin-left: 2px; } .reveal .title-slide .authors { @@ -151,13 +256,14 @@ font-family: var(--font-mono); } -/* ---- Classe utilitaire : alerte rouge ---- */ +/* ===================== UTILITAIRES ===================== */ + .reveal .alert { color: var(--color-red); font-weight: bold; + animation: redPulse 2s ease-in-out infinite; } -/* ---- Classe utilitaire : chiffre mis en avant ---- */ .reveal .big-number { font-size: 3em; font-family: var(--font-mono); @@ -165,9 +271,9 @@ font-weight: bold; text-align: center; margin: 0.5em 0; + text-shadow: 0 0 20px var(--color-red-glow), 0 0 40px rgba(255,51,51,0.15); } -/* ---- Classe utilitaire : citation / source ---- */ .reveal .source { font-size: 0.6em; color: var(--color-muted); @@ -175,41 +281,42 @@ margin-top: 1em; } -/* ---- Timeline ---- */ +/* ===================== TIMELINE ===================== */ + .reveal .timeline { list-style: none; - margin: 0; - padding: 0; + margin: 0; padding: 0; position: relative; } .reveal .timeline::before { content: ''; - position: absolute; - left: 8px; - top: 0; - bottom: 0; + position: absolute; left: 8px; top: 0; bottom: 0; width: 2px; - background: var(--color-green); + background: linear-gradient(180deg, transparent, var(--color-green), var(--color-red)); + box-shadow: 0 0 8px var(--color-green-glow); } .reveal .timeline li { - padding-left: 30px; - position: relative; - margin-bottom: 0.6em; - font-size: 0.8em; + padding-left: 30px; position: relative; + margin-bottom: 0.6em; font-size: 0.8em; + list-style: none; } .reveal .timeline li::before { content: ''; - position: absolute; - left: 3px; - top: 0.45em; - width: 12px; - height: 12px; - border-radius: 50%; + position: absolute; left: 3px; top: 0.45em; + width: 12px; height: 12px; border-radius: 50%; background: var(--color-bg); border: 2px solid var(--color-green); + box-shadow: 0 0 6px var(--color-green-glow); +} + +/* Dernier point = rouge pulsant */ +.reveal .timeline li:last-child::before { + border-color: var(--color-red); + box-shadow: 0 0 10px var(--color-red-glow), 0 0 20px rgba(255,51,51,0.2); + background: rgba(255,51,51,0.2); } .reveal .timeline .year { @@ -217,101 +324,123 @@ font-family: var(--font-mono); font-weight: bold; margin-right: 0.5em; + text-shadow: 0 0 4px var(--color-cyan-glow); } -/* ---- Schema / Diagramme en blocs ---- */ +/* ===================== DIAGRAMMES ===================== */ + .reveal .diagram { - display: flex; - align-items: center; + display: flex; align-items: center; justify-content: center; - gap: 0.5em; - margin: 1.5em 0; - flex-wrap: wrap; + gap: 0.5em; margin: 1.5em 0; flex-wrap: wrap; } .reveal .diagram .box { - background: var(--color-bg-alt); + background: var(--color-bg-card); border: 2px solid var(--color-green); border-radius: 6px; padding: 0.6em 1em; - font-family: var(--font-mono); - font-size: 0.7em; + font-family: var(--font-mono); font-size: 0.7em; color: var(--color-green); - text-align: center; - min-width: 100px; + text-align: center; min-width: 100px; + box-shadow: 0 0 10px var(--color-green-glow), inset 0 0 15px rgba(0,255,65,0.03); + transition: all 0.3s ease; +} + +.reveal .diagram .box:hover { + box-shadow: 0 0 25px var(--color-green-glow), 0 0 50px rgba(0,255,65,0.15); + transform: scale(1.05); } .reveal .diagram .box.red { - border-color: var(--color-red); - color: var(--color-red); + border-color: var(--color-red); color: var(--color-red); + box-shadow: 0 0 10px var(--color-red-glow); +} +.reveal .diagram .box.red:hover { + box-shadow: 0 0 25px var(--color-red-glow), 0 0 50px rgba(255,51,51,0.15); } .reveal .diagram .box.cyan { - border-color: var(--color-cyan); - color: var(--color-cyan); + border-color: var(--color-cyan); color: var(--color-cyan); + box-shadow: 0 0 10px var(--color-cyan-glow); } .reveal .diagram .arrow { - color: var(--color-muted); + color: var(--color-green-dim); font-size: 1.5em; font-family: var(--font-mono); + text-shadow: 0 0 8px var(--color-green-glow); + animation: matrixGlow 2s ease-in-out infinite; } -/* ---- Grille 2 colonnes ---- */ +/* ===================== LAYOUT ===================== */ + .reveal .two-cols { display: grid; grid-template-columns: 1fr 1fr; - gap: 2em; - align-items: start; + gap: 2em; align-items: start; } -/* ---- Slide sommaire ---- */ +/* ===================== SOMMAIRE ===================== */ + .reveal .toc ol { - list-style: decimal; + list-style: none; + counter-reset: toc-counter; font-family: var(--font-mono); font-size: 0.85em; + padding-left: 0; } .reveal .toc ol li { + counter-increment: toc-counter; margin-bottom: 0.5em; color: var(--color-text); + padding-left: 2.5em; + position: relative; } -/* ---- Barre de progression ---- */ -.reveal .progress { +.reveal .toc ol li::before { + content: '[' counter(toc-counter, decimal-leading-zero) ']'; color: var(--color-green); + position: absolute; left: 0; + text-shadow: 0 0 4px var(--color-green-glow); +} + +/* ===================== PROGRESS / SLIDE NUMBER ===================== */ + +.reveal .progress { color: var(--color-green); height: 3px; } +.reveal .progress span { + background: var(--color-green); + box-shadow: 0 0 10px var(--color-green), 0 0 20px var(--color-green-glow); } -/* ---- Numeros de slide ---- */ .reveal .slide-number { font-family: var(--font-mono); font-size: 0.6em; - color: var(--color-muted); + color: var(--color-green-dim); + background: transparent; + text-shadow: 0 0 4px var(--color-green-glow); } -/* ---- Fragment animation ---- */ -.reveal .fragment.highlight-green.visible { - color: var(--color-green); -} +/* ===================== FRAGMENTS ===================== */ -.reveal .fragment.highlight-red.visible { - color: var(--color-red); -} +.reveal .fragment { transition: all 0.4s ease; } +.reveal .fragment.visible { animation: fadeInUp 0.5s ease forwards; } +.reveal .fragment.highlight-green.visible { color: var(--color-green); } +.reveal .fragment.highlight-red.visible { color: var(--color-red); } -/* ---- Table ---- */ -.reveal table { - border-collapse: collapse; - width: 100%; - font-size: 0.75em; -} +/* ===================== TABLE ===================== */ + +.reveal table { border-collapse: collapse; width: 100%; font-size: 0.75em; } .reveal table th { - background: var(--color-bg-alt); + background: var(--color-bg-card); color: var(--color-green); font-family: var(--font-mono); padding: 0.5em 0.8em; border-bottom: 2px solid var(--color-green); text-align: left; + text-shadow: 0 0 4px var(--color-green-glow); } .reveal table td { @@ -321,15 +450,125 @@ } .reveal table tr:hover td { - background: var(--color-bg-alt); + background: var(--color-bg-card); + color: var(--color-text-bright); } -/* ---- Slide finale ---- */ -.reveal .end-slide { - text-align: center; -} +/* ===================== SLIDE FINALE ===================== */ +.reveal .end-slide { text-align: center; } .reveal .end-slide h1 { - border-bottom: none; + border-bottom: none; border-image: none; font-size: 3em; + animation: matrixGlow 1.5s ease-in-out infinite; } + +/* ===================== GLOW CARD ===================== */ + +.reveal .glow-card { + background: var(--color-bg-card); + border: 1px solid var(--color-green); + border-radius: 8px; + padding: 1.2em 1.5em; margin: 1em 0; + box-shadow: 0 0 15px var(--color-green-glow), inset 0 0 30px rgba(0,0,0,0.5); + animation: pulseGlow 4s ease-in-out infinite; +} + +.reveal .glow-card.red { + border-color: var(--color-red); + box-shadow: 0 0 15px var(--color-red-glow), inset 0 0 30px rgba(0,0,0,0.5); +} +.reveal .glow-card h3 { margin-top: 0; } + +/* ===================== DATA BACKGROUND ===================== */ + +.reveal .data-bg { position: relative; overflow: hidden; } +.reveal .data-bg::before { + content: '01001100 01000001 01011010 01000001 01010010 01010101 01010011 00100000 01000010 01011001 01000010 01001001 01010100 00100000 00110001 00101110 00110101 01000010 '; + position: absolute; top: 0; left: 0; + width: 100%; height: 100%; + font-family: var(--font-mono); font-size: 0.5em; + color: rgba(0,255,65,0.04); + word-break: break-all; line-height: 1.8; + z-index: 0; pointer-events: none; overflow: hidden; +} +.reveal .data-bg > * { position: relative; z-index: 1; } + +/* ===================== TERMINAL PROMPT ===================== */ + +.reveal .terminal-line { + font-family: var(--font-mono); + font-size: 0.8em; + color: var(--color-green); + margin: 0.3em 0; +} +.reveal .terminal-line::before { + content: 'root@lazarus:~$ '; + color: var(--color-muted); +} +.reveal .terminal-line::after { + content: '_'; + animation: blink 1s step-end infinite; +} + +/* ===================== TAGS ===================== */ + +.reveal .tag { + display: inline-block; + font-family: var(--font-mono); font-size: 0.65em; + padding: 0.2em 0.6em; border-radius: 3px; + background: var(--color-bg-card); + border: 1px solid var(--color-green); + color: var(--color-green); margin: 0.15em; + text-shadow: 0 0 4px var(--color-green-glow); +} +.reveal .tag.red { border-color: var(--color-red); color: var(--color-red); } +.reveal .tag.cyan { border-color: var(--color-cyan); color: var(--color-cyan); } + +/* ===================== SEPARATEUR ===================== */ + +.reveal .matrix-hr { + border: none; height: 1px; + background: linear-gradient(90deg, transparent, var(--color-green), transparent); + box-shadow: 0 0 10px var(--color-green-glow); + margin: 1.5em 0; +} + +/* ===================== CITATION ===================== */ + +.reveal .matrix-quote { + border-left: 3px solid var(--color-green); + padding: 0.8em 1.2em; margin: 1em 0; + background: var(--color-bg-card); + font-style: italic; color: var(--color-text-bright); + box-shadow: inset 3px 0 15px rgba(0,255,65,0.05); +} + +/* ===================== STATUS DOT ===================== */ + +.reveal .status-dot { + display: inline-block; + width: 8px; height: 8px; border-radius: 50%; + background: var(--color-green); + box-shadow: 0 0 6px var(--color-green); + animation: blink 1.5s step-end infinite; + margin-right: 6px; vertical-align: middle; +} +.reveal .status-dot.red { + background: var(--color-red); + box-shadow: 0 0 6px var(--color-red); +} + +/* ===================== SECTIONS FADE ===================== */ + +.reveal section { animation: fadeInUp 0.6s ease forwards; } + +/* ===================== RESPONSIVE ===================== */ + +@media (max-width: 800px) { + .reveal .two-cols { grid-template-columns: 1fr; gap: 1em; } + .reveal h1 { font-size: 1.6em; } + .reveal .big-number { font-size: 2em; } + .reveal .diagram { flex-direction: column; } +} + diff --git a/index.html b/index.html index 21e7d35..6fe1be2 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ - + @@ -12,24 +12,34 @@ - + - - - + + +
-
+

Le Groupe Lazarus
& le hack de Bybit

-
Fevrier 2025 / 1,5 milliard de dollars en Ethereum
-
Presentation par [Prenom 1], [Prenom 2] et [Prenom 3]
+
Février 2025 / 1,5 milliard de dollars en Ethereum
+
Présentation par [Prénom 1], [Prénom 2] et [Prénom 3]
2025 / 2026
@@ -45,10 +55,10 @@
  • Le virage vers les cryptomonnaies
  • Bybit : la cible
  • Anatomie technique de l'attaque
  • -
  • Impact sur le marche
  • -
  • Reponse de Bybit et attribution
  • -
  • Se proteger contre ce type d'attaque
  • -
  • Enjeux geopolitiques
  • +
  • Impact sur le marché
  • +
  • Réponse de Bybit et attribution
  • +
  • Se protéger contre ce type d'attaque
  • +
  • Enjeux géopolitiques
  • Conclusion
  • @@ -57,30 +67,30 @@ -
    +

    Qui est le Groupe Lazarus ?

    -

    Groupe de hackers etatique lie a la Coree du Nord, actif depuis 2009.

    -

    Classe comme Advanced Persistent Threat (APT) par les agences de renseignement occidentales.

    -

    Rattache au Reconnaissance General Bureau (renseignement militaire nord-coreen) et au Bureau 121, l'unite de cyberguerre.

    -

    Compose de deux sous-groupes principaux :

    +

    Groupe de hackers étatique lié à la Corée du Nord, actif depuis 2009.

    +

    Classé comme Advanced Persistent Threat (APT) par les agences de renseignement occidentales.

    +

    Rattaché au Reconnaissance General Bureau (renseignement militaire nord-coréen) et au Bureau 121, l'unité de cyberguerre.

    +

    Composé de deux sous-groupes principaux :

      -
    • BlueNorOff (APT38) : operations financieres
    • -
    • AndAriel : espionnage cible sur la Coree du Sud
    • +
    • BlueNorOff (APT38) : opérations financières
    • +
    • AndAriel : espionnage ciblé sur la Corée du Sud

    Alias connus

    -
      -
    • Hidden Cobra (Dept. Homeland Security)
    • -
    • ZINC / Diamond Sleet (Microsoft)
    • -
    • APT38 (Mandiant)
    • -
    • Stardust Chollima (CrowdStrike)
    • -
    • Guardians of Peace
    • -
    • NICKEL ACADEMY (Secureworks)
    • -
    -

    Sources : MITRE ATT&CK G0032, US Treasury OFAC, Kaspersky

    +

    + Hidden Cobra + ZINC / Diamond Sleet + APT38 + Stardust Chollima + Guardians of Peace + NICKEL ACADEMY +

    +

    Sources : MITRE ATT&CK G0032, US Treasury OFAC, Kaspersky

    @@ -91,10 +101,10 @@

    Historique des attaques majeures

      -
    • 2009 Operation Troy : attaques DDoS contre la Coree du Sud
    • -
    • 2013 DarkSeoul : wiper contre banques et medias sud-coreens
    • -
    • 2014 Hack de Sony Pictures : vol de donnees, destruction de systemes
    • -
    • 2016 Braquage de la Bangladesh Bank via SWIFT : 81 M$ voles
    • +
    • 2009 Opération Troy : attaques DDoS contre la Corée du Sud
    • +
    • 2013 DarkSeoul : wiper contre banques et médias sud-coréens
    • +
    • 2014 Hack de Sony Pictures : vol de données, destruction de systèmes
    • +
    • 2016 Braquage de la Bangladesh Bank via SWIFT : 81 M$ volés
    • 2017 WannaCry : ransomware mondial, 200 000 machines dans 150 pays
    • 2022 Ronin Network (Axie Infinity) : 620 M$ en crypto
    • 2022 Horizon Bridge (Harmony) : 100 M$
    • @@ -116,16 +126,16 @@
      • Les sanctions internationales (ONU, USA, UE) bloquent les circuits financiers classiques
      • La blockchain offre un pseudo-anonymat exploitable avec des mixers et des bridges cross-chain
      • -
      • Les exchanges centralisees concentrent des milliards dans quelques wallets
      • -
      • Les smart contracts tiers representent une surface d'attaque sous-estimee
      • +
      • Les exchanges centralisées concentrent des milliards dans quelques wallets
      • +
      • Les smart contracts tiers représentent une surface d'attaque sous-estimée

    Estimation des vols

    > 3 Md$
    -

    voles en cryptomonnaies depuis 2017 par des groupes lies a la Coree du Nord.

    -

    Selon les estimations, les revenus issus du cybercrime representent environ 50% des rentrees en devises etrangeres de la RPDC.

    -

    Ces fonds financent directement les programmes nucleaire et balistique.

    +

    volés en cryptomonnaies depuis 2017 par des groupes liés à la Corée du Nord.

    +

    Selon les estimations, les revenus issus du cybercrime représentent environ 50% des rentrées en devises étrangères de la RPDC.

    +

    Ces fonds financent directement les programmes nucléaire et balistique.

    Sources : Chainalysis 2024 Crypto Crime Report, Nations Unies

    @@ -138,23 +148,25 @@

    Bybit : la cible

    - -

    L'attaque a cible le cold wallet Ethereum de Bybit, le coffre-fort hors ligne cense etre la couche de securite ultime.

    +
    +
      +
    • Fondée en 2018, basée à Dubai
    • +
    • 2e exchange mondial par volume de trading au moment de l'attaque
    • +
    • Environ 16 milliards de dollars d'actifs sous gestion
    • +
    • Des millions d'utilisateurs dans le monde
    • +
    +
    +
    L'attaque a ciblé le cold wallet Ethereum de Bybit, le coffre-fort hors ligne censé être la couche de sécurité ultime.

    Cold wallet vs Hot wallet

    Hot Wallet
    en ligne, rapide
    ←→
    -
    Cold Wallet
    hors ligne, securise
    +
    Cold Wallet
    hors ligne, sécurisé
    -

    Un cold wallet necessite plusieurs signatures (multisig) pour autoriser un transfert. En theorie, meme si un signataire est compromis, les fonds restent proteges.

    -

    En theorie.

    +

    Un cold wallet nécessite plusieurs signatures (multisig) pour autoriser un transfert. En théorie, même si un signataire est compromis, les fonds restent protégés.

    +

    En théorie.

    @@ -162,12 +174,11 @@ -
    +

    Anatomie de l'attaque (1/3)

    Vecteur initial : Safe{Wallet}

    -

    Safe{Wallet} (anciennement Gnosis Safe) est un service tiers utilise par Bybit pour gerer la signature multiple (multisig) de ses cold wallets.

    -

    Les attaquants ont compromis l'infrastructure de Safe{Wallet} elle-meme, - pas directement les systemes de Bybit.

    +

    Safe{Wallet} (anciennement Gnosis Safe) est un service tiers utilisé par Bybit pour gérer la signature multiple (multisig) de ses cold wallets.

    +

    Les attaquants ont compromis l'infrastructure de Safe{Wallet} elle-même, pas directement les systèmes de Bybit.

    Lazarus
    @@ -177,8 +188,8 @@
    Signataires
    Bybit
    -

    Les signataires de Bybit ont vu une interface apparemment legitime. Ils ont approuve ce qui semblait etre une transaction de routine, mais le contenu reel de la transaction avait ete modifie cote serveur.

    -

    Source : CoinTelegraph, Fevrier 2025

    +

    Les signataires de Bybit ont vu une interface apparemment légitime. Ils ont approuvé ce qui semblait être une transaction de routine, mais le contenu réel de la transaction avait été modifié côté serveur.

    +

    Source : CoinTelegraph, Février 2025

    @@ -187,13 +198,15 @@

    Anatomie de l'attaque (2/3)

    Exploitation du smart contract

    -

    La fausse transaction approuvee par les signataires a modifie la logique du smart contract du cold wallet :

    -
      -
    1. Les signataires approuvent une transaction qui semble normale
    2. -
    3. La transaction reelle modifie le implementation contract du proxy wallet
    4. -
    5. La nouvelle logique donne le controle total a l'attaquant
    6. -
    7. L'attaquant transfere ~400 000 ETH en une seule operation
    8. -
    +
    +

    La fausse transaction approuvée par les signataires a modifié la logique du smart contract du cold wallet :

    +
      +
    1. Les signataires approuvent une transaction qui semble normale
    2. +
    3. La transaction réelle modifie le implementation contract du proxy wallet
    4. +
    5. La nouvelle logique donne le contrôle total à l'attaquant
    6. +
    7. L'attaquant transfère ~400 000 ETH en une seule opération
    8. +
    +
    ~400 000 ETH

    soit environ 1,5 milliard de dollars au cours du jour

    @@ -207,9 +220,9 @@

    Anatomie de l'attaque (3/3)

    Phase de blanchiment

    -

    Une fois les fonds transferes, les attaquants ont lance un processus de blanchiment sophistique et rapide :

    +

    Une fois les fonds transférés, les attaquants ont lancé un processus de blanchiment sophistiqué et rapide :

    -
    400K ETH
    voles
    +
    400K ETH
    volés
    Dispersion
    multiples wallets
    @@ -220,102 +233,110 @@
    Conversion
    en BTC
      -
    • Les fonds sont disperses vers des centaines de wallets intermediaires
    • -
    • Utilisation de mixers (protocoles de melange) pour brouiller l'origine
    • +
    • Les fonds sont dispersés vers des centaines de wallets intermédiaires
    • +
    • Utilisation de mixers (protocoles de mélange) pour brouiller l'origine
    • Passage par des bridges cross-chain (Ethereum vers d'autres blockchains)
    • -
    • Conversion progressive en Bitcoin puis potentiellement en monnaie fiat via des exchanges non-regulees
    • -
    • Utilisation de DEX (exchanges decentralisees) pour eviter le KYC
    • +
    • Conversion progressive en Bitcoin puis potentiellement en monnaie fiat via des exchanges non régulées
    • +
    • Utilisation de DEX (exchanges décentralisées) pour éviter le KYC
    - +
    -

    Impact sur le marche

    +

    Impact sur le marché

    Chute des cours

    -
    ETH : -20%
    -

    Ethereum a perdu plus de 20% de sa valeur dans les heures suivant l'annonce du hack.

    -
    BTC < 90K$
    -

    Le Bitcoin est passe sous la barre symbolique des 90 000 dollars.

    +
    +
    ETH : -20%
    +

    Ethereum a perdu plus de 20% de sa valeur dans les heures suivant l'annonce du hack.

    +
    +
    +
    BTC < 90K$
    +

    Le Bitcoin est passé sous la barre symbolique des 90 000 dollars.

    +
    -

    Effets en chaine

    +

    Effets en chaîne

      -
    • Ruee vers les retraits sur Bybit et d'autres exchanges
    • +
    • Ruée vers les retraits sur Bybit et d'autres exchanges
    • Plusieurs plateformes ont temporairement suspendu les retraits
    • -
    • Panique generalisee sur les marches crypto
    • -
    • Les regulateurs de plusieurs pays ont ouvert des enquetes sur la securite des exchanges
    • -
    • Remise en question de la fiabilite des solutions multisig tierces
    • +
    • Panique généralisée sur les marchés crypto
    • +
    • Les régulateurs de plusieurs pays ont ouvert des enquêtes sur la sécurité des exchanges
    • +
    • Remise en question de la fiabilité des solutions multisig tierces
    -

    Sources : CNA, CoinTelegraph, Fevrier 2025

    +

    Sources : CNA, CoinTelegraph, Février 2025

    - +
    -

    Reponse de Bybit

    -
      -
    • Detection rapide : l'incident a ete identifie en quelques heures
    • -
    • Communication de crise : Bybit a publie des communiques transparents des le jour meme
    • -
    • Bounty program : une prime a ete offerte pour aider a tracer et recuperer les fonds
    • -
    • ZachXBT, analyste blockchain independant, a identifie le Groupe Lazarus comme responsable en quelques heures, via des patterns de transactions reconnaissables
    • -
    • Arkham Intelligence a confirme l'attribution en tracant les wallets vers des adresses liees a des operations precedentes de Lazarus
    • -
    • Le FBI a ensuite officiellement confirme l'implication de la Coree du Nord
    • -
    +

    Réponse de Bybit

    +
    +
      +
    • Détection rapide : l'incident a été identifié en quelques heures
    • +
    • Communication de crise : Bybit a publié des communiqués transparents dès le jour même
    • +
    • Bounty program : une prime a été offerte pour aider à tracer et récupérer les fonds
    • +
    • ZachXBT, analyste blockchain indépendant, a identifié le Groupe Lazarus comme responsable en quelques heures, via des patterns de transactions reconnaissables
    • +
    • Arkham Intelligence a confirmé l'attribution en traçant les wallets vers des adresses liées à des opérations précédentes de Lazarus
    • +
    • Le FBI a ensuite officiellement confirmé l'implication de la Corée du Nord
    • +
    +
    -

    Bybit a declare etre reste solvable tout au long de la crise et a annonce avoir recupere une partie des fonds voles.

    +
    Bybit a déclaré être resté solvable tout au long de la crise et a annoncé avoir récupéré une partie des fonds volés.
    - +
    -

    Attribution a Lazarus

    +

    Attribution à Lazarus

    Comment sait-on que c'est eux ?

    Indices techniques

      -
    • Reutilisation de wallets lies a des hacks precedents (Axie Infinity, Horizon Bridge)
    • -
    • Patterns de blanchiment identiques : meme sequence mixer/bridge/DEX
    • -
    • Infrastructure de commande et controle (C2) recoupee avec des operations anterieures
    • -
    • Timing et methodes coherents avec le modus operandi de BlueNorOff
    • +
    • Réutilisation de wallets liés à des hacks précédents (Axie Infinity, Horizon Bridge)
    • +
    • Patterns de blanchiment identiques : même séquence mixer/bridge/DEX
    • +
    • Infrastructure de commande et contrôle (C2) recoupée avec des opérations antérieures
    • +
    • Timing et méthodes cohérents avec le modus operandi de BlueNorOff

    Confirmations officielles

    -
      -
    • ZachXBT : attribution publique en moins de 24h
    • -
    • Arkham Intelligence : analyse on-chain confirmant les liens
    • -
    • FBI : communique officiel confirmant l'implication de la RPDC
    • -
    • Chainalysis et Elliptic : rapports detailles de tracage des fonds
    • -
    -

    L'attribution en cybersecurite est toujours delicate, mais le faisceau de preuves ici est particulierement solide.

    +
    +
      +
    • ZachXBT : attribution publique en moins de 24h
    • +
    • Arkham Intelligence : analyse on-chain confirmant les liens
    • +
    • FBI : communiqué officiel confirmant l'implication de la RPDC
    • +
    • Chainalysis et Elliptic : rapports détaillés de traçage des fonds
    • +
    +
    +

    L'attribution en cybersécurité est toujours délicate, mais le faisceau de preuves ici est particulièrement solide.

    - +
    -

    Comment se proteger ?

    +

    Comment se protéger ?

    Pour les exchanges / entreprises

      -
    • Auditer regulierement les dependances tierces (supply chain security)
    • -
    • Implementer une approche zero-trust pour les outils de signature
    • -
    • Verifier les transactions au niveau du hardware, pas seulement via une interface web
    • -
    • Deployer du monitoring on-chain en temps reel pour detecter les mouvements anormaux
    • -
    • Pratiquer des exercices de red team reguliers
    • +
    • Auditer régulièrement les dépendances tierces (supply chain security)
    • +
    • Implémenter une approche zero-trust pour les outils de signature
    • +
    • Vérifier les transactions au niveau du hardware, pas seulement via une interface web
    • +
    • Déployer du monitoring on-chain en temps réel pour détecter les mouvements anormaux
    • +
    • Pratiquer des exercices de red team réguliers
    @@ -324,40 +345,42 @@
  • Utiliser des hardware wallets (Ledger, Trezor) pour les fonds importants
  • Ne jamais laisser de grosses sommes sur un exchange
  • Activer l'authentification multi-facteurs (MFA) partout
  • -
  • Se mefier du phishing et de l'ingenierie sociale
  • +
  • Se méfier du phishing et de l'ingénierie sociale
  • Diversifier les lieux de stockage
  • -

    La lecon principale de ce hack : la securite d'un systeme depend aussi de celle de ses prestataires.

    +
    +
    La leçon principale de ce hack : la sécurité d'un système dépend aussi de celle de ses prestataires.
    - + -
    -

    Enjeux geopolitiques

    +
    +

    Enjeux géopolitiques

    -

    Financement etatique

    -

    Les fonds voles ne servent pas a enrichir des individus. Ils alimentent directement les programmes nucleaire et balistique de la Coree du Nord.

    -

    Estimations :

    -
      -
    • ~50% des revenus en devises de la RPDC proviendraient du cybercrime
    • -
    • Environ 1 700 membres dans la seule unite BlueNorOff
    • -
    • Formation des hackers a l'universite Kim Chaek et au Mirim College, avec un passage a Shenyang (Chine)
    • -
    +

    Financement étatique

    +

    Les fonds volés ne servent pas à enrichir des individus. Ils alimentent directement les programmes nucléaire et balistique de la Corée du Nord.

    +
    +
      +
    • ~50% des revenus en devises de la RPDC proviendraient du cybercrime
    • +
    • Environ 1 700 membres dans la seule unité BlueNorOff
    • +
    • Formation des hackers à l'université Kim Chaek et au Mirim College, avec un passage à Shenyang (Chine)
    • +
    +
    -

    Cyberguerre asymetrique

    -

    La Coree du Nord dispose de peu de ressources materielles mais presente une menace asymetrique considerable dans le cyberespace.

    +

    Cyberguerre asymétrique

    +

    La Corée du Nord dispose de peu de ressources matérielles mais présente une menace asymétrique considérable dans le cyberespace.

      -
    • Cout d'une operation cyber : faible
    • +
    • Coût d'une opération cyber : faible
    • Rendement potentiel : milliards de dollars
    • -
    • Risque pour les operateurs : minimal (juridiction nord-coreenne)
    • -
    • Difficulte d'attribution et de riposte pour les victimes
    • +
    • Risque pour les opérateurs : minimal (juridiction nord-coréenne)
    • +
    • Difficulté d'attribution et de riposte pour les victimes
    -

    Les sanctions internationales sont contournees par le cyberespace.

    +

    Les sanctions internationales sont contournées par le cyberespace.

    Sources : US Army report 2020, Nations Unies, Recorded Future

    @@ -369,13 +392,14 @@

    Conclusion

      -
    • Le Groupe Lazarus est l'une des menaces cyber les plus actives et les plus financierement devastatrices au monde
    • -
    • Le hack de Bybit (fevrier 2025) est le plus gros vol de cryptomonnaies de l'histoire : 1,5 milliard de dollars
    • -
    • L'attaque a exploite une faiblesse dans un outil tiers (Safe{Wallet}), pas directement dans les systemes de Bybit
    • -
    • La securite de la supply chain logicielle est un enjeu critique pour toute organisation
    • -
    • Le cybercrime etatique nord-coreen represente un defi geopolitique majeur, a l'intersection de la cybersecurite, de la finance et des relations internationales
    • +
    • Le Groupe Lazarus est l'une des menaces cyber les plus actives et les plus financièrement dévastatrices au monde
    • +
    • Le hack de Bybit (février 2025) est le plus gros vol de cryptomonnaies de l'histoire : 1,5 milliard de dollars
    • +
    • L'attaque a exploité une faiblesse dans un outil tiers (Safe{Wallet}), pas directement dans les systèmes de Bybit
    • +
    • La sécurité de la supply chain logicielle est un enjeu critique pour toute organisation
    • +
    • Le cybercrime étatique nord-coréen représente un défi géopolitique majeur, à l'intersection de la cybersécurité, de la finance et des relations internationales
    -

    En tant que futurs professionnels de l'informatique, comprendre ces attaques et les mecanismes de defense associes est essentiel, quelle que soit votre specialisation.

    +
    +

    En tant que futurs professionnels de l'informatique, comprendre ces attaques et les mécanismes de défense associés est essentiel, quelle que soit votre spécialisation.

    @@ -383,16 +407,16 @@

    Questions ?

    -

    Merci de votre attention.

    +

    echo "Merci de votre attention"

    Sources principales

    • Wikipedia : Lazarus Group
    • CoinTelegraph : "How the Bybit hack happened" (mars 2025)
    • Arkham Intelligence : attribution Lazarus
    • -
    • FBI : communique officiel (fevrier 2025)
    • +
    • FBI : communiqué officiel (février 2025)
    • Chainalysis : Crypto Crime Report 2024/2025
    • -
    • MITRE ATT&CK : G0032 Lazarus Group
    • +
    • MITRE ATT&CK : G0032 Lazarus Group
    • US Army : "North Korean Tactics" (ATP 7-100.2, 2020)
    @@ -417,6 +441,47 @@ width: 1280, height: 720 }); + + // Matrix Rain Animation + (function() { + var canvas = document.getElementById('matrix-rain'); + var ctx = canvas.getContext('2d'); + + function resize() { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + } + resize(); + window.addEventListener('resize', resize); + + var chars = '01'; + var fontSize = 14; + var columns = Math.floor(canvas.width / fontSize); + var drops = []; + + for (var i = 0; i < columns; i++) { + drops[i] = Math.random() * canvas.height / fontSize; + } + + function draw() { + ctx.fillStyle = 'rgba(0, 0, 0, 0.05)'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = '#00ff41'; + ctx.font = fontSize + 'px monospace'; + + for (var i = 0; i < drops.length; i++) { + var text = chars.charAt(Math.floor(Math.random() * chars.length)); + ctx.fillText(text, i * fontSize, drops[i] * fontSize); + + if (drops[i] * fontSize > canvas.height && Math.random() > 0.975) { + drops[i] = 0; + } + drops[i]++; + } + } + + setInterval(draw, 50); + })();