一项有趣的实验:装了杀软的主机真的安全吗?

前言

我们有的理由怀疑自己的主机早被感染了恶意程序。大部分人都是采用重打包后的镜像来安装的盗版系统;用的不知从哪儿下回来的工具激活的系统;平常在网上下载的工具奉行的都是能用就行的原则。而我们也都抱着侥幸心理——大家都在用,应该没问题,大不了装了杀软再扫一遍。何况,杀软都没检查出来,这让我们也很无奈啊,还有什么办法呢?带着这样的问题,笔者细细琢磨了下,并依照自己的想法做了一个有趣的实验。

主要内容

思想原理

杀软主要是通过扫描文件来发现系统是否被感染,扫描策略大部分是静态特征扫描,这个方式对发现已知病毒程序很有效,然而对于发现高级或未知的病毒程序就没那么有效了。那还有什么方式来检测呢?

笔者是这样想的,假设我的主机已被感染,病毒程序会寻求与C&C(命令与控制)服务器的通信。我们可以对主机对外通信的目的IP地址进行审计,基于开源的威胁情报,排查目的IP地址的恶意性。那也就是说,我们可以从数据包的层面来检测主机是否被病毒感染。

实验方法

为验证笔者的想法,笔者做了如下实验准备:

1.数据采集

笔者在夜深人静的时候,重启了5台电脑,每台电脑上采用wireshark抓包(重启电脑,是为了保证流量的纯粹性),一直采集到笔者第二天一大早来将抓取的数据包保存。期间未有对电脑的任何其他操作。这么做,是尽可能地排除一些干扰项,便于后面的分析。

2.IP地址分析接口

对数据包的解析和基于威胁情报的查询需要借助一些工具完成。笔者基于以前的积累,采用Python的dpkt库对数据包进行解析。主要分为两步,一是提取数据包中的IP地址,二是对IP地址进行去重。

IP地址恶意性查询接口,笔者选用的是国外的开源威胁情报社区AlienVault。这个社区的威胁情报做的很全面,而且具有开源精神,不会限制查询次数(基于对国内厂商的认识,我很想说三遍),API查询接口的使用也非常方便。

首先在AlienVault上注册一个账号,只需要邮箱验证,注册成功后,访问:https://otx.alienvault.com/api,在API接口网页的右边会有生成好的API_KEY,如下图所示。

同时,在页面上点击Python SDK,如下图所示,会直接进入基于Python的查询开源程序。

按照github上的安装说明,安装OTXv2依赖库即可。下面,来讲解实验的具体实施过程。

实验步骤

实验步骤共分为3步,第一步获取数据包中的IP地址;第二步解析IP地址的地理信息(总觉得国外IP地址嫌疑更高,原谅,有种执念);第三步查询IP地址的恶意性。笔者将这三步都在Python脚本程序中实现。解析IP地址和IP地址地理信息查询可以借鉴笔者的[这个项目]。这里重点说一下如何利用AlienVault的API接口对IP地址的恶意性进行查询。废话不多说,直接上代码,首先在全局变量API_KEY中替换成自己的key,然后直接调用AlienVault的函数接口,其中的CheckIp()函数即是AlienVault给出的样例函数,如感兴趣,可以在源代码中查看。

下面开始运行程序:

python hot_ip.py—pcapfile=./data/out500.pcap -d –c #-d为提取目的IP地址,-c为对ip地址进行检测。

考虑到时间因素,这里只取了部分网络数据包进行解析,由动图可看出,首先得到了去重的目的IP地址,在程序中会以out_IP.txt保存下来;然后解析IP地址的地理信息,在程序中会以ip_location.txt保存下来;最后排查IP地址的恶意性,解析为疑似恶意的IP地址,会存在malicious_results.txt文件中。下面打印出malicious_results.txt的结果。

得到了疑似恶意的IP地址,下面就开始对这几个IP进行分析。

数据分析

可以看到,出现了5个疑似恶意的IP地址,如114.114.114.114,我们都知道是国内的域名服务器,这条威胁情报,在微步在线和AlienVault上都能查到,说明这台域名服务器曾经被利用来做过些什么。

下面,笔者举一例,分析一个IP地址,其他IP地址就可以类似的分析了。对104.18.24.243美国的这个IP进行分析,首先访问https://otx.alienvault.com/indicator/ip/104.18.24.243,这是AlienVault对这个IP地址的分析,由下图可以看到,疑似是木马的通信地址。

