【转】Linux Kernel Security入门?

前辈原文链接:https://mp.weixin.qq.com/s/Y_l4johaJupbaN-s5rAj0A

什么是安全?“1500多年前,由从梵文译成汉文的《百喻经·愿为王剃须喻》中讲述了亲信救王的故事。故事中写道:“昔者有王,有一亲信,于军阵中,殁命救王,使得安全。”这里的安全是指一种状态,在这种状态下,某种对象或者对象的某种属性是不受威胁的。”–胥峰(《Linux系统安全》作者)。

Linux内核安全是个非常复杂的话题,防御机制、加固配置、漏洞利用等等挑战性的技术。

在进行加固防御的过程中,又会产生性能或者系统稳定性相关的影响,所以Linux内核的安全性是全局、牵一发而动全身的问题。

一、Linux Kernel Security前言

随着几何倍数增长的智能设备以及高频次的使用,各种的黑客攻击以及数据泄露事情频繁发生,这也让设备安全和信息安全成了绝大多数公司最为关注和人力财力投入的领域。

每天用到的手机、电脑,开的汽车,公司使用的服务器,浏览的网站等等,云网边端越来越多应用到各个行业。所有这一切都基于芯片,而让芯片真正能让我们大家使用起来,魔力在于操作系统。要问目前世界上什么操作系统应用最广、参与度最高,答案是Linux。

安全的基座在芯片,芯片的基座在操作系统,操作系统的核心是内核。安全不是单一维度,多层级构建防御矩阵,以及多个角度来解析安全问题,会达到更好的效果。

比如一个简单的内存泄漏问题,前期可能会因为内核泄漏,剩余内存不足导致系统卡顿,此时工程师查找的是Performance性能问题,接下来当系统不能及时回收内存,或者阈值设置不合理,一些进程会被Kill掉,甚至极端情况下,系统会oops或者panic,此时系统展现出来的是Stability稳定性问题。然后如果这个问题触发点很隐蔽,程序发布之前都没有触发而被发现,那后续被黑客利用起来做进一步攻击行为,造成安全漏洞和经济损失,这就是最严重的Security安全问题。

传奇黑客Kevin David Mitnick在《欺骗的艺术》中提到,人为因素才是安全的软肋。补漏洞容易,堵人性漏洞难。代码程序是人为写的,安全防御机制是人为定制的,攻击也是人为的操作。接下来,让我们从Linux内核Performance、Stability以及人为因素这几个维度,来深入分析内核Security,一起开启Linux内核安全的奇妙之旅!

二、Linux Kernel Security-基础知识

很多人小的时候看《黑客帝国》会被Keanu Reeves和Carrie-Anne Moss探索的虚拟世界所震撼,当主角身后一串串密码般的二进制信号雨铺满整个屏幕,对于儿时的我仿佛打开了一个新世界的大门。自此,黑客和安全这两个词就深深的烙印在我的心里。

庆幸的是,当大学毕业后在一家芯片公司开启工作生涯时,能够从事Linux内核开发的工作,也进一步感受到了内核的魅力,开源的魅力。随着工作内容的不断深入,从Linux Kernel Performance到Stability,再到目前从事内核Security的工作,也见证了互联网PC时代、移动终端时代、大数据云计算时代,历史的车轮来到了云网边端阶段。

从这些经历中,会深深的感受到Kernel Security不是单一维度的问题,而是和Performance、Stability有着紧密联系。由此而发,本着开源共享的精神,开启了Linux Kernel Security全景图这个系列,后续会持续更新,把我对Linux Kernel在Performance、Stability和Security领域所了解的信息,以及相关技术分析分享给大家,为推动国内在Linux内核安全领域更快速高效的发展,尽自己最大的努力。

本文是系列开篇,也就从最基础也是大家最感兴趣的话题讲起:学习内核安全的书籍。下面从各个角度来列举出来相关书籍信息,大家可以自行查找。

Shell Script

1.《Linux Shell脚本攻略》【印】Sarath Lakshman

Tracing & Debugging

1.《Debug Hacks》【日】吉冈弘隆;大和一洋;大岩尚宏;安部东洋;吉田俊辅

2.《格蠹汇编:软件调试案例锦集》张银奎

3.《软件调试》张银奎

Algorithms

1.《数据结构与算法分析——C语言描述》【美】Mark Allen Weiss

2.《算法导论》【美】Thomas H.Cormen;Chales E.Leiserson;Ronald l.Rivest

3.《算法图解:像小说一样有趣的算法入门书》【美】Aditya Bhargava

Compiler

1.《译原理》(龙书)【美】Alfered V.Aho;Monica S.Lam;Ravi Sehi;Jeffrey D.Ullmam

2.《编译与反编译技术实战》庞建民

Linux Binary Analysis

