快捷搜索:  网络  CVE  渗透  后门  扫描  木马  黑客  as

初识Linux渗透排泄:从枚举到内核行使

1.png

违景

许多人都认为Linux是最安全的操作体系,因此在对Linux的安全问题上也放松了警惕。那么究竟真的云云吗?实在安全从来都只是相对于的,Linux也不例外。虽然它加载了强盛的安全机制,但仍可能受到来自各方面带来的安全威胁。本文我们首要将讨论有关Linux架构的首要行使手艺,黑客工具,和相干的安全防御措施。

PS:本文仅用于手艺讨论与分享,严禁用于非法用途

Linux 概述

2.png

操作体系的首要目的是用于治理计算机硬件及软件资源,并为计算机程序提供通用服务。Linux操作体系是由 Linus Torvalds于1991年开发的一个UNIX操作体系的克隆版本。不要混淆了Linux以及Unix。它具有GNU通用公共许可证(GPL)的许可。Linux下为我们提供了强盛的Shell体系用户界面,用于接收用户输入的命令并把它送入内核执行。一些比较知名的shell包括:Bourne again shell (Bash), C shell (csh), Korn shell (ksh)。你可以通过cat /etc/shells查看你当前的shell环境类型。

3.png

下列是一些无比经常使用的linux命令:

ls:列出文件以及目录

find:查找文件

cd:切换路径

cp:复制

mv:挪移

mkdir:创建一个目录

rmdir:删除目录

rm:删除文件

想要了解有关命令的更多细节信息,只要键入man命令即可。

4.png

Linux 流以及重定向

当你与Linux环境进行交互时,它将为你提供输入/输出重定向功能以简化你的体验。关于输入输出流的操作, 有下列三种流你可以使用:

标准输入流 (stdin)

标准输出流 (stdout)

标准错误输出 (stderr)

这三个首要流的图示以下:

5.png

另一个功能是重定向。它首要用于对流的重定向。执行文本重定向,你可以使用下列符号:

“>”:笼盖文件。

“>>”:将输入添加到文件中。

下列是一些重定向符号及其用途列表:

6.jpg

Linux文件体系层次结构

在Linux中,统统都可以看做文件,包括所有允许/禁止读写执行权限的目录以及设备。Linux的分层设计以下:

7.png

/root:体系治理员的主目录

/home:包含所有效户的小我私人文件

/bin:包含所有二进制文件(可执行文件)

/sbin:超级治理命令,这里存放的是体系治理员使用的治理程序

/lib:包含所需的库文件

/usr:包含普通用户使用的二进制文件

/opt:包含可选的附加应用程序

/etc:包含程序所需的所有设置文件

/dev:包含设备文件

/media:包含暂且可挪移设备的文件

/mnt:包含文件体系的挂载点

/boot:包含引导加载程序文件

/tmp:包含暂且文件

/var:包含变量文件,如日记文件

/proc:包含有关体系进程的信息

8.png

用户以及组

用户以及组在Linux中相等重要,同时它提供多义务以及多用户功能。治理用户以及组,你可以使用下列linux命令:

Useradd:添加新用户

Passwd:更改用户暗码

Userdel:删除用户,你可以添加“-r”选项删除用户的文件

查看用户组文件:cat /etc/group

9.png

创建一个组:

newgrp <Group-Name-Here>

权限

在Linux中用户以及组的权限首要包括:

读,以字母r表示

写,以字母w表示

执行,以字母x表示

要查看文件的权限,除了-l选项外,还可以使用ls命令:

11.png

chmod , chown 以及 chroot 命令:

要更改文件权限,可以使用chmod命令,格式以下:

chmod <Permission Letters> <File/Directory>

或者你也能够使用八进制表示来代替字母

12.png

chown用于更改文件的所有者。

chroot改变程序执行时所参考的根目录地位。

Cronjobs 以及 Crontabs:

自动化以及义务调度是体系治理中无比重要的方面,尤为是在使用Linux时。自动化义务使体系治理员的工作变得愈加轻松。Linux为我们提供了很好的义务调度功能,以在特定的时间运行命令或脚本,我们称之为Cron。调度 义务创建格式以下:

<Day of the week> <Month> <Day of the Month> <Hour> <Minutes> <Co妹妹and>

13.png

要检查Crontab(包含有关cronjobs信息的文件),只要键入cat /etc/crontab即可

14.png

Linux 攻击向量

以上我们对Linux体系环境以及命令已经有了一个初步的了解。下面,我们把眼光转向有关Linux所面临的安全威胁上。攻击者的攻击前言多种多样,通常攻击向量可以分为下列三种首要类型:

收集威胁

主机威胁

应用威胁

我们将在后半部分具体讨论有关针对Linux的安全威胁。在最先攻击Linux之前,枚举是必不可少的工作阶段。

使用Nmap检测体系

15.png

我们可以使用Nmap来帮助我们检测,当前主机是否在Linux上运行。只要输入nmap – O <target>即可。

Linux 枚举

有许多开源工具可以帮助我们枚举Linux机器。推荐人人使用LinEnum,在我眼里这是最佳用的工具之一。

你可以在这里进行下载:https://github.com/rebootuser/LinEnum

使用:./LinEnum.sh -k keyword -r report -e /tmp/ -t

选项:

-k 输入症结字

-e 输入导出地位

-t 包括彻底(冗杂)测试

-r 输入讲演名称

-h 显示帮助文本

不带参数运行 = 有限扫描/没有输出文件

-e 请求用户输入输出地位,例如/tmp/export。要是不存在该目录文件,则会自动为你创建。

-r 请求用户输入讲演名称。讲演(.txt文件)将保存到当前工作目录。

-t 执行彻底(慢速)测试。要是不加该参数,则会执行默认的“快速”扫描。

-k 可选,支持用户在大批文件中搜索单个症结字。

16.png

LinEnum可帮助你查找有关Linux主机的信息,包括:

体系信息:

主机名

收集详情

当前IP

默认路由详情

DNS服务器信息

用户信息:

当前用户具体信息

最后登录用户

显示用户登录主机

列出所有效户,包括uid/gid信息

列出root帐户

提取暗码策略以及哈希存储方式信息

检查umask值

检查/etc/passwd中是否存储暗码哈希值

提取“默认”uid的完备具体信息,例如0,1000,1001等

尝试读取受制约的文件,即/etc/shadow

列出当前用户的历史文件(如bash_history,.nano_history等)

基本的SSH检查

Linux提权

根据定义:“提权主若是行使编程错误或设计缺点,来授予攻击者特殊权限以走访收集及其相干数据以及应用程序等。”(摘自techtarget.com)。

提权可分为垂直以及水平两种;平行提权,即权限类型不变,权限ID改变。垂直提权,即权限ID不变,权限类型改变。田野使用的提权手艺种类繁多其中包括:

Linux Services Exploitations:通过查找linux服务或设置中的错误来提权。

通配符:通配符可用于注入任意命令。

详细可以参考,之前发布的一篇有关行使通配符进行Linux内陆提权的文章。

SUID 滥用:

在这类手艺中,攻击者使用需要root权限的合法工具(如nmap)在体系上运行恶意命令

Linux内核行使:

这类行使的风险极大。一旦攻击者成功行使linux内核,他们将能够完全控制体系。

检查体系是否存在权限抬举漏洞,可以使用 “Linux privilege checker”。下载地址:https://github.com/sleventyeleven/linuxprivchecker/blob/master/linuxprivchecker.py

17.png

Linux Exploit Suggester

Linux Exploit Suggester是一款由PenturaLabs开发的,可根据操作体系版本号自动查找相应提权脚本的工具。其首要功能包括:

“Remote” 模式 (–kernel 或 –uname 开关)

“Direct” 模式 (默认)

“CVE list” 模式 (–cvelist-file 开关)

“Check security” 模式 (–checksec 开关)

使用:./linux-exploit-suggester.sh

下载地址:https://github.com/mzet-/linux-exploit-suggester

甚至它还为我们提供了加固措施:

18.png

19.png

Linux内核行使

如今的操作体系大都基于“环维护模型”(ring protection mode)。该模型通常分为4层,编号从0到3,以下图所示:

20.png

Linux操作体系也基于相同的机制,但只有2层:User Land 以及 Kernel Land。内存治理(Memorymanagement)是linux内核提供的最强盛的功能之一。

内核行使手艺:

1.空指针引用

NULL指针错误会诱发空指针NullPointerException异常。换句话说,就是编程对象引用了值为NULL的地址。

21.jpg

2.任意内核读/写

该攻击主若是通过将数据传递到Linux内核完成的。

3.内存破损漏洞

为方便内部的处理,内存被划分为了4096字节的内存块,并被命名为page。12个最低有用位是偏移量;其余的是页码。在最新的x86架构中,Linux内核将捏造空间(一般是4GB)之中的3GB给了UserLand,另外1GB用于kernel land。此操作称为分段。该操作称之为分段。

内核使用页码来表示物理以及捏造之间的对应关系地址。为了治理不同的内存地区,这里使用了捏造内存地区(VMA):

22.png

A-内核栈漏洞:

堆栈是一个特殊的内存空间。这个内存空间会自动增进。而攻击者也恰是行使了这一点,一旦函数调用过量,就会致使调用堆栈没法容纳这些调用的返归地址,导致数据越界,笼盖老的堆栈数据产生栈溢出漏洞。

B-内核堆漏洞:

堆用于动态内存调配。内核堆行使是无比惊险的,因为在多数情形下,攻击者往往不需要预备任何的Linux模块调试环境,即可完成堆行使。

Race Condition(竞争前提)

由于两个或者多个进程竞争使用不能被同时走访的资源,使得这些进程有可能因为时间上推进的前后缘故起因而出现问题,这就鸣做竞争前提(Race Condition)。为了不这个问题,linux完成了我们所谓的Mutex(互斥对象)。

缓冲区溢出防御手艺

这里有许多已完成手艺,可以帮助你抵御缓冲区溢出攻击,例如:

地址空间布局随机化: Address space layout randomization (ASLR),是参与维护缓冲区溢出问题的一个计算机安全手艺。是为了防止攻击者在内存中能够可靠地对跳转到特定行使函数。ASLR包括随机排列程序的症结数据地区的地位,包括可执行的部分、堆、栈及同享库的地位。

stack canary

stack canary防护手艺首要用于防止stack overflow(堆栈溢出)。要是能在运行时检测出stack overflow损坏,就有可能对函数栈进行维护。目前的堆栈维护完成大多使用基于 “Canaries” 的探测手艺来实现对这类损坏的检测。

23.png

Non-executable stack

不可执行堆栈(NX)是一种捏造内存维护机制,通过制约特定内存以及完成NX位来阻止shell代码注入在堆栈上执行。

Linux 返归导向编程(ROP)

返归导向编程(ROP)是一种高级的内存攻击手艺,简单的来说它的特点就是通过控制返归指针来使程序导向新的控制流,行使处景包括使用ROP来绕过DEP、ASLR如许的防御机制。

24.png

Linux安全加固

下列是我对你的一些Linux安全加固建议:

定期更新Linux内核以及应用程序。

避免使用像FTP以及telnet这种的不安全服务,建议使用SFTP以及OpenSSH。

仅使用必要的应用以及服务,最大化的减小攻击面。

要是前提允许,建议使用SELinux。

使用强暗码策略。

关注faillog记录。

强化/etc/sysctl.conf设置。

使用身份验证服务器。

总结

本文首要向人人概述了一些基础的有关Linux体系命令以及术语,并深入探讨了Linux安全方面的问题和行使与防御手艺。希翼通过本文的学习,能让你对Linux有一个愈加深入的了解。

相干参考文献

1.高级基础举措措施渗透排泄测试 – Packt Publishing:Chiheb chebbi

2.Linux用户以及组:https://www.linode.com/docs/tools-reference/linux-users-and-groups/

3.使用Crontab在Linux上创建调度义务:https://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/

4.LinEnum: https://github.com/rebootuser/LinEnum

*参考来源:peerlyst, secist 编译,

您可能还会对下面的文章感兴趣: