<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bilal Benamrouche</title>
    <description>The latest articles on DEV Community by Bilal Benamrouche (@bilalbenamrouche).</description>
    <link>https://dev.to/bilalbenamrouche</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F871573%2Fe2d065ea-21b6-4d67-b67e-cf9a0cdcb672.jpg</url>
      <title>DEV Community: Bilal Benamrouche</title>
      <link>https://dev.to/bilalbenamrouche</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bilalbenamrouche"/>
    <language>en</language>
    <item>
      <title>Troubleshooting Rancher Cluster Agent Issue</title>
      <dc:creator>Bilal Benamrouche</dc:creator>
      <pubDate>Thu, 26 Oct 2023 13:28:13 +0000</pubDate>
      <link>https://dev.to/stack-labs/troubleshooting-rancher-cluster-agent-issue-bk5</link>
      <guid>https://dev.to/stack-labs/troubleshooting-rancher-cluster-agent-issue-bk5</guid>
      <description>&lt;p&gt;Rancher is a popular Kubernetes management platform that simplifies the deployment and management of Kubernetes clusters. Rancher offers built-in monitoring capabilities to help you gain insights into your cluster's performance and health. However, like any software, issues may arise. In this document, we'll explore one main problem encountered when upgrading a cluster related to Rancher, which is &lt;code&gt;Cluster Agent is not connected&lt;/code&gt; and how to troubleshoot it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rancher Cluster Agent Issues&lt;/strong&gt;&lt;br&gt;
In this case, when trying to upgrade the cluster in Rancher to a newest version of kubernetes using terraform, the cluster enters to an unavailable state and our upgrade ends with error, so we must solve this issue to continue. &lt;/p&gt;

&lt;p&gt;The error was that the cluster_agent component was not connected.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwmvouz3uoey9p9rtmup.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwmvouz3uoey9p9rtmup.png" alt="cluster-agent not connected" width="800" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Troubleshooting Steps&lt;/strong&gt;&lt;br&gt;
In order to resolve the issue we passed several steps of troubleshooting: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.1.&lt;/strong&gt; Verify that the Rancher cattle-cluster-agent deployment in your cluster is running:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl get deployments cattle-cluster_agent -namespace cattle-system&lt;/code&gt; -o yaml&lt;/p&gt;

&lt;p&gt;The result shows that the pods in the deployment cattle-cluster agent were correctly in the state running 😟 .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jcsitowxl36hum8ulc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jcsitowxl36hum8ulc5.png" alt="running pods" width="604" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.2.&lt;/strong&gt; Lets now check the logs of the cluster agent pods: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl logs cattle-cluster-agent-748cc64689-kr6k8 -n cattle-system&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INFO: Using resolv.conf: search cattle-system.svc.cluster.local svc.cluster.local cluster.local nameserver xxxxxxxx options ndots:5
INFO: https://rancher.k3s.cn/ping is accessible
INFO: rancher.k3s.cn resolves to xxxxxxxx
INFO: Value from https://rancher.k3s.cn/v3/settings/cacerts is an x509 certificate
time="2023-09-21T10:51:09Z" level=info msg="Listening on /tmp/log.sock"
time="2023-09-21T10:51:09Z" level=info msg="Rancher agent version v2.6.13 is starting"
time="2023-09-21T10:51:09Z" level=info msg="Connecting to wss://rancher.k3s.cn/v3/connect/register with token starting with xxxxxxxxxxxx"
time="2023-09-21T10:51:09Z" level=info msg="Connecting to proxy" url="wss://rancher.k3s.cn/v3/connect/register"
time="2023-09-21T10:51:09Z" level=info msg="Starting /v1, Kind=Service controller"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, the logs does not really show a significants informations to resolve the issue 😟.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.3.&lt;/strong&gt; We must understand how the cattle-cluster-agent works and how it must be deployed on the cluster. To find that, we check the documentation on Rancher and we found that the cattle-cluster-agent deployment uses a set of tolerations to be deployed on master node and not a worker node, these tolerations on cattle-monitoring-system deployment will  dynamically trigger and take the same tolerations based on taints used on master nodes of the cluster and it must be deployed on these master nodes. Otherwise the cattle-cluster-agent deployment will be deployed with a default tolerations: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F46s40o5tgd66hpxuaa9u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F46s40o5tgd66hpxuaa9u.png" alt="tollerations rules" width="800" height="618"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.4.&lt;/strong&gt; If we check the pods of our cattle-cluster-agent deployement: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl get pods -n cattle-system -o wide&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4xw5r1ioqv0g6ub0akp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4xw5r1ioqv0g6ub0akp.png" alt="pods on workers" width="800" height="45"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We see that cattle-cluster-agent is deployed on the worker nodes not on the master nodes and if we check the toleration present on the deployment, we found the default tolerations, we talked about in 1.3, and not the tolerations based on taints of our master nodes. &lt;/p&gt;

