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

admin 2022年1月21日01:19:57评论56 views字数 3467阅读11分33秒阅读模式

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

首先为什么说再次调戏呢,因为这个大黑客之前已经被调戏过了一次,为什么会写这篇文章呢,因为这个叫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解出他的账号,呦呵,换号了呀。


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

再解出他的密码


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


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

账号:[email protected]

密码:Illuminati666

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


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


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


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


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


本文始发于微信公众号(疯猫网络):【续集】再次调戏勒索软件大黑客

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月21日01:19:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【续集】再次调戏勒索软件大黑客http://cn-sec.com/archives/505390.html

发表评论

匿名网友 填写信息