通过execute-assembly内存加载来执行文件,从而避免后渗透中被杀毒软件静态报毒,使更多的工具能够继续利用,常见的方式有权限维持,代理上线等操作
远程bin文件加载
首先尝试远程加载bin文件
使用项目https://github.com/shanekhantaun9/SharpLoader
在vps上传一个
这个文件生成方法,使用rc4.py脚本进行加密
import sysdef rc4(data, key):keylen = len(key)s = list(range(256))j = 0for i in range(256):j = (j + s[i] + key[i % keylen]) % 256s[i], s[j] = s[j], s[i]i = 0j = 0encrypted = bytearray()for n in range(len(data)):i = (i + 1) % 256j = (j + s[i]) % 256s[i], s[j] = s[j], s[i]encrypted.append(data[n] ^ s[(s[i] + s[j]) % 256])return encryptedif __name__ == "__main__":if len(sys.argv) != 3:print("Usage: ./rc4.py <key> <filename>")exit(0)key = sys.argv[1]filename = sys.argv[2]with open(filename, 'rb') as f:data = f.read()encrypted = rc4(data, key.encode())with open(f"{filename}.enc", 'wb') as f:f.write(encrypted)print(f"Written {filename}.enc")
那么执行如下
可以看到成功上线
在cs上execute-assembly试试
可以看到说不是.NET程序,但是它确实是,说明.NET版本问题,那么我用之前《dotnet4.0编译问题》进行编译
再次尝试
可以看到成功运行并上线,可以看到上线的进程是svchost.exe
远程c#程序(exe)加载
但是实际操作过程中发现有问题,因为对于exe的文件没办法远程加载
那么我又找到一个项目https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader
需要先加密,看看能不能成功上线
然后放到vps上的可访问目录
那么接下来把powershell的代码写成c#的加载器,目的是为了直接execute-assmbly使用远程加载
完整代码放在https://github.com/qieziwa/Invoke-SharpLoader_dotnet
用dotnet4.0编译即可
可以看到成功导出,那么之后再其功能上扩展就可以了
正式来体验下效果,用cs上的
成功导出
使用场景后渗透代理上线,可内存加载一个远程加载程序(该程序调用远端shellcode)
即可代理上线
还可以扩展一些c#的功能来更方便后渗透
项目代码:https://github.com/qieziwa/Invoke-SharpLoader_dotnet