&lt;p&gt;The tolerations on the deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      - effect: NoSchedule
        key: node-role.kubernetes.io/controlplane
        value: "true"
      - effect: NoSchedule
        key: node-role.kubernetes.io/control-plane
        operator: Exists
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tolerations based on taints present on the master nodes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        - effect: NoSchedule
          key: node-role.kubernetes.io/controlplane
          value: "true"
        - effect: NoExecute
          key: node-role.kubernetes.io/etcd
          value: "true"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So this is why our cattle-cluster-agent deployment is considered as unconnected, when we modify the cluster for the upgrade, the cluster-agent is not triggered dynamically with the correct tolerations to be deployed on the master nodes 👌.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Solutions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To resolve this problem, we consider two suggestions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.1.&lt;/strong&gt; Now we know that the cattle-cluster-agent deployment must trigger on the taints present on the master nodes. To do that, we apply a new taint on all the master nodes (in our case three master nodes):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;     kubectl taint nodes master-km01 test=true:NoSchedule
     kubectl taint nodes master-km02 test=true:NoSchedule
     kubectl taint nodes master-km03 test=true:NoSchedule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;wait a few seconds and we check the cattle-cluster-agent again, we see that the deployment is now trigger on the tolerations of the master nodes and it is running on the them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        - effect: NoSchedule
          key: test
          value: "true"
        - effect: NoSchedule
          key: node-role.kubernetes.io/controlplane
          value: "true"
        - effect: NoExecute
          key: node-role.kubernetes.io/etcd
          value: "true"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the cluster is now on the active state:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9djz537om6ghzrqda5uj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9djz537om6ghzrqda5uj.png" alt="cluster on active state" width="800" height="74"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that we can remove the added taint with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;     kubectl taint nodes master-km01 test=true:NoSchedule-
     kubectl taint nodes master-km02 test=true:NoSchedule-
     kubectl taint nodes master-km03 test=true:NoSchedule-
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2.2.&lt;/strong&gt; Before modifying the cluster for upgrade, make sure to ignore the import manifest of the cattle-cluster-agent deployment so it will not be re-installed. In our case using terraform, we have to comment the line on terraform code which is responsible of the import manifest and apply the terraform after:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#rke_addons =https://url_to_your_manifest/v3/import/xxxxxxxxxxx_c-jpg8f.yaml&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Conclusion&lt;/strong&gt;&lt;br&gt;
Troubleshooting Rancher Cluster Agent issue can be challenging, but by following the steps outlined in this document, you can identify and resolve common problems that may arise. If the issues persist, consider consulting Rancher's official documentation or seeking help from the Rancher community for more specific guidance.&lt;/p&gt;

&lt;p&gt;Thanks for reading! I’m Bilal, Cloud DevOps consultant at &lt;a href="//stack-labs.com"&gt;Stack Labs&lt;/a&gt;.&lt;br&gt;
If you want to join an enthusiast Infra cloud team, please contact &lt;a href="https://www.welcometothejungle.com/fr/companies/stack-labs" rel="noopener noreferrer"&gt;us&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>rancher</category>
      <category>terraform</category>
    </item>
    <item>
      <title>SSTIC 2022 - Symposium sur la sécurité des technologies de l'information et des communications</title>
      <dc:creator>Bilal Benamrouche</dc:creator>
      <pubDate>Fri, 17 Jun 2022 09:52:58 +0000</pubDate>
      <link>https://dev.to/stack-labs/sstic-2022-symposium-sur-la-securite-des-technologies-de-linformation-et-des-communications-5dpp</link>
      <guid>https://dev.to/stack-labs/sstic-2022-symposium-sur-la-securite-des-technologies-de-linformation-et-des-communications-5dpp</guid>
      <description>&lt;p&gt;Dans cet article, nous allons vous résumer quelques présentations de la conférence SSTIC, Symposium sur la sécurité des technologies de l'information et des communications, qui a eu lieu à Rennes du 1er au 3 juin 2022.&lt;/p&gt;

