首页 > 安全 > 网络安全 >

网络安全工程师的兵法法则

2014-01-21

0x01 白帽子兵法 互联网的安全核心其实就是数据安全的问题。在一个互联网公司中拥有对资产进行等级划分,也就是对数据进行等级划分。有的公司最关注的就是客户的数据,也有的是自己本身的员工数据信息,因

0x01 白帽子兵法
互联网的安全核心其实就是数据安全的问题。在一个互联网公司中拥有对资产进行等级划分,也就是对数据进行等级划分。有的公司最关注的就是客户的数据,也有的是自己本身的员工数据信息,因为各自的业务不同。IDC关系的就是客户的数据安全,客户的安全保障就是他们的公司保障,也是一个公司是否能赢得客户的信任。当这些数据规划好等级的时候,我们对那些数据重要就有个大概的了解,接下来就是划分信任域和边界了。将等级高重要的数据放在安全信任域中,其他的放在信任域以外。
0x02 危险分析
当数据被按等级规划放置后,我们怎么样才能确定危险是来自哪里的?危险的来源我们称为是威胁,面临可能存在的损失我们说他是风险。许多白帽子都把这个搞混了。
·威胁分析不得不提出微软的STRIDE的模型。
STRIDE=Spoofing + Tampering + Repudiation + InformationDisclosure + Denial of Servce + Elevation of Privilege
伪装 + 篡改 + 赖皮 + 泄露 + 拒绝服务 + 提权 = STRIDE
1. 伪装:通过冒充他人的身份鱼目混珠。 对应的解决方法:加一个认证
2. 篡改:通过修改数据或代码。 对应的解决方法:修改代码的完整性
3. 赖皮:不承认自己做过的事情。对应的解决方法:不可抵赖策略
4. 泄露:信息秘密都泄露了思密达。 对应解决方法:加密
5. 拒绝服务:加强可用性
6. 提权:没有通过管理的许可获得许可。 解决方案:授权
白帽子花费大量时间去完成安全方案,只看重了一点,导致黑客利用事先白帽子没有注意到的漏洞发起攻击,原因很简单,白帽子在确定攻击面的时候想的还不够全面。就像某个学校来领导突击检查,我们的学校把风景都做在前院子里,但是领导却是从后门进来的,导致事件败露。
0x03 危险分析
危险分析也就是判断漏洞对系统造成的影响的危害大小,就好比360库带计划平台,漏洞类型他也有漏洞等级低、中、高。
再给大家介绍一个也是由微软提出来的DREAD模型,也是首字母缩写。
等 级
Damage Potential
获取完全的验证权限;执行管理员操作;非法上传任意文件
泄露敏感数据信息
泄露其他不是太重要的信息数据
Reproduciblility
黑客可以发起第二次攻击
黑客在特定时间内可以重复攻击
黑客很难发起二次攻击
Exploitability
黑客可以在短时间内掌握攻击方法
经验丰富的老黑客可以完成这次攻击
漏洞利用条件有阻碍
Affected users
所有的用户,默认配置
部分用户,不是默认配置
极少数的匿名用户
Discoverability
漏洞暴露的很显眼,攻击起来so easy
在特定区域内,有些人能看,需要深入挖洞
发现漏洞特难
在这个模型中,所有的因素都可以分成低中高三个等级。
就说打群架,你们在一个院子里躲着,敌人从大门进来直接打我们定义的危险度最高,而后门很小,他们进来对我们的威胁度不高,我们可以单放。高危就是他们从大门一起冲进来对打,低危就是从后门进来。因为后门小,对我们的威胁不大,而且后门也非常隐蔽。所以我们主要就是要做好前门的防御。
0x04 我们的兵法 – SBD原则
SBD就是Secure By Default默认安全。
0x04x01 黑名单 白名单
服务器上有网站产生的环境,应该限制软件随意安装,需要定制统一的软件版本,这个规定可以使用白名单的思想,就应该列出一个那个是允许那个是不允许的。就好比说我们服务器提供web服务,使用的80和21端口,我们就可以屏蔽其他没有用的端口。假如我们用黑名单,可能会出现问题,假如你是linux系统,黑名单设置的策略是不允许ssh端口对net开放,那么审计就要从ssh默认端口22开始,但是有的时候为了偷下懒,我们的管理员可能会改变下ssh的默认端口,从而绕过安全策略。
0x04x02 Flash跨域
白名单的例子,Flash跨域请求访问,它是通过检查服务器上的crossdomain.xml文件来验证是否允许黑客发起flash的跨域请求。
http://www.hao123.com/crossdomain.xml
这样的就是它指定了只能从这几个域中的Flash发起请求。
<cross-domain-pokicy>

<allow-access-from domain=”*”> 这就允许所有的域都可以发起请求,明显不安全。


</cross-domain-pokicy>

0x04x03 SBD最低权限
SBD还有一层意思就是最低权限。最低权限只给授予主体必要的权限,如果过度的授权,就会增加出错的平率。
Linux系统中,一般都是用普通号登陆的,在执行需要root的操作时,再通过sudo命令完成,这样能降低一些操作的风险,如果普通号被别人盗用时,与root账号被盗,两个完全是不一样的后果,你懂得。
0x05 数据代码分离原则
缓冲区溢出也可以说是程序违背了数据代码分离原则所造成的后果,混淆了数据与代码的边界导致了严重的后果,在WEB安全中,由Injection引起的问题到处都是,比如XSS、sql注入、CRLF注入等等,也是如此。
XSS:html注入和javascript注入所产生的XSS,如下面的页面
<html>

<haed>XSS injection</head>

$var

</body>

</html>

Ps:$var就是用户所能控制的一个变量,对于这个代码它的执行段就是
<html>

<haed>XSS injection</head>

</body>

</html>

$var就是程序的用户数据片段。
如果把这个片段来解释、执行就会引发安全问题。
假如$var的值是:<script src =http://bbs.lfssi.org></script>
这时,用户的数据就被注入到代码片段中,解析这个脚本并执行了,把<script>当做代码来解释了。
根据数据代码的分离原则,这应该把用户的数据片段$var安全处理,比如过滤之类的,把可能造成代码混淆的数据都清除了,就是对<>做处理。
<html>

<haed>XSS injection</head>

<body>

<script>

Alert(“$var0”);

</script>

</body>

</html>

在这种情况下,<script>也变成了代码片段的一个部分,用户数据只能由$var0来控制了。
0x06 你不能预测的事
我们广大的Windows系统用户常年生存在缓冲区溢出的痛苦中,因此微软公司在更新windows的时候增加了许多对抗缓冲区溢出的功能,但是微软他没法让在windows上运行的软件没有漏洞,所以说这个方法是失效的。通过实践来说,DEP保证堆栈不可能执行,使用ASLR让栈基址随机变化,从而使攻击程序无法准确地猜到内存地址,提高了攻击的障碍。微软的思路确实是有用的,即使无法恢复代码,如果有一种防御可以使攻击方法无效,那么才是正确成功有效的防御。
假如我们的网站的文章序号,是按照数字的升降序来排的话,id=100,id=102……
如果说黑客要删除这些文章,只需要写个代码:
For (a=0;a<10000;a++){

       Deletel(url+”?id=”+a);

}

就可以很快就del了。
如果把这些id值变成你不能猜到的呢?
Id=bbslfssiorg,id=fuckbaiducom,id=fuckscanvcom …….
Id值变的你完全猜不到他是什么规律,黑客们再想删除文章,只能通过sitemap bug把所有的页面都抓取了,然后慢慢计算,作用呢有效的防止黑客有这个耐心去攻击
相关文章
最新文章
热点推荐