Goasm-RAT是一款简单的Windows控制台远程控制工具,使用Go和Intel x86 Assembly编写,支持远程Shell及屏幕截图。
..\client> .\build.ps1
..\server\scripts> .\build.ps1
使用命令行参数指定服务器的IPv4地址及TCP端口号。
client <ipv4-addr> <port>
使用-p
选项指定TCP监听端口,默认端口为10080。
server -p <port>
使用-h
选项显示帮助信息。
-h This help
-p int
Listening port (default 10080)
当服务器等待用户输入时,后台信息和命令执行结果并不会实时显示,需要使用Enter手动刷新。
-
sw <client-id>
切换当前控制的客户端。
> sw 1 Sep 24 23:03:27: The current client has changed to [1].
-
exit
退出服务器。
exec <command>
在客户端执行Shell命令。
> exec whoami
>
Sep 25 00:21:38: Shell messages from the client [1]:
----------------------------------------------------
whoami
desktop-testpc1\chenzs
C:\Users\chenzs\Goasm-RAT\client>
----------------------------------------------------
sc
截取客户端屏幕,保存为.png
文件。
classDiagram
class IoWriter {
<<interface>>
Write(bytes)
}
class IoReadWriter {
<<interface>>
Read(bytes)
}
IoWriter <|-- IoReadWriter
class Logger {
<<interface>>
Log(msg)
Store(msg) int
}
Logger --> IoWriter
namespace network {
class Client {
<<interface>>
RecvPacket() Packet
SendPacket(Packet)
}
class PacketType {
<<enumeration>>
Unknow
Connect
Disconnect
}
class Packet {
[]byte data
ToBinary() []byte
FromBinary([]byte)
}
}
Client ..> Packet
Packet --> PacketType
IoReadWriter <|.. Packet
namespace mod {
class ModExecutor {
<<interface>>
Cmds() []string
Exec(cmd, args)
}
class ModResponder {
<<interface>>
Respond(Client, Packet)
}
class Mod {
<<interface>>
ID() int
Name() string
SetClient(Client)
}
class ModDispatcher {
<<interface>>
Register(Mod)
ByID(int) Mod
ByCmd(string) Mod
ByPacket(PacketType) Mod
}
class Shell
class ScreenCapture
}
ModResponder ..> Client
ModResponder ..> Packet
ModExecutor <|-- Mod
ModResponder <|-- Mod
Mod --> Client
ModDispatcher o-- Mod
ModDispatcher ..> PacketType
Mod <|.. ScreenCapture
Mod <|.. Shell
class RAT {
<<interface>>
Register(Mod)
Startup(port)
Exec(cmd, args)
}
RAT --> ModDispatcher
RAT --> Logger
已知的Bug在代码注释中使用BUG
标记。
使用MIT协议,请参考LICENSE
文件。