Test d'intrusion Python : création d'outils multi-options
R. Eric Kiser
Lors d'un test d'intrusion, il peut arriver que vous ayez besoin de développer un outil léger et silencieux. Après avoir effectué une reconnaissance du système, vous pouvez obtenir une meilleure compréhension de la structure des systèmes du réseau. Fort de ces connaissances, vous pouvez créer un outil qui exécute plusieurs tâches à faible impact. Dans cet article, je vais montrer comment construire un script Python qui intègre un utilitaire de ligne de commande qui gère les systèmes Linux via l'utilisation d'Ansible.
Nous devrons importer les modules oset subprocess pour interagir avec le système d'exploitation et exécuter des commandes.
import os
import subprocess
La première fonction donne la possibilité d'installer Ansible sur le système en utilisant la subprocess.runfonction pour exécuter les commandes nécessaires.
def install_ansible():
subprocess.run(["sudo", "apt", "update"])
subprocess.run(["sudo", "apt", "install", "software-properties-common"])
subprocess.run(["sudo", "apt-add-repository", "--yes", "--update", "ppa:ansible/ansible"])
subprocess.run(["sudo", "apt", "install", "ansible"])
def add_ssh_key():
ip = input("Enter the IP address of the remote server: ")
username = input("Enter the username on the remote server: ")
ssh_key_path = input("Enter the path to the SSH key: ")
subprocess.run(["ssh-copy-id", f"{username}@{ip}", "-i", ssh_key_path])
def download_files():
ips = input("Enter the IP addresses of the systems to download files from (comma-separated): ")
files = input("Enter the files to download (comma-separated): ")
dest = input("Enter the destination folder to save the files: ")
for ip in ips.split(","):
for file in files.split(","):
subprocess.run(["ansible", f"{ip}", "-m", "fetch", "-a", f"src={file} dest={os.path.join(dest, ip)}"])
def download_files():
ips = input("Enter the IP addresses of the systems to download files from (comma-separated): ")
files = input("Enter the files to download (comma-separated): ")
dest = input("Enter the destination folder to save the files: ")
for ip in ips.split(","):
for file in files.split(","):
subprocess.run(["ansible", f"{ip}", "-m", "fetch", "-a", f"src={file} dest={os.path.join(dest, ip)}"])
def transfer_files():
source_ip = input("Enter the IP address of the source server: ")
dest_ip = input("Enter the IP address of the destination server: ")
files = input("Enter the files to transfer (comma-separated): ")
for file in files.split(","):
subprocess.run(["ansible", f"{source_ip}", "-m", "copy", "-a", f"src={file} dest={dest_ip}:"])
choice = input("Enter your choice: ")
if choice == "1":
install_ansible()
elif choice == "2":
add_ssh_key()
elif choice == "3":
scan_files()
elif choice == "4":
download_files()
elif choice == "5":
transfer_files()
elif choice == "0":
break
else:
print("Invalid choice")
if __name__ == "__main__":
main()
Voilà. Vous avez maintenant la possibilité de construire n'importe quel outil que vous désirez ! Applaudissez, suivez et partagez si vous aimez cet article et Bonne chasse !
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































