所以,到底什么是shell?

在继续Metasploit教程之前,我想提出这么一个疑问:到底什么是shell?

在渗透这个行业,你几乎随处都可以听到shell的字眼:你拿到那台server2008的shell了么?进后台getshell了没?cmd难道不是shell嘛?bash命令windows能用吗?……

今天我们就来掰扯一下这几个shell到底是不是一个shell!


1.shell的基本含义

我们知道shell的基本意思是:壳,这个概念是区别与内核(kernel)提出的,用户通过这个接口访问操作系统内核的服务,也就是由壳到内核。


2.windows中的shell

#cmd

cmd的全称是Command shell,微软官方给出的解释是:CommandShell是一个独立的应用程序,它为用户提供对操作系统直接通信的功能,它为基于字符的应用程序和工具提供了非图形界面的运行环境,它执行命令并在屏幕上回显MS-DOS风格的字符。

#PowerShell

从知乎上找到了一个非常棒的解释,连接:https://www.zhihu.com/question/22611859?sort=created,powershell为微软提供的cmd的替代品,其强大之处不虚bash,它的优势如下:

破天荒的方便:诸如存储计算中GB,MB,KB单位等;数组声明中的1..n和下标为-1的处理;还有所见即所得,通俗易懂的动词+名词结构Cmdlet。面向对象:与面向过程,面向文本相比,面向对象更方便更容易描述现实世界,也算赶上了时髦。绑上.NET这棵大树:正所谓大树下面好乘凉,PowerShell绑上.NET这个大款了,借助.NET Framework平台强大的类库,几乎让一切都成为可能。强大的兼容性:完全兼容windows 平台上其它调用,如可执行文件(exe),批处理bat和vb script脚本等。基于平台的可扩展性:这一条是重点。微软有个优点,与应用相比,它更喜欢做平台。PowerShell早已变成一个平台,在PowerShell 刚发布的第二年,微软的System Center Operations Manager 和 SharePoint就提供了针对该平台的组件,后来的AD,Hyper-V,Windows Azure,Office 365就更不用说了。除了微软,亚马逊的云平台管理,Dell的out-of-hand 管理,也都提供了基于PowerShell的管理组件。PowerShell 俨然变成了一个标准,变成了一个规范。

#explorer

任意一台windowsPC,打开任务管理器你就会看到它,没错,他就是你看到的桌面,这就是区别于上面提到的cmd,explorer严格上来讲也是一种shell,即图形shell。


3.linux中的shell

其实,最初提出shell概念的,正是在Linux中。我们有时候会说Shell 语言,也正是针对linux,shell自身其实是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。而Shell 既是一种命令语言,又是一种程序设计语言。

Linux 的 Shell 种类众多,常见的有:

Bourne Shell(/usr/bin/sh或/bin/sh)

Bourne Again Shell(/bin/bash)

C Shell(/usr/bin/csh)

K Shell(/usr/bin/ksh)

Shell for Root(/sbin/sh)

而我们一般在linux中谈shell,默认指得就是Bourne Again Shell,即bash,也是linux下最常使用的shell。


4.网站中的shell

webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。它的目的是通过网站端口对网站服务器的某种程度上操作的权限。其实某些网站后台管理本身就是webshell。


5.payload中的shell

payload?先别急着一棒子打死,其中文为“有效载荷”,指成功exploit之后,真正在目标系统执行的代码或指令。它可以是dir/ls,也可以是弹出计算器,也可以是各种恶意操作。

而我们此时提到的shell,精确所指的就是shell code,shell code目的性就不用说了,目标就是为了获取系统shell执行权限,emmmm,说了这么多,这里用powershell/bash更专业精确一点的说。

我们之前在msf中,介绍了三种可以称之为shell code的payload:Single,stager,stages,(忘记的小伙伴自寻metasploit系列(二)),接下来我们还会提及一种特殊的shell code:Meterpreter。

Meterpreter的特殊之处在哪呢?如果你知道冰河、灰鸽子,那你就应该明白我想表达什么了。


总结:

这篇文章的出现当然不是偶然,不过是为了引出下期metaploit的主角——Meterpreter。小结一下,有一种特殊的payload叫shell code,有一种特殊的shell code叫Meterpreter,相对于传统shell code,他能提供强大的超越shell非图形界面本身的功能,相对于传统冰河、灰鸽子,emmmm,先不说你能不能找到,,你能保证过免杀么?你能对Linux下手吗?

欲知下文如何,且听,emmmmm,下周出差,可能断货几天,,就、、就、、几天。。。

Meterpreter的章节讲完后,可能就要进入后渗透阶段了,有兴趣的小伙伴可以提前了解一下。

你可能感兴趣的:(所以,到底什么是shell?)