[PYTHON] Ein kleines Skript zur Selbstverteidigung von Malware

Verbringst du deine Tage damit, von zu Hause aus zu arbeiten? Letzte Woche war ich zum ersten Mal seit einiger Zeit wieder in der Szene Im Zug war Corona wie eine Lüge

Was ist Corona ...: Denken:

Steigende Sicherheitsnachfrage

Abgesehen davon, heutzutage, wenn die Anzahl der Personen, die zu Hause bleiben, gestiegen ist, was die Terminalsicherheit betrifft Ich glaube ich habe mehr Gedanken.

Kürzlich habe ich Nachrichten wie Malware wie EMOTET gehört und gehört Ich denke, wenn Sie Angst haben, kann Ihre Wachsamkeit vorübergehend zunehmen.

Aber wenn Datum und Uhrzeit kommen, nimmt diese Wachsamkeit ab und ich greife auf seltsame Websites zu. Es besteht auch die Möglichkeit, seltsame Dinge in Ihre Lieblingsseite einzubetten Es ist nicht ohne.

Wie solche Malware auf unseren Geräten schlechte Dinge bewirken kann Sie müssen sich für den automatischen Start registrieren. Wenn Sie also das Programm überprüfen, das jeden Tag automatisch gestartet wird, Wenn Sie die Chance haben, eine verdächtige Person zu bemerken, die sich in uns einschleicht ...!

bouhan_camera_dorobou[1].png

Verwenden Sie also ein praktisches Tool namens "autorunsc.exe". Ich habe ein Skript geschrieben, das Protokolle für das automatische Startprogramm sammelt.

Teil importieren

import subprocess
import zipfile
import os
import sys
import urllib.request as req
import pandas as pd
from glob import glob
from plyer import notification
from alittleuseful import loglotate

# pip install pandas
# pip install plyer
# pip install git+https://github.com/ardnico/main

alittleuseful veröffentliche ich persönlich auf github, Eine Bibliothek zum Schreiben von Protokollen Wir haben andere seltsame Funktionen veröffentlicht, aber wenn Sie möchten, verwenden Sie sie bitte. Ich bin glücklich. .. ..

Namensdefinition

csv_file = f'{os.getcwd()}\\out.csv'
rcsv_file = f'{os.getcwd()}\\out_old.csv'
enc = "utf-16"
URL = "https://download.sysinternals.com/files/Autoruns.zip"
zip_file = "A.zip"
path='.'
logger = loglotate(
    logname = "StartUpSec",
    outputdir = [os.getcwd()],
    lsize = 100000,
    num = 20,
    timestanp = 1 # 1:on other:off
)

Statische Benennung und Funktionsaufrufteil

Funktion: Autorunsc.exe herunterladen

def download_tool(tf:bool):
    # file download
    if tf == False:
        logger.write('[INFO]Because the tool has not existed, the one will download')
        req.urlretrieve(URL,zip_file)
        with zipfile.ZipFile(zip_file, 'r') as z_file:
            try:
                z_file.extractall(path=path)
                logger.write("[SUCCESS]Tool download succeeded")
            except Exception as e:
                logger.write('[ERROR]Failed to download or unzip autorunsc.exe')
                logger.write(f'[ERROR]{e}')
                sys.exit(0)

Wenn "autorunsc.exe" nicht vorhanden ist, verwenden Sie request Laden Sie das Tool herunter. Der Download erfolgt bis zur ZIP-Dekomprimierung.

Funktion: Von der Ausführung von "autorunsc.exe" bis zum Vergleich von Autostartprogrammen

def get_log():
    if os.path.exists(rcsv_file) == True:
        try:
            os.remove(rcsv_file)
        except Exception as e:
            logger.write('[ERROR]Failed to remove oldcsvfile')
            logger.write(f'[ERROR]{e}')
            sys.exit(0)
    if os.path.exists(csv_file) == True:
        try:
            os.rename(csv_file,rcsv_file)
            df_old = pd.read_csv(rcsv_file,encoding=enc)
        except Exception as e:
            logger.write('[ERROR]Failed to rename oldcsvfile')
            logger.write(f'[ERROR]{e}')
            sys.exit(0)
    else:
        df_old = ''
    with open(csv_file, mode='w', encoding=enc) as fp:
        cp = subprocess.run([f'{os.getcwd()}\\autorunsc.exe','-nobanner','-c','-a','*'], encoding=enc, stdout=fp)
    try:
        if df_old == '':
            flag = 0
        else:
            flag = 2
    except:
        if len(df_old.index) <= 0:
            flag = 0
        else:
            flag = 1
    if flag==0 or flag==2:
        logger.write("[INFO]StartUp Program's log has created")
    else:
        with open(csv_file,encoding=enc) as f:
            data = f.read().split('\n')
        with open(rcsv_file,encoding=enc) as f:
            data2 = f.read().split('\n')
        l_diff = list(set(data)^set(data2))
        if len(l_diff) > 0:
            logger.write("[DIFF INFO]The difference of the startup program has existed")
            for i in l_diff:
                logger.write(f"[DIFF]{i}")
                notification.notify(
                    title='The difference of startup program has existed',
                    message=i,
                    app_name='Diff notify'
                )
        else:
            logger.write("[INFO]The difference did not exsist")

Aufgrund des Umgangs mit CSV-Dateien ist es etwas lang geworden. Die Bewegung ist wie folgt.

  1. Drehen Sie die CSV-Datei
  2. Vergleichen Sie den Inhalt der neuesten CSV und der vorherigen CSV-Datei
  3. Wenn es einen Unterschied gibt, schreiben Sie in Protokoll + Pop-Benachrichtigung

Ausführungsteil

if __name__ == "__main__":
    os.chdir(r"C:\python\notebooks\StartUpProgramSec")
    tooltf = os.path.exists(f"{os.getcwd()}\\autorunsc.exe")
    download_tool(tooltf)
    get_log()
    logger.write("[INFO]The process completed")

das ist alles.

Machen Sie Ihre Arbeit zu Hause sicherer, auch ein wenig Ich hoffe es wird sich ausbreiten ... tomneko1215B1328_TP_V.jpg

Recommended Posts

Ein kleines Skript zur Selbstverteidigung von Malware
Tipps zum Öffnen einer Szene mit einer fehlerhaften Referenz in einem Skript
(Für mich) Flask_2 (Liste und für, erweitert und ein bisschen mehr)
Hinweise zum Einbetten der Skriptsprache in Bash-Skripte
Hinweis 2 zum Einbetten der Skriptsprache in ein Bash-Skript
Erstellen Sie ein Python-Skript für Wake on LAN (Wake on LAN über NAT [5])
Versuchen wir es mit einem Shell-Skript
Befehl für FizzBuzz erstellt
Ein bisschen mehr über FIFO
Ein bisschen im Kettenschiff stecken