一次性进群,长期免费索取教程,没有付费教程。
教程列表见微信公众号底部菜单
进微信群回复公众号:微信群;QQ群:460500587
微信公众号:计算机与网络安全
ID:Computer-network
C/S模式的木马的工作方式和网上聊天的工作方式没什么差别,都是基于TCP/IP协议的通信,都是在传递信息。不同的是,木马的客户端向服务器端发送的内容是控制命令,服务器端收到控制命令执行相应的功能,并将执行结果反馈给客户端,这就是远程控制。如果客户端加一些隐藏进程,复制自身到系统目录,然后自动启动……那么服务端就是一个木马了。
这个木马主要实现以下几个简单的功能:
(1)完成帮助命令的发送;
(2)可以查看远程主机的相关信息,以及把自身复制到可执行目录中;
(3)打开光驱和关闭光驱;
(4)交换鼠标左右键和恢复鼠标左右键功能。
一、木马服务器端的实现
这里仅仅是学习,要开发一个专业的木马并不是一件容易的事情。最关键的是,我们做的一切都是为了学习编程,为了学习网络安全,而不是为了搞破坏。希望大家谨记于心。
我们的木马是命令行下的木马,所以当实现功能多了以后很多命令就会忘记。为了方便使用,在木马中加入帮助系统,也就是在输入指定命令后,客户端会把命令发给我们。把相关的命令定义成宏,方便我们修改,定义如下:
这里有个问题,这个命令是定义在客户端好,还是定义在服务器端好?定义在客户端当我们查看命令字的时候,省去了一次网络的通信传输,速度相对较快。但是,我们的木马客户端只是简单地发送命令,服务器端根据不同的命令来完成相应的功能,从这样的角度来看,可能客户端基本上定下来以后就不再变了,而有变化的就是服务器端了。当连接了木马的服务器端以后,要确定当前连接的木马提供多少种功能,为了确定木马能执行哪些功能,因此认为帮助定义在服务器端较好。
我们木马的主体形式是接收命令,其实就是让recv()函数接收字符串,根据接收的字符串进行匹配从而完成相应的动作。代码的大体形式如下:
以上代码是用来进行循环接收命令的,分发命令的部分就是一些判断和比较了,如下:
根据前面列举的那些功能我们逐个实现。
首先是完成帮助命令的发送,这个非常简单,只要调用send()就可以完成了,代码如下:
对于获得系统信息,不能直接输出,需要定义一个结构体保存获取到的信息,以便发送给客户端,结构体如下:
把获取到的信息保存在该结构体中,发送给客户端就可以了。发送代码如下:
对于光驱的打开与关闭、交换与恢复鼠标左右键功能的实现也非常简单,函数原型如下:
不对这两个函数进行介绍了,直接看代码吧。
以上就是木马服务器端的全部代码了。我们只是把一些简单的知识连贯起来使用,就是一个木马了。
二、木马客户端的实现
木马客户端的代码就是完成字符串的发送,代码非常简单,直接看完整的源代码。
上面是一个最简单的C/S模式的木马。是不是很简单啊?感觉我们的小马很“瘦”是吧?不足以日行千里是吧?有奢求,有欲望是好的。再次提醒,这里的目的是和大家学习黑客编程,旨在通过黑客编程学习系统知识和安全知识,并非拿来做坏事的。
本例内容简单易学,不会因为过多复杂难懂的代码而让大家失去了学习的热情。也许你觉得意犹未尽,也许觉得不够深入,我们的学习目标就是通过简单的知识,完成实现特定功能的程序。我们以这种方式进行学习,也会随着这种学习方式逐步地深入了解编程知识。
微信公众号:计算机与网络安全