内网恶意程序监测

信息内网与互联网隔离,理论上相对安全威胁较少,时间久之,u盘的交叉使用,必然存在安全隐患,由于内网补丁更新不及时,杀毒软件陈旧,为恶意软件提供滋生的温床。

信息内网涉及终端较多,分布较广,通过人工一一排查难以进行,因此需要借助技术手段,在网络层面上进行排查。思路如下:

流量分析

检测原理

一些恶意软件感染一台终端后,会企图在网络中传播,就会向网络中特殊端口发生数据流。一旦信息网络中发现特殊端口流量,基本可以肯定原地址感染了恶意软件。

检测特点

需要提前预知正常流量情况或者知道可能感染恶意软件的端口 此外发现某些端口的流量暴增,就需要关注

检测方法

以常见勒索病毒为例,检测思路方法如下:

  1. 在防火墙上建立安全策略,并启用log功能
  2. 将log发送至日志服务器
  3. 日志服务器对日志字段划分,提取五元组并发送至elasticsearch
  4. 使用kibana查询分析,检查445端口,如:dest_port:445,显示源地址
  5. 使用高级查询,对原地址进行聚合
GET fwlog-today/_search
{
   "query": {
        "bool" : {
            "must" : {
                "query_string" : {
                    "query" : "dest_port:445"
                }
            }
        }
    }
    "aggs" : {
        "genres" : {
            "terms" : { "field" : "source_ip" }
        }
    }
}

可视化展示

制作简单的可视化界面,用于更好的检测发现网络中异常情况: 勒索病毒检测分析页面

DNS请求分析

检测原理

恶意软件感染后,如需要向外通讯,需要对域名进行解析,通常正规的软件不会使用一些字母间包含容易混淆的数字0、1的域名,发生解析异常域名的情况,需要进行核查,由于域名量大且难以判断,引入virustotal的结果作为情报源。

检测特点

  • 判断方法简洁、部分域名能够直接判断恶意软件早期版本
  • 域名量比较多样,通常大量请求的基本是正常的,需要分析的是请求解析量少的域名,出现长尾现象
  • 对DNS加密请求无效

检测方法

检测思路如下:

  1. DNS服务器的启用日志功能,使用syslog发送日志或通过filebeat采集
  2. 将日志存放在elasticsearch中,便于对海量请求数据分析
  3. 通过kibana的表格功能,导出请求的域名列表(按请求数排序)
  4. 剔除量大的、可以判断的域名
  5. 对剩余的域名调用virustotal的API进行判断,确认异常后,立即查发起请求解析的设备IP
import requests

url = 'https://www.virustotal.com/vtapi/v2/domain/report'

params = {'apikey':'<apikey>','domain':'<domain>'}

response = requests.get(url, params=params)

print(response.json())

改进思路

端口检测

使用端口扫描工具,定期扫描所有机器开放的端口,自后对比分析增加的端口,一旦发现新的端口,立即排查。


本文遵守知识共享协议署名-非商业性使用-相同方式共享 (BY-NC-SA 4.0) 协议


最后修改于 2018-06-29