2008年4月16日星期三

[Tips]企业安全扯淡之网络分割

by: 云舒
2008-04-16
http://www.ph4nt0m.org

继续扯淡,今天是网络的分割问题。

网络分割几句话就能说清楚了,不过却是一个很重要并且很麻烦的问题。重要是因为做了分割之后,整体的安全性会好很多;麻烦主要是因为在实施之前整理需求很繁杂,实施之后又需要有长期的维护。

网络分割的原则,就是找到网络中的各个边界,使用路由或者防火墙将其隔离,最好是路由隔离。这里的边界主要是指办公网络和 internet的边界,生产网络和internet的边界,办公网络和生产网络的边界,以及各子公司网络的边界。除了这些比较粗略的分割之外,还应该包括小范围细粒度的划分,这里的网络已经是粗略分割之后的某一部分的分割了,包括办公网络内部按照部门职责进行的分割,生产网络按照相同应用的分割。

被分割的各个网络之间,根据部门重要程度,数据的敏感性程度,来设置他们的安全级别,进而部署访问策略。重要的部门以及应用不应该被其它部门,其它应用访问到。对于内网策略,严格来说,即使是同一个安全级别的,也应该独立开来。这里又涉及到第一篇《企业安全扯淡之YY内网准入以及划分》中讲到的动态vlan划分的内容,因为很多人是需要移动办公的。

做网络分割之前,需要对应用非常的了解。因为影响业务运作的安全措施,和攻击者造成的危害是差不多的。对于业务需要的访问,评估之后采取相应的措施,或者允许,或者使用其他手段达到同样的目的。这里前期的准备,需要和IT,运维,还有其它各种涉及到的部门交涉,谈判,争取他们的协助。

完成了严格的网络分割之后,后期的维护主要是指新策略的建立或修改。因为网络分割之后,策略由安全部门和网络维护部门协同掌握,IT和运维的新需求再绕不开安全部门的审核。这样也为制订业务的流程和标准打下了基础,也是下一篇要扯的。

2008年4月8日星期二

[Advisory]Foxmail fmrsslink.dll RSSLINKLib.Rss AddUrl() Bug

Author: void[at]ph4nt0m[dot]org
Blog: http://hi.baidu.com/54nop
Team: http://www.ph4nt0m.org
Date: 2008-04-09

影响版本:
Foxmail <= 6.5 beta1(build015)

分析:
Foxmail的fmrsslink.dll控件里IRss接口AddUrl(URL, Info)方法未检查网页提供的rss链接长度,当用户通过IE右键菜单收藏超长rss链接至Foxmail时,将导致栈溢出.


.text:
10001044 ; int __stdcall AddUrl(void *this_ptr, LPCWSTR lpURL, LPWSTR lpInfo)
.text:
10001044 AddUrl          proc near               ; DATA XREF: .rdata:100041E0o
.text:
10001044                                         ; .rdata:10004244o
.text:
10001044
.text:
10001044 str_Vuln        = byte ptr -200h
.text:
10001044 Parameters      = byte ptr -100h
.text:
10001044 this_ptr        = dword ptr  8
.text:
10001044 lpURL           = dword ptr  0Ch
.text:
10001044 lpInfo          = dword ptr  10h
.text:
10001044
.text:
10001044                 push    ebp
.text:
10001045                 mov     ebp, esp
.text:
10001047                 sub     esp, 200h
.text:1000104D                 push    esi
.text:1000104E                 push    edi
.text:1000104F                 push    [ebp
+lpURL]
.text:
10001052                 call    my_wsclen
.text:
10001057                 pop     ecx
.text:
10001058                 mov     ecx, [ebp+this_ptr]
.text:1000105B                 push    eax             ; length_lpURL,URL长度,未检查
.text:1000105C                 push    [ebp
+lpURL]     ; lpURL 
.text:1000105F                 lea     eax, [ebp
+str_Vuln]
.text:
10001065                 push    eax             ; str_Vuln 只有512字节
.text:
10001066                 call    my_WideCharToMultiByte ; <==
.text:1000106B                 mov     ecx, [ebp
+this_ptr]
.text:1000106E                 call    sub_100010D6    ; HeapAlloc()
.text:
10001073                 mov     edi, eax
.text:
10001075                 mov     esi, offset aRss_xml ; "RSS_XML:"
.text:1000107A                 lea     eax, [ebp
+Parameters]
.text:
10001080                 push    esi
.text:
10001081                 push    eax
.text:
10001082                 call    sub_100038B0
.text:
10001087                 push    esi
.text:
10001088                 call    sub_10003830
.text:1000108D                 mov     ecx, 0FFh
.text:
10001092                 sub     ecx, eax
.text:
10001094                 lea     eax, [ebp+str_Vuln]
.text:1000109A                 push    ecx
.text:1000109B                 push    eax
.text:1000109C                 lea     eax, [ebp
+Parameters]
.text:100010A2                 push    eax
.text:100010A3                 call    sub_10003700
.text:100010A8                 add     esp, 18h
.text:100010AB                 lea     eax, [ebp
+Parameters]
.text:100010B1                 push    
1                ; nShowCmd
.text:100010B3                 push    offset Directory ; lpDirectory
.text:100010B8                 push    eax              ; lpParameters
.text:100010B9                 push    edi              ; lpFile
.text:100010BA                 push    offset Operation ; 
"open"
.text:100010BF                 push    
0                ; hwnd
.text:100010C1                 call    ds:ShellExecuteA
.text:100010C7                 push    edi
.text:100010C8                 call    sub_100036E7    ; HeapFree()
.text:100010CD                 pop     ecx
.text:100010CE                 pop     edi
.text:100010CF                 xor     eax, eax
.text:100010D1                 pop     esi
.text:100010D2                 leave
.text:100010D3                 retn    0Ch
.text:100010D3 AddUrl          endp
    



