linux执行后台可执行文件后自删除脚本
摘要:linux执行可执行文件后,删除可执行文件以规避硬盘文件检查。因为linux特殊机制,可执行文件执行后,是可以删除的。所以把可执行文件放入后台执行,然后把硬盘上的文件删除,可以规避一定的检测。
bae64命令
如果禁止上传可执行文件,或者对上传的文件有字符串检测,可以把可执行文件转换成base64字符串,然后再还原回去。
base64 docker > dockerbase
//将docker可执行文件转换成base64字符串然后存入dockerbase
base64 docker.pb > dockerconfig
//将docker.pb文件转换成base64字符串然后存入dockerconfig
base64 -d dockerbase > docker
//从dockerbase文件中读取base64字符串,然后还原成docker可执行文件
base64 -d dockerconfig > docker.pb
//从dockerconfig文件中读取base64字符串,然后还原成docker.pb
执行可执行文件然后自删除
bash命令行
// 第一个版本
// 第一条命令显示错误信息到控制台
// 第二条不显示错误信息到控制台
base64 -d dockerbase > docker;base64 -d dockerconfig > docker.pb;chmod 777 docker;chmod 777 docker.pb;`./docker -config ./docker.pb> /dev/null &`;sleep 8;rm -rf ./docker;rm -rf ./docker.pb;
base64 -d dockerbase > docker;base64 -d dockerconfig > docker.pb;chmod 777 docker;chmod 777 docker.pb;`./docker -config ./docker.pb> /dev/null 2>&1 &`;sleep 8;rm -rf ./docker;rm -rf ./docker.pb;
//第二个版本,和第二个版本功能等同
base64 -d dockerbase > docker;base64 -d dockerconfig > docker.pb;chmod 777 docker;chmod 777 docker.pb;$(./docker -config ./docker.pb> /dev/null &);sleep 8;rm -rf ./docker;rm -rf ./docker.pb;
base64 -d dockerbase > docker;base64 -d dockerconfig > docker.pb;chmod 777 docker;chmod 777 docker.pb;$(./docker -config ./docker.pb> /dev/null 2>&1 &);sleep 8;rm -rf ./docker;rm -rf ./docker.pb;
//补充
base64 -d dockerbase > docker;base64 -d dockerconfig > docker.pb;chmod 777 docker;chmod 777 docker.pb;(./docker -config ./docker.pb> /dev/null 2>&1 &);sleep 8;rm -rf ./docker;rm -rf ./docker.pb;
base64 -d dockerbase > docker;base64 -d dockerconfig > docker.pb;chmod 777 docker;chmod 777 docker.pb;{ ./docker -config ./docker.pb> /dev/null 2>&1 &};sleep 8;rm -rf ./docker;rm -rf ./docker.pb;
base64 -d dockerbase > docker;base64 -d dockerconfig > docker.pb;chmod 777 docker;chmod 777 docker.pb;{ ./docker -config ./docker.pb> /dev/null 2>&1 & };sleep 8;rm -rf ./docker;rm -rf ./docker.pb;
bash脚本形式
版本一
文件名为1.bash
#!/bin/bash
base64 -d dockerbase > docker
base64 -d dockerconfig > docker.pb
chmod 777 docker
chmod 777 docker.pb
./docker -config docker.pb> /dev/null 2>&1 &
rm -rf ./docker
rm -rf ./docker.pb
rm -rf ./1.bash
版本二
#!/bin/bash
base64 -d dockerbase > docker
base64 -d dockerconfig > docker.pb
chmod 777 docker
chmod 777 docker.pb
a=$(pwd)
b="/docker -config "
d='/docker.pb'
e=$a$b$a$d
$($e > /dev/null &)
sleep 8
rm -rf ./docker
rm -rf ./docker.pb
rm -rf ./1.bash
版本三
文件名为1.bash
#!/bin/bash
base64 -d dockerbase > docker
base64 -d dockerconfig > docker.pb
chmod 777 docker
chmod 777 docker.pb
a=$(pwd)
b="/docker -config "
d='/docker.pb'
e=$a$b$a$d
`$e > /dev/null &`
sleep 8
rm -rf ./docker
rm -rf ./docker.pb
rm -rf ./1.bash
刚开始以为下面这样就可以运行
#!/bin/bash
base64 -d dockerbase > docker
base64 -d dockerconfig > docker.pb
chmod 777 docker
chmod 777 docker.pb
a=$(pwd)
b="/docker -config "
d='/docker.pb > /dev/null &'
e=$a$b$a$d
`$e`
sleep 8
rm -rf ./docker
rm -rf ./docker.pb
rm -rf ./1.bash
结果发现 > /dev/null & 不能写进字符串中(原因估计就是重定向符>的原因)。即
`$e > /dev/null &` // 正确 e=/root/docker/docker -config /root/docker/docker.pb ,不能写成下面的
`$e` // 错误,e=/root/docker/docker -config /root/docker/docker.pb > /dev/null &
进程23603为正确版本运行结果,进程22249为错误版本运行结果。
源代码
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。