热门标签 | 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] 下一页


推荐阅读
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
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社区 版权所有