PHP性能优化 代码人生

一、规范说明

性能是网站运行是否良好的关键因素, 网站的性能与效率影响着公司的运营成本及长远发展,编写出高质高效的代码是我们每个开发人员必备的素质,也是我们良好的职业素养。

二、影响性能的因素

A、 商业需求

1. 需求合理性

2. 需求与系统的整合

3. 需求所带来的商业利益是否与需求开发的成本成正比

4. 需求所带来的风险

B、 Web 服务器

1. 并发处理能力

2. 高负载的能力

3. 负载均衡的能力

4. 动态内容与静态内容的处理能力

5. Web 服务器部署

C、 DataBase 服务器

1. 并发访问

2. 数据库服务器的部署

3. 数据库的 shema 架构与的表设计是否合理

4. 数据检索

D、 操作系统

E、 客户端请求

F、 程序/语言

三、分析性能的指标

1. 程序的运行时间 2

2. 程序的运行所消耗的内存

3. 单位时间内的并行处理

4. 磁盘 IO 的处理

四、优化性能的目标

快速、并发、资源消耗低(内存、磁盘 IO、CPU 负载)

五、优化性能的原则

1. 服务器配配置最优化

2. 服务器部署合理化

3. 商业需求合理并与产出的商业价值成正比

4. 架构可用、可维护、可扩展

5. 程序的正确性、简单性、逻辑的合理性。

6. 不断的分析性能的的瓶颈

7. 不断的重构已有的代码

8. 优化的优先级:program->database->web sersver->os->client

六、优化

A、 程序优化

· 变量

1、 变量大小,注意变量大小是节约内存的最有效手段,对于来自用户表单、数据库和文件缓存的数据都需要控制变量的大小。 因为cpu要处理的数据是来源于内存

2、 变量有效期,使用unset()函数注销不需要的变量是一种良好的习惯,将一些不需要的变量立即注销可提高内存的使用率。

3、 复制变量,尽量不要复制变量,否则就会带来1倍的内存消耗,即使复制变量也应该要立即注销原有变量。

4、 变量类型,初始化变量请注意其变量类型,一个变量在执行过程中最好只有一种类型状态。对于数组变量,请初始化声明,如下: $a = array();

5、 临时变量,是处理业务逻辑的临时存储,这些都是需要消耗内存的。如果临时变量使用结束请立即注销,特别是在一些过程式代码的执行流程中,对于一些函数,如果业务非常复杂,同样需要立即注销临时变量

6、 静态变量,对于一些需要由复杂业务产生的变量,如果在程序的执行过程中多次产生并使用,可考虑使用静态变量,减少程序的cpu执行次数

7、 变量的性能:局部变量>全局变量>类属性>未定义的变量。

· 循环

1、 尽量减少循环的次数。

2、 尽量减少循环的潜逃的层次,不要超过三层。

3、 避免在循环内有过多的业务逻辑。

4、 不要循环包含文件

5、 不要循环执行数据库操作。

6、 优先使用foreach,它比for/while效率高

7、 不要把 count/strlen/sizeof 放到 for 循环的条件语句中 For($i=0,$count=count($array);$i<$count;$i++){} 不要使用for($i=0;$i<count($array);$i++){};

8、 for($i=$total;$i>0;$i–){}性能好于for($i=0;$i<$total;$–){}

9、 保持循环体内的业务逻辑清晰

· 函数

1、 函数职责清晰,一个函数只干一件事,不要杂揉过多的业务逻辑

2、 函数代码体不要超过20行,反之,考虑拆分。

3、 优先使用php内置函数

4、 常量与函数同时能干一件事,优先使用常量。

· phpversion() < PHP_VERSION

· get_class() < CLASS

· is_null() < NULL ===

5、 echo 的性能好于print,输入多个变量的时候用echo $str,$str1,不用.连接符

6、 $_SERVER[REQUEST_TIME]替换time();

7、 字符串替换strtr()->str_replace()->preg_replace()->epreg();

8、 发挥trim最大功效,替换substr。$filepath=trim($filename,’/’).’/’;

9、Isset/empty 虽然两个函数功能有所差异,但在同样的情况下推荐使用 empty()

10、isfile/file_exist 两个函数的功能有所不同,file_exist既可判断文件是否存在,也可以判断目录是否存在,在同样的情况下推荐使用is_file

· 文件

1、 减少文件包含数,减少磁盘 IO

2、 使用完整路径,或者容易转换的相对路径。避免在 include_path 查找

3、 文件的代码行数不要超过 2000 行

4、Require_once/include_once 效率低于 require/include, 需要额外的去查看系统是否已经调用过这个文件. 因为它们在一个 opcode 缓存下的调用非常慢

5、程序执行文件用 requie/require_once,缓存文件用include/include_once。Include 效率好于 require

6、优化 spl 中的文件自动加载机制,可参靠 yii

7、类库文件加载,是否考虑类是否已经实例化,可考虑采用设计模式之单例模式

8、文件读写的并发性

面向对象

1、 控制实例的创建的数量

2、 优先使用常量、类常量

3、 优先例用静态变量,静态属性

4、 类的结构合理

5、 面象接口编程

6、 封装变化点

7、 依赖于抽象,不依赖于细节

8、 优先使用静态成员

9、 类的接口清晰稳定,类的职责单一,类与类的通信合理

