找回密码
 注册
查看: 823|回复: 4

Linux 下一种可能发生的攻击方式

[复制链接]
发表于 2004-8-10 10:02:48 | 显示全部楼层 |阅读模式
不是什么高级的东西, 不过试图说明点问题, 如同很有名的黑客 Kevin Mitnick
(http://www.kevinmitnick.com/ 所说过的 (大意), 黑客活动不仅仅包括技术部分, 实际上
还包括社交手段 (social works)... 如果看过 'hacker 2 - Operation Takedown'
(http://www.imdb.com/Title?0159784 这片儿就是基于 Kevin 的真实故事拍的) 就会知道
Kevin 在那么多次攻击中都做了大量的社交活动获取目标系统的周边信息... 其实也说明了一件事情,
一个系统中最大的变数还是人.

啰嗦了, 俺的小破文章没那么多高级货, 只是一点点概念性的证明, 另外提醒大家养成良
好的安全意识和操作习惯是非常非常重要的! 这就能把人的变数减至最低...

- 04.08.10.09:46.Eric


04.08.08.23:14.Eric - 04.08.08.23:38.Eric

一种可能的攻击方式:

        . 利用环境变量以及 su (而非 su -).

模拟情景如下:

        1. 设定 $PATH 变量, 把一个用户自己的某个目录添加到其中, 如:
                $ export PATH=~/bin:${PATH}
        这样, ~/bin 下的可执行文件会被系统首先搜索

        2. 在 ~/bin 下放一个自己的文件, 我们起名为 ls (就是和 ls 命令相同!), 然
        写入如下内容, 并保存退出:

                #!/bin/bash
                echo 'ls 命令被我替换了! 哈哈'
       
        3. 将它改成可执行:

                $ chmod +x ls
       
        4. 好了, 直接输入 ls, 我们得到的不再是当前目录下的列表, 而是上面那句话!

设想一下, 如果:

        1. 把设定环境变量的命令写到 ~/.bashrc 这样的文件里, 每次以该账号登录, 就
        将 ~/bin 自动添加到优先搜索路径.

        2. 把 ~/bin/ls 里的内容改成某种恶意操作的代码, 比如最简单的:
       
                #!/bin/bash
                rm -rf /
       
        删除整个系统!

        3. 好了, 以普通用户运行 ls 时, 真正被执行的就变成了 rm -rf /, 当然, 这时
        无效. 但是, 如果是这种情况:

                . 你先以该用户账号登录 (这种情况当然有可能出现, 比如这个账号的用
                户就告诉你: "我的账号好像登录不进去, 我原来的密码是 XXXX, 您可以
                帮我登录试试, 看看有什么问题吗?" 或者以更聪明的方式都可能.)

                . 然后因为某种原因 su (而不是 su -) 了, 这时 ls, 你就是以管理员
                权限执行了用户的 ~/bin/ls 恶意代码!
       
如何避免? 两条原则:

        1. 不要随便允许一些用户可写的目录成为 $PATH 变量中的一部分 (现在想起
        redhat/fedora 的 $PATH 变量中有 ~/bin, 真是捏把冷汗! 幸好电脑都自己用!)

        2. 永远使用 su - (即 su 后面跟一个减号). 这样可以获得完全的 root 的环境
        变量, 用户设定的无效!
发表于 2004-8-10 11:10:38 | 显示全部楼层
那怎样才能设回用原来的ls命令呢??
回复

使用道具 举报

 楼主| 发表于 2004-8-10 12:03:27 | 显示全部楼层
如果你是在一个终端下 (如 gnome-terminal) export 的, 那就关掉再开一个就行了
如果是在命令行的终端下, 你就 exit, 再登录就 OK
回复

使用道具 举报

发表于 2004-8-10 14:21:00 | 显示全部楼层
[quote:72a700ae3e="Cure"] 然后因为某种原因 su (而不是 su -) 了, 这时 ls, 你就是以管理员
权限执行了用户的 ~/bin/ls 恶意代码![/quote]

因为何种原因才会在一个多用户的机器上以那个用户的帐号 su 呢?
又因为何种原因才会在一个有 su 权限的用户的环境里面更改这些设置呢?
回复

使用道具 举报

 楼主| 发表于 2004-8-10 17:29:58 | 显示全部楼层
[quote:f7299c2df2="dannycat"][quote:f7299c2df2="Cure"] 然后因为某种原因 su (而不是 su -) 了, 这时 ls, 你就是以管理员
权限执行了用户的 ~/bin/ls 恶意代码![/quote]

因为何种原因才会在一个多用户的机器上以那个用户的帐号 su 呢?
又因为何种原因才会在一个有 su 权限的用户的环境里面更改这些设置呢?[/quote]

1. 这个就麻烦大家自己设想有没有可能出现了. 我觉得自己想出来的办法都挺笨的
呵呵. 或者, 看看这样可不可能: 管理员相信我情景假设里那个用户的话, 以那用户
的账号测试登录了, 然后, 这时, 管理员觉得没问题了, 脑海里又突然想管理点什么,
不经意就 su 了 (缺乏安全意识...) 可能不?

2. 经过这一提醒, 我们可以加多一条注意情况: 只要能不给一个账号 su 权限就不给
可有种情况不能忽略: 如果我没记错的话, 红帽里 (图形界面的管理工具里) 每添加一
个账号, 都是可以 su 的. (要记错了请纠正, 当然, 如果用 useradd (adduser) 命令
行添加用户, 我们就尽量避免把用户加到 wheel 组里.

如果一个用户发现自己可以 su, 尽管他不知道 root 密码, 我设想的情况还是需要留
心的. 本文属于概念性地证明, 所以情景上未必周密. 关键还是指出安全意识的重要
性
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2026-11-9 17:48 , Processed in 0.013781 second(s), 20 queries .

© 2001-2026 Discuz! Team. Powered by Discuz! X5.0.

快速回复 返回顶部 返回列表