再次调戏勒索软件大黑客

文章来源:疯猫 络

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

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

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

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

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

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

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

我们使用ExeInfos看看

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

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

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

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

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

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

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

执行跟随,看看ret到哪里

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

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

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

# include<Windows.h> # include<tlhelp32.h> # include<iostream> # include<fstream> # include<stdio.h> #defineEXEJ_EXENAME “WannaDie.exe” staticunsignedchar constbin[]={ 0x83, 0xf8, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x94, 0xc0, 0x89, 0x45, 0xf8, 0x8b, 0x5d, 0xfc, 0x85, 0xdb, 0x74, 0x09}; staticunsignedchar constcrkbin[]={ 0x33, 0xc0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90}; voidMESSAGE( char*s) { MessageBox( NULL,s, “”,MB_OK); } intmain { charbuffer1k[ 1024]; unsignedintoft= 0; intbfound=FALSE; HANDLE procSnap =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(procSnap == INVALID_HANDLE_VALUE) { MESSAGE( “无法枚举进程n”); return0; } // 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”); return0; } CloseHandle(procSnap); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE, procEntry.th32ProcessID); if(!hProcess) { MESSAGE( “无法打开目标进程n”); return0; } DWORD oldProtect,fw,p= 1; while(oft< 0x7fffffffsizeof(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写了一个脚本,挂载这个脚本后,很轻松就能把这个勒索软件的密码给扒出来。

binary8B5424048B4C240885D2750D 0S4S8 1

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

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

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

再解出他的密码

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

账 :TheYuCheng@yeah.net

密码:Illuminati666

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

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

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月11日
下一篇 2020年6月12日

相关推荐