关于木马生成技术

文:RQC

 

以前才接触一些别人写的远程控制类软件的时候,总感觉很神奇,尤其是那个可以自定义生成一个带密码的木马,现在知道是怎么搞的了!,比如在C#里   如下:

1.先把被控端(木马端)加载到程序资源文件里

2.从服务端文件把被控端分离出来

下来就是如何取到资源文件了,在C#中提供这样一个类:Resources,需要引入PrjServer.Properties 这个命名空间,我们可以根据他取得木马文件,返回结果是一个 byte 数组,有了数组,就知道大小等信息了,剩下的就简单了,利用IO流就可以解决了,所以说这个把这个木马生成出来只需要几行代码就可以解决:

 

以前感觉难了点,想通了也不过如此。不过这样也只是把原木马原封不动的生成出来,玩过一些盗号木马或者灰鸽子的朋友都知道,在生成的时候,你填入的邮箱和连接密码都会写入生成好的木马中去,如何又把生成器程序里的信息写入到木马程序中去呢?好,接下来看看我的写法:

运行程序:

点击按钮生成了 密码为 “123” 的木马程序 asd.exe

输入密码,确实是123没错。
假如密码输入错误:

流程分析:

在服务端,填入密码,然后点击生成,就会生成一个被控端文件(木马)。再打开被控端文件的时候,需要填入密码,这个密码就是我们在生成器端输入的那个密码。输入正确会提示密码验证成功,否则将提示密码错误。

先来我们如何把控制端的密码写入到木马端的中,而且要在指定的位置。

我在做客户端文件的时候,先把密码规定死,设置20个x

string pwd="xxxxxxxxxxxxxxxxxxxx";

用16进制编辑器(自己下载,或者到www.duote.com搜索16进制编辑器),找到这20个X在什么地方:

位置找到了,是 22F0,我们可以把我们要写的数据写到这个位置,这有20位,可是如果别人只填6位怎么办,剩下的14位咋搞?,没关系,我们可以用 0x00填充(0x00为16进制的 0)

来看看生成器核心代码:

下来看看木马端是如何接收这些数据的。

按理来说,木马端都写好了,我们只需要把输入的密码与pwd比较就可以了。但是做了好几次都失败了,明明打印出来的都一样,可就是提示密码错误。

找找原因。我打印了下pwd的length,发现还是20位,也就是说,我们虽然把剩下的x替换成了0x00,但是位置还在哪里占这呢。所以两个字符创根本不相等。

既然问题知道了,解决的方法也就很多了。我是先定义了一个变量(来存储生成的密码长度),把输入的密码转换成Unicode类型。然后在里面找,如果不等于0x00,就个这个变量加1。这样就可以计算出生成的密码长度,然后截取pwd字符段就OK了。来看看木马端核心代码:

呵呵,这样就做到了这个效果了,爽也,有时间就自己搞个远控玩玩!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值