热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Solaris服务器防范rootkit攻击攻略

文章标题:Solaris服务器防范rootkit攻击攻略。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    一、rootkit的定义

  rootkit这个术语已经存在10多年了。它是由有用的小型程序组成的工具包,使得攻击者能够保持访问计算机上具有最高权限的用户“root”。换句话说,rootkit是能够持久或可靠地、无法检测地存在于计算机上的一组程序和代码。在上述rootkit定义中,关键词是“无法检测”。rootkit所采用的大部分技术和技巧都用于在计算机上隐藏代码和数据。例如,许多rootkit可以隐藏文件和目录。rootkit的其它特性通常用于远程访问和窃听——例如,用于嗅探网络上的报文。当这些特性结合起来后,它们会给安全带来毁灭性的打击。

  要取得一个主机的控制权,最简单的当然就是以登录程序(如 login, ssh, telnet 等) 加上猜测密码的程序来尝试进行登入的行为。不过,由于登入程序大部分都有登入次数的限制,因此使用密码猜测程序就不这么流行了。高级的黑客为了系统网络的安全,会撰写一些程序去测试自己主机的服务漏洞, 并且在发现了某些服务的漏洞之后,会通报该服务的维护团体,或者是贡献自己的修补方式,以补足自己系统的安全性。而服务开发/维护团体在接到这样的通报之后,会在最短的时间内进行程序修改, 并且在因特网上面进行通报与释出该漏洞的修补程序。

  然而在这个漏洞通报出来之后,与修补程序释出Sun空窗期,某些恶意的黑客就会针对这样的漏洞进行攻击,这些黑客同样是撰写程序来攻击该漏洞,同时取得被攻击主机的控制权,或者是植入木马程序在受攻击的主机上。 这些黑客与高级黑客不同的地方,在于他们会很骄傲的将攻击的成果贴在一些黑客常上的网站,藉以推销自己,同时,也会将他们撰写的恶意程序散播到互联网上面。 有些黑客就会将这些恶意程序收集起来,做成软件包,并使这些程序包更加流行于互联网上面, 这些恶意的程序包就被称为 rootkit 。

  二、rootkit 的类型

  我们可将unix和Linux下的 rootkit 分为两大类:应用层级rookit 和内核级别rootkit

  1.应用层级 rootkit

  应用层级 rootkit 是最常被拿来使用的 rootkit。攻击者以 rootkit 中的木马程序来替换系统中正常的应用程序与系统文件。木马程序会提供后门给攻击者并隐藏其踪迹,攻击者做的任何活动都不会储存在纪录文件中。下面列举了一些攻击者可能取代的文件:

  隐藏攻击者踪迹的程序

  (1)ls, find, du - 木马程序可以隐藏攻击者文件、欺骗系统,让系统的文件及目录泄露讯息。

  (2)ps, top, pidof - 这些程序都是程序监看程序,它们可以让攻击者在进行攻击的过程中,隐藏攻击者本身的程序。

  (3)netstat - netstat 是用来检查网络活动的连结与监听,如开放的通讯端口等等

  。木马程序 netstat 可以隐藏攻击者的网络活动,例如 ssh daemon 或其它服务。

  (4)killall - 木马程序 killall 让管理者无法停止程序。

  (5)ifconfig - 当监听软件正在执行时,木马程序 ifconfig 不会显示 PROMISC flag,这样可以隐藏攻击者,不被监听软件察觉。

  (6)crontab - 木马程序 crontab 可以隐藏攻击者的 crontab 进入情况。

  (7)tcpd, syslogd - 木马程序 tcpd 与 "syslog" 不会纪录攻击者的行为。

  后门程序

  (1)chfn - 提升使用者的权限。执行 chfn,在输入新使用者名称时,只要输入 rootkit 密码,就可以取得 root 的权限。

  (2)chsh - 提升使用者的权限。执行 chsh,在输入新 shell 时,只要输入rootkit 密码,就可以取得 root 的权限。

  (3)passwd - 提升使用者的权限。执行 passwd,在输入新密码时,只要输入rootkit 密码,就可以取得 root 的权限。

  (4)login - 能够纪录任何使用者名称,包含 root 登入的密码。

  (5)bd2 - 木马程序 rpcbind 允许攻击者在受害主机上执行任意程序代码。

  木马程序程序

  (1)inetd - 木马程序 inetd 可以替攻击者打开远程登入的通讯端口,只要输入密码就可以取得 root 的权限。

  (2)rshd - 替攻击者提供远程的 shell。

  (3)rsh - 透过 rsh 可以取得 root 的密码。

  (4)sshd -攻击者以特定账号密码登入就能拥有 root shell 的权限。

  监听程序

  (1)linsniffer - linux 小型的监听程序。

  (2)sniffchk - 这个程序可以检验与确认网络监听程序是否正在执行。

  (3)le - Solaris Ethernet 封包的监听程序。

  (4)snif - linux 其它封包的监听程序。

  (5)sniff-10mb - 这是一个设计来监听 10mbps Ethernet 的监听程序。

  (6)sniff-100mb - 这是一个设计来监听 100mbps Ethernet 的监听程序。

  其它种类-

  (1)fix - 安装木马程序时 (例如:ls) 更改的时间戳记与检验封包值的讯息。

  (2)wted - wtmp 的编辑程序。可让攻击者修改 wtmp。

  (3)z2 - 移除 wtmp/utmp/lastlog。

  (4)bindshell - 把 rootshell 与某个通讯端口结合在一起。(预设埠号为 31337)

  (5)zap3 - 攻击者会从 wtmp, utmp, lastlog, wtmpx 和 utmpx 移除他们的踪迹

  。zap3 通常根据下列目录来找寻纪录文件的位置,例如 /var/log, /var/adm,

  /usr/adm, 与 /var/run。

  2.内核级别rootkit

  内核级别rootkit 是比应用层级别 rootkit 功能更强大的 rootkit。内核级别rootkit

  透过操作与利用 kernel,已成为最难被发现 rootkit,因为它能够在应用层检查中,建立一条绕过检验的通道。虽然这种软件主要是针对 linux 所制作,但它可能被修改来针对某个通讯端口或者是其它的操作系统来做攻击,一旦被安装在目标主机上,系统就可说是完全被黑客所控制,系统管理员甚至根本找不到黑客隐藏的踪迹。内核级别rootkit 是如何运作的呢? 它基本上是利用 LKM『Loadable Kernel Module』的功能让攻击者做出非法的动作。LKM 在 linux 或其它系统中都是非常有用的工具,支持 LKM 的系统包含 FreeBSD 与 Solaris。操作系统里面有一些函数被系统用来建构 kernel,当这些函数遭到假冒与窜改,主机就不能再被信任了。下面针对内核级别rootkit 的一些运作方式来做介绍:

  (1)隐藏程序 - 在 unix 执行过程中,程序的纪录讯息会存放于文件系统中的 "/proc",隐藏程序可以操作 sys_getdents() 系统呼叫函数,在程序的架构里就看不见这些附加且正在执行的程序。

  (2)隐藏网络连结 - 类似于隐藏程序,网络连结会纪录在 "/proc/net/tcp" 与 "/proc/net/udp" 这两个文件之中,执行 Kernel rootkit,无论何时读取这两个文件,都会隐藏攻击者的踪迹,不让用户知道。

  (3)隐藏 LKM 的信号 - 通常 LKM 的默认值是可被看见的,这样是为了方便其它使用者也可以使用。攻击者必须使用 "EXPORT_NO_SYMBOLS" 命令隐藏这些信号,以防止任何信号被泄漏出去。

  (4)利用 LKM 传递讯息 - LKM Kernel rootkit 安装完成之后,攻击者若要通知kernel 隐藏另一文件,可透过 Kernel rootkit 来替换 sys_settimeofday()。之后只要透过一些特别的参数,就可以请求系统来完成攻击者想要完成的事情。

  (5)改变文件的执行 - 有时攻击者可能想要替换掉某些文件,例如 "login",但并不想要更改文件,此时 Kernel rootkit 可以替换 sys_execve()。这样系统会持续执行 "login" 并泄漏 "login" 程序的版本给攻击者。

  目前最流行的内核级别rootkit,包含 linux 上的 knark 与 Solaris 上的Loadable Kernel Module,其中 knark 还包含了以下的程序:

  (1)hidef:用来隐藏文件。

  (2)unhidef:用来设定执行文件重新导向,使攻击者的木马可以被执行。

  (3)nethide:可以隐藏 /proc/net/tcp 与 /proc/net/udp 字符串,这也是netstat 撷取资料的地方,攻击者可以用这个工具将目标主机上使用中的联机讯息隐藏起来。

  (4)taskhack:可以改变正在执行中的程序,因此攻击者可以将 /bin/sh 的程序,更改成为 root 的使用者账号。

  (5)rexec:可以从远程在 knark 服务器上执行命令,也可以用来支持 ip 造假的功能。

  (6)rootme:可以将权限提升到 root。

[1] [2] [3] [4] 下一页


推荐阅读
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • FTP作为一种传统的文件传输协议,广泛用于不同设备间的文件交换。然而,随着网络安全需求的提升及传输效率的要求,选择合适的FTP客户端变得尤为重要。本文将介绍如何利用WinSCP这款强大且安全的工具,实现两台电脑之间的文件高效传输。 ... [详细]
  • 去控件化在线文档处理,推动高效信创办公环境
    探讨在线文档处理去控件化的趋势及其对构建高效信创办公生态的影响。 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • Golang与微服务架构:构建高效微服务
    本文探讨了Golang在微服务架构中的应用,包括Golang的基本概念、微服务开发的优势、常用开发工具以及具体实践案例。 ... [详细]
  • 工作中频繁在不同Linux服务器之间切换时,频繁输入密码不仅耗时还影响效率。本文介绍如何通过设置SSH密钥认证,简化登录流程,提高工作效率。 ... [详细]
  • 在日常运维中,频繁地对多台Linux服务器进行用户管理是一项耗时的任务。为了提高效率,可以通过编写Expect脚本来实现远程自动化操作,从而简化这一过程。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
author-avatar
好运娟_968
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有