【续集】再次调戏勒索软件大黑客

华盟原创文章投稿奖励计划

首先为什么说再次调戏呢,因为这个大黑客之前已经被调戏过了一次,为什么会写这篇文章呢,因为这个叫Xiaoba的大黑客显然不服输,很快他开发了新的勒索软件,然后再次大肆传播。

【续集】再次调戏勒索软件大黑客

笔者呢,最近也闲着,而且继上次调戏后可能觉醒了”攻”的一面,这个叫Xiaoba的大黑客,重新树立了自信再次发上了他的”新作品”,要么他就是觉得不服,觉得上次只是失误才让他的勒索软件那么快沦陷,这次不知道从哪找了那么多信心想要 Play Again 那么他就是一个纯粹的”抖M”在被调戏中找到了莫名的快感,不管怎么样,我还是觉得调戏下自信心膨胀的大黑客比steam上喜加一好玩多了

当然,纯粹调戏大黑客就没啥意思了,所以这次的内容,除了用最简单的办法干掉大黑客的勒索软件,写出OneKey Cracker 一键破解软件,然后联系大黑客让他认识到IT界的险恶外,我们简单科普一些逆向与反逆向还有反反逆向的知识。一起见识下现在幼儿园小朋友都会做的“一键加壳”“一键加花”在某些反破解手段上有多么的不耐 艹。

简单来说就是让XiaoBa大黑客死也死个明白。

那么回到主题,我们把再次把这款勒索软件下载下来

【续集】再次调戏勒索软件大黑客

我们将软件拷贝到虚拟机中,运行一下,很快,出现了如下界面

【续集】再次调戏勒索软件大黑客

现在,使用ollydbug加载这个软件,很快提示这个软件被加壳过了

【续集】再次调戏勒索软件大黑客

我们使用ExeInfos看看

【续集】再次调戏勒索软件大黑客

遗憾的是,ExeInfo也无法查到这个壳的特征,我们打开sections看看

【续集】再次调戏勒索软件大黑客

可以看到,有两个Section Name被修改为了XiaoBa,当然,以这个大黑客的智商要写壳还得过100年吼,应该是使用其它壳加壳并且多次加花指令,为了找点“我是大黑客”的自信,把壳的Section Name用某些工具自行修改了一下,以显示自己的牛逼。

不过没关系,我们直接运行这个勒索软件,用附加的方法来查看这个壳。

【续集】再次调戏勒索软件大黑客

然后和上一次一样,我们换汤不换药,继续查找这个“宇宙第一语言先有易语言后有易语言”的神奇易语言作品的字符串比对特征值

8B5424048B4C240885D2750D

【续集】再次调戏勒索软件大黑客

很快,在内存映像中找到了结果,我们在汇编窗口中跳转到这个地址,然后下断点

【续集】再次调戏勒索软件大黑客

【续集】再次调戏勒索软件大黑客

之后随便输入一个密码,点击开始解密,很快,断点被断了下来,我们观察堆栈,直到出现所谓的“密码”

【续集】再次调戏勒索软件大黑客

很快,在第二次执行到断点的时候,我们抓到了密码

【续集】再次调戏勒索软件大黑客

执行跟随,看看ret到哪里

【续集】再次调戏勒索软件大黑客

如果没记错的话,这个特征码应该和上次的没什么不一样,我们只需要比对一下这段代码在内存中的哪一个位置就可以了通过比对,发现在内存中存在2处这个比对。

【续集】再次调戏勒索软件大黑客

【续集】再次调戏勒索软件大黑客

那不就和上次一样么,我们尝试修改这里的代码,看看能不能破解成功。

【续集】再次调戏勒索软件大黑客

很快,这款勒索软件缴械投降,这部就和上次一样换汤不换药么,大黑客还以为换了个强点的壳就能够阻止逆向分析,实际上并没有卵用,实际上就算是SE VMP之类的强壳,如果没有专门使用其SDK对一些关键的代码进行反调试虚拟化,结果还是一样的,当然以这个勒索软件作者的智商,要理解到这一点恐怕还早。

【续集】再次调戏勒索软件大黑客

【续集】再次调戏勒索软件大黑客

这次的破解代码几乎可以和上次的代码共用,都不用改,就是进程名从xiaoba.exe换成wannadie.exe