进一步,点击Trojan这一条信息,进去页面,在reference标签处发现这是一条由微步在线发布的情报信息。由下图所示。

同时,这个IP地址在数据包中,体现出如下通信过程。

就这些查询都看不出太多异常。那么是否可以通过这个IP地址,找到产生它的程序文件呢?当然可以。具体可经由下面的步骤得到,首先,通过IP地址查到进程号,打开dos或者powershell命令窗口,运行命令:netstat -ano | findstr “104.18.24.243”,有如下结果。

可以看到,该进程的进程号为5200,再通过进程号关联到进程的名字,运行命令:tasklist | findstr “5200”,有如下结果。

可以看到,是WinStore.App.exe这个程序在执行。继续深挖,可以通过命令查询到启动文件的路径,运行命令:wmic process list full | findstr”WinStore.App.exe”,有如下结果。

这就直接找到了产生这个IP地址的启动文件,由图中可以看到,在C:\Program Files\WindowsApps\这个目录下。下一步就可以对这个文件的恶意性进行分析。可以人工逆向分析,也可以上传到云沙箱分析。如发现异常,就需要对这台电脑来次彻底检查了。本文到此为止,整个分析流程就介绍完了,感兴趣的朋友还可以对其他IP地址或自己本机上产生的IP地址进行分析,在此过程中,相信会发现很多不一样的东西。最后,给出笔者这次实验的程序代码。

实验代码:https://github.com/scu-igroup/check_ip

总结

本文所描述的实验,表示我们可以不依赖于杀软来进行排查,为发现主机异常提供了另一种方式。结合当前流行的威胁情报,也可以自己来排查主机中的异常;但同时也必须指出,威胁情报只是提供了一条可能的线索,是否是真正的异常还需一定的专业知识来确认。同时,对主机的安全性分析还有很多其他方法和途径,笔者近期在这方面正在耕耘,大家如有新的想法,欢迎一起交流。

*本文作者:scu-igroup,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨逸轩 ' sBlog

逸轩二级域名分发系统域名使用方法以及介绍

5686
来自专栏ChaMd5安全团队

一次XSS突破的探险

现在一些网站表面上很多地方都没有漏洞,包括xss也过滤的很干净,那我们还能突破重围,挖掘到漏洞吗? 我们经常遇到这种信息保存的地方,它经常进行xss的过滤,是不...

3777
来自专栏黑白安全

小心!黑客可利用Windows远程协助漏洞窃取你的敏感文件

一个基本的网络安全建议和常识就是你不要与不信任的人分享你的计算机远程访问权限。但是,不仅限于此,攻击者的套路往往是很深的,如果你认为我们只要不与不信任的人分享计...

1233
来自专栏有趣的Python

1- vue django restful framework 打造生鲜超市Vue+Django REST framework实战

Vue+Django REST framework实战 使用Python3.6与Django2.0.2(Django-rest-framework)以及前端v...

5587
来自专栏编程

前端异常监控系统

来源:子慕大诗人 http://www.cnblogs.com/1wen/p/7942608.html 导火索 有一天一个测试同事的一个移动端页面白屏了,看样子...

4287
来自专栏程序员互动联盟

【一起学python】基础环境搭建

联盟有个小伙伴,为了督促自己学习进步,决定把自己以前学的python重新梳理下,并且以文章的方式展示出来,联盟专门做一起学python系列专栏,鼓励这位小伙伴学...

3379
来自专栏无题

在高并发的核心技术中如何实现幂等性

* 实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 ...

71811
来自专栏.net core新时代

开源任务管理平台TaskManager介绍

  很早之前准备写Quartz系列文章,现在终于能够实现了。从本篇开始将带你实现一款自己的任务管理平台。在工作中你曾经需要应用执行一个任务吗?这个任务每天或每周...

3169
来自专栏程序人生

应用开发中的网络安全

最近有个朋友让我帮忙看看他系统中的一个问题:他给了我一个用户名密码,让我ssh到他的某台服务器上。那是一台redis server,里面存放数据库查询的缓存和其...

3514
来自专栏Java学习网

常用开发工具Eclipse的实现机制和原理是什么?

我们学习和开发过程中用到Java的地方,就有Eclipse的影子,Eclipse平台是目前流行的Java开发工具之一,很重要的一个原因是它开源免费;有人会说我用...

3335

扫码关注云+社区