可视化:覆盖全球的网络攻击如何展现?

数据可视化一直是一个很有趣的领域。许多普通人直观上难以感受的数据,如漏洞分布、实时流量分析等,通过数据可视化的手法,可以清晰地看出数据的结构特点和每一个部分之间的内在联系。

著名数据可视化库 D3.js 的部分应用

D3.js 可视化群关系,来自利用 d3.js 对大数据资料进行可视化分析

数据可视化除了常用的图表之类,与地理位置信息系统(GIS)的结合也是其中一个有趣的应用。

首先是数据的准备,要做全球的分布图,得有全网扫描的实力才行哦。HeartBleed 风波的当天晚上,ZoomEye 就给全球的公网机器做了一次大体检,第一时间统计了受影响 443 端口服务器的数据,包括地区分布数量、经纬度等信息。第二天我们就公布了这个 3D 版的全球影响分布。在接下来的几天内,我们又针对同样受波及的 465,993,995 等端口进行了持续监测,得到了第一手数据。

IP 到经纬度的转换使用了著名的 MaxMind - GeoIP2 ,一个 IP 地址的地理位置数据库,可以根据 IP 获取国家、地区、经纬度等信息。这里插播一个花絮,很多人都注意到 HeartBleed 漏洞分布在南极点上也有一个红点。我检查了数据发现的确是有这样一台存在漏洞的服务器,IP 地址在 MaxMind 的数据库查询结果也真是南极点。南极要是真有服务器,能省下很多机房散热的成本呢,不过保持网络连接就很困难了。这可能只是 MaxMind 里的一个彩蛋而已?

这个 3D 地球仪是从 Chrome 的实验项目 WEBGL-Globe 修改而来。WEBGL-Globe 基于 THREE.js,是利用 WEBGL 技术在网页上创建 3D 交互内容的一个演示,可以直直观地在地球仪上展示数据的地理位置和数量。关于这个工具,在官网上可以看到更多例子。

基于 WEBGL-globe 开发的应用还有这个实时的比特币交易展示 Realtime Bitcoin Globe 。在每一笔交易发生的时候,在地图上会根据数额显示对应大小的图形,并自动跳转到对应经纬度。数据实时传输使用了 WebSocket 技术,同样也是 HTML5 的新特性。这个演示本身不开源,但是在 GitHub 上有一个类似的工程 diox/bitcoin-websockets-globe 可做参考。

Google 在 3D 地球的应用上还有另一个很有代表性的例子 Small Arms Imports / Exports 。这个演示是 Google Ideas 在 2012 年根据和平研究所 Oslo 提供的军火进出口数据描绘的交互可视化工具。比 WEBGL-Globe 多了一个非常重大的突破是,他的国家地区是可以点击的,单击之后可以出现对应国家的数据,还提供了一个时间轴以切换不同年份。

视觉效果让人印象极其深刻,不过在这几个演示里面是最消耗系统资源的。

这个演示的源代码在 dataarts/armsglobe · GitHub 。不过编码风格比较差,跨脚本的全局变量共享给二次开发造成了巨大的难度,学习一下就好了。对这个项目的开发过程和具体原理有兴趣的同学可以参考这篇文章 Ghost Hack - Arms Trade Visualization 。

真正把 3D 技术做到登峰造极的是逆天的俄罗斯人。卡巴斯基制作的这个实时网络威胁地图,支持的展示有定向攻击路径,地点;切换平面图和 3D 球体时有变换动画;每一个国家区域都是矢量图,无限放大也不会影响清晰度;交互性和实用性上简直丧心病狂;渲染 3D 的代码中没有依赖任何第三方库(包括 THREE.js)。

不仅在视觉上非常炫目,性能优化也做到了极致。数据传输使用了二进制数组,编码成 base64 之后打包成 JSON 的办法,压缩率非常理想。在以上介绍的几个网页 3D 程序中,这是资源占用最少,操作最流畅的一个。

唯一有些坑爹的是“real-time”有些名不副实,其实这个程序只会每隔一段时间去请求服务器后端静态的 json 数据文件。不过已经非常逆天了。这个东西不开源,压缩过的脚本读起来也比较吃力,应用在自己的项目中有些困难。

速来膜拜:Find out where you are on the Cyberthreat map / Узнай, где сейчас кипит кибервойна

看完上面几个演示估计都目瞪口呆了吧。WEBGL 目前还没有大规模地在网页开发中应用,许多项目都只是实验性质。前端开发者最要命也是最痛恨的是用户浏览器的兼容问题,尤其是大量过时的 IE 浏览器。

所以在全球分布图的方案上,除了 3D,我们还提供了备选的平面图版本。