&lt;h1&gt;
  
  
  Building Open Security Tooling For Fun &amp;amp; Profit (Conférence d'ouverture) - Colin O'Flynn
&lt;/h1&gt;

&lt;p&gt;La conférence SSTIC commence son premier jour par la présentation de Colin O’Flynn sur les outils open source utilisés dans la sécurité matérielle. Cette présentation nous parle de travaux actuels et futurs dans le domaine de l'outillage de sécurité matérielle, y compris des projets tels que l'analyse de puissance et l'outillage d'injection de fautes.&lt;/p&gt;

&lt;p&gt;Les différents points de la présentation portaient sur :&lt;/p&gt;

&lt;h2&gt;
  
  
  Les outils de sécurité matérielle open source
&lt;/h2&gt;

&lt;p&gt;Dans cette partie des solutions académiques matérielles de test et d’analyse sont présentées. Ces outils permettent de faire (comme exemple) l’analyse side channel d’un dispositif cryptographique AVR XMEGA.&lt;/p&gt;

&lt;p&gt;On y présente notamment ChipWhisperer, un outil d’attaque side channel sur les dispositifs embarqués permettant de valider la résistance de ces systèmes embarqués à des attaques. En particulier, ChipWhisperer se concentre sur l'analyse de la puissance qui utilise les informations récupérées par la consommation d'énergie d'un dispositif pour mettre en oeuvre une attaque, mais également sur les attaques de tension et d'horloge qui perturbent brièvement l'alimentation ou l'horloge d'un dispositif pour provoquer un comportement involontaire (comme bypasser une vérification de mot de passe).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/newaetech/chipwhisperer" rel="noopener noreferrer"&gt;https://github.com/newaetech/chipwhisperer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1njg1u1xhh17dwi6e3iw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1njg1u1xhh17dwi6e3iw.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On établit également une comparaison entre le coût de développement de ces outils et le bénéfice de lancer des affaires en les commercialisant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Outils de sécurité, nouvelle génération
&lt;/h2&gt;

&lt;h3&gt;
  
  
  OpenTitan
&lt;/h3&gt;

&lt;p&gt;OpenTitan est le premier projet open source qui élabore un modèle de référence transparent et de haute qualité ainsi que des directives d'intégration pour les puces RoT (root of trust) en silicium.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://opentitan.org/" rel="noopener noreferrer"&gt;https://opentitan.org/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  PicoEMP - Open Source EMFI
&lt;/h3&gt;

&lt;p&gt;L’une des méthodes de vérification de fiabilité matériel est l’injection de faute qui permet d’injecter des données dans le dispositif matériel, voir son comportement et décider s'il est robuste aux défauts ou pas. Un outil qui permet de faire de l’injection de fautes est présenté dans cette partie, il s’agit d’une bobine contrôlée à l’aide de matériels électronique (Ras-Pi). Il permet d’envoyer dans la bobine du courant électrique dans le but de générer un champ magnétique avec lequel on pourra injecter des fautes dans le dispositif cible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncxdlndbgdtuqja6cd56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncxdlndbgdtuqja6cd56.png" alt="Image description" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/newaetech/chipshouter-picoemp" rel="noopener noreferrer"&gt;https://github.com/newaetech/chipshouter-picoemp&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Analyse de consommation énergétique
&lt;/h3&gt;

&lt;p&gt;Une autre méthode présentée, elle permet également d’analyser la fiabilité d’un système matériel, il s’agit de l’analyse de consommation. Cette méthode permet de comparer la consommation du système en fonction des calculs et les algorithmes cryptographiques utilisés et essayer d’en déduire des informations utiles pour le déchiffrement.&lt;/p&gt;

&lt;p&gt;La conférence est conclue par une démo sur le dispositif d’injection de fautes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://static.sstic.org/videos2022/1080p/ouverture_2022.mp4" rel="noopener noreferrer"&gt;https://static.sstic.org/videos2022/1080p/ouverture_2022.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Smartphone et forensique : comment attraper Pegasus for fun and non-profit - Etienne Maynier
&lt;/h1&gt;

&lt;p&gt;Etienne Maynier est chercheur pour le programme d’Amnesty Tech, filiale d’Amnesty International constituée d’avocats, de hackers et de chercheurs en sécurité&lt;/p&gt;

&lt;p&gt;Dans cette présentation, Etienne Maynier, nous présente son approche forensic sur le logiciel Pegasus, un outil d’espionnage développé par NSO Group. Ce logiciel est l’un des plus employés par certains pays et entités juridiques afin d’obtenir des informations par des moyens douteux (utilisation massive de vulnérabilités 0-day). Il a été utilisé par exemple dans l’affaire d’Ahmed Mansoor, blogueur activiste émirien des droits de l’homme condamné à 10 ans de prison ferme pour atteinte à la sécurité de l’état.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0jmbtvo6lm59mv9bco8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0jmbtvo6lm59mv9bco8.png" alt="Image description" width="760" height="982"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Le projet donne naissance au &lt;a href="https://github.com/mvt-project/mvt" rel="noopener noreferrer"&gt;Mobile Verification Toolkit&lt;/a&gt;, un framework permettant d’automatiser le processus de récolte de traces forensic d’éventuelle infection par Pegasus. Les traces incluent notamment :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;les liens malveillants reçus par SMS sur le téléphone de la victime&lt;/li&gt;
&lt;li&gt;Historique de navigation permettant de détecter les attaques par redirection d’url&lt;/li&gt;
&lt;li&gt;Logs réseau du téléphone : ces logs permettent de faire le lien entre un processus et son utilisation du réseau  (ces logs on permis d’établir une liste de noms de process Pegasus),&lt;/li&gt;
&lt;li&gt;ID status Cache : contient des traces du compte iCloud qui a intéragi avec le téléphone, ce qui permet de découvrir les compte iCloud de NSO Group ainsi que de pouvoir avoir le nom de leurs clients,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MVT permet de construire une timeline des attaques afin de mieux comprendre les différents schémas d’attaque utilisés par NSO Group.&lt;/p&gt;

&lt;p&gt;Cet outil a permis de lever le voile sur la vulnérabilité &lt;a href="https://cve.report/CVE-2021-30860" rel="noopener noreferrer"&gt;Megalodon&lt;/a&gt; et son exploitation sur iPhone ainsi que de mieux comprendre l’utilisation de Pegasus à des fins d’espionnage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://static.sstic.org/videos2022/1080p/smartphone_et_forensic__comment_attraper_pgasus_for_fun_and_non-profit.mp4" rel="noopener noreferrer"&gt;https://static.sstic.org/videos2022/1080p/smartphone_et_forensic__comment_attraper_pgasus_for_fun_and_non-profit.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Analyse forensique de la mémoire de GnuPG - Nils Amiet &amp;amp; Sylvain Pelissier
&lt;/h1&gt;

&lt;p&gt;GnuPG est l’implémentation GNU du standard OpenPGP. Cet outi permet la transmission de messages signés et chiffrés permettant de garantir l’authenticité, l’intégrité et la confidentialité.&lt;/p&gt;

&lt;p&gt;La présentation est focalisée sur l’analyse forensique de GnuPG (GPG). L’agent gpg-agent permet de mettre en cache les mots de passe dans le but de faciliter et minimiser les accès mémoire et gagner en temps d’exécution. Dans un premier temps, ce travail met en évidence un problème de nettoyage de la mémoire de libgcrypt, qui permet de lire 8 octets du mot de passe dans le cache de GPG. Ensuite, il démontre des techniques générales pour récupérer les mots de passe complets dans le cache de GPG à partir d'une image de la mémoire de gpg-agent ou du système complet. Pour démontrer leur travail, deux modules d'extension pour Volatility sont fournis, ils permettent de récupérer un mot de passe stocké dans le cache de GPG.&lt;/p&gt;

&lt;p&gt;Dans cette présentation le chiffrement AES est utilisé avec une fonction de dérivation de clés. Ces clés sont stockées en mémoire. Avec l’image mémoire, le but est de retrouver l’ensemble de clés stockées en mémoire et ensuite les utiliser avec l’outil Volatility, un outil open source pour l'extraction l'extraction d'artefacts numériques à partir d'échantillons de mémoire volatile (RAM), afin de récupérer les mots de passe (démo dans la vidéo).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://static.sstic.org/videos2022/1080p/gnupg_memory_forensics.mp4" rel="noopener noreferrer"&gt;https://static.sstic.org/videos2022/1080p/gnupg_memory_forensics.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Surface d’attaque des solutions Active Directory Self-Service
&lt;/h1&gt;

&lt;p&gt;Antoine Cervoise et Wilfried Becard ont présenté plusieurs vulnérabilités et scénarios d’attaque sur les solutions AD Self Service.&lt;/p&gt;

&lt;p&gt;Certaines entreprises ont recourt à ces services d’AD Self Service (abrévié ADSS) **afin de permettre à leurs employés de réinitialiser leur mot de passe de manière autonome.&lt;/p&gt;

&lt;p&gt;L’ADSS permet de réduire le nombre d’appels au support, de fluidifier le processus de réinitialisation et permet ainsi pour l’entreprise de réduire le coût du support. On peut également lister d’autres avantages comme le fait de pouvoir réinitialiser le mot de passe même si le support est fermé ou encore de réinitialiser son mot de passe sans être connecté aux infrastructures de l’entreprise en exposant la solution sur internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture d’un ADSS
&lt;/h2&gt;

&lt;p&gt;Voici l’architecture type d’un ADSS :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxbwnxn0fafd2a6hiqpe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxbwnxn0fafd2a6hiqpe.png" alt="Image description" width="725" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Le serveur de la solution ADSS héberge une application Web qui possède un compte de service ainsi qu’un compte du domaine qui lui permet de réinitialiser les mots de passes des utilisateurs.&lt;/p&gt;

&lt;p&gt;Le client peut être un client lourd, un navigateur ou un mobile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Surface et scénario d’attaque
&lt;/h2&gt;

&lt;p&gt;Voici la surface d’attaque d’un ADSS :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Client lourd pré-authentifié&lt;/li&gt;
&lt;li&gt;Process de déploiement des clients lourds&lt;/li&gt;
&lt;li&gt;Application web qui a accès à un compte privilégié de l’AD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et les scénarios d’attaque envisagés :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Client lourd

&lt;ul&gt;
&lt;li&gt;Attaquant avec un accès physique à l’ordinateur d’un employé&lt;/li&gt;
&lt;li&gt;Employé malicieux essayant d’élever ses privilèges&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Serveur web

&lt;ul&gt;
&lt;li&gt;Exploitation d’une vulnérabilité présente dans l’API du service web&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Ils ont ensuite compromis le client lourd en présentant un fausse application web qu’ils contrôlent car le client lourd peut être configuré pour autoriser les connexions en HTTP ou ne vérifie pas le certificat envoyé par le serveur.&lt;/p&gt;

&lt;p&gt;Une fois connecté sur le faux service, l’application web peut grâce à la ligne suivante faire apparaître une fenêtre d’impression :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;document.print();&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ce qui permet par la suite d’invoquer une invite de commande avec les droits système.&lt;/p&gt;

&lt;p&gt;Wilfried a ensuite présenté la partie exploitation du serveur de l’ADSS, que je vous laisse regarder dans la vidéo (lien à la fin de l’article).&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommandations
&lt;/h2&gt;

&lt;p&gt;Voici les bonnes pratiques à appliquer pour réduire le risque lié à l’utilisation d’un ADSS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Client lourd :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ne pas déployer le client lourd sur les serveur (et à fortiori un contrôleur de domaine)&lt;/li&gt;
&lt;li&gt;Mettre à jour le client lourd&lt;/li&gt;
&lt;li&gt;Forcer la vérification des certificats&lt;/li&gt;
&lt;li&gt;Chiffrer les disques de l’ordinateur&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Serveur :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mettre à jour le serveur&lt;/li&gt;
&lt;li&gt;Réduire les privilèges du compte du domaine au strict minimum&lt;/li&gt;
&lt;li&gt;Utiliser les solutions déjà existantes, notamment pour le déploiement des clients lourds on peut utiliser les GPO ou SCCM&lt;/li&gt;
&lt;li&gt;Restreindre l’accès à la partie admin (filtrage IP par ex.)&lt;/li&gt;
&lt;li&gt;Mettre en place un CAPTCHA pour empêcher le bruteforce&lt;/li&gt;
&lt;li&gt;Mettre un WAF en frontal pour intercepter les attaques&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Un grand merci à eux pour leur présentation très claire et instructive !&lt;br&gt;
Si vous souhaitez regarder leur présentation, la vidéo est disponible sur le site du SSTIC :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://static.sstic.org/videos2022/1080p/surface_dattaque_des_solutions_active_directory_self_service.mp4" rel="noopener noreferrer"&gt;https://static.sstic.org/videos2022/1080p/surface_dattaque_des_solutions_active_directory_self_service.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Practical timing and SEMA on embedded OpenSSL’s ECDSA — Adrian Thillard, Franck Rondepierre, Guenael Renault, Julien Eynard
&lt;/h1&gt;

&lt;p&gt;Les attaques par temps de réponse sont une classe d'attaques par canal auxiliaire permettant à un adversaire de récupérer des données sensibles en observant le temps d'exécution d'un algorithme sous-jacent. Plusieurs bibliothèques cryptographiques se sont révélées vulnérables à ces attaques, permettant souvent des récupérations de clés privées. Bien que des articles récents aient montré que ces menaces sont bien connues des développeurs, ces bibliothèques sont souvent laissées sans correctif, en raison de la charge perçue de la mise en œuvre de contre-mesures efficaces. Au lieu de cela, de nombreuses bibliothèques ont choisi de modifier leur modèle de menace et de ne plus considérer les attaques où l'adversaire a un accès local à la cible.&lt;/p&gt;

&lt;p&gt;Adrian Thillard nous présente ces travaux sur la recherche d'attaques par temps de réponse dans la librairie OpenSSL.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://static.sstic.org/videos2022/1080p/practical_timing_and_sema_on_embedded_openssls_ecdsa.mp4" rel="noopener noreferrer"&gt;https://static.sstic.org/videos2022/1080p/practical_timing_and_sema_on_embedded_openssls_ecdsa.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  DroidGuard: A Deep Dive into SafetyNet - Romain Thomas
&lt;/h1&gt;

&lt;p&gt;SafetyNet est un composant Android développé par Google pour vérifier l’intégrité des appareils. Ces vérifications sont utilisées par les développeurs pour empêcher l’exécution de leurs applications sur des appareils ne respectant pas certaines contraintes de sécurité (appareil rooté, firmware customisé, émulé, bootloader modifié).&lt;/p&gt;

&lt;p&gt;SafetyNet permet aux développeurs d'applications critiques de s'assurer que leurs applis ne tournent pas dans des environnements compromis (jeux vidéos, fintech, apps de messagerie).&lt;/p&gt;

&lt;p&gt;La conférence est un état de l’art de l’implémentation courante de SafetyNet et de ses mécanismes internes. On présente plus particulièrement le fonctionnement du module DroidGuard : architecture de la VM, ses mécanismes internes ainsi que les différents security checks effectués par SafetyNet pour détecter des outils comme Magisk, des émulateurs, des appareils rootés et même Pegasus.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fonctionnement de SafetyNet
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyjl0hbw1x343apvb9o0z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyjl0hbw1x343apvb9o0z.png" alt="Image description" width="800" height="770"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SafetyNet est une API que le développeur appelle en fournissant un &lt;strong&gt;nonce&lt;/strong&gt; pour éviter des attaques de rejeu et une &lt;strong&gt;API_KEY&lt;/strong&gt; pour l’authentification côté &lt;strong&gt;Google Backend&lt;/strong&gt;. Le SDK de SafetyNet va packager ces informations et les envoyer à travers un Intent (format de message sur Android) à GMS Core.&lt;/p&gt;

&lt;p&gt;GMS Core effectue des checks d’intégrité sur le téléphone (vérifications de la présence de certains binaires liés au rootage notamment) et package un message &lt;strong&gt;Protobuf&lt;/strong&gt; (format de sérialisation de données structurées) qui va contenir des informations sur l’état du téléphone, il va également déclencher une requête à DroidGuard avec le message Protobuf.&lt;/p&gt;

&lt;p&gt;DroidGuard effectue une requête au Backend Google avec le message Protobuf auquel est ajouté un token unique. Le Backend Google détermine si l’appareil est intègre, signe le message avec une clé cryptographique et renvoie le message signé. Enfin, GMS Core renvoie le message signé à l’application qui a fait la demande.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://static.sstic.org/videos2022/1080p/droidguard_a_deep_dive_into_safetynet.mp4" rel="noopener noreferrer"&gt;https://static.sstic.org/videos2022/1080p/droidguard_a_deep_dive_into_safetynet.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;OASIS: un framework pour la détection d'intrusion embarquée dans les contrôleurs Bluetooth Low Energy&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;La présentation est centrée sur la sécurité d’un protocole largement utilisé dans la communication IoT, le protocole Bluetooth Low Energy. Ils parlent dans un premier temps le principe de protocole BLE et ses différents avantages, ils présentent ensuite, OASIS, un Framework générique permettant d’automatiser l’instrumentation des contrôleurs BLE, pour y inclure des modules de détection d’attaques.&lt;/p&gt;

&lt;p&gt;ça existe un certain nombre d’attaques sur les systèmes embarqués visant les contrôleurs Bluetooth Low Energy. Introduire un moyen de détection d’attaque sur ces contrôleurs va donc apporter un vrai avantage, ils expliquent donc le contexte d’OASIS avec des solutions de détection sur trois types d'attaques différentes.&lt;/p&gt;

&lt;h2&gt;
  
  
  OASIS: Module de détection - GATTACKER
&lt;/h2&gt;

&lt;p&gt;Le principe de ce module est d’analyser en temps réel le délai entre l’émission de deux paquets par un même émetteur. Dans le cas d’une attaque, l’émission d’autres paquets par l’attaquant va impliquer une superposition de ces parquets avec le trafiquer légitime ce qui va mener à la réduction de ce temps d’émission entre deux paquets. On collecte les timestamps de chaque paquet d’un même émetteur et on calcule le temps intertrame successif, ensuite on estime l’intervalle minimum et on établi un seuil correspondant au pire cas ligitime.&lt;/p&gt;

&lt;h2&gt;
  
  
  OASIS: Module de détection - BTLEJUICE
&lt;/h2&gt;

&lt;p&gt;Ce module de détection est basé sur le principe que le périphérique reçoit une demande de connexion et en parallèle de la validation et l’établissement de cette connexion, il initie également une opération de scan. Donc on peut détecter l’attaque si on remarque une émission de paquet utilisant le même Bluetooth Devise Adresse de périphérique en parallèle de la connexion.&lt;/p&gt;

&lt;h2&gt;
  
  
  OASIS: Module de détection - BTLEJACK
&lt;/h2&gt;

&lt;p&gt;Ce module permet de détecter le type d’attaque de détournement de connexion (Hijacking), le but est d’analyser en temps réel le nombre de paquets consécutifs émis par le slave dont le CRC est invalide&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture d’OASIS
&lt;/h2&gt;

&lt;p&gt;Dans la deuxième partie de la présentation, l’architecture OASIS est présentée. elle est basée sur trois principaux blocs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Un firmware analyser&lt;/strong&gt; basé sur la rétro-ingénierie automatique, où on procède à faire une analyse automatique de firmware du contrôleur BLE et générer automatiquement les fichiers de la configuration et du wrapper décrivant une cible matérielle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Des logiciels de détection embarqués&lt;/strong&gt; qui sont indépendants de la plate-forme, ils implémentent le calcul des métriques (temps intertrames).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build system&lt;/strong&gt; qui, en fonction des fichiers en entrée, va générer une liste de patches à appliquer sur le contrôleur matériel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gstc2hjcl27taal1ohg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gstc2hjcl27taal1ohg.png" alt="Image description" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La présentation est conclue par des travaux expérimentaux montrant l’efficacité de dispositif de détection implémenté - OASIS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://static.sstic.org/videos2022/1080p/oasis_un_framework_pour_la_detection_dintrusion_embarquee_dans_les_controleurs_bluetooth_low_energy.mp4" rel="noopener noreferrer"&gt;https://static.sstic.org/videos2022/1080p/oasis_un_framework_pour_la_detection_dintrusion_embarquee_dans_les_controleurs_bluetooth_low_energy.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  TPM is not the holy way
&lt;/h1&gt;

&lt;p&gt;Depuis quelque temps, les ordinateurs embarquent des puces sécurisées appelées TPM. Cette puce, appelée Trusted Platform Module (TPM), est utilisée pour générer et protéger les secrets utilisés par l'ordinateur. Elle est par exemple utilisée lors du boot d’un OS, et permet à chaque composant de vérifier cryptographiquement le composant sous-jacent avant de l'exécuter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ym9ml08k9mrywltvj87.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ym9ml08k9mrywltvj87.png" alt="Image description" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Benoît Forgette nous présente durant cette conférence les travaux qu'il a pu mener sur l'émulation du système d'exploitation et l'interception des communications vers le TPM. Ces travaux lui ont permis de mettre en évidence des mauvaises configurations sur cette puce.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>ssi</category>
      <category>security</category>
      <category>challenge</category>
    </item>
  </channel>
</rss>