#include<Windows.h>
#include<tlhelp32.h>
#include<iostream>
#include<fstream>
#include<stdio.h>
#defineEXEJ_EXENAME "WannaDie.exe"
static unsignedchar constbin[]={0x83,0xf8,0x00,0xb8,0x00,0x00,0x00,0x00,0x0f,0x94,0xc0,0x89,0x45,0xf8,0x8b,0x5d,0xfc,0x85,0xdb,0x74,0x09};
static unsignedchar constcrkbin[]={0x33,0xc0,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90};
voidMESSAGE(char *s)
{
         MessageBox(NULL,s,"",MB_OK);
}
int main()
{
         char buffer1k[1024];
         unsigned int oft=0;
         int bfound=FALSE;
         HANDLE procSnap =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
         if(procSnap == INVALID_HANDLE_VALUE)
         {
                   MESSAGE("无法枚举进程\n");
                   return 0;
         }
         //
         PROCESSENTRY32 procEntry = { 0 };
         procEntry.dwSize =sizeof(PROCESSENTRY32);
         BOOL bRet =Process32First(procSnap,&procEntry);
         while(bRet)
         {
                   if (strcmp(procEntry.szExeFile,EXEJ_EXENAME)==0)
  {
                     bfound=TRUE;
  break;
                   }
                   bRet =Process32Next(procSnap,&procEntry);
         }
         if (!bfound)
         {
                   MESSAGE("未找到目标进程\n");
                   return 0;
         }
         CloseHandle(procSnap);
         HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE, procEntry.th32ProcessID);       
         if (!hProcess)
         {
                   MESSAGE("无法打开目标进程\n");
                   return 0;
         }
         DWORD oldProtect,fw,p=1;
         while(oft<0x7fffffff-sizeof(buffer1k))
         {
                   VirtualProtectEx( hProcess,(LPVOID)oft, sizeof(buffer1k), PAGE_EXECUTE_READWRITE, &oldProtect );
                   ReadProcessMemory( hProcess,(LPVOID)oft, buffer1k, sizeof(buffer1k), NULL);
                   for (intsoft=0;soft<sizeof(buffer1k)-sizeof(bin);soft++)
                   {
                            if(memcmp(buffer1k+soft,bin,sizeof(bin))==0&&!(p--))
                            {
                                     WriteProcessMemory(hProcess,(LPVOID)(oft+soft-sizeof(crkbin)),crkbin,sizeof(crkbin),&fw);
                                     if (fw==0)
                                     {
                                               break;
                                     }
                                     if(fw==sizeof(crkbin))
                                     {
                                               MESSAGE("破解成功!请点击开始恢复文件");
                                               CloseHandle(hProcess);
                                               return0;
                                     }
                            }
                   }
                   //VirtualProtectEx( hProcess,(LPVOID)oft, sizeof(buffer1k), oldProtect, NULL );
                   oft+=(sizeof(buffer1k)-sizeof(bin));
         }
         MESSAGE("未找到破解特征");

【续集】再次调戏勒索软件大黑客

【续集】再次调戏勒索软件大黑客

破解结束

当然,要是读者觉得使用ollydbg实在太复杂的话,我专程将这个软件的破解方式用pedoll写了一个脚本,挂载这个脚本后,很轻松就能把这个勒索软件的密码给扒出来。

  • binary 8B5424048B4C240885D2750D 0 S4S8 1

【续集】再次调戏勒索软件大黑客

【续集】再次调戏勒索软件大黑客

显然这次这个大黑客还是不长记性,在一些没毛用的地方下功夫,我们继续,看到这个软件是不是把邮箱换了个,继续挂载PeDoll,吧这货的邮箱账号密码继续扒出来,因为我们只需要抓数据包,只要使用PeDoll hook这个软件的send函数就可以了。

【续集】再次调戏勒索软件大黑客

然后点击重新生成key,很快,一堆发往25端口的带有账号和密码的数据包被dump了下来。

【续集】再次调戏勒索软件大黑客

使用base64解出他的账号,呦呵,换号了呀。

【续集】再次调戏勒索软件大黑客

再解出他的密码

【续集】再次调戏勒索软件大黑客

上次发帖有人说图片模糊看不清,那这次我用文字打出来让大家一起看看

账号:TheYuCheng@yeah.net

密码:Illuminati666

大家可以用foxmail登录自行玩耍,当然,如果你刚好是勒索软件受害者的话,在这个邮箱里可以找到你的密码。

【续集】再次调戏勒索软件大黑客

最后,我们给这个勒索软件大黑客打个招呼,上次调戏后不知道有没有把我拉黑,感谢他再一次把自己的账号和密码告诉我们.惊不惊喜,意不意外?

【续集】再次调戏勒索软件大黑客

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容