10、 使用常量的好处 编译时解析,没有额外开销 杂凑表更小,所以内部查找更快 类常量仅存在于特定「命名空间」,所以杂凑名更短 代码更干净,使除错更方便

字符串

1、 用单引号替代双引号引用字符串;避免检索字符串中的变量

运算

1、 用 i+=1 代替i=i+1。符合c/c++的习惯,效率还高

2、 ++$i 的效率高于++$i,–$i 同理

数组

1、 多维数组尽量不要循环嵌套赋值;

2、 使用$array[‘name’]方式访问数组,禁止$array[name]/$array[“name”]

判断

1、 逻辑判断请优先使用switch 的方式,对于业务逻辑相对较多的情况请选择if/else,提高代码的可读性

2、 尽量控制if/else判断的个数,如果太多请考虑功能优化或代码优化

3、 尽量使用恒等用于比较判断,恒等的效率高于等于,而且还能避免一些类型强制转换的错误

4、 if/else与_&&,单条语句判断请选择&&的形式, &&的效率高于if/else,如下 :

if ($a == 1) {

$b = 2;

}可选择为($a == 1) && $b = 2;

缓存

1、 使用php加速器,缓冲opcode

2、 例用memcache/nosql

3、 使用内存数据库、

4、 使用文件缓存

5、 缓冲功能 5

其它

1、 少用@符号,严重影响性能

2、 适时关闭远程资源连接如数据库,ftp、socket等,适时的清理这些资源

B、 数据库优化

1、 合理的商业需情

2、 数据库 schema 架构优化

3、 垂直与水平分库分表

4、 索引优化,查询优化

5、 第三方开源检索工具(sphinx)

6、 主从数据库服务器的使用。

C、 Web 服器优化(暂未整理,有相应的 Web 服务器优化手册)

D、 操作系统优化(暂未整理,有相应的 OS 优化手册)

E、 前端优化

1、合理的 html 结构

2、合理 html 与css 的同时,考虑 Css 设计合理,减少 http 请求

3、合理 html 与java script 的同时,考虑拆分是否合理,减少 http 请求

4、优化 java script 代码,让用户有良好的体验

5、根据 http 协议,优化高并发请求

七、性能检测工具

Web Server

ab

http_load

PHP

apd

xdebug

Mysql

explain

profiler


admin 发布于  2014-12-19 22:23 

骚年们 别CC我博客 没有价值 业界新闻

有价值么?


值得你这么投入?


我这里没有啥有用的数据?


你喜欢啥就说,我直接发你邮箱。


花这些时间还不如好好学学编程,PHP,asp.net、Java、C#等等 那个不好。



admin 发布于  2014-12-18 19:55 

插入U盘自动攻击:BadUSB原理与实现(含视频) 渗透测试

漏洞背景

“BadUSB”是今年计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在今年的BlackHat安全大会上公布。BadUSB号称是世界上最邪恶的USB外设。

笔者使用他们的代码做了个类似的U盘,用户插入U盘,就会自动执行预置在固件中的恶意代码,下载服务器上恶意文件,执行恶意操作。注意,这里的U盘自动运行可不是以前的autorun.inf自动运行程序哦,具体的技术细节可以参考后文内容。

视频链接:http://v.qq.com/boke/page/l/g/w/l01425u2igw.html

BadUSB最可怕的一点是恶意代码存在于U盘的固件中,由于PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB进行攻击。

BadUSB原理

在介绍BadUSB的原理之前,笔者在这里先介绍下BadUSB出现之前,利用HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行攻击的两种类型。分别是"USB RUBBERDUCKY"和"Teensy"。

TEENSY介绍

攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。

关于TEENSY,可以参考天融信阿尔法实验室的《HID攻击之TEENSY实战


USB RUBBER DUCKY介绍

简称USB橡皮鸭,是最早的按键注入工具,通过嵌入式开发板实现,后来发展成为一个完全成熟的商业化按键注入攻击平台。它的原理同样是将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。

这两种攻击方式,是在BadUSB公布之前,比较流行的两种HID攻击方式,缺陷在于要定制硬件设备,通用性比较差。但是BadUSB就不一样了,它是在“USB RUBBER DUCKY”和“Teensy”攻击方式的基础上用通用的USB设备(比如U盘)。

U盘的内部构造


U盘由芯片控制器和闪存两部分组成,芯片控制器负责与PC的通讯和识别,闪存用来做数据存储;闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互;固件无法通过普通手段进行读取。

BadUSB就是通过对U盘的固件进行逆向重新编程,相当于改写了U盘的操作系统而进行攻击的。

USB协议漏洞

为什么要重写固件呢?下面我们可以看看USB协议中存在的安全漏洞。

现在的USB设备很多,比如音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱;所以在设计USB标准的时候没有要求每个USB设备像网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。这样就可以通过重写U盘固件,伪装成一个USB键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码而进行攻击。

BadUSB利用代码分析

笔者对KarstenNohl和Jakob Lell公布的代码进行简单的一个流程解析。

这样一个带有恶意代码的U盘就产生了,更详细的可以搜索Karsten Nohl 和 Jakob Lell公布的代码。

总结

“USB RUBBER DUCKY”、“TEENSY”、“BadUSB”三种最终都是利用了USB协议的漏洞而进行攻击的,“BadUSB”和另外两者的区别在于:BadUSB可以利用普通的USB设备,而不需要进行硬件定制,更具有普遍性。

