为什么你要懂点信息安全(续一)

昨天的文章可能让很多新读者读得莫名其妙,程序君在此抱歉。我应该使用这样的标题:『[连载] 途客们的旅行梦 - 创新工场初印象』,就不会让你看得摸不着头脑了,下次程序君会注意滴。^_^

前天的文章主要讲了信息安全中人的因素,以及围绕人建立起来的「物理安全」,「操作安全」和「社会工程学安全」,最后顺带讲了「网络安全」和「应用安全」。对于最后的关于邮件安全的讨论,这里举个例子:

这是一个经过PGP加密的邮件,以S/MIME(如果不知道请google,很难一句话解释)的方式嵌入到一个正常的邮件中。它用接收者的公钥加密,只有接收者才能使用自己的私钥解密(一旦发出去之后,理论上连发送者都看不到里面的内容)。这样即使NSA攻陷了gmail,偷窥你的邮件,它也只能看到上面的密文,而无法得出下面明文中我的身份证号。

PGP和S/MIME在邮件上的应用早(大概十多年前)就有RFC定义,但一直无法推广开,几个原因:

(1) 应用了端对端的加密,那webmail就无法使用了(你无法通过mail.163.com/gmail.com等访问你的邮件了),很不方便。如果真要用,需要用户将其私钥上传给邮件提供商,这样就导致一种悖论。

(2) 即使你不用webmail,使用邮件客户端,你也不一定能用。首先你和你的小伙伴需要有各自的公钥私钥,其次你们需要知道各自的公钥,再次你们需要确认各自的公钥是各自的公钥。

(3) 即使满足了(2),如果你换台电脑,如果该电脑里没有你之前的私钥,那也看不了别人发过来的邮件。

很麻烦吧?安全的漏洞就产生在各种麻烦中,比如说「操作安全」。

任何软件都有漏洞。如果一家公司号称自己的系统在发布时zero bug,那是自欺欺人。软件工程的常态是 "ship with bugs, as long as they are not easily exploitable"。发布时带的bug是漏洞(vulnerability),如果不被利用(exploit),就不存在实际的风险。就像windows里臭名昭著的WinNuke攻击,利用的就是windows里的一个存在了很久的漏洞 —— 但之前好多年,好多个版本的windows一样活得好好的。

风险管理的要点是:我们无法弥补所有的漏洞,但我们可以让漏洞无法被利用。所以有漏洞不怕,怕的是漏洞被人发现之后不去弥补。在有漏洞的系统前放台防火墙是一种让漏洞无法被利用的方法,「操作安全」中的打补丁,是另一种方式。你以为操作系统,各种系统软件,甚至你开发软件使用的框架,如django定期发布security patch是逗你玩的么?它们都是被暴露出来的漏洞的应对之策,有些真正解决了漏洞本身,有些只是让对应的攻击不奏效(漏洞无法被利用)。如果你的系统没有对应打补丁,那么,黑客只要能嗅探出你使用的软件版本,就能找到对应的方式来玩你。

当然,所谓「匹夫无罪,怀璧其罪」,你如果没有让别人觉得有攻击的价值,那么你很可能也不会受到攻击。

对于「社会工程学安全」,很多人不以为然,尤其是我们这群自视甚高的程序员,在知乎里或者微信里喷了我一脸吐沫。你如果真生活在「技术就是一切」的梦想里我也无法阻止,我只是说给愿意听的人。

「物必先腐也,而后虫生之」,堡垒都是从内部攻破的。社会工程学瞄准的就是这点。为了证明社会工程学离你有多近,程序君写了个脚本针对程序员做最基本的社会工程学嗅探(没用之前文章里讲得那些常用手段,因为对我而言可操作性差了点)。

我们知道程序员会使用github,很多人会把自己的pet project放在上面。对于web application,基本上都会连接数据库。所以,如果你用了这些框架:如django,rails,expressjs里面都会存用户名,数据库密码。理论上作者应该把这些敏感信息屏蔽,但实际呢?我们能否通过代码找到某个人常用的用户名和密码呢?

上图是我的脚本输出的信息。本来展示的信息要比图中的多得多,我可以直接打开有泄漏嫌疑的代码去进一步嗅探,但内容太多不好一一屏蔽,用gimp(有没有更好的mac下的免费p图工具?)改图太费劲,所以我把很多输出注释掉了。

黑色的被我涂掉的内容是作者的密码,红色的是我不想让你看到的可能暴露作者身份的信息。红色划线的文字是我可以进一步嗅探这个repo中包含密码的其它文件。

