1.一种远程控制方法,步骤如下:
1)服务端安装在被控主机中,挂钩DNS发送模块,发送DNS请求数据包;并由控制端的DNS接收模块接收服务端发送的DNS请求数据包,对该DNS请求数据包进行处理,
2)服务端根据本地是否有开放的通信端口,进行如下处理:
若有,服务端直接连接开放的端口,采用抓包模块获取控制端的指令信息;否则,服务端根据连接碰撞规则连接端口,采用抓包模块获取控制端的指令信息;并由控制端的发包模块将控制指令发送至服务端;
3)服务端执行上述控制端的指令,采用数据流协议配合端口碰撞,实现控制端将指令信息传送给远程被控计算机,实现远程控制。
2.如权利要求1所述的一种远程控制方法,其特征在于,步骤1)中的服务端以动态链接库的形式,通过创建远线程的方法安装在被控主机的Svchost.exe进程中。
3.如权利要求1所述的一种远程控制方法,其特征在于,步骤1)中所述的挂钩操作方法如下:获取svchost的进程句柄,修改进程句柄令牌,提升访问权限。
4.如权利要求1所述的一种远程控制方法,其特征在于,步骤1)中的DNS请求数据包括心跳包、请求包和应用数据包。
5.如权利要求1所述的一种远程控制方法,其特征在于,对步骤1)中的DNS请求数据进行加密。
6.如权利要求1所述的一种远程控制方法,其特征在于,步骤2)中所述服务端获取指令使用网卡数据包过滤技术,通过数据包解码实现。
7.如权利要求1所述的一种远程控制方法,其特征在于,步骤3)中所述的数据流协议为TCP协议或UDP协议。
8.一种远程控制系统,包括服务端、控制端,所述服务端和控制端有指令处理模块,其特征在于,所述服务端还包括DNS发送模块、抓包模块,所述控制端还包括DNS接收模块和发包模块,所述DNS发送模块用于挂钩操作,发送DNS请求数据;所述抓包模块用于获取控制端的指令信息;所述DNS接收模块用于接收数据;所述发包模块用来向服务端发送端口碰撞指令;控制端的指令处理模块接收、处理所述指令信息,并将指令信息发送至服务端;服务端的指令处理模块解析所述指令信息,获取控制端指令,执行指令任务,实现远程控制。
9.如权利要求8所述的一种远程控制系统,其特征在于,所述系统的服务端和控制端还包括加密解密模块。
技术领域\n本发明涉及网络通讯安全领域,具体涉及一种远程控制方法和远程控制系统。\n背景技术\n早期的远程控制系统大多都是C/S模式的,即客户端,服务端相互通讯的,比较常见的有pcAnywhere等。此外木马程序如冰河,黑洞,灰鸽子等都是这类通讯机制的软件。\n传统的通讯方式主要有两种,一种是正向连接,即控制端程序主动连接服务端开放的指定端口,另一种是反向连接,即控制端首先开放端口监听本地某一端口,等待服务端连接。早期的防火墙对于主动连接非常敏感,反向链接的穿透性更强。随着网络安全技术的不断完善,目前的防火墙越来越健壮,早期的这类通讯方式很难实现隐蔽通讯的目的,目前借助于IE,QQ等常见通讯软件的进程,将控制软件以DLL(Dynamic Link Library,动态链接库)的形式远程注入到其进程空间,起到穿透防火墙的目的。但随着主动防御技术的出现在行为识别和内核HOOK中,这种依赖远程注入,隐蔽通讯的手段越来越难。\n目前大多数的软件防火墙都是通过自身的驱动程序依赖操作系统NDIS(中间层驱动)对进程通讯进行管理,使用防火墙规则来控制进程的网络通讯,90%的软件防火墙都是监视,管理进程起到防御入侵的效果,这就是使用远线程注入到IE浏览器能突破防火墙的主要原因,因为防火墙默认IE进程是允许访问网络的,而木马的服务端是以IE进程中的线程形态来运作的,故能轻松的穿透防火墙的拦截,但是杀毒软件开发商或一些安全软件开发商已经发现这类问题,针对性的对IE,Explorer进行了更为严格的规则限制和管理,大大的打击了这类攻击手段。\n发明内容\n本发明的目的是提出一种具备主动穿透防火墙或入侵检测系统的远程控制方法,通过将远程控制端的控制端和服务端分开进行针对性的处理,针对防火墙或入侵检测系统的原理进行技术处理,轻松穿越其拦截。\n本发明的一种远程控制方法,步骤如下:\n1)服务端安装在被控主机中,挂钩DNS发送模块(Domain Name Server,域名服务器),发送DNS请求数据;\n2)服务端根据本地是否有开放的通信端口,进行如下处理:\n若有,服务端直接连接开放的端口,采用抓包模块获取控制端的指令信息;否则,服务端根据连接碰撞规则连接端口,采用抓包模块获取控制端的指令信息;\n3)服务端执行上述控制端的指令,采用数据流协议配合端口碰撞,实现控制端将指令信息传送给远程被控计算机,实现远程控制。\n本发明的另一个目的是提出一种远程控制系统,包括服务端和控制端,所述服务端有DNS发送模块、抓包模块和指令处理模块,所述控制端有DNS接收模块、发包模块和指令处理模块;所述DNS发送模块用于发送DNS请求数据,所述抓包模块用于获取控制端的指令信息;所述DNS接收模块用来接收整个通讯过程中的数据;所述发包模块用来向服务端发送端口碰撞指令,所述控制端的指令处理模块接收、处理所述指令信息,并将指令信息发送至服务端;所述服务端的指令处理模块解析所述指令信息,获取控制端指令,并执行指令任务,从而实现远程控制。\n上述远程控制系统的服务端和控制端还包括加密解密模块。\n本发明使用一种反向连接的手段,服务端安装在被控计算机时,主动连接控制端,首先进行挂钩svchost(NETWORK_SERVICE)进程,该进程是Windows负责关键网络服务的核心通讯服务,包括DNS发送模块,DNS发送模块使用UDP协议,无需连接控制,传输速度快。不管防火墙有多强大,规则设置的多严密,只要防火墙涉及一般的通讯应用,一定不会禁止DNS数据的交互,因此本发明对DNS发送模块进行挂钩操作,借用系统的DNS发送模块发送构造的DNS请求数据,发送DNS请求的SOCKET。服务端根据自己的实际需要构造DNS请求数据,并发送给控制端,这时控制端就知道服务器工作正常了。\n服务端接收控制端的指令,采用数据流协议解析配合端口碰撞的手段,实现了控制端将指令信息传送给远程被控计算机,而被控计算机无需开放任何端口或创建任何通讯连接,即可实现远程控制,且隐蔽,高效,稳定,具备非常强的穿透性。\n上述DNS请求数据内容主要是心跳包、请求包和应用数据包:\n心跳包:将服务端工作的正常情况通知控制端,如设定一段时间内检测控制端是否收到服务端的心跳包,如果被控计算机关机,或出现问题,那控制端就能清楚的知道连接异常了。\n请求包:向控制端发出询问,等待控制端的控制指令,以及在连接最初时间内,将被控计算机的网络信息发送给控制端,如本机目前开放的端口。\n应用数据包:发送控制指令对应的应用数据,如计算机屏幕信息数据内容等。\n本发明主要用于在特定环境下,比如网络审计系统,机房管理系统等,需要通讯软件能有较高的穿透防火墙或入侵检测系统,实现隐蔽通讯的目的。\n本发明的优点和积极效果如下:\n1.具备非常强的隐蔽通讯能力,可穿透绝大部分软件和硬件防火墙。\n2.具有在网络环境较不好的情况下,仍能交互通讯的能力。\n3.具有较强的通讯安全性。\n附图说明\n图1本发明的服务端和控制端的处理流程图;\n图2本发明的远程控制服务端和控制端的关键模块图。\n具体实施方式\n下面结合附图,详细的说明本发明的基于DNS穿透技术的远程控制方法和远程控制系统,但不构成对本发明的限制。\n本发明主要针对Microsoft Windows系列操作系统进行说明,本发明的方法同样用于原理一致的Linux等操作系统。\n本发明服务端和控制端的处理流程,如图1所示。\n(1)服务端通过HOOK技术挂钩操作系统DNS发送模块,并初始化DNS发送模块,获取本地已经开放的通讯端口,目的是为了告诉控制端可以连接哪些端口,从而主动连接控制端。\n有两种情况:一种是服务器开放了某些端口,可以直接连接开放的端口并发送数据,由于主要通讯交互,采用抓包模块通过网卡数据包过滤技术从网卡捕获到的数据信息中提取指令,所以通过数据包解码能获取到控制端发送的连接请求指令;另一种是服务器什么端口也没开放,采用端口碰撞技术,即服务端和控制端实现预先规定好的连接碰撞规则。比如:关机指令,预先设定先连接1024端口,再连接1024+100的端口,最后连接1024+100+998的端口,连接在规定时间内完成,满足这样的连接碰撞规则,服务端就知道控制端要求关机,并执行关机指令,实现关机。\n碰撞规则是用户在设计服务端和控制端时规定(协商)好的,用户可以根据需要自行设计碰撞规则,非常灵活,方便。这种碰撞技术是主动的,而防火墙等系统只是被动等防御,所以穿透性极强。\n(2)服务端对整个通讯过程中发送的数据在加密解密模块使用加密手段,通过DNS发送模块发送加密的信息。\n加密方法由用户自行设定,目的是为了保证数据的安全性。由于对通讯数据加密,而入侵检测系统的原理是通过对网络流数据包的拦截,分析和阻断,对于加密后的数据目前的技术无法实现自动解码,此处的通讯数据是DNS数据,所以可轻易入侵。\n(3)控制端的DNS接收模块接收服务端发送的数据,并在加密解密模块进行解密;\n(4)控制端的指令处理模块对接收到的心跳包和应用数据包,进行处理,并按控制指令规则连接协商的端口开始端口碰撞,控制端的发包模块将指令发送至服务端;\n(5)服务端的指令处理模块解析控制端的指令含义,获取控制端指令,并执行指令任务,\n(6)服务端的应用模块根据指令处理模块传递的指令进行相应的操作,控制端的用户接口处理用户的操作,从而实现远程控制。\n本发明的远程控制系统如图2所示,远程服务端包括DNS发送模块、抓包模块、加密解密模块、指令处理模块和应用模块;其中,所述DNS发送模块和所述抓包模块负责双方的通讯,DNS发送模块用来发送通讯过程中的加密信息,抓包模块用来获取控制端的指令信息;所述加密解密模块负责对整个通讯过程中的数据进行加密和解密操作;所述指令处理模块主要是解析控制端的指令信息,并执行指令任务;所述应用模块负责根据指令处理模块传递上来的指令进行相应的操作。\n远程控制端包括DNS接收模块、发包模块、加密解密模块、指令处理模块和应用模块;其中,所述DNS接收模块和所述发包模块负责双方的通讯,DNS接收模块用来接收加密信息,发包模块用来向服务端发送端口碰撞指令;所述加密解密模块负责对整个通讯过程中的数据进行加密和解密操作;所述指令处理模块对于控制端来说,所述指令处理模块负责接收用户执行的指令,并将指令进行封装;所述应用模块用来初始化通讯模块,并接收用户指令。\n其中,挂钩DNS发送模块的关键技术和碰撞的关键如下:\n1.挂钩DNS发送模块的关键技术:将服务端以DLL的形式,通过HOOK技术或创建远线程的方法注入到NETWORK_SERVICE中的Svchost.exe进程,该进程是操作系统的网络服务的关键进程,需要处理的DNS发送模块就在Svchost.exe中。首先需要提升模块的控制权限:先在OpenProcess获取svchost的进程句柄,然后通过OpenProcessToken、LookupPrivilegevalue、AdjustTokenPrivileges等几个API(Application ProgrammingInterface应用编程接口)获取句柄令牌并修改令牌,提升访问权限,最后调用DuplicateHandle系统API,将系统的DNS发送模块的通讯SOCKET转化为本发明中通信的DNS发送模块的Socket。这样就可以使用系统的DNS发送模块进行数据发送了,即只要调用标准的Socket应用函数就可发送数据。\n2.碰撞的关键技术:由于服务端接收指令使用网卡数据包过滤技术,上述网卡数据包过滤技术,指通过驱动将网卡置为混杂模式状态,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。网卡数据包过滤技术,就是在这种混杂模式下对数据包进行分析的技术。\n采用UDP连接,所以双方通讯无需连接成功,只要满足连接条件即可。TCP连接,最初需要经过3次握手建立TCP传输连接,如果服务端主机并没有开放连接的端口,在控制端发送SYN,ACK包后,服务器不会回应相应的SYN,ACK包。\n尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2006-06-21
|
2005-12-29
| | |
2
| |
2006-04-19
|
2005-11-03
| | |
3
| | 暂无 |
2007-09-21
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |