Archive for the ‘Rootkit’ Category

主引导区的恶意程序(Trojan.Mebroot)

Saturday, January 26th, 2008

首先来认识下 什么是主引导区 主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。 只要控制了该区域,那程序就能控制操作系统! 修改主引导区进行加载、感染的在上世纪80- 90年代较为流行,当年的反病毒软件很多都是磁盘介质的,而其中一个必不可少的功能,就是能写保护软盘然后用它引导启动电脑,在不带毒的情况下清除此类引导型的病毒。应该说早期的病毒技术含量还是比较高的,到了后期越来越多工具的出现,让只要会上网的人都能产生成百上千的各种恶意程序、病毒变种。值得注意的是利用修改覆盖主引导区进行加载的Rootkit后门现世了。 在2005和2007年有研究人员推出过两个修改主引导区的实验型Rootkit,而07年的这个实验型Rootkit甚至能突破安全性较高的全补丁Vista系统。 由于WINDOWS系统设计上的问题,普通权限的用户帐号可以随意读写硬盘,甚至MBR这些重要的位置而不受到任何限制。因此MBR类Rootkit对系统的危害是十分大的。 有些类型的主板BIOS自带一个反病毒功能,就是防止读写主引导区的,随着这类真正具有危害的MBR Rootkit的出现,也许现在大家应该在BIOS里打开这种保护选项了。

免疫机器狗

Saturday, January 12th, 2008

增加系统** 当机器狗刚出现时,就有人写出了相应的免疫批处理代码,如下: md %systemroot%\system32\drivers\pcihdd.sys cacls %systemroot%\system32\drivers\pcihdd.sys /e /p everyone:n cacls %systemroot%\system32\userinit.exe /e /p everyone:r exit 按说,这段代码对于最早的机器狗病毒(10月17日之前)是管用的。机器狗病毒早期的确生成了pcihdd.sys文件.而且还修改了 userinit.exe文件。基于这两点出发,建立一个pcihdd.sys的目录,以及设置userinit.exe的访问权限是管用的。 然而,病毒作者很快发现了这一点。他迅速的在后期的版本中,也加入了批处理的内容。即对以上批处理作了个反向工程,解除设置的权限,删除免疫目录,还是修改userinit.exe文件,达到加载其它病毒木马的目的。 后来,为了防止目录被删掉,有些强人更是出怪招,在pcihdd.sys目录下再建个怪异的目录名,形如"ty.../"的目录。这个目录用批处理是可以建立的,但是不可删除。同样,建了这个目录,pcihdd.sys目录也就不可删除了。 在后期变种中,病毒不再使用pcihdd.sys的这文件为驱动,改成了其他的文件名,比如笔者今天发现的变种,驱动名就是comint32.sys.. 这样子看来,基于文件名的防疫方式宣告失败。有人还在不停的建那些怪异目录,以图防疫机器狗病毒。可这样子下去,你的系统里为增添多少**目录?你最后,你自己也没法删除这些**,甚至不得不格式化硬盘。 封域名,封IP 早期机器狗病毒,可以通过简单的反汇编工具,找到相应的下载病毒的网址。后期的机器狗病毒变种,也可通过查看中毒机器的IE临时文件找到下载病毒的网址。 机器狗病毒被各种检测方式很快被找到了,其ip地址和域名也能被发现。于是,在服务器或路由器里封掉这些域名或IP,的确可以有效防治它。然而,恶梦不会因此而结束。据笔者自身封的IP和域名,目前加起来已多达三十多个。还不包括每天都要新的域名或IP被以各种方式发现出来。 ROS里脚本在无限的加长些,路由器里的列表也就无限的增长着。这样的日子,我们看不到尽头在哪儿。 两行批处理,问题看是搞定,但也治标不治本 随着对机器狗病毒研究的深入,大家都一致发现了问题的关键在于userinit.exe和usrinit.exe(后期变种)文件。基于这点出发,可以使用以下两个批处理搞定问题: wmic process where name="userinit.exe" call terminate wmic process where name="usrinit.exe" call terminate 这是批处理高手写的,果然非同反响。该代码的的意思是:当发现进程里有userinit.exe时,即关闭;当发现进程里有usrinit.exe时,也关闭。因为批处理在winlogon后运行,所以病毒刚启动,就被杀掉了。这样也就失去了下载其它病毒的机会。不过,缺点是它只运行一次。这两代批处理的基础上,加入了每秒检查进程,一发现即终止的vbs脚本: do while(1) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList1 = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = 'userinit.exe'") For Each objProcess1 in colProcessList1 objProcess1.Terminate() Next Set colProcessList2 = ...

