PROJET AUTOBLOG


Korben

source: Korben

⇐ retour index

Sniffnet – Surveillez votre trafic réseau en temps réel

lundi 6 février 2023 à 09:00

Si vous vous demandez ce qui transite toute la journée par votre carte réseau et que vous voulez voir ça en temps réel, il existe de nombreux outils, dont Sniffnet qui est totalement open source et qui va vous permettre de surveiller tout ça.

Sniffnet est développé en Rust et fonctionne aussi bien sous Linux, macOS et Windows. Une fois l’adaptateur réseau sélectionné, vous verrez des graphiques (rafraichis en temps réel) présentant la quantité de paquets et d’octets transitant par seconde.

Vous pourrez alors classer ça par quantité de paquets, par quantités d’octets ou par fraicheur de la connexion :-).

Les paquets seront alors filtrés par protocole (HTTP, DNS, HTTPS, DHCP…etc.) et vous pouvez dès le lancement de l’application, choisir justement le protocole que vous voulez observer. Par contre, vous ne verrez pas le contenu de ces paquets comme on pourrait le faire avec un Wireshark. Sniffnet permet simplement de faire des statistiques et vous pourrez même exporter un rapport au format TXT qui contiendra toutes les informations suivantes :

Si comme moi, vous ne trouvez pas le bouton d’export, il se situe en bas à droite, mais pour le voir, il vous faudra agrandir la fenêtre au maximum.

Sinon, ça vous intéresse ?

Alors pour commencer, il vous faut Rust à installer comme ceci sous macOS et Linux (pour Windows, cliquez ici) :

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Ouvrez ensuite un nouveau terminal, pour recharger votre Shell et entrez la commande suivante pour installer Sniffnet :

cargo install sniffnet

La bestiole va alors s’installer et vous permettre d’un seul coup d’oeil de voir l’ensemble de votre trafic réseau.

J’ai bien aimé la fonction « affichage clair » / « affichage sombre » qui n’est ni plus ni moins qu’une inversion de couleur. Très malin (et pas si moche finalement).

+ d’infos ici.

Comment exporter les mots de passe enregistrés dans Firefox

dimanche 5 février 2023 à 09:00

Si vous avez Firefox et que vous vous êtes amusé à y enregistrer tous vos mots de passe, bah c’est pas ouf. Parce que ça peut s’extraire un peu trop rapidement / facilement.

Alors bien sûr Firefox propose de mettre un mot de passe maitre sur son gestionnaire de mot de passe pour sécuriser le machin, mais si vous souhaitez migrer vers un truc un peu plus costaud comme Bitwarden ou Keepass, voici un script python qui va vous aider à extraire vos mots de passe contenus dans Firefox.

Ce script s’appelle tout simplement Firefox Decrypt et il fonctionne aussi bien avec Firefox d’origine ou des dérivés comme Seamonkey, Waterfox, SamanthaFox et même Thunderbird. Évidemment, vous devrez connaitre le mot de passe maitre si vous en avez mis un.

Et au final, vous obtiendrez soit une sortie console, soit un CSV, un fichier texte, un JSON..etc. Il y a même un format pass spécifique pour ce gestionnaire de mots de passe en ligne de commande.

Une fois le script récupéré sur Github, vous n’avez qu’à le lancer avec les paramètres suivants pour par exemple récupérer un CSV :

python firefox_decrypt.py --format csv

Il ira chercher tout ça dans le répertoire profiles de Firefox ou de Thunderbird et si vous l’avez mis à un endroit un peu exotique, vous pouvez spécifier son emplacement avec ce paramètre :

python firefox_decrypt.py /répertoire/profiles.ini/

Bon export à tous !

Projet OSV – Votre allié pour débusquer et collecter les vulnérabilités

samedi 4 février 2023 à 09:00

Que vous soyez chercheur en sécurité ou développeur, vous savez sans doute à quel point il est important de maintenir votre code et vos dépendances à jour afin d’éviter au max les vulnérabilités. Sauf que voilà, c’est super galère, notamment quand le projet utilise de nombreuses libs externes.

