Envoi d’un Message Popup à une Machine Distante (Linux et Windows)

Ce tutoriel vous guide dans l’envoi d’un message popup (affichage d’une notification ou d’une alerte) sur une machine distante, qu’elle soit sous Linux ou Windows. L’objectif est d’afficher le message suivant : "Salut, ceci est de Platon-y".

🎯 Sommaire

🔑 Introduction et PrĂ©-requis

Pour réussir cette opération, vous devez :

Partie 1 : Envoi d’un Message sur Linux avec zenity

Objectif

Utiliser zenity pour afficher un message graphique sur la machine Linux cible, si elle dispose d’une session graphique active.

Étapes

  1. Assurez-vous que zenity est installé sur la machine cible :
sudo apt update && sudo apt install zenity

Ensuite, envoyez le message :

ssh utilisateur@IP_CIBLE "DISPLAY=:0 zenity --info --text='Salut, ceci est de Platon-y'"

Cette commande utilise DISPLAY=:0 pour afficher le message sur l’écran principal.

Partie 2 : Envoi d’un Message sur Linux avec notify-send

Objectif

Utiliser notify-send pour afficher une notification systÚme. notify-send est souvent installé par défaut sur les distributions Linux.

Étapes

ssh utilisateur@IP_CIBLE "DISPLAY=:0 notify-send 'Salut, ceci est de Platon-y'"

Comme pour zenity, DISPLAY=:0 est utilisĂ© pour indiquer oĂč afficher la notification.

Partie 3 : Envoi d’un Message en Mode Console avec wall

Objectif

Utiliser wall pour envoyer le message dans la console de tous les utilisateurs connectés. Utile pour les machines sans interface graphique.

Étapes

ssh utilisateur@IP_CIBLE "echo 'Salut, ceci est de Platon-y' | wall"

Cette commande affiche le message sur tous les terminaux actifs de la machine cible.

Partie 4 : Envoi d’un Message sur Windows avec smbclient

Objectif

Utiliser smbclient pour envoyer un message Ă  une machine Windows via le protocole SMB.

Étapes

echo "Salut, ceci est de Platon-y" | smbclient -M IP_CIBLE

Note : La machine Windows doit ĂȘtre configurĂ©e pour accepter les messages SMB.

Partie 5 : Envoi d’un Message sur Windows avec msg.exe

Objectif

Utiliser msg.exe pour envoyer un message aux utilisateurs d’une machine Windows.

Étapes

net rpc -S IP_CIBLE -U "DOMAINE\\Utilisateur" -c "msg * Salut, ceci est de Platon-y"

Cette commande utilise net rpc pour envoyer un message via msg.exe à tous les utilisateurs connectés à la machine cible.

Script Bash Multiplateforme pour Automatisation

Ce script dĂ©tecte le type de machine (Linux ou Windows) et choisit la mĂ©thode d’envoi appropriĂ©e pour afficher le message “Salut, ceci est de Platon-y” :

#!/bin/bash

IP_CIBLE="192.168.1.100"
USER_LINUX="utilisateur_linux"
USER_WINDOWS="utilisateur_windows"
DOMAINE_WINDOWS="WORKGROUP"

if ping -c 1 $IP_CIBLE &> /dev/null; then
    echo "Connexion réussie à $IP_CIBLE."
    
    if ssh -o ConnectTimeout=3 $USER_LINUX@$IP_CIBLE "echo test" &> /dev/null; then
        ssh $USER_LINUX@$IP_CIBLE "DISPLAY=:0 zenity --info --text='Salut, ceci est de Platon-y'" || \
        ssh $USER_LINUX@$IP_CIBLE "DISPLAY=:0 notify-send 'Salut, ceci est de Platon-y'" || \
        ssh $USER_LINUX@$IP_CIBLE "echo 'Salut, ceci est de Platon-y' | wall"
        
    elif echo "Salut, ceci est de Platon-y" | smbclient -M $IP_CIBLE &> /dev/null; then
        echo "Message envoyé via SMB sur Windows."
    
    elif net rpc -S $IP_CIBLE -U "$DOMAINE_WINDOWS\\$USER_WINDOWS" -c "msg * Salut, ceci est de Platon-y" &> /dev/null; then
        echo "Message envoyé via RPC sur Windows."
    
    else
        echo "Type de machine non reconnu ou Ă©chec de l'envoi."
    fi
else
    echo "La machine $IP_CIBLE ne répond pas."
fi

Ce script essaie chaque mĂ©thode jusqu’à ce qu’une commande fonctionne, garantissant une couverture maximale pour l’envoi du message.

đŸ’„ Bonus : MĂ©thodes Alternatives pour Message Popup

Pour ceux qui aiment explorer d’autres moyens d’envoyer des messages, voici quelques astuces alternatives. Ces mĂ©thodes sont rĂ©servĂ©es Ă  des tests en environnement contrĂŽlĂ© et sont particuliĂšrement utiles dans les simulations Red Team.

1. Script PowerShell Caché pour Windows

Exécutez ce script pour afficher une boßte de message en arriÚre-plan via PowerShell :

powershell -command "[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Salut, ceci est de Platon-y')"

Astuce furtive : Utilisez powershell -windowstyle hidden pour exĂ©cuter la commande en mode cachĂ©, sans que la fenĂȘtre PowerShell soit visible.

2. Notifications Toasts sur Windows 10+

Créez une notification toast en utilisant PowerShell et un script XML.

  1. Créez un fichier XML de notification (par ex., notif.xml) avec le contenu suivant :
<toast>
  <visual>
    <binding template="ToastGeneric">
      <text>Message de Platon-y</text>
      <text>Salut, ceci est de Platon-y</text>
    </binding>
  </visual>
</toast>
  1. Envoyez la notification avec PowerShell :
powershell -command "New-BurntToastNotification -Xml (Get-Content notif.xml)"

Note : Assurez-vous que le module BurntToast est installé avec Install-Module -Name BurntToast.

3. Messages sur le Port SMB (445)

Si le port 445 (SMB) est ouvert, utilisez cette méthode pour écrire un message dans un partage ouvert :

smbclient //IP_CIBLE/partage$ -U utilisateur -c "echo 'Message : Salut de Platon-y' > Alerte.txt"

Ce message apparaĂźtra dans le partage et peut attirer l'attention.

4. Notifications via D-Bus sur Linux

Les systĂšmes Linux modernes utilisent D-Bus pour les notifications systĂšme. Envoyez une alerte par D-Bus :

dbus-send --session --dest='org.freedesktop.Notifications' --type=method_call \
--print-reply /org/freedesktop/Notifications org.freedesktop.Notifications.Notify \
string:"" uint32:0 string:"" string:"Alerte Platon-y" string:"Salut, ceci est de Platon-y" array:string:"" dict:string:string:"" int32:5000

Cette commande envoie une notification directement via D-Bus.

5. Messages In-App (Slack, Teams)

Si des applications comme Slack ou Teams sont utilisĂ©es, envoyez des notifications directement dans l’application via leur API.

import requests

url = "https://slack.com/api/chat.postMessage"
token = "YOUR_SLACK_TOKEN"

headers = {
    "Authorization": f"Bearer {token}"
}

data = {
    "channel": "#general",
    "text": "Salut, ceci est de Platon-y"
}

response = requests.post(url, headers=headers, data=data)

Utilisez un jeton d’API Slack pour envoyer le message directement dans un canal cible.