HID攻击方式有很多种,BadUSB作为其中一种是通过伪装成键盘设备来实现的,同时HID攻击也可以通过伪装成网卡进行DNS劫持攻击。BadUSB的危害目前局限于单向感染,即USB设备感染PC,暂无发现从PC感染USB设备案例。

为了预防此类安全风险,需要我们在日常使用USB设备时,不要使用陌生的USB设备,避免USB存在恶意代码导致安全风险。

延伸:更多的USB接口攻击

通过USB接口攻击的案例很多,BadUSB只是一类,还有通过USB接口横跨PC和Mobile平台进行攻击的案例。




     比如今年爆发的WireLurker蠕虫,感染病毒的电脑系统会通过USB接口去间接感染iOS设备,即使是未越狱的设备也无法避免;


最近央视也报道了充电宝盗取手机隐私的案例对于愈演愈烈的USB风险,应用层还没有见到好的解决方案。倒是硬件层面比较容易解决。比如360无线安全研究团队的SecUSB,还有我们腾讯安全应急响应中心的SecLine。原理都是将USB中的两根数据线去掉。转自freebuf


admin 发布于  2014-12-17 19:52 

deDacota:通过自动化分离数据和代码防御服务端XSS漏洞 渗透测试

原文题目:deDacota: Toward Preventing Server-Side XSS via Automatic Code and Data Separation

原文地址:http://cs.ucsb.edu/~adoupe/static/dedacota-ccs2013.pdf

以下为译文:


Web应用持续受到各种方式的攻击。跨站脚本漏洞是最流行的漏洞之一,产生原因是不被信任的恶意数据通过浏览器提交给应用,并且被解释为程序代码,最终被浏览器执行,造成攻击。本文介绍一种方法可以高效、自动重写应用代码,实现分离网页代码和内联JS脚本,应用CSP策略避免跨站脚本漏洞的产生。

一、跨站脚本漏洞:

跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等攻击行为。恶意的攻击者将对客户端有危害的代码放到服务器上作为一个网页内容, 使得其他网站用户在观看此网页时,这些代码注入到了用户的浏览器中执行,导致用户受到攻击。一般而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。

跨站漏洞从利用方式来说分为反射性漏洞和存储型漏洞,发生原因是服务端对用户输入的数据没有进行适当的过滤,导致发送给浏览器的网页携带恶意脚本,从而产生漏洞。从跨站脚本产生的位置不同,又可以分为客户端跨站漏洞和服务端跨站漏洞。客户端跨站漏洞的产生不依赖于用户提交到服务器的数据,也称之为DOM-XSS漏洞。而服务端跨站漏洞依赖于用户提交到服务器的数据,本文主要的研究内容就是如何通过分离网页代码和内联JS脚本,并应用CSP的方式阻止服务端XSS攻击。

二、内容安全策略(CSP)

为了缓解很大一部分潜在的跨站脚本问题,浏览器的扩展程序系统引入了内容安全策略(CSP)的一般概念。这将引入一些相当严格的策略,会使扩展程序在默认情况下更加安全,开发者可以创建并强制应用一些规则,管理网站允许加载的内容。

CSP 以白名单的机制对网站加载或执行的资源起作用。在网页中,这样的策略通过 HTTP 头信息或者 meta 元素定义。CSP虽然提供了强大的安全保护,但是他也造成了如下问题:Eval及相关函数被禁用、内嵌的JavaScript代码将不会执行、只能通过白名单来加载远程脚本。这些问题阻碍CSP的普及,如果要使用CSP技术保护自己的网站,开发者就不得不花费大量时间分离内嵌的JavaScript代码和做一些调整,本文研究的技术可以自动化分离网页代码和内联JS脚本,帮助网站支持CSP技术从而避免潜在的跨站攻击。

三、内联JS分离技术

内联JS分离技术包含三个主要步骤:

1、 静态分析网页代码的HTML输出。

2、 从HTML页面抽取出全部内联JavaScript代码。

3、 重写应用代码以便于适应分离的内联JavaScript代码。

这项分离技术也有一些局限性,比如不能应用于混淆、加密后的代码,只针对服务端XSS漏洞,对于基于DOM的XSS漏洞完全无效。所以这项技术对于XSS漏洞来说并不是万灵药,在与CSP策略结合后只解决大部分XSS的问题,减轻了开发人员的工作量,如果想要完全防御XSS漏洞,只需针对动态产生的JS代码和DOM-XSS做过滤和检测。

以ASP.NET网页表单页面为例。

1

图一: 简单的ASP.NET代码

首先需要确定应用程序是如何输出内容到页面:

<%%>之前的内容会直接输出到HTML页面,并且他们都是C#代码。

<%=代表这个C#代码是变量,在程序运行时其内容会被决定,并输出到HTML页面。

从图一中可以看出,第二行定义的是常量,第三行定义的是变量,在第七行username这个变量就被输出到HTML中,作为内联JS脚本执行。

2

图二:被C#编译器编译后的图一中代码。

在经过C#编译后的代码中,Write函数代替了<%%>标签作为输出函数,可以将内容写到页面当中。而var username代替了<%=标记,通过第八行的Wirit(this.username)将变量内容输出到页面当中。

在第一个阶段有两个关键步骤。第一个是确定将要输出到页面的内容。第二个是确定输出函数被调用的顺序。

