2012-10-20 22:42
以前发现的一个技巧性的东西,由于一般的webserver都会记录日志,而且在目前的后期后门以及漏洞追踪中主要的证据都是日志,如果有可能让日志变得不可信,我们就有可能成功了。
访问shell.php,会得到日志:
<?php
phpinfo();
?>
127.0.0.1 - - [20/Oct/2012:22:21:54 +0800] "GET /shell.php HTTP/1.1" 200 66918
稍微改变下后门,添加header一句代码之后就会是
<?php
header('HTTP/1.1 404');
ob_start();
phpinfo();
ob_end_clean();
?>
127.0.0.1 - - [20/Oct/2012:22:21:54 +0800] "GET /shell.php HTTP/1.1" 404 -
标准的一次扫描结果,它无法说明任何问题了
:)
网友评论:
Mujj (www.80host.com) | 2012-10-20 22:45
学习了,这招不错,下次必须连404都要看
xsser (十根阳具有长短!!) | 2012-10-20 22:49
@Mujj 404就没意义了 因为无法区分是解析器层导致的404还是前端webserver上导致的404 事实上随着架构的越来越复杂,日志越来越会不可信了
Mujj (www.80host.com) | 2012-10-20 22:50
@xsser 日志分析结合本地文件名和关键词分析呢,这样不就查到了么
xsser (十根阳具有长短!!) | 2012-10-20 22:58
@Mujj 往往事成之后本地都没有文件了.....
Mujj (www.80host.com) | 2012-10-20 23:05
太猥琐了,睡觉去看来,webserver有必要记录访客行为了,比如访问了啥,提交了啥,一搜索全部列出来
horseluke (微碌) | 2012-10-20 23:15
日志分析如果采取手工的话,这种伪装还是有点勉强啊,因为最大的特征源ip是不可伪造的(虽然可代理),那么就可以依ip构造出一个完整的证据链。
而自动化日志分析,这种错误码会被当作异常来归类,那么只要有人对异常敏感,那也是逃不过的.....总体来讲,有点勉强.....
horseluke (微碌) | 2012-10-20 23:18
@Mujj 假如这个提交是更改密码,那么就等于免费送给黑客一个密码记录器了——你还别说,有程序真这么做的,结果.....
xsser (十根阳具有长短!!) | 2012-10-20 23:21
@horseluke 在找到ip之前往往先应该分析出哪个文件被异常访问
iv4n | 2012-10-21 08:13
有点yd,不过第一次在日志没找到东东,往往会再check一次,增加了排查的成本
also (popok是我的孙子!!) | 2012-10-21 08:49
@xsser 异常访问?!修改时间呢,再涂鸦掉日志记录
Mujj (www.80host.com) | 2012-10-21 08:54
@horseluke @xsser 可以搞完了再用工具全站爬行一遍,有可能逃过IP的检查,被当作扫描器
byr5ec | 2012-10-21 10:22
还是不错的,因为一般在最先分析的是web日志,分析web日志第一看到就是源IP,然后就是这个源IP的动作了;放在公网上的WEB,难免有很多被扫描及访问时产生的404错误的页面,对于这些404相信很多人也不怎么会关心的。还是能骗过一部分人的。
tmp | 2012-10-21 16:26
@xsser 这个技巧太猥琐了...@also 有些日志你是没办法涂的.在你触发时.管理员就知道了.如远程日志服务器
@horseluke "那么就可以依ip构造出一个完整的证据链" 靠这个太不可靠... xsser说通过异常访问这个比较来排除这个相对靠谱.一般都是排查的第一链.另外可以在系统分级分层次设置多链警报日志
cnrstar (Be My Personal Best!) | 2012-10-21 18:01
把日志给清了不就OK了
xsser (十根阳具有长短!!) | 2012-10-21 18:46
@cnrstar 这不找灭么
also (popok是我的孙子!!) | 2012-10-21 20:13
@xsser @cnrstar 对于新手,一帮人都建议直接全清,而后者则挑选伪造。前者就是告诉人家你日了他,后者则扰乱管理员思维。
cnrstar (Be My Personal Best!) | 2012-10-21 20:46
@xsser @also 嘿嘿,我觉得WEB日志还是比较好清理的,只清自己的访问记录呗、或者把自己的IP改成别人的。。windows的登陆日志和系统日志很难收拾。。
popok (我是你们的大爷)?(宗祖的们你是我) | 2012-10-22 00:35
不太懂php,如果
ob_start();
phpinfo();
ob_end_clean();
这样,是不是把输出缓存在服务端了,不会输出到客户端,所以是
[22/Oct/2012:08:28:49 +0800] "GET /11.php HTTP/1.1" 404 -
但是如果不用ob
phpinfo();
可以输出结果到客户端,但是日志是
[22/Oct/2012:08:29:46 +0800] "GET /11.php HTTP/1.1" 404 57669 "-"
其中有字节数,一般服务器的404页面字节数应该是固定的吧?你如何伪造那个字节数呢?
xsser (十根阳具有长短!!) | 2012-10-22 00:38
@popok 字节数是由webserver控制的 想伪造也很简单 clean输出缓冲区之后自己再伪造一个固定字节的
popok (我是你们的大爷)?(宗祖的们你是我) | 2012-10-22 00:38
一般后门目的就是要和客户端有数据传输吧?只要有输出到客户端的数据,日志里就会有字节数记录吧?
不知道说的对不对
popok (我是你们的大爷)?(宗祖的们你是我) | 2012-10-22 00:41
@xsser php不太懂,clean能把缓冲区内容输出到客户端么?我本地测试客户端根本没数据,后门目的不就是需要在客户端输出吗?
tmp | 2012-10-22 02:22
@cnrstar 直接清日志... 很多时候日志不仅是在你进入的机器. 如果管理员经验丰富点.无论是直接清,还是伪装日志...都是吃力不讨好的差事..因为管理员直接diff..啥都出来了.. 最好的做法是.做些肤浅的动作.满足一下管理员的虚荣.这样你的另外一个部署也许能藏得久些. 话说回来.这个404的技巧..确实淫荡..一不注意就pass了...
CnCxzSec(衰仔) | 2012-10-22 09:56
你留shell之前留下的各种日志怎么办?
an1k3r | 2012-10-22 10:15
@CnCxzSec(衰仔) 可以先删除原来的日志,再留下一个新的shell。
无敌L.t.H | 2012-10-22 12:08
有IDS的话清日志有用么?
an1k3r | 2012-10-22 12:15
@无敌L.t.H SHELL稍微加下密,估计很多IDS就检测不出来了
an1k3r | 2012-10-22 12:53
@无敌L.t.H 当然前提是任意文件上传之类拿的shell,保证除了正常访问外,不会有操作造成IDS告警
tmp | 2012-10-22 15:36
@无敌L.t.H 没必要啥都来ids . 很多时候对系统了解.比啥ids都管用
@an1k3r @CnCxzSec(衰仔) 凉拌..哈哈..因为清日志和日志伪造很多时候都是针对一般管理员的.但是如果碰到经验老到的管理员.如cnbird/xi4oyu 之类的.通过syslogd设置一下远程日志服务器.你认为清日志和日志伪造有用么? scp一下web服务器的日志.到远程日志服务器.diff一下.还有啥能隐瞒的? 还不如不动日志/做些肤浅的动作.让他们觉得你是小菜.让他们虚荣,让他们骄傲..让他们认为你已经被驱逐...
说多一句. nb的manager.更多时候就是nb的hacker
请叫我大神 | 2012-10-23 11:50
@xsser 我看了下,accesslog中有,errorlog中没有,呵呵