加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Rootkit隐藏进程和端口检测

发布时间:2019-03-28 18:45:10 所属栏目:建站 来源:zhouqiao
导读:一、弁言 Rootkit是一种非凡的恶意软件,它的成果是在安装方针上潜匿自身及指定的文件、历程和收集链接等信息,较量多见到的是Rootkit一样平常都和木马、后门等其他恶意措施团结行使。 譬喻:inetd可能login,为进攻者提供后门;潜匿进攻者的目次和历程的措施,
副问题[/!--empirenews.page--]

一、弁言

Rootkit是一种非凡的恶意软件,它的成果是在安装方针上潜匿自身及指定的文件、历程和收集链接等信息,较量多见到的是Rootkit一样平常都和木马、后门等其他恶意措施团结行使。

譬喻:inetd可能login,为进攻者提供后门;潜匿进攻者的目次和历程的措施,ps、netstat等常见呼吁。

rootkit检测也成为主机安详一项重要成果,针对rootkit中最常见潜匿历程、端口检测,首要分为两种检测思绪,一种基于内核内存说明,一种基于应用层说明。

基于内存说明Rootkit检测可参考Rootkit检测,该方案弱点是必要增进内核模块,风险高,检测结果最好。

本文先容第二种方案,unhide在应用层发明潜匿历程、端口,该方案风险小,可集成到主机安详agent中。

Rootkit潜匿历程和端口检测

二、应用层潜匿历程检测

1. 历程潜匿和检测方法

历程潜匿两种方法:

  • 替代ps呼吁,在读取/proc/pid目次时,过滤掉需潜匿历程信息
  • 加载内核模块,通过拦截proc文件体系的回调函数,过滤掉需潜匿历程信息

检测焦点头脑:

通过libc体系函数盲测历程pid的存活状态,再按照ps功效比拟差别,,判定该pid是潜匿历程。

unhide提供如下19种检测方法,大抵可分为四类:一类通过procfs下的历程目次信息,第二类通过体系挪用函数, 第三类通过前两类组合方法,第四类通过爆力破解(不保举)。

  1. tab_test[TST_PROC].func = checkproc;  
  2.    tab_test[TST_CHDIR].func = checkchdir;  
  3.    tab_test[TST_OPENDIR].func = checkopendir;  
  4.    tab_test[TST_READDIR].func = checkreaddir;  
  5.    tab_test[TST_GETPRIO].func = checkgetpriority;  
  6.    tab_test[TST_GETPGID].func = checkgetpgid;  
  7.    tab_test[TST_GETSID].func = checkgetsid;  
  8.    tab_test[TST_GETAFF].func = checksched_getaffinity;  
  9.    tab_test[TST_GETPARM].func = checksched_getparam;  
  10.    tab_test[TST_GETSCHED].func = checksched_getscheduler;  
  11.    tab_test[TST_RR_INT].func = checksched_rr_get_interval;  
  12.    tab_test[TST_KILL].func = checkkill;  
  13.    tab_test[TST_NOPROCPS].func = checkallnoprocps;  
  14.    tab_test[TST_BRUTE].func = brute;  
  15.    tab_test[TST_REVERSE].func = checkallreverse;  
  16.    tab_test[TST_QUICKONLY].func = checkallquick;  
  17.    tab_test[TST_SYS_INFO].func = checksysinfo;  
  18.    tab_test[TST_SYS_INFO2].func = checksysinfo2;  
  19.    tab_test[TST_SYS_INFO3].func = checksysinfo3; 

从名字上可以看出,unhide行使chdir,opendir,readdir,getpriority,getpgid,getsid,sched_getaffinity,kill,sysinfo等libc函数。

下面别离从三类中各选择一种检测方法说明。

2. procfs检测

抽取checkreaddir检测说明:

  • 遍历/proc目次, 子文件名假如是数字,代表是一个历程pid
  • 读取历程状态task目次(/proc/pid/task), 获取各子线程号
  • 通过ps呼吁查找是否存在该线程
  • 比拟差别,不存在判定为潜匿历程
    1. procdir = opendir("/proc");  
    2. dirproc = readdir(procdir));  
    3. taskdir = opendir(task);  
    4. dir = readdir(taskdir)  
    5. checkps(procpids,PS_THREAD) 

该类要领能检测出第一种潜匿历程方法,对第二种无效。

3. syscall检测

抽取checkgetsid检测说明:

max_pid通过读取 /proc/sys/kernel/pid_max获取:

  • 从1到max_pid遍历历程, 通过getsid返回值和错误码探测历程存活状态
  • 通过ps呼吁查找是否存在该历程
  • 再次通过getsid确认历程存活状态,防备在执行ps这时刻内,历程退出了
  • 比拟差别,不存在判定为潜匿历程
    1. ret = getsid(syspids) 
    2. checkps(syspids,PS_PROC | PS_THREAD); 
    3. ret = getsid(syspids) 

该类要领都能检测上述两种潜匿历程方法。

4. compund检测

抽取checkallquick检测说明:

  • 从1到max_pid遍历历程
  • 通过kill返回值和错误码探测历程存活状态
  • 通过getpriority返回值和错误码探测历程存活状态
  • 通过getpgid返回值和错误码探测历程存活状态
  • 通过getsid返回值和错误码探测历程存活状态
  • 通过sched_getaffinity返回值和错误码探测历程存活状态
  • 通过sched_getparam返回值和错误码探测历程存活状态
  • 通过sched_getscheduler返回值和错误码探测历程存活状态
  • 通过sched_rr_get_interval返回值和错误码探测历程存活状态
  • 通过chdir,opendir读取历程目次(/proc/pid)
  • 通过ps呼吁查找是否存在该历程
  • 再次通过kill确认历程存活状态,防备在执行ps这时刻内,历程退出
  • 比拟差别,只有历程不存在(found=0)可能历程颠末11项检测(found == 11)以为是正常的,别的都判定为潜匿历程
    1. ret = kill(syspids, 0); 
    2. ret = getpriority(PRIO_PROCESS, syspids); 
    3. ret = getpgid(syspids); 
    4. ret = getsid(syspids); 
    5. ret = sched_getaffinity(syspids, sizeof(cpu_set_t), &mask); 
    6. ret = sched_getparam(syspids, &param); 
    7. ret = sched_getscheduler(syspids); 
    8. statstatusproc = stat(directory, &buffer); 
    9. statusdir = chdir(directory); 
    10. dir_fd = opendir(directory) ; 
    11. checkps(syspids,PS_PROC | PS_THREAD) 
    12. ret = kill(syspids, 0); 
    13. if (found_killbefore == found_killafter) { 
    14.      if ( ! ((found_killbefore == 0 && found == 0) || 
    15.              (found_killbefore == 1 && found == 11)) ) { 
    16.         printbadpid(syspids); 
    17.      } 

三、应用层潜匿端口检测

焦点头脑:通过libc体系函数bind,listen盲测端口

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读