我们使用points-to分析算法静态分析源代码来解决这个问题。简单的说points-to算法可以确定指针与变量地址的对应关系,最初被应用于C代码的静态分析当中。这个算法可以确定变量内存储的是常量字符串还是变量。通过它就可以判断Write函数将要输出的内容是常量还是变量,也就确定了那些地方是我们需要分离的数据。

为了确定Write函数被调用的顺序,我们使用了标准的控制流程图,可以准确确定函数调用顺序。这个控制流程图是一个无回路有向图(DAG),任何从根节点出发的叶子节点都代表一个可能的页面输出。

3

图三:程序控制流程图

图中每个实线圈出的节点都是直接输出常量到页面中,虚线圈出的节点是变量输出到节点,该节点值由程序动态决定。

在第二个阶段,我们使用之前生成的有向图精确地分离内联Javascript代码。从根节点出发到达的每个叶子节点都代表一个潜在的页面输出。我们使用一个递归算法递归全部的路径,对每个输出字符串进行识别,从而分离出Javascript代码。在这个过程中可能产生路径爆炸问题,因为即使一些很简单的代码也可能产生大量的逻辑路径,导致遍历失败。我们通过两种方法解决这个问题,第一个就是忽略注释代码。第二个是在每一对Javascript标记中处理不同路径,减少一次性处理的范围。当全部的内联Javascript代码都被识别之后,我们将结果传入下一个阶段——代码重写。

第三个阶段将全部内联Javascript代码与HTML代码分离,将他们存入外部Javascript文件中。原来写Javascript代码的地方被替换为<script src=”External.js”></script>这种形式。程序依照以下流程来重写应用:首先检查Wirte函数中要输出的内容,如果包含Javascript的开始标记,就使用SESSION标记指明这个地方含有内联Javascript代码,重写功能就会先移除这个Javascript标记然后将JS代码内容存入Session缓冲区,并且保持SESSION标记是唯一的,当程序读取到JS结束标记后,删除这个标记,一个内联JS就完整的与代码分离了。之后这个过程一直重复,直到内联JS代码全部被存入Session缓冲区为。最后对每个session缓冲区区hash值,作为外部JS文件名称,以便程序调用。

4

图四:重写之后的代码。

执行完这些步骤我们已经可以完全分离了内联JS脚本,如果其中的脚本仅仅是静态产生的JS脚本,那么网站在应用CSP后就可以完全防御XSS攻击的威胁。但是内联JS脚本中还有动态产生的脚本,将这些脚本仅仅分离到外部JS文件不能防御XSS攻击。比如针对图一中的代码。如果输入username=””;alert(‘xss’)//;那么最终在浏览器执行的脚本会是<script> var username=””;alert(‘xss’)//”;></script>,依然产生跨站威胁。这种跨站威胁应用我们的处理流程是不能完全根除的,因为这是服务端跨站漏洞。但是我们为了减轻动态脚本产生XSS漏洞的可能性,采取了两个处理方法。第一个方法是标记并记录动态脚本,方便人工评估动态产生的脚本是否包含漏洞。第二个方法是定制相应的过滤方法,对动态输出的内容进行转义、过滤。这两个方法只能减轻动态JS脚本产生XSS漏洞的可能性,但不能完全杜绝,这也就是为什么本文主要针对服务端XSS漏洞。

四、评估与实验

实验主要评估该方法的三个方面,第一个是抵御XSS攻击的效果,第二个是重写后的应用源代码是否会产生异常,第三个是重写应用代码对应用性能的影响。

实验选取了以下应用作为实验对象:

5

图五:选取的实验对象。

实验对象选取的条件主要是以下三点:

1、 应用程序开源。

2、 应用包含已知的XSS漏洞。

3、 应用代码没有经过混淆、加密。

因为ASP.NET开源项目很少,所以最后满足条件的项目只有这6个。这些项目有MVC框架的也有非MVC框架,并包含一定量的代码行数(LOC),满足我们的实验条件。

五、    实验结果:

当内联JS代码分离完成及应用了CSP策略后,我们手工的使用EXP对网站进行攻击,原始应用都产生了漏洞,但经过流程处理后的应用都防御了攻击。为了检测处理后的网站时候会产生错误,我们采取手工测试的方法,对每个页面的功能进行检测,最后发现没有任何错误产生。在图六中我们可以看到不同应用的JS分布。安全动态JS指程序识别出动态生成的JS输出内容并进行清理转义,已经安全。不安全的动态JS是我们不能正确识别的,仅进行记录并分离到外部JS文件中。图中(4)标记代表在ASP.NET框架编译程序时会自动产生4个JS脚本,这是我们不可控的元素,不作考虑。最后我们测试了应用性能,结果显示内联JS代码分离可根据内联JS代码使用数量的多少,适当减小页面代码,加速页面加载速度。对于内联JS使用较少的页面会产生反效果,但是不会产生较大影响。

6

图六:内联JS分离完成后的文件分布。

7

图七:内联JS分离完成后页面大小及响应时间对比。

六、总结与不足:

这项技术主要通过结合CSP策略来防御XSS攻击,根据我们的实验结果,该项技术已经达到一定的实际应用水平,可以抵御服务端XSS攻击并且不影响程序的执行结果和网站效率。

这项分离技术也存在一些局限性,比如不能应用于混淆、加密后的代码,只针对服务端XSS漏洞,对于基于DOM的XSS漏洞完全无效。虽然这个方法已经基本可以应用到实际场景当中,但是程序获得内联JS的方法还需要持续改进。目前对于复杂的框架模板比如PHP经常使用的框架Thinkphp,不修改原有程序就识别内联JS脚本存在困难。但是只要解决了输出是如何被应用创建的,和怎样重写应用这两个问题,那么这项技术就可以应用于该框架。对于不同的框架需要不同的定制,对框架通用性较差。



admin 发布于  2014-12-16 13:24 

唉 以后低调了 在不低调就得被查水表了 业界新闻

我昨天手机收到一条短信说我 百度账号通过密保邮箱修改了密码  我去登我的百度账号 果然密码就不对了,,我马上就修改了密码  。。然后去邮箱看了一下没有异地登录记录  登录IP也为我这边的   我的QQ也是我自己的IP 而且我的QQ异地登不上去 网页也不可能登上去 邮箱有二次验证的   但是我刚刚去看我的网盘 被清空了、、、3052G的数据啊! 尼玛我就想起了 我在博客上发了查资料的软件  还有一些违禁品 。。地址全是百度网盘的。。。我就次熬了。。。。。我就在想是不是度娘给我删除了  还有就是 我的原来那个账号里面有一整套csdn的数据资料 整整2T 我那天登录上去也没了  也被清空了。。我分析一下 1.是不是我的内网被劫持了 2.或者是我的cookies被人劫持了 3.或者是浏览器账号被劫持了 4. 被远控  5.百度云储存性XSS  6. 被举报 

经过我的排除,搜索,最终确定 是被举报了。。。。尼玛 我TM以后得找国外的网盘分享了。。。天朝太危险、、、等我赚的钱足够跑路的时候在嚣张 哈哈   以后想要查资料 、黑客工具之类的 请直接留邮箱私信吧 


admin 发布于  2014-12-15 17:51 

以人为本,知己知彼再谈APT攻击与防范 神器荟萃

图片1


为何会有APT?

2013年4月份Verizon发布的《2013年数据破坏调查报告》报告将包括APT攻击在内的信息破坏的敌对方分为了有组织犯罪集团、国家或国家资助的组织、黑客活跃分子三类。

在木马病毒泛滥时代的地下经济驱动中,各个国家均是地下经济体系和恶意代码的受害者。而APT出现的最本质原因是国家和政经集团作为“大玩家”直接介入到网络攻防的游戏体系当中,而攻击的对象也变成了他国政府和其他对立的政经体系。

APT得本质是什么?

在这里我们聊一聊APT究竟是什么的问题,有一句俗话这么说,要把问题看透,看透就是说,要找到本质,APT的本质是什么?这里可以借用一个做APT攻击的一线人员的说法,他说,APT的本质就是“死死的盯住目标,没有时间限制,没有方法限制,尝试每一种可能的攻击”所以Advanced Persistent Threat 中 Persistent 是关键。

APT为何大方光彩?

传统黑客攻击手段可分为非破坏性攻击和破坏性攻击两类。非破坏性攻击一般是为了扰乱系统的运行,并不盗窃系统资料,通常采用拒绝服务攻击或信息炸弹;破坏性攻击是以侵入他人电脑系统、盗窃系统保密信息、破坏目标系统的数据为目的。通常来讲,这种攻击方式,一般为非可持续性攻击,比如此系统当前无可利用漏洞和方法,攻击无法进行,这时候攻击者会为此目标总结定性,并结束攻击。
主与传统攻击相比,APT却不会到此结束,攻击者会暂时搁浅此系统攻击,而静静的等待时机,一周?一月?一年?甚至多年,都是可能的。然而计算机世界并没有什么系统是完美的,是决对安全的。再者APT攻击者很多时候的攻击并非针对计算机系统,而是人,人性的弱点从人类文明以来总是固有的,社工,钓鱼,欺骗等等,最后导致的结果就是,系统的沦陷,数据的失窃。在这种坚韧不拔的攻击精神下,APT成就了大批的成功攻击案例,足以震惊世界。

APT的常用手法是什么?

知己知彼,百战不殆,了解了APT的真实攻击手法,才能真正的了解APT,才能做到防患于未然。

一般攻击采用的攻击方式为,鱼叉式网络钓鱼(Spear phishing),是指只针对特定目标进行攻击的网络钓鱼攻击。当进行攻击的黑客锁定目标后,会以电子邮件的方式,假冒该公司或组织的名义发送一封难以辨真伪的电子邮件,诱使目标员工进一步登录帐号密码,使攻击者可以以此借机安装木马后门或其他间谍软件,窃取机密,或于员工时常浏览的网页中,置入病毒自动下载器(下载者),并持续更新受感染系统内之变种病毒。由于鱼叉式网络钓鱼锁定对象并非一般个人,而是特定公司、组织之成员,所以受窃资料也不是一般网络钓鱼所窃取的个人资料,而是其他高度敏感性资料,如商业机密。下图1是一次APT攻击的大概流程,下面以图1为蓝本简要介绍。

图片2

图1

1. 情报搜集
黑客透过一些公开的数据源 (Facebook、博客、微博等等) 搜寻和锁定特定人员并加以研究,然后定制攻击策略。

