Linux下的后门检测工具
颠末前一节的学习,我们学习了有关后门与权限维持方面的信息安全技能内容。在这一节,我们将会从管理员的角度来与入侵者对抗,探求入侵者在我们服务器中留下的各种后门。
高质量的Rootkit常用于APT攻击。APT构造通过Rootkit在目的网络中会埋伏几个月乃至十几年之久。2022年,盘古实行室公开了Rootkit Bvp47的资料。Bvp47是来自方程式构造的Rootkit后门,方程式构造是天下超一流的网络攻击构造,广泛以为从属于美国国家安全局NSA。
Bvp47挂钩(Hook)了70多处内核函数,其利用的基于SYN包的高级潜伏信道举动和自身的代码肴杂、体系潜伏、自毁筹划前所未见,而且这个后门步调必要与主机绑定的校验码才气正常运行,而长途功能则必要攻击者的非对称加密私钥才气激活。
Rootkit先容
Rootkit 是一种特殊的步调(或一组步调),通常与木马、后门等其他恶意步调团结利用。Rootkit 重要使命是潜伏并恒久驻留在感染呆板上的从事各类恶意运动,到达高潜伏高恒久化目的。
Rootkit重要有两种范例:用户态和内核态。
用户态的Rootkit
用户态的rootkit涉及的技能简朴且成熟,比方:
- 覆盖更换一些体系步调文件,如ps、netstat、du、ping、lsof、ssh等
- 动态链接库挟制,如利用情况变量LD_PRELOAD、/etc/ld.so.preload、/etc/ld.so.conf等加载黑客自界说的恶意库等。
- 在现有进程中加载恶意模块来实现潜伏。如apache-rootkit就是在Apache进程中注入恶意动态加载库来实现长途控制和潜伏。
安全机构对近几年曝光的黑产构造攻击样本举行分析后,发现越来越多的黑产构造以某些开源Rootkit为底子,将用户态Rootkit技能加入自己的技能栈(就是在开源rootkit的底子上,修改、增长一些功能)。
内核态的rootkit
内核态的rootkit一样寻常通过可装载内核模块(Loadable Kernel Module,LKM)实现,恶意代码被直接加载进内核中,它可以使攻击者得到对体系底层的完全控制权。别的,尚有非LKM的rootkit,如通过体系调用表重定向实现。
内核态Rootkit很难开辟,由于源代码中的任何错误都会影响目的体系稳固性。常用于APT定向攻击。
实行序次阐明
本节的序次安排有些尴尬。缘故原由是Rkhunter后门检测工具必要在体系干净时,先辈行一次扫描,它们会对体系的一些告急文件取得特性值并记载下来作为参照。当举行后门检测时,它们会把检测时的文件特性与初始记载的文件特性举行对比,以辨别文件是否被窜改。因此,如果安装它们之前,一些体系步调已经被后门修改过了,那记载下来的特性值就是被污染的,检测结果也不可靠。
别的,先容的这些开源工具,检测的结果不是很抱负,这与常见的window下的由商业公司开辟并维护的安全软件有很大差距。
因此,这部分实行应该按如下序次举行:
- 先将本节先容的全部后门检测工具安装完成
- 再安装下一节的各种后门
- 末了再利用这一节先容的工具举行后门检测
工具的安装非常简朴,不敷以成为单独的一节。因此将安装工具和后门检测放在了一起,将后门植入放到下一节。读者在实行时必要变通一下,否则就会由于没有后门而得不到想要的结果。
这一节的实行情况与前面的节没有肯定接洽,可以在上一节的情况中完成,也可以新建一台假造机完成。
举行反面的实行时,都必要利用具备root权限的用户登录。
Chkrootkit检测工具
chkrootkit是一个在当地查抄rootkit后门的工具,官方网站是:http://www.chkrootkit.org/,制止到2023年2月,Chkrootkit的最新版本是2023年1月发布的0.57。根据官网先容,它能检测70多种后门步调。它包罗的模块如下:
- chkrootkit:查抄体系二进制文件以查找rootkit修改的shell脚本。
- ifpromisc.c:查抄网络接口是否处于稠浊模式。
- chklastlog.c:查抄lastlog的删除。
- chkwtmp.c:查抄wtmp的删除。
- check_wtmpx.c:查抄wtmpx的删除(仅限Solaris)。
- chkproc.c:查抄LKM特洛伊木马的迹象。
- chkdirs.c:查抄LKM特洛伊木马的迹象。
- strings.c:查抄二进制步调中的可疑字符串
- chkutmp.c:查抄utmp的删除。
- chkwtmp和chklastlogtry查抄wtmp和lastlog文件中的已删除条目,但不包管会检测到任何修改。
- Aliens实验查找嗅探器日记和rootkit设置文件。它会查找一些默认文件位置——因此也不能包管它在全部情况下都会乐成。
- chkproc查抄是否有被ps和readdir体系调用潜伏的/proc条目,这是LKM木马常用的潜伏方法。
Chkrootkit的安装
Chkrootkit必要举行编译,以是安装Chkrootkit之前,我们的体系必要先安装编译包。利用下令安装:- yum -y install gcc gcc-c++ make cmake glibc-static glibc-utils
复制代码 下载chkrootkit的源码安装包,下载后上传到CentOS,解压包;- tar zxvf chkrootkit.tar.gz
复制代码 解压出来的文件夹,应该是chkrootkit-0.57。然后进入chkrootkit-0.57文件夹,实行make sense编译安装。
利用Chkrootkit检测体系
安装完成后,利用下令:./chkrootkit即可检测体系,检测结果中没有感染的部分用小写的“nothing found ”大概“not infected”来表现,如果感染的部分用大写的“INFECTED”来表现。因此,也可以加上管道符号,过滤输出的结果,看起来更方便。
检测途中会将有标题标项目列出来,以下是下令和检测结果。- [root@localhost chkrootkit-0.57]# ./chkrootkit | grep INFECTED
复制代码- Searching for Linux.Xor.DDoS ... INFECTED: Possible Malicious Linux.Xor.DDoS installed
复制代码 从检测的结果来看,意思是大概感染了Linux/XOR.DDoS木马。但我们并没有对该主机安装过这个后门。早先推测是由于安装的后门步调与XOR.DDoS步调有雷同的特性。厥后,偶尔中看到一个资料先容说,当体系的临时目次/tmp下有可实行文件时,chkrootkit就会报这个标题。然后我们在一台未安装任何后门的CentOS上举行检测,果然也报了这个结果,因此这是个误报。
Chkrootkit在举行检测时会用到以下下令: awk, cut, egrep, find, head, id, ls, netstat, ps, strings, sed, uname。利用'-p'选项,可以为chkrootkit提供一个这些下令的备用路径,如许当体系中的这些下令被后门步调感染后,chkrootkit就不会利用那些被感染的二进制文件来举行测试。
比方,要利用/cdrom/bin 中的二进制文件:- # ./chkrootkit -p /cdrom/bin
复制代码 可以利用“:”添加更多路径- # ./chkrootkit -p /cdrom/bin:/floppy/mybin
复制代码 偶尔将受感染呆板上的磁盘挂载到信托的呆板上是个好主意。只需挂载磁盘并利用“-r”选项指定一个新的 rootdir。比方,假设你要查抄的磁盘挂载在 /mnt 下,那么下令为:更多具体阐明请参阅官方的README文件。
Rkhunter检测工具
Rkhunter,中文名为Rootkit猎手。是Linux体系平台下的一款开源的后门检测工具,可以或许检测一部分已知的rootkit特性码以外,还支持端口扫描、常用步调文件的变更情况查抄。
Rkhunter官方网站:http://rkhunter.sourceforge.net/,制止2023年2月,Rkhunter的最新版本是2018年2月发布的1.4.6。
运行Rkhunter必要的一些条件:
- 在Rkhunter启动之前,它将查抄体系中是否存在某些须要的下令。这些是典范的下令,如 "cat"、"sed"、"head"、"tail "等。如果缺少一个下令,那么RKH将不会运行。
- 有些测试必要stat、readlink、sha256或sha256sum等下令。如果这些下令不存在,那么Rkhunter的perl脚本将被主动利用。固然,这必要存在perl和某些模块。如果它们不存在,那么这些测试将被跳过。
- 应该有一个工具来下载文件更新。现在支持wget, curl, (e)links, lynx 和 GET。如果你的体系不答应安装这些应用步调之一,但可以运行perl,你可以利用'bget'。别的,可以在Rkhunter的设置文件中设置一个用于文件下载的非标准下令。
- 一些测试必要单一用途的工具。Rkhunter并不依赖这些,但如果它发现它们,它将利用它们。它们可以加强Rkhunter的检测本事。
别的更具体的阐明,安装、卸载过程请自行参阅官网的README文档。
Rkhunter的安装
Rkhunter必要举行编译,以是安装Rkhunter之前,我们的体系必要先安装编译包。利用下令安装:- yum -y install gcc gcc-c++ make cmake glibc-static glibc-utils
复制代码 下载Rkhunter的源码包,上传到CentOS,解压包;- tar zxvf rkhunter-1.4.6.tar.gz
复制代码 解压完毕后,进入rkhunter-1.4.6文件夹,实行安装下令:默认的安装过程将在/etc目次下安装一个名为“rkhunter.conf”的设置文件,也可以用“—layout”选项自界说设置文件路径。可以应该根据自己的体系需求来修改设置文件。安装乐成后,会返回Installation complete。
安装完成后,立纵然用下令rkhunter --propupd创建样本,创建的样本文件路径为:/var/lib/rkhunter/db/rkhunter.dat。
安装Rkhunter最符合的机会,应该是在体系刚安装完成后,由于Rkhunter必要创建样本文件的特性库。在体系处于干净的状态时记载一些关键文件的特性,创建起样本库,当体系被攻击、感染了后门时,Rkhunter会利用库中记载的文件特性和被感染后的体系文件举行对比,判定文件是否被感染。
利用rkhunter检测体系
利用下令:rkhunter --check -sk检测体系。-sk是让步调主动一连检测,不加-sk则会在检测一个模块后,必要手动回车才气继续举行下一项检测。
检测完成后,我们可以通过查察日记文件,来分析检测出的各种标题。
利用下令:cat /var/log/rkhunter.log |grep Warning
总结一下,从告诫信息中,我们从这一条:Checking for root equivalent (UID 0) accounts [ Warning ]可以看出,UID为0的用户有非常,跟着下面一条:Warning: Account 'gg' is root equivalent (UID = 0),直接就告诉了我们,gg这个用户是root用户。这时间我们就必要进一步查察passwd文件,并扣问公司干系管理职员,核实此用户是正常利用的用户,照旧被入侵者添加的用户。
Lynis检测工具
Lynis的定位与功能与chkrootkit和rkhuntert有些差别。Lynis是一款Unix体系的安全审计以及加固工具,可以或许举行深条理的安全扫描,其目的是检测埋伏的时间并对将来的体系加固提供发起。有助于:设置管理、软件补丁管理、体系加固、渗出测试、恶意软件扫描、入侵检测等。
Lynis官方网站:https://cisofy.com/downloads/,制止2023年2月,Lynis的最新版本是2022年5月发布的3.0.8。
下载lynis,并上传到CentOS。lynis解压后即可利用,不必要安装。实行里将lynis放到了/usr/local/目次下。
进入解压后的lynis目次/usr/local/lynis,利用下令./lynis audit system就可以主动扫描体系。- 注意:如果使用的是前面的实验环境。由于安装了phpstudy后,小皮面板专用的mysql命令代替了原生的mysql命令,将/usr/bin/mysql指向了/usr/local/phpstudy/system/module/mysql。因此在扫描到mysql版本时会提示需要输入编号选择版本,导致lynis无法正常进行扫描。
复制代码 这时必要按CTRL+C停止扫描,然后手动规复mysql软链接的指向。
先删除/usr/bin/mysql这个软链接,再新建一个同名的软链接,指向原来的mysql下令,干系下令如下:- ln -s /usr/local/phpstudy/soft/mysql/mysql-5.7.27/bin/mysql /usr/bin/mysql
复制代码 再次运行下令./lynis audit system,就可以正常扫描了。扫描完成后的会表现择要信息。并提示可以根据自己的需求自界说设置文件/root/lynis/default.prf。
扫描完成后,我们可以直接通过日记文件查察“warning”和“suggestion”的内容来分析当前主机的安全情况。扫描的结果陈诉文件生存在:/var/log/lynis-report.dat,通过过滤“warning”和“suggestion”就可以查察到Lynis给当前主机的告诫和发起。- [root@localhost ~]# grep -E "^warning|^suggestion" /var/log/lynis-report.dat
复制代码- warning[]=AUTH-9204|Multiple users with UID 0 found in passwd file|-|-|
复制代码- warning[]=AUTH-9208|Multiple accounts found with same UID|-|-|
复制代码- suggestion[]=SSH-7408|Consider hardening SSH configuration|Port (set 22 to )|-|
复制代码 比方,我们从浩繁的告诫和发起中抽出三条,可以看到第一行和第二行告诫的意思是说在当前主机的暗码文件中找到多个UID为0的用户。UID为0的用户我们知道是root用户,多个UID为0的用户,那就阐明大概主机已经被木马步调新增了其他root权限的用户。对此,我们则必要查察passwd文件,将可以用户删除即可。
第三行则是给出当前主机的一个发起,让我们最好是把SSH服务的端口修改了,如许的利益固然就是防止被暴力破解。
末了,我们也可以为体系设置主动扫描使命,通过crontab -e,添加以下指令,就可以实现每天晚上11点30分主动扫描体系。- 30 23 * * * /usr/local/lynis/lynis --auditor "automated" --cronjob
复制代码 别的,lynis还支持插件,尚有企业版(要收费)。别的更具体的阐明,请自行参阅官方的文档。
Unhide检测工具
绝大多数的Rootkit工具大概恶意软件借助内核来实现进程潜伏,这些进程只在内核内部可见。Unhide是一个取证工具,可以通过rootkits/LKMs或其他潜伏技能找到潜伏的进程和TCP/UDP端口。Unhide有Linux版和Windows版,但Windows版已经制止维护。
根据其官方先容,Unhide检测潜伏的进程的重要技能有六项,分别是:
- 比力/proc与/bin/ps的输出
- 将从/bin/ps网络的信息与通过procfs网络的信息举行比力(仅实用于unhide-linux版本)
- 比力从/bin/ps网络的信息和从syscalls网络的信息(syscall扫描)
- 完备的PIDs空间占用(PIDs暴力破解),仅实用于unhide-linux版本
- 将/bin/ps的输出与/proc、procfs walk和syscall比力,仅实用于unhide-linux版本。反向搜索,验证ps看到的全部线程是否也在内核中看到。
- 快速比力:将/proc,procfs walking ,syscall 与 /bin/ps的输出举行比力。仅实用于unhide-linux版本。这比第1,2,3项技能快20倍,但大概会产生更多的误报。
Unhide还带了一个检测潜伏端口的工具:Unhide-TCP。Unhide-TCP可以或许辨认正在监听但未在sbin/ss或/bin/netstat中列出的TCP/UDP端口。它利用两种方法举行检测:
- 对全部可用的TCP/UDP端口举行暴力探测,并与 SS/netstat 的输出举行比力。
- 探查netstat没有陈诉的全部TCP/UDP端口
别的,Unhide还带了一个unhide.rb脚本。unhide.rb大抵相称于 "unhide-linux quick reverse",但是它少做了三个测试(kill, opendir 和 chdir),这导致了更多的误报。别的,它的测试也不太正确,它的优点就是快。在32位体系中(max_PID=2^16),它比 " unhide-linux quick reverse"快80倍左右,在64位体系中(max_PID=2^22),它比 " unhide-linux quick reverse"快2倍左右。
Unhide官方网站:https://github.com/YJesus/Unhide/,Unhide的最新版本是2022年6月发布的(制止到2023年2月)。
下载Unhide,并上传到CentOS,解压,进入解压后的目次,运行./build_all.sh脚本举行安装,安装时会有一些告诫,不影响安装和利用。
安装完成后,利用下令./unhide-linux proc 就可以检测出潜伏进程了(必要安装完下一节的后门再检测),此中Linux体系中PID为1,2,10的进程也被潜伏了(后门步调的影响),别的,尚有两个和reptile后门干系的潜伏进程。
别的,还可以运行./unhide-tcp检测潜伏端口,根据官方的形貌,只能检测处于LISTENING状态的端口,由于反弹型的木马不在本机创建监听端口,以是就无法检测到。
别的,Unhide也可以通过yum安装,但必要下载符合的repo源文件,有爱好的读者可以自行搜索资料。
GScan检测工具
GScan旨在为安全应急相应职员对 Linux 体系排查时提供便利,实现主机侧 Checklist(查抄表)的主动全面化检测,根据检测结果主动数据聚合,举行黑客攻击路径溯源。
GScan可以比力全面地扫描体系,而且可以将扫描结果汇总并用便于明确的方式让体系管理员知道当前体系中有哪些标题。它可以检测包罗Rootkit、各类后门等标题。
GScan官方网站:https://github.com/grayddq,制止2023年2月,GScan的最新版本是2019年11月发布的0.1.9版。
下载GScan,并上传到CentOS,解压,进入解压后的目次,
cd GScan/
python GScan.py
以下是实行GScan后的检测结果。
运行完成之后,可以在/root/GScan/log/gscan.log中查察具体的扫描结果。通过GScan扫描后,可以望见在之前留下的后门大部分都被查出来了。之后管理员就可以根据其扫描结果对应修复标题和毛病。
至此,本节的全部后门检测工具已经安装完成,此时必要给假造机创建一个快照,起名为“检测工具”。
服务器安全狗
服务器安全狗是一款集服务器安全防护和安全管理为一体的综合性服务器工具。官方网站先容服务器安全狗和网站安全狗(单机版)这两款软件永世免费。别的,“方便好用”也是安全狗的一个特点。安全狗支持Windows体系和Linux体系,提供防黑客攻击、防提权、防毛病、防暴力破解、防窜改、防ARP攻击、长途桌面掩护、服务器优化等服务。服务器安全狗和网站安全狗(单机版)的下载所在:http://free.safedog.cn/,利用时必要注册账号。
有关安全狗的安装和利用此处不再先容,请参考官方资料大概搜索网络中的别的资料举行。
云安全中心Rootkit检测
相比Rootkit的公开盛行和发展,其检测技能在业界并没有成型的产物和成熟的方案。现有的工具仅根据特定几种已知范例Rootkit的文件等特性判定,无法发现存在潜伏陈迹的、新型的Rootkit。
公有云平台大多提供了安全组件,可以有用检测Rootkit。检测相比之下,云安全中心提供的安全组件由于有专业的团队在维护、更新,推测其检测结果应该更为可靠。
以阿里云为例,阿里云安全中心会主动为服务器开通云安全免费版的功能。免费版提供主机非常登录检测、毛病检测(不支持检测应用毛病)。如果需更多高级威胁检测、毛病修复、病毒查杀等功能,就必要付费购买利用。
阿里云安全中心的企业版支持Linux Rootkit入侵威胁检测功能。以下先容泉源于其官方网站:https://help.aliyun.com/document_detail/194087.html。- 为了对云服务器实现Rootkit精准检测,阿里云安全中心推出了一套轻量级的方案,以取证的方式,尝试发现潜在的Rootkit存在痕迹与影响。同时,保证对目标服务器的资源消耗极低,避免带来潜在的稳定性风险。
复制代码- 为发现任何形式隐藏、混淆的Rootkit,Rootkit检测功能针对通用Rootkit的原理,即总是存在对内核态函数(系统调用、VFS函数及底层功能函数)的挂钩(hook)、篡改和劫持,对系统内存镜像进行必要数据的采集检查,来确定Rootkit的存在与属性,判断被篡改劫持的系统功能,推断Rootkit本身的功能作用,从而尽可能准确地判定Rootkit,并向用户告警传递以上信息。
复制代码- 作为一种取证扫描形式的检测技术,本检测方案可定时对目标服务器所有历史上被植入且仍然存活的Rootkit内核模块进行全量检出,但不包括Rootkit植入进行时的行为检测。关于疑似Rootkit植入行为,以及用于植入的Rootkit内核模块文件(.ko文件),云安全中心提供“进程异常行为”、“恶意进程(云查杀)”、“持久化后门”等类型的告警检测。
复制代码- 云安全中心Rootkit检测功能支持检测Linux 2.6.32以上内核、64位服务器。实际测试中选取了GitHub上较活跃维护的RootKits-List-Download列表,筛选其中开源或开放的Linux LKM型Rootkit。当前,云安全中心已全部可检出其中仍然有效的Rootkit。
复制代码 总结
对后门举行检测时必要一些工具,但又不能完全依赖工具。完全依赖人工检测,费时费力,服从不高;完全依赖工具,不相识此中的检测原理与机制,又会造成“知其然,不知其以是然”。以是,好的方式是先用工具检测,而后针对一些疑点、线索,再举行人工分析。
如果确定体系被rootkit之类的后门入侵后,纵然把握了肯定的检测本事和方法,照旧发起迁徙应用和数据,重新安装体系。除非你是高手,有十足的把握。由于“潜伏”原来就是rootkit的专长好戏,不知道rootkit大概木马到底会有多少个分身,留下了多少个后门,用了多少种潜伏本事。
免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金. |