zt_1.gif ***教学之后门篇


2005-04-11 20:12:00
 标签: ***    [ 推送到技术圈]

来源:[url]http://www.chinaunix.net/[/url]
下边说的后门是LINUX/UNIX系统的初学者没有接触这类操作系统的可能不太好理解,现在我发个简单的Win2000/XP中的自启动"后门"</FONT>自启动程序往往藏身于系统注册表、开始菜单等处,但在 WinZ000/XP中,其实还存在另一个自启动程序的藏身之所,那就是系统组策略。   在"开始"→"运行"中输入"gpedit.msc" .按回车,打开系统组策略窗口,选择"计算机配置"→"管理模板"→"系统"→"登录",双击右边的"在用户登录时运行这些程序"项,打开其属性对话框,如图 1 , 选择"已启用",再单击"显示",会弹出"显示内容"对话框,如图2,列表中显示的便是藏身于此的自启动程序。如果你也想在这里添加自启动项目,可单击"添加"在出现的"添加项目"对话框中输入可执行文件的完整路径和文件名,"确定"即可。笔者还发现,在这里添加的自启动程序具有更高的优先级,可先于其他应用程序启动,而且在注册表中也绝对看不到这些程序。如果有人在这里放置了恶意程序,那真是非常危险。  小提示:在"用户配置"→"管理模板"→"系统"→"登录"中,也存在"在用户登录时运行这些程序"项,也可进行相同的设显。唯一不同的是,在"计算机配置"中进行的设置可应用于本机的所有用户,而"用户配置"则仅对当前已登录的用户有效。通常我们在得到一个主机的控制权后,总是考虑下次如何轻易的能再次进来,而不需要每次都重复复杂的漏洞利用,也有可能系统管理员发现了漏洞及时的补上了呢。那么我们需要安装backdoor(后门),这样只要管理员没有发现被***或没有发现我们的后门,下次就可以非常轻松的进来了。在这我们介绍一些常用的后门。Rhosts + + 后门在unix系统里,一些Rsh、Rlogin通过基于rhosts文件的简单认证。在某个帐户的home下的rhosts文件里加上一行++,那么任何人任何机器都可以不需要密码登陆这个帐户了。校验和与时间戳 后门严格的讲,这只是一个隐藏后门的方法。我们通常用自己写的***来代替系统原来的一些可执行文件来达到后门的效果。许多管理员通过时间戳和校验和来检查是否存在这样的***。我们可以通过一些小 技巧来很容易的欺骗,一个简单的程序通过修改系统时钟就能使文件的时间戳和原始一样,至于校验和是用CRC,更加容易伪造了。所以系统管理员还是定期用MD5 校验和来检查文件吧。起码不可能伪造MD5的校验和。Login 后门这个是最常用的后门了,我们可以用login.c的源代码改一改,编译一下,替代原来的login,功能就是先检查我设定的密码,如果对的话,不去比较系统密码,直接进入,而对于其他用户来说和原来的login用起来感觉是一样的。而且在程序上可以不必记录utmp和wtmp,那么你用后门密码进去的时候就是隐形的了。为了防止strings命令显示出login的文本内容,从而暴露backdoor的后门密码。那么在改login.c的时候就得加密或隐藏口令了。但管理员还是可以用MD5校验和来发现这类后门。Telnetd 后门 当inetd守护程序发现有telnet连接,就交给in.telnetd处理,进入login程序。在in.telnetd处理时通常检测一些其他信息,例如终端类型是Xterm还是vt100等,我们可以修改in.telnetd在这加一个类型hole,当我们选择hole时,系统将自动给个shell,而不需要认证。Services 后门每个服务都可以被利用来当作后门,象什么finger,rsh,rexec,rlogin,ftp,inetd...。这和那些开放某个端口提供shell的后门程序没什么差别,只是隐蔽一点罢了。当然你可以修改inetd.conf加一些伪装成某个服务的程序,名字可以是uutcp...等具有伪装性的。Crontab 后门Crontab使unix系统在特定的时间内执行指定的程序。我们可以让系统在每天的特定时间运行我们的指定开放port的shell程序。当然系统管理员也会检查/usr/spool/cron/crontabs/下的文件来看有没有安排后门的存在。所以通过修改那些正常的cron程序,可以达到隐蔽的目的。Library 后门几乎所有的unix系统使用共享库文件,共享一些常用的调用。通常我们在crypt.c和_crypt.c中安置后门程序。login.c使用crypt(),如果在里头安置后门的话,在调用Crypt()时,可以跳过校验,直接给出shell.这样就是管理员用MD5检验login程序也不会发现我们的后门了。如果管理员MD5检查所有的文件,难免会发现这些问题。但我们还有一个方法,我们知道无论是什么程序,它都需要调用open()和其他的文件存取函数,如果我们能在这些上面做文章,那么当MD5执行时读取的是原来的文件,但执行的却是我们的后门程序,所以MD5看到的校验和是没有问题的。kernel 后门可装载内核后门是最难发现而且难度最高的了。具体的描述可以参看w00w00著名的Linux Kernel Module (LKM) Hacking。 [url]http://www.w00w00.org/files/articles/lkmhack.txt[/url]" system 后门我们通常为了隐藏一些自己的后门程序、exploit程序、工具等文件,一般是采用.目录的隐藏方式。但很容易被发现,所以修改一些象ls、du、fsck等程序达到隐藏的目的要更好一些。如果更狠一点,就可以把文件放在磁盘的块标志成坏的,并且采用特殊的文件系统格式,只有特定的程序才能读出,这样也可以达到很好的隐藏效果。Bootblock 后门在PC中病毒有一种类型叫引导型病毒,通过修改引导区程序来达到隐藏和执行的目的。当然有许多杀毒程序也能查杀这些病毒。但在unix中,很少有管理员会使用软件来检查引导区,所以把后门放到引导区也是一个很有用的方法。进程隐藏 后门为了不让管理员用ps发现我们后门程序运行的进程一般有几种方法:1、通过修改argv[]来使程序看起来象另一个进程。2、改名成和系统进程类似的名字。3、修改ps,使ps看不见。4、利用amodload之类的程序,内核加入可装载模块来实现后门。Rootkit由许多工具构成的后门工具集。有一些这样的模块构成:修改系统日志 utmp wtmp lastlog。sniffer,passcracker。欺骗时间戳和crc校验。修改login修改 ifconfig 的 PROMISC标志的输出。使检测不到分乱模式。修改ps使发现不了进程。隐藏使用的磁盘空间。隐藏所有的rootkit文件。TCP Shell 后门最常见的后门了,一个程序listen端口,连接后给出shell.容易被发现,netstat一看就知道了。UDP Shell 后门基于udp传输的后门,原理tcp shell后门差不多。ICMP Shell 后门通过ICMP协议建立pipe来实现通讯的后门。 在社区公告栏收集的旧帖子里就有一个很好的例子。ACK Shell后门通过TCP中ACK数据片来进行通讯的后门。这个比较有意思,能避过许多防火墙,天网也不例外。好了,就写这么多吧,关于每个后门的实现,以后再详细的找几个程序刨析了