2. 首次突破防线,打入网络内部
首次突破防线的入侵手法,通常是透过电子邮件、实时通讯或网站顺道下载等社交工程技巧在用户系统植入零时差 (zero-day) 恶意软件。接着在系统开一个后门,网络门户因而洞开,后续渗透便轻而易举。(有时,黑客也会攻击网站的漏洞,或是直接入侵网络。)

3. 幕后操纵,通讯控制
幕后操纵 (Command & Control,简称 C&C) 服务器是黑客用来操纵受感染计算机与恶意软件以对您内部网络发动后续攻击的外部主机。

4. 内网渗透与移动
一旦进入企业网络,黑客就能进一步入侵更多计算机来搜集登入信息,提高自己的权限,让计算机永远受到掌控。

5. 重要资料发掘与搜索
黑客有许多技巧 (如端口扫瞄) 可以发掘有价数据所在的服务器或服务。

6. 资料外传
一旦搜集到敏感信息,这些数据就会汇集到内部的一个暂存服务器,然后再整理、压缩,通常并经过加密,然后外传。

APT攻击常用的RAT工具

在APT攻击中,所使用的工具与传统黑客攻击所使用的工具相比,更专,更精,它通常不具备太大的通用性,而是专注于某一个领域,比如特马,也就是远程控制,可能不具备太多功能,但在穿透防火墙方面,却要求决对精致,针对某些防火墙,都特别处理过。而漏洞也是如此,基本做到一击必杀!

这里对APT比较钟爱的远程控制做一个简要介绍。其工具为国外公开的远程控制控制其官方网站如图2所示,其软件主界面如图3所示。

图片3
图2

图片4

图3

这款远程控制软件只所以被APT攻击者广泛使用主要由如下几个原因,其一此软件较为成熟且稳定,其次此软件支持SHELLCODE的方式生成,被控制端,对杀毒软件有较强的免杀性,也方便后期针对杀毒软件的处理。最后它足够小,完全可以被植入到PDF,DOC等文档中。

APT为何难以预防?

图片5 APT攻击者在攻击时,主要有两个比较明显特性,其一为持续性,其二为攻击目标主要以人为主。

持续性攻击为一个长期过程,每当某个系统或者软件,出现安全漏洞时,攻击者都会趁虚而入,多数计算机系与安全防御系统在一个时间内可以有效的防御攻击,但不可能长期一直有效的防御,但计算机系统与安全防御系统,出现任意时,都会导致系统的沦陷。

当攻击者从计算机系统安全无法入侵成功或无法达到想要的效果时,就会考虑针对人员下手,因为攻击者认为,当一个企业或者组织足够大时,最薄弱的环节是人,因为在众多的人员中,总一些人是没有安全意识或者安全意识比较薄弱。从这些薄弱的目标下手,总是可以拿到丰硕的成果。

当攻击者的目标主要为人时,会使大部分安全防御系统失去应有的效果。无论任何应用都是以人为主,人可以关闭一切防御,比如,当一个用户使用攻击者提供的一个游戏外挂时,杀毒软件会有报警提示,但这时,用户很可能会关闭杀毒软件,而继续运行游戏外挂,倘若这个游戏外挂中载有木马程序呢,不言而喻,攻击者会直接进入用户网络,并且为最高权限。

综上所述,APT之年以难以防御,是因为它的攻击周期较长,且攻击方法复杂,不可预测,而网络安全的木桶效应中,最短的那块木板是人,也恰恰是最容易受到攻击,并且人性的弱点是无法解决的。

传统安全防御系统有效吗?

如果细读上一节的内容,那么传统的防御系统是否有效的问题,在心中应该有一个答案了,答案总是让人那么沮丧,攻击者精心策划,采用定制的漏洞,定制的RAT控制系统,定制的攻击手法,网络的防御系统在此种定点攻击面前变的非常安静,安静到用户不知道攻击正在进行,数据正在失窃。

为什么传统的技术检测不到APT呢?这是因为传统的检测技术主要在网络边界和主机边界进行检测。在网络边界我们主要靠防火墙,而防火墙并不能识别通道上的负载是恶意的还是善意的。而IDS、IPS虽然可以识别,但是它们基于的技术是已知威胁的签名,当这个威胁发生了,我们知道了,我们去分析它的特征,然后把这个特征抽取出来,我们对它进行检测。这种方法的问题是:第一,它检测不到未知的漏洞、新的木马;第二,攻击者很容易对漏洞的定义方法和木马进行变形,就检测不到了。在主机边界,杀毒软件也存在同样的问题。这就是当前检测体系存在的最核心的问题。

云技术,可以预防APT攻击吗?

目前APT解决方案可以概括为四类:一是主机文件保护类(白名单方式控制)如bit9;二是大数据分析检测类,如RSA;三是恶意代码检测类,如FireEye;四是网络入侵检测类,如Fortinet。

云技术可以做到以白名单作为核心,首先对用户终端环境中的所有程序和文件进行全网扫描,如果是病毒、木马、蠕虫等非白名单文件,则予以处理。如果与云中的白文件库相匹配,则判允许并予以放行。与种思路与360杀毒软件的主思路不谋而合,非白即黑,策略。

不过云技术也有自身的问题,比如白名单数量,以及恶意软件利用白名单的问题,等等。

APT未来的发展趋势。

国际