1.《Learning Linux Binary Analysis》【英】Ryan O’Neill

2.《Practical Binary Analysis: Build Your Own Linux Tools for Binary Instrumentation, Analysis, and Disassembly》 【荷】Dennis Andriesse

Linux Kernel & Security Develop

1.《Professional Linux Kernel Architecture》【美】Wolfgang Mauerer

2.《深入分析Linux内核源代码》陈莉君

3.《0day安全:软件漏洞分析技术(第2版)》王清

4.《漏洞战争:软件漏洞分析精要》林桠泉

5.《内核漏洞的利用与防范》【美】Enrico Perla;Massimiliano Oldani

6.《Fuzzing for Software Security Testing and Quality Assurance(第2版)》【美】Charlie Miller

7.《The Art of Softwar Security Assessment:Identifying and Preventing Software Vulnerabilities》【美】Mark Dowd

8.《模糊测试-强制性安全漏洞挖掘》【美】Michael Mutton

9.《Exploit编写系列教程》【美】Corelan Team

10.《灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术》【美】Allen Harper;Shon harris

11.《威胁建模:设计和交付更安全的软件》【美】Adam Shostack

严格意思上来讲,研究内核安全还应该包含以下各个方面知识点,总而言之,内核安全不是单一领域,需要多层级多维度来构建防御体系。

1.硬件结构

2.CPU体系

3.指令集

4.TEE(ARM:TrustZone Intel:SGX)

5.TPM、TPCM

6.网络

7.逆向工程

8.数理逻辑

9.形式验证

10.社会工程学

11.漏洞利用

12.攻防体系

13.LSM

只会防守,不懂进攻,也只能一直处于被动,后续会从各个维度来分析内核安全,从而展开这幅庞大的Linux Kernel Security全景图,让我们一起感受内核之美和安全的奇妙。

一、Linux Kernel Security相关资料

接下来会从内核安全相关的书籍、技术网站Blog、以及顶会论坛资料的角度,来带领大家走入内核安全领域的世界。

大家可以通过学习这些书籍、网站、会议等资料,并结合内核代码来分析消化内核安全相关知识点这样会对Linux内核机制有更深入的理解,对内核安全产生兴趣,而兴趣,就是最好的老师。

二、书籍

  • 1、《内核漏洞的利用与防范》
    作者:Enrico Perla/Massimiliano Oldani
    出版社:机械工业出版社
    系统地讲解内核级别漏洞利用所需的理论技术和方法,共分为4个部分:

    • 第一部分介绍漏洞利用的目标、内核以及理论基础;

    • 第二部分深入介绍了目前主流操作系统的细节,并针对不同错误类别分别编写了漏洞利用程序;

    • 第三部分将关注点从本地场景转移到远程利用的情景;

    • 第四部分介绍未来内核的攻防模式。

    系统地讲解了内核级别的漏洞利用所需的理论技术和方法,并将其应用于Lnux内核中内核。内容详实,实例丰富,可操作性强,涉及到底层系统编程、内核攻击、漏洞利用和对策等,非常值得内核开发工程师、内核安全和系统安全工程师查阅学习。

  • 2、《Linux内核安全模块深入剖析》
    作者:李志
    出版社:机械工业出版社

    对Linux内核安全子系统做了系统而深入的分析,内容包括:

    • 自主访问控制

    • 强制访问控制

    • 完整性保护

    • 审计日志

    • 密钥管理与密钥使用
      填补了国内外关于Linux内核安全的一个空白,全书采用源码剖析与用户态工具使用相结合的方式,对Linux内核安全模块进行了讲解,既避免了冗长的代码罗列,也消除了读者的“隔靴搔痒”之感。

  • 3、《Linux安全技术内幕》
    作者:李洋
    出版社:清华大学出版社
    早期Linux安全书籍,全面、深入,和系统的分析,内容包括黑客攻击的基本技术、Linux面临的安全威胁、Linux安装与启动、Linux系统安全管理、Linux网络服务安全管理、Linux核心安全技术、Linux优秀开源安全工具等。

  • 4、《Mastering Linux Security and Hardening》
    作者: Donald A. Tevault
    出版社:Packt出版社
    从Linux系统环境的角度,防止攻击者破坏系统,构建一个更安全的Linux环境。通过分析各种Linux安全技术,如加密文件系统、保护用户帐户、身份验证过程、高级Linux权限、访问控制、特殊模式等方面的实际操作技能,并创新性的讲解了安全部署和异常问题的解决方案。

  • 5、《Linux系统安全:纵深防御、安全扫描与入侵检测》
    作者:胥峰
    出版社:机械工业出版社
    这是一部从技术原理、工程实践两个方面系统、深入讲解Linux系统安全的著作,从纵深防御、安全扫描、入侵检测3个维度细致讲解了如何构建一个如铜墙铁壁般的Linux防护体系。
    以上五本书从各个角度对Linux内核安全以及内核系统进行了深入的剖析,下面整理总结下涉及到内核安全的网站、Blog等。

