服务热线
15527777548/18696195380
发布时间:2020-07-08
简要描述:
作者:锦行-夜影实验室(安全平台部)-t43M!ne
木马是黑客实施网络攻击的常用兵器之一,有些木马可以通过免杀技术的加持躲过杀毒软件的查杀。本文由锦行科技的安全研究团队提供,旨在...
protected byte[] stager; @Override public void dialogAction(final ActionEvent actionEvent, final Map options) { this.options = options; this.stager = DialogUtils.getStager(options); if (this.stager.length == 0) { return; } final String string = options.get("output") + ""; String s = ""; if (string.indexOf("EXE") > -1) { s = "artifact.exe"; } else if (string.indexOf("DLL") > -1) { s = "artifact.dll"; } SafeDialogs.saveFile(null, s, this); }通过 DialogUtils.getStager() 获得生成的 stager 然后通过 saveFile 保存文件。 getStager() 方法调用了 aggressor\DataUtils.shellcode() ,而这里其实是Stagers的接口。
return Stagers.shellcode(s, "x86", b);最终在 stagers\Stagers.shellcode() 根据监听器类型, 实例化了继承自的 GenericStager 的 stagers\GenericHTTPStager 类,并由 generate() 生成shellcode
new ArtifactUtils(this.client).patchArtifact(this.stager, "artifact32.exe", s);+ `common\BaseArtifactUtils.class`
public byte[] patchArtifact(final byte[] array, final String s) { final StackScalar> stack = new StackScalar>(); stack.push(SleepUtils.getScalar(array)); stack.push(SleepUtils.getScalar(s)); final String format = this.client.getScriptEngine().format("EXECUTABLE_ARTIFACT_GENERATOR", stack); if (format == null) { return this.fixChecksum(this._patchArtifact(array, s)); } return this.fixChecksum(CommonUtils.toBytes(format)); }稍微看一下 fixChecksum ,是通过 PE 编辑器修复了校验码。 这里不赘述了,对编辑器实现感兴趣的可以去看看 pe\PEEditor.class
final PEEditor peEditor = new PEEditor(array); peEditor.updateChecksum(); return peEditor.getImage();注意看这里 this._patchArtifact(array, s) ,调用了同名方法,PS:差点以为在看Python
public static String replaceAt(final String s, final String s2, final int n) { final StringBuffer sb = new StringBuffer(s); sb.delete(n, n + s2.length()); sb.insert(n, s2); return sb.toString(); }使用16进制编辑器可以直接看到用于标志存放 shellcode 的位置。
python -c "print(1024*'A')"用VisualStudio或MingW将其编译为 template.exe
如果您有任何问题,请跟我们联系!
联系我们