2013年4月份Verizon发布的《2013年数据破坏调查报告》分析了全球47000多起数据破坏安全事故,621宗确认的数据泄漏案例,以及至少4400万份失窃的记录。《报告》指出有高达92%的数据破坏行为来自外部,有19%的数据破坏行为来自国家级别的行为,利用脆弱的或者窃取到的用户身份访问凭据进行入侵的行为占到了76%,而各种黑客行为和恶意代码依然是主要的信息破坏手段。报告将包括APT攻击在内的信息破坏的敌对方分为了有组织犯罪集团、国家或国家资助的组织、黑客活跃分子三类。

此外,国际上,尤其是美国着重炒作来自中国的APT攻击。最典型的是Mandiant公司发布的《对APT1组织的攻击行动的情报分析报告》,将APT1攻击行动的发起者直接定位到中国军方。在美国旧金山举办的RSA2013大会上,直接以中国APT攻击为主题的报告就有6个之多。其中有一个研讨会题为《中美的网络冲突和中国网络战研究》。演讲者是《二十一世纪的中国网络战》一书的作者。这个曾经在美国研读过中文的美国人从西方的视角来分析了中国的网络战战略、战术。

以防范APT攻击为引子,各国纷纷加强国家级的网络空间安全研究、相关政策制定与发布。美国、加拿大、日本、欧盟各国、北约等国家和组织纷纷强化其网络空间安全的国家战略,其中就包括应对包括APT在内的国家级的敌对方的攻击。ENISA(欧洲网络与信息安全局)、北约CCDCOE(协作网络空间防御卓越中心)、兰德公司、欧洲智库SDA公司都对世界主要国家的网络空间安全战略思想、安全威胁特征、安全防御水平等进行了较为深入的对比分析与研究。

国内

根据CN-CERT发布的《2012年我国互联网网络安全态势综述》,我国面临的新型威胁攻击的形势还是比较严峻的。利用“火焰”病毒、“高斯”病毒、“红色十月”病毒等实施的高级可持续攻击(APT攻击)活动频现,对国家和企业的数据安全造成严重威胁。2012年,我国境内至少有4.1万余台主机感染了具有APT特征的木马程序。

我们是谁?在干什么?

天融信阿尔法实验室,我们相信只有切实的接触攻击,才能做到最有效的防御。我们一直走在网络安全的最前沿,关注最新的攻防对抗,在攻击与防御中,寻求新的突破。


admin 发布于  2014-12-15 14:12 

Android中间人攻击测试工具 – Lanmitm 安全工具

免责声明

本应用开发初衷仅为了学习,未经他人允许,对他人局域网进行的破坏,干扰等行为与本人无关。

功能概述

数据嗅探,可抓去局域网内部主机与外界通信数据
会话劫持,对局域网中的主机通过实施ARP欺骗,进行cookie欺骗,从而达到劫持会话的效果
简单web服务器功能,结合下面功能实施钓鱼欺骗
URL重定向,实现DNS欺骗功能。配合上面web服务器功能,可进行钓鱼欺骗功能待(待完成)
WiFi终结,中断局域网内主机与外界通信(待完成)
代码注入,通过数据截取,对远程主机返回的数据进行篡改,实现代码注入的效果(待完成)

截图预览:


安装前提

  • 安卓手机2.3及以上,必须root



  • 已安装busybox




后话

虽然该应用功能单一,但是毕竟是自己慢慢写出来的,我还是会继续更新下去的,如果有想法,或者想学习的同学都欢迎和我交流,或者直接贡献代码 https://github.com/ssun125/Lanmitm 

作者博客:http://oinux.com

apk下载: 百度网盘下载 




admin 发布于  2014-12-12 11:20 

国产SQL注入漏洞测试工具 – 超级SQL注入工具(SSQLInjection) 安全工具

此工具为本人对C#、Socket及HTTP协议、SQL注入进行深入研究后,闲暇时间做的一款SQL注入工具。不说秒SQLMap,直接秒杀什么webcruiser、Safe3SI、pangolin、havij、DSQLTools、明小子等,今后可以扔掉这些过时的工具了。

简介

超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入。
目前支持Bool型盲注、错误显示注入、Union注入,支持Access、MySQL5以上版本、SQLServer、Oracle等数据库。
采用C#开发,底层采用Socket发包进行HTTP交互,极大的提升了发包效率,相比C#自带的HttpWebRequest速度提升2-5倍。
支持盲注环境获取世界各国语言数据,直接秒杀各种注入工具在盲注环境下无法支持中文等多字节编码的数据。

工具特点

1.支持任意地点出现的任意SQL注入
2.支持各种语言环境。大多数注入工具在盲注下,无法获取中文等多字节编码字符内容,本工具可完美解决。
3.支持注入数据发包记录。让你了解程序是如何注入,有助于快速学习和找出注入问题。
4.依靠关键字进行盲注,可通过HTTP相应状态码判断,还可以通过关键字取反功能,反过来取关键字。

程序运行需要安装. Net Framework 2.0。运行环境XP、Win7,Win8环境已测试,其他环境请自测。


此工具为本人对C#、Socket及HTTP协议、SQL注入进行深入研究后,闲暇时间做的一款SQL注入工具。不说秒SQLMap,直接秒杀什么webcruiser、Safe3SI、pangolin、havij、DSQLTools、明小子等,今后可以扔掉这些过时的工具了。

