浅析木马服务端的生成技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
有些木马在解压缩之后只会有一个客户端程序,用户可以通过在客户端的一些设置工作来自 动生成针对性比较强的服务端程序,例如特定的端口、击键木马的邮件地址、密码、SMTP 服务器等等。在本文中,我将简要地探讨这一技术的实现。 从“生成”的这个事实来看,我们可以猜想客户端程序可能本身绑有一段自定义的二进制数据, 这段二进制数据实质上就是一个服务端的模板。在用户进行了设置工作之后,客户端就会将 设置完成的这些特定数据填充到这个模板之中,然后再通过写文件的操作将这段己经配置完 毕的二进制数据模板生成一个特定的服务端程序,如下图所示: 打个比方来说,邮局有很多空白的信封。你在买下一个信封之后,在信封上填写邮政编码、 收件人地址和姓名,然后再将你的信件装入信封糊好,这就成为了你所特有的一封信件了。 ——希望我这么解释能够让你明白我下面将要在操作的大致过程。下而我要实现一个名为“MsgBox生成器”的演示程序,你可以在客户端进行MessageBox 的标题和文本的设置,然后程序就会在C:下生成一个名为MsgBox.exe的“Hello, World” 程序,这个弹出的MessageBox 打个比方来说,邮局有很多空白的信封。你在买下一个信封之后,在信封上填写邮政编码、 收件人地址和姓名,然后再将你的信件装入信封糊好,这就成为了你所特有的一封信件了。 ——希望我这么解释能够让你明白我下面将要在操作的大致过程。 下而我要实现一个名为“MsgBox生成器”的演示程序,你可以在客户端进行MessageBox 的标题和文本的设置,然后程序就会在C:下生成一个名为MsgBox.exe的“Hello, World” 程序,这个弹出的MessageBox就是你先前在客户端所设置的那样。运行界而如下图: 文件夹 文件夹1J?文本文档 2004 亡Program Files IQVINDOtS 回 FRUNLOG. TXT LMszBox. exe ■ IsgBo: http://home?nuc? tdu. MsgBox标题|这是标题 MsgBox文本[这是文本生\Ms^Box. ?x?! I 退出 | 好了,那么我先来设计生成服务端的功能。为了十足地模仿木马程序,我使用Win32 ASM 来编写服务端程序,代码如下: .model flat, stdcall option casemap:none include masm32includewindows.inc szText db Hello, World, 0 如你所见,这正是Iczelion在他的Win32汇编教程中编写的那个“Hello, World”,你可 以利用MASM32将这段源代码编译链接,生成一个MsgBox.exe,在此我就利用这个程 序来充当我要生成的服务端。 现在需要考虑的问题是,如何将这个MsgBox.exe嵌入到客户端程序中? 一个最好想,也 是最直观的办法是利用一个BYTE数组来放置MsgBox.exe的二进制数据(CIH病毒就是 这样,它专门准备了一个PE文件头),然后再使用API函数CreateFile将这段二进制数 据写成文件。部分代码如下: BYTE bySrvData[] = { 0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00z 0x00, 0x00, Oxff, Oxff, 0x00 z 0x00, 0xb8, 0x00, 0x00, OxOOz 0x00, OxOOz 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //由于篇幅略去以下所有数据 好了,代码到此为止。虽然它可以胜利完成任务,但是你一定不愿意编写这样的代码——对 于MsgBox.exe的数据部分,它实在太冗长了(我算了一笔账,对于编译完成的 MsgBox.exe,它只有不到3KB的大小,但是如果把它的二进制数据像上面那样保存成文 本文件,这个文本文件就会拥有15KB的体积)。况且,这仅仅是一个“Hello, World!”程 序,那么换成真正的木马服务端程序又会怎么样呢?而且,很多的服务端是用髙级语言编写 的,它们动辄会拥有儿十KB的体积! 现在我们只能别无选择地换一个角度考虑如何来解决这个问题:除了用BYTE数组,还有别 的方法可以将MsgBox.exe放入客户端程序中吗? 答案是肯定的,那就是利用EXE文件的自定义资源。在解说如何使用自定义资源之前,我 先大体介绍一下我要使用的儿个API: FindResource:查找一个资源。由于我们是要将这个服务端作为EXE的自定义资 源形式放在EXE之中,所以在释放它之前必须首先找到它才可以。 Si

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档