专栏名称: 计算机与网络安全
信息安全公益宣传,信息安全知识启蒙。
目录
相关文章推荐
重庆晨报  ·  三家美国巨头同日接入DeepSeek,业内人 ... ·  19 小时前  
重庆晨报  ·  三家美国巨头同日接入DeepSeek,业内人 ... ·  19 小时前  
网信浙江  ·  破45亿!涉春节档,600多个账号被禁言 ·  21 小时前  
金华晚报  ·  大年初三,马云现身新西兰 ·  昨天  
金华晚报  ·  大年初三,马云现身新西兰 ·  昨天  
平安鼎  ·  破45亿!涉春节档,600多个账号被禁言 ·  昨天  
安天集团  ·  大年初一丨安天智甲给您拜年了 ·  4 天前  
51好读  ›  专栏  ›  计算机与网络安全

Windows 网络编程入门实例:C\/S模式的简单木马

计算机与网络安全  · 公众号  · 互联网安全  · 2019-01-11 11:23

正文

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:460500587



微信公众号:计算机与网络安全

ID:Computer-network

C/S模式的木马的工作方式和网上聊天的工作方式没什么差别,都是基于TCP/IP协议的通信,都是在传递信息。不同的是,木马的客户端向服务器端发送的内容是控制命令,服务器端收到控制命令执行相应的功能,并将执行结果反馈给客户端,这就是远程控制。如果客户端加一些隐藏进程,复制自身到系统目录,然后自动启动……那么服务端就是一个木马了。


这个木马主要实现以下几个简单的功能:


(1)完成帮助命令的发送;

(2)可以查看远程主机的相关信息,以及把自身复制到可执行目录中;

(3)打开光驱和关闭光驱;

(4)交换鼠标左右键和恢复鼠标左右键功能。


一、木马服务器端的实现


这里仅仅是学习,要开发一个专业的木马并不是一件容易的事情。最关键的是,我们做的一切都是为了学习编程,为了学习网络安全,而不是为了搞破坏。希望大家谨记于心。


我们的木马是命令行下的木马,所以当实现功能多了以后很多命令就会忘记。为了方便使用,在木马中加入帮助系统,也就是在输入指定命令后,客户端会把命令发给我们。把相关的命令定义成宏,方便我们修改,定义如下:

这里有个问题,这个命令是定义在客户端好,还是定义在服务器端好?定义在客户端当我们查看命令字的时候,省去了一次网络的通信传输,速度相对较快。但是,我们的木马客户端只是简单地发送命令,服务器端根据不同的命令来完成相应的功能,从这样的角度来看,可能客户端基本上定下来以后就不再变了,而有变化的就是服务器端了。当连接了木马的服务器端以后,要确定当前连接的木马提供多少种功能,为了确定木马能执行哪些功能,因此认为帮助定义在服务器端较好。


我们木马的主体形式是接收命令,其实就是让recv()函数接收字符串,根据接收的字符串进行匹配从而完成相应的动作。代码的大体形式如下:

以上代码是用来进行循环接收命令的,分发命令的部分就是一些判断和比较了,如下:

根据前面列举的那些功能我们逐个实现。


首先是完成帮助命令的发送,这个非常简单,只要调用send()就可以完成了,代码如下:

对于获得系统信息,不能直接输出,需要定义一个结构体保存获取到的信息,以便发送给客户端,结构体如下:

把获取到的信息保存在该结构体中,发送给客户端就可以了。发送代码如下:

对于光驱的打开与关闭、交换与恢复鼠标左右键功能的实现也非常简单,函数原型如下:

不对这两个函数进行介绍了,直接看代码吧。

以上就是木马服务器端的全部代码了。我们只是把一些简单的知识连贯起来使用,就是一个木马了。

二、木马客户端的实现


木马客户端的代码就是完成字符串的发送,代码非常简单,直接看完整的源代码。

上面是一个最简单的C/S模式的木马。是不是很简单啊?感觉我们的小马很“瘦”是吧?不足以日行千里是吧?有奢求,有欲望是好的。再次提醒,这里的目的是和大家学习黑客编程,旨在通过黑客编程学习系统知识和安全知识,并非拿来做坏事的。


本例内容简单易学,不会因为过多复杂难懂的代码而让大家失去了学习的热情。也许你觉得意犹未尽,也许觉得不够深入,我们的学习目标就是通过简单的知识,完成实现特定功能的程序。我们以这种方式进行学习,也会随着这种学习方式逐步地深入了解编程知识。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】