Teste de penetração do Python: criando ferramentas com várias opções

Mar 10 2023
R. Eric Kiser Durante um teste de penetração, pode haver casos em que você precise desenvolver uma ferramenta que seja leve e silenciosa.

R. Eric Kiser

Durante um teste de penetração, pode haver casos em que você precise desenvolver uma ferramenta leve e silenciosa. Depois de realizar o reconhecimento do sistema, você pode obter uma compreensão mais clara de como os sistemas da rede estão estruturados. Armado com esse conhecimento, você pode criar uma ferramenta que executa várias tarefas de baixo impacto. Neste artigo, demonstrarei como construir um script Python que incorpore um utilitário de linha de comando que gerencia sistemas Linux por meio do uso do Ansible.

Precisamos importar os módulos ose subprocess para interagir com o sistema operacional e executar comandos.

import os
import subprocess

A primeira função dá a opção de instalar o Ansible no sistema usando a subprocess.runfunção para executar os comandos necessários.

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()

Aí está. Agora você tem a capacidade de construir qualquer ferramenta que desejar! Bata palmas, siga e compartilhe se você gostou deste artigo e boa caça!