Bref, pour vous aider, il y a OSV pour Open Source Vulnerabilities. Il s’agit d’un projet qui vous permettra de manipuler et trouver facilement toutes les vulnérabilités connues qui se cachent vos dépendances open source.

Le projet se compose de services comme ce site web, une API ou encore des outils d’analyses capables d’agréger, et indexer les données concernant les vulns… et également d’une base de données ouverte utilisant un format de données dédiées aux vulnérabilités.

Ce schéma OSV est super facile a intégrer et à utiliser et vient comme ça remédier à de nombreux problèmes liés aux vulnérabilités dans les logiciels open source. Ainsi, vous ne le savez peut-être pas, mais des bases de données de vulnérabilités comme GitHub Security Advisories, PyPA, RustSec…etc. utilisent ce schéma OSV.

Si vous voulez voir un exemple réel de ce format JSON, cliquez ici.

{
  "schema_version": "1.3.0",
  "id": "GHSA-c3g4-w6cv-6v7h",
  "modified": "2022-04-01T13:56:42Z",
  "published": "2022-04-01T13:56:42Z",
  "aliases": [ "CVE-2022-27651" ],
  "summary": "Non-empty default inheritable capabilities for linux container in Buildah",
  "details": "A bug was found in Buildah where containers were created ...",
  "affected": [
    {
      "package": {
        "ecosystem": "Go",
        "name": "github.com/containers/buildah"
      },
      "ranges": [
        {
          "type": "SEMVER",
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "1.25.0"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/containers/buildah/commit/..."
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/containers/buildah"
    }
  ]
}

Pour installer le scanner de vulnérabilités d’OSV, ouvrez un terminal et lancez la commande d’install en Go suivante :

go install github.com/google/osv-scanner/cmd/osv-scanner@v1

Après pour scanner du code, lancez l’outil comme ceci :

osv-scanner -r /repertoire

Vous aurez plus d’infos sur le scanner ici sur Github.

Bref, c’est un projet super utile, que ce soit pour scanner vos propres projets, faire de l’analyse ou tout simplement créer votre propre base de vulns maison, sans avoir à réinventer la roue. En rendant votre base de données disponible au format OSV, vous permettrez à d’autres personnes de l’utiliser, de contribuer ou mutualiser la donnée.

Merci à Letsar pour le partage !

RuboCop : le flic du code qui ne plaisante pas avec les règles de style !

vendredi 3 février 2023 à 09:00

Bien que je ne sois pas un grand expert Ruby, je pense à vous qui aimez ce langage puisqu’aujourd’hui on va parler de RuboCop !

Cet outil génial et totalement libre va vous aider à améliorer votre code Ruby en un clin d’œil !

Vous savez comment c’est : On écrit du code, on se concentre sur la logique de son algo, et on oublie les petits détails de style qui font toute la différence comme l’indentation ou tout ce qu’on peut retrouver comme « Bonnes pratiques » dans le guide de styles communautaire de Ruby.

C’est là que RuboCop entre en jeu.

Il va vous obliger à suivre la plupart des règles énoncées dans le guide de style communautaire Ruby et va vous permettre de mettre en forme votre code. Mais RuboCop, c’est plus qu’un simple « linter » puisqu’il est également capable de signaler les problèmes présents dans votre code. Il peut ainsi les corriger automatiquement et ça, c’est vraiment cool parce que la vie est assez dure comme ça ;-).

RuboCop est super paramétrable puisque la plupart de ses comportements peuvent être modifiés dans la config et vous pouvez même créer vos propres règles si vous en avez besoin ! De plus, il est compatible avec toutes les implémentations de Ruby et dispose de nombreuses extensions prêtes à l’emploi (par exemple rubocop-rails, rubocop-rspec, rubocop-performance et rubocop-minitest). Enfin, il est également compatible avec de nombreux éditeurs/IDE et est utilisé par de nombreux services en ligne tels que HoundCI, Sider et CodeClimate.

Au niveau installation, rien de complexe. Vous pouvez l’installer en utilisant la commande suivante :

gem install rubocop

Si vous préférez utiliser Bundler, il suffit d’ajouter une ligne pour RuboCop dans votre Gemfile (en mettant, l’option require à false, puisque c’est un outil autonome) :

gem 'rubocop', require: false

RuboCop, est conçu pour rester stable dans ses versions mineures, que ce soit en termes d’API ou de configuration des règles. Vous pouvez donc l’utiliser en toute confiance sans vous inquiéter de possibles ruptures de compatibilité.

Pour l’utiliser, il vous suffit alors de lancer la commande suivante directement dans le dossier de votre projet ruby :

rubocop

Et voilà !

RuboCop va parcourir votre code et vous signaler tous les problèmes qu’il a trouvés. Vous pouvez même lui demander de corriger automatiquement certains problèmes en utilisant l’option --auto-correct.

À tester d’urgence. Cliquez ici pour en savoir plus.

Transformez vos commandes curl en Python, JavaScript, PHP, R, Go et bien d’autres avec CurlConverter

jeudi 2 février 2023 à 09:00

Si vous codez des outils qui utilisent des APIs ou d’autres services en ligne pour récupérer de la donnée ou en envoyer, j’imagine que vous adorez vous plonger dans leur documentation. En général, on y trouve des exemples de code qui expliquent comment « discuter » avec l’API, et ces exemples utilisent le plus souvent la commande curl. Quand on a de la chance, il y a aussi des exemples en python ou en JS voire JavaScript, mais ça ne va pas chercher plus loin.

Alors, comment faire pour gagner du temps si vous devez écrire du R, Go, C#, Ruby, Rust, Elixir, Java, MATLAB, Dart, CFML, Ansible URI ou encore du JSON ?

Et bien avec le site CurlConverter, vous allez pouvoir convertir toutes ces commandes curl dans le langage de votre choix. Il est également disponible avec la commande curlconverter que vous pouvez installer sur votre machine.

Par exemple, cette commande curl d’authentification :

curl "https://example.com/" -u "some_username:some_password"

Devient en DART le code suivant :

import 'dart:convert';
import 'package:http/http.dart' as http;

void main() async {
  var uname = 'some_username';
  var pword = 'some_password';
  var authn = 'Basic ' + base64Encode(utf8.encode('$uname:$pword'));

  var url = Uri.parse('https://example.com/');
  var res = await http.get(url, headers: {'Authorization': authn});
  if (res.statusCode != 200) throw Exception('http.get error: statusCode= ${res.statusCode}');
  print(res.body);
}

Ou en C# :

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://example.com/");

request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("some_username:some_password")));

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();

CurlConverter sait interpréter la syntaxe Bash, tels que les chaînes de caractères ANSI-C et les fichiers pipés. Il connaît également tous les arguments de curl (il y en a plus de 300 !!), y compris ceux qui ont été supprimés des versions récentes (et donc ignorés la plupart du temps). Il peut également convertir les données JSON en objets natifs et génère le code capable de le lire soit à partir d’un fichier ou d’un flux en entrée.

Malheureusement, seul le protocole HTTP est pris en charge, et les générateurs de code pour d’autres langages sont moins complets que le générateur pour Python.

Pour utiliser curlconverter, vous pouvez l’installer en tant que bibliothèque JavaScript avec la commande

npm install curlconverter

Ou comme outil utilisable en ligne de commande comme ceci :

npm install --global curlconverter

Voici un exemple de code généré à partir de cette commande :

$ curlconverter --data "hello=world" example.com
import requests

data = {
    'hello': 'world',
}

response = requests.post('http://example.com', data=data)

Bref, super pratique pour ceux qui veulent se simplifier le processus de création de requêtes HTTP dans leur langage favori, tout en se reposant sur des commandes curl plus familières.