简介

超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入。
目前支持Bool型盲注、错误显示注入、Union注入,支持Access、MySQL5以上版本、SQLServer、Oracle等数据库。
采用C#开发,底层采用Socket发包进行HTTP交互,极大的提升了发包效率,相比C#自带的HttpWebRequest速度提升2-5倍。
支持盲注环境获取世界各国语言数据,直接秒杀各种注入工具在盲注环境下无法支持中文等多字节编码的数据。

工具特点

1.支持任意地点出现的任意SQL注入
2.支持各种语言环境。大多数注入工具在盲注下,无法获取中文等多字节编码字符内容,本工具可完美解决。
3.支持注入数据发包记录。让你了解程序是如何注入,有助于快速学习和找出注入问题。
4.依靠关键字进行盲注,可通过HTTP相应状态码判断,还可以通过关键字取反功能,反过来取关键字。

程序运行需要安装. Net Framework 2.0。运行环境XP、Win7,Win8环境已测试,其他环境请自测。






注意:使用本工具,需要对SQL注入有一定了解,工具使用需要人工参与,非全自动SQL注入工具。


声明:此工具为提供个人、站长、企业发现自身信息安全问题,请勿使用工具对他人信息系统进行测试,产生的法律效应与作者无关。谢谢。


官方下载

http://www.shack2.org/article/1417357815.html


admin 发布于  2014-12-12 11:07 

Power Pwn: a DARPA-funded hack machine 神器荟萃

2.jpg

Power Pwn是一个完全集成的,企业级的渗透测试平台。继承了流行的PWN插件,该器件具有高度集成的模块化硬件设计。支持并资助由国防研究计划局(DARPA),它的目的是提供企业和安全意识的个体更便宜和更容易的手段来抵御黑客自己,为他们提供同一套工具,他们的数字袭击者。

1.jpg

用一个简单的浪涌保护器的外观,电源PWN不会把任何头,但裂开其谦逊的外壳,你会发现你需要运行一个全面的安全审核软件套件的一切。该装置的最大拉伸无疑是其远程执行测试的能力。安全专家可以简单地运送电力PWN到企业设施和访问设备暗中通过以太网,无线或3G / GSM蜂窝网络。

3.jpg

蜂窝网络功能,可以让用户通过短信在bash命令文本。甚至还有利用语音识别软件,如苹果的Siri推命令到设备的潜力。发货的Linux的Debian的6例如,电源PWN旨在使全面渗透测试更容易,更便宜的公司和安全专家。公司可以邮寄美国

1295美元硬件到他们的分支机构和开展远程网络的全面渗透测试,完全消除了差旅费。


有迹象表明,黑客可能利用该设备对预定车主的关注,但是DARPA的支持和资金应在一定程度上保证了电源PWN在好人手里牢牢保持。为了达到这个效果,Pwnie快递的首席执行官戴夫Porcello告诉有线90%的公司的客户工作的公司或联邦政府。

全面的功能和规格如下:

  1. 板载高增益的802.11b / g / n无线
  2. 板载高增益蓝牙(1000')
  3. 板载双以太网
  4. 120 / 240V AC插座
  5. 16 GB内部磁盘存储
  6. 外接3G / GSM适配器
  7. 全自动NAC / 802.1X / RADIUS旁路
  8. 出带外SSH通过3G / GSM手机网络访问
  9. 文本 - 重击:在bash文本通过短信命令
  10. 与“插件UI”基于Web的管理
  11. 一键邪恶AP,隐身模式,及被动侦察
  12. 保持你的目标网络的持续性,隐蔽性,加密的SSH访问
  13. 通过应用感知防火墙和IPS隧道
  14. 支持HTTP代理,SSH-VPN,OpenVPN的&
  15. 发送电子邮件/短信提醒时,SSH隧道被激活
  16. 预装的Debian 6,Metasploit的,SET,快速通道,w3af,天命,Aircrack和,SSLstrip,NMAP,水润,dsniff,Scapy的,Ettercap,蓝牙/网络电话/ IPv6的工具等。
  17. 在隐身模式下无法完成ping命令,没有侦听端口。 

 这个工具很强大,O(∩_∩)O~  由Mrxn翻译发表在mrxn.net,转载请注明出处,谢谢!

原文地址:http://www.gizmag.com/power-pwn-darpa-hack-machine/23429/



admin 发布于  2014-12-12 10:47 

自动化网络扫描探测工具 – AutoScan-Network 安全工具


14182685814482.jpg

AutoScan-Network是一个网络扫描工具,无须任何配置即可对连接的网络进行扫描,可发现网络中的设备信息。

系统要求

• Mac OS X 10.5 或更高版本
• Microsoft Windows (XP, Vista)
• GNU/Linux
• Maemo 4
• Sun OpenSolaris

功能特性

• 快速的网络扫描
• 自动化的发现能力
• TCP/IP扫描
• 多线程
• 支持端口扫描
• 对网络影响很低
• VNC客户端
• Telnet客户端
• SNMP扫描
• Simultaneous subnetworks scans without human intervention
• 实时检测,可发现多种设备,如路由器、服务器、防火墙
• 可发现多种服务,如smtp、HTTP、pop (smtp, http, pop, ...)
• 自动发现操作系统版本

下载地址


admin 发布于  2014-12-12 10:39