首页 电脑 电脑学堂 查看内容

制 造 冰 河

2009-2-9 03:17 680 0

摘要:   一提到“冰河”你会想到什么?一个时期?河流山川?木马?阴险?欺骗?还是狡诈?无论在你脑中浮现的是什么样的名词,在互联网中的“冰河”永远都由一个不可替...
关键词: nbsp 冰河 程序 一个 代码 窗口 句柄 木马 版本 Exehandle

  一提到“冰河”你会想到什么?一个时期?河流山川?木马?阴险?欺骗?还是狡诈?无论在你脑中浮现的是什么样的名词,在互联网中的“冰河”永远都由一个不可替代的身份:“特洛伊木马”。木马是黑客特别是菜鸟黑客在互联网中使用最多的工具,相信很多人都有这样的经历,在某一天上网的时候,突然你发现,你的QQ无法登陆了,你的邮箱也无情的提示:密码错误。所有的一切你熟悉的东西都拒绝你的接近,此时计算机还会火上添油的突然关机或者重新启动。接下来,如果你是拨号上网,很可能你会有幸接到一个电话,电话里面的那个声音很像FBI特工的人会用一种酷酷的语气告诉你,你的电脑已经属于它控制了,如果想要回你的一切,那么就请照他的话做。这一切的一切都是木马所给你造成的困惑,当然作为国内的那些菜鸟黑客,他们最为钟爱的就是“冰河”这款木马后门软件。   冰河从1.2版本正式步入我们之中几经变化升级现在可以用种类繁多这个词来形容。但是大多数的知情者都明白,冰河的最初创始者、程序员黄鑫早在编写完成2.2版本冰河后就没有在给冰河进行升级,或者推出新版本的冰河,那么那些各种各样的冰河都是怎么产生的哪?为了给大家揭开这个谜底,下面我就带领大家揭开冰河的神秘面纱,步入冰河被称作封装环节的生产线,让大家一起跟我体验制造冰河!   (1)       冰河生产线: 在生产冰河的过程中,我们首先要有一个原始版本也就是2.2版本的冰河,当然在生产流程中最重要的还是制造冰河的工具。这些工具并不神秘下面我就为大家向详细的介绍一下。 1.  UltraEdit32: 了解汉化的朋友都很清楚,UltraEdit32是一款强大的十六进制编辑器,它不仅仅可以用十六进制方式编辑修改文件,还可以用它方便的对C语言PHP、CGI、ASP等网络语言进行编写。当然它最大的特点是可以打开很多类型的文件,并直接找到程序中文本里隐藏的秘密。同类型的软件还有WinHex等,但是效果都不如UltraEdit32来得舒服与顺手。 2.  ExeScope 使用eXeScope最多的人也是汉化高手,eXeScope是用来修改软件资源的最常用的工具,它强大的功能可以让eXeScope在没有资源文件的情况分析并显示不同的文件信息与内容,而且它可以对可执行的文件进行重写,这其中包括菜单、对话框、字串表等等。 3.  W32Dasm 9.00 鼎鼎大名的W32Dasm可以对程序进行反汇编操作,而且对WinApi有良好的支持,反汇编出的代码可读性非常强。他可以记录下程序静态代码,是SoftICE的最好补充。   4.  Resource Hacker 3.4.0 与eXeScope很相似的工具,但是我感觉初级的用户使用它会更加的方便。他修改软件资源的方式要更加的傻瓜化一些。(推荐使用) 5.  UPXShell UPXShell作为一款压缩软件效果是显而易见的。它有非常出色的压缩比率,跨平台性能也很优秀。由于UPXShell压缩后仍然是EXE可执行的文件,所以很多黑客利用它不改变属性只改变大小的特点来压缩病毒与黑客软件,这其中当然就包括我们大名鼎鼎的冰河。而且它会给压缩的软件加一层壳,这样避免了很多杀毒软件将其查杀出来,更好的迷惑受害者。 6.  ASPack ASPack与UPX很相象,也是压缩软件。记得在协助黄鑫做2.2版冰河测试的时候,他曾经推荐我使用这个软件进行压缩后在使用,所以想必有些版本冰河是使用的这款软件进行压缩的。软件在通过ASPack压缩后,我们可以相应的使用UnASPack来进行解压缩,这样我们就可以看到压缩前的效果了。ASPack的压缩原理与UPX相同。   (2)       制造流程 一下我就为大家讲述一下如果改造冰河的整个流程,通过配合上面的工具,我们就可以把冰河完全改造成我们所喜欢的样式。好吧,跟我一起来,改造冰河!                  流程一:首先在网上下载一个冰河(最好是没有改造过的2.2版本),下载完成后如果是ZIP或者RAR的格式我们首先需要将冰河解压缩。之后找到目录里面的G_Server.exe这个文件,然后用UPX解压缩试试看,如果不成功再用ASPack解压缩试试看,解压缩成功后我们可以看到冰河的详细资源,这个过程也叫做脱壳。            流程二:在解压缩后,这是我们找出先前准备好的Resource Hacker打开已经经过脱壳处理的冰河服务端G_Server.exe,这个时候我们就可以在Resource Hacker中看到冰河的详细资源,如版本信息,图标等等,我们这个时候就可以将这些资源修改成为我们所希望看到的。           流程三:这个步骤我们使用UltraEdit32打开G_Server.exe,探寻冰河的万能密码。在使用UltraEdit32寻找万能密码之前,我们必须了解原冰河版本的万能密码,冰河各个版本的秘密一般为: 2.2版:Can you speak Chinese?       2.2版:05181977         2.2杀手专版:05181977       2.2杀手专版:dzq20000!       3.0版:yzkzero!       3.0版:yzkzero.51.net       3.0版:yzkzero!       3.1-netbug版密码: 123456!@ 3.3版:******?*(*号代表空格)       4.0版:05181977     通过上述的这些资料,我们在UltraEdit32的“查找”中输入需要查找的ASCII特征码也就是冰河的万能密码,比如:Can you speak Chinese?查找到后再修改成我们自己喜欢的密码。随后我们可以继续使用“查找”搜索“冰河”、“木马”、“binghe”等信息,特别需要强调的是2.2的某些版本中包含有一段许美静演唱的《铁窗》这首歌的歌词,查找到这些信息后,我们可以修改也可以删除,这样一个冰河就完全的修改完成了。完成后我们在用ASPack或者UPX等对修改完成G_Server.exe进行压缩,此时一个我们改造后的冰河就制造成功了,而且一般的杀毒软件不会扫描出来。   虽然我们已经让冰河不在被杀毒软件轻易发现,而且进行了个性化的改装,但是这并没有完全达到我们彻底制造一个我们自己的冰河的目的,可以说我们的工作刚刚完成一半,接下来我们还需要对我们的冰河进行彻底的伪装。   (1)       冰河强化线 在冰河强化生产线上,我们需要的工具并不是很多,只要把Delphi和著名的木马黑洞准备好就可以了。 在现有的冰河中,冰河5.5LFP版就是一个利用SMC(self modifying code)技术在冰河中增加了补丁代码,扩展了冰河功能的强化改造版。SMC技术可以让木马中插入EXE可执行文件,并在运行时释放木马。除此以外,利用SMC技术还可以做到如著名的木马黑洞2001一样的功能,消灭杀毒软件防火墙的进程。   下面我们就进入第一个强化流程,分析黑洞2001。黑洞能够杀死防火墙进程的功能表面上看起来很神气,其实不过是利用了一个API函数PostMessage(窗口句柄,WM_Quit,0,0)实现了这项功能。   众所周知,在Windows操作系统中,每个可执行文件在运行时不仅有进程ID,还存在一个窗口名。一般来说,如果一个程序运行时在任务栏有个图标,你把鼠标移动到那里出现的提示就是该程序的窗口名。即使程序是隐藏运行,它的窗口名还是存在的,只不过你看不见而已。我们只要找到一个程序的窗口句柄,然后发送一个消息WM_Quit给它就会把它无条件关闭了。那么如何找到那个叫“句柄”的东西呢?Windows提供了一个API函数FindWindow来通过窗口名返回窗口句柄。比如说你想查找一个窗口名为“目标杀死程序”的句柄,则可以用以下语句:       Var   Exehandle:Thandle;   Begin   ExeHandle:=FindWindow(Nil,'目标杀死程序');   if ExeHandle <> 0 then Showmessage('找到该程序,句柄为'+InttoStr(Exehandle));   end;   而现在我们需要做的仅仅是看看系统在运行中所有窗口的名称,然后和我们需要关闭的程序作一下比较,如果条件符合的马上就可以消灭掉它。查找当前系统运行的所有窗口名称可以通过递归实现,下面我们用Delphi写这一段程序:     Function My_RefreshForm(MyStringList:TStringList):Boolean;   Var   hCurrentWindow:HWnd;   szText:array[0..254] of char;   begin   MyStringList.Clear;   hCurrentWindow:=GetWindow(application.Handle,GW_HWNDFIRST);   while hCurrentWindow <> 0 do   begin   if GetWindowText(hCurrentWindow,@szText,255) > 0 then   MyStringList.Add(StrPas(@szText));   hCurrentWindow:=GetWindow(hCurrentWindow,GW_HWNDNEXT);   end;   Result:=true;   end;     写完了上面这个程序后我们来调用这段代码。然后再运行Delphi新建一个工程,放上一个ListBox控件和一个按钮Button1,接着在OnClick事件中添加代码:     procedure TForm1.Button1Click(Sender:TObject);   Var   FormStrings:TStringList;   begin   FormStrings:=TStringList.Create;   My_RefreshForm(FormStrings);   ListBox1.Items:=FormStrings;   FormStrings.Free;   end;     写完这段代码之后运行这个程序,点击Button1就会在ListBox1框架中列出系统现在正在运行的所有后台程序窗口名。当然这个时候你也会发现一些操作系统本身运行的程序,这些程序可是你在Windows任务列表中看不到的哦。有了上面这两段代码,我们马上那个就可以将其杀死了。下面我们在写这段代码:     Procedure My_KillForm(S:String);   Var   Exehandle:Thandle;   begin   ExeHandle:=FindWindow(nil,Pchar(S));   if ExeHandle <> 0 then   PostMessage(ExeHandle,WM_Quit,0,0);   end;   我们在程序中要杀死那个“目标杀死程序”,那么可以先用My_RefreshForm函数列出所有窗口名称,然后一个一个和“目标杀死程序”这个窗口名作比较,如果条件符合就使用My_KillForm('目标杀死程序')把它给关了。     好了讲到了这里,通过上面的所说的方法我们就可以实现让冰河也可以实现消灭程序进程功能,不过用来对付防火墙和杀毒软件可能会有些不方便。但是如果将上面的代码用汇编语言编写,然后再用SMC技术将这段代码加入到冰河中就可以扩展冰河的功能并有效地逃避杀毒软件。不过话说回来,这样做的后果可能倒是软件代码长度的增加,会使服务端程序变大,从而使得木马的隐蔽性不够好。并且,这要求对修改者对汇编语言掌握的很精通,而且再修改过程中打起补丁来也很麻烦,改造时经常死机也是家常便饭。呵呵,不过俺听说已经有人这样去做了,所以相信不久的将来,大家极有可能会看到具有杀进程功能的冰河出现某个网站的下载中。   注:黑洞还有一些模糊控制能够,相信大家很快就会上手的。   SMC技术:基本解释就是找一段原来的程式所没有用到的“空白区域”,同时这些“空白区域”在程序映射入内存后不能被覆盖。然后再此“空白区域”加入你自己的代码,这段代码就是我们常说的补丁程序,当程序在内存中解压完毕后,使得程序跳到真正入口点前让其先跳到补丁代码处执行补丁程序,然后再返回到原始入口处继续正常工作。现在有很多程序用到此项技术,最典型的是很多带IP补丁的QQ程序。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部