Rootkit FAQ(how to…)

Wednesday, January 2nd, 2008

常见问题解答 : 如何入门rootkit? 来源:rootkit.com 作者:Clandestiny 翻译:fqh “Help!我是一名新手!我需要一款rootkit入侵朋友的机器…我想编写自己的rootkit…我想开始开发代码… 该从哪里入手?” 此类问题在rootkit.com上不断地出现,并且重复回答一些人问的相同问题浪费了大量时间,我想到我们应当编辑一个短小的文档来对它们进行一般性的叙述。下面的论述远非完整的,社区中有经验的人可以提建议来对它进行拓展。 你 想知道从哪里入门?好的,首先,如果你来到这里是为了寻找入侵你朋友机器的既成方法,你可来错了地方!Rootkit.com主要是一个知识性的网站,它 目的是提供一些有关rootkit开发的资料和相关编程的文章。另一方面,如果你是一名想学习如何编写自己的rootkit的新手,你需要一些如何入门的 建议,请接着阅读…不幸的是,rootkit开发和软件开发需要相当多你必须掌握的前提知识: 1. 首先,你得学习一种语言。C / C++最好的选择。不像其他语言,C具有内嵌汇编语言的能力。虽然大多数程序员极少使用到汇编语言,但是rootkit的开发有时需要汇编语言的灵活性, 所以x86汇编应当成为你的辅助编程语言。Randall Hyde的《Art Of Assembly》是汇编编程最好的参考资料之一。该书有印刷和电子书两种可获取的版本。 《Art of Assembly》 (下载版) 的下载网址是http://webster.cs.ucr.edu/AoA/DOS/ 2. 你需要学习一些操作系统的理论。虽然大学的设计操作系统理论课程不是必需的,但阅读大学计算机学科教材的若干章节是有益的。特别是进程﹑线程﹑内存管理等知识,你得了解。 这方面很好的书籍有两本: 《Operating System Concepts》 ,Silberschatz, Galvin, 和 Gagne著 《Operating Systems》Deitel & Deitel著 3. 你得应用理论知识,理解真实世界中的操作系统比如windows实际上是如何工作的。虽然Windows不公开源代码,但是有很多牛人热衷于对系统内核工 作原理进行逆向分析,并公开了他们的发现。弄一本此类的书吧,比如Sven Schreiber写的《Undocumented Windows 2000 Secrets》 或者Prasad Dabak, Milind Borate,和 Sandeep Phadke写《Undocumented Windows NT》。 4. 如果你想着手开发内核rootkit,你还得学习如何编写内核模式驱动程序(KMD)。很不幸,互联网上关于内核编程的教程,适合初学者的很少。不过,Four-4写出了几篇很好的win32汇编版的教程,它们可在http://www.assembly-journal.com/sitemap.php获 取。除此之外,这方面的书籍还有一些:包括Art Baker 和Jerry Lozano蓍的《The Windows ...

基于栈指纹检测缓冲区溢出的一点思路

Friday, November 23rd, 2007

一. 现有的检测栈溢出的模式 二. 现有检测体系存在的不足 三. 针对引擎要做的改进 四. 关于未来 引言 当前主动防御等的概念逐渐进入人们视野,国外主流的杀毒软件都有栈溢出的检测模块,尽管相对传统的木马和病毒来说,缓冲区溢出仍占攻击的很小一部分,但是基于传统的“木桶理论”,安全是一个整体,威胁还是无处不在。 现有的栈溢出检测模式

编写绕过卡巴主动防御的Shellcode

Friday, November 23rd, 2007

本文已经发表在《黑客防线》2007年8月刊。作者及《黑客防线》保留版权,转载请注明原始出处。 适合读者:溢出爱好者 前置知识:汇编语言、Shellcode基本原理 编写绕过卡巴主动防御的Shellcode 文/图 gyzy[江苏大学信息安全系&EST] 现 在主动防御的概念已经深入人心,市面上已经有不少安全产品加入了防范缓冲区溢出的功能,典型代表就是Macfee和卡巴,作为一个攻击者,就得想法设法的 绕过,假如一个0day被拦截的话,就前功尽弃了。这我就以卡巴为例子,详细讲一下如何尽量少的修改原Shellcode来穿透卡巴的壁垒。 知己知彼 要想绕过卡巴,必须首先了解卡巴是怎么判断溢出的发生的,卡巴通过挂接GetProcAddress、LoadLibraryA、LoadLibraryW等函数,根据返回地址是否在栈中来判断是否发生了栈溢出。卡巴Hook的GetProcAddress代码如图1: