贴吧用户_007b8MJ -
关注数: 4 粉丝数: 1 发帖数: 1,140 关注贴吧数: 4
MS05-055漏洞分析 MS05-055漏洞分析 SoBeIt EEYE的公告中对这个漏洞已经描述得比较详细了。线程在退出的时候,PspExitThread会从ETHREAD.ApcState.ApcListHead[0]和ApcListHead[1]分离线程的APC队列,这样每个队列都会是一个被摘除链表头的循环双向链表。如果有一个APC是从配额池(Quota Pool)中分配的,则占用分配进程内核对象结构一个引用,PspExitThread在处理配额池中的APC时,若分配进程已终止且该配额池的引用是进程内核对象的最后一个引用,则会在调用ExFreePool释放该APC的过程进而调用PspProcessDelete销毁该进程对象。漏洞成因是在销毁进程对象过程中会调用KeStackAttachProcess和KeUnstackDetachProcess,这两个函数都会调用KiMoveApcState来分别保存和恢复APC链表,问题在于在第二次调用KiMoveApcState时,重新把前面已经被摘除的链表头接回到APC双向链表中,导致处理后续的APC队列时会发生ExFreePool(ETHREAD+0x30),ETHREAD是正在退出的线程的内核对象。 引用EEYE的公告,发生漏洞时函数的调用顺序:. PspExitThread. . KeFlushQueueApc. . (detaches APC queues from ETHREAD.ApcState.ApcListHead). . (APC free loop begins). . ExFreePool(1st_APC -- queued by exited_process). . . ExFreePoolWithTag(1st_APC). . . . ObfDereferenceObject(exited_process). . . . . ObpRemoveObjectRoutine. . . . . . PspProcessDelete. . . . . . . KeStackAttachProcess(exited_process). . . . . . . . KiAttachProcess. . . . . . . . . KiMoveApcState(ETHREAD.ApcState --> duplicate). . . . . . . . . KiSwapProcess. . . . . . . PspExitProcess(0). . . . . . . KeUnstackDetachProcess. . . . . . . . KiMoveApcState(duplicate --> ETHREAD.ApcState). . . . . . . . KiSwapProcess. . ExFreePool(2nd_APC) 现在详细分析一下,在PspExitThread调用的KeFlushQueueApc中一段代码: RemoveEntryList(&Thread->ApcState.ApcListHead[ApcMode]); NextEntry = FirstEntry;#define RemoveEntryList(Entry) {\ PLIST_ENTRY _EX_Blink;\ PLIST_ENTRY _EX_Flink;\ _EX_Flink = (Entry)->Flink;\ _EX_Blink = (Entry)->Blink;\ _EX_Blink->Flink = _EX_Flink;\ _EX_Flink->Blink = _EX_Blink;\ } RemoveEntryList对以ApcListHead为链表头的双向链表进行摘除链表头处理,而原链表头指向其中第一项。 问题代码在第二个KiMoveApcState,把备份的APC状态结构复制回原来的ETHREAD结构时: First = Source->ApcListHead[KernelMode].Flink; Last = Source->ApcListHead[KernelMode].Blink; Destination->ApcListHead[KernelMode].Flink = First; Destination->ApcListHead[KernelMode].Blink = Last;** First->Blink = &Destination->ApcListHead[KernelMode];** Last->Flink = &Destination->ApcListHead[KernelMode]; **这2句是原因,把链表头重新接回双向链表。 结果在后续循环释放链表中的APC结构时,就循环到了ETHREAD+0x3c(UserMode的APC),把它当成了KAPC+0xc(LIST_ENTRY)来处理,调用ExFreePool(Apc)时,这个"Apc"的地址也就是ETHREAD+0x30,实际POOL的头结构从ETHREAD+0x28 KernelStack开始。 当获得KernelStack可以为合法的头结构时,将会把头结构中的ProcessBilled当成一个EPROCESS结构进行释放,这时这个"EPROCESS"结构为一用户态地址,一般是为0x200(因为State=2),因为这个地址在地址空间的第一个页,是不允许访问的,所以我们还要使ETHREAD结构中在State之后的一个成员不为0,也就是Alerted数组中某一项不为0。Alerted数组分别对应于记录该线程在用户态和内核态下是否以被提醒过,分别为一个字节大小。在用户态下使对应内核态的Alerted位为1不太可能,却能使对应用户态的Alerted位为1。在将目标线程暂停后,可以在该线程被插入APC之前先调用ZwAlertThread来使其调用KeAlertThread,可以使Alerted[UserMode]为1,原因参考下面代码,记得此时这个线程不能是Alertable状态的。这时对应于伪造的EPROCESS地址为0x1000200:
About Firewall and port. 本文将向你解释你在防火墙的记录(Log)中看到了什么?尤其是那些端口是什么意思?你将能利用这些信息做出判断:我是否受到了Hacker的攻击?他/她到底想要干什么?本文既适用于维护企业级防火墙的安全专家,又适用于使用个人防火墙的家庭用户。所有穿过防火墙的通讯都是连接的一个部分。一个连接包含一对相互“交谈”的IP地址以及一对与IP地址对应的端口。目标端口通常意味着正被连接的某种服务。当防火墙阻挡某个连接时,它会将目标端口“记录在案”。端口可分为3大类:1) 公认端口:从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。2) 注册端口:从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。3) 动态和/或私有端口:从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用一种通常的闭合端口连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。1 tcpmux 这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,缺省情况下tcpmux在这种系统中被打开。Iris机器在发布时含有几个缺省的无密码的帐户,如lp, guest, uucp, nuucp, demos, tutor, diag, EZsetup, OutOfBox, 和4Dgifts。许多管理员安装后忘记删除这些帐户。因此Hacker们在Internet上搜索tcpmux并利用这些帐户。7 Echo 你能看到许多人们搜索Fraggle放大器时,发送到x.x.x.0和x.x.x.255的信息。常见的一种DoS攻击是echo循环(echo-loop),攻击者伪造从一个机器发送到另一个机器的UDP数据包,而两个机器分别以它们最快的方式回应这些数据包。(参见Chargen)另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做“Resonate Global Dispatch”,它与DNS的这一端口连接以确定最近的路由。Harvest/squid cache将从3130端口发送UDP echo:“如果将cache的source_ping on选项打开,它将对原始主机的UDP echo端口回应一个HIT reply。”这将会产生许多这类数据包。11 sysstat 这是一种UNIX服务,它会列出机器上所有正在运行的进程以及是什么启动了这些进程。这为入侵者提供了许多信息而威胁机器的安全,如暴露已知某些弱点或帐户的程序。这与UNIX系统中“ps”命令的结果相似再说一遍:ICMP没有端口,ICMP port 11通常是ICMP type=1119 chargen 这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时,会发送含有垃圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。由于服务器企图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器过载。同样fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。21 ftp 最常见的攻击者用于寻找打开“anonymous”的ftp服务器的方法。这些服务器带有可读写的目录。Hackers或Crackers 利用这些服务器作为传送warez (私有程序) 和pr0n(故意拼错词而避免被搜索引擎分类)的节点。22 ssh PcAnywhere建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式,许多使用RSAREF库的版本有不少漏洞。(建议在其它端口运行ssh)还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有时会被使用这一程序的人无意中扫描到。
这-----(算是精品吗) ●前言   未知的年代,神给世人以天罚——第一次浩劫(First impact),七日七夜的洪水中只有两个人乘诺亚方舟活了下来。  1999年,冬月与碇唯在京都大学相识。不久之后,六分仪源渡和冬月相识。当时源渡和唯已经在交往中。源渡一边接近唯,同时也一边接触她背后的组织Seele。  2000年9月13日,第二次浩劫(Second impact)发生。在南极大陆上发生了一起给地球带来巨大浩劫的异变,造成海面水位上升、地轴扭曲。如同恐龙灭绝的传说,巨大的陨石撞击地球之后灰尘遮盖天空,造成全球性气温下降。经济崩溃、民族纷争、内战……世界人口急速减少,只剩下原来的一半。南极,成为了宁静的残亡地域。人类,并未像恐龙那样灭绝,但复兴的工作,却无比严峻。  2001年,碇真治诞生,并且,所有EVA的驾驶员亦在这一年出生。  2002年,源渡和冬月为了调查第二次浩劫的起因前往南极。国联正式发表公告,称2000年9月13日的世界规模的大灾害,是由于有超光速数倍的大质量陨石,冲击南极大陆所引致,其破坏性相当于40亿年前的地球与小行星的撞击。但对于造成第二次浩劫的原因,却无人知晓。现实毕竟难以掩盖,在专家圈内,流传着一些保留下来的照片,在冲击造成的光影中,有一个巨人般的影像。也有在南极等地的幸存者称,在冲击波浪的中心,有数对巨大的翅膀。因第二次浩劫受到惊吓而陷入自闭状态的美里,被国联保护。  2003年,国联完成了对南极的调查,根据调查结果设立了位于箱根的人工进化研究所。冬月首次探访人工进化研究所,之后开始协助源渡。在人工进化研究所的地下有个广大的球形巨大空洞,而Nerv本部就利用这个空洞而建造。此时,E计划开始启动,零号机也开始建造了。  2004年,进行了EVA启动实验,在幼小的真治面前,发生了事故,真治的母亲唯在实验中消失,拯救计划失败。自从唯的事件以后,没多久,源渡决定转移实行《人类补完计划》(在这之前的他们,其目的只是实行E计划而已)。  2005年,美里和律子在长野县第二新东京市的第二东京大学内相识,之后加持和美里相识。没多久,加持和美里开始同居。在地下空洞的上方,第三新东京市开始建设。  2007年,美里和加持分手。  2008年,赤木博士完成了MAGI(三贤人)的基础理论。跟随着母亲直子,律子加入研究所,成为主要执行人。  2009年,葛城美里加入研究所。  2010年,Nerv的中枢电脑MAGI完成的当日,开发者赤木直子在掐死第一个绫波丽后自杀。人工进化研究所经过改编,成为了新的秘密组织Nerv。  2012年,在参拜母亲的陵墓时,真治在其父的面前逃离出走。自此以后一直到2015年真治都未曾和源渡见过一面。  2014年,第二个绫波丽转学进入第三新东京市第一中学校内。  2015年,使徒袭来!  从第二次浩劫后经过了15年,人类总算能重新繁荣起来。EVA已有3台可以实际使用了,而后也发现了三位14岁的少男少女可以担任EVA的驾驶员,人们不得不把未来的希望寄望在他们身上。面对重现的使徒们,肩上背负着人类存亡如此重大命运的少年们的战争现在开始了。★★★★★★★★★★★★★★★★★★★★★★★★TV 版  ●第一话 使徒、袭来(Episode 1 :ANGEL ATTACK)  ▲总介   原名“使徒、袭来”,1995年10月4日初映。  脚本:庵野秀明  设计:摩砂雪、庵野秀明  演出:鹤卷和哉   作画监督:铃木俊二  ▲梗概   西历2015年,一个巨大的人型生物在日本登陆。出动的国联军,将那生物称作“使徒”,并予以猛烈地攻击。但就连最新的兵器“N²地雷”,亦只是在短时间内减缓了使徒的步伐。 与此同时,一个名为碇真治的少年被其父源渡呼唤至第三新东京市地下的Nerv本部, 并要求他乘坐EVA初次与使徒战斗。消极的少年拒绝接受命令,但当他见到一位身负重伤的少女即将乘坐初号机出击时,他改变了自己的决定。
Award 的BIOS自检响铃及其意义 Award 的BIOS自检响铃及其意义 1短: 系统正常启动。这是我们每天都能听到的,也表明机器没有任何问题。 2短: 常规错误,请进入CMOS Setup,重新设置不正确的选项。 1长1短: RAM或主板出错。换一条内存试试,若还是不行,只好更换主板。 1长2短: 显示器或显示卡错误。 1长3短: 键盘控制器错误。检查主板。 1长9短: 主板Flash RAM或EPROM错误,BIOS损坏。换块Flash RAM试试。 不断地响(长声): 内存条未插紧或损坏。重插内存条,若还是不行,只有更换一条内存。 不停地响: 电源、显示器未和显示卡连接好。检查一下所有的插头。 重复短响: 电源问题。 无声音无显示: 电源问题。 AMI 的BIOS自检响铃及其意义 1短: 内存刷新失败。更换内存条。 2短: 内存ECC较验错误。在CMOS Setup中将内存关于ECC校验的选项设为Disabled就可以解决,不过最根本的解决办法还是更换一条内存。 3短: 系统基本内存(第1个64kB)检查失败。换内存。 4短: 系统时钟出错。 5短: 中央处理器(CPU)错误。 6短: 键盘控制器错误。 7短: 系统实模式错误,不能切换到保护模式。 8短: 显示内存错误。显示内存有问题,更换显卡试试。 9短: ROM BIOS检验和错误。 1长3短: 内存错误。内存损坏,更换即可。 1长8短: 显示测试错误。显示器数据线没插好或显示卡没插牢。 Phoenix的BIOS自检响铃及其意义 1短 系统启动正常 1短1短1短 系统加电初始化失败 1短1短2短 主板错误 1短1短3短 CMOS或电池失效 1短1短4短 ROM BIOS校验错误 1短2短1短 系统时钟错误 1短2短2短 DMA初始化失败 1短2短3短 DMA页寄存器错误 1短3短1短 RAM刷新错误 1短3短2短 基本内存错误 1短3短3短 基本内存错误 1短4短1短 基本内存地址线错误 1短4短2短 基本内存校验错误 1短4短3短 EISA时序器错误 1短4短4短 EISA NMI口错误 2短1短1短 前64K基本内存错误 3短1短1短 DMA寄存器错误 3短1短2短 主DMA寄存器错误 3短1短3短 主中断处理寄存器错误 3短1短4短 从中断处理寄存器错误 3短2短4短 键盘控制器错误 3短1短3短 主中断处理寄存器错误 3短4短2短 显示错误 3短4短3短 时钟错误 4短2短2短 关机错误 4短2短3短 A20门错误 4短2短4短 保护模式中断错误 4短3短1短 内存错误 4短3短3短 时钟2错误 4短3短4短 时钟错误 4短4短1短 串行口错误 4短4短2短 并行口错误 4短4短3短 数字协处理器错
首页 1 2 下一页