Créer un scanner NetBIOS en Python

C’est quoi le protocole NetBIOS ?

Le protocole NetBIOS (Network Basic Input/Output System) est un protocole de communication de niveau application utilisé pour permettre aux ordinateurs de communiquer sur un réseau local. Il a été développé par IBM dans les années 1980 et est devenu populaire avec l’introduction de Windows.

Le protocole NetBIOS permet aux ordinateurs de partager des ressources, telles que des imprimantes et des fichiers, sur un réseau local. Il utilise une série de commandes et de réponses pour permettre aux ordinateurs de découvrir les noms d’autres ordinateurs sur le réseau, d’ouvrir des connexions de session et d’accéder aux ressources partagées.

Le protocole NetBIOS a été largement utilisé dans les réseaux locaux basés sur Windows, mais il a été remplacé par des protocoles plus modernes tels que le protocole TCP/IP. Cependant, il est toujours utilisé dans certains environnements et est pris en charge par de nombreux systèmes d’exploitation.

A quoi sert un scanner NetBIOS ?

Un scanner NetBIOS est un outil informatique qui permet de détecter et d’analyser les services NetBIOS sur un réseau. Il est utilisé pour identifier les ordinateurs et les partages de fichiers ou d’imprimantes qui sont accessibles via le protocole NetBIOS.

Le scanner NetBIOS envoie des requêtes NetBIOS aux ordinateurs du réseau pour obtenir des informations sur les services NetBIOS qu’ils offrent. Les informations collectées peuvent inclure les noms d’hôte, les adresses IP, les noms de partage, les types de service et les versions de logiciel.

Les scanners NetBIOS sont souvent utilisés pour effectuer des audits de sécurité sur les réseaux, car ils permettent de détecter les ordinateurs et les services NetBIOS qui peuvent être vulnérables aux attaques. Les administrateurs réseau peuvent utiliser ces scanners pour surveiller les activités sur leur réseau et pour s’assurer que seuls les services nécessaires sont accessibles.

Cependant, il convient de noter que les scanners NetBIOS peuvent également être utilisés à des fins malveillantes pour collecter des informations sensibles sur les réseaux ou pour mener des attaques ciblées. Par conséquent, il est important de protéger les réseaux contre les scanners NetBIOS en mettant en place des mesures de sécurité appropriées.

Un exemple en Python

La bibliothèque netbios en Python permet d’interroger les noms NetBIOS sur un réseau local en utilisant les protocoles NetBIOS et NBT (NetBIOS sur TCP/IP). Voici un exemple simple d’utilisation de la bibliothèque netbios en Python :

import netbios

# Recherche du nom NetBIOS d'un ordinateur
nbname = netbios.query_name('192.168.1.1')
print('Nom NetBIOS : ', nbname)

# Recherche des noms NetBIOS sur un sous-réseau
subnet = '192.168.1.0/24'
names = netbios.query_name_on_subnet(subnet)
print('Noms NetBIOS sur le sous-réseau', subnet, ': ', names)

Dans cet exemple, nous importons la bibliothèque netbios et effectuons deux requêtes différentes. La première recherche le nom NetBIOS d’un ordinateur spécifique en utilisant l’adresse IP, tandis que la deuxième recherche tous les noms NetBIOS sur un sous-réseau spécifique. Les résultats sont stockés dans des variables et affichés à l’écran.

Il convient de noter que l’utilisation de la bibliothèque netbios nécessite des autorisations d’administration pour accéder aux informations sur les noms NetBIOS sur un réseau local.

Voici un autre exemple d’utilisation de la bibliothèque netbios en Python pour scanner les ports NetBIOS :

import netbios

# Scanner les ports NetBIOS sur un ordinateur
ip_address = '192.168.1.1'
nb = netbios.NetBIOS()
ports = [139, 445]
for port in ports:
    try:
        nb.scan_name(ip_address, port)
        print('Port {} ouvert sur {}'.format(port, ip_address))
    except:
        print('Port {} fermé sur {}'.format(port, ip_address))

Dans cet exemple, nous créons une instance de la classe netbios.NetBIOS() et nous utilisons la méthode scan_name() pour scanner les ports NetBIOS sur une adresse IP spécifique. Nous scannons les ports 139 et 445 en utilisant une boucle for et imprimons les résultats à l’écran.

Voici un exemple d’utilisation de la bibliothèque netbios pour récupérer les informations de session NetBIOS :

import netbios

# Récupération des informations de session NetBIOS
nb = netbios.NetBIOS()
sessions = nb.getnetbiosname()
for session in sessions:
    print('Nom NetBIOS :', session['name'])
    print('Type :', session['type'])
    print('Adresse IP :', session['addr'])
    print('Durée de vie :', session['life'])
    print('Nombre de fichiers ouverts :', session['num_files'])
    print()

Dans cet exemple, nous créons une instance de la classe netbios.NetBIOS() et utilisons la méthode getnetbiosname() pour récupérer les informations de session NetBIOS. Nous parcourons ensuite les résultats et imprimons les informations à l’écran.

Ces scripts sont bien sûr à améliorer mais ils donnent les bases d’un scanner NetBIOS. Un outil équivalent qu’on utilise lors de nos CTF est nbtscan.

sudo nbtscan -r 192.168.0.1/24

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.