作者:马立伟 本文首发于 FreeBuf.com
基础词汇解释:
Dns A记录、txt记录传输:利用dns解析过程,在请求解析的域名中包含需外传的数据,如xxxxxx.hack.com。则最终hack.com的dns服务器会收到xxxxx这个数据回传。
dns的txt类型回包:一般指为某个主机名或域名设置的说明,可被黑客利用回传数据。终端请求某恶意域名的dns解析,dns返回txt记录,包含黑客需要的回传内容,如模块更新数据、指令等
正文
概述:
随着越来越多的公司安全意识提高,大量公司已封锁socket通信,仅允许员工通过http/https协议外网,同时采取了越来越多针对http协议的检测措施(如数据分析恶意url等)。为逃避检测,Dns传输已逐步成为越来越多的恶意软件隐蔽传输的方法,dns传输利用dns逐级解析过程最终把域名中的恶意内容传输到远端控制器,也利用dns的txt类型回包更新本地木马病毒。
为解决此问题,笔者提出基于全web代理的dns恶意传输屏蔽方案,通过禁止终端做dns解析,仅允许代理做dns,完全屏蔽pc的恶意dns传输的同时,保障终端可以通过web代理访问公网(备:这也是各大公司当前采取的上外网的方式通用方案),有效解决dns恶意传输问题。适用于各大公司彻底解决dns木马病毒传输通道问题。
基本思想与原理
具体原理如下所述:
1、固定pc的dns服务器配置,并禁止修改,防止木马病毒修改绕过安全策略,或用户修改配置无意降低安全标准
2、屏蔽pc外联的53端口访问,防止恶意程序在代码中使用自定义dns服务器
3、收紧pc终端的dns解析,dns服务器仅响应允许的白名单域名解析,其他不返回结果
4、pc通信全web代理,允许web代理自身做dns解析
最终实现完全屏蔽pc的恶意dns传输的同时,保障终端可以通过web代理访问公网,解决dns恶意传输问题。
系统架构
模块功能描述:
内网终端:内网用户使用的访问公网的终端,可包括pc、手机、平板等
Web代理: 提供web协议的代理,终端可通过此代理访问外网数据
Web服务:外网的web服务
内网终端专用dns服务器:给内网终端提供dns服务,仅限白名单域名的解析
白名单:允许被解析的域名,如baidu.com等
代理专用dns服务器:给web代理提供dns服务器,不提供黑名单解析,降低恶意web业务访问
黑名单:提供恶意域名清单,禁止代理专用dns解析,进而禁止代理访问恶意url
公网dns服务:外网dns服务器,包括各个递归服务器
其他dns服务器:内网终端专用服务器外的其他dns服务器,包括公网dns服务器、代理专用dns服务器等
实验环境演示:
1、 实验环境介绍
a) 一台内网终端,win7 x64系统
i. ip :192.168.187.139
ii. 网关:192.168.187.2
iii. dns:192.168.187.141(内网终端专用dns)
b) 一台dns服务器(内网终端专用dns),server 2008
i. ip:192.168.187.141
ii. 网关:192.168.187.2
iii. dns:192.168.187.2
c) 一台squid代理服务器,ubuntu系统
i. ip:192.168.187.136
ii. 网关:192.168.187.2
iii. dns:192.168.187.2(代理专用dns)
d) 防火墙,禁止内网终端非授权访问,仅允许网关、内网终端专用dns、代理访问,或白名单程序的socket连接(不支持web代理,联通需要内网终端专用dns白名单配合)
2、 配置过程:
a) 终端配置
i. 锁定dns配置,防止用户或木马病毒修改:
Xp系统可使用这个
Win7可使用此工具
ii. 配置代理,访问外网:
b) Dns服务器配置
i. 使用条件转发不允许解析白名单以为域名
- 清空根提示(防止无法控制的递归)
- 确认,不可禁止递归(否则无法实现条件转发)
- 如果允许解析,则配置到代理专用dns,可实现递归解析
c) Squid配置
i. 配置黑名单,例如:淘宝、京东,防止员工上班购物,当然从安全角度可配置各种黑域名
ii. 配置代理专用dns(192.168.187.2),可解析任意域名
d) 防火墙配置(允许访问内网专用dns:192.168.187.141,允许访问网关192.168.187.2,允许访问代理192.168.187.141,其他均不允许),防止用户使用其他dns或socket
3、 效果展示:
a) 终端无法进行dns请求(除了白名单域名)
b) xshell外联失效(前后对比)
未实施策略前,可外传成功(有返回包)
实施策略后,无法外传(无回包)
c) 终端不配置代理,无法访问web服务器(终端无法进行dns解析,且无法直接访问外网)
d) 终端配置代理可正常上网,但无法访问黑名单网站,保障日常互联网需要,并防止访问恶意域名
原理细节详描
1、 终端使用web代理访问公网web服务,如下图
a) 终端不解析域名,将web请求直接抛给web代理
i. 浏览器可通过pac脚本等方式劫持终端到公网的流量经web代理中转
ii. 其他软件可通过配置web代理地址等方式
b) Web代理向代理专用dns服务器请求域名解析并获取结果,如下图
i. Web代理服务器向代理专用dns服务器请求域名
ii. 代理专用dns查询黑名单,如匹配则返回禁止解析,如不匹配则进一步向公网dns服务请求结果并返回
iii. 代理专用dns服务器返回结果给web代理,如为黑名单则返回默认警示页面地址
c) Web代理根据dns反馈结果访问公网
2、 禁止终端进行dns解析,仅开放白名单域名解析:
a) 屏蔽pc终端的dns解析(仅允许部分白名单域名解析),如下图:
i. 部分未配置http代理的程序请求dns解析,请求发送内网终端专用dns服务器
ii. 终端专用dns服务器查询白名单,如在白名单(例baidu.com等),则进一步向公网dns查询并返回结果,如不是白名单则返回无法解析
b) 固定pc的dns服务器配置并屏蔽pc到其他dns服务器的53端口访问,防止恶意程序自定义dns配置,如下图:
i. 通过防火墙等措施封闭终端出去的53端口(dns专用端口),仅开通到内网终端专用dns服务器的解析