在日志中隐藏自己后门

  • A+
所属分类:WooYun-Zone

以前发现的一个技巧性的东西,由于一般的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 -

标准的一次扫描结果,它无法说明任何问题了

:)

  1. 1#

    Mujj (为何我的眼中饱含泪水?因为我装逼装的深沉) | 2012-10-20 22:45

    学习了,这招不错,下次必须连404都要看

  2. 2#

    xsser | 2012-10-20 22:49

    @Mujj 404就没意义了 因为无法区分是解析器层导致的404还是前端webserver上导致的404 事实上随着架构的越来越复杂,日志越来越会不可信了

  3. 3#

    Mujj (为何我的眼中饱含泪水?因为我装逼装的深沉) | 2012-10-20 22:50

    @xsser 日志分析结合本地文件名和关键词分析呢,这样不就查到了么

  4. 4#

    xsser | 2012-10-20 22:58

    @Mujj 往往事成之后本地都没有文件了……

  5. 5#

    Mujj (为何我的眼中饱含泪水?因为我装逼装的深沉) | 2012-10-20 23:05

    太猥琐了,睡觉去看来,webserver有必要记录访客行为了,比如访问了啥,提交了啥,一搜索全部列出来

  6. 6#

    horseluke (微碌) | 2012-10-20 23:15

    日志分析如果采取手工的话,这种伪装还是有点勉强啊,因为最大的特征源ip是不可伪造的(虽然可代理),那么就可以依ip构造出一个完整的证据链。
    而自动化日志分析,这种错误码会被当作异常来归类,那么只要有人对异常敏感,那也是逃不过的……
    总体来讲,有点勉强……

  7. 7#

    horseluke (微碌) | 2012-10-20 23:18

    @Mujj 假如这个提交是更改密码,那么就等于免费送给黑客一个密码记录器了——你还别说,有程序真这么做的,结果……

  8. 8#

    xsser | 2012-10-20 23:21

    @horseluke 在找到ip之前往往先应该分析出哪个文件被异常访问

  9. 9#

    iv4n | 2012-10-21 08:13

    有点yd,不过第一次在日志没找到东东,往往会再check一次,增加了排查的成本

  10. 10#

    also (阿里山的姑娘没水冲凉) | 2012-10-21 08:49

    @xsser 异常访问?!修改时间呢,再涂鸦掉日志记录

  11. 11#

    Mujj (为何我的眼中饱含泪水?因为我装逼装的深沉) | 2012-10-21 08:54

    @horseluke @xsser 可以搞完了再用工具全站爬行一遍,有可能逃过IP的检查,被当作扫描器

  12. 12#

    byr5ec | 2012-10-21 10:22

    还是不错的,因为一般在最先分析的是web日志,分析web日志第一看到就是源IP,然后就是这个源IP的动作了;放在公网上的WEB,难免有很多被扫描及访问时产生的404错误的页面,对于这些404相信很多人也不怎么会关心的。还是能骗过一部分人的。

  13. 13#

    tmp | 2012-10-21 16:26

    @xsser 这个技巧太猥琐了….
    @also 有些日志你是没办法涂的.在你触发时.管理员就知道了.如远程日志服务器
    @horseluke “那么就可以依ip构造出一个完整的证据链” 靠这个太不可靠… xsser说通过异常访问这个比较来排除这个相对靠谱.一般都是排查的第一链.另外可以在系统分级分层次设置多链警报日志.

  14. 14#

    cnrstar (Be My Personal Best!) | 2012-10-21 18:01

    把日志给清了不就OK了

  15. 15#

    xsser | 2012-10-21 18:46

    @cnrstar 这不找灭么

  16. 16#

    also (阿里山的姑娘没水冲凉) | 2012-10-21 20:13

    @xsser @cnrstar 对于新手,一帮人都建议直接全清,而后者则挑选伪造。前者就是告诉人家你日了他,后者则扰乱管理员思维。

  17. 17#

    cnrstar (Be My Personal Best!) | 2012-10-21 20:46

    @xsser @also 嘿嘿,我觉得WEB日志还是比较好清理的,只清自己的访问记录呗、或者把自己的IP改成别人的。。windows的登陆日志和系统日志很难收拾。。

  18. 18#

    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页面字节数应该是固定的吧?你如何伪造那个字节数呢?

  19. 19#

    xsser | 2012-10-22 00:38

    @popok 字节数是由webserver控制的 想伪造也很简单 clean输出缓冲区之后自己再伪造一个固定字节的

  20. 20#

    popok (我是你们的大爷)‮(宗祖的们你是我) | 2012-10-22 00:38

    一般后门目的就是要和客户端有数据传输吧?只要有输出到客户端的数据,日志里就会有字节数记录吧?

    不知道说的对不对

  21. 21#

    popok (我是你们的大爷)‮(宗祖的们你是我) | 2012-10-22 00:41

    @xsser php不太懂,clean能把缓冲区内容输出到客户端么?我本地测试客户端根本没数据,后门目的不就是需要在客户端输出吗?

  22. 22#

    tmp | 2012-10-22 02:22

    @cnrstar 直接清日志… 很多时候日志不仅是在你进入的机器. 如果管理员经验丰富点.无论是直接清,还是伪装日志…都是吃力不讨好的差事..因为管理员直接diff..啥都出来了.. 最好的做法是.做些肤浅的动作.满足一下管理员的虚荣.这样你的另外一个部署也许能藏得久些. 话说回来.这个404的技巧..确实淫荡..一不注意就pass了….

  23. 23#

    CnCxzSec(衰仔) | 2012-10-22 09:56

    你留shell之前留下的各种日志怎么办?

  24. 24#

    an1k3r | 2012-10-22 10:15

    @CnCxzSec(衰仔) 可以先删除原来的日志,再留下一个新的shell。

  25. 25#

    无敌L.t.H (‮……天百一爱恋考高:簿相色白产国) | 2012-10-22 12:08

    有IDS的话清日志有用么?

  26. 26#

    an1k3r | 2012-10-22 12:15

    @无敌L.t.H SHELL稍微加下密,估计很多IDS就检测不出来了

  27. 27#

    an1k3r | 2012-10-22 12:53

    @无敌L.t.H 当然前提是任意文件上传之类拿的shell,保证除了正常访问外,不会有操作造成IDS告警

  28. 28#

    tmp | 2012-10-22 15:36

    @无敌L.t.H 没必要啥都来ids . 很多时候对系统了解.比啥ids都管用.
    @an1k3r @CnCxzSec(衰仔) 凉拌..哈哈..因为清日志和日志伪造很多时候都是针对一般管理员的.但是如果碰到经验老到的管理员.如cnbird/xi4oyu 之类的.通过syslogd设置一下远程日志服务器.你认为清日志和日志伪造有用么? scp一下web服务器的日志.到远程日志服务器.diff一下.还有啥能隐瞒的? 还不如不动日志/做些肤浅的动作.让他们觉得你是小菜.让他们虚荣,让他们骄傲..让他们认为你已经被驱逐….
    说多一句. nb的manager.更多时候就是nb的hacker

  29. 29#

    请叫我大神 | 2012-10-23 11:50

    @xsser 我看了下,accesslog中有,errorlog中没有,呵呵

  30. 30#

    Sunshine (0123456789) | 2012-10-24 19:31

    尼玛,我从来都没有清过日志………

  31. 31#

    坏虾 (黑阔都被爆菊花~) | 2012-10-26 11:07

    @xsser 感觉此举没有什么用。  

    127.0.0.1 – - [26/Oct/2012:11:09:15 +0800] “GET /sql/sql.php?id=1%20and%201=2%20%20union%20%20select%201,2,@@version HTTP/1.1″ 404 2  

    哪个傻逼管理员都会看出被攻击了。sqlmap搞的那几MB的日志怎么处理啊,愁死我了。没有权限清理日志。  

    还是自己的跳板做的安稳点比较好。跳啊跳啊的,多好。

  32. 32#

    Spy4man (多人使用的公共号,言论不代表ID本人!) | 2012-11-19 16:29

    一起可以再猥琐点,伪造日志之后 拿扫描器扫上几万个类似shell的地址,掩盖掉webshell 那条比较特殊的链接,然后管理直接就懵了!

  33. 33#

    冉冉升起 (….ing) | 2012-11-25 17:02

    转到博客了

  34. 34#

    水滴 (.) | 2012-11-25 19:33

    @坏虾 隐藏后门啊后门啊隐藏