高级WIN2kROOTKIT检测技术

pendingk 分享 时间: 收藏本文

【简介】感谢网友“pendingk”参与投稿,以下是小编为大家准备的高级WIN2kROOTKIT检测技术(共6篇),欢迎大家前来参阅。

篇1:高级WIN2kROOTKIT检测技术

摘要:本文描述了一种检测内核与用户级rootkit的新技术.此技术利用处理器的单步执行模式,来测定系统内核与DLL中执行指令的数量,从而达到检测rootkit和后门的目的.同时还讨论了其在Win2k下的代码实现.

--背景知识

一个在计算机安全领域中重要的问题是,如何判断给定的主机是否已被入侵.由于以下两点这项工作变的非常困难:

1.攻击者可以利用未知漏洞进入系统.

2.当进入系统后,入侵者可通过安装rootkit和后门来隐藏自身(例如:隐藏进程,通讯渠道,文件等).本文将集中讨论在Win2K系统下rootkit的检测问题.

--传统rootkit检测技术中的一些问题

传统的rootkit检测程序(那些我们经常在UNIX系统中见到的)只能检测一些已知的rootkit(这点使它变的像反病毒程序)或进行一些内核存储的扫描.例如Linux中就有一些工具扫描内核中的syscall table.这显然不够好,因为已经有了很多并不更改syscall table的rootkit,而Win2k下也可开发出类似的rootkit.

那检测程序是不是还应该扫描内核代码空间?这样我们就有了一个运行在内核模式中的Tripwire.但这还不够好,因为在大多数的操作系统中,我们可以写出即不更改SST(syscall table)也不更改代码的内核级rootkit.在系统中有很多可以勾连的函数指针(例见[2]).

以我看,存储扫描技术决不会成为rootkit检测的终结.这主要是因为我们不能确定具体的监测存储区域.

那到底怎样检测出我们系统中的入侵者呢?

首先我们以rootkit中所使用的技术,将其分为两类:

*通过更改系统结构来隐藏某对象的(如运行的进程)和

*更改内核执行路径(例:勾连那些负责枚举活动进程的内核函数)来达到同样目的的.

--更改系统数据结构的rootkit

这类的rootkit不太多.有意思的例子包括fu rootkit(见[3]),通过删除内核中PsActiveProcessList链上的进程对象来隐藏进程.ZwQuerySystemInformation等函数是不能发现这些隐藏进程的.但同时,因为Windows的线程分派器(dispatcher, scheduler)使用另外的数据结构,这些“隐藏”进程仍可运行(被分配到CPU使用时间).Windows的线程分派器使用以下三个(注1)数据结构:

*pKiDispatcherReadyListHead

*pKiWaitInListHead

*pKiWaitOutListHead

后两个是处于“等待”状态的线程链头.他们之间稍有不同,但对我们来说并不重要.

从上面的信息我们可以找到一种检测隐藏进程的方法.及读取线程分派器使用的数据结构,而不是PsActiveProcessList.

当检测rootkit时我们应该尽可能的触及更底层的内核数据结构.

有一点应该注意,直接从线程分派器使用的链中删除要隐藏的进程是不可能的,因为隐藏的进程将分配不到CPU使用时间.

--更改执行路径的rootkit

这类的rootkit较为普及.他们通过修改或增加内核或系统DLL中的指令来达到目的.检测这类rootkit的问题是,我们不知道rootkit在什么地方做了那些修改.它可以勾连DLL中的函数,系统服务列表(System Service Table),改变内核函数的内容或修改内核中一些奇怪的函数指针.

--执行路径分析(Execution Path Analysis)

EPA关注这样一个事实:如果入侵者通过修改执行路径隐藏了一些对象,那么当调用一些典型的系统和库的函数时,系统将运行一些多余的指令.

举个例子,如果入侵者为了隐藏文件和进程而修改了ZwQueryDirectoryFile和ZwQuerySysteminformation(),那样和干净的系统相比,这些系统函数就会执行更多的指令.不管入侵者采用勾连或在代码中加入jmp指令,或其他任何方法.指令增加的原因是rootkit必须进行它的任务(在这个例子中是隐藏文件和进程).

但是Windows 的内核是一个非常复杂的程序,即使在干净的系统中,某些系统函数每次运行的指令个数也是不同的.然而我们可以用统计学来解决这个问题.但首先,我们需要一种测定指令个数的方法......

--指令计数器的实现

单步执行模式是Intel处理器的一个好的特性,我们可以用它来实现指令计数.当处理器处在这个模式时,每执行完一条指令,系统将产生一个除错异常(debug exception, #DB).要进入这个模式,需要设置EFLAGS寄存器中的TF位(详见[6]).

当执行int指令时,处理器会自动清TF位并进行权限切换.这意味着,如果要进行内核模式下的指令计数,则必须在中断处理程序开头设置TF位.因为我们将要测定一些系统服务中的指令个数,勾连中断向量0x2e,也就是Windows 2000下的系统服务调用门会变得很有效.

但是,因为存在用户模式的rootkit,也应该测定在ring3级运行的指令个数.只要在用户模式下设置TF位一次就可以了,从内核返回时,处理器会自动恢复这一位.

以上的计数方法通过内核驱动器实现.如图2所示,驱动加载后勾连IDT 0x1和0x2e.为和用户级程序交互.驱动勾连一个系统调用,用户级程序通过这个特定的系统调用来开关计数器.

--一些测试

我们可以使用上一段中描述的方法来测定任意系统服务中执行的指令个数.

例如,来检查是否有人试图隐藏任意文件,我们可以开始一个简单的测试:

pfStart();

FindFirstFile(“C:WINNTsystem32drivers”, &FindFileData);

int res = pfStop();

如果有rootkit隐藏任意文件,则执行的指令数要比干净的系统多.

如果运行这个测试上百次,并计算执行指令数的平均值,我们会发现这个值是非常不确定的.考虑Win2k的复杂性,这一点也不让人吃惊.但对于我们的检测目的来说,这种现象是不能接受的.但如果我们将得到的那些值的频率分布用条形图表示出来,会发现图中有一个明显的频率高点.如图4和5中所表示那样的,即使是在系统负载很大时,频率高点所对应的数值保持不变.很难解释这个令人吃惊的现象,可能是因为在循环中同一个系统服务被调用几百次后,与这个系统服务相关的缓冲最后会被填入固定的值.

假想现在有人安装了隐藏文件的rootkit,如果我们重复测试并绘制相应的条形图,就会发现频率高点向右移了,这是因为rootkit需要进行隐藏文件的工作.

在现在的代码实现中,只进行了少量的测试,包括典型的服务如:文件系统读取,枚举进程,枚举注册表项以及Socket读取.

这些测试将有效地检测出著名的NTRootkit(见[1]),或最近比较流行的Hacker Defender(见[4]),包括它自带的网络后门,当然还包括很多其他的后门.但要检测出一些更好的后门还要加入一些新的测试.

--误报和执行路径跟踪

虽然对频率高点的检测有助于我们处理系统的不确定因素,但有时会发现测试得到的值有小的差值,一般来说不大于20.

有时这会是一个很严重的问题,因为我们不能确定那些多出来的指令意味着被入侵或只是正常的误差.

为解决这个问题,我们使用了执行路径记录模式.和单一的EPA模式比较,系统增加了对执行路径的记录(包括地址和运行的指令),首先,系统记录下正常情况下的执行路径,以后的每一次运行将产生diff文件(正常系统和现行系统之间的比较).

我们应该使用好的反编译器来分析那些不一样的地方,以此判定他们是否可疑.图6是一个diff文件的例子.

现阶段的diff文件只记录下指令的地址,以后可能将两次测试的不同结果存为PE格式文件,并可用IDA等工具分析.

--检测 ”offset-in-the-code” 的变化

想象有这样一个rootkit,它基本和上面提到的 fu rootkit (见[3]) 一样,但不从PsActiveProcessList中,而是从分派器使用的数据结构中移除进程.我说过那不可能,因为隐藏的进程将分配不到运行时间......

然而,rootkit可以同时更改分派器代码中所使用数据结构的地址(offset),换句话说,就是使其使用不同的链表.但只有分派器使用这个”新的” 链表,而系统其他地方还是使用”旧的”链表...... (见图7).

虽然这种技术不会改变执行指令的个数,我们还是能检测到它,但需要进一步的完善现有的工具.这项功能现在还没有实现,但应该不是很难.

--针对EPA的攻防

我们可以想到一些能骗过EPA类检测工具的方法,先把它们分为两类.

1. 针对特定工具的欺骗

2. 对EPA类技术的通用攻击

首先,我们考虑一下通用的攻击方法和怎样防止这类攻击.接着讨论针对特定工具的攻击以及怎样通过多态来预防.

--对EPA类技术的通用攻击

首先,恶意程序可以勾连包含除错处理程序(debug handler)地址的IDT入口1,这样将暂停记录运行的指令数.当它完成工作时,再恢复 IDT入口1.这样rootkit中所执行的指令数不会被记录.

我们可以使用intel的除错寄存器来防止这类的攻击.可以使用DR0和DR1寄存器对IDT入口1进行写保护.并且为防止rootkit向除错处理程序的开始处写入Jmp指令,还需对其进行读保护.换句话说,我们不想让rootkit发现除错处理程序的地址.但单纯对IDT入口进行读保护是不行的,系统会蓝屏.但有一简单的解决方法,就是增加额外的一层.见图9.

还有一种攻击的方法,在rootkit运行时,其将TF位清零,并在恶意操作完成时恢复TF位,这样检测工具也只能发现运行的指令数和正常的系统有细微差别.

另外,rootkit还能检查TF位, 如发现被跟踪,则不进行恶意操作.这种行为并不会影响rootkit的正常工作,因为只有被检测的进程才被设置TF位.

我们可以防止这种攻击,应该注意到的是运行每一个系统指令前,都会运行我们的除错处理程序.以下是简单的防预方法:

如果除错处理程序发现上一个运行指令是pushf(将EFLAGS寄存器压入堆栈),则运行如下操作.

and [esp], 0xfffffeff;

及清TF位.同样,如果下一条指令是popf(从堆栈载入EFLAGS的值),则运行如下操作.

or [esp],0x100;

及设TF位.这样rootkit就不能更改TF位.

这样的预防几乎可够了,但还不充分.Rootkit仍能以以下方法发现其被跟踪:

setTFbit();

if (checkTFbit()!=1) {

//we are traced!

}

所以我们需要更改反检测部分的操作,使其可以记录TF位有没有被rootkit更改(比如增加一个TFbitset变量).

popf/pushf不是存取EFLAGS寄存器的唯一指令,其它像iret/int等指令也可以[注2],因此还要加入对这些指令的检测.

对EGLAGS寄存器的防护部分还没有被实现.一部分原因是通过对diff文件的分析也可以发现这类攻击.但以后会增加相应代码.

--对特定工具的攻击

如果攻击者了解关于特定检测工具的一切,他会有很多种欺骗的手段.比如,可以更改保存指令数的那个变量.

不过这类攻击具有很强的针对性,如果有很多不同(或非单一版本)的EPA类工具,这样的攻击将不会有效.

当然,我们还是希望可以阻止这类攻击,强大的多态代码生成器可能是唯一的方法.当管理员安装检测工具是,会产生一个独特的内核驱动和测试程序.

多态代码生成器部分还没有被实现.

--相关工作

像文章开头所述,笔者还没有发现任何对rootkit的检测方法,不是基于存储扫描的.

EPA技术并不被OS所局限,笔者在linux下也实现了一相关工具,参5中有对其的详述以及简单的代码实现.

References

[1] Greg Hoglund, et al, ROOTKIT home,telnet://rootkit.com,

[2] palmers, Sub proc_root Quando Sumus, Phrack Magazine, issue 58, .

[3] fuzen_op, fu rootkit,telnet://rootkit.com,

[4] Holy Father, Hacker Defender Home,rootkit.host.sk,

[5] Jan Rutkowski, Execution path analysis, Phrack Magazine, issue 59, .

[6] IA-32 Intel Architecture Software Developer’s Manual, vol1-3.

注1: 作者相信这三个链表包含了系统中所有的线程.但还需进一步研究.

注2: 参6上列举了所有和EFLAGS寄存器交互的指令.

篇2:高级WIN2K ROOTKIT检测技术WEB安全

--背景知识

一个在计算机安全领域中重要的问题是,如何判断给定的主机是否已被入侵.由于以下两点这项工作变的非常困难:

1.攻击者可以利用未知漏洞进入系统.

2.当进入系统后,入侵者可通过安装rootkit和后门来隐藏自身(例如:隐藏进程,通讯渠道,文件等).本文将集中讨论在Win2K系统下rootkit的检测问题.

--传统rootkit检测技术中的一些问题

传统的rootkit检测程序(那些我们经常在UNIX系统中见到的)只能检测一些已知的rootkit(这点使它变的像反病毒程序)或进行一些内核存储的扫描.例如Linux中就有一些工具扫描内核中的syscall table.这显然不够好,因为已经有了很多并不更改syscall table的rootkit,而Win2k下也可开发出类似的rootkit.

那检测程序是不是还应该扫描内核代码空间?这样我们就有了一个运行在内核模式中的Tripwire.但这还不够好,因为在大多数的操作系统中,我们可以写出即不更改SST(syscall table)也不更改代码的内核级rootkit.在系统中有很多可以勾连的函数指针(例见[2]).

以我看,存储扫描技术决不会成为rootkit检测的终结.这主要是因为我们不能确定具体的监测存储区域.

那到底怎样检测出我们系统中的入侵者呢?

首先我们以rootkit中所使用的技术,将其分为两类:

*通过更改系统结构来隐藏某对象的(如运行的进程)和

*更改内核执行路径(例:勾连那些负责枚举活动进程的内核函数)来达到同样目的的.

--更改系统数据结构的rootkit

这类的rootkit不太多.有意思的例子包括fu rootkit(见[3]),通过删除内核中PsActiveProcessList链上的进程对象来隐藏进程.ZwQuerySystemInformation等函数是不能发现这些隐藏进程的.但同时,因为Windows的线程分派器(dispatcher, scheduler)使用另外的数据结构,这些“隐藏”进程仍可运行(被分配到CPU使用时间).Windows的线程分派器使用以下三个(注1)数据结构:

*pKiDispatcherReadyListHead

*pKiWaitInListHead

*pKiWaitOutListHead

后两个是处于“等待”状态的线程链头.他们之间稍有不同,但对我们来说并不重要.

从上面的信息我们可以找到一种检测隐藏进程的方法.及读取线程分派器使用的数据结构,而不是PsActiveProcessList.

当检测rootkit时我们应该尽可能的触及更底层的内核数据结构.

有一点应该注意,直接从线程分派器使用的链中删除要隐藏的进程是不可能的,因为隐藏的进程将分配不到CPU使用时间.

--更改执行路径的rootkit

这类的rootkit较为普及.他们通过修改或增加内核或系统DLL中的指令来达到目的.检测这类rootkit的问题是,我们不知道rootkit在什么地方做了那些修改.它可以勾连DLL中的函数,系统服务列表(System Service Table),改变内核函数的内容或修改内核中一些奇怪的函数指针.

--执行路径分析(Execution Path Analysis)

EPA关注这样一个事实:如果入侵者通过修改执行路径隐藏了一些对象,那么当调用一些典型的系统和库的函数时,系统将运行一些多余的指令.

举个例子,如果入侵者为了隐藏文件和进程而修改了ZwQueryDirectoryFile()和ZwQuerySysteminformation(),那样和干净的系统相比,这些系统函数就会执行更多的指令.不管入侵者采用勾连或在代码中加入jmp指令,或其他任何方法.指令增加的原因是rootkit必须进行它的任务(在这个例子中是隐藏文件和进程).

但是Windows 2000的内核是一个非常复杂的程序,即使在干净的系统中,某些系统函数每次运行的指令个数也是不同的.然而我们可以用统计学来解决这个问题.但首先,我们需要一种测定指令个数的方法......

--指令计数器的实现

单步执行模式是Intel处理器的一个好的特性,我们可以用它来实现指令计数.当处理器处在这个模式时,每执行完一条指令,系统将产生一个除错异常(debug exception, #DB).要进入这个模式,需要设置EFLAGS寄存器中的TF位(详见[6]).

当执行int指令时,处理器会自动清TF位并进行权限切换.这意味着,如果要进行内核模式下的指令计数,则必须在中断处理程序开头设置TF位.因为我们将要测定一些系统服务中的指令个数,勾连中断向量0x2e,也就是Windows 2000下的系统服务调用门会变得很有效.

但是,因为存在用户模式的rootkit,也应该测定在ring3级运行的指令个数.只要在用户模式下设置TF位一次就可以了,从内核返回时,处理器会自动恢复这一位.

以上的计数方法通过内核驱动器实现.如图2所示,驱动加载后勾连IDT 0x1和0x2e.为和用户级程序交互.驱动勾连一个系统调用,用户级程序通过这个特定的系统调用来开关计数器.

--一些测试

我们可以使用上一段中描述的方法来测定任意系统服务中执行的指令个数.

例如,来检查是否有人试图隐藏任意文件,我们可以开始一个简单的测试:

pfStart();

FindFirstFile(“C://WINNT//system32//drivers”, &FindFileData);

int res = pfStop();

如果有rootkit隐藏任意文件,则执行的指令数要比干净的系统多.

如果运行这个测试上百次,并计算执行指令数的平均值,我们会发现这个值是非常不确定的.考虑Win2k的复杂性,这一点也不让人吃惊.但对于我们的检测目的来说,这种现象是不能接受的.但如果我们将得到的那些值的频率分布用条形图表示出来,会发现图中有一个明显的频率高点.如图4和5中所表示那样的,即使是在系统负载很大时,频率高点所对应的数值保持不变.很难解释这个令人吃惊的现象,可能是因为在循环中同一个系统服务被调用几百次后,与这个系统服务相关的缓冲最后会被填入固定的值.

假想现在有人安装了隐藏文件的rootkit,如果我们重复测试并绘制相应的条形图,就会发现频率高点向右移了,这是因为rootkit需要进行隐藏文件的工作.

在现在的代码实现中,只进行了少量的测试,包括典型的服务如:文件系统读取,枚举进程,枚举注册表项以及Socket读取.

这些测试将有效地检测出著名的NTRootkit(见[1]),或最近比较流行的Hacker Defender(见[4]),包括它自带的网络后门,当然还包括很多其他的后门.但要检测出一些更好的后门还要加入一些新的测试.

--误报和执行路径跟踪

虽然对频率高点的检测有助于我们处理系统的不确定因素,但有时会发现测试得到的值有小的差值,一般来说不大于20.

有时这会是一个很严重的问题,因为我们不能确定那些多出来的指令意味着被入侵或只是正常的误差.

为解决这个问题,我们使用了执行路径记录模式.和单一的EPA模式比较,系统增加了对执行路径的记录(包括地址和运行的指令),首先,系统记录下正常情况下的执行路径,以后的每一次运行将产生diff文件(正常系统和现行系统之间的比较).

我们应该使用好的反编译器来分析那些不一样的地方,以此判定他们是否可疑.图6是一个diff文件的例子.

现阶段的diff文件只记录下指令的地址,以后可能将两次测试的不同结果存为PE格式文件,并可用IDA等工具分析.

--检测 ”offset-in-the-code” 的变化

想象有这样一个rootkit,它基本和上面提到的 fu rootkit (见[3]) 一样,但不从PsActiveProcessList中,而是从分派器使用的数据结构中移除进程.我说过那不可能,因为隐藏的进程将分配不到运行时间......

然而,rootkit可以同时更改分派器代码中所使用数据结构的地址(offset),换句话说,就是使其使用不同的链表.但只有分派器使用这个”新的” 链表,而系统其他地方还是使用”旧的”链表...... (见图7).

虽然这种技术不会改变执行指令的个数,我们还是能检测到它,但需要进一步的完善现有的工具.这项功能现在还没有实现,但应该不是很难.

--针对EPA的攻防

我们可以想到一些能骗过EPA类检测工具的方法,先把它们分为两类.

1. 针对特定工具的欺骗

2. 对EPA类技术的通用攻击

首先,我们考虑一下通用的攻击方法和怎样防止这类攻击.接着讨论针对特定工具的攻击以及怎样通过多态来预防.

--对EPA类技术的通用攻击

首先,恶意程序可以勾连包含除错处理程序(debug handler)地址的IDT入口1,这样将暂停记录运行的指令数.当它完成工作时,再恢复 IDT入口1.这样rootkit中所执行的指令数不会被记录.

我们可以使用intel的除错寄存器来防止这类的攻击.可以使用DR0和DR1寄存器对IDT入口1进行写保护.并且为防止rootkit向除错处理程序的开始处写入Jmp指令,还需对其进行读保护.换句话说,我们不想让rootkit发现除错处理程序的地址.但单纯对IDT入口进行读保护是不行的,系统会蓝屏.但有一简单的解决方法,就是增加额外的一层.见图9.

还有一种攻击的方法,在rootkit运行时,其将TF位清零,并在恶意操作完成时恢复TF位,这样检测工具也只能发现运行的指令数和正常的系统有细微差别.

另外,rootkit还能检查TF位, 如发现被跟踪,则不进行恶意操作.这种行为并不会影响rootkit的正常工作,因为只有被检测的进程才被设置TF位.

我们可以防止这种攻击,应该注意到的是运行每一个系统指令前,都会运行我们的除错处理程序.以下是简单的防预方法:

如果除错处理程序发现上一个运行指令是pushf(将EFLAGS寄存器压入堆栈),则运行如下操作.

and [esp], 0xfffffeff;

及清TF位.同样,如果下一条指令是popf(从堆栈载入EFLAGS的值),则运行如下操作.

or [esp],0x100;

及设TF位.这样rootkit就不能更改TF位.

这样的预防几乎可够了,但还不充分.Rootkit仍能以以下方法发现其被跟踪:

setTFbit();

if (checkTFbit()!=1) {

//we are traced!

}

所以我们需要更改反检测部分的操作,使其可以记录TF位有没有被rootkit更改(比如增加一个TFbitset变量).

popf/pushf不是存取EFLAGS寄存器的唯一指令,其它像iret/int等指令也可以[注2],因此还要加入对这些指令的检测.

对EGLAGS寄存器的防护部分还没有被实现.一部分原因是通过对diff文件的分析也可以发现这类攻击.但以后会增加相应代码.

--对特定工具的攻击

如果攻击者了解关于特定检测工具的一切,他会有很多种欺骗的手段.比如,可以更改保存指令数的那个变量.

不过这类攻击具有很强的针对性,如果有很多不同(或非单一版本)的EPA类工具,这样的攻击将不会有效.

当然,我们还是希望可以阻止这类攻击,强大的多态代码生成器可能是唯一的方法.当管理员安装检测工具是,会产生一个独特的内核驱动和测试程序.

多态代码生成器部分还没有被实现.

--相关工作

像文章开头所述,笔者还没有发现任何对rootkit的检测方法,不是基于存储扫描的.

EPA技术并不被OS所局限,笔者在linux下也实现了一相关工具,参5中有对其的详述以及简单的代码实现.

References

[1] Greg Hoglund, et al, ROOTKIT home, telnet://rootkit.com,

[2] palmers, Sub proc_root Quando Sumus, Phrack Magazine, issue 58, 2001.

[3] fuzen_op, fu rootkit, telnet://rootkit.com,

[4] Holy Father, Hacker Defender Home, rootkit.host.sk,

[5] Jan Rutkowski, Execution path analysis, Phrack Magazine, issue 59, 2002.

[6] IA-32 Intel Architecture Software Developer’s Manual, vol1-3.

注1: 作者相信这三个链表包含了系统中所有的线程.但还需进一步研究.

注2: 参6上列举了所有和EFLAGS寄存器交互的指令

篇3:掌握防火墙高级检测技术服务器教程

多年来,企业一直依靠状态检测防火墙、入侵检测系统、基于主机的防病毒系统和反垃圾邮件解决方案来保证企业用户和资源的安全,但是情况在迅速改变,那些传统的单点防御安全设备面临新型攻击已难以胜任。为了检测出最新的攻击,安全设备必须提高检测技术。本文着重介绍针对未知的威胁和有害流量的检测与防护,在防火墙中多个前沿的检测技术组合在一起,提供启发式扫描和异常检测,增强防病毒、反垃圾邮件和其它相关的功能。

新一代攻击的特点

1、混合型攻击使用多种技术的混合-—如病毒、蠕虫、木马和后门攻击,往往通过Email和被感染的网站发出,并很快的传递到下一代攻击或攻击的变种,使得对于已知或未知的攻击难以被阻挡。这种混合型攻击的例子有Nimda、CodeRed和Bugbear等。

2、现在针对新漏洞的攻击产生速度比以前要快得多,

防止各种被称之为“零小时”(zero-hour)或“零日”(zero-day)的新的未知的威胁变得尤其重要。

3、带有社会工程陷阱元素的攻击,包括间谍软件、网络欺诈、基于邮件的攻击和恶意Web站点等数量明显的增加。攻击者们伪造合法的应用程序和邮件信息来欺骗用户去运行它们。

图1 Gartner发布的漏洞与补丁时间表

传统的安全方法正在失效

如今最流行的安全产品是状态检测防火墙、入侵检测系统和基于主机的防病毒软件。但是它们面对新一代的安全威胁却作用越来越小。状态检测防火墙是通过跟踪会话的发起和状态来工作的。状态检测防火墙通过检查数据包头,分析和监视网络层(L3)和协议层(L4),基于一套用户自定义的防火墙策略来允许、拒绝或转发网络流量。传统防火墙的问题在于 已经研究出大量的方法来绕过防火墙策略。这些方法包括:

篇4:高级电工技术总结

一、专业技术成绩

经过在水电建设工地生产一线工作多年的学习实践,深感安全文明生产的重要性。无论是在三峡工地担任维护班长还是在云南小湾工地担任供电班长和副中队长期间,我始终把“安全第一,预防为主”的方针贯穿到生产过程中去,以熟练的技术作为安全文明生产的重要保障,在生产过程中取得了一定成绩。

20xx年在三峡工地主持对覃家坨603高压架空线路进行改造,首先我们安装了拉线、安装了横担、然后放线、收紧线、安装附件、搭设引流、立、撤杆塔地线、拉线及附件工作。在绝缘子调爬过程中使用托瓶架、大刀卡更换耐张绝缘子,用铝合金双钩、紧线器、手拉葫芦更换直路绝缘子,用新绝缘子渡旧绝缘子的方法大大降低了劳动强度。我和同事们一道安全、优质、高效、及时地完成了这项工程,并博得了一致的好评。

20xx年7月也就是三峡工地最热的月份之一,在坝前MQ126060T门机上司机反映门机自带6KV变压器最近好像温升过高,我们让电工和司机观察运行,几日后通过协调我们对变压器停电检修,通过测试发现该主变铁芯对地绝缘电阻为零,随即对变压器吊芯检查。

二、技术革新成果

在生产施工过程中,我和同事们一起积极开展一些立足岗位的创新活动,大胆创新,锐意进取。针对个别大型门塔机上的变频器因设计原因没有安装抑制谐波的装置,从而使变频器对电网注入了大量的谐波和无功功率,使供电质量下降的现象,我们积极找资料,做试验,针对不同大型设备易于安装和使用性能综合分析应用了两种方法来抑制谐波污染,第一种:安装适当的电抗器。变频器的输入侧功率因数取决于装置内部的AC―DC变换电路系统,可利用并联功率因数教正DC电抗器,电源侧串联AC电抗器的方法,使进线电流的THDV大约降低30%―50%,是不加电抗器谐波电流的一半左右,第二种:装设有源电力滤波器。目前谐波抑制的一个重要趋势是采用有源电力滤波器。它串联或是并联于主电路中,实时从补偿对象中检测出谐波电流,由补偿装置产生一个与该谐波电流大小相等,方向想反的补偿电流,从而使电网电流只含基波分量。这种滤波器能对频率和幅值都变化的谐波进行跟踪补偿,其特性不受系统的影响,无谐波放大的危险。从而强有力的保障了供电和门塔机的安全运行。

篇5:高级扫描技术及原理

声明:本文只是作技术方面的探讨,目的是让大家更好的防范来自各方的攻击,确保网络安全,本文不提供任何程序和软件的下载信息。

Scan,是一切入侵的基础,扫描探测一台主机包括是为了确定主机是否活动、主机系统、正在使用哪些端口、提供了哪些服务、相关服务的软件版本等等,对这些内容的探测就是为了对症下药。对主机的探测工具非常多,比如大名鼎鼎的nmap、netcat、superscan,以及国内的X-Scanner等等。

ICMP协议PING是最常用的,也是最简单的探测手段,用来判断目标是否活动。实际上Ping是向目标发送一个要求回显(Type = 8)的ICMP数据报,当主机得到请求后,再返回一个回显(Type = 0)数据报。而且Ping 程序一般是直接实现在系统内核中的,而不是一个用户进程。Ping是最基本的探测手段,Ping Sweep(Ping扫射)就是对一个网段进行大范围的Ping,由此确定这个网段的网络运作情况,比如著名的fping工具就是进行Ping扫射的。

不过现在连基本的个人防火墙都对Ping做了限制,这个也太基本了。如果透过防火墙,如何获得最理想的目标图,也是很多人整天思考的问题。我们这里介绍的一些扫描技术就是要尽可能地绕过一些安全防护设备,并且尽量保护自己,同时达到我们需要的目的。

一、高级ICMP扫描技术

Ping就是利用ICMP协议走的,高级的ICMP扫描技术主要是利用ICMP协议最基本的用途:报错。根据网络协议,如果按照协议出现了错误,那么接收端将产生一个ICMP的错误报文。这些错误报文并不是主动发送的,而是由于错误,根据协议自动产生。

当IP数据报出现checksum和版本的错误的时候,目标主机将抛弃这个数据报,如果是checksum出现错误,那么路由器就直接丢弃这个数据报了。有些主机比如AIX、HP-UX等,是不会发送ICMP的Unreachable数据报的。

我们利用下面这些特性:

1、向目标主机发送一个只有IP头的IP数据包,目标将返回Destination Unreachable的ICMP错误报文。

2、向目标主机发送一个坏IP数据报,比如,不正确的IP头长度,目标主机将返回Parameter Problem的ICMP错误报文。

3、当数据包分片但是,却没有给接收端足够的分片,接收端分片组装超时会发送分片组装超时的ICMP数据报。

向目标主机发送一个IP数据报,但是协议项是错误的,比如协议项不可用,那么目标将返回Destination Unreachable的ICMP报文,但是如果是在目标主机前有一个防火墙或者一个其他的过滤装置,可能过滤掉提出的要求,从而接收不到任何回应。可以使用一个非常大的协议数字来作为IP头部的协议内容,而且这个协议数字至少在今天还没有被使用,应该主机一定会返回Unreachable,如果没有Unreachable的ICMP数据报返回错误提示,那么就说明被防火墙或者其他设备过滤了,我们也可以用这个办法来探测是否有防火墙或者其他过滤设备存在。

利用IP的协议项来探测主机正在使用哪些协议,我们可以把IP头的协议项改变,因为是8位的,有256种可能。通过目标返回的ICMP错误报文,来作判断哪些协议在使用。如果返回Destination Unreachable,那么主机是没有使用这个协议的,相反,如果什么都没有返回的话,主机可能使用这个协议,但是也可能是防火墙等过滤掉了。NMAP的IP Protocol scan也就是利用这个原理。

利用IP分片造成组装超时ICMP错误消息,同样可以来达到我们的探测目的。当主机接收到丢失分片的数据报,并且在一定时间内没有接收到丢失的数据报,就会丢弃整个包,并且发送ICMP分片组装超时错误给原发送端。我们可以利用这个特性制造分片的数据包,然后等待ICMP组装超时错误消息。可以对UDP分片,也可以对TCP甚至ICMP数据包进行分片,只要不让目标主机获得完整的数据包就行了,当然,对于UDP这种非连接的不可靠协议来说,如果我们没有接收到超时错误的ICMP返回报,也有可能时由于线路或者其他问题在传输过程中丢失了。

我们能够利用上面这些特性来得到防火墙的ACL(access list),甚至用这些特性来获得整个网络拓扑结构。如果我们不能从目标得到Unreachable报文或者分片组装超时错误报文,可以作下面的判断:

1、防火墙过滤了我们发送的协议类型

2、防火墙过滤了我们指定的端口

3、防火墙阻塞ICMP的Destination Unreachable或者Protocol Unreachable错误消息,

4、防火墙对我们指定的主机进行了ICMP错误报文的阻塞。

二、高级TCP扫描技术

最基本的利用TCP扫描就是使用connect,这个很容易实现,如果目标主机能够connect,就说明一个相应的端口打开。不过,这也是最原始和最先被防护工具拒绝的一种。

在高级的TCP扫描技术中主要利用TCP连接的三次握手特性和TCP数据头中的标志位来进行,也就是所谓的半开扫描。

先认识一下TCP数据报头的这六个标志位。

URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断

ACK:(Acknowledgment field significant)置1时表示确认号(Acknowledgment Number)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。

SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。

FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送了。

TCP协议连接的三次握手过程是这样的:

首先客户端(请求方)在连接请求中,发送SYN=1,ACK=0的TCP数据包给服务器端(接收请求端),表示要求同服务器端建立一个连接;然后如果服务器端响应这个连接,就返回一个SYN=1,ACK=1的数据报给客户端,表示服务器端同意这个连接,并要求客户端确认;最后客户端就再发送SYN=0,ACK=1的数据包给服务器端,表示确认建立连接。

我们就利用这些标志位和TCP协议连接的三次握手特性来进行扫描探测。

SYN 扫描

这种扫描方式也被称为半打开 扫描,因为利用了TCP协议连接的第一步,并且没有建立一个完整的TCP连接。

实现办法是向远端主机某端口发送一个只有SYN标志位的TCP数据报,如果主机反馈一个SYN ││ ACK数据包,那么,这个主机正在监听该端口,如果反馈的是RST数据包,说明,主机没有监听该端口。在X-Scanner 上就有SYN的选择项。

ACK 扫描

发送一个只有ACK标志的TCP数据报给主机,如果主机反馈一个TCP RST数据报来,那么这个主机是存在的。也可以通过这种技术来确定对方防火墙是否是简单的分组过滤,还是一个基于状态的防火墙。

FIN

对某端口发送一个TCP FIN数据报给远端主机。如果主机没有任何反馈,那么这个主机是存在的,而且正在监听这个端口;主机反馈一个TCP RST回来,那么说明该主机是存在的,但是没有监听这个端口。

NULL

即发送一个没有任何标志位的TCP包,根据RFC793,如果目标主机的相应端口是关闭的话,应该发送回一个RST数据包。

FIN+URG+PUSH

向目标主机发送一个Fin、URG和PUSH分组,根据RFC793,如果目标主机的相应端口是关闭的,那么应该返回一个RST标志。

上面这些办法可以绕过一些防火墙,从而得到防火墙后面的主机信息,当然,是在不被欺骗的情况下的。这些方法还有一个好处就是比较难于被记录,有的办法即使在用netstat命令上也根本显示不出来,而且一般的安全防护设备也根本不记录这些内容,这样能够更好地隐藏自己。

三、高级UDP扫描技术

在UDP实现的扫描中,多是了利用和ICMP进行的组合进行,这在ICMP中以及提及了。还有一些特殊的就是UDP回馈,比如SQL SERVER,对其1434端口发送x02或者x03就能够探测得到其连接端口

篇6:高级扫描技术介绍

Scan,是一切入侵的基础,扫描探测一台主机包括是为了确定主机是否活动、主机系统、正在使用哪些端口、提供了哪些服务、相关服务的软件版本等等,对这些内容的探测就是为了对症下药,

高级扫描技术介绍

对主机的探测工具非常多,比如大名鼎鼎的nmap、netcat、superscan,以及国

相关专题 检测技术高级