logo

K8哥哥

没有绝对安全的系统

Kali 2019 & Ladon无PowerShell执行脚本

本文于 1710 天之前发表

关于Kali & PowerShell

最近Kali出了年度最终版2019.4,该版本主存储库集成了PowerShell,可apt一键安装。
实际上想用PowerShell也不是非要等2019.4版本,和很多程序一样,可以自己下载安装。
因为微软PowerShell早在几年前就支持跨平台了还有.net程序,听说mono被微软收购了。
只是多打几条命令而已,不是说之前版本的Kali就不支持PowerShell,真佩服国内小编。
当然也可以在不安装PowerShell的环境下通过Ladon来执行PowerShell脚本。

PowerShell例子

以下代码为Ladon插件例子,非常简单只需一个函数Ladon以及返回结果即可。

1
2
3
4
5
6
function Ladon (){
param([string]$ip)
#write-output $ip
$result=-Join("PsDemo ",$ip)
return $result
}

Ladon下载

1
wget https://github.com/k8gege/Ladon/raw/master/KaliLadon -O Ladon

安装mono运行库

Linux版Ladon需mono,类似jar需java,py需python环境等
mono执行兼容性、稳定性以及效率在Linux下不如Win系统

1
apt install mono-runtime

Ladon执行PowerShell

1
mono Ladon 123456 test.ps1

Kali 2019.4 x64

Ubuntu 18.04 x64

Windows绕过PowerShell限制

使用Ladon执行,就不存在PowerShell默认禁止执行脚本的限制

自定义PowerShell脚本

其它功能脚本通过以下函数调用即可,或者返回空值的Ladon函数调用代码。
如Base64批量密码解密

1
2
3
4
5
6
7
8
9
10
11
12
13
function Ladon (){
param([string]$ip)
$pass=ConvertFrom-Base64String($ip)
$result=-Join($ip," ",$pass)
return $result
}

# Convert base64 string to string
function ConvertFrom-Base64String([string]$string)
{
$byteArray = [Convert]::FromBase64String($string)
[System.Text.UnicodeEncoding]::UTF8.GetString($byteArray)
}

关于.net跨平台

关于.net跨平台有两个选择,一是mono,二是.net core,都是微软出品
三是PowerShell Core(内嵌.net,linux下未测,毕竟默认无.net运行库)

完全脱离运行库编译程序都很大,好在mono运行库安装比PY、JAVA都要快
仅需一两分钟,也就是说,假如需要在目标执行,还可以只传一个小程序
不像Python和Java安装了运行库,需要运行程序可能还得安装其它依赖库
意味着有些程序离开开发环境可能无法运行(有些系统一些模块根本装不上)
同样存在着兼容性问题,从奇葩环境看似乎.net比py和java有着更大优势
需要将程序上传至目标,意味着可能出不了网或无法代理等奇葩网络环境。
我这里考虑的都是极差环境,只代理就顺利使用相关工具的永远体会不到。
当然有些功能PYTHON实现会比.NET简单很多倍,且.net可能还实现不了。
反过来也一样有些功能.NET,我不像别人喜欢哪门语言就无脑地吹哪门,
有缺点不肯承认还要强制说好,你和他说PY有什么缺点就像骂了他一样。
我从不否认任何语言的优点和缺点,因为任何语言只要工作需要我就用。
常用.net,无非是程序小这个巨大优势,程序小产生的流量自然就很小。
使用再垃圾的远控或者再垃圾的网络环境都有办法把程序传到目标机器。
如果远控或WebShell像Cobal Strike一样支持内存加载,就更不用担心。

扫码加入K8小密圈