木马程序的原理

手册/FAQ (446) 2016-04-27 09:40:31

 

  由于木马技术与计算机网络息息相关,所以也就离不开Socket套接字编程。这里我不打算详述Socket套接字编程的细节,这个在MSDN上有非常详细的讲述,无非就是根据套接字的编程的流程,将相应的内容填入“模板”。而既然要实现通信的效果,就需要遵循一个通信模型,木马一般都是C/S(客户端/服务端)模式的。本篇文章所要论述的,虽然不涉及客户端的编写,但实际上我只不过是把cmd程序当成了客户端,因此本质上还是C/S模式的。

        C/S模型的开发,需要在服务器端(欲攻击的计算机)上绑定一个IP地址和一个端口号,然后进行监听,等待客户端(攻击方)的连接。客户端则是向相应的IP地址和端口号发起连接,服务器端接受后,双方就可以开始进行通信,这就是基于TCP协议的通信,也是接下来要用到的方法。另外还有一种基于UDP协议的方法,这种方法是在服务器端进行相应的绑定后,客户端不需要进行连接直接就可以和服务器进行通信。可见,TCP要比UDP可靠,而UDP要比TCP效率高。

        本篇文章所论述的服务器端编程的基本原理如下:

        1、打开一通信通道(绑定某个端口)并告知本地主机,它在某一个地址上接收客户请求。可以采用socket和bind函数实现。

        2、等待用户请求到达该端口。利用listen函数实现。

        3、接收到服务请求,处理该请求并发送应答信号。利用accept函数实现。

        4、返回第二步,等待其他客户的请求。

        5、关闭连接。利用closesocket函数实现。

        以上所使用的函数顺序如下:

        socket()→bind()→listen()→accept()→closesocket()

THE END