Rootkit的作用是:隐藏信息
rootkit一般和后门backdoor配合着使用,一前一后
通常,攻击者通过远程攻击获得root访问权限(譬如密码猜测、破解、缓冲区溢出、0-day漏洞),然后安装后门,便于之后回访,安装rootkit,隐藏踪迹,收集信息,便于长期回访以及获得对其他系统的访问权限。
短暂的root权限+backdoor+rootkit==>长期的root权限
后门 Backdoor
后门程序一般指绕过安全性控制而获取对程序或系统访问权的方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。后门的例子很多,譬如在权限检查中,如果把uid==0,写成了uid=0,而该程序恰巧又有root权限,那么就相当于把用户提权了。
程序实质是socket编程,在被攻击者的主机运行这段代码,就可以打开一个预设端口,在这个端口上,如果攻击者输入正确的密码,那么后门进程用exec函数打开一个shell来代替本子进程,并将本进程的标准输入、输出、出错文件描述符重定向到该套接字上,这样就实现了攻击方远程得到了受害方的一个shell。同时,在代码中,使用了赋值操作:setuid=0,这样,这个进程的所有者的权限就是root。
setuid==>Linux权限管理:
在Linux系统中,所有的操作实质都是在进行进程访问文件的操作。(Linux一切皆文件)
访问文件需要进行权限判断,如果进程有相应的访问权限,则访问成功。否则,访问失败【出现消息Permission Denied】。访问权限的判断是通过Linux系统中的安全模型来实现的。
文件访问权限:
- 对文件的读写权限决定我们是否能够打开和读写该文件;
- 为了在目录中创建新文件,需要对该目录有写和执行权限;
- 为了删除目录中的文件,需要对目录有写和执行权限,但是对文件本身不需要具有读写权限;
进程每次打开、创建或者删除文件时,内核进行文件访问权限测试,这种测试涉及文件的所有者,进程的有效ID(effective-ID)。(rid:real-ID真实ID)
文件访问权限测试,基本规则是:
- 如进程的有效ID是0, 则允许访问;
- 如果进程的有效ID等于文件的所有者ID,那么如果设置了文件的所有者权限位,则允许访问。
- 如果进程的有效组ID是文件的组ID,则根据组权限判断。
- 如果设置了其它用户的访问权限,则根据其它用户访问权限进行判断。
drwxrwxr-x d表示directory,文件夹默认权限775
-rw-rw-r-- -表示是文件,文件默认权限664
/usr/bin/passwd:4755==》红字,无法访问(此时eid不等于rid)
chmod改成 755 ==》绿字,可以访问
47==>rws 7==>rwx
引入了真实UID(real UID)、有效UID(effective UID)以及 保存的UID(saved set-user-ID)的概念。
- rid实际用户ID和实际组ID标示我们实际上是谁;这两个字段是在登录时读取口令文件中的登录项。一般情况下,在一个会话期间,实际用户和实际组用户不会改变;但超级用户的进程可能改变它们。
- eid有效用户ID,有效组ID以及附加组ID决定了文件访问权限;
- 保存的设置用户ID在执行程序时包含了有效用户ID的副本。
通过查看/etc/passwd可以知道,在内核中,是通过一个整数ID来代表用户名的。Root作为特权用户,UID=0;新注册用户一般是1000开始。使用getuid()和geteuid()可以获得当前进程的真实ID和有效ID。
setuid和seteuid
2020.6.15课:
su: 重新启动一个shell,并将该shell进程的uid设置为相应用户的uid
不是谁都能setuid(0)的。为了设置setuid(0),自己首先得有sudo权限。
效果如下:
这里应该不是root,而是others。因为每次rid都改不了:
第二次seteuid 1001的时候,失败,要重置到0(saved user ID,第二个条件满足:),才能再次修改。
chmod 7755,或者1755。
如果一个文件夹是公共文件夹,那么它的权限可能是777,也即所有人可读写执行。所有人都可以在这个目录下创建自己的文件,但同时,任何人也可以删除其他人创建的文件,虽然不能写。
为了防止在公共文件夹下删除他人的文件,可以对文件夹设置sticky位。Chmod 1777来设置。
1777用户只能删除自己的文件。
rootkit(2)
实验3:netstat篡改一下代码
查看恶意攻击:
- ls 查看目录下恶意程序
- ps 查看恶意进程
- netstat 网络连接/端口
rootkit本身的发展过程:应用级->内核级->硬件级。早期的rootkit主要为应用级rootkit,应用级rootkit主要通过替换login、ps、ls、netstat等系统工具,或修改.rhosts等系统配置文件等实现隐藏及后门;硬件级rootkit主要指bios rootkit,可以在系统加载前获得控制权,通过向磁盘中写入文件,再由引导程序加载该文件重新获得控制权,也可以采用虚拟机技术,使整个操作系统运行在rootkit掌握之中;目前最常见的rootkit是内核级rootkit。也是我们讨论的重点。
rootkit(3)
VFS(虚拟文件系统)
Linux中,一切皆文件。现在一般使用 Ext4 文件系统。
FAT(File Allocation Table文件分配表):FAT占用内存过多,难以管理较大的硬盘存储。