这个嗅探是针对我的一个朋友。

我还嗅探了一些不认识的人,发现github简直是找寻一个用户惯用用户名和密码的宝库。有个哥们的好几个密码都是简单得以某字母开头,加八位生日,然后有一个数据库的root的密码是他的长长的英文名全写(包括姓)+生日(总共十八位之长),我也有理由相信这样的密码他会用在一些比较重要的场合,比如说邮箱密码 —— 我甚至抑制不住去猜他的gmail,来尝试这个密码是否他gmail的密码(当然我没功夫试啦)。

整个过程中我没有用任何高深的黑客知识(在此方向我基本是个小白),但通过探寻人性的弱点,和一点点脚本能力(几十行代码而已),我就可以获取到一些关键信息。

如果说看了『为什么你要懂点信息安全』及本文,你还满头雾水不知道该采取什么样的安全措施,那么,程序君总结一下:

(1) 不要使用和自己身份相关的信息作为密码(设置密码的一个好方法是记下一个英文常句,然后将其首字母连起来,再用一个固定的规律加盐,比如说,第三个字母大写,第七个字母后加一个数字等等。

(2) 如果有敏感信息在网络中传输,请确保对方网址的正确性,以及全程是否使用了https。

(3) 对于网银,能用优盾就用优盾,文件证书在windows下不安全(windows下没有节操的软件太多了)

(4) 学些心理学 —— 知道人家怎样对你施加影响,以及怎么破

(5) 脑袋里装上十万个为什么,多质疑查证

今天先写这么多,下次再讲访问控制,加密,灾备等等

原文发布于微信公众号 - 程序人生(programmer_life)

原文发表时间:2014-03-27

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漏斗社区

专属|Spectre漏洞诞生新变体

又到了熬夜看球喝啤酒的快乐日子了!昨晚,有多少小伙们跟斗哥一样,顶着黑眼圈看完了世界杯首场比赛!

1414
来自专栏区块链

啥?Metasploit里面也有菜刀

利用msf破解一句话木马 0x01 前言 本文为智者楚轩原创文章 事情要从下午说起,同学突然叫我说,xxx,我扫到一个老师在电脑上自己搭建的服务器,上面有他c盘...

3827
来自专栏工科狗和生物喵

总算搞定了域名(好吧,我一开始忘了)

正文之前 我是从大二下学期开始入程序员这个坑的。那个时候恰逢遇到了我计算机方面的启蒙学长,然后他带着我走了一段很长的路,其中就包括网站建设这个方面。我前端后端都...

69513
来自专栏信安之路

RFID 低频卡安全分析

低频非接触卡主要用于门禁丶考勤等等在日常生活中使用非常的广泛,但他也具有比较大的安全隐患,他没有一些密钥安全认证这类安全机制,所有我们只要对低频卡有所研究就可以...

1680
来自专栏FreeBuf

安全科普:详解流量劫持的形成原因

作者 gethostbyname 流量劫持,这种古老的攻击沉寂了一段时间后,最近又开始闹的沸沸扬扬。众多知名品牌的路由器相继爆出存在安全漏洞,引来国内媒体纷纷报...

3917
来自专栏知无涯

Ubuntu 15.10 中文桌面版/服务器正式版下载 - 华丽免费易于入门的 Linux 操作系统

56210
来自专栏FreeBuf

某行小程序投标测试的思路和坑

先发下牢骚吧,最近看FB里面的文章,大体上往底层概念越来越多,各种挖矿木马的,还有各种难理解的概念,都没有勇气点开看看了。

791
来自专栏容器化

k8s踩坑记 - kubeadm join 之 token 失效

3675
来自专栏即时通讯技术

解密“达达-京东到家”的订单即时派发技术原理和实践1、前言2、关于作者3、订单即时派发架构的演进5、订单派发方案的具体实现6、结语附录:更多相关技术文章

达达-京东到家作为优秀的即时配送物流平台,实现了多渠道的订单配送,包括外卖平台的餐饮订单、新零售的生鲜订单、知名商户的优质订单等。为了提升平台的用户粘性,我们需...

1122
来自专栏小樱的经验随笔

网站渗透测试原理及详细过程

网站渗透测试原理及详细过程 零、前言 渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为。 这里我们提供的所有渗透测试方法均为(假设为)合法的评估...

7319

扫码关注云+社区

领取腾讯云代金券