OpenSSL HeartBleed 漏洞影响分布

ZoomEye 使用的 2D 分布图和 HoneyMap 都用了 jVectorMap 开源库。这个开源库使用矢量图渲染地图,可以无限缩放。支持两种类型:散点分布(HoneyMap 的实时地点)和地区统计(ZoomEye 的漏洞分布图)。还可以根据需要选择地图,常用的有全球国家/地区,中国省份地图,美国各州地图等。支持 IE6。

做平面图还可以直接使用 Google Maps API ,而且浏览器兼容性也不错。Google Maps 上的附着物可以放路标、折线、多边形、自定义绘图、热力图等。可能唯一的缺点就是会遇上我朝特有的偶发性打不开网页的情况了。

当然,百度什么的也是不错的。

说到热力图,不得不说 heatmap.js。热力图是一种在二维平面上同时展示数据的位置和数量分布的图表,展示上没有散点图这般精确,也能直观地反映出数据疏密分布特点。由于 heatmmap.js 使用了 canvas 进行渲染,官方不支持低版本的 IE 浏览器,至于是否可以使用 explorercanvas - HTML5 Canvas for Internet Explorer 兼容,我没有试过。

heatmap.js 与 Google 地图结合的例子可以参考这个:heatmap.js Examples: Google Maps Heatmap Layer

在 HeartBleed 风波后,ZoomEye 团队意识到数据可视化在信息安全中的应用将会越来越多。我正在尝试开发一个更具通用性的开源 3D 地理位置展示组件,希望能给有类似需求的同学予以帮助。半成品地址:https://github.com/ChiChou/tellurian

作者/周智 摘自知乎

原文发布于微信公众号 - 大数据文摘(BigDataDigest)

原文发表时间:2014-05-07

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ThoughtWorks

谁动了我的Token | TW洞见

今日洞见 文章作者/配图来自ThoughtWorks:禚娴静。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网...

3569
来自专栏智能计算时代

IoT安全:让我们不要忘记的“事情”

在互联网上,安全行业通过促进和实现安全实践来保护我们免受伤害。这些“内置”安全实践包括相互认证,加密,安全协议和信任。但现实世界呢?事物互联网(IoT)在大多数...

3056
来自专栏非著名程序员

10大H5前端框架,让你开发不愁

? 作为一名在前端死缠烂打6年并且懒到不行的攻城狮,这几年阅过很多从知名到很知名的前端框架,本来想拿15-20个框架来分享一下,但在跟几个前辈讨教写文章的技巧...

6188
来自专栏腾讯移动品质中心TMQ的专栏

腾讯电量仪——智能硬件测试工具尝试之路

随着移动互联网的快速发展,智能手机对电量的消耗也变得越来越大,续航短板一直是用户吐槽的焦点,不管是iOS还是android,每天为手机充电成为一个惯例,甚至一天...

3368
来自专栏张叔叔讲互联网

什么是网络爬虫,每天都在忙乎什么?(上篇)

先自我介绍一下,我是一只网络爬虫,出生在计算机中,操作系统就是我的爸爸妈妈,现在都活了2000毫秒了,这个放到我们生活的世界来说,已经属于比较长寿了。我出生之后...

1841
来自专栏花叔的专栏

2018 WWDC没发布硬件,基友平台GitHub被微软收购

2018年的WWDC一个硬件都没发布,但发布了不少软件上的改进点,这里稍微总结一下,一图以概之:

963
来自专栏Crossin的编程教室

如何用100行Python代码做出魔性声控游戏“八分音符酱”

最近几天,一款魔性的小游戏在微博上刷屏了,各大平台的主播也纷纷如感染病毒一样直播自己怎么玩这个游戏(被游戏玩)。 这个游戏叫做《不要停!八分音符酱♪》。它是一款...

41012
来自专栏AI科技评论

学界 | FPL 2017最佳论文:如何对FPGA云发动DoS攻击?

AI科技评论按:第27届现场可编程逻辑与应用国际会议(The International Conference on Field-Programmable Lo...

38810
来自专栏企鹅号快讯

OpenContrail 移交 Linux 基金会、TensorFlow 曝安全风险……

导读 本周开源云业内倒是出现一些比较有趣的消息。首先是Deepo项目在GitHub上的爆红。小编简单了解了一下该项目,用“强大”来形容并不为过,其不但能实现快速...

2105
来自专栏新智元

【2016 年最浪漫礼物】像扎克伯格一样,DIY 机器人(附教程)

Facebook CEO 马克·扎克伯格(Mark Zuckerberg)周末在 Facebook 个人页面上撰文,公布了他 2016 年的一大目标:开发能控制...

3046

扫码关注云+社区