别人写过Doggle Moniter,不过显示出来的数据都是加密了的,关键的dll中出数据部份用了变型的Blowfish+标准Base64,这dll还加了VMP的壳,用了Delphi的消息机制来传递数据,应该是使用的madCHook这个库写的,关键dll与侦听显示部份通过窗口消息来传递,dll中取显示进程窗口句柄(窗口名称Doggle Monitor V2.0.9 Standard),然后发送加密后的消息队列内容去显示,,,不过还好,可以用SOD附加的方式调试这个被注入的目标进程被VMP了的侦听dll,变型的Blowfish没能力分析,只能修改了这个Blowfish输出后Base64加密前的部份,没能力脱VMP的壳,于是自己用易语言写个框架,使用的远程线程注入dll后,再修改这个dll里的关键部份(直接NOP),以达到效果,不过我用的普通的远程线程注入dll的方式不好,过不了一些加了壳的狗程序,比如我用Rockey2狗对记事本加狗壳,用我的方式注入后就运行出错,,论坛里的高人们(比如zyhfut大牛)写过的一些在进程创建时修改目标进程的入口去注入dll的方式我看的懂源码,但不会用C++写程序,郁闷的。
下面是主要的侦听dll中的需要修改部份
代码:
598620B5 47 inc edi 598620B6 33F6 xor esi, esi ; 下面是一个循环生成base64加密前的过程 598620B8 8D4D F0 lea ecx, dword ptr [ebp-10] 598620BB 8D53 54 lea edx, dword ptr [ebx+54] 598620BE 8BC3 mov eax, ebx 598620C0 E8 4FEEFFFF call 59860F14 598620C5 8B45 FC mov eax, dword ptr [ebp-4] 598620C8 8A0430 mov al, byte ptr [eax+esi] 598620CB 3245 F0 xor al, byte ptr [ebp-10] 598620CE 8B55 F8 mov edx, dword ptr [ebp-8] 598620D1 880432 mov byte ptr [edx+esi], al ; 这里NOP了就直接输出Base64后的值,只要解码base64就出来明文的了,嘿。 598620D4 8D53 54 lea edx, dword ptr [ebx+54] 598620D7 8D43 55 lea eax, dword ptr [ebx+55] 598620DA B9 07000000 mov ecx, 7 598620DF E8 D407FAFF call 598028B8 598620E4 8B45 F8 mov eax, dword ptr [ebp-8] 598620E7 8A0430 mov al, byte ptr [eax+esi] 598620EA 8843 5B mov byte ptr [ebx+5B], al 598620ED 46 inc esi 598620EE 4F dec edi 598620EF ^ 75 C7 jnz short 598620B8 598620F1 5F pop edi 598620F2 5E pop esi 598620F3 5B pop ebx 598620F4 8BE5 mov esp, ebp 598620F6 5D pop ebp 598620F7 C2 0400 retn 4
附件中是我写的用普通远程线程注入方式的易语言源代码和编译好的,以及调试测试时需要用到的程序和说明文档,希望有大牛弄成更好的注入方式并发到论坛上来,抛砖引玉了。
我的易代码的方式是新建进程并暂停,然后用普通的远程线程注入方式注入dll到这个暂停的进程中,然后修改dll中的内存值,再让新进程继续运行,这样目标进程在没有真正运行时就注入了dll并修改了加密,以达到破坏blowfish加密的目的,base64解码后直接还原成明码了,,我的问题就在于这个普通的远程注入dll的方式通用性不好,对于有壳的或是有些小九九的目标不灵。
Blowfish的密钥是
代码:
00BCA95C F2 37 94 A5 69 4C 2D D0 0C CC 06 26 49 0D 28 9C ?iL-??&I.( 00BCA96C 1F 4B 4C C5 00 00 00 00 00 00 00 00 00 00 00 00 KL?...........
附上一个简单的说明,一般不用看。
功能:侦听一些国产加密狗的通讯(使用加密狗加密的软件与加密狗通讯时的数据),为复制加密狗或破解软件提供参考数据。
使用前最好先关闭你的杀毒软件的实时防护,因为通常杀软的实时防护会把侦听工具要用到的一些如dll注入阿的认为是病毒行为。。当然,本加密狗侦听工具不是病毒也不是木马,只是加了壳或者说使用的dll注入以及apihook的方式会被防毒软件误报。
支持的加密狗类型:Rockey2 Rockey4ND Rockey6 Sense3 Sense4 域天简单型 域天密码型 SoftDog(软件狗) MicroDog(微狗) 坚石ET99 域天易用/专业型 域天新简单型(带密码型) 安全芯(Schip) 龙脉Nox/Nox2 龙脉DAM2+
使用方法:1、自己电脑上安装有要加密狗的软件,插着加密狗:关闭与要用到狗的这个目标软件的相关的进程(如果有服务则停服务),运行侦听工具网络版服务器端,接着运行侦听工具客户端,输入IP地址127.0.0.1(因为都在一台电脑上用),点连接,连上后,点“启动程序”,在出来的界面上,选择用到加密狗的那个程序(在监控文件的右边有个打开文件那样的按钮上点),然后点击“开始监控”按钮,这时你的需要加密狗的那个程序会被运行起来,看看你的狗侦听工具的服务器端,是不是有通讯数据被侦听到(在接收信息那有一些信息显示出来)。OK,这是侦听单一程序的用法,,如果你的要用到狗的程序是以服务方式启动的,这时,你就得在“选择监控类型”那里选中“全部”,然后去启动你的软件的服务程序。。选择了全部,相当于使用了全局的注入,对每个新创建的进程就会注入apihook.dll进去以达到侦听程序与狗通讯。
2、别人电脑上安装着要加密狗的软件,插着加密狗:那自己电脑上运行狗数据侦听工具网络版服务器端,别人电脑上去运行网络版客户端,让别人先连接上你的服务器端,然后就可以向上面1中那样的操作方法操作了。服务器端使用使用端口8899,你如果在路由器下面或安装有网络防火墙,需要在路由器上设置8899这个端口的端口映射,如TP-LINK的路由器把这端口映射叫做虚拟服务器,如安装有软件防火墙,则设置一个让8899端口可以通行的规则或允许访问。