三、技术网站Blog

  • 1、Pax/Grsecurity—https://grsecurity.net/

这里着重介绍一下在内核安全领域开创一个时代的团队:Pax/Grsecurity。为Linux内核乃至操作系统的安全做出的创新性贡献,也是史诗级别。过去的N年里 Pax/Grsecurity为 Linux 内核安全做出了巨大贡献,但时至今日Linux内核社区都不愿意接受(What F**k !!!)。传统意义上的GNU/Linux 的安全性可能只对脚本小子会有些防御效果,对于很多高级内核攻击手段,只能看天意。什么?你说SELinux…,建议去了解下NSA是如何推动SELinux作为LSM初始成员,再看看现在Five-Eyes国家用的是什么,你就会明白一切。

传统的内核安全机制LSM (AppArmor SELinux Smack TOMOYO Landlock),基本上是对权限以及信息流的控制,而Pax/Grsecurity通过安全改进大幅度增强了内核的安全防御边界。在操作系统级别的安全防御领域,甚至对Windows以及 BSD以及CPU处理器厂家产生了深远的影响。

目前Pax/Grsecurity主要在领域做Linux Kernel Hardening,分别如下:

  • a.Memory Corruption Defenses

  • b.Filesystem Hardening

  • c.Miscellaneous Protections

  • d.RBAC

  • e.GCC Plugins

在这里插入图片描述

  • 2、HardenedVault—https://hardenedvault.net/

一群由老派黑客,密码朋克和固执的工程师组成的团队。最早成立于 2017 年末的一个安全研究研讨会,其重点领域是基础设施安全。过去做了一些有趣的工作,特别是在密码通信协议、固件安全、Linux内核加固和硬件安全方面。

VED (Vault Exploit Defense): Linux内核威胁检测与防护系统,在解决以下类型Linux内核漏洞问题和防护加固方面走在了业界领先地位。更适合部署在车联网、云原生基础架构环境下,作为Linux内核安全加固防御方案。

漏洞类型:

  • 缓冲区溢出(堆/栈/静态数据)

  • 堆对象错误行为(double-free, use-after-free, etc)

  • 整数溢出(向下越界分配,缓冲区溢出,引用计数,etc)

  • 竞争条件

  • 信息泄漏

漏洞利用方法:

  • 执行注入的shellcode,比如ret2usr

  • 执行现有的代码构建ROP/JOP链条

  • 任意读,利用信息泄漏

  • 任意写,污染关键数据结构

目前HardenedVault已经将VED开源:https://github.com/hardenedvault/ved

在这里插入图片描述

  • 3、安全内参—https://www.secrss.com/

  • 4、安全客—https://www.anquanke.com/

  • 5、Freebuf—https://www.freebuf.com/

  • 6、嘶吼—https://www.4hou.com/

  • 7、http://securityaffairs.co/wordpress/

  • 8、Linux Kernel CVE Details—https://www.cvedetails.com/product/47/Linux-Linux-Kernel.html?vendor_id=33

  • 9、https://www.blackhat.com/

  • 10、https://www.efficios.com/

  • 11、https://redcanary.com/blog/

  • 12、https://blog.cloudflare.com/

  • 13、https://www.kicksecure.com/

  • 14、https://www.memorysafety.org/blog/

  • 15、https://www.cnxct.com/

四、顶会论坛

在世界范围内的安全领域有四大顶会,分别为:

  • USENIX Security(USENIX Security Symposium)

  • Oakland S&P(IEEE Symposium on Security & Privacy)

  • NDSS(Network and Distributed System Security Symposium)

  • CCS(ACM Conference on Computer and Communications Security)

作为Linux内核开发者,我们也需要知道在Linux Foundation旗下的内核Security会议论坛以及LKML邮件列表信息,在2020年前都是线下,2020-2021大多为只有线上会议,从今年开始,逐渐恢复了线下举办活动,并同时增加线上会议,使受众面更加广泛。

  • 1、Linux Security Summit (LSS)

每年两次,分为北美(North America,每年5-6月份期间)和欧洲(Europe,每年8-9月份期间)。

  • 2、Open Source Summit(OSS)

内核开源大会,也会有Security专场,今年是9月份在爱尔兰举办。

  • 3、LKML–LSM(Linux Security Modules)

http://www.spinics.net/linux/fedora/linux-security-module/

  • 4、https://open-security-summit.org/

  • 5、其他安全领域会议参考这个网站列表

https://sec-deadlines.github.io/

猜你喜欢

转载自blog.csdn.net/weixin_45264425/article/details/131340968