在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。
1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。
2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。
3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。
4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。
5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。
如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。
国庆预备
愿祖国:
和平长久,繁荣昌盛,
天耀祖国,不负韶华,
山河远阔,国泰民安。
NOVASEC 祝大家国庆节快乐!!!
题外话:
CS4.5系列存稿的最后一篇,即将休假,提前发送。
CS4.5以后的版本都是二进制打包的服务端,
目前来看没有什么我会改的地方,
因此准备逐步往开源C2靠近。
希望大家能给我推荐一些开源C2框架,
最好是也支持:shellcode导出、dotnet执行、dll反射、BOF等功能。
感激不尽!!!!
1、回传数据解析编码设置,命名为setchar
setchar能够将回传数据的解析编码改为UTF-8,
此时可在console当中显示UTF-8编码的中文字符。
2、CS自带的一些功能的绕过360核晶开关。命名为bypass360
实质就是修改默认的进程注入方法从spawn方法修改为inject方法。
这个修改在CS4.5上是可有可无的,
因为CS4.5默认的注入方式就是使用inject。
menu "Soldier " {
# Last Soldier
item "&Setchar" {
$bid = $1;
$dialog = dialog("Setchar", %(charsets => ""), &Setchar);
dialog_description($dialog, "Set the Beacon's Charset ");
drow_combobox($dialog, "charsets", "charset:", @("", "UTF-8", "GBK", "GB2312", "GB18030", "ISO-8859-1", "BIG5", "UTF-16", "UTF-16LE", "UTF-16BE"));
dbutton_action($dialog, "Setchar");
dialog_show($dialog);
}
sub Setchar {
binput($bid, "setchar $3['charsets']");
beacon_setchar($bid, $3['charsets']);
}
}
//新增setchar
else if (var11.is("setchar")) {
if (var11.verify("Z")) {
var4 = var11.popString();
this.master.setChar(var4);
} else if (var11.isMissingArguments()) {
this.master.setChar("");
}
}
//新增 setchar
else if (var8.is("setchar")) {
if (var8.verify("Z")) {
var4 = var8.popString();
this.master.setChar(var4);
} else if (var8.isMissingArguments()) {
this.master.setChar("");
}
}
protected String[] cols = new String[]{" ", "external", "internal", "listener", "user", "computer", "charset", "note", "process", "pid", "arch", "last"};
//新增 setCharset 函数
public void setCharset(String var1) {
this.chst = var1;
}
注意:类本身已存在其他功能,因此只需要添加set函数。
实质就是修改和调用 this.chst 这个变量
//新增 charsets HashMap
protected HashMap charsets;
//public void register 新增存入set_char键值对
var1.put("beacons.set_char", this);
// public Map buildBeaconModel() 新增 获取 charsets值
String var5 = (String)this.charsets.get(var4.getId());
if (var5 != null && !var5.equals("")) {
var4.setCharset(var5);
} else {
var4.setCharset(var4.getCharset());
}
// public Beacons(Resources var1) 新增 赋值 charsets
this.charsets = new HashMap();
//新增setChar函数
public void setChar(String var1, String var2) {
synchronized(this){}
try {
var2 = var2.toUpperCase();
this.charsets.put(var1, var2);
this.setup.getController().setCustomCharset(var1, var2);
} catch (Throwable var5) {
throw var5;
}
}
//新增 set_char 函数处理
else if (var1.is("beacons.set_char", 2)) {
this.setChar((String)var1.arg(0), (String)var1.arg(1));
}
// public class BeaconC2 新增 customCharsets 变量
protected HashMap customCharsets;
// public BeaconC2(Resources var1) 新增 customCharsets 赋值
this.customCharsets = new HashMap();
//新增 setCustomCharset 函数
public void setCustomCharset(String var1, String var2) {
var2 = var2.toUpperCase();
this.customCharsets.put(var1, var2);
}
// Last Soldier getCharsets编码注册逻辑
String var13 = (String)this.customCharsets.get(var12.getId());
if (!var12.sane()) {
CommonUtils.print_error("Session " + var12 + " metadata validation failed. Dropping");
return null;
} else {
//this.getCharsets().register(var12.getId(), var9, var10);
//修改 getCharsets编码注册逻辑 ===============
if (var13 != null && !var13.equals("")) {
this.getCharsets().register(var12.getId(), var13, var13);
} else {
this.getCharsets().register(var12.getId(), var9, var10);
}
//修改 getCharsets编码注册逻辑 ===============
//public String eventName() 新增 set_char
case 13:
return this.prefix("set_char");
//新增 SetChar 命令 调用函数
public static final BeaconOutput SetChar(String var0, String var1) {
return new BeaconOutput(var0, (short)13, var1);
}
//public void scriptLoaded(ScriptInstance var1) 存入 beacon_setchar
Cortana.put(var1, "&beacon_setchar", this);
// public Scalar evaluate(String var1, ScriptInstance var2, Stack var3) 新增 beacon_setchar 命令处理
if (var1.equals("&beacon_setchar")) {
String[] beaconIds = bids(var3);
String argument = BridgeUtilities.getString(var3, "");
for(int index = 0; index < beaconIds.length; ++index) {
this.conn.call("beacons.set_char", CommonUtils.args(beaconIds[index], argument));
this.conn.call("beacons.log_write", CommonUtils.args(BeaconOutput.SetChar(beaconIds[index], argument)));
}
}
///新增 setChar 处理函数
public void setChar(String var1) {
for(int var2 = 0; var2 < this.bids.length; ++var2) {
this.conn.call("beacons.set_char", CommonUtils.args(this.bids[var2], var1));
this.conn.call("beacons.log_write", CommonUtils.args(BeaconOutput.SetChar(this.bids[var2], var1)));
}
}
CobaltStrike Charset Improvement
https://xz.aliyun.com/t/11055
Cobalt Strike快乐星球
https://mp.weixin.qq.com/s/v3e2Ac5WRFsk_iVNORog5Q
如您有任何投稿、问题、建议、需求、合作、请后台留言NOVASEC公众号!
或添加NOVASEC-余生 以便于及时回复。
感谢大哥们的对NOVASEC的支持点赞和关注
加入我们与萌新一起成长吧!
本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!!