原标题:如何使用LES对Linux进行渗透测试研究

*本工具仅供技术分享、交流讨论,严禁用于非法用途。

写在前面的话

LES安全工具由Z-Labs开发并负责维护,可帮助安全测试人员以及安全分析专家在对Linux设备进行红队测试/渗透测试的过程中寻找关键漏洞。在这篇文章中,我将介绍这款工具的运行机制,并教会大家如何高效地使用LES。

工具介绍

为了完成渗透测试任务并兼容不同Linux发行版系统,LES使用了大量的启发式方法来实现其主要功能,同时为给定的Linux设备生成候选漏洞列表,以最大程度地降低假阳性以及误报率。此外,出于工具实用性以及维护便利性开率,该工具还实现了以下特性:

1、子系统标记,针对目前大部分流行的Linux发行版,其中包括Debian、Ubuntu、RHEL/CentOS。

2、用户空间分析子系统,完全支持基于deb和rpm的发行版系统,部分支持其他发行版。

在LES的早期版本中,LES只会处理内核版本,这种方式完全跳过了发行版版本的问题,大部分主要处理功能都通过Linux_Exploit_Suggester脚本来实现。但是这种方式并不是非常有效,因为容易出现误报的问题,从而产生大量需要手动分析的漏洞。

随着时间的推移,LES也得到了改进,并通过生成候选漏洞列表的方式来解决之前的问题:

1、 基于内核版本生成初始漏洞列表;

2、 检查每个漏洞的“标签”命中率;

3、 基于“附加检查”舍弃不适用的漏洞利用;

4、 计算每个候选漏洞的内部度量(“等级”),并根据计算对列表排序。

接下来,我们将一一进行讨论。

基于内核版本生成初始漏洞列表

这是减少给定设备候选漏洞攻击数量的第一步。LES会解析uname命令的输出结果,并获取准确的内核版本信息,然后再跟漏洞利用代码中定义的版本信息进行对比。例如:Reqs: pkg=linux-kernel,ver>=4.4,ver<=4.13,…

检测标签匹配

为了降低假阳性,并进一步减少候选漏洞数量,提升目标系统的适用性,LES还引入了“标签”的概念。标签是描述内核版本的简单语句,并标明给定的漏洞可以适用于这些系统版本,语句主要由正则表达式组成。例如:Tags: RHEL=6,RHEL=7{kernel:3.10.0-514.21.2|3.10.0-514.26.1}。“标签”并不会舍弃候选漏洞列表中的实体数量,而是将更加适用的对象“往前放”。

舍弃不适用的漏洞

为了进一步优化候选漏洞列表,LES还引入了额外的参数要求(Reqs域)。在向LES中添加漏洞利用实体时,我们可以定义下列条件:

Reqs:pkg=linux-kernel,ver>=3.2,ver<=4.10.6,CONFIG_USER_NS=y, \

sysctl:kernel.unprivileged_userns_clone==1

上述条件表明内核版本必须>3.2并且<=4.10.6,而且内核的用户命名空间功能还必须以CONFIG_USER_NS=y进行编译,并启动该功能(sysctl:kernel.unprivileged_userns_clone==1)。

对于不常用的检测情况,LES还提供了运行任意BASH命令的功能,以便研究人员查看漏洞是否适用于给定系统。例如:

Reqs:pkg=linux-kernel,ver>=4.4.0,ver<=4.4.0,cmd:grep -qi ip_tables/proc/modules

在上述场景中,命令“grep -qi ip_tables /proc/modules”主要用来判断ip_tables模块是否已加载,并根据命令返回值(TRUE或FALSE)来判断漏洞是否适用于该系统。

基于排名动态生成的漏洞排序列表

最后,LES会根据动态计算的等级(Rank)结果对列表中的现有漏洞及西宁排序,等级越高则在列表中的位置越靠前,也就是漏洞适用于给定系统的概率会越高。

Rank计算基于下列规则:

1、 针对普通漏洞的初始rank为1。

2、 针对优秀漏洞的初始rank为5,例如dirtycow和eBPF_verifier等等。

3、 针对较差漏洞的初始rank为0,例如不稳定的或不适用的漏洞。

4、 如果待测Linux发行版系统版本匹配其中一个标签,则Rank加2。

5、 如果待测Linux发行版系统版本正则表达式匹配其中一个标签,则Rank加5。

例如,LES针对dirtycow漏洞利用的Rank计算方式如下,运行版本为Ubuntu 16.04,内核版本为4.4.0-21-generic:

Inital rank: 5

Distribution version match: +2 to rank

kernel version regex match: +5 to rank

final rank: 12

功能介绍

接下来,我们一起看看如何使用LES吧!

基本使用场景下,所有的步骤都会按顺序执行来生成候选漏洞列表:

$./les.sh

–cvelist-file选项可以用来设置完整的CVE列表,如果目标系统受其中漏洞影响的话,LES将会用其进行测试,列表可以通过https://api-ksplice.oracle.com/api/1/update-list/生成:

$./les.sh --cvelist-file

在红队研究的过程中,我们还可以“间接”运行LES来对目标(例如HIDS)执行更加严格的监控:

victim-host$dpkg -l > pkgsListing.txt

pentester-host$./les.sh --uname "" --pkglist-filepkgsListing.txt

在对目标设备进行漏洞利用测试之前,我们通常还需要检查目标内核是否使用了其他加固措施:

$./les.sh --checksec 工具快速下载 wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh-O les.sh 项目地址

LES:【】

* 参考来源:mzet,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM返回搜狐,查看更多

责任编辑:

linux les命令,如何使用LES对Linux进行渗透测试研究相关推荐

  1. linux mount命令衔接,Linux mount命令详解:挂载Linux系统外的文件

    Linux mount命令详解:挂载Linux系统外的文件 <Linux挂载>一节讲到,所有的硬件设备必须挂载之后才能使用,只不过,有些硬件设备(比如硬盘分区)在每次系统启动时会自动挂载, ...

  2. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)

    Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩)         ...

  3. Linux管道命令——《鸟哥的Linux私房菜》笔记

    Linux管道命令--<鸟哥的Linux私房菜>笔记 0 前言 看完书之后,总感觉不记录下来的话,很快就会忘了,然后又需要重新到处翻书找资料,所以还是把内容记录下来,方便以后复习.本文大部 ...

  4. linux df命令各项表示什么意思,linux命令介绍:df使用介绍

    linux中df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 语法:df [选项] 说明:linux中df命令可显示所有文件系统对 ...

  5. Linux的命令——“cd”(内附Linux命令格式,相对路径和绝对路径)

    内容预知 目录 1.Linux的 命令格式书写 1.2 选项的用法 1.3 参数 2.绝对路径与相对路径 3.对终端中默认"[root@localhost ~]"#的认识 4.七种 ...

  6. 毕业论文开题报告 - 基于Linux的无线网络渗透测试研究

    目录 开题报告填写要求 1.毕业论文综述(题目背景.研究意义及国内外相关研究情况) 1.1 题目背景 1.2研究意义 1.3现阶段相关研究情况 2.本课题研究的主要内容和拟采用的研究方案.研究方法或措 ...

  7. linux下 命令 实验,实验一:Linux命令实验

    实验一:Linux命令实验 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验一 Linux常用命令1.Linux文件与目录的基本 ...

  8. linux tree命令源码,[转帖]linux tree命令--显示目录的树形结构

    linux tree命令--显示目录的树形结构 版权声明:iamqilei@qq.com https://blog.csdn.net/u011729865/article/details/533684 ...

  9. linux cd 命令案例,15个关于Linux的‘cd’命令的练习例子

    命令名称:cd 代表:切换目录 使用平台:所有Linux发行版本 执行方式:命令行 权限:访问自己的目录或者其余指定目录 级别:基础/初学者 1.从当前目录切换到/usr/local avi@tecm ...

最新文章

  1. 基本函数依赖和候选键_5G 通信候选波形的设计和评测解决方案
  2. Tracetcp/Tcptrace的使用
  3. 主从故障处理--session 级别参数复制错误
  4. Python a,b = b,a 是怎么赋值的
  5. 有没有词匹配算法_整站关键词SEO的匹配优化方法
  6. 【控制】动力学建模举例 --> 拉格朗日法
  7. python 画三角函数_如何用python表示三角函数
  8. linux centos 回收站,centos下实现回收站功能
  9. 外链建设的22种方法
  10. 一位五年工作经验架构师的感悟
  11. 跟我学药物设计 | 药物研发的过程和药物设计的意义
  12. 努比亚修复工具_努比亚Play刷机包(官方刷机完整固件升级包V2)
  13. Had I not seen the Sun(如果我不曾见过太阳)
  14. yarn : 无法加载文件 D:\Development\nvm\node_global\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.c
  15. 【神经网络参数初始化方法】
  16. 2019-02-13 扇贝自动打卡贼简单版
  17. linux飞腾cpu,基于飞腾CPU+银河麒麟操作系统编译安装tensorflow
  18. 深度学习提高泛化能力的技术
  19. Ola Hallengren 脚本 经常问的问题
  20. 论文写作:MathType公式居中编号居右设置

热门文章

  1. PBR中BRDF常用的各类法线分布函数、几何函数总结(unity)
  2. NLP教程笔记:GPT 单向语言模型
  3. Publisher/Subscriber 订阅-发布模式原理解析
  4. 宏基因组理论教程3PICRUSt功能预测
  5. 坚果pro微信聊天记录导出
  6. 备战面试日记(6.1) - (缓存相关.Redis全知识点)
  7. sun java学习_Java学习笔记 -- yaml文件配置
  8. 解除加密PDF的限制编辑功能
  9. 关于硬盘模式为achi和ide的差别
  10. 【C语言进阶】函数三要素,变量作用域、生存周期、存储类型