解决方法:
2008年1月21日,漏洞上报腾讯.
2008年3月10日,腾讯发布关于此漏洞的修复补丁.用户升级Foxmail即可修复该漏洞.(点击Foxmail菜单"帮助"--->"检查新版本...").
QQ安全中心公告链接: http://safe.qq.com/affiche/2008/20080314.shtml

2008年4月7日星期一

[Tips]企业安全扯淡之意识与策略

by 云舒
2008-04-07
http://www.ph4nt0m.org

这是扯淡企业安全的第二篇,希望还有下一篇。因为这次要扯的意识和策略是个很麻烦的事情,可能写完这个就写不下去了。是策略,还是意识?这个问题经常被人争论,我的思路很直接,策略优先,意识第二。理由很简单,下面随便扯扯看。

首先,不是有较高的安全意识,就不会出问题。安全意识是很主观的一个东西,这就像在战场上,不是不想死的人就不会死。因为有那个意识,不一定有足够的手段能够维持这个意识的目的一定能够达到。简单的说,有一个普通员工,很有安全意识,不认识的人发的邮件不去看,附件不去点,网上乱七八糟的网站也从不浏览,只看CCTV这样和谐的页面。但是某天用工作笔记本在家上网,被人利用防火墙本身的漏洞,或者杀毒软件的漏洞,或者是foxmail的漏洞,或者arp插入到cctv页面的利用某些IEl漏洞给攻击了,一些资料马上被人拿走了。

其次,安全意识有人的情绪在里面,情绪是会波动的,因此安全意识是不稳定的。可能一个一向很有安全意识的人,一天被女朋友甩了情绪低落,去看点XXX网站消遣下,中招了。甚至可能是现在这样春天的中午,吃完午饭回来昏昏欲睡,看到个有意思的URL就去点了一下。

最后,安全意识的培养,相比策略的部署而言,是个更加困难的问题。不是朝夕之间,就可以让一个不懂安全的人,接受告诉他需要注意的条条框框。而在传统企业中,比如我接触过的机械行业,这个问题更困难。即使是在IT行业,给高管讲安全意识也不是一件容易的事情。

鉴于这些,我的思路是策略优于意识的。因为策略弥补了上面的两个问题,策略是稳定而且客观的,只要跟着时间的变化更改策略即可。当然,并不是策略先行就表示可以放弃意识,意识也是非常重要的一环,因为最终用电脑的还是人。再厉害的策略都不可能绝对的安全,再厉害的杀毒软件,也难以对付员工自己点击运行的精心制作的有针对性的木马攻击。

做安全方面的规划,我会从我可以做哪些技术手段开始。安全的目标是在用户不具备极高的安全意识的时候,仍然能够尽可能的维护信息的安全。做一个项目之前,请先想想策略方面哪里有没有周到的地方,而不是马上就说需要提高用户的意识。提高意识,是在策略已经很完善了,普通的攻击无效的情况下才需要考虑的问题。这个时候也就说明,安全已经做到一定程度了。

[Tips]企业安全扯淡之YY内网准入以及划分

by 云舒
2008-04-02
http://www.ph4nt0m.org

前些时候有人问过我现在怎么不做技术了,其实我也有做,不过没怎么做底层,而主要是以企业网络为主。从06年元月进入yahoo直到现在,我一直在做这些,只是很少写文章了。最近可能会空一点,扯淡一下企业网络的安全。

第一篇就从YY开始吧。这里随便YY一下内网安全的一部分内容,主要是YY赛门铁克的Symantec Sygate Enterprise Protection解决方案,以内网准入和内网划分为主。YY的原因是因为Symantec的Lan Enforcer支持根据客户端的完整性划分vlan,而微软的IAS支持从AD获取信息,按照用户划分vlan。

Symantec的标准做法是在接入层交换机上起802.1x,并且把认证服务器指向Sygate Lan Enforcer服务器,在Enforcer 上设定Radius代理和检测结果授权(VLAN)。那么,当安装了Agent的客户端连接网络时,首先从Sygate Police Server下载规则,判断自己的完整性。然后将认证信息和完整性信息发送给交换机,最终通过Lan Enforcer发送到radius服务器认证。Lan Enforcer根据radius的认证结果和完整性决定vlan划分结果,并发送到交换机实施。

微软的IAS方案的一种做法,和上面类似,唯一缺少的是完整性信息,但是多出一个去AD获取查询数据,返回用户部门等资料的功能。用户提交的认证信息通过交换机到达IAS,最终到达AD认证。IAS根据用户信息决定如何划分vlan并讲结果发送到交换机实施。

YY开始了。接入层交换机起802.1x认证,认证服务器指向IAS服务器,IAS服务器指到Sygate Lan Enforcer服务器,再指到AD上面。用户端安装Sygate Agent,连接时发送用户信息以及完整性信息,最终到AD认证密码,在Sygate Lan Enforcer认证完整性。如果密码认证失败,禁止接入网络;如果密码成功而完整性失败,划入隔离修复vlan;如果两次检测都成功了,IAS根据AD 的返回信息,划分到该部门的VLAN去。

估计Symantec和Microsoft是不会配合的,不过说不定有第三方的什么产品实现了这种方案,甚至Symantec和Microsoft自己已经实现了而我不知道,因为好久没和这些厂商的售前扯淡了。