Skip to content

Linux下针对rootkit木马的检测工具,可检测隐藏文件、隐藏端口以及隐藏进程。

License

Notifications You must be signed in to change notification settings

threatexpert/atrk-linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

atrk-linux 简介

Linux下针对rootkit木马的检测工具,可检测隐藏文件、隐藏端口以及隐藏进程。

使用方法

需要root权限执行脚本,脚本会自动找到同目录下的atrk_aarch64、atrk_x86-64或atrk_x86-i686,并判断哪个适用当前系统。

sh-atrk.sh

检测原理

检测隐藏进程

简言之,在/proc/下,用多种方法盲猜pid,例如,在/proc/下,你ls看不到某个PID,但是通过以下几种方法测试发现似乎存在PID,那么就提示该PID是隐藏进程:

  • kill -0 PID //表示不发送任何信号,仅检查进程是否存在。通过判断返回值可以知道存活状态,如果rootkit没有过滤这种访问方式,它就会暴露。
  • 访问/proc/PID/fd //fd是文件描述符,每个进程都有的目录,或者用cmdline也可以,直接访问判断是否存在。如果rootkit只过滤/proc/目录下它的PID,没考虑你直接访问它的子路径,它就会暴露。
  • 在/proc/下建立一个目录,如果ls时看不到,被创建时却被系统提示错误File exists,那它就暴露了。
  • 在/proc/通过cd进去的方式,如果ls时看不到,却能cd进去,那它就暴露了。
  • 等等

rootkit在底层通过过滤各种接口实现隐蔽,但我们在应用层通过暴力枚举pid并各种探测,乱拳打死老师傅。对于rootkit来说,它可能会感觉防不胜防,如果有个地方疏忽了,它就会暴露。

检测隐藏文件

思路就是自己解析磁盘数据,常见的文件系统类型是ext和xfs。但是我们要尽可能是从底层设备去读取磁盘目录信息,在linux下,以典型的分区情况为例,例如磁盘/dev/sda下有几个分区分别是/dev/sda1 /dev/sda2等,如果要检查的目录是挂载在/dev/sda1分区上的,我们应该从/dev/sda去读取数据来解析目录信息,这样可靠性相对更高。

目前工具不是全盘目录检查,只是检测根目录下的一些关键目录,以及一些bin目录。

检测隐藏端口

rootkit隐藏的手法如果还是基于hook的话,不管是在哪里hook过滤,都挡不住暴力探索端口的方法吧。

这里还是采用爆破的思路,毕竟端口号也就1-65535个,使用暴力bind端口从1-65535,可以非常快速的发现一批绑定失败的端口。然后再用常用的API获取系统本地端口信息,如果绑定失败的端口却不在正常获取的端口列表里面,则是可疑的。

针对TCP端口的,在linux下,可以使用非阻塞方法的socket编程,建议用epoll,比如每次异步并发100个socket去connect 127.0.0.1,然后epoll一并等待和处理结果,这样就可以把检测完6万多个端口的时间缩短到几秒。

About

Linux下针对rootkit木马的检测工具,可检测隐藏文件、隐藏端口以及隐藏进程。

Resources

License

Stars

Watchers